@cursor/july 0.1.93 → 0.1.94
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +8 -20
- package/README.md +4 -26
- package/dist/channels/slack/attachments.js +2 -2
- package/dist/channels/slack/dispatch.d.ts +0 -7
- package/dist/channels/slack/dispatch.d.ts.map +1 -1
- package/dist/channels/slack/dispatch.js +4 -7
- package/dist/channels/slack/eval-directive.d.ts +5 -12
- package/dist/channels/slack/eval-directive.d.ts.map +1 -1
- package/dist/channels/slack/eval-directive.js +8 -19
- package/dist/channels/slack/index.d.ts +0 -6
- package/dist/channels/slack/index.d.ts.map +1 -1
- package/dist/channels/slack/index.js +0 -6
- package/dist/channels/slack/setup.d.ts +4 -4
- package/dist/channels/slack/setup.d.ts.map +1 -1
- package/dist/channels/slack/setup.js +8 -15
- package/dist/channels/slack/slack-channel.d.ts +6 -13
- package/dist/channels/slack/slack-channel.d.ts.map +1 -1
- package/dist/channels/slack/slack-channel.js +15 -101
- package/dist/channels/slack/types.d.ts +12 -79
- package/dist/channels/slack/types.d.ts.map +1 -1
- package/dist/channels/slack/types.js +1 -15
- package/dist/client.d.ts +14 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +12 -0
- package/dist/connections.d.ts +18 -9
- package/dist/connections.d.ts.map +1 -1
- package/dist/connections.js +17 -8
- package/dist/docs/404.html +2 -2
- package/dist/docs/ab.html +4 -4
- package/dist/docs/assets/{app.CjWU-x0z.js → app.CFDEas4I.js} +1 -1
- package/dist/docs/assets/chunks/@localSearchIndexroot.DU3U2Ij2.js +1 -0
- package/dist/docs/assets/chunks/{VPLocalSearchBox.Cxy8ySFQ.js → VPLocalSearchBox.B1IIYpYS.js} +1 -1
- package/dist/docs/assets/chunks/{theme.Dvq1Bktu.js → theme.Ct4NSiLm.js} +2 -2
- package/dist/docs/assets/concepts.md.lwAgBIMI.js +1 -0
- package/dist/docs/assets/{deployment.md.DoLFAzfm.js → deployment.md.D9msOFOW.js} +3 -8
- package/dist/docs/assets/{deployment.md.DoLFAzfm.lean.js → deployment.md.D9msOFOW.lean.js} +1 -1
- package/dist/docs/assets/{guides_agent-to-agent.md.B3JIaAqz.js → guides_agent-to-agent.md.BDb0t1QV.js} +1 -1
- package/dist/docs/assets/guides_cloud-runtime.md.CkYbjnAX.js +9 -0
- package/dist/docs/assets/guides_cloud-runtime.md.CkYbjnAX.lean.js +1 -0
- package/dist/docs/assets/{guides_convert-automation.md.Bboisykk.js → guides_convert-automation.md.B4sjlodG.js} +1 -1
- package/dist/docs/assets/{guides_github.md.DqJhuaN1.js → guides_github.md.Cnh2mL4a.js} +1 -1
- package/dist/docs/assets/{guides_mcp-oauth.md.CJvrXtkN.js → guides_mcp-oauth.md.DPYmBCbV.js} +7 -9
- package/dist/docs/assets/{guides_mcp-oauth.md.CJvrXtkN.lean.js → guides_mcp-oauth.md.DPYmBCbV.lean.js} +1 -1
- package/dist/docs/assets/{guides_slack.md.mqeNKs84.js → guides_slack.md.C32HsdKk.js} +5 -11
- package/dist/docs/assets/guides_slack.md.C32HsdKk.lean.js +1 -0
- package/dist/docs/assets/index.md.DRakGHFe.js +5 -0
- package/dist/docs/assets/{index.md.B-lVR4wT.lean.js → index.md.DRakGHFe.lean.js} +1 -1
- package/dist/docs/assets/{quickstart.md.BrmfrrIr.js → quickstart.md.Nj_LjW_a.js} +1 -1
- package/dist/docs/assets/{reference_cli.md.D9KESDsD.js → reference_cli.md.Cw6_ICYG.js} +1 -1
- package/dist/docs/assets/{reference_connections.md.DB6SsN6U.js → reference_connections.md.BH8Oc0D0.js} +5 -5
- package/dist/docs/assets/{reference_connections.md.DB6SsN6U.lean.js → reference_connections.md.BH8Oc0D0.lean.js} +1 -1
- package/dist/docs/assets/{reference_hooks.md.BxN87gCw.js → reference_hooks.md.a8BJxMR5.js} +1 -1
- package/dist/docs/assets/reference_http-api.md.D89k1mdm.js +11 -0
- package/dist/docs/assets/reference_http-api.md.D89k1mdm.lean.js +1 -0
- package/dist/docs/assets/reference_project-layout.md.Bv4KOtlB.js +19 -0
- package/dist/docs/assets/{reference_skills.md.BFW9retM.js → reference_skills.md.8son6Hjm.js} +3 -3
- package/dist/docs/assets/{reference_subagents.md.Xoav0AII.js → reference_subagents.md.CfsIloPm.js} +1 -1
- package/dist/docs/assets/{reference_tools.md.DuKvkYWG.js → reference_tools.md.BHeXn2id.js} +3 -3
- package/dist/docs/assets/{reference_tools.md.DuKvkYWG.lean.js → reference_tools.md.BHeXn2id.lean.js} +1 -1
- package/dist/docs/assets/{templates_pr-autofixer.md.R4K_qytS.js → templates_pr-autofixer.md.DU7dQpor.js} +2 -2
- package/dist/docs/assets/{templates_pr-autofixer.md.R4K_qytS.lean.js → templates_pr-autofixer.md.DU7dQpor.lean.js} +1 -1
- package/dist/docs/assets/{templates_security-reviewer.md.ByFyRta2.js → templates_security-reviewer.md.CTa7u_l1.js} +2 -2
- package/dist/docs/assets/{templates_security-reviewer.md.ByFyRta2.lean.js → templates_security-reviewer.md.CTa7u_l1.lean.js} +1 -1
- package/dist/docs/assets/troubleshooting.md.Ctv3T8C2.js +1 -0
- package/dist/docs/building-with-agents.html +4 -4
- package/dist/docs/concepts.html +5 -5
- package/dist/docs/concepts.md +1 -0
- package/dist/docs/deployment.html +7 -12
- package/dist/docs/deployment.md +1 -20
- package/dist/docs/design/agsh.md +406 -0
- package/dist/docs/evals.html +4 -4
- package/dist/docs/guides/agent-to-agent.html +6 -6
- package/dist/docs/guides/agent-to-agent.md +2 -2
- package/dist/docs/guides/cloud-runtime.html +6 -6
- package/dist/docs/guides/cloud-runtime.md +1 -0
- package/dist/docs/guides/convert-automation.html +6 -6
- package/dist/docs/guides/convert-automation.md +1 -1
- package/dist/docs/guides/github.html +6 -6
- package/dist/docs/guides/github.md +4 -4
- package/dist/docs/guides/human-in-the-loop.html +4 -4
- package/dist/docs/guides/mcp-oauth.html +11 -13
- package/dist/docs/guides/mcp-oauth.md +10 -18
- package/dist/docs/guides/opentelemetry.html +5 -5
- package/dist/docs/guides/slack.html +9 -15
- package/dist/docs/guides/slack.md +9 -46
- package/dist/docs/guides/webhooks.html +4 -4
- package/dist/docs/hashmap.json +1 -1
- package/dist/docs/hillclimbing.html +4 -4
- package/dist/docs/index.html +6 -6
- package/dist/docs/index.md +0 -28
- package/dist/docs/llms-full.txt +712 -2830
- package/dist/docs/llms.txt +2 -16
- package/dist/docs/quickstart.html +6 -6
- package/dist/docs/quickstart.md +2 -3
- package/dist/docs/reference/agent-config.html +4 -4
- package/dist/docs/reference/artifacts.html +4 -4
- package/dist/docs/reference/channels.html +4 -4
- package/dist/docs/reference/cli.html +6 -6
- package/dist/docs/reference/cli.md +2 -1
- package/dist/docs/reference/connections.html +9 -9
- package/dist/docs/reference/connections.md +15 -11
- package/dist/docs/reference/hooks.html +6 -6
- package/dist/docs/reference/hooks.md +2 -3
- package/dist/docs/reference/http-api.html +6 -6
- package/dist/docs/reference/http-api.md +8 -0
- package/dist/docs/reference/instructions.html +4 -4
- package/dist/docs/reference/playground.html +4 -4
- package/dist/docs/reference/project-layout.html +8 -6
- package/dist/docs/reference/project-layout.md +5 -1
- package/dist/docs/reference/prompt.html +4 -4
- package/dist/docs/reference/schedules.html +4 -4
- package/dist/docs/reference/sessions.html +4 -4
- package/dist/docs/reference/skills.html +7 -7
- package/dist/docs/reference/subagents.html +6 -6
- package/dist/docs/reference/subagents.md +2 -2
- package/dist/docs/reference/tools.html +7 -7
- package/dist/docs/reference/tools.md +19 -3
- package/dist/docs/scaffolding-agents.html +4 -4
- package/dist/docs/storage.html +4 -4
- package/dist/docs/templates/agentic-owners.html +4 -4
- package/dist/docs/templates/demo.html +4 -4
- package/dist/docs/templates/pr-autofixer.html +6 -6
- package/dist/docs/templates/pr-autofixer.md +4 -3
- package/dist/docs/templates/security-reviewer.html +5 -5
- package/dist/docs/templates/security-reviewer.md +2 -3
- package/dist/docs/templates/triage.html +4 -4
- package/dist/docs/troubleshooting.html +5 -5
- package/dist/docs/troubleshooting.md +2 -2
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/internal/advertise-tools.d.ts +11 -0
- package/dist/internal/advertise-tools.d.ts.map +1 -1
- package/dist/internal/advertise-tools.js +47 -9
- package/dist/internal/cli-mcp-oauth.d.ts.map +1 -1
- package/dist/internal/cli-mcp-oauth.js +7 -4
- package/dist/internal/convert-automation/convert-workflow.d.ts.map +1 -1
- package/dist/internal/convert-automation/convert-workflow.js +26 -15
- package/dist/internal/convert-automation/slug.d.ts +0 -2
- package/dist/internal/convert-automation/slug.d.ts.map +1 -1
- package/dist/internal/convert-automation/slug.js +0 -8
- package/dist/internal/cursor/account-mcp.d.ts.map +1 -1
- package/dist/internal/cursor/account-mcp.js +5 -1
- package/dist/internal/discovery.d.ts.map +1 -1
- package/dist/internal/discovery.js +88 -13
- package/dist/internal/hosted-delivery.d.ts.map +1 -1
- package/dist/internal/hosted-delivery.js +22 -9
- package/dist/internal/mcp-endpoint.js +3 -3
- package/dist/internal/mcp-host.d.ts +8 -7
- package/dist/internal/mcp-host.d.ts.map +1 -1
- package/dist/internal/mcp-host.js +8 -7
- package/dist/internal/peer-connections.d.ts.map +1 -1
- package/dist/internal/peer-connections.js +5 -1
- package/dist/internal/playground/static.d.ts +0 -3
- package/dist/internal/playground/static.d.ts.map +1 -1
- package/dist/internal/resolved-connections.d.ts.map +1 -1
- package/dist/internal/resolved-connections.js +5 -7
- package/dist/internal/server.d.ts.map +1 -1
- package/dist/internal/server.js +113 -172
- package/dist/internal/session-engine.d.ts +45 -10
- package/dist/internal/session-engine.d.ts.map +1 -1
- package/dist/internal/session-engine.js +208 -65
- package/dist/internal/tool-catalog.d.ts +31 -0
- package/dist/internal/tool-catalog.d.ts.map +1 -0
- package/dist/internal/tool-catalog.js +67 -0
- package/dist/playground/assets/{index-D9MFzhNE.js → index-B3JCyigB.js} +1 -1
- package/dist/playground/index.html +1 -1
- package/dist/types.d.ts +72 -23
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +19 -0
- package/docs/README.md +0 -28
- package/docs/concepts.md +1 -0
- package/docs/deployment.md +1 -20
- package/docs/design/agsh.md +406 -0
- package/docs/guides/agent-to-agent.md +2 -2
- package/docs/guides/cloud-runtime.md +1 -0
- package/docs/guides/convert-automation.md +1 -1
- package/docs/guides/github.md +4 -4
- package/docs/guides/mcp-oauth.md +10 -18
- package/docs/guides/slack.md +10 -47
- package/docs/quickstart.md +2 -3
- package/docs/reference/cli.md +2 -1
- package/docs/reference/connections.md +15 -11
- package/docs/reference/hooks.md +2 -3
- package/docs/reference/http-api.md +8 -0
- package/docs/reference/project-layout.md +5 -1
- package/docs/reference/subagents.md +2 -2
- package/docs/reference/tools.md +19 -3
- package/docs/templates/pr-autofixer.md +4 -3
- package/docs/templates/security-reviewer.md +2 -3
- package/docs/troubleshooting.md +2 -2
- package/package.json +9 -2
- package/skills/create-agent/SKILL.md +6 -13
- package/skills/debug/SKILL.md +2 -4
- package/skills/evals/SKILL.md +1 -1
- package/skills/framework-map/SKILL.md +3 -2
- package/skills/mcp-auth/SKILL.md +10 -13
- package/skills/setup-slack/SKILL.md +21 -137
- package/src/channels/slack/attachments.ts +2 -2
- package/src/channels/slack/dispatch.ts +2 -16
- package/src/channels/slack/eval-directive.ts +8 -27
- package/src/channels/slack/index.ts +0 -6
- package/src/channels/slack/setup.ts +8 -15
- package/src/channels/slack/slack-channel.ts +14 -125
- package/src/channels/slack/types.ts +12 -96
- package/src/client.ts +23 -0
- package/src/connections.ts +20 -7
- package/src/index.ts +2 -0
- package/src/internal/advertise-tools.ts +45 -7
- package/src/internal/cli-mcp-oauth.ts +6 -4
- package/src/internal/convert-automation/convert-workflow.ts +29 -17
- package/src/internal/convert-automation/slug.ts +0 -9
- package/src/internal/cursor/account-mcp.ts +4 -1
- package/src/internal/discovery.ts +104 -13
- package/src/internal/fixtures/units-server.ts +52 -0
- package/src/internal/hosted-delivery.ts +60 -28
- package/src/internal/mcp-endpoint.ts +3 -3
- package/src/internal/mcp-host.ts +8 -7
- package/src/internal/peer-connections.ts +4 -1
- package/src/internal/playground/static.ts +1 -3
- package/src/internal/resolved-connections.ts +8 -10
- package/src/internal/server.ts +151 -251
- package/src/internal/session-engine.ts +254 -69
- package/src/internal/tool-catalog.ts +106 -0
- package/src/types.ts +90 -23
- package/templates/pr-autofixer/agent/channels/slack.ts +8 -2
- package/templates/triage/README.md +2 -1
- package/templates/triage/overlays/jira/agent/mcp-connections/tracker.ts +0 -1
- package/templates/triage/overlays/linear/agent/mcp-connections/tracker.ts +0 -1
- package/dist/channels/slack/cursor-account.d.ts +0 -87
- package/dist/channels/slack/cursor-account.d.ts.map +0 -1
- package/dist/channels/slack/cursor-account.js +0 -100
- package/dist/docs/assets/chunks/@localSearchIndexroot.ChpIC3Zy.js +0 -1
- package/dist/docs/assets/concepts.md.F6AiPorA.js +0 -1
- package/dist/docs/assets/example-agents_approval-buddy.md.DmezILPg.js +0 -10
- package/dist/docs/assets/example-agents_approval-buddy.md.DmezILPg.lean.js +0 -1
- package/dist/docs/assets/example-agents_benny.md.B0kwY7D_.js +0 -5
- package/dist/docs/assets/example-agents_benny.md.B0kwY7D_.lean.js +0 -1
- package/dist/docs/assets/example-agents_bugbot.md.BRGMi9O2.js +0 -11
- package/dist/docs/assets/example-agents_bugbot.md.BRGMi9O2.lean.js +0 -1
- package/dist/docs/assets/example-agents_codebase-wiki.md.BBNw9Ekr.js +0 -8
- package/dist/docs/assets/example-agents_codebase-wiki.md.BBNw9Ekr.lean.js +0 -1
- package/dist/docs/assets/example-agents_codeowners-review.md.Bfta-lBU.js +0 -8
- package/dist/docs/assets/example-agents_codeowners-review.md.Bfta-lBU.lean.js +0 -1
- package/dist/docs/assets/example-agents_concierge.md.BzB2b20R.js +0 -22
- package/dist/docs/assets/example-agents_concierge.md.BzB2b20R.lean.js +0 -1
- package/dist/docs/assets/example-agents_index.md.ChBp0AX6.js +0 -2
- package/dist/docs/assets/example-agents_index.md.ChBp0AX6.lean.js +0 -1
- package/dist/docs/assets/example-agents_knowledge-base.md.CrA85ig-.js +0 -11
- package/dist/docs/assets/example-agents_knowledge-base.md.CrA85ig-.lean.js +0 -1
- package/dist/docs/assets/example-agents_oncall.md.DK4XkYTd.js +0 -10
- package/dist/docs/assets/example-agents_oncall.md.DK4XkYTd.lean.js +0 -1
- package/dist/docs/assets/example-agents_security-reviewer.md.74pPpWYj.js +0 -19
- package/dist/docs/assets/example-agents_security-reviewer.md.74pPpWYj.lean.js +0 -1
- package/dist/docs/assets/example-agents_slack-agent.md.D7Kdj5BV.js +0 -5
- package/dist/docs/assets/example-agents_slack-agent.md.D7Kdj5BV.lean.js +0 -1
- package/dist/docs/assets/example-agents_weather-agent.md.CaGpmw3Y.js +0 -25
- package/dist/docs/assets/example-agents_weather-agent.md.CaGpmw3Y.lean.js +0 -1
- package/dist/docs/assets/guides_cloud-runtime.md.BnvjPiia.js +0 -9
- package/dist/docs/assets/guides_cloud-runtime.md.BnvjPiia.lean.js +0 -1
- package/dist/docs/assets/guides_slack.md.mqeNKs84.lean.js +0 -1
- package/dist/docs/assets/index.md.B-lVR4wT.js +0 -5
- package/dist/docs/assets/reference_http-api.md.C68BERYr.js +0 -11
- package/dist/docs/assets/reference_http-api.md.C68BERYr.lean.js +0 -1
- package/dist/docs/assets/reference_project-layout.md.WN9nwJht.js +0 -17
- package/dist/docs/assets/troubleshooting.md.vCWwvqcJ.js +0 -1
- package/dist/docs/example-agents/approval-buddy.html +0 -36
- package/dist/docs/example-agents/approval-buddy.md +0 -266
- package/dist/docs/example-agents/benny.html +0 -31
- package/dist/docs/example-agents/benny.md +0 -173
- package/dist/docs/example-agents/bugbot.html +0 -37
- package/dist/docs/example-agents/bugbot.md +0 -229
- package/dist/docs/example-agents/codebase-wiki.html +0 -34
- package/dist/docs/example-agents/codebase-wiki.md +0 -167
- package/dist/docs/example-agents/codeowners-review.html +0 -34
- package/dist/docs/example-agents/codeowners-review.md +0 -192
- package/dist/docs/example-agents/concierge.html +0 -48
- package/dist/docs/example-agents/concierge.md +0 -200
- package/dist/docs/example-agents/index.html +0 -28
- package/dist/docs/example-agents/index.md +0 -99
- package/dist/docs/example-agents/knowledge-base.html +0 -37
- package/dist/docs/example-agents/knowledge-base.md +0 -168
- package/dist/docs/example-agents/oncall.html +0 -36
- package/dist/docs/example-agents/oncall.md +0 -212
- package/dist/docs/example-agents/security-reviewer.html +0 -45
- package/dist/docs/example-agents/security-reviewer.md +0 -265
- package/dist/docs/example-agents/slack-agent.html +0 -31
- package/dist/docs/example-agents/slack-agent.md +0 -142
- package/dist/docs/example-agents/weather-agent.html +0 -51
- package/dist/docs/example-agents/weather-agent.md +0 -297
- package/dist/internal/cursor-slack-relay.d.ts +0 -96
- package/dist/internal/cursor-slack-relay.d.ts.map +0 -1
- package/dist/internal/cursor-slack-relay.js +0 -176
- package/docs/example-agents/approval-buddy.md +0 -271
- package/docs/example-agents/benny.md +0 -178
- package/docs/example-agents/bugbot.md +0 -234
- package/docs/example-agents/codebase-wiki.md +0 -172
- package/docs/example-agents/codeowners-review.md +0 -197
- package/docs/example-agents/concierge.md +0 -205
- package/docs/example-agents/index.md +0 -104
- package/docs/example-agents/knowledge-base.md +0 -173
- package/docs/example-agents/oncall.md +0 -217
- package/docs/example-agents/security-reviewer.md +0 -270
- package/docs/example-agents/slack-agent.md +0 -147
- package/docs/example-agents/weather-agent.md +0 -302
- package/src/channels/slack/cursor-account.ts +0 -202
- package/src/internal/cursor-slack-relay.ts +0 -249
- /package/dist/docs/assets/{concepts.md.F6AiPorA.lean.js → concepts.md.lwAgBIMI.lean.js} +0 -0
- /package/dist/docs/assets/{guides_agent-to-agent.md.B3JIaAqz.lean.js → guides_agent-to-agent.md.BDb0t1QV.lean.js} +0 -0
- /package/dist/docs/assets/{guides_convert-automation.md.Bboisykk.lean.js → guides_convert-automation.md.B4sjlodG.lean.js} +0 -0
- /package/dist/docs/assets/{guides_github.md.DqJhuaN1.lean.js → guides_github.md.Cnh2mL4a.lean.js} +0 -0
- /package/dist/docs/assets/{quickstart.md.BrmfrrIr.lean.js → quickstart.md.Nj_LjW_a.lean.js} +0 -0
- /package/dist/docs/assets/{reference_cli.md.D9KESDsD.lean.js → reference_cli.md.Cw6_ICYG.lean.js} +0 -0
- /package/dist/docs/assets/{reference_hooks.md.BxN87gCw.lean.js → reference_hooks.md.a8BJxMR5.lean.js} +0 -0
- /package/dist/docs/assets/{reference_project-layout.md.WN9nwJht.lean.js → reference_project-layout.md.Bv4KOtlB.lean.js} +0 -0
- /package/dist/docs/assets/{reference_skills.md.BFW9retM.lean.js → reference_skills.md.8son6Hjm.lean.js} +0 -0
- /package/dist/docs/assets/{reference_subagents.md.Xoav0AII.lean.js → reference_subagents.md.CfsIloPm.lean.js} +0 -0
- /package/dist/docs/assets/{troubleshooting.md.vCWwvqcJ.lean.js → troubleshooting.md.Ctv3T8C2.lean.js} +0 -0
package/AGENTS.md
CHANGED
|
@@ -47,7 +47,7 @@ are no `.cursor/skills/` stubs for authoring.
|
|
|
47
47
|
| `skills/hillclimb/SKILL.md` | Improving an existing agent measurably |
|
|
48
48
|
| `skills/github/SKILL.md` | GitHub webhook agents; replay / forward / fixtures / cursor-events |
|
|
49
49
|
| `skills/setup-slack/SKILL.md` | Slack wiring and Slack tool approvals |
|
|
50
|
-
| `skills/mcp-auth/SKILL.md` | Host MCP OAuth (`mcp oauth`, `--store`, `advertiseTools`, `
|
|
50
|
+
| `skills/mcp-auth/SKILL.md` | Host MCP OAuth (`mcp oauth`, `--store`, `advertiseTools`, `host-connections/`) |
|
|
51
51
|
| `skills/debug/SKILL.md` | Something misbehaving locally (symptom → cause) |
|
|
52
52
|
| `skills/operate/SKILL.md` | Dogfood host, corp ECS, hosted-platform map |
|
|
53
53
|
|
|
@@ -203,18 +203,9 @@ agent-serve chat --url http://127.0.0.1:3000/concierge --message "Weather in Par
|
|
|
203
203
|
|
|
204
204
|
## Slack channel
|
|
205
205
|
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
in Slack; thread replies stay with that agent. `agentName` must be a
|
|
210
|
-
**single token** (no whitespace) — prefer PascalCase (`ApprovalBuddy`);
|
|
211
|
-
multi-word names fail typecheck for string literals and throw at
|
|
212
|
-
construction / serve time. Import from
|
|
213
|
-
`@cursor/july/channels/slack`.
|
|
214
|
-
|
|
215
|
-
Dedicated Socket Mode apps (no public Request URL) live in a second
|
|
216
|
-
channel file when you need channel watching, approval buttons, or a
|
|
217
|
-
distinct bot handle:
|
|
206
|
+
`slackChannel()` is a dedicated Socket Mode Slack app (no public Request
|
|
207
|
+
URL). Import from `@cursor/july/channels/slack`. Mint the app with
|
|
208
|
+
`agent-serve slack create`; mention the bot (or DM it) in Slack.
|
|
218
209
|
|
|
219
210
|
```bash
|
|
220
211
|
agent-serve slack setup
|
|
@@ -225,19 +216,16 @@ agent-serve slack doctor --prefix MY_AGENT
|
|
|
225
216
|
agent-serve dev ./my-agent
|
|
226
217
|
```
|
|
227
218
|
|
|
228
|
-
Multi-agent
|
|
219
|
+
Multi-agent serve needs **one Slack app (and token pair) per agent**:
|
|
229
220
|
`<PREFIX>_SLACK_BOT_TOKEN` + `<PREFIX>_SLACK_APP_TOKEN`. Missing tokens leave
|
|
230
221
|
that channel idle instead of failing `serve`. Single-agent setups can use the
|
|
231
222
|
shared `SLACK_*` vars (`slackChannel()` / `slack create --no-prefix`).
|
|
232
223
|
|
|
233
|
-
Channel watching
|
|
234
|
-
|
|
235
|
-
cursorAccount (the Cursor connection does not relay Block Kit clicks); use a
|
|
236
|
-
dedicated Slack app for Approve/Deny.
|
|
224
|
+
Channel watching is `engagement.channelPosts`. Tool approvals are
|
|
225
|
+
`toolApprovals` / `interactivity`.
|
|
237
226
|
|
|
238
227
|
Defaults ON: chat streaming, thinking steps, suggested prompts (graceful
|
|
239
|
-
fallback when APIs missing
|
|
240
|
-
skill: `skills/setup-slack/SKILL.md`.
|
|
228
|
+
fallback when APIs missing). Guided skill: `skills/setup-slack/SKILL.md`.
|
|
241
229
|
|
|
242
230
|
## Playground UI (Vite + React)
|
|
243
231
|
|
package/README.md
CHANGED
|
@@ -851,10 +851,6 @@ export default slackChannel();
|
|
|
851
851
|
// Multi-agent serve: one Slack app (and token pair) per agent
|
|
852
852
|
export default slackChannel({ envPrefix: "WEATHER_AGENT" });
|
|
853
853
|
// → WEATHER_AGENT_SLACK_BOT_TOKEN + WEATHER_AGENT_SLACK_APP_TOKEN
|
|
854
|
-
|
|
855
|
-
// Cursor account connection: no dedicated Slack app. `@Cursor Weatherbot …`
|
|
856
|
-
// routes here; replies post as "Weatherbot" through the Cursor Slack app.
|
|
857
|
-
export default slackChannel({ cursorAccount: true, agentName: "Weatherbot" });
|
|
858
854
|
```
|
|
859
855
|
|
|
860
856
|
Transport uses `@slack/socket-mode` + `@slack/web-api`. Socket Mode starts
|
|
@@ -910,28 +906,10 @@ Approve/Deny cards and routes Socket Mode `interactive` clicks to
|
|
|
910
906
|
**separate Slack apps**. Requires `SLACK_BOT_TOKEN` + `SLACK_APP_TOKEN`
|
|
911
907
|
(App-Level Token with `connections:write`).
|
|
912
908
|
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
for chat. Agents that need channel watch or tool approvals keep a Socket
|
|
918
|
-
Mode app in a second channel file (e.g. `slack-app.ts`) with their own env
|
|
919
|
-
prefix (`<PREFIX>_SLACK_BOT_TOKEN` + `<PREFIX>_SLACK_APP_TOKEN`, derived
|
|
920
|
-
from the directory name by `slack create`).
|
|
921
|
-
|
|
922
|
-
| Agent | `@Cursor` name | Optional Socket Mode app |
|
|
923
|
-
| --- | --- | --- |
|
|
924
|
-
| `weather-agent` | Weather | `slack-app.ts` (`WEATHER_AGENT_SLACK_*`, tool approvals) |
|
|
925
|
-
| `slack-agent` | SlackAgent | - |
|
|
926
|
-
| `bugbot` | Bugbot | - |
|
|
927
|
-
| `fsd` | FSD | - |
|
|
928
|
-
| `benny` | Benny | `slack-app.ts` (`BENNY_SLACK_*`, channel watch) |
|
|
929
|
-
| `approval-buddy` | ApprovalBuddy | - |
|
|
930
|
-
|
|
931
|
-
PR-oriented demos (`bugbot`, `fsd`) extract a GitHub PR URL / `owner/repo#N`
|
|
932
|
-
from the mention and run the same host path as their HTTP channels.
|
|
933
|
-
`security-reviewer` is GitHub-task-only (no Slack channel); `concierge` is
|
|
934
|
-
agent-to-agent only (no Slack channel).
|
|
909
|
+
`agent-sdk slack create` mints one dedicated bot and writes
|
|
910
|
+
`<DIR>_SLACK_*` plus `envPrefix` from the directory name. Keep the
|
|
911
|
+
channel file as `slack-app.ts` when the same app should carry tool
|
|
912
|
+
approvals or channel watch.
|
|
935
913
|
|
|
936
914
|
For Socket Mode apps (channel watch / approvals), run
|
|
937
915
|
`agent-sdk slack create`. It opens the dashboard wizard, creates and
|
|
@@ -304,8 +304,8 @@ function isTextLikeBytes(args) {
|
|
|
304
304
|
function downloadSlackFileBytes(args) {
|
|
305
305
|
return __awaiter(this, void 0, void 0, function* () {
|
|
306
306
|
var _a, _b, _c;
|
|
307
|
-
//
|
|
308
|
-
//
|
|
307
|
+
// Transport callers cannot mint a Bearer for files.slack.com; they
|
|
308
|
+
// must pre-attach `dataBase64` on the file ref instead.
|
|
309
309
|
if (isSlackApiTransport(args.botToken)) {
|
|
310
310
|
return null;
|
|
311
311
|
}
|
|
@@ -46,8 +46,6 @@ export interface SlackInboundDispatchDeps extends SlackContinuationProbes {
|
|
|
46
46
|
* `host.evals` is present.
|
|
47
47
|
*/
|
|
48
48
|
evalCommandsEnabled?: boolean;
|
|
49
|
-
/** cursorAccount agent name stripped before `eval` directive parsing. */
|
|
50
|
-
cursorAgentName?: string;
|
|
51
49
|
/**
|
|
52
50
|
* Drop external senders before the handler. Defaults to `true`; pass
|
|
53
51
|
* `false` to admit them (or when an upstream gate already refused them).
|
|
@@ -71,11 +69,6 @@ export declare function dispatchInboundMessage(args: {
|
|
|
71
69
|
evalCommandsEnabled?: boolean;
|
|
72
70
|
/** See {@link SlackInboundDispatchDeps.followUpStatus}. Defaults to `true`. */
|
|
73
71
|
followUpStatus?: boolean;
|
|
74
|
-
/**
|
|
75
|
-
* cursorAccount agent display name — stripped before parsing `eval …`
|
|
76
|
-
* (`OncallBuddy eval list`).
|
|
77
|
-
*/
|
|
78
|
-
cursorAgentName?: string;
|
|
79
72
|
blockExternals?: boolean;
|
|
80
73
|
continuation?: ContinuationIdentity;
|
|
81
74
|
}): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatch.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/dispatch.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,KAAK,oBAAoB,EAI1B,MAAM,yCAAyC,CAAC;AAEjD,OAAO,KAAK,EACV,YAAY,EACZ,WAAW,EAEX,aAAa,EACd,MAAM,gBAAgB,CAAC;AAQxB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAK7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAS1D,OAAO,EAAmB,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AAM1D,OAAO,KAAK,EAEV,iBAAiB,EACjB,uBAAuB,EACvB,gBAAgB,EAEhB,YAAY,EACZ,mBAAmB,EACpB,MAAM,YAAY,CAAC;AAqDpB,uCAAuC;AACvC,wBAAgB,sBAAsB,CACpC,KAAK,GAAE,OAAO,CAAC,iBAAiB,CAAM,GACrC,iBAAiB,CAiBnB;AAED,MAAM,WAAW,wBAAyB,SAAQ,uBAAuB;IACvE,IAAI,EAAE,aAAa,CAAC;IACpB,YAAY,CAAC,EAAE,oBAAoB,CAAC;IACpC,SAAS,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;IAC/C,YAAY,EAAE,mBAAmB,CAAC;IAClC,eAAe,EAAE,mBAAmB,CAAC;IACrC,eAAe,CAAC,EAAE,mBAAmB,CAAC;IACtC,WAAW,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAC1C,QAAQ,EAAE,aAAa,CAAC;IACxB,IAAI,EAAE,WAAW,CAAC;IAClB,6EAA6E;IAC7E,SAAS,EAAE,YAAY,CAAC;IACxB,GAAG,CAAC,EAAE,QAAQ,CAAC;IACf,qDAAqD;IACrD,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,uDAAuD;IACvD,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,gEAAgE;IAChE,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC;;;OAGG;IACH,cAAc,CAAC,EAAE,mBAAmB,CAAC;IACrC;;;;;OAKG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B
|
|
1
|
+
{"version":3,"file":"dispatch.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/dispatch.ts"],"names":[],"mappings":"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"}
|
|
@@ -166,11 +166,8 @@ export function dispatchInboundMessage(args) {
|
|
|
166
166
|
}
|
|
167
167
|
// Built-in eval directive: run playground batches without an agent turn.
|
|
168
168
|
const evalCommandsEnabled = args.evalCommandsEnabled !== false;
|
|
169
|
-
const evalParseOptions = args.cursorAgentName === undefined || args.cursorAgentName === ""
|
|
170
|
-
? undefined
|
|
171
|
-
: { agentName: args.cursorAgentName };
|
|
172
169
|
const evalDirective = evalCommandsEnabled && args.host.evals !== undefined
|
|
173
|
-
? ((_w = parseSlackEvalDirective(message.text
|
|
170
|
+
? ((_w = parseSlackEvalDirective(message.text)) !== null && _w !== void 0 ? _w : parseSlackEvalDirective(message.markdown))
|
|
174
171
|
: null;
|
|
175
172
|
if (evalDirective !== null && args.host.evals !== undefined) {
|
|
176
173
|
log.info("eval directive", {
|
|
@@ -404,7 +401,7 @@ export function dispatchInboundFromEventBody(body, deps) {
|
|
|
404
401
|
return false;
|
|
405
402
|
}
|
|
406
403
|
}
|
|
407
|
-
deps.waitUntil(dispatchInboundMessage(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ kind: "app_mention", message: mention, handler: deps.onAppMention, send: deps.send, credentials: deps.credentials, host: deps.host, artifacts: deps.artifacts, log, evalCommandsEnabled: deps.evalCommandsEnabled,
|
|
404
|
+
deps.waitUntil(dispatchInboundMessage(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ kind: "app_mention", message: mention, handler: deps.onAppMention, send: deps.send, credentials: deps.credentials, host: deps.host, artifacts: deps.artifacts, log, evalCommandsEnabled: deps.evalCommandsEnabled, followUpStatus: deps.followUpStatus, blockExternals: deps.blockExternals }, continuationArg(deps.continuation)), (deps.hasContinuationSession === undefined
|
|
408
405
|
? {}
|
|
409
406
|
: { hasContinuationSession: deps.hasContinuationSession })), (deps.isContinuationBusy === undefined
|
|
410
407
|
? {}
|
|
@@ -425,7 +422,7 @@ export function dispatchInboundFromEventBody(body, deps) {
|
|
|
425
422
|
});
|
|
426
423
|
return false;
|
|
427
424
|
}
|
|
428
|
-
deps.waitUntil(dispatchInboundMessage(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ kind: "direct_message", message: dm, handler: deps.onDirectMessage, send: deps.send, credentials: deps.credentials, host: deps.host, artifacts: deps.artifacts, log, evalCommandsEnabled: deps.evalCommandsEnabled,
|
|
425
|
+
deps.waitUntil(dispatchInboundMessage(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ kind: "direct_message", message: dm, handler: deps.onDirectMessage, send: deps.send, credentials: deps.credentials, host: deps.host, artifacts: deps.artifacts, log, evalCommandsEnabled: deps.evalCommandsEnabled, followUpStatus: deps.followUpStatus, blockExternals: deps.blockExternals }, continuationArg(deps.continuation)), (deps.hasContinuationSession === undefined
|
|
429
426
|
? {}
|
|
430
427
|
: { hasContinuationSession: deps.hasContinuationSession })), (deps.isContinuationBusy === undefined
|
|
431
428
|
? {}
|
|
@@ -440,7 +437,7 @@ export function dispatchInboundFromEventBody(body, deps) {
|
|
|
440
437
|
}
|
|
441
438
|
const reaction = parseReactionAddedEvent(body);
|
|
442
439
|
if (reaction !== null && deps.onReactionAdded !== undefined) {
|
|
443
|
-
deps.waitUntil(dispatchInboundMessage(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ kind: "reaction_added", message: reaction, handler: deps.onReactionAdded, send: deps.send, credentials: deps.credentials, host: deps.host, artifacts: deps.artifacts, log, evalCommandsEnabled: false,
|
|
440
|
+
deps.waitUntil(dispatchInboundMessage(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ kind: "reaction_added", message: reaction, handler: deps.onReactionAdded, send: deps.send, credentials: deps.credentials, host: deps.host, artifacts: deps.artifacts, log, evalCommandsEnabled: false, followUpStatus: deps.followUpStatus, blockExternals: deps.blockExternals }, continuationArg(deps.continuation)), (deps.hasContinuationSession === undefined
|
|
444
441
|
? {}
|
|
445
442
|
: { hasContinuationSession: deps.hasContinuationSession })), (deps.isContinuationBusy === undefined
|
|
446
443
|
? {}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Built-in Slack `eval` directive — run playground evals from a mention/DM
|
|
3
3
|
* without per-agent custom handlers (parity with CLI / playground runs).
|
|
4
4
|
*
|
|
5
|
-
* Examples (after stripping @mentions
|
|
5
|
+
* Examples (after stripping @mentions):
|
|
6
6
|
* eval
|
|
7
7
|
* eval triage/open-incidents smoke
|
|
8
8
|
* eval --tag oncall
|
|
@@ -28,23 +28,16 @@ export type SlackEvalDirective = {
|
|
|
28
28
|
};
|
|
29
29
|
/**
|
|
30
30
|
* Normalize inbound Slack text for directive parsing: strip leading
|
|
31
|
-
* `<@U…>` mentions
|
|
32
|
-
* cursorAccount agentName prefix (`OncallBuddy eval …`).
|
|
31
|
+
* `<@U…>` mentions and leading `@U…` markdown mentions.
|
|
33
32
|
*/
|
|
34
|
-
export declare function normalizeSlackEvalDirectiveBody(text: string
|
|
35
|
-
agentName?: string;
|
|
36
|
-
}): string;
|
|
33
|
+
export declare function normalizeSlackEvalDirectiveBody(text: string): string;
|
|
37
34
|
/**
|
|
38
35
|
* Parse a Slack eval directive. Returns null when the message is not an
|
|
39
36
|
* eval command (falls through to the normal agent handler).
|
|
40
37
|
*/
|
|
41
|
-
export declare function parseSlackEvalDirective(text: string
|
|
42
|
-
agentName?: string;
|
|
43
|
-
}): SlackEvalDirective | null;
|
|
38
|
+
export declare function parseSlackEvalDirective(text: string): SlackEvalDirective | null;
|
|
44
39
|
/** True when either raw Slack text or markdown form is an eval directive. */
|
|
45
|
-
export declare function isSlackEvalDirective(text: string, markdown: string
|
|
46
|
-
agentName?: string;
|
|
47
|
-
}): boolean;
|
|
40
|
+
export declare function isSlackEvalDirective(text: string, markdown: string): boolean;
|
|
48
41
|
export declare function formatSlackEvalHelp(): string;
|
|
49
42
|
export declare function formatSlackEvalList(evals: Array<{
|
|
50
43
|
id: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eval-directive.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/eval-directive.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAMpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAK/C,MAAM,MAAM,kBAAkB,GAC1B;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"eval-directive.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/eval-directive.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAMpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAK/C,MAAM,MAAM,kBAAkB,GAC1B;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAE3D;;;GAGG;AACH,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMpE;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,MAAM,GACX,kBAAkB,GAAG,IAAI,CA4E3B;AAED,6EAA6E;AAC7E,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAK5E;AAED,wBAAgB,mBAAmB,IAAI,MAAM,CAW5C;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,KAAK,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB,CAAC,GACD,MAAM,CAiBR;AAED,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,CAsCtE;AAkCD;;;GAGG;AACH,wBAAsB,wBAAwB,CAAC,IAAI,EAAE;IACnD,SAAS,EAAE,kBAAkB,CAAC;IAC9B,KAAK,EAAE,YAAY,CAAC;IACpB,OAAO,EAAE,YAAY,CAAC;IACtB,sCAAsC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgGhB"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Built-in Slack `eval` directive — run playground evals from a mention/DM
|
|
3
3
|
* without per-agent custom handlers (parity with CLI / playground runs).
|
|
4
4
|
*
|
|
5
|
-
* Examples (after stripping @mentions
|
|
5
|
+
* Examples (after stripping @mentions):
|
|
6
6
|
* eval
|
|
7
7
|
* eval triage/open-incidents smoke
|
|
8
8
|
* eval --tag oncall
|
|
@@ -23,35 +23,24 @@ import { EvalRunConflictError, EvalRunEmptyError, } from "../../internal/eval-ru
|
|
|
23
23
|
import { stripLeadingSlackMentions } from "./stop.js";
|
|
24
24
|
const EVAL_POLL_MS = 2000;
|
|
25
25
|
const TYPING_STATUS_MAX = 50;
|
|
26
|
-
function escapeRegExp(value) {
|
|
27
|
-
return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
28
|
-
}
|
|
29
26
|
/**
|
|
30
27
|
* Normalize inbound Slack text for directive parsing: strip leading
|
|
31
|
-
* `<@U…>` mentions
|
|
32
|
-
* cursorAccount agentName prefix (`OncallBuddy eval …`).
|
|
28
|
+
* `<@U…>` mentions and leading `@U…` markdown mentions.
|
|
33
29
|
*/
|
|
34
|
-
export function normalizeSlackEvalDirectiveBody(text
|
|
35
|
-
var _a;
|
|
30
|
+
export function normalizeSlackEvalDirectiveBody(text) {
|
|
36
31
|
let body = stripLeadingSlackMentions(text);
|
|
37
|
-
// markdown form from slackTextToMarkdown / cursorAccount envelopes
|
|
38
32
|
while (/^@[A-Za-z0-9._-]+\s+/.test(body)) {
|
|
39
33
|
body = body.replace(/^@[A-Za-z0-9._-]+\s+/, "").trim();
|
|
40
34
|
}
|
|
41
|
-
const agentName = (_a = options === null || options === void 0 ? void 0 : options.agentName) === null || _a === void 0 ? void 0 : _a.trim();
|
|
42
|
-
if (agentName !== undefined && agentName.length > 0) {
|
|
43
|
-
const prefix = new RegExp(`^${escapeRegExp(agentName)}\\s+`, "i");
|
|
44
|
-
body = body.replace(prefix, "").trim();
|
|
45
|
-
}
|
|
46
35
|
return body;
|
|
47
36
|
}
|
|
48
37
|
/**
|
|
49
38
|
* Parse a Slack eval directive. Returns null when the message is not an
|
|
50
39
|
* eval command (falls through to the normal agent handler).
|
|
51
40
|
*/
|
|
52
|
-
export function parseSlackEvalDirective(text
|
|
41
|
+
export function parseSlackEvalDirective(text) {
|
|
53
42
|
var _a, _b, _c;
|
|
54
|
-
const body = normalizeSlackEvalDirectiveBody(text
|
|
43
|
+
const body = normalizeSlackEvalDirectiveBody(text);
|
|
55
44
|
if (body.length === 0) {
|
|
56
45
|
return null;
|
|
57
46
|
}
|
|
@@ -122,9 +111,9 @@ export function parseSlackEvalDirective(text, options) {
|
|
|
122
111
|
return run;
|
|
123
112
|
}
|
|
124
113
|
/** True when either raw Slack text or markdown form is an eval directive. */
|
|
125
|
-
export function isSlackEvalDirective(text, markdown
|
|
126
|
-
return (parseSlackEvalDirective(text
|
|
127
|
-
parseSlackEvalDirective(markdown
|
|
114
|
+
export function isSlackEvalDirective(text, markdown) {
|
|
115
|
+
return (parseSlackEvalDirective(text) !== null ||
|
|
116
|
+
parseSlackEvalDirective(markdown) !== null);
|
|
128
117
|
}
|
|
129
118
|
export function formatSlackEvalHelp() {
|
|
130
119
|
return [
|
|
@@ -10,11 +10,6 @@
|
|
|
10
10
|
* // Multi-agent serve: one Slack app per agent
|
|
11
11
|
* export default slackChannel({ envPrefix: "MY_AGENT" });
|
|
12
12
|
* // → MY_AGENT_SLACK_BOT_TOKEN + MY_AGENT_SLACK_APP_TOKEN
|
|
13
|
-
*
|
|
14
|
-
* // No Slack app at all: ride the signed-in Cursor account's Slack
|
|
15
|
-
* // connection (`@Cursor <agent name> …` routes here; replies post as
|
|
16
|
-
* // this agent through the Cursor Slack app)
|
|
17
|
-
* export default slackChannel({ cursorAccount: true });
|
|
18
13
|
* ```
|
|
19
14
|
*/
|
|
20
15
|
export * from "./api.js";
|
|
@@ -27,7 +22,6 @@ export * from "./bot-mentions.js";
|
|
|
27
22
|
export * from "./channel-watch.js";
|
|
28
23
|
export * from "./constants.js";
|
|
29
24
|
export * from "./credentials.js";
|
|
30
|
-
export * from "./cursor-account.js";
|
|
31
25
|
export * from "./defaults.js";
|
|
32
26
|
export * from "./dispatch.js";
|
|
33
27
|
export * from "./doctor.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,YAAY,CAAC"}
|
|
@@ -10,11 +10,6 @@
|
|
|
10
10
|
* // Multi-agent serve: one Slack app per agent
|
|
11
11
|
* export default slackChannel({ envPrefix: "MY_AGENT" });
|
|
12
12
|
* // → MY_AGENT_SLACK_BOT_TOKEN + MY_AGENT_SLACK_APP_TOKEN
|
|
13
|
-
*
|
|
14
|
-
* // No Slack app at all: ride the signed-in Cursor account's Slack
|
|
15
|
-
* // connection (`@Cursor <agent name> …` routes here; replies post as
|
|
16
|
-
* // this agent through the Cursor Slack app)
|
|
17
|
-
* export default slackChannel({ cursorAccount: true });
|
|
18
13
|
* ```
|
|
19
14
|
*/
|
|
20
15
|
export * from "./api.js";
|
|
@@ -27,7 +22,6 @@ export * from "./bot-mentions.js";
|
|
|
27
22
|
export * from "./channel-watch.js";
|
|
28
23
|
export * from "./constants.js";
|
|
29
24
|
export * from "./credentials.js";
|
|
30
|
-
export * from "./cursor-account.js";
|
|
31
25
|
export * from "./defaults.js";
|
|
32
26
|
export * from "./dispatch.js";
|
|
33
27
|
export * from "./doctor.js";
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Slack setup guide printed by `agent-serve slack setup`.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* is
|
|
7
|
-
*
|
|
4
|
+
* Dedicated Socket Mode app via `slack create` (dashboard wizard).
|
|
5
|
+
* `slack init --manual` is the unmanaged paste-at-api.slack.com path.
|
|
6
|
+
* {@link SLACK_SETUP_PHASES} is that checklist; its ids key
|
|
7
|
+
* `.agent-serve/slack/setup-status.json`.
|
|
8
8
|
*/
|
|
9
9
|
export interface SlackSetupPhase {
|
|
10
10
|
id: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/setup.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,eAAO,MAAM,kBAAkB,EAAE,eAAe,EA4D/C,CAAC;AAEF,+EAA+E;AAC/E,wBAAgB,uBAAuB,CAAC,OAAO,EAAE;IAC/C,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;CACvC,GAAG;IACF,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IACtC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC,CAUA;AAED,wBAAgB,qBAAqB,IAAI,MAAM,
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/setup.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,eAAO,MAAM,kBAAkB,EAAE,eAAe,EA4D/C,CAAC;AAEF,+EAA+E;AAC/E,wBAAgB,uBAAuB,CAAC,OAAO,EAAE;IAC/C,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;CACvC,GAAG;IACF,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IACtC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC,CAUA;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CA2B9C"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Slack setup guide printed by `agent-serve slack setup`.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* is
|
|
7
|
-
*
|
|
4
|
+
* Dedicated Socket Mode app via `slack create` (dashboard wizard).
|
|
5
|
+
* `slack init --manual` is the unmanaged paste-at-api.slack.com path.
|
|
6
|
+
* {@link SLACK_SETUP_PHASES} is that checklist; its ids key
|
|
7
|
+
* `.agent-serve/slack/setup-status.json`.
|
|
8
8
|
*/
|
|
9
9
|
export const SLACK_SETUP_PHASES = [
|
|
10
10
|
{
|
|
@@ -83,17 +83,10 @@ export function formatSlackSetupGuide() {
|
|
|
83
83
|
const lines = [
|
|
84
84
|
"agent-serve — Slack setup",
|
|
85
85
|
"",
|
|
86
|
-
"
|
|
87
|
-
"",
|
|
88
|
-
"
|
|
89
|
-
|
|
90
|
-
" Sign in (agent-serve login / CURSOR_API_KEY), serve, then mention",
|
|
91
|
-
' "@Cursor MyAgent ..." in the linked workspace. No app, no tokens.',
|
|
92
|
-
" B) Dedicated Slack app (Socket Mode) via the dashboard wizard:",
|
|
93
|
-
" agent-serve slack create --dir .",
|
|
94
|
-
" Finish Slack consent and the bot name there. The CLI writes",
|
|
95
|
-
" tokens into .env.local. Use this when you need your own bot",
|
|
96
|
-
" user, channel watching, or approval buttons.",
|
|
86
|
+
"Dedicated Slack app (Socket Mode) via the dashboard wizard:",
|
|
87
|
+
" agent-serve slack create --dir .",
|
|
88
|
+
" Finish Slack consent and the bot name there. The CLI writes",
|
|
89
|
+
" tokens into .env.local.",
|
|
97
90
|
"",
|
|
98
91
|
"Manual Slack app: `slack init --manual`. Phases below.",
|
|
99
92
|
"Goal: importable dev + prod Slack apps over Socket Mode (no public URL).",
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* envelopes.
|
|
8
8
|
*/
|
|
9
9
|
import type { ChannelDefinition } from "../../types.js";
|
|
10
|
-
import {
|
|
10
|
+
import type { SlackChannelOptions, SlackChannelState, SlackCredentials } from "./types.js";
|
|
11
11
|
/**
|
|
12
12
|
* Recover the {@link SlackChannelOptions} used to build a channel definition,
|
|
13
13
|
* if it was created via {@link slackChannel}.
|
|
@@ -19,8 +19,7 @@ export interface SlackChannelHostBinding {
|
|
|
19
19
|
envPrefix?: string;
|
|
20
20
|
}
|
|
21
21
|
/**
|
|
22
|
-
* First
|
|
23
|
-
* `cursorAccount` channels — those have no local bot token for
|
|
22
|
+
* First Slack channel on a project. Used for
|
|
24
23
|
* {@link HostContext.slack.getClient}.
|
|
25
24
|
*/
|
|
26
25
|
export declare function resolveDedicatedSlackHostBinding(channels: ReadonlyArray<{
|
|
@@ -29,15 +28,9 @@ export declare function resolveDedicatedSlackHostBinding(channels: ReadonlyArray
|
|
|
29
28
|
/**
|
|
30
29
|
* Create a Slack channel. Author as `agent/channels/slack.ts` default export.
|
|
31
30
|
*
|
|
32
|
-
* Missing credentials are not an error: without a token pair
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
* When `cursorAccount` is on, `agentName` must be a single token (no
|
|
37
|
-
* whitespace) — string literals with spaces fail at the type level;
|
|
38
|
-
* runtime values are still checked by {@link assertSlackCursorAgentName}.
|
|
31
|
+
* Missing credentials are not an error: without a token pair the channel
|
|
32
|
+
* mounts idle and logs `channel idle`, so serving an agent never blocks
|
|
33
|
+
* on Slack setup.
|
|
39
34
|
*/
|
|
40
|
-
export declare function slackChannel
|
|
41
|
-
agentName?: SlackCursorAgentName<Name>;
|
|
42
|
-
}): ChannelDefinition<SlackChannelState>;
|
|
35
|
+
export declare function slackChannel(authored?: SlackChannelOptions): ChannelDefinition<SlackChannelState>;
|
|
43
36
|
//# sourceMappingURL=slack-channel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slack-channel.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/slack-channel.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,OAAO,KAAK,EAEV,iBAAiB,EAMlB,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"slack-channel.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/slack-channel.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,OAAO,KAAK,EAEV,iBAAiB,EAMlB,MAAM,gBAAgB,CAAC;AA2CxB,OAAO,KAAK,EACV,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAQpB;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,MAAM,GACjB,mBAAmB,GAAG,SAAS,CAEjC;AAED,0EAA0E;AAC1E,MAAM,WAAW,uBAAuB;IACtC,WAAW,EAAE,gBAAgB,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,gCAAgC,CAC9C,QAAQ,EAAE,aAAa,CAAC;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,GAC9C,uBAAuB,GAAG,SAAS,CAYrC;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,GAAE,mBAAwB,GACjC,iBAAiB,CAAC,iBAAiB,CAAC,CAyatC"}
|