Commit Graph

6626 Commits

Author SHA1 Message Date
Yuliia Pominchuk
32fb2405e5
feat(core): Show a person their own catalog runs
Adds GET /catalog/runs, selected by the marker the run service writes rather
than by workflow, so someone sharing a workflow with colleagues sees only what
they started themselves.

Each entry is projected down from the execution summary. The summary also
carries lastNodeExecuted, per-node statuses and error details, which would hand
node names to someone who was given execute but not read.

Moves the route prefix to /catalog so runs are not addressed as a sub-resource
of workflows.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-04 20:07:55 +02:00
Yuliia Pominchuk
1c7cde1ae9
feat(core): List the workflows a person may run
Adds GET /catalog/workflows, returning each workflow's name, description and
declared input contract — never its nodes or connections. Execute access must
not become a way to obtain the graph.

Workflows with no readable contract are left out rather than shown as broken:
the person browsing cannot fix them, and the builder is the one who needs to
know.

Describing a workflow means reading its trigger through a node context, so the
listing is capped. The cap is reported back as `truncated` and logged, because a
short list that reads as a complete one is worse than an obvious limit.

The finder returns one row per share path, so entries are deduped by id.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-04 19:56:20 +02:00
Yuliia Pominchuk
f78b151d7f
feat(core): Run a workflow from the catalog without opening the editor
Adds POST /catalog/workflows/:id/run for people who were granted execute but
not read: the endpoint never returns or requires the graph, and @ProjectScope
rejects before the handler.

The run is a production one even though a person pressed the button. A manual
run would honour a workflow-level "don't save manual executions" and silently
erase their history, and would feed them the builder's pinned test data instead
of a real result.

Values not named by the workflow's declared contract are dropped rather than
passed through, and the execution is tagged with the person who ran it so "my
runs" is a filter over existing execution storage rather than a new column.

Start-node precedence is extracted from findWorkflowStart rather than repeated,
so a catalog run enters a workflow through the same node a sub-workflow call
would.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-04 16:26:53 +02:00
Yuliia Pominchuk
0a36cf18a7
feat(core): Read a workflow's declared input contract outside its node
The fields a workflow declares on its Execute Workflow Trigger are what a run
surface renders a form from, so a caller needs them without executing the node.
Adds a service that answers eligibility and schema together — a workflow with no
readable contract cannot be offered for direct running, and the caller should
not have to ask twice.

Moves the extraction from nodes-base into n8n-workflow. It now has several
readers — the parent editor's resource mapper, MCP deriving tool arguments, and
the run surfaces — and they must all see the same fields. nodes-base re-exports
so call sites are unchanged.

A pre-1.1 trigger gates its input-source parameter behind the node version and
therefore declares nothing, which reads as passthrough. That is correct, and
covered.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-04 16:18:42 +02:00
Yuliia Pominchuk
bb91a9163d
spike: resolve credentials for an unattended user-bound run
Adds the identity path a run needs when it starts for a user with no session
behind it: a minted, short-lived token names the user, and the authorization a
live session would have carried is re-established at resolution time.

Four checks replace what a session validated implicitly - token signature and
expiry, user still enabled, binding still active, and execute access still
granted. The last one is the only thing that catches a user removed from the
project after granting, since that never touches the binding.

Kept as a member of the existing metadata union rather than a separate
identifier: N8NCredentialResolver injects N8NIdentifier directly, and the three
existing sources already discriminate on metadata.source.

Binding storage is an in-memory stub for the spike. Nothing mints this token
yet, so the path is unreachable at runtime; the stub must be replaced by the
real binding row before any of this is proposed for merge.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-04 16:02:46 +02:00
Ricardo Espinoza
936cdaa046
refactor(core): Break folder and workflow service dependency cycle (#35225) 2026-08-04 12:56:58 +00:00
Kai
5e4a20d031
feat(core): Surface decision eligibility on the review detail (#35391)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-04 10:52:07 +00:00
Arvin A
8bdf69eb23
refactor(core): Tidy agent-eval runner and rating-persistence internals (no-changelog) (#35424) 2026-08-04 10:42:20 +00:00
Iván Ovejero
f007542520
feat(core): Report database version in telemetry (no-changelog) (#35428) 2026-08-04 10:39:18 +00:00
Alexander Gekov
935cfb912e
feat(core): Gate n8n Connect with instance config (#35007)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-04 09:22:06 +00:00
Nour Alhadi Mahmoud
3b89fef4f4
feat(core): Add create-with-value variable policy for package import (no-changelog) (#34895)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-04 09:12:27 +00:00
Sam Wooler
9c596228d9
docs(API): Generate OpenAPI docs from Zod DTOs and PublicApiController decorators (#34540)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-04 08:00:54 +00:00
n8n-release-tag-merge[bot]
f8941b10f2 Merge tag 'n8n@2.34.0' 2026-08-04 07:51:21 +00:00
n8n-assistant[bot]
b533ecd685
🚀 Release 2.34.0 (#35487)
Co-authored-by: n8n-release-helper[bot] <265227495+n8n-release-helper[bot]@users.noreply.github.com>
2026-08-04 07:14:55 +00:00
Jan Kalkan
c9eeb2e180
feat(core): Reconcile tag ids on name collision when importing packages (#35224)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-04 07:14:14 +00:00
Danny Martini
1801f65d85
feat(core): Converge leader takeover through the reconciliation loop (#35454)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-04 06:24:49 +00:00
Michael Drury
9f2f315646
fix(core): Keep agent channel setup separate from publishing (#35468)
Co-authored-by: Robin Braumann <robin.braumann@n8n.io>
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-04 06:16:25 +00:00
Robin Braumann
ce52c555d6
feat(core): Consolidate agent creation and modification telemetry (#35444)
Some checks are pending
CI: Master (Build, Test, Lint) / Build for Github Cache (push) Waiting to run
CI: Master (Build, Test, Lint) / Unit tests (22.22.3) (push) Waiting to run
CI: Master (Build, Test, Lint) / Unit tests (24.18.0) (push) Waiting to run
CI: Master (Build, Test, Lint) / Lint (push) Waiting to run
CI: Master (Build, Test, Lint) / Performance (push) Waiting to run
CI: Master (Build, Test, Lint) / Notify Slack on failure (push) Blocked by required conditions
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-03 20:04:27 +00:00
Svetoslav Dekov
8857fd0dd2
feat(core): Include node credentials in MCP workflow reads and guide credential reuse (#35173)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Ricardo Espinoza <ricardo@n8n.io>
2026-08-03 19:29:13 +00:00
Michael Drury
edc377c9d5
fix(core): Propagate sub-agent tool approvals (#35368) 2026-08-03 16:26:27 +00:00
Robin Braumann
1155eb7959
feat(core): Create agents on first configuration instead of on click (#35429)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-03 16:20:04 +00:00
Ricardo Espinoza
20c95afa57
fix(core): Attach user_id to backend Builder telemetry events (no-changelog) (#35397) 2026-08-03 15:42:58 +00:00
Ricardo Espinoza
f500a76fb5
feat(core): Add MCP server usage events to log streaming (#33300)
Co-authored-by: Nikhil Kuriakose <nikhil.kuriakose@n8n.io>
Co-authored-by: Nikhil Kuriakose <nikhilkuria@gmail.com>
2026-08-03 15:18:12 +00:00
Danny Martini
fd5ecfff6d
feat(core): Detect and heal trigger-status drift and unreported published workflows in reconciliation (#35356)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-03 14:24:51 +00:00
Albert Alises
1ad5efee7c
fix(core): Harden Instance AI sandbox acquisition (no-changelog) (#35314) 2026-08-03 13:45:52 +00:00
José Braulio González Valido
c6917a194f
fix(ai-builder): Record the served wire envelope in the eval LLM mock ledger (no-changelog) (#34929)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-03 13:16:45 +00:00
José Braulio González Valido
b6b94d9b87
fix(ai-builder): Bind the eval credential-test bypass to the thread allowlist (no-changelog) (#35427)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-03 13:13:21 +00:00
Albert Alises
a97e3052c2
fix(core): Classify Instance AI error reports by severity and quota cause (#35353) 2026-08-03 12:38:42 +00:00
Guillaume Jacquart
7eabd74811
fix: Enable Save and clear stale OAuth state on auth method switch (#35367) 2026-08-03 11:36:24 +00:00
Albert Alises
dff04ce06e
fix(core): Make Instance AI resume claims atomic (no-changelog) (#35354) 2026-08-03 11:27:06 +00:00
José Braulio González Valido
a2b8383bf9
feat(ai-builder): Let eval cases set up a working credential (no-changelog) (#35410)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-03 11:21:11 +00:00
Robin Braumann
89c9be6266
feat(core): Emit once-per-agent setup completion telemetry (#35359)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-03 11:00:37 +00:00
Guillaume Jacquart
a78bcbf41a
feat(core): Register test webhook triggers as OAuth protected resources (#35363)
Co-authored-by: Claude <noreply@anthropic.com>
2026-08-03 10:24:49 +00:00
Michael Drury
c0d09a5512
fix(core): Disable Slack app Home tab (#35412) 2026-08-03 10:07:53 +00:00
Yuliia Pominchuk
3b69d54f6c
fix(editor): Mention n8n User Auth webhook mode in end-user credential warning (#35222)
Co-authored-by: Guillaume Jacquart <jacquart.guillaume@gmail.com>
2026-08-03 09:46:09 +00:00
Robin Braumann
8f4816e848
fix(core): Classify agent execution pulse with run_type (#35346)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-03 09:37:33 +00:00
José Braulio González Valido
7398571c8a
fix(ai-builder): Serve JSON answers as encoded strings in mocked OpenAI completion envelopes (no-changelog) (#34956)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-03 09:36:37 +00:00
oleg
4accb5b82a
fix(core): Exclude AI assistant verification runs from prod execution counts (#35405) 2026-08-03 09:16:02 +00:00
Kai
67a5fe34e2
feat(core): Auto-publish workflow reviews on approval (#35390) 2026-08-03 08:25:32 +00:00
Guillaume Jacquart
b2eb04aca0
fix(core): Resolve webhook OAuth resources to the trigger that fires (no-changelog) (#35366)
Co-authored-by: Claude <noreply@anthropic.com>
2026-08-03 06:57:42 +00:00
Tomi Turtiainen
c0a8f02f0f
fix(core): Fix SSE push backend connections in production (#35327) 2026-07-31 15:45:27 +00:00
Robin Braumann
5b68642b5d
fix: Correct n8n Connect model credential handling in the Agent Builder (no-changelog) (#35313)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-31 15:23:02 +00:00
Lorent Lempereur
2e6eb98e13
feat(core): Offload large webhook responses to storage in scaling mode (#35036) 2026-07-31 15:10:41 +00:00
Eugene
6f44922d00
feat: Give agents the ability to not reply in chat integrations (no-changelog) (#35264)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-31 14:58:47 +00:00
Yuliia Pominchuk
1880ad3e17
feat(core): Gate n8n-auth webhook runs on the caller's private-credential status (#35242) 2026-07-31 14:30:08 +00:00
Yuliia Pominchuk
2a10f882a0
feat(core): Register per-trigger OAuth protected resources for webhook triggers (#35186)
Co-authored-by: Guillaume Jacquart <jacquart.guillaume@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>
2026-07-31 14:28:50 +00:00
Michael Drury
5046f24e9f
fix(editor): Gate agent reasoning by model support (#35253) 2026-07-31 14:24:23 +00:00
Lorent Lempereur
c15bbca848
fix(core): Improve task broker resilience when a runner dies (#35298) 2026-07-31 14:02:24 +00:00
Irénée
f3b052a192
fix(core): Keep external secrets available while provider connections reload (#35237)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-31 13:33:12 +00:00
Iván Ovejero
e976bd0c6c
fix(core): Emit OTel spans for queue mode executions (#35357) 2026-07-31 13:15:10 +00:00