{"_id":"@dreki-gg/pi-slack","_rev":"6-6ef038ed9030e009352dd342df07d504","name":"@dreki-gg/pi-slack","dist-tags":{"latest":"0.5.1"},"versions":{"0.1.0":{"name":"@dreki-gg/pi-slack","version":"0.1.0","keywords":["pi-package","pi","slack","messages","images"],"author":{"name":"Juan Albarran","email":"jalbarrandev@gmail.com"},"license":"MIT","_id":"@dreki-gg/pi-slack@0.1.0","maintainers":[{"name":"jalbarrang","email":"jalbarrandev@gmail.com"}],"homepage":"https://github.com/dreki-gg/pi-extensions#readme","bugs":{"url":"https://github.com/dreki-gg/pi-extensions/issues"},"pi":{"extensions":["./extensions/slack"]},"dist":{"shasum":"aa3406e39200964e7c76784cdc9c09f25eebc2c0","tarball":"https://registry.npmjs.org/@dreki-gg/pi-slack/-/pi-slack-0.1.0.tgz","fileCount":12,"integrity":"sha512-yyl8NmlZ83Fw9weimeKnaD256Y51yijqyD2uQFCo1EFAjcdEi1zpeWBTODDuw4Q2XRoBby5UsKUiRSurwVXN+A==","signatures":[{"sig":"MEUCIDHSpiFXYO0SIFwbfIvnea4c6BBntL2uhdLlIW/cWyicAiEAvQ+kDZJQYnx4tfh0ZW6zYjmHxLJMIA+LVKontzlx6Nc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":42589},"type":"module","gitHead":"c48ed25bbb6c9b5441dd1fa2184e5b59313f02f0","scripts":{"lint":"oxlint extensions test","test":"bun test","format":"oxfmt --write extensions test","typecheck":"tsc --noEmit","format:check":"oxfmt --check extensions test"},"_npmUser":{"name":"jalbarrang","email":"jalbarrandev@gmail.com"},"repository":{"url":"git+https://github.com/dreki-gg/pi-extensions.git","type":"git","directory":"packages/slack"},"_npmVersion":"11.12.1","description":"Slack read tools for pi — messages, threads, channels, search, and file/image downloads with Effect-powered client","directories":{},"_nodeVersion":"24.12.0","dependencies":{"effect":"^3.16.0","@effect/platform":"^0.78.0"},"_hasShrinkwrap":false,"devDependencies":{"oxfmt":"^0.43.0","oxlint":"^1.58.0","bun-types":"^1.3.14","typescript":"^6.0.0","@types/node":"24"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-slack_0.1.0_1780120982808_0.8863095516013004","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@dreki-gg/pi-slack","version":"0.2.0","keywords":["pi-package","pi","slack","messages","images"],"author":{"name":"Juan Albarran","email":"jalbarrandev@gmail.com"},"license":"MIT","_id":"@dreki-gg/pi-slack@0.2.0","maintainers":[{"name":"jalbarrang","email":"jalbarrandev@gmail.com"}],"homepage":"https://github.com/dreki-gg/pi-extensions#readme","bugs":{"url":"https://github.com/dreki-gg/pi-extensions/issues"},"pi":{"extensions":["./extensions/slack"]},"dist":{"shasum":"697a2ac1a0b848e3d1e1b76492ecfdad862005c4","tarball":"https://registry.npmjs.org/@dreki-gg/pi-slack/-/pi-slack-0.2.0.tgz","fileCount":14,"integrity":"sha512-Nq3Mps6Qf0CC7ioUt7a6DgjCoy8eyDXA8wWkQP0q9O7kwQ3H3qS1aC/wqlLoDX4/gw06eqLnTFy3PkOF7hG+cg==","signatures":[{"sig":"MEUCIQD9gp5sjAz5O8R429xhR7FqsEGx3KzNo31wcumj5ihQwAIgEujoYpyms/ziPr2aFGkbEtOPBEDj3DCAmMUuOpGzsQQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dreki-gg%2fpi-slack@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":48463},"type":"module","gitHead":"8c54503798cd0bf424987855c60d1ed3872f34d2","scripts":{"lint":"oxlint extensions test","test":"bun test","format":"oxfmt --write extensions test","typecheck":"tsc --noEmit","format:check":"oxfmt --check extensions test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f1c5ae97-18ef-4b58-bb46-a915d24de563"}},"repository":{"url":"git+https://github.com/dreki-gg/pi-extensions.git","type":"git","directory":"packages/slack"},"_npmVersion":"11.13.0","description":"Slack read tools for pi — messages, threads, channels, search, and file/image downloads with Effect-powered client","directories":{},"_nodeVersion":"24.16.0","dependencies":{"effect":"^3.16.0","@effect/platform":"^0.78.0"},"_hasShrinkwrap":false,"devDependencies":{"oxfmt":"^0.43.0","oxlint":"^1.58.0","bun-types":"^1.3.14","typescript":"^6.0.0","@types/node":"24"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-slack_0.2.0_1780592162327_0.37719932832284897","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@dreki-gg/pi-slack","version":"0.3.0","keywords":["pi-package","pi","slack","messages","images"],"author":{"name":"Juan Albarran","email":"jalbarrandev@gmail.com"},"license":"MIT","_id":"@dreki-gg/pi-slack@0.3.0","maintainers":[{"name":"jalbarrang","email":"jalbarrandev@gmail.com"}],"homepage":"https://github.com/dreki-gg/pi-extensions#readme","bugs":{"url":"https://github.com/dreki-gg/pi-extensions/issues"},"pi":{"extensions":["./extensions/slack"]},"dist":{"shasum":"1bb25207d373244b7f2949674f91dd2592d822b6","tarball":"https://registry.npmjs.org/@dreki-gg/pi-slack/-/pi-slack-0.3.0.tgz","fileCount":14,"integrity":"sha512-DuQn5WJTa75BN6QnVTfM8Cr4LAsgKGc2unzUnwI5baYxbbx/YDRpVrBXA6sELHHhWMj9uUI5THElMBQcIpLC8w==","signatures":[{"sig":"MEUCIQDVzdJtAPir++8x1jJnQKASflroIBOmyc8oYfYHsHvj0AIgXzn4sMC91QEdqFdVi+bgXNWVqRh9S3gudddQN6oSBvM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dreki-gg%2fpi-slack@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":51596},"type":"module","gitHead":"076e9b861fe41ee0e2f6baceb9d689980bb5b687","scripts":{"lint":"oxlint extensions test","test":"bun test","format":"oxfmt --write extensions test","typecheck":"tsc --noEmit","format:check":"oxfmt --check extensions test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f1c5ae97-18ef-4b58-bb46-a915d24de563"}},"repository":{"url":"git+https://github.com/dreki-gg/pi-extensions.git","type":"git","directory":"packages/slack"},"_npmVersion":"11.13.0","description":"Slack read tools for pi — messages, threads, channels, search, and file/image downloads with Effect-powered client","directories":{},"_nodeVersion":"24.16.0","dependencies":{"effect":"^3.16.0","@effect/platform":"^0.78.0"},"_hasShrinkwrap":false,"devDependencies":{"oxfmt":"^0.43.0","oxlint":"^1.58.0","bun-types":"^1.3.14","typescript":"^6.0.0","@types/node":"24"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-slack_0.3.0_1780631412206_0.5041055282185465","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@dreki-gg/pi-slack","version":"0.4.0","keywords":["pi-package","pi","slack","messages","images"],"author":{"name":"Juan Albarran","email":"jalbarrandev@gmail.com"},"license":"MIT","_id":"@dreki-gg/pi-slack@0.4.0","maintainers":[{"name":"jalbarrang","email":"jalbarrandev@gmail.com"}],"homepage":"https://github.com/dreki-gg/pi-extensions#readme","bugs":{"url":"https://github.com/dreki-gg/pi-extensions/issues"},"pi":{"extensions":["./extensions/slack"]},"dist":{"shasum":"a3c83c7fc99a8f7dbfa40cb890241967cfb22dba","tarball":"https://registry.npmjs.org/@dreki-gg/pi-slack/-/pi-slack-0.4.0.tgz","fileCount":14,"integrity":"sha512-ABJ40SCGvdTZEbivE9B5Q9D7ozSmc6lrzw6r6fiuzxYemIQQ3fMfOa/EKkqADWxtP5ze7SzhPoBf3BtBUhPwjQ==","signatures":[{"sig":"MEYCIQCl3miRgelEMZFiwKklagdycwhGjqgzEUni442j9lik7QIhAMvXHz2MQH9ROl6/plk8Vr9F0V3wvuGhmmrv1Isw7Nns","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dreki-gg%2fpi-slack@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":54435},"type":"module","gitHead":"544b613864670e315b81239643d31027ddaaffdd","scripts":{"lint":"oxlint extensions test","test":"bun test","format":"oxfmt --write extensions test","typecheck":"tsc --noEmit","format:check":"oxfmt --check extensions test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f1c5ae97-18ef-4b58-bb46-a915d24de563"}},"repository":{"url":"git+https://github.com/dreki-gg/pi-extensions.git","type":"git","directory":"packages/slack"},"_npmVersion":"11.13.0","description":"Slack read tools for pi — messages, threads, channels, search, and file/image downloads with Effect-powered client","directories":{},"_nodeVersion":"24.16.0","dependencies":{"effect":"^3.16.0","@effect/platform":"^0.78.0"},"_hasShrinkwrap":false,"devDependencies":{"oxfmt":"^0.43.0","oxlint":"^1.58.0","bun-types":"^1.3.14","typescript":"^6.0.0","@types/node":"24"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-slack_0.4.0_1781628381705_0.3560433184358325","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@dreki-gg/pi-slack","version":"0.5.0","keywords":["pi-package","pi","slack","messages","images"],"author":{"name":"Juan Albarran","email":"jalbarrandev@gmail.com"},"license":"MIT","_id":"@dreki-gg/pi-slack@0.5.0","maintainers":[{"name":"jalbarrang","email":"jalbarrandev@gmail.com"}],"homepage":"https://github.com/jalbarrang/pi-slack#readme","bugs":{"url":"https://github.com/jalbarrang/pi-slack/issues"},"pi":{"extensions":["./extensions/slack"]},"dist":{"shasum":"771fd5738d1211232a674492df9ea200eaf2018d","tarball":"https://registry.npmjs.org/@dreki-gg/pi-slack/-/pi-slack-0.5.0.tgz","fileCount":15,"integrity":"sha512-8uunUZ8sb5IqzoW6vg71aUt/1AeUB23zFy9Pv68+z4UmMvz5YLX1eO+NU9cexxFMSnFeXsGJXQm2+HlKO/9PFg==","signatures":[{"sig":"MEUCIQD0qrQiKZVeneEsxjfLDiyOiAU4ndgdUHRk1e1bp7E6hAIgHB4H7trEWvNqbioSkcDTvth4A9MuMoEwTvKjlUIa2OY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dreki-gg%2fpi-slack@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":55812},"type":"module","gitHead":"3171ef1f6d4babbfd9d514e9f0d4626159947bb6","scripts":{"lint":"oxlint extensions test","test":"bun test","format":"oxfmt --write extensions test","typecheck":"tsc --noEmit","format:check":"oxfmt --check extensions test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0fffaeb1-0934-48ff-972a-b6286dc4557e"}},"repository":{"url":"git+https://github.com/jalbarrang/pi-slack.git","type":"git"},"_npmVersion":"11.16.0","description":"Slack read tools for pi — messages, threads, channels, search, and file/image downloads with Effect-powered client","directories":{},"_nodeVersion":"24.18.0","dependencies":{"effect":"^3.16.0","@effect/platform":"^0.78.0"},"_hasShrinkwrap":false,"devDependencies":{"oxfmt":"^0.43.0","oxlint":"^1.58.0","typebox":"^1.0.55","bun-types":"^1.3.14","typescript":"^6.0.0","@types/node":"24","@earendil-works/pi-coding-agent":"^0.75.4"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-slack_0.5.0_1783788698950_0.9797866930285355","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@dreki-gg/pi-slack","version":"0.5.1","description":"Slack read tools for pi — messages, threads, channels, search, and file/image downloads with Effect-powered client","keywords":["pi-package","pi","slack","messages","images"],"author":{"name":"Juan Albarran","email":"jalbarrandev@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/jalbarrang/pi-slack.git"},"type":"module","scripts":{"typecheck":"tsc --noEmit","test":"bun test","lint":"oxlint extensions test","format":"oxfmt --write extensions test","format:check":"oxfmt --check extensions test"},"pi":{"extensions":["./extensions/slack"]},"dependencies":{"effect":"^3.21.4","@effect/platform":"^0.96.2"},"devDependencies":{"@types/node":"26","bun-types":"^1.3.14","oxfmt":"^0.58.0","oxlint":"^1.73.0","typescript":"^7.0.2","@earendil-works/pi-coding-agent":"^0.80.6","typebox":"^1.3.6"},"peerDependencies":{"@earendil-works/pi-coding-agent":"*","typebox":"*"},"peerDependenciesMeta":{"@earendil-works/pi-coding-agent":{"optional":true},"typebox":{"optional":true}},"publishConfig":{"access":"public"},"gitHead":"4afea66e76cd0c2adf13a214666f55ba1ba1d798","_id":"@dreki-gg/pi-slack@0.5.1","bugs":{"url":"https://github.com/jalbarrang/pi-slack/issues"},"homepage":"https://github.com/jalbarrang/pi-slack#readme","_nodeVersion":"24.18.0","_npmVersion":"11.16.0","dist":{"integrity":"sha512-4ErWZjZU5S6iJNscdiOfdv+WTNETv15USM7FQeCe1gTblC9bPPugw/S4iIg1SbL+G61DkFP0g7tc/UWgIsA+Ow==","shasum":"85e9906e31a80a34067f89a831542bde46e8e430","tarball":"https://registry.npmjs.org/@dreki-gg/pi-slack/-/pi-slack-0.5.1.tgz","fileCount":15,"unpackedSize":56162,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dreki-gg%2fpi-slack@0.5.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQC9iE4ArKY6l7GO9si16MXxztEN09CHgh7skgKpTag1GQIgBot/HaeL0b/vY7Ftqmn94F185LqgfQznMOrggDzlwOk="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0fffaeb1-0934-48ff-972a-b6286dc4557e"}},"directories":{},"maintainers":[{"name":"jalbarrang","email":"jalbarrandev@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pi-slack_0.5.1_1783827377169_0.23883923029732856"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-30T06:03:02.606Z","modified":"2026-07-12T03:36:17.627Z","0.1.0":"2026-05-30T06:03:02.958Z","0.2.0":"2026-06-04T16:56:02.468Z","0.3.0":"2026-06-05T03:50:12.348Z","0.4.0":"2026-06-16T16:46:21.851Z","0.5.0":"2026-07-11T16:51:39.089Z","0.5.1":"2026-07-12T03:36:17.330Z"},"bugs":{"url":"https://github.com/jalbarrang/pi-slack/issues"},"author":{"name":"Juan Albarran","email":"jalbarrandev@gmail.com"},"license":"MIT","homepage":"https://github.com/jalbarrang/pi-slack#readme","keywords":["pi-package","pi","slack","messages","images"],"repository":{"type":"git","url":"git+https://github.com/jalbarrang/pi-slack.git"},"description":"Slack read tools for pi — messages, threads, channels, search, and file/image downloads with Effect-powered client","maintainers":[{"name":"jalbarrang","email":"jalbarrandev@gmail.com"}],"readme":"# @dreki-gg/pi-slack\n\nSlack read tools for [pi](https://github.com/earendil-works/pi-coding-agent) — messages, threads, channels, search, and file/image downloads.\n\nUses [Effect](https://effect.website) for the Slack client layer (typed errors, retries, rate limit handling).\n\n## Tools\n\n| Tool | Description |\n|------|-------------|\n| `slack_list_channels` | List channels the bot has access to |\n| `slack_read_messages` | Read message history from a channel |\n| `slack_read_thread` | Read replies in a thread |\n| `slack_search` | Full-text search across workspace (requires user token) |\n| `slack_download_file` | Download a shared file/image to temp directory |\n| `slack_post_message` | Post a message to a channel or reply in a thread (requires `chat:write`) |\n| `slack_edit_message` | Edit a message the bot previously posted (requires `chat:write`) |\n| `slack_delete_message` | Delete a message the bot previously posted (requires `chat:write`) |\n\n## Setup\n\n### 1. Create a Slack App\n\nGo to [api.slack.com/apps](https://api.slack.com/apps) → **Create New App** → **From scratch**. Give it a name (e.g. `pi-context`) and select your workspace.\n\n### 2. Add OAuth scopes\n\nIn the left sidebar → **OAuth & Permissions** → scroll to **Scopes**.\n\n**Bot Token Scopes** (for `SLACK_BOT_TOKEN`):\n\n| Scope | Enables |\n|-------|---------|\n| `channels:read` | list public channels |\n| `channels:history` | read public channel messages |\n| `groups:read` | list private channels |\n| `groups:history` | read private channel messages |\n| `im:history` | read DMs |\n| `files:read` | file info + image/file downloads |\n\n**User Token Scopes** (for `SLACK_USER_TOKEN` — only needed for `slack_search`):\n\n| Scope | Enables |\n|-------|---------|\n| `search:read` | `slack_search` tool |\n\n> `search.messages` is only available with a **user** token — bots cannot search. Skip the user token entirely if you don't need search.\n\n### 3. Install to workspace\n\nStill on **OAuth & Permissions** → click **Install to Workspace** at the top → authorize. (If your workspace requires admin approval, an admin must approve it.)\n\n### 4. Copy the tokens\n\nAfter installing, the same page shows:\n\n- **Bot User OAuth Token** — starts with `xoxb-` → your `SLACK_BOT_TOKEN`\n- **User OAuth Token** — starts with `xoxp-` → your `SLACK_USER_TOKEN`\n\n```bash\nexport SLACK_BOT_TOKEN=xoxb-...\nexport SLACK_USER_TOKEN=xoxp-...  # Optional, needed for slack_search\n```\n\n### 5. Invite the bot to channels\n\nA bot token can only read channels the bot is **a member of**. In each Slack channel you want the agent to read, type:\n\n```\n/invite @your-app-name\n```\n\nOtherwise `slack_read_messages` returns `not_in_channel`.\n\n### 6. Optional project config\n\nCreate `.pi/slack.json` in your project to set a default channel and message limit:\n\n```json\n{\n  \"defaultChannel\": \"C0123ABC456\",\n  \"messageLimit\": 50\n}\n```\n\n## Finding channel IDs\n\nOpen a channel in Slack → click the channel name → scroll to the bottom of the popup; the ID (`C0123ABC456`) is shown there. Or run `slack_list_channels` once the bot is installed to list channels with their IDs.\n\n## Checking status\n\nRun `/slack` in pi to see token detection and project config status.\n\n## Install\n\n```bash\npi install @dreki-gg/pi-slack\n```\n","readmeFilename":"README.md"}