You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
Repository navigation
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
flow-connector-picker: a committed action's Input section stays a generic untyped key/value repeater — the descriptor's inputSchema is never consumed #4305
In the flow connector picker, after committing an action the Input section renders a generic untyped key/value repeater, with no field derived from the descriptor's inputSchema. The picker is otherwise correct — it follows the runtime registry (its options diff name-by-name against GET /automation/connectors), refuses undispatchable descriptors (does not offer the catalog-only showcase_erp_catalog), annotates provenance exactly, and derives actions end-to-end — this is the sole PARTIAL gap.
Root cause
Nothing in app-shell consumes the descriptor inputSchema. git grep inputSchema over packages/app-shell hits only views/metadata-admin/default-schemas.ts (a field declaration) and a comment in views/metadata-admin/previews/flow-canvas-layout.ts — on both the served console pin and origin/main. No code path turns an action's inputSchema into typed input fields, so the Input section falls back to the generic repeater. Not fixed upstream.
Reproduction
Open the flow builder, add a connector node, and pick an action whose descriptor declares an inputSchema.
Commit the action and inspect the Input section.
Expected: input fields typed from the descriptor's inputSchema. Actual: a generic untyped key/value repeater with no schema-derived fields.
Findings triage (grade): promoted — finding removed, pm:queue stays (the card was filed with both, an illegal dual pm-state; this resolves it).
Why queue: user-facing gap on a live surface (flow builder Input section) with a re-verified absence — on origin/main @ 9461dd3, git grep inputSchema -- packages/app-shell still returns only a field declaration (views/metadata-admin/default-schemas.ts:149) and a comment (previews/flow-canvas-layout.ts:69); no code path derives typed inputs from an action descriptor's inputSchema. The deliverable is scoped (turn inputSchema into typed fields where the picker commits an action), and the card's own boundary-drawing (everything else about the picker is correct) keeps it from scope-creeping.
CLAIM — session_017Qqyix2QcnpUC9XeYVDzx3, branch claude/issue-4305-connector-input-schema. Dispatching a dev agent now.
PM ruling (delegated decision authority; maintainer veto window open — record objections here):
Measure both ends first: the descriptor inputSchema's actual language (read the connector-descriptor spec in objectstack, read-only — what shape, closed or open via additionalProperties) and what the Input section renders today (the generic repeater component and its storage shape).
One resolver — no hand-rolled field generator. The repo already owns schema-driven form machinery (SchemaForm, the inspectors' generic fallback). Measure whether it can render the descriptor's input shape directly or through a SMALL adapter (descriptor inputSchema → its field vocabulary). If the schema language needs a real interpreter the existing machinery lacks (e.g. full JSON Schema with $refs/oneOf), STOP and report the measured gap — do not build a schema interpreter under this card.
Round-trip is the binding constraint: existing committed flows store inputs in the current key/value shape — the typed fields must read/write that same underlying map, pinned by a test that a stored input renders into its typed field and saves back byte-compatible. The repeater stays as the FALLBACK for descriptors with no inputSchema (pinned byte-identical), and for extra keys beyond a schema measured to be open — report the measured additionalProperties semantics and follow them.
Red-first with the card's repro: an action whose descriptor declares inputSchema currently renders the untyped repeater and no schema-derived field. Pins: the picker's verified-correct behaviors untouched (registry diff, undispatchable refusal, provenance annotation); no-schema descriptors unchanged.
Mutual exclusion: the flow-builder files are untouched by all in-flight cards. ⛔ #4548 is running a repo-wide type-check canary that may fix consumer call sites — if a file you need shows fresh unexplained changes on main mid-run, re-fetch and rebase-by-recreating rather than racing; #4553-p2 (fields/gantt/dashboard formatPercent), #4533 (CelPredicateField family), #4479 (data-objectstack) disjoint. #4558's inspector/host files are landed context — do not modify them.
Activity
claude commentedon Aug 11, 2026
Findings triage (grade): promoted —
findingremoved,pm:queuestays (the card was filed with both, an illegal dual pm-state; this resolves it).Why queue: user-facing gap on a live surface (flow builder Input section) with a re-verified absence — on
origin/main@9461dd3,git grep inputSchema -- packages/app-shellstill returns only a field declaration (views/metadata-admin/default-schemas.ts:149) and a comment (previews/flow-canvas-layout.ts:69); no code path derives typed inputs from an action descriptor'sinputSchema. The deliverable is scoped (turninputSchemainto typed fields where the picker commits an action), and the card's own boundary-drawing (everything else about the picker is correct) keeps it from scope-creeping.本评论来自分诊座位 Routine(#5474 试点),不构成认领。
Generated by Claude Code
yinlianghui commentedon Aug 13, 2026
CLAIM — session_017Qqyix2QcnpUC9XeYVDzx3, branch
claude/issue-4305-connector-input-schema. Dispatching a dev agent now.PM ruling (delegated decision authority; maintainer veto window open — record objections here):
inputSchema's actual language (read the connector-descriptor spec in objectstack, read-only — what shape, closed or open via additionalProperties) and what the Input section renders today (the generic repeater component and its storage shape).Mutual exclusion: the flow-builder files are untouched by all in-flight cards. ⛔ #4548 is running a repo-wide type-check canary that may fix consumer call sites — if a file you need shows fresh unexplained changes on main mid-run, re-fetch and rebase-by-recreating rather than racing; #4553-p2 (fields/gantt/dashboard formatPercent), #4533 (CelPredicateField family), #4479 (data-objectstack) disjoint. #4558's inspector/host files are landed context — do not modify them.
Generated by Claude Code
Generated by Claude Code
feat(app-shell): the connector Input section derives typed fields fro…