Commit Graph

25891 Commits

Author SHA1 Message Date
Jaakko Husso
e7440ab1f0
test(core): Give each system agent service test its own thread (no-changelog)
updateThread changes the thread that the repository returns. The tests
shared one thread object, so a project move in one test leaked into the
next. The fixture is now frozen and each lookup returns a copy.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 22:08:48 +03:00
Jaakko Husso
edde04df32
refactor(core): Look up the queued agent once by message kind (no-changelog)
enqueue now decides on the system kind once. The custom-agents setting
applies to every other kind. A system message without a registered
provider now fails with "Agent not found", also when the admin turned
off custom agents.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 22:08:48 +03:00
Jaakko Husso
5b1964908e
refactor(core): Map queued message kinds to chat surfaces in one place (no-changelog)
The queue and the queue consumer each mapped a message kind to its chat
surface. chatSurfaceForKind and canContinueThreadOnSurface in
agent-thread-access now hold that mapping and the access rule of each
surface. The consumer passes the surface to its access check instead of
a boolean.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 22:08:48 +03:00
Jaakko Husso
ba9df52f74
refactor(core): Resume a system agent turn with the run id of the suspension (no-changelog)
resume used the client run id when one was sent and the suspension run
id otherwise. It now always uses the run id of the open suspension.
A client run id that does not match it is refused up front.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 22:08:48 +03:00
Jaakko Husso
55fbd500d0
refactor(core): Pass one object to the system agent runTurn (no-changelog)
runTurn took seven positional arguments, and the resume path passed
`undefined` for the admission. It now takes one object. It also reads
the agent id from the thread, so it does not need the provider.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 22:08:48 +03:00
Jaakko Husso
2f5e116dc6
refactor(core): Build system agent queue input in one place (no-changelog)
sendMessage and prepareChatMessage now share one queueInput builder.
The payload rules for options, attachments, message ids and hidden
turns are in one place.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 22:08:48 +03:00
Jaakko Husso
509b359a6d
fix(core): Check the project of an existing system agent thread (no-changelog)
createThread checks access on the requested working project. It now
returns an existing thread only when that thread is in the same project.
A thread in another project is not found.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 22:08:48 +03:00
Jaakko Husso
79c25ea218
fix(core): Load earlier files and report failed resumes for system agents (no-changelog)
Every system turn, start and resume, now attaches the attachment store.
A later turn can then load the files of earlier turns.

Only a completed system turn sends `done`, like Preview. `resumeRun`
rejects when the resumed turn fails, so the route can send an error.
The background `resume` still logs the failure.

The host sets `persistence` after the provider run options, and the
provider run options type omits it.

Tests cover thread creation for a new session and the error event of a
refused system turn.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 22:08:48 +03:00
Jaakko Husso
d77f5b6bed
fix(core): Link system agent turn signals to the turn controller (no-changelog)
A system turn now runs under one controller. The provider gets its signal
in prepareTurn, so a user cancel reaches the provider. The abort signal in
the run options of the handle now stops the turn also after admission.

The turn runtime takes an optional chat controller for this. Other chat
surfaces keep their default controller.

isBusy and getStatus use one status rule. A queued message now blocks a
project change. Cancel checks thread ownership only, and a test covers it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 22:08:48 +03:00
Jaakko Husso
ab2ff827a5
feat(core): Add a system-agent layer to the Agents runtime (no-changelog)
- A module can register a code-defined instance agent through a
  SystemAgentProvider. SystemAgentRegistry keeps the providers.
- SystemAgentExecutionService manages the threads and turns of a system
  agent. It checks the access floor (owned thread, project:read on the
  working project) and then the provider.
- The queue accepts the system kind only for a registered provider. The
  consumer sends system turns to the execution service.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 22:08:48 +03:00
Jaakko Husso
60b56086e1
feat(core): Add a system chat surface to the Agents runtime (no-changelog)
- Add the system-chat:<userId> memory resource, the system_chat
  transcript source and the system value of AgentChatSurface.
  canContinueSystemThread is the access rule of the surface.
- The cross-main cancel payload carries surface. It keeps
  productionN8nChat for mains on the previous version.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 22:08:47 +03:00
Jaakko Husso
bc2de3b222
refactor(core): Move the Agents chat relay into its own service (no-changelog)
Move the SSE relay and attachment helpers from AgentChatController into
AgentChatRelayService, so another chat controller can share them. The
code does not change.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 22:08:46 +03:00
Jaakko Husso
e7165c662a
feat(core): Add instance-scoped agents to the Agents schema (no-changelog)
Map the agents.scope column on the Agent entity. An instance agent is
code-defined and belongs to no project. AgentRepository.ensureInstanceAgent
creates its row with an insert that ignores a concurrent duplicate.

Type Agent.projectId as string | null. Project-scoped repository queries
and writes filter on scope = 'project'. The queries return ProjectAgent,
which has a non-null projectId. The project-agent APIs do not see
instance agents and report them as not found.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 22:08:46 +03:00
n8n-cat-bot[bot]
ec074519d9
feat: Add policy attachment read endpoints (no-changelog) (#41122)
Co-authored-by: n8n-cat-bot[bot] <n8n-cat-bot[bot]@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 16:13:10 +00:00
Rúben Castro
6f3b397a1e
feat(editor): Mark community packages with blocked node types (no-changelog) (#41105)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Co-authored-by: Guillaume Jacquart <jacquart.guillaume@gmail.com>
2026-10-16 15:43:39 +00:00
n8n-cat-bot[bot]
21221adc78
fix: Validate attendee values (#40953)
Co-authored-by: n8n-cat-bot[bot] <n8n-cat-bot[bot]@users.noreply.github.com>
2026-10-16 14:56:23 +00:00
Guillaume Jacquart
532e8ef930
fix(core): Save policy rules that name uninstalled packages (no-changelog) (#41210)
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>
2026-10-16 14:48:56 +00:00
n8n-cat-bot[bot]
24621ad4ca
chore: Add review/lint rule to discourage open-ended fields in nodes (warn level) (#39959)
Co-authored-by: n8n-cat-bot[bot] <n8n-cat-bot[bot]@users.noreply.github.com>
2026-10-16 14:47:15 +00:00
n8n-cat-bot[bot]
8ee5cf1845
chore: Flaky test: frontend.service.test.ts (3 master or merge-queue commits in 72 h) (#41279)
Co-authored-by: n8n-cat-bot[bot] <n8n-cat-bot[bot]@users.noreply.github.com>
2026-10-16 14:44:01 +00:00
Stephen Wright
7f16040253
feat(Databricks Node): Add the Lakebase Delete operation (no-changelog) (#40543) 2026-10-16 14:42:03 +00:00
Csaba Tuncsik
ddc97694b5
fix(Microsoft Teams Node): Add the TeamMember.Read.All scope and correct the Trigger scope notice (#39819) 2026-10-16 14:27:44 +00:00
Rúben Castro
eaf47cfe39
fix(editor): Improve destination validation and surface save errors (#40897)
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Co-authored-by: Guillaume Jacquart <jacquart.guillaume@gmail.com>
2026-10-16 14:14:55 +00:00
Ricardo Espinoza
986b82fa28
feat: Add telemetry events to the skills hub (no-changelog) (#41234) 2026-10-16 14:12:37 +00:00
Jan
76cce99626
fix(editor): Unify documentation links across settings pages (#40289)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-16 13:57:10 +00:00
Jaakko Husso
f34c093f08
feat(core): Add an optional model for n8n Assistant memory tasks (#41137)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 13:55:06 +00:00
Mike Repeć
158152496a
fix(core): Reuse connections in the log streaming webhook destination (#41261)
Co-authored-by: Theo Nastos <theodore.nastos@n8n.io>
2026-10-16 13:54:34 +00:00
Jan
1f223c85f8
fix(editor): Start the empty-state icon cards cycling on load and use them on the MCP and external secrets pages (#40232)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-16 13:53:32 +00:00
Ricardo Espinoza
6a015ecb18
fix(core): Check the delete permission when the agent page moves a skill (no-changelog) (#41222) 2026-10-16 13:52:18 +00:00
n8n-cat-bot[bot]
033ec05bff
chore: Bump handlebars 4.7.9 → 4.7.10 (patch) to clear 6 Aikido findings (#41277)
Co-authored-by: n8n-cat-bot[bot] <n8n-cat-bot[bot]@users.noreply.github.com>
2026-10-16 13:46:42 +00:00
Theodore Nastos
dd79a610c5
feat(core): Enable node and credential type policies by default (#41022) 2026-10-16 13:44:56 +00:00
Martin Rechenberger
a63a8edb55
fix(editor): Hide the Community Plus enrollment modal on Cloud (no-changelog) (#41251) 2026-10-16 13:40:37 +00:00
symbiote15
f5dc06f753
fix(Postgres Node): Keep comma-containing values as one query parameter (#40240) 2026-10-16 13:28:55 +00:00
Jaakko Husso
b78913f75d
fix(core): Keep the workflow source file when n8n Assistant sends blank source (#41201)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 13:28:54 +00:00
Guillaume Jacquart
dfec6dee81
fix(editor): Allow copy and cut of a selection with a restricted node (no-changelog) (#41276)
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-16 13:25:51 +00:00
Uddish Verma
f92b4c11d6
feat(API): Limit Public API requests for each API key (no-changelog) (#41008)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 13:19:34 +00:00
Luigi Gubello
5120d25cbc
fix(editor): Count missing input apart in the QuickJS shadow report (no-changelog) (#41214)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 13:15:19 +00:00
Bernhard Wittmann
a6719b8db7
fix(Email Trigger (IMAP) Node): Check the mailbox when the trigger activates (#41013) 2026-10-16 13:10:25 +00:00
Bernhard Wittmann
7001886432
fix(core): Give each new Microsoft Teams sign-in credential a unique name (no-changelog) (#41256) 2026-10-16 13:04:21 +00:00
Sam Wooler
a906d2fdfc
feat(API): Return the parent folder on workflow read endpoints (#40981)
Co-authored-by: Claude Haiku 5.5 <noreply@anthropic.com>
2026-10-16 12:48:25 +00:00
Anne Aguirre
683fd11259
fix(core): Pass reasoning effort on open router model node (#41179) 2026-10-16 12:43:58 +00:00
Mike Repeć
1b02863c00
fix(core): Hand node reference results without an item shape to the engine (no-changelog) (#41083) 2026-10-16 12:25:04 +00:00
n8n-cat-bot[bot]
d0cb582163
chore: Bump fast-uri 3.1.5 → 3.1.8 (patch) to clear 12 Aikido findings (#41255)
Co-authored-by: n8n-cat-bot[bot] <n8n-cat-bot[bot]@users.noreply.github.com>
2026-10-16 12:21:08 +00:00
Anne Aguirre
ea98bd0600
fix(AI Agent Node): Replay Anthropic thinking turns with their tool arguments (#41241) 2026-10-16 12:09:01 +00:00
Predrag Ristic
1405d4a351
feat(core): Add self-healing results to Inbox (#40741) 2026-10-16 12:07:09 +00:00
Anne Aguirre
f84413516a
fix(core): Web search misconfigs in agents as UserError (#41257) 2026-10-16 12:00:35 +00:00
Sandra Zollner
333a010112
feat(core): Store promotion exports in n8n directory (#40863)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-16 12:00:28 +00:00
Ali Elkhateeb
b7b3d72737
feat(API): Honor Idempotency-Key on Public API POST requests (#40978)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-16 11:58:36 +00:00
n8n-cat-bot[bot]
5a3fc39972
fix: Skip dependency files and continue after custom node load (#41117)
Co-authored-by: n8n-cat-bot[bot] <n8n-cat-bot[bot]@users.noreply.github.com>
2026-10-16 11:53:13 +00:00
Rúben Castro
d460eb28ca
fix(editor): Explain why copy, cut, duplicate and pin refuse a restricted node (no-changelog) (#40997)
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-10-16 11:51:01 +00:00
Francesca Sargent
4a5fdd5b68
fix(editor): Return to the requested page after SSO sign-in (#41151) 2026-10-16 11:42:25 +00:00