Commit Graph

22304 Commits

Author SHA1 Message Date
Jose
3189f1e9cd
test: Categorise new mock-data exports and type test fixtures
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-25 21:12:10 +01:00
Jose
e68bcd552b
Merge branch 'eval-pin-data-field-name-fidelity' into eval-pin-drift-validation 2026-07-25 20:07:28 +01:00
Jose
a2e6983840
fix(ai-builder): Read raw-object schema declarations and harden pin retry prompt
Smoke 30170202121 left one drift unit: a build declaring its extractor
schema as a raw object (not a JSON string) produced no field contract, so
validation silently skipped. Read both forms; also state the Data Table
id type in the prompt and forbid item-dropping in the retry correction.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-25 20:07:13 +01:00
Jose
2f3e7ca7c5
Merge remote-tracking branch 'origin/eval-openai-completion-object-text' into eval-pin-drift-validation
# Conflicts:
#	packages/cli/src/modules/instance-ai/eval/__tests__/provider-shapes.test.ts
2026-07-25 19:42:04 +01:00
Jose
757d201acf
Merge remote-tracking branch 'origin/eval-pin-data-zero-items' into eval-pin-drift-validation 2026-07-25 19:40:47 +01:00
Jose
d465857bcb
Merge remote-tracking branch 'origin/eval-ledger-snapshot-gmail-list' into eval-pin-drift-validation 2026-07-25 19:40:47 +01:00
Jose
5b57575edb
Merge remote-tracking branch 'origin/eval-mock-binary-fixture-fidelity' into eval-pin-drift-validation 2026-07-25 19:40:46 +01:00
Jose
2d5708846b
Merge remote-tracking branch 'origin/eval-wire-ledger-record-wire-body' into eval-pin-drift-validation 2026-07-25 19:40:46 +01:00
Jose
cd30a7ac18
fix(ai-builder): Enforce declared field names on eval pin data
Pinned fixtures drifted from the field names their nodes declare
(invoice_amount where the extractor schema says total_amount; email
where the Data Table column is contact_email), breaking correctly-built
downstream expressions and polluting failure attribution.

- Embed the information extractor's own declared schema (fromAttributes/
  fromJson/manual) in the generation prompt — it never reached the model.
- Read the REAL Data Table columns off the builder-created table and
  render them as the authoritative pinned-row shape.
- Validate generated pins against those contracts; regenerate once with
  explicit corrections, fail loud if drift persists (no silent renames).
- Wrap flat extractor pins in their real { output } envelope.
- Rubric: pinned Data Table rows mirror the real table schema — reading
  a nonexistent column is a builder_issue.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-25 19:39:55 +01:00
Jose
1791cbcae8
Merge remote-tracking branch 'origin/master' into eval-mock-binary-fixture-fidelity 2026-07-25 18:12:40 +01:00
José Braulio González Valido
1713d9a9bc
fix: Parse structured output from content-block model responses in chain nodes (#34928)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-25 16:57:31 +00:00
Jose
58873c68ab
fix(ai-builder): Serve JSON answers as encoded strings in mocked OpenAI completion envelopes (no-changelog)
The real OpenAI envelopes carry the model's answer as a STRING even when it
is JSON (json_object/json_schema formats return a JSON-encoded string); the
HTTP mock sometimes embeds the parsed object at output[].content[].text or
choices[].message.content instead, and downstream consumers crash or read
"[object Object]". Deterministic normalizer + submit_response reject nudge
for both /v1/responses and chat/completions, object-text coercion in the
wire-intercepted Responses envelope rebuild, and the matching quirk rule.

Supersedes the validated half of #34866; its completion-mock conformance
half (fence enforcement, pseudo-JSON schema synthesis, fillMissingRequired)
targeted symptoms of the chain-parser product bug fixed in #34928 and is
intentionally dropped — fillMissingRequired in particular could fabricate
scenario-relevant values and mask real mock content gaps.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-25 17:33:24 +01:00
Jose
602f86c19c
fix(ai-builder): Stop the bypass-pin guard from replacing empty pins with a phantom item
The first smoke run proved the prompt+parse fix produced correct [] pins,
which the Phase-1.5 guard then converted back into [{json:{}}] — its
length===0 branch conflated "missing entry" (real-execution risk) with
"intentionally empty" (the engine honors [] as pinned-zero-items via a
presence check). Backfill only missing entries, and with [] instead of a
phantom item.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-25 16:37:15 +01:00
Miguel Ángel Moreno
0dabb99ce5
refactor(core): Dispatch MCP workflow operations via a handler table (no-changelog) (#34926)
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: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-25 15:16:23 +00:00
Jose
ca49200145
fix(ai-builder): Pin zero-item premises as empty arrays and attribute pinned-fixture faults (no-changelog)
When a scenario premise requires a pinned node to emit 0 items ("no new
postings", "empty contact list"), the pin-data prompt's "generate 1-2 items
per node" rule cornered the model into a phantom single empty item [{}],
which flows downstream and crashes or corrupts the run. Steer the prompt
(zero-item premises MUST pin as []) and add a deterministic backstop in
parsePinDataResponse that drops fieldless items — the execution engine
honors an empty pinned array as "pinned, zero items".

Judges also had no home for pinned-fixture faults and split them between
mock_issue and framework_issue; the rubric now assigns harness-generated
pin data faults to mock_issue explicitly.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-25 16:12:05 +01:00
Jose
4f3000394f
fix(ai-builder): Snapshot eval ledger bodies and normalize Gmail list envelopes (no-changelog)
Two judge-evidence/mock-fidelity gaps found while grading the TRUST-344
validation run:

- The HTTP-path ledger stored the served body BY REFERENCE. Nodes that
  mutate the response in place (the OpenAI node's json_schema output mode
  parses output[].content[].text into an object) retroactively rewrite the
  ledger, so judges see a body the mock never sent and misattribute
  builder-side failures to mock_issue. Ledger entries are now JSON-round-trip
  snapshots (Buffers pass by reference).
- Gmail messages.list answered as a bare array (a recurring model slip)
  yields zero messages in the node. Deterministic backstop wraps a bare
  array into the { messages, resultSizeEstimate } envelope, with a matching
  submit_response violation nudge.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-25 16:09:56 +01:00
Albert Alises
7d8426f055
feat: Add admin-managed instance credentials (#34364) 2026-07-25 14:22:22 +00:00
Miguel Ángel Moreno
6d66056058
feat(core): Make MCP clients aware of node groups (no-changelog) (#34810)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-25 14:17:11 +00:00
Albert Alises
dee23d2de5
test(core): Align MCP server name validation (#34946) 2026-07-25 13:38:35 +00:00
Albert Alises
5339b5e48a
fix(core): Keep MCP server display names free-form in agent config (#34931)
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
2026-07-24 17:12:51 +00:00
Jose
7947237df6
fix(ai-builder): Serve decodable binary fixtures and upload-session headers from eval mocks (no-changelog)
Three mock facets crashed real downstream decoders:
- OpenAI image generations carried the truncated `iVBORw0KGgo` placeholder;
  Edit Image (GraphicsMagick) fails on it. Substitute every b64_json with a
  real 512x512 canvas PNG built programmatically in eval-mock-fixtures.
- Gmail raw messages embedded model-invented base64 for PDF attachment parts;
  Extract PDF Text (pdfjs) rejects them. The model now authors the document's
  plaintext and the harness builds a valid PDF carrying exactly that text
  (buildPdfWithText, xref offsets computed); image parts get the standard
  decodable fixture.
- Google Drive resumable-upload initiations need the session URI in the
  `location` response HEADER, which a model-authored body can't express.
  Serve that turn deterministically; the follow-up chunk PUT stays mocked.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-24 17:29:31 +01:00
Jose
544f26e438
fix(ai-builder): Record the served wire envelope in the eval LLM ledger (no-changelog)
The wire-server ledger stored the completion mock's internal shorthand
({content}/{tool_calls}) as mockResponse, so judges reading the verification
artifact concluded the node received a malformed envelope and misattributed
node-side failures to mock_issue. Record the post-translation wire body the
SDK actually received (equivalent non-streamed envelope for SSE turns), and
flag wire-server generation/translation failures in the judge pre-analysis
alongside HTTP-mock failures.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-24 17:11:15 +01:00
Riqwan Thamir
55e92cc283
refactor(core): Consolidate sandbox and skill guidance in system prompt (no-changelog) (#34909)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-24 15:50:37 +00:00
Anne Aguirre
decb3228c5
feat(ai-builder): Tidy up tool names and agent builder tool UX (#34646)
Some checks failed
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
Build: Benchmark Image / build (push) Has been cancelled
Util: Sync API Docs / sync-public-api (push) Has been cancelled
2026-07-24 15:26:08 +00:00
Anne Aguirre
6b4021147b
fix(ai-builder): Make channel config dropdown enabled - Linear and Telegram - in AIA agent builder (#34706) 2026-07-24 15:25:51 +00:00
Anne Aguirre
bac8debc0e
feat(ai-builder): Format zod erros on agent config - better toast msg (#34867) 2026-07-24 15:24:59 +00:00
Anne Aguirre
490b7220e1
fix(ai-builder): Make labels be more specific about access token for Slack setup (#34893) 2026-07-24 15:24:44 +00:00
Ricardo Espinoza
359d82fb05
fix(editor): Center empty state content vertically on short viewports (#34820) 2026-07-24 14:59:37 +00:00
Robin Braumann
8017b3d85f
feat(core): Add telemetry events for agent publishing, builder capabilities, and interactive flows (#34887)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-24 14:34:11 +00:00
Ricardo Espinoza
99d70aedbd
build: Replace deprecated turbo --parallel with explicit concurrency in dev scripts (no-changelog) (#34832) 2026-07-24 14:34:02 +00:00
mfsiega
7089418a6b
feat(core): Add step-executor seam to @n8n/engine (no-changelog) (#34784)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: Iván Ovejero <ivov.src@gmail.com>
2026-07-24 14:31:15 +00:00
Danny Martini
3f2bc68846
feat(core): Detect and heal published-version skew in trigger reconciliation (#34877)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-24 14:15:42 +00:00
Arvin A
e6a08eec58
fix(core): Normalize eval-collection scores per-run and harden re-run (no-changelog) (#34736) 2026-07-24 14:14:49 +00:00
Yen Su
f99d75c3d5
fix(Gmail Node): Roll back advanced HITL Send and Wait (no-changelog) (#34865)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-24 14:14:17 +00:00
Svetoslav Dekov
fdd4e33f9c
feat(core): Add availableInMCP column to agents (#34665)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-24 14:09:04 +00:00
Kai
5a97bd1a2e
feat(editor): Sync a new workflow version into an existing open review (#34842) 2026-07-24 14:06:07 +00:00
Lorent Lempereur
4212fc2202
fix(core): Avoid loading execution data during credentials security audit (#34876) 2026-07-24 13:54:37 +00:00
Ricardo Espinoza
9e09ff4d23
fix(core): Reject workflow deletion while unpublish is still in progress (#34836) 2026-07-24 13:43:48 +00:00
Elias Meire
ded1697671
fix(Microsoft Teams Node): Respect limit server-side in getAll operations (#34851) 2026-07-24 13:41:45 +00:00
Aryan Bahl
b5da0744c4
fix(Baserow Node): Format Get Many date filter values for Baserow API (#32723)
Co-authored-by: Alexander Gekov <40495748+alexander-gekov@users.noreply.github.com>
2026-07-24 13:12:48 +00:00
mfsiega
d6c9c38ae7
feat(core): Add workflow_step_execution table to @n8n/engine (no-changelog) (#34860)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-24 12:52:17 +00:00
Ricardo Espinoza
bf8f5d85a3
perf(core): Skip allowed-methods lookup on successful production webhook requests (#34833) 2026-07-24 12:50:40 +00:00
Lorent Lempereur
efa86c697b
feat(core): Include acting user identity in workflow lifecycle external hooks (#34769) 2026-07-24 12:43:46 +00:00
Milorad FIlipović
ddc1766af3
feat(core): Improve grouping operations in mcp (no-changelog) (#34852) 2026-07-24 12:39:05 +00:00
Alex Grozav
335b9d7a96
refactor(editor): Move useToast into @n8n/composables behind a shim (no-changelog) (#34861)
Co-authored-by: multica-agent <github@multica.ai>
2026-07-24 12:38:44 +00:00
Arvin A
e5bb60f663
feat(core): Add agent-scoped eval data model and migration (no-changelog) (#34657) 2026-07-24 12:37:53 +00:00
Riqwan Thamir
50789b1553
fix(core): Guiding data-table skill routing better (no-changelog) (#34882)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-24 12:12:04 +00:00
Bernhard Wittmann
6e124263dc
fix(core): Resolve synthetic tool nodes to the requested version (#34850) 2026-07-24 12:09:58 +00:00
Mike Repeć
016421680d
fix(editor): Add document title and adopt new settings layout on migration report pages (#34609)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-24 12:08:16 +00:00
RomanDavydchuk
a0f6861e17
fix(editor): Keep Switch fallback outputs available with unresolved expressions (#34698) 2026-07-24 12:05:14 +00:00