Skip to main content
[AVAILABLE] as a library. packages/connector-sdk, 45 tests. Extends packages/execution-control (unchanged), see The gateway for how a Connector is reached.

What exists: the Connector SDK foundation

@parmana/connector-sdk is the contract every connector implements, plus generic reference implementations and four enterprise-named reference mocks. None of it integrates with a real enterprise system.
export interface Connector {
  readonly connectorId: string;
  readonly capabilities: ConnectorCapabilities;
  execute(request: ConnectorRequest, context: ConnectorExecutionContext): Promise<ConnectorResponse>;
}
  • ConnectorCapability, a namespaced verb (crm:read, payments:refund, http:post). By convention, ExecutableContent.action is the capability string, this is exactly what execution-control’s DefaultConnectorPolicy already checks (connector.capabilities.includes(request.executableContent.action), unchanged).
  • ConnectorMetadata / ConnectorVersion / ConnectorHealth, descriptive metadata a connector author attaches at registration time. Version mismatches and "unavailable" health both fail closed in SdkConnectorExecutor, before the connector is ever invoked.
  • ConnectorFactory, the construction contract future connectors implement. No concrete factory ships in this milestone.
  • HttpConnector ([AVAILABLE], packages/connector-sdk/src/HttpConnector.ts): capability-aware HTTP forwarding: declared capabilities, per-request timeout via AbortController, Bearer-token credential injection from an already-resolved CredentialHandle, deterministic sanitized evidence. Fails closed on timeout or any non-2xx response. This is a different, newer connector from packages/execution-gateway/src/HttpConnector.ts (below), that one is untouched and still serves the Gateway’s separate “direct connector” mode.
  • MockConnector ([AVAILABLE]), scripted responses and failure injection, for hermetic tests of anything built on top of this SDK.
  • SapConnector / OracleConnector / WorkdayConnector / SalesforceConnector ([AVAILABLE] as reference mocks), thin factory functions in packages/connector-sdk/src/connectors/{sap,oracle,workday,salesforce}/, each constructing a MockConnector under an enterprise-shaped connectorId and capability. Every one carries the same self-documenting comment: “deterministic, in-memory connector used until the real enterprise connector is implemented.” These are reference mocks for building against a realistic connector shape, not integrations, they never call SAP, Oracle, Workday, or Salesforce. packages/api’s default server registers only vendor-payment, not these four, see The gateway.

How a Connector is reached

connector-sdk never bypasses execution-control’s existing seams, it implements them:
ExecutionGateway (unchanged)
  → executionControl.service: ExecutionControlService (execution-control, unchanged)
     → registry.get(connectorId): SecureConnector (InMemoryConnectorRegistry, unchanged)
        → InMemorySecureConnector.execute() (unchanged: policy check, one-time session, credential vault)
           → SdkConnectorExecutor (connector-sdk, new: adapts Connector into ConnectorExecutor)
              → Connector.execute(...) → HttpConnector | MockConnector
ConnectorSdkRegistry (packages/connector-sdk/src/ConnectorRegistry.ts) extends execution-control’s ConnectorRegistry by composing an InMemoryConnectorRegistry internally, it implements the same get() contract, so it’s a drop-in wherever a plain ConnectorRegistry is expected, while adding metadata/version/health/credential-provider registration. See the Connector Development Guide to build one, and Credential Architecture for how credentials reach a connector without ever passing through the Runtime or the AI caller.

What still doesn’t exist

No real connector for SAP, Oracle, Workday, or Salesforce exists, only the reference mocks above. No connector, mock or real, exists for OpenAI, Anthropic, ServiceNow, Slack, Jira, GitHub, or any database driver, all [FUTURE], see CLAIMS.md. Building any of these means implementing Connector from @parmana/connector-sdk and registering it with a ConnectorSdkRegistry, and, to reach the default server, editing its bootstrap (see The gateway), the SDK contract is real, a pre-built connector for your target system mostly is not.