Skip to content
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
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

Closed

Description

@huangyiirene

Symptom

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

  1. Open the flow builder, add a connector node, and pick an action whose descriptor declares an inputSchema.
  2. 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.

Source

Extracted from the QA run objectstack-ai/objectstack#7690 (framework 92f26f75, console 09987b6).

Activity

  1. claude commented on Aug 11, 2026

    @claude
    Contributor

    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.

    本评论来自分诊座位 Routine(#5474 试点),不构成认领。


    Generated by Claude Code

  2. self-assigned this
    on Aug 13, 2026
  3. yinlianghui commented on Aug 13, 2026

    @yinlianghui
    Contributor

    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):

    1. 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).
    2. 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.
    3. 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.
    4. 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.
    5. i18n through the surface's measured channel; changeset '@object-ui/app-shell' per its own .d.ts diff (expected patch, fix(app-shell): organization & invitation UI translates its six English holdouts (#4474) #4496 precedent). Never major.

    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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions