Skip to content

feat(connectors): use installable lifecycle from Connectors - #1531

Merged
lilyshen0722 merged 4 commits into
mainfrom
kai/connector-installable-page
Sep 4, 2026
Merged

lilyshen0722 merged 4 commits into
mainfrom
kai/connector-installable-page

Conversation

@lilyshen0722

@lilyshen0722 lilyshen0722 commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

Summary

  • create Telegram connectors through the installable lifecycle endpoint
  • disconnect installable-backed Telegram rows through the lifecycle uninstall verb
  • retain the legacy PATCH disconnect path for pre-migration direct integration rows

Verification

  • focused V2ConnectorsPage Jest suite: 9 passed
  • TypeScript check passed
  • scoped ESLint: 0 errors (two existing TSX JSX-style warnings)
  • production frontend build passed

Stacked on #1527 by design; it will retarget to main after that substrate PR merges. Browse work remains deferred to the marketplace-unlock PR per the approved plan.

@lilyshen0722
lilyshen0722 changed the base branch from kai/connector-installable-app to main September 4, 2026 07:32
@samxu01
samxu01 force-pushed the kai/connector-installable-page branch from 2c2cdd8 to 09bb5a8 Compare September 4, 2026 08:12
@lilyshen0722
lilyshen0722 merged commit 2a5d51f into main Sep 4, 2026
14 checks passed
@lilyshen0722
lilyshen0722 deleted the kai/connector-installable-page branch September 4, 2026 08:33
lilyshen0722 added a commit that referenced this pull request Sep 4, 2026
…(TASK-006) (#1535)

* docs(plans): Slack as the second installable connector — design note (TASK-006)

Telegram with two substitutions: the OAuth state is the connect code and the
callback is the enable command; the per-workspace bot token makes ADR-025 D6's
secret reference a prerequisite. Everything else in #1527/#1531 is reused.

* docs(plans): Slack note — the #1527 invariants checked one by one, and the one secret that enters outside the activation CAS

* docs(plans): Slack note — the callback proves a Slack identity, not the right one: session nonce + confirm-in-Commonly before any bind routes (Vera)

* docs(plans): Slack note — the one-write window after the exchange, and why token rotation stays off

* docs(plans): Slack note — pending-bind expiry enforced at Confirm; reconciler goes on the scheduler (Vera)

* docs(plans): Slack note — cite Slack's OAuth and rotation docs; drop the uncited same-token claim from the crash path

* docs(plans): Slack note — the dropped-exchange log line names the workspace (Vera)

* docs(plans): Slack note — shared event_id receipts (rollouts run two processes) and a key ring with a re-wrap path (Vera)

* docs(plans): Slack note — the event receipt is a claim with state; stale processing is taken over by CAS (Vera)

* docs(slack): the OAuth nonce is stored plain and compared in constant time — no digest

Matches #1537 b801a6e. The hashed cookie was CodeQL's js/insufficient-password-hash
(#1779) on every digest variant, and the hash defended against nothing: a row reader
already holds state in the same document. Confirm is the wall.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

---------

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant