Conversation
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
git-subtree-dir: lib/slack-cli git-subtree-split: 0e5b91258f5d91aee4f2d17edbc3bab44bf5dc6b
Amp-Thread-ID: https://ampcode.com/threads/T-019d47cc-caf7-740e-a487-be1f0e3443f8 Co-authored-by: Amp <amp@ampcode.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
There was a problem hiding this comment.
Pull request overview
This PR vendors in the snomiao/slack-cli project as a git subtree and adds tooling to sync subtrees, while also updating the existing Slack bot runtime to use @anthropic-ai/claude-agent-sdk and renaming the persisted inbox file.
Changes:
- Added
scripts/subtree-sync.shand npm scripts to pull/push configured git subtrees. - Added
lib/slack-cli/subtree (Rust Slack CLI + NAPI bindings, build workflow, lockfiles). - Updated Slack bot to use
@anthropic-ai/claude-agent-sdk, renamedmsgs.yaml→inbox.yaml, and changed streaming/update behavior.
Reviewed changes
Copilot reviewed 15 out of 20 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
| scripts/subtree-sync.sh | Adds a bash helper to pull/push configured git subtrees. |
| package.json | Adds subtree sync scripts and introduces @anthropic-ai/claude-agent-sdk. |
| bun.lock | Updates lockfile for the new dependency. |
| bot/slack-bot.ts | Refactors agent execution to use the Claude Agent SDK; adjusts inbox filename and message-update loop. |
| inbox.yaml | Adds/initializes the new inbox file tracked by the bot. |
| CLAUDE.md | Expands bot operational notes (PM2 startup/runbook). |
| lib/slack-cli/src/slack.rs | Adds a direct Slack Web API client implementation (reqwest). |
| lib/slack-cli/src/main.rs | Adds the Rust CLI entrypoint and commands. |
| lib/slack-cli/src/lib.rs | Exposes Slack functions to Node via NAPI. |
| lib/slack-cli/Cargo.toml | Defines Rust crate/bin and dependencies. |
| lib/slack-cli/Cargo.lock | Locks Rust dependencies for the subtree. |
| lib/slack-cli/README.md | Documents the Slack CLI usage/config. |
| lib/slack-cli/package.json | Adds NAPI build config for the subtree package. |
| lib/slack-cli/index.js | Loads the correct .node binary for the host platform. |
| lib/slack-cli/index.d.ts | Type declarations for the NAPI bindings. |
| lib/slack-cli/build.rs | Sets up napi-build for compiling the addon. |
| lib/slack-cli/.gitignore | Ignores build outputs for the subtree. |
| lib/slack-cli/LICENSE | Adds license file for the subtree. |
| lib/slack-cli/bun.lock | Adds Bun lockfile for the subtree’s JS tooling. |
| lib/slack-cli/.github/workflows/build.yml | Subtree CI workflow for building bindings/binaries (nested workflow). |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
…put drain cleanup Addresses Copilot review comments: - Extract sendSlackUpdate() so it can be called from interval AND finally block - Add 10s minimum throttle between LLM-synthesized Slack updates (avoids rate limits) - Call sendSlackUpdate() explicitly in finally block (was broken: interval cleared first) - Abort controller in finally to cancel inputDrainPromise reader Amp-Thread-ID: https://ampcode.com/threads/T-019d47cc-caf7-740e-a487-be1f0e3443f8 Co-authored-by: Amp <amp@ampcode.com>
… pooling Addresses Copilot review: client() was creating a new Client per request, defeating connection pooling. Amp-Thread-ID: https://ampcode.com/threads/T-019d47cc-caf7-740e-a487-be1f0e3443f8 Co-authored-by: Amp <amp@ampcode.com>
…nvalid markdown type Addresses Copilot review: Slack Block Kit does not support 'markdown' block type. Use 'section' block with 'mrkdwn' text object instead. Amp-Thread-ID: https://ampcode.com/threads/T-019d47cc-caf7-740e-a487-be1f0e3443f8 Co-authored-by: Amp <amp@ampcode.com>
…ersion, caching, and safe messaging Standalone utilities ported from lib/slack/ with zero project-specific deps: - parse-url: parseSlackUrl() + slackMessageUrlParse() with team extraction - ts-to-iso: slackTsToISO() timestamp conversion - parse-markdown: sync + async mrkdwn→markdown with optional resolver - safe-message: truncateSlackText() + truncateSlackBlocks() - cached-client: createCachedSlack() in-memory Map cache proxy Amp-Thread-ID: https://ampcode.com/threads/T-019d47cc-caf7-740e-a487-be1f0e3443f8 Co-authored-by: Amp <amp@ampcode.com>
|
All alerts resolved. Learn more about Socket for GitHub. This PR previously contained dependency changes with security issues that have been resolved, removed, or ignored. |
…lack channel Co-authored-by: Amp <amp@ampcode.com> Amp-Thread-ID: https://ampcode.com/threads/T-019d56a9-781f-705a-9c1f-408916e8d206
Amp-Thread-ID: https://ampcode.com/threads/T-019d56a9-781f-705a-9c1f-408916e8d206 Co-authored-by: Amp <amp@ampcode.com>
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
|
🎉 This PR is included in version 1.1.0 🎉 The release is available on: Your semantic-release bot 📦🚀 |
Changes
1. Git subtree: slack-cli
snomiao/slack-clias git subtree atlib/slack-cli/LazyLock)markdown→section/mrkdwn)2. Subtree sync tooling
scripts/subtree-sync.shfor pulling/pushing all configured subtreessubtree:pullandsubtree:pushnpm scripts3. Slack bot: migrate to Claude Agent SDK
claude-yesprocess spawning with@anthropic-ai/claude-agent-sdk(query()API)sendSlackUpdate()with 10s throttle to avoid Slack rate limits and LLM costmsgs.yaml→inbox.yaml