Skip to content

feat(automation): connector_action as baseline generic dispatch + connector-rest (ADR-0018) - #1416

Merged
xuyushun441-sys merged 1 commit into
mainfrom
feat/connector-baseline
May 31, 2026
Merged

feat(automation): connector_action as baseline generic dispatch + connector-rest (ADR-0018)#1416
xuyushun441-sys merged 1 commit into
mainfrom
feat/connector-baseline

Conversation

@xuyushun441-sys

Copy link
Copy Markdown
Contributor

What

Promotes connector_action to a built-in baseline node — the generic-dispatch counterpart to http_request. Where http_request calls any raw URL, connector_action invokes any registered connector's declared action. Adds the first concrete connector, @objectstack/connector-rest, as the reference plugin.

Resolves ADR-0018 §Open-questions #1 and supersedes M2's "connector_action dropped from baseline". See the ADR-0018 §Addendum.

Changes

Baseline mechanism — service-automation

  • engine.ts: connector registry (registerConnector / unregisterConnector / resolveConnectorAction / getRegisteredConnectors) + ConnectorActionHandler / ConnectorActionContext / RegisteredConnector types. registerConnector validates via ConnectorSchema and asserts every declared action has a handler.
  • builtin/connector-nodes.ts (new): the connector_action executor — source:'builtin', category:'io', all three paradigms. Wired into installBuiltinNodes() → core plugin now seeds 11 baseline node types. A missing connector fails the step (not flow registration) with a clear error.

Reference connector — packages/connectors/connector-rest (@objectstack/connector-rest)

  • createRestConnector + ConnectorRestPlugin, request action, static auth (none/api-key/basic/bearer). No OAuth2 refresh — that's the enterprise tier.
  • New packages/connectors/ workspace category, alongside plugins/ / services/ / adapters/.

Open/enterprise boundary

Mechanism (registry + dispatch node) + static auth = open-source. Managed credentials/vault, OAuth2 refresh, multi-tenant lifecycle, premium connectors, marketplace = enterprise (ADR-0015 datasource precedent). Boundary documented in the cloud repo's connector-tiering.md design note (separate repo).

Tests

  • @objectstack/service-automation: 87/87 (flipped 2 old "NOT baseline" assertions; added connector-nodes.test.ts).
  • @objectstack/connector-rest: 10/10, including an end-to-end kernel boot — both plugins → connector_action flow → REST handler with bearer auth + body, output propagated back.

…nector-rest (ADR-0018)
Promote `connector_action` to a built-in baseline node — the generic-dispatch
counterpart to `http_request`: where http_request calls any raw URL,
connector_action invokes any registered connector's declared action.
- engine: connector registry (registerConnector / unregisterConnector /
resolveConnectorAction / getRegisteredConnectors) + ConnectorActionHandler /
ConnectorActionContext / RegisteredConnector types. registerConnector validates
via ConnectorSchema and asserts every declared action has a handler.
- builtin/connector-nodes.ts: connector_action executor (source:'builtin',
category:'io', all three paradigms), wired into installBuiltinNodes() — the core
plugin now seeds 11 baseline node types. Missing connector fails the step (not
flow registration) with a clear error.
- packages/connectors/connector-rest (@objectstack/connector-rest): the reference
concrete connector. createRestConnector + ConnectorRestPlugin, `request` action,
static auth (none/api-key/basic/bearer), no OAuth2 refresh (enterprise tier).
- New packages/connectors/ workspace category (alongside plugins/services/adapters).
- ADR-0018 §Addendum: records the decision, resolves Open-question #1, supersedes
M2's "connector_action dropped from baseline".
Tests: service-automation 87/87, connector-rest 10/10 (incl. end-to-end kernel boot:
both plugins -> connector_action flow -> REST handler).
@vercel

vercelBot commented May 31, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentActionsUpdated (UTC)
specBuildingBuildingPreview, CommentMay 31, 2026 3:32pm

Request Review

@github-actionsgithub-actionsBot added documentation Improvements or additions to documentation dependencies Pull requests that update a dependency file tests tooling size/xl labels May 31, 2026
@xuyushun441-sys
xuyushun441-sys merged commit 7692eb8 into mainMay 31, 2026
10 of 12 checks passed
@xuyushun441-sys
xuyushun441-sys deleted the feat/connector-baseline branch May 31, 2026 15:34

/** Build the request URL from base + path + query, encoding query params. */
function buildUrl(baseUrl: string, path: string, query?: RestRequestInput['query']): string {
const base = baseUrl.replace(/\/+$/, '');
@@ -0,0 +1,139 @@
// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.

import { describe, it, expect, vi } from 'vitest';
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependenciesPull requests that update a dependency filedocumentationImprovements or additions to documentationsize/xlteststooling

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@xuyushun441-sys@github-advanced-security@os-zhuang