Skip to content

Declarative connectors: stack entries are inert — bridge them to the automation connector registry or document as descriptor-only #2612

Description

@os-zhuang

The live connector registry behind GET /connectors and the connector_action flow node is populated only by plugins calling automationService.registerConnector(def, handlers) (packages/services/service-automation/src/engine.ts — registration requires a handler per action). Declarative connectors: entries in an app stack are registered as metadata but never reach that registry, so they cannot be dispatched: a declared connector with no plugin behind it is a descriptor with no behavior.

Found while upgrading the showcase to a registry-driven coverage manifest. The showcase demonstrates live connectors the delivered way — ConnectorRestPlugin / ConnectorSlackPlugin instances in objectstack.config.ts plugins:, exercised by the connector flows. Per Prime Directive #10 the declarative connectors: collection is recorded as an explicit waiver in STACK_COLLECTION_COVERAGE (examples/app-showcase/src/coverage.ts) pointing here. (app-crm ships declarative connector examples — examples/app-crm/src/connectors/crm-connectors.ts — which today are declared-but-inert.)

Resolution options:

  1. Bridge: at boot, resolve declarative connector entries against installed connector plugins/handlers and register them (declared connector without a matching handler ⇒ loud validation error, not a silent no-op), or
  2. Document as descriptor-only: make the schema's contract explicit (catalog/marketplace descriptor, not runtime wiring) and keep runtime registration plugin-only.

Once either lands, flip the showcase waiver to demonstrated.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions