Skip to content

feat: default preset includes the three generic connector executors (rest / openapi / mcp) — blocked by #3055 #3056

Description

@os-zhuang

Closes the last authoring gap in the ADR-0097 promise that integrations are "expressible and executable as pure metadata".

Problem

An AI (or Studio author) can write a complete, valid provider-bound connectors: entry today — but it only materializes if a human has also edited objectstack.config.ts to add the matching connector plugin to plugins:. The metadata layer is complete; the host layer keeps a code-editing step, parked exactly where an AI author can't help itself. The boot error even names the missing package (good), but the fix is still manual code.

Current reality:

  • examples/app-showcase installs ConnectorOpenApiPlugin / ConnectorRestPlugin / ConnectorSlackPluginnot ConnectorMcpPlugin.
  • The create-objectstack scaffold ships none of them.

Why these three (and only these three)

rest / openapi / mcp are generic executors (ADR-0022/0023/0024) — protocol-level infrastructure, the analogue of Salesforce External Services being a platform capability. Brand connectors (slack, salesforce, …) stay marketplace/opt-in. The runtime cost of an installed-but-unused executor is ~zero: factory registration is one map entry, and the MCP SDK is lazily imported only when a connection is actually made.

This deliberately does NOT move anything into the engine/kernel: ADR-0018 §Addendum's layering stands (built-in = the connector_action node + the empty registry; transports = plugins). "Default" means the preset layer: scaffold template + showcase + docs.

Blocked by #3055

Making connector-mcp default-present without the stdio policy gate widens the metadata→child-process surface (Studio publish → reconcile → spawn). #3055's default-deny (PR #3059) must land first.

Ask

  • create-objectstack template: plugins: includes new ConnectorRestPlugin(), new ConnectorOpenApiPlugin(), new ConnectorMcpPlugin() (zero-arg = contribute the provider factory only).
  • examples/app-showcase: add new ConnectorMcpPlugin() for parity.
  • Docs: getting-started / integration pages state which providers are available by default and how to add/remove them.
  • Changesets for the touched packages.

Also owned by this issue: the deferred live-mcp showcase demo (from #3017, now closed)

The demo's remaining half is an in-repo MCP target the declarative provider: 'mcp' instance can point at deterministically in CI — either a tiny MCP fixture server, or @objectstack/mcp (the platform's own endpoint; note it currently has no default wiring anywhere) with a boot-ordering story, since the automation plugin's start() runs before the HTTP server listens — the #3049 degrade+retry makes that self-connection heal seconds after boot, but the Dogfood gate must not become timing-sensitive.

Refs

Activity

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

Metadata

Metadata

Assignees

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