Commit Graph

6480 Commits

Author SHA1 Message Date
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
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
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
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
bac8debc0e
feat(ai-builder): Format zod erros on agent config - better toast msg (#34867) 2026-07-24 15:24:59 +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
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
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
Arvin A
e5bb60f663
feat(core): Add agent-scoped eval data model and migration (no-changelog) (#34657) 2026-07-24 12:37:53 +00:00
Bernhard Wittmann
6e124263dc
fix(core): Resolve synthetic tool nodes to the requested version (#34850) 2026-07-24 12:09:58 +00:00
Sandra Zollner
f4edeeba31
feat(core): Return open and closed counts for the review inbox tabs (#34789) 2026-07-24 11:26:39 +00:00
Michael Drury
9503892225
fix: Improve MCP tool handling (no-changelog) (#34827) 2026-07-24 11:00:35 +00:00
Robin Braumann
a647aeff23
feat(core): Store agent execution logs in blob storage (#34796)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-24 10:57:49 +00:00
José Braulio González Valido
da0de05058
fix(core): Mount the MCP registry test seed endpoint whenever E2E tests are enabled (no-changelog) (#34811)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-24 10:08:34 +00:00
Lorent Lempereur
697174f3f8
feat(core): Add workflow.deactivate external hook (#34746) 2026-07-24 09:15:28 +00:00
José Braulio González Valido
e904939db2
fix(ai-builder): Halt workflow verification at send-and-wait gates on loops (#34809)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-24 08:50:41 +00:00
Filipe Tavares
39490bcda8
build: Mark @n8n/telemetry as private (no-changelog) (#34826)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-24 07:20:25 +00:00
Ricardo Espinoza
eca731c2de
fix(core): Include RFC 9207 iss parameter on OAuth authorization error redirects (#34751)
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.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
Util: Sync API Docs / sync-public-api (push) Waiting to run
2026-07-23 22:46:09 +00:00
Guillaume Jacquart
01e06399d8
feat(editor): Polish end-user credential setup modal and NDV states (#34766)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-23 19:53:12 +00:00
Filipe Tavares
855c283101
feat: Add @n8n/telemetry event registry with typed track() support (no-changelog) (#34662)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 16:09:54 +00:00
Riqwan Thamir
b0a14728d7
refactor(core): Remove unused templates and list_skills AI tools (no-changelog) (#34741)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-23 15:38:41 +00:00
Irénée
09c90f9bf4
feat(core): Auto-include sub-workflows in package exports (#34218)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-23 15:03:07 +00:00
Rodrigo Santos da Silva
bd6f617efb
feat(core): Nest delegated sub-agent spans under the parent agent trace (#34720)
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.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
Util: Sync API Docs / sync-public-api (push) Waiting to run
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-23 14:46:48 +00:00
Robin Braumann
21f5097bfe
refactor(core): Centralize agent draft model/credential validation (no-changelog) (#34775)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-23 14:05:53 +00:00
Dmitrii
05c691b0b7
feat(API): Deprecate workflow activate/deactivate public API endpoints (#34771) 2026-07-23 13:41:42 +00:00
Milorad FIlipović
4ead8600f9
feat(core): Improve workflow groups validation/support in mcp (no-changelog) (#34778) 2026-07-23 13:41:27 +00:00
Guillaume Jacquart
d8d89cc381
fix(core): Redact a sub-workflow's own execution record per its own policy (#34621)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-23 12:55:51 +00:00
Robin Braumann
e5b1ac9f38
feat(core): Build agent drafts before asking for setup in the agent builder (no-changelog) (#34615)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-23 12:55:51 +00:00