Skip to content

feat(connector-slack): Slack Web API connector + connector/channel reconciliation (ADR-0022) - #1418

Merged
xuyushun441-sys merged 3 commits into
mainfrom
feat/connector-slack
May 31, 2026
Merged

feat(connector-slack): Slack Web API connector + connector/channel reconciliation (ADR-0022)#1418
xuyushun441-sys merged 3 commits into
mainfrom
feat/connector-slack

Conversation

@xuyushun441-sys

Copy link
Copy Markdown
Contributor

ADR-0022 reconciles Connector (integration mechanism, built) vs MessagingChannel (human-notification, ADR-0012/0013 draft): notify-a-human => MessagingChannel; raw API call => connector_action; channel delegates transport to a Connector. Back-refs added to 0012 §2 / 0013 §9. Adds @objectstack/connector-slack (2nd reference connector after connector-rest): static bot-token auth, chat.postMessage/chat.update/call actions, surfaces Slack's logical ok without throwing. Tests 8/8 incl. e2e kernel boot dispatching connector_action -> slack.chat.postMessage.

…ube reconciliation, naming, task list
A four-area code scan (spec/runtime/frontend/examples) found three things
that change the plan:
- Runtime != schema: groupBy/aggregations execute (single-object), but
joins/having/windowFunctions are schema-only and NOT executed by
IDataEngine or the SQL driver. The headline "revenue by account.region"
cannot run via IDataEngine today — joins are the gating gap.
- A parallel semantic layer already exists and is implemented
(IAnalyticsService + CubeSchema); its NativeSQLStrategy is the only
cross-object JOIN path but bypasses RLS/tenant. Don't build a third
layer — reuse/compile-to Cube.
- Naming collisions: Dataset/Dimension/Metric are already taken.
Corrects the false "engine already does joins" premise, adds the
Cube-reconciliation + naming decisions (D-A/B/C), and appends an
implementation-scan section with a workstream task list and rough sizing
(~6-8 weeks across both repos; rendering lives in sibling repo objectui).
…conciliation (ADR-0022)
Add ADR-0022 reconciling the two seams that both claim 'Slack': Connector
(integration mechanism, built) vs MessagingChannel (human-notification layer,
ADR-0012/0013, draft). Decision: notify-a-human => MessagingChannel; raw API
call => connector_action; the channel delegates its transport to a Connector.
Back-references added to ADR-0012 §2 and ADR-0013 §9.
Add @objectstack/connector-slack — the second reference concrete connector
(after connector-rest), validating the baseline connector registry and opening
the ADR-0022 'raw API call' path. Static bot-token (bearer) auth only; OAuth2
install/refresh and credential vaulting stay enterprise. Actions:
chat.postMessage, chat.update, and a generic call escape hatch. Surfaces
Slack's logical 'ok' (HTTP 200 even on failure) without throwing.
Tests: 8/8 (connector unit + end-to-end kernel boot dispatching a
connector_action flow to slack.chat.postMessage).
@vercel

vercelBot commented May 31, 2026

Copy link
Copy Markdown

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

ProjectDeploymentActionsUpdated (UTC)
specReadyReadyPreview, CommentMay 31, 2026 4:01pm

Request Review

@github-actionsgithub-actionsBot added documentation Improvements or additions to documentation dependencies Pull requests that update a dependency file tests tooling size/l labels May 31, 2026
…view criterion
- D-A: dataset is the ONE author-facing semantic type; compiles to the
existing Cube runtime; retire/absorb the author-facing Cube DSL.
- D-B: take high-prior names dataset/measure/dimension; rename seed
Dataset -> Seed; Cube Dimension/Metric absorbed (collision dissolves).
- D-C: reuse Cube NativeSQLStrategy join path but make RLS + per-joined-
object tenant scoping mandatory; v1 joins only along declared relations.
- Q1: derived measures first-class now, CLOSED (reference measures by
name only; no raw fields/SQL).
- Q2: deferred; runtimeFilter only in v1.
- Q3: deferred; conformed dimensions in a follow-up ADR.
Rewrites D1 schema to a declarative surface smaller than QuerySchema
(object + include relationships + dims/measures + derived), no raw SQL,
joins derived from the object graph. Adds the six AI-author principles
that drive the decisions. WS2 drops XL->L; estimate ~4-6 weeks.
@xuyushun441-sys
xuyushun441-sys merged commit fa5d965 into mainMay 31, 2026
10 of 12 checks passed
@xuyushun441-sys
xuyushun441-sys deleted the feat/connector-slack branch May 31, 2026 16:00

export function createSlackConnector(opts: SlackConnectorOptions): SlackConnectorBundle {
const name = opts.name ?? 'slack';
const baseUrl = (opts.baseUrl ?? 'https://slack.com/api').replace(/\/+$/, '');
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/lteststooling

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

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