Skip to content

Slack2#410

Open
arkml wants to merge 5 commits intodevfrom
slack2
Open

Slack2#410
arkml wants to merge 5 commits intodevfrom
slack2

Conversation

@arkml
Copy link
Contributor

@arkml arkml commented Feb 26, 2026

Summary: Replace Composio Slack with agent-slack CLI

Net effect: -819 lines removed, +472 lines added across 11 files. Composio as the Slack
middleware is fully replaced with agent-slack CLI invocations, and the settings UI now
features a workspace picker.

Backend / Core Changes

  1. packages/core/src/application/assistant/skills/slack/skill.ts — Rewritten
  • Removed: Composio tool catalog import, all slack-* tool references (slack-checkConnection,
    slack-sendMessage, etc.), Composio workflow/discovery instructions
  • Added: Full agent-slack CLI documentation — auth checking (agent-slack auth test), messages
    (list/send/edit/delete), search, channels, users, canvases, multi-workspace --workspace flag,
    token budget control (--limit, --max-body-chars)
  • The agent now uses executeCommand to run CLI commands instead of custom Composio tools
  • Best practices preserved (show drafts, summarize don't dump) plus new ones: resolve user IDs
    by batching agent-slack user get calls with ; separators
  1. packages/core/src/application/assistant/skills/slack/tool-catalog.ts — Deleted
  • Removed the entire 117-line Composio tool slug catalog (113 Slack tool definitions like
    SLACK_SEND_MESSAGE, SLACK_FETCH_CONVERSATION_HISTORY, etc.)
  1. packages/core/src/application/lib/builtin-tools.ts — 387 lines removed
  • Removed all Composio/Slack imports (composioAccountsRepo, executeComposioAction,
    isComposioConfigured, listToolkitTools, slackToolCatalog)
  • Removed SlackToolHint type, slackToolHints config, slackToolSlugCache,
    slackToolSlugOverrides, compactObject, SlackToolResult
  • Removed helper functions: executeSlackTool, normalizeSlackTool, scoreSlackTool,
    pickSlackTool, resolveSlackToolSlug
  • Removed all 10 slack-* tool definitions (slack-checkConnection, slack-listAvailableTools,
    slack-executeAction, slack-sendMessage, slack-listChannels, slack-getChannelHistory,
    slack-listUsers, slack-getUserInfo, slack-searchMessages, slack-getDirectMessages)
  1. packages/core/src/slack/types.ts — New file
  • Defines SlackWorkspace schema ({ url, name }) and SlackConfig schema ({ enabled,
    workspaces[] })
  1. packages/core/src/slack/repo.ts — New file
  • FSSlackConfigRepo — reads/writes ~/.rowboat/config/slack.json, follows the same pattern as
    FSGranolaConfigRepo
  1. packages/core/src/di/container.ts — 2 lines added
  • Imports and registers FSSlackConfigRepo as slackConfigRepo singleton
  1. packages/core/src/application/assistant/instructions.ts — 1 line changed
  • Minor adjustment (likely import path cleanup)

IPC / Main Process Changes

  1. packages/shared/src/ipc.ts — 23 lines added
  • Added 3 new IPC channels:
    • slack:getConfig — returns { enabled, workspaces[] }
    • slack:setConfig — accepts { enabled, workspaces[] }
    • slack:listWorkspaces — returns { workspaces[], error? }
  1. apps/main/src/ipc.ts — 29 lines added
  • Added exec and promisify imports from node:child_process / node:util
  • slack:getConfig handler — reads from slackConfigRepo
  • slack:setConfig handler — writes to slackConfigRepo
  • slack:listWorkspaces handler — runs agent-slack auth whoami via execAsync, parses JSON
    output, maps workspace_url/workspace_name to { url, name }. Returns { workspaces: [], error }
    on failure.

UI Changes

  1. apps/renderer/src/components/connectors-popover.tsx — Major rewrite (~255 lines changed)
  • Removed: ComposioApiKeyModal import/usage, all Composio state (composioApiKeyOpen,
    slackConnecting), Composio IPC calls (composio:get-connection-status,
    composio:initiate-connection, composio:disconnect, composio:is-configured,
    composio:set-api-key), composio:didConnect event listener
  • Added: Workspace picker state (slackWorkspaces, slackAvailableWorkspaces, slackSelectedUrls,
    slackPickerOpen, slackDiscovering, slackDiscoverError)
  • New flow:
    • Disabled state → "Enable" button
    • On click → calls slack:listWorkspaces → shows inline checkbox list of discovered
      workspaces → "Save" button
    • Error case → shows helpful message about running agent-slack auth import-desktop
    • Enabled state → Switch toggle (on) to disable, workspace names shown as subtitle
    • Disable → clears workspaces and sets enabled: false
  1. apps/renderer/src/components/onboarding-modal.tsx — Major rewrite (~265 lines changed)
  • Same Composio→agent-slack migration as connectors-popover
  • Removed: ComposioApiKeyModal, Composio state/handlers/event listeners
  • Added: Same workspace picker pattern (Enable button → discover → checkboxes → Save)
  • Slack row re-enabled in the "Connect Accounts" onboarding step (was previously commented
    out)
  • Completion step shows selected workspace names when Slack is enabled

@vercel
Copy link

vercel bot commented Feb 26, 2026

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

Project Deployment Actions Updated (UTC)
rowboat Ready Ready Preview, Comment Feb 26, 2026 4:18pm

Request Review

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