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

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions