Skip to content

feat(channels): iris channels connect slack → agent-channel install - #37

Merged
mayoalexander merged 1 commit into
devfrom
feat/slack-channels-connect
Jun 9, 2026
Merged

feat(channels): iris channels connect slack → agent-channel install#37
mayoalexander merged 1 commit into
devfrom
feat/slack-channels-connect

Conversation

@mayoalexander

Copy link
Copy Markdown

What

iris channels connect slack --bloq-id <id> now provisions a Slack agent-channel (PROJECT MODE) via the Add-to-Slack OAuth flow instead of falling through to integration/tool OAuth.

Flow

  1. CLI POSTs to /api/v6/bloqs/{id}/channels/slack (iris-api)
  2. iris-api verifies bloq ownership, resolves the answering agent (given, or bloq's first active agent; 422 if none), returns a signed install URL bound to bloq+agent
  3. CLI opens Slack authorization → client approves → iris-api callback auto-provisions the WorkflowChannel (team_id → bloq, bot_token captured, no pasting)

Companion

Requires iris-api connectSlack endpoint (fl-iris-api main 0df7592e) + the Add-to-Slack OAuth flow already deployed.

Errors handled

  • no --bloq-id → usage hint
  • bloq has no agent → 422 surfaced
  • SLACK_CLIENT_ID unset → 422 with setup pointer

🤖 Generated with Claude Code

`iris channels connect slack --bloq-id <id>` now mints an Add-to-Slack
install URL (via POST /api/v6/bloqs/{id}/channels/slack) bound to the bloq
and its agent, opens Slack authorization, and the workspace auto-provisions
on approval — no token pasting. Previously slack fell through to the
integration/tool OAuth path. Handles "no bloq", "no agent", and
"app not configured" (422) with clear guidance.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@mayoalexander
mayoalexander merged commit 7d99746 into devJun 9, 2026
0 of 3 checks passed
mayoalexander added a commit that referenced this pull request Jun 9, 2026
)
`iris channels connect slack --bloq-id <id>` now mints an Add-to-Slack
install URL (via POST /api/v6/bloqs/{id}/channels/slack) bound to the bloq
and its agent, opens Slack authorization, and the workspace auto-provisions
on approval — no token pasting. Previously slack fell through to the
integration/tool OAuth path. Handles "no bloq", "no agent", and
"app not configured" (422) with clear guidance.
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
mayoalexander added a commit that referenced this pull request Jun 9, 2026
… + slack channel connect
Ships:
- iris content-engine init/status (alias: iris ce) — one-command client
content-engine onboarding (PR #36)
- iris channels connect slack (PR #37)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
mayoalexander added a commit that referenced this pull request Aug 19, 2026
…e hid a live connection
fl-api and iris-api each keep their own `integrations` table, and both expose
/api/v1/users/{id}/integrations. `irisFetch` defaults to FL_API despite the name, so
`iris integrations list` only ever showed fl-api's rows.
That produced a confident, wrong negative. Hunting a client's Vagaro credentials, the CLI
showed no vagaro connection and fl-api's `test:integration vagaro` (which scans ALL users, so
it reads as authoritative) agreed. Conclusion: never connected. A client-facing task went out
asking her to generate credentials.
She had provided them eight months earlier. They were integration #37 in iris-api's table,
active, with a full credential set — findable only via
`railway ssh -s fl-iris-api -- php artisan integrations:list`.
- query every known store, tag each row with the store holding it, render it as `[iris-api]`
- an empty result now names where it looked, so a negative is scoped and never bare
- one store unreachable warns and continues; all stores unreachable is a hard failure rather
than an empty list that reads as "nothing connected"
This does not consolidate the two stores — that is an architecture decision (#181228). It
stops the CLI lying about what exists in the meantime.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for freeto 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

@mayoalexander