Commit Graph

23016 Commits

Author SHA1 Message Date
Uddish Verma
231f59fdf8
Merge remote-tracking branch 'origin/master' into api-84-workflow-create 2026-08-13 18:41:08 +01:00
Uddish Verma
ca51388fff
fix(API): Keep the rejection messages the create body already answered with
A body the old endpoint refused came back as `request/body/name must be
string`; validating the same body with Zod produced `Expected string, received
number` instead. The status and the reason were unchanged, but the text callers
parse was not — 85 of the 113 replayed bodies differed only in wording.

The wording belongs to the DTOs that took over from a hand-written schema, not
to the transport, so it lives in an error map the DTO opts into. Endpoints that
never had a spec to inherit from — `roles`, `role-mapping-rules` — keep their
own messages.

`Z.class` now applies an error map at parse time rather than attaching it to the
object, which is what lets one map cover nested nodes, node groups and settings.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-13 18:40:45 +01:00
Uddish Verma
ba9f3c9558
fix(API): Return the parent folder on workflow create
The old create handler answered with the raw entity, so its response carried
`parentFolder` — retrieval never did, and the published `workflow.yml` never
documented it. Callers read it today, so create keeps returning it and the
generated spec now says so.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-13 18:15:55 +01:00
Uddish Verma
d17f24448e
fix(API): Match the published request contract for workflow create
The migrated body accepted four things the hand-written spec rejected with a
400, found by diffing live responses against master:

- `description`, which `workflowCreate.yml` never listed
- nodes carrying unknown or wrongly typed properties, which `node.yml`
  constrained with `additionalProperties: false`
- a `staticData` string that is not JSON, which `format: jsonString` caught
- and it rejected `shared`, the one relation the old spec left writable

A non-object node also reached the persistence layer and surfaced as a 500
rather than a 400.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-13 18:03:47 +01:00
Uddish Verma
99f968ae21
fix(API): Use a type-only import for the response schema
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-13 17:23:40 +01:00
Uddish Verma
a78a0f6005
refactor(API): Tie the read-only field names to the response schema
The names were free-standing strings, so renaming a field on the response
schema would leave this list stale and quietly downgrade the error message to
the generic "unrecognized key". `satisfies` makes that a build failure.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-13 17:22:54 +01:00
Yen Su
67a458ecbb
fix(Kafka Trigger Node): Fail v2 activation when the consumer group cannot be joined (#36046)
Some checks are pending
Build: Benchmark Image / build (push) Waiting to run
CI: Master (Build, Test, Lint) / Build for Github Cache (push) Waiting to run
CI: Master (Build, Test, Lint) / Unit tests (22.23.2) (push) Waiting to run
CI: Master (Build, Test, Lint) / Unit tests (24.18.1) (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
Util: Publish API Schema / Cloudflare Pages (push) Waiting to run
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-13 16:13:14 +00:00
n8n-cat-bot[bot]
4c02c54c61
chore: Gate codespace agent session launch on the skills plugin install finishing (#36237)
Co-authored-by: n8n-cat-bot[bot] <n8n-cat-bot[bot]@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-13 16:10:55 +00:00
Uddish Verma
9cbd5cb97b
fix(API): Stop advertising server-managed fields as writable
The generated request spec listed `id`, `active`, `createdAt` and the other
server-managed fields as ordinary properties with empty schemas, because the
generator cannot express a "must be absent" check. Alongside
`additionalProperties: false`, the published contract positively invited callers
to send fields the server always rejects, and an SDK generated from it would
expose them as settable. The hand-written spec marked them `readOnly`.

They are now left out of the request shape, so the spec describes only what a
caller may send. The strict object rejects them as unrecognised keys, and an
error map keeps the specific message rather than letting a read-only field look
like a typo:

    { "id": "abc" }   -> 'id' is a read-only field and cannot be set
    { "nam": "oops" } -> Unrecognized key(s) in object: 'nam'

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-13 17:10:24 +01:00
Muhammed Hussain Karimi
077370ff56
fix(Wordpress Node): Send no-cache header on write requests (#20473)
Signed-off-by: Muhammed Hussain Karimi <info@karimi.dev>
Co-authored-by: Elias Meire <elias@meire.dev>
2026-08-13 16:08:54 +00:00
Bernhard Wittmann
62d5de3ec7
feat: Add the credential-setup browser eval lane (no-changelog) (#35982)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-13 15:56:24 +00:00
Anne Aguirre
e1cd75734b
fix(ai-builder): Recover stuck tool-call UI and MCP timeout progressive update (#36162) 2026-08-13 15:55:44 +00:00
Uddish Verma
5a8b698a6e
docs(API): Say why the strict option and the schema builder exist
Both comments described what the code does, which the code already showed. They
now record the reason a reviewer cannot see: Zod strips unknown keys where the
hand-written spec rejected them, and `/discover` can only read request bodies
out of that spec, which a decorator route has no entry in.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-13 16:31:58 +01:00
Emilia
6f3fed6e9f
feat(core): Fence a poll trigger's cursor commit on its scheduler lease (no-changelog) (#35372)
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Co-authored-by: Lorent Lempereur <lorent.lempereur@n8n.io>
2026-08-13 15:21:21 +00:00
n8n-cat-bot[bot]
1ad64b8a76
fix: Rethrow unreachable-element errors in getElementValue (#36199)
Co-authored-by: n8n-cat-bot[bot] <n8n-cat-bot[bot]@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-13 14:54:02 +00:00
Uddish Verma
a0afde4e02
fix(API): Describe node groups on the workflow create and update bodies
`workflowNodeGroup.yml` specified the structure: `id`, `name` and `nodeIds`
required, an optional `description` capped at 155 characters, and no other keys.
The DTO only checked that `nodeGroups` was an array, so four things the old API
rejected were being accepted:

    nodeGroups: [{}]                              missing required fields
    nodeGroups: [1, 2, 3]                         not objects
    nodeGroups: [{ ...valid, bogus: 1 }]          unknown key
    nodeGroups: [{ ...valid, description: 156 }]  over the length cap

Declared in the public DTO rather than reusing the internal
`workflowNodeGroupsSchema`, so a change to the internal request shape cannot
silently move the public contract.

The cap stays a literal 155 rather than `GROUP_DESCRIPTION_MAX_LENGTH` (145):
the engine truncates to that value instead of rejecting, so borrowing it would
start rejecting requests the old API accepted.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-13 15:50:53 +01:00
Nour Alhadi Mahmoud
600354ebcb
refactor(core): Enforce package entity export decisions (no-changelog) (#35699)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-13 14:43:47 +00:00
Dimitri Lavrenük
fee8450999
feat: Improve Browser Use connect conditions (#36215) 2026-08-13 14:34:16 +00:00
Elias Meire
64ed864315
fix(core): Expose incoming request headers to MCP trigger tools (#35236)
Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>
2026-08-13 14:24:28 +00:00
Declan Carroll
c567279606
fix: Make CODESPACE_NAME deterministic in the codespace agent worker (no-changelog) (#36231)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-13 16:03:27 +01:00
Anne Aguirre
30aff5d740
feat(ai-builder): Auto-select a sensible default model for new agents (#36058) 2026-08-13 14:06:31 +00:00
Uddish Verma
4bf334f3b6
refactor(API): Migrate POST /workflows to the decorator pattern
Moves workflow creation onto `@PublicApiController` and removes the legacy
handler, its hand-written spec files, and the now-unused request type. Behaviour
is unchanged: the same `WorkflowCreationService` call, the same redaction check,
the same derived settings stripped before saving.

`workflows.yml` held only this operation once the list route moved in #36015, so
the file and its `openapi.yml` entry go with it.

`workflowPublicDto.generated.yml` appears because a second route now references
the response DTO, so the generator hoists it into a shared component. The 237
lines it gains are the 237 `getWorkflow.generated.yml` loses.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-13 15:02:48 +01:00
Uddish Verma
0dc4a71dc9
feat(API): Add the public request DTO for creating a workflow
Mirrors the hand-written `workflowCreate.yml` and `workflowSettings.yml` that
express-openapi-validator enforced, so the migrated endpoint accepts and rejects
exactly what it did before:

- unknown top-level keys are rejected, via a new optional `{ strict: true }` on
  `Z.class` (default behaviour is unchanged for every other DTO)
- all 17 documented settings are typed, with their enums, and unknown settings
  are rejected
- server-managed fields such as `id` and `active` are rejected with a read-only
  error rather than silently ignored
- `binaryMode` and `credentialResolverId` are accepted, because the old spec
  listed them; the controller strips them afterwards

`nodes`, `connections`, `staticData` and `pinData` stay shape-only checks. Their
contents are node-type specific and only the workflow engine can validate them,
which is also what the old spec did.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-13 15:02:34 +01:00
Uddish Verma
3ac05f20d3
fix(API): Report request body schemas for decorator routes in /discover
`GET /discover?includeSchemas=true` describes each endpoint's request body, but
only ever looked in the hand-written spec files. An endpoint described by a Zod
DTO had nothing to find, so it reported no schema at all.

Three endpoints are affected today: `PUT /workflows/{id}/tags`, `POST /roles`
and `POST /role-mapping-rules`. Nothing caught it because no test asserted a
schema for those.

The description now comes from the route's own `@Body` DTO, converted by the
same generator that writes the spec files, so the two cannot disagree.

Also repoints the reference-resolution test. It used `createWorkflow`, whose
generated schema holds no references, so it had started passing without
exercising anything. It now uses `createDestination`, still described by
hand-written files, and scans the whole resolved schema instead of one field.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-13 15:02:21 +01:00
Nour Alhadi Mahmoud
7792fdbbc7
fix(editor): Clarify external secret expression previews (#36064)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-13 13:51:15 +00:00
mfsiega
c0278b07a0
fix(core): Bound workflow publication outbox record processing with an abort deadline (#36197)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-13 13:43:46 +00:00
yehorkardash
55927c4af5
fix(core): Allow details field in continueErrorOutput mode (#35939) 2026-08-13 13:40:29 +00:00
Konstantin Tieber
885083f257
feat(core): Enable the UI to call the public API (no-changelog) (#35692) 2026-08-13 13:36:06 +00:00
Rodrigo Santos da Silva
2d37afc13d
test(ai-builder): Let a case declare a credential already broken before the conversation started (no-changelog) (#36029)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-13 13:33:11 +00:00
Mas
36f2b68c8b
fix(editor): Refresh chat history when switching executions (#35312)
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Mutasem Aldmour <4711238+mutdmour@users.noreply.github.com>
2026-08-13 13:33:02 +00:00
Anne Aguirre
d0424b444f
feat(ai-builder): Add MCP server as allowed tools in skills (#35969) 2026-08-13 13:15:36 +00:00
Anne Aguirre
547cfb9002
fix(ai-builder): Prevent agent from claiming integration tool call success early (#36196) 2026-08-13 13:15:36 +00:00
Alex Grozav
de5ec12fd0
build(editor): Make frontend-utils htmlUtils loadable as native ESM (no-changelog) (#35622)
Co-authored-by: Claude <noreply@anthropic.com>
2026-08-13 13:11:18 +00:00
Raúl Gómez Morales
1b4c0bab8e
fix(core): Prefer managed OAuth auth types when the AI builder resolves credentials (#35929) 2026-08-13 13:10:33 +00:00
Mutasem Aldmour
79a7bd251c
fix(core): Resolve operation defaults per resource in generated node schemas (#35952)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-13 13:03:38 +00:00
mfsiega
28307f35eb
feat(core): Validate trigger node id uniqueness before publish (no-changelog) (#35379)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-13 12:44:31 +00:00
Michael Drury
a94ffe922e
fix(editor): Display tool execution data in Agent sessions (#36085) 2026-08-13 12:41:39 +00:00
Miguel Ángel Moreno
82e5b566f7
refactor(core): Split the update_workflow MCP tool handler into named steps (no-changelog) (#35458)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Ricardo Espinoza <ricardo@n8n.io>
2026-08-13 12:30:14 +00:00
Uddish Verma
5b03945eb0
refactor(API): Migrate GET /workflows to the decorator pattern (no-changelog) (#36015)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-13 12:28:12 +00:00
Matsu
98f69ed52c
build: Rebuild sqlite3 with a single node-gyp invocation (no-changelog) (#36193) 2026-08-13 12:26:40 +00:00
Charlie Kolb
a413c0b43c
ci: Notify PR authors on merge queue removal (no-changelog) (#36207)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-13 12:20:00 +00:00
Romeo Balta
fd44d5911b
feat(editor): Track AI credit balance clicks (no-changelog) (#36194) 2026-08-13 11:56:37 +00:00
Michael Drury
598c1f3357
fix(editor): Improve agent error handoff to AI Assistant (#36076) 2026-08-13 11:55:33 +00:00
Ilfat Mindubaev
f9fd8a83e4
feat(Confluence Node): Add Confluence Cloud OAuth2 credential (#35732) 2026-08-13 11:54:01 +00:00
Michael Drury
5e2779e0be
fix(core): Return final responses from workflow agents (#36127) 2026-08-13 11:40:13 +00:00
Anne Aguirre
be1fde19f4
fix(ai-builder): Align HITL approval resume schemas with confirm envelope (#36047) 2026-08-13 11:06:24 +00:00
Uddish Verma
6ab3f5e83e
feat(API): Migrate workflow tags endpoints to decorator pattern (#35829)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-13 10:44:28 +00:00
Declan Carroll
0904287eaf
fix: Codespace agent session fixes and thread→box turn routing (no-changelog) (#36173)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-13 10:35:19 +00:00
Emilia
ddd5494809
fix(editor): Settle navigation instead of hanging when auth-init guard errors (#36190)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-13 10:30:57 +00:00
Riqwan Thamir
91ebeecb4e
feat(core): Improve Instance AI model experiments (no-changelog) (#35034)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-13 10:15:03 +00:00