@cursor/july 0.1.95 → 0.1.97
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 +3 -4
- package/README.md +3 -2
- package/dist/bin/agent-serve.js +14 -3
- package/dist/channels/deployments/types.d.ts +1 -1
- package/dist/channels/deployments/types.d.ts.map +1 -1
- package/dist/channels/deployments/types.js +1 -0
- package/dist/channels/origin/api.d.ts +72 -15
- package/dist/channels/origin/api.d.ts.map +1 -1
- package/dist/channels/origin/api.js +185 -28
- package/dist/channels/origin/binding.d.ts +13 -2
- package/dist/channels/origin/binding.d.ts.map +1 -1
- package/dist/channels/origin/binding.js +41 -25
- package/dist/channels/origin/checks.d.ts +6 -6
- package/dist/channels/origin/checks.js +6 -6
- package/dist/channels/origin/cursor-account.d.ts +5 -3
- package/dist/channels/origin/cursor-account.d.ts.map +1 -1
- package/dist/channels/origin/cursor-account.js +5 -3
- package/dist/channels/origin/index.d.ts +1 -0
- package/dist/channels/origin/index.d.ts.map +1 -1
- package/dist/channels/origin/index.js +1 -0
- package/dist/channels/origin/origin-channel.d.ts.map +1 -1
- package/dist/channels/origin/origin-channel.js +3 -0
- package/dist/channels/origin/reactions.d.ts +56 -0
- package/dist/channels/origin/reactions.d.ts.map +1 -0
- package/dist/channels/origin/reactions.js +67 -0
- package/dist/channels/origin/types.d.ts +11 -0
- package/dist/channels/origin/types.d.ts.map +1 -1
- package/dist/channels/slack/api.d.ts +9 -0
- package/dist/channels/slack/api.d.ts.map +1 -1
- package/dist/channels/slack/api.js +36 -5
- package/dist/channels/slack/approvals.d.ts +16 -0
- package/dist/channels/slack/approvals.d.ts.map +1 -1
- package/dist/channels/slack/approvals.js +86 -0
- package/dist/channels/slack/cli-project.d.ts +19 -0
- package/dist/channels/slack/cli-project.d.ts.map +1 -0
- package/dist/channels/slack/cli-project.js +234 -0
- package/dist/channels/slack/defaults.d.ts.map +1 -1
- package/dist/channels/slack/defaults.js +110 -81
- package/dist/channels/slack/dispatch.d.ts +7 -1
- package/dist/channels/slack/dispatch.d.ts.map +1 -1
- package/dist/channels/slack/dispatch.js +47 -23
- package/dist/channels/slack/inbound.d.ts +8 -0
- package/dist/channels/slack/inbound.d.ts.map +1 -1
- package/dist/channels/slack/inbound.js +32 -0
- package/dist/channels/slack/init.d.ts +3 -2
- package/dist/channels/slack/init.d.ts.map +1 -1
- package/dist/channels/slack/init.js +5 -5
- package/dist/channels/slack/interactive.d.ts +2 -1
- package/dist/channels/slack/interactive.d.ts.map +1 -1
- package/dist/channels/slack/interactive.js +15 -4
- package/dist/channels/slack/live-delivery.d.ts +26 -29
- package/dist/channels/slack/live-delivery.d.ts.map +1 -1
- package/dist/channels/slack/live-delivery.js +172 -73
- package/dist/channels/slack/manifest.d.ts +1 -1
- package/dist/channels/slack/manifest.d.ts.map +1 -1
- package/dist/channels/slack/manifest.js +6 -2
- package/dist/channels/slack/nudge-carrier.d.ts +2 -0
- package/dist/channels/slack/nudge-carrier.d.ts.map +1 -1
- package/dist/channels/slack/nudge-carrier.js +48 -1
- package/dist/channels/slack/setup.d.ts +1 -1
- package/dist/channels/slack/setup.d.ts.map +1 -1
- package/dist/channels/slack/setup.js +10 -6
- package/dist/channels/slack/slack-channel.d.ts.map +1 -1
- package/dist/channels/slack/slack-channel.js +3 -2
- package/dist/channels/slack/tool-approval-events.d.ts.map +1 -1
- package/dist/channels/slack/tool-approval-events.js +91 -1
- package/dist/docs/404.html +2 -2
- package/dist/docs/ab.html +4 -4
- package/dist/docs/assets/{app.BBj0klBO.js → app.B3rWNYE1.js} +1 -1
- package/dist/docs/assets/chunks/@localSearchIndexroot.BU9nHdnQ.js +1 -0
- package/dist/docs/assets/chunks/{VPLocalSearchBox.CUEXpL78.js → VPLocalSearchBox.C1lhqJJR.js} +1 -1
- package/dist/docs/assets/chunks/{theme.DabmQnia.js → theme.B40_SXuv.js} +2 -2
- package/dist/docs/assets/{deployment.md.D9msOFOW.js → deployment.md.MFPKqsqI.js} +2 -2
- package/dist/docs/assets/{guides_mcp-oauth.md.DPYmBCbV.js → guides_mcp-oauth.md.CN-6YmTJ.js} +4 -4
- package/dist/docs/assets/{guides_mcp-oauth.md.DPYmBCbV.lean.js → guides_mcp-oauth.md.CN-6YmTJ.lean.js} +1 -1
- package/dist/docs/assets/guides_slack.md.VDXQV3ja.js +22 -0
- package/dist/docs/assets/guides_slack.md.VDXQV3ja.lean.js +1 -0
- package/dist/docs/assets/index.md.CVeRUOeZ.js +5 -0
- package/dist/docs/assets/{index.md.BoHaMdeZ.lean.js → index.md.CVeRUOeZ.lean.js} +1 -1
- package/dist/docs/assets/{reference_agent-config.md.Cp_x38Nl.js → reference_agent-config.md.BHeYMgme.js} +1 -1
- package/dist/docs/assets/{reference_cli.md.BsMOxDvh.js → reference_cli.md.RyZf5OTE.js} +10 -6
- package/dist/docs/assets/{reference_cli.md.BsMOxDvh.lean.js → reference_cli.md.RyZf5OTE.lean.js} +1 -1
- package/dist/docs/assets/{reference_connections.md.BH8Oc0D0.js → reference_connections.md.DxldvyIB.js} +4 -3
- package/dist/docs/assets/{reference_http-api.md.D89k1mdm.js → reference_http-api.md.5zOAbV86.js} +1 -1
- package/dist/docs/assets/reference_sessions.md.NxFP_CAC.js +1 -0
- package/dist/docs/assets/{reference_tools.md.BHeXn2id.js → reference_tools.md.B84gw9Ii.js} +1 -1
- package/dist/docs/assets/templates_agents-md.md.CXSMZljE.js +2 -0
- package/dist/docs/assets/templates_agents-md.md.CXSMZljE.lean.js +1 -0
- package/dist/docs/assets/templates_code-wiki.md.CDYZIBFN.js +2 -0
- package/dist/docs/assets/templates_code-wiki.md.CDYZIBFN.lean.js +1 -0
- package/dist/docs/assets/troubleshooting.md.DCiPBhYs.js +1 -0
- package/dist/docs/building-with-agents.html +4 -4
- package/dist/docs/concepts.html +4 -4
- package/dist/docs/deployment.html +7 -7
- package/dist/docs/deployment.md +5 -4
- package/dist/docs/evals.html +4 -4
- package/dist/docs/guides/agent-to-agent.html +4 -4
- package/dist/docs/guides/cloud-runtime.html +4 -4
- package/dist/docs/guides/convert-automation.html +4 -4
- package/dist/docs/guides/github.html +4 -4
- package/dist/docs/guides/human-in-the-loop.html +4 -4
- package/dist/docs/guides/mcp-oauth.html +8 -8
- package/dist/docs/guides/mcp-oauth.md +26 -8
- package/dist/docs/guides/opentelemetry.html +4 -4
- package/dist/docs/guides/slack.html +17 -33
- package/dist/docs/guides/slack.md +92 -201
- 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 +7 -3
- package/dist/docs/llms-full.txt +398 -653
- package/dist/docs/llms.txt +3 -2
- package/dist/docs/quickstart.html +4 -4
- package/dist/docs/reference/agent-config.html +6 -6
- package/dist/docs/reference/agent-config.md +2 -2
- package/dist/docs/reference/artifacts.html +4 -4
- package/dist/docs/reference/channels.html +4 -4
- package/dist/docs/reference/cli.html +14 -10
- package/dist/docs/reference/cli.md +39 -16
- package/dist/docs/reference/connections.html +9 -8
- package/dist/docs/reference/connections.md +6 -3
- package/dist/docs/reference/hooks.html +4 -4
- package/dist/docs/reference/http-api.html +6 -6
- package/dist/docs/reference/http-api.md +2 -1
- package/dist/docs/reference/instructions.html +4 -4
- package/dist/docs/reference/playground.html +4 -4
- package/dist/docs/reference/project-layout.html +4 -4
- package/dist/docs/reference/prompt.html +4 -4
- package/dist/docs/reference/schedules.html +4 -4
- package/dist/docs/reference/sessions.html +5 -5
- package/dist/docs/reference/sessions.md +4 -2
- package/dist/docs/reference/skills.html +4 -4
- package/dist/docs/reference/subagents.html +4 -4
- package/dist/docs/reference/tools.html +6 -6
- package/dist/docs/reference/tools.md +9 -2
- 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/agents-md.html +28 -0
- package/dist/docs/templates/agents-md.md +105 -0
- package/dist/docs/templates/code-wiki.html +28 -0
- package/dist/docs/templates/code-wiki.md +91 -0
- package/dist/docs/templates/demo.html +5 -5
- package/dist/docs/templates/pr-autofixer.html +4 -4
- package/dist/docs/templates/security-help.html +4 -4
- package/dist/docs/templates/security-reviewer.html +5 -5
- package/dist/docs/templates/triage.html +4 -4
- package/dist/docs/troubleshooting.html +5 -5
- package/dist/docs/troubleshooting.md +2 -2
- package/dist/evals/run-facts.d.ts.map +1 -1
- package/dist/evals/run-facts.js +27 -0
- package/dist/files-backends/cursor-hosted.d.ts +26 -4
- package/dist/files-backends/cursor-hosted.d.ts.map +1 -1
- package/dist/files-backends/cursor-hosted.js +32 -4
- package/dist/internal/advertise-tools.d.ts +2 -0
- package/dist/internal/advertise-tools.d.ts.map +1 -1
- package/dist/internal/advertise-tools.js +30 -10
- package/dist/internal/approval-gate.d.ts +12 -13
- package/dist/internal/approval-gate.d.ts.map +1 -1
- package/dist/internal/approval-gate.js +16 -21
- package/dist/internal/bounded.d.ts +7 -0
- package/dist/internal/bounded.d.ts.map +1 -0
- package/dist/internal/bounded.js +32 -0
- package/dist/internal/chat-client.js +10 -0
- package/dist/internal/cli-deploy.d.ts +5 -0
- package/dist/internal/cli-deploy.d.ts.map +1 -1
- package/dist/internal/cli-deploy.js +57 -18
- package/dist/internal/cli-mcp-oauth.js +8 -18
- package/dist/internal/cli-slack-manual.d.ts +24 -2
- package/dist/internal/cli-slack-manual.d.ts.map +1 -1
- package/dist/internal/cli-slack-manual.js +251 -20
- package/dist/internal/cli-slack.d.ts +9 -2
- package/dist/internal/cli-slack.d.ts.map +1 -1
- package/dist/internal/cli-slack.js +29 -82
- package/dist/internal/conversation-mirror.d.ts +11 -8
- package/dist/internal/conversation-mirror.d.ts.map +1 -1
- package/dist/internal/conversation-mirror.js +116 -55
- package/dist/internal/cursor/account-mcp.d.ts +1 -0
- package/dist/internal/cursor/account-mcp.d.ts.map +1 -1
- package/dist/internal/cursor/account-mcp.js +17 -0
- package/dist/internal/cursor/backend-client.d.ts.map +1 -1
- package/dist/internal/cursor/backend-client.js +22 -48
- package/dist/internal/cursor/session-token.d.ts +45 -0
- package/dist/internal/cursor/session-token.d.ts.map +1 -0
- package/dist/internal/cursor/session-token.js +99 -0
- package/dist/internal/cursor-agent-template.d.ts +1 -1
- package/dist/internal/cursor-agent-template.d.ts.map +1 -1
- package/dist/internal/cursor-agent-template.js +2 -0
- package/dist/internal/deploy-client.d.ts +17 -0
- package/dist/internal/deploy-client.d.ts.map +1 -1
- package/dist/internal/deploy-client.js +31 -10
- package/dist/internal/env-file.d.ts +19 -0
- package/dist/internal/env-file.d.ts.map +1 -0
- package/dist/internal/env-file.js +90 -0
- package/dist/internal/framework-file-storage.d.ts +61 -0
- package/dist/internal/framework-file-storage.d.ts.map +1 -0
- package/dist/internal/framework-file-storage.js +210 -0
- package/dist/internal/framework-storage-selection.d.ts +11 -5
- package/dist/internal/framework-storage-selection.d.ts.map +1 -1
- package/dist/internal/framework-storage-selection.js +38 -11
- package/dist/internal/hosted-delivery-protocol.d.ts +7 -0
- package/dist/internal/hosted-delivery-protocol.d.ts.map +1 -1
- package/dist/internal/hosted-delivery-protocol.js +7 -0
- package/dist/internal/hosted-delivery.d.ts +13 -0
- package/dist/internal/hosted-delivery.d.ts.map +1 -1
- package/dist/internal/hosted-delivery.js +64 -19
- package/dist/internal/hosted-execution-diag.d.ts +48 -0
- package/dist/internal/hosted-execution-diag.d.ts.map +1 -0
- package/dist/internal/hosted-execution-diag.js +150 -0
- package/dist/internal/http-channel.d.ts.map +1 -1
- package/dist/internal/http-channel.js +81 -1
- package/dist/internal/init-project.d.ts.map +1 -1
- package/dist/internal/init-project.js +4 -0
- package/dist/internal/install-cursor-skills.d.ts.map +1 -1
- package/dist/internal/install-cursor-skills.js +1 -3
- package/dist/internal/logs-client.d.ts +5 -0
- package/dist/internal/logs-client.d.ts.map +1 -1
- package/dist/internal/logs-client.js +5 -0
- package/dist/internal/managed-delivery.d.ts +80 -0
- package/dist/internal/managed-delivery.d.ts.map +1 -0
- package/dist/internal/managed-delivery.js +86 -0
- package/dist/internal/mcp-endpoint.js +2 -3
- package/dist/internal/mcp-host.d.ts +10 -0
- package/dist/internal/mcp-host.d.ts.map +1 -1
- package/dist/internal/mcp-host.js +57 -8
- package/dist/internal/mcp-oauth-on-demand.d.ts +68 -0
- package/dist/internal/mcp-oauth-on-demand.d.ts.map +1 -0
- package/dist/internal/mcp-oauth-on-demand.js +287 -0
- package/dist/internal/mcp-oauth-persist.d.ts +42 -0
- package/dist/internal/mcp-oauth-persist.d.ts.map +1 -0
- package/dist/internal/mcp-oauth-persist.js +92 -0
- package/dist/internal/mcp-oauth.d.ts +1 -0
- package/dist/internal/mcp-oauth.d.ts.map +1 -1
- package/dist/internal/mcp-oauth.js +10 -2
- package/dist/internal/otel/collector.d.ts.map +1 -1
- package/dist/internal/otel/collector.js +22 -9
- package/dist/internal/runtime-dispatch-runner.d.ts +5 -1
- package/dist/internal/runtime-dispatch-runner.d.ts.map +1 -1
- package/dist/internal/runtime-dispatch-runner.js +7 -0
- package/dist/internal/sdk-runner.d.ts +11 -0
- package/dist/internal/sdk-runner.d.ts.map +1 -1
- package/dist/internal/sdk-runner.js +39 -8
- package/dist/internal/server.d.ts +3 -0
- package/dist/internal/server.d.ts.map +1 -1
- package/dist/internal/server.js +49 -21
- package/dist/internal/session-engine.d.ts +101 -3
- package/dist/internal/session-engine.d.ts.map +1 -1
- package/dist/internal/session-engine.js +577 -46
- package/dist/internal/sessions-client.d.ts +9 -7
- package/dist/internal/sessions-client.d.ts.map +1 -1
- package/dist/internal/sessions-client.js +3 -1
- package/dist/internal/steering.d.ts +15 -0
- package/dist/internal/steering.d.ts.map +1 -0
- package/dist/internal/steering.js +18 -0
- package/dist/internal/storage-coordinator.d.ts +7 -0
- package/dist/internal/storage-coordinator.d.ts.map +1 -1
- package/dist/internal/storage-coordinator.js +28 -5
- package/dist/internal/storage-roles.d.ts +5 -0
- package/dist/internal/storage-roles.d.ts.map +1 -1
- package/dist/internal/stream-progress.d.ts.map +1 -1
- package/dist/internal/stream-progress.js +10 -0
- package/dist/internal/tool-policy.d.ts +9 -1
- package/dist/internal/tool-policy.d.ts.map +1 -1
- package/dist/internal/tool-policy.js +13 -0
- package/dist/internal/trajectory.d.ts.map +1 -1
- package/dist/internal/trajectory.js +10 -0
- package/dist/internal/turn-outbox.d.ts +24 -0
- package/dist/internal/turn-outbox.d.ts.map +1 -0
- package/dist/internal/turn-outbox.js +80 -0
- package/dist/playground/assets/{index-CZA1uEWA.js → index-DrkI6y5O.js} +51 -51
- package/dist/playground/assets/index-DzNGwm7q.css +1 -0
- package/dist/playground/index.html +2 -2
- package/dist/storage-backends/cursor-hosted.d.ts +9 -6
- package/dist/storage-backends/cursor-hosted.d.ts.map +1 -1
- package/dist/storage-backends/cursor-hosted.js +16 -3
- package/dist/storage.d.ts +8 -0
- package/dist/storage.d.ts.map +1 -1
- package/dist/types.d.ts +65 -8
- package/dist/types.d.ts.map +1 -1
- package/docs/README.md +7 -3
- package/docs/deployment.md +5 -4
- package/docs/guides/mcp-oauth.md +26 -8
- package/docs/guides/slack.md +93 -202
- package/docs/reference/agent-config.md +2 -2
- package/docs/reference/cli.md +39 -16
- package/docs/reference/connections.md +6 -3
- package/docs/reference/http-api.md +2 -1
- package/docs/reference/sessions.md +4 -2
- package/docs/reference/tools.md +9 -2
- package/docs/templates/agents-md.md +110 -0
- package/docs/templates/code-wiki.md +96 -0
- package/docs/troubleshooting.md +2 -2
- package/package.json +2 -2
- package/skills/ab/SKILL.md +13 -97
- package/skills/create-agent/SKILL.md +124 -223
- package/skills/debug/SKILL.md +34 -68
- package/skills/evals/SKILL.md +55 -180
- package/skills/framework-map/SKILL.md +83 -145
- package/skills/github/SKILL.md +53 -111
- package/skills/hillclimb/SKILL.md +40 -163
- package/skills/mcp-auth/SKILL.md +51 -107
- package/skills/otel/SKILL.md +22 -68
- package/skills/setup-slack/SKILL.md +91 -212
- package/src/bin/agent-serve.ts +13 -1
- package/src/channels/deployments/types.ts +1 -0
- package/src/channels/origin/api.ts +264 -33
- package/src/channels/origin/binding.ts +57 -28
- package/src/channels/origin/checks.ts +6 -6
- package/src/channels/origin/cursor-account.ts +5 -3
- package/src/channels/origin/index.ts +1 -0
- package/src/channels/origin/origin-channel.ts +4 -0
- package/src/channels/origin/reactions.ts +82 -0
- package/src/channels/origin/types.ts +11 -0
- package/src/channels/slack/api.ts +41 -5
- package/src/channels/slack/approvals.ts +105 -0
- package/src/channels/slack/cli-project.ts +267 -0
- package/src/channels/slack/defaults.ts +122 -93
- package/src/channels/slack/dispatch.ts +56 -22
- package/src/channels/slack/inbound.ts +43 -0
- package/src/channels/slack/init.ts +10 -5
- package/src/channels/slack/interactive.ts +35 -9
- package/src/channels/slack/live-delivery.ts +235 -114
- package/src/channels/slack/manifest.ts +6 -2
- package/src/channels/slack/nudge-carrier.ts +48 -1
- package/src/channels/slack/setup.ts +10 -6
- package/src/channels/slack/slack-channel.ts +3 -0
- package/src/channels/slack/tool-approval-events.ts +93 -0
- package/src/evals/run-facts.ts +32 -0
- package/src/files-backends/cursor-hosted.ts +40 -7
- package/src/internal/advertise-tools.ts +49 -12
- package/src/internal/approval-gate.ts +20 -29
- package/src/internal/bounded.ts +28 -0
- package/src/internal/chat-client.ts +19 -0
- package/src/internal/cli-deploy.ts +91 -9
- package/src/internal/cli-mcp-oauth.ts +7 -21
- package/src/internal/cli-slack-manual.ts +350 -18
- package/src/internal/cli-slack.ts +40 -84
- package/src/internal/conversation-mirror.ts +145 -69
- package/src/internal/cursor/account-mcp.ts +21 -0
- package/src/internal/cursor/backend-client.ts +34 -58
- package/src/internal/cursor/session-token.ts +115 -0
- package/src/internal/cursor-agent-template.ts +2 -0
- package/src/internal/deploy-client.ts +43 -0
- package/src/internal/env-file.ts +84 -0
- package/src/internal/framework-file-storage.ts +228 -0
- package/src/internal/framework-storage-selection.ts +51 -11
- package/src/internal/hosted-delivery-protocol.ts +7 -0
- package/src/internal/hosted-delivery.ts +107 -24
- package/src/internal/hosted-execution-diag.ts +207 -0
- package/src/internal/http-channel.ts +99 -0
- package/src/internal/init-project.ts +4 -0
- package/src/internal/install-cursor-skills.ts +1 -4
- package/src/internal/logs-client.ts +5 -0
- package/src/internal/managed-delivery.ts +125 -0
- package/src/internal/mcp-endpoint.ts +13 -4
- package/src/internal/mcp-host.ts +77 -11
- package/src/internal/mcp-oauth-on-demand.ts +352 -0
- package/src/internal/mcp-oauth-persist.ts +127 -0
- package/src/internal/mcp-oauth.ts +17 -1
- package/src/internal/otel/collector.ts +30 -0
- package/src/internal/runtime-dispatch-runner.ts +10 -0
- package/src/internal/sdk-runner.ts +56 -8
- package/src/internal/server.ts +61 -9
- package/src/internal/session-engine.ts +723 -60
- package/src/internal/sessions-client.ts +17 -8
- package/src/internal/steering.ts +17 -0
- package/src/internal/storage-coordinator.ts +38 -8
- package/src/internal/storage-roles.ts +7 -0
- package/src/internal/stream-progress.ts +19 -0
- package/src/internal/tool-policy.ts +18 -0
- package/src/internal/trajectory.ts +10 -0
- package/src/internal/turn-outbox.ts +85 -0
- package/src/storage-backends/cursor-hosted.ts +22 -8
- package/src/storage.ts +12 -0
- package/src/types.ts +70 -9
- package/templates/agents-md/README.md +39 -0
- package/templates/agents-md/agent/agent.ts +8 -0
- package/templates/agents-md/agent/channels/github.ts +10 -0
- package/templates/agents-md/agent/channels/queue.ts +28 -0
- package/templates/agents-md/agent/channels/slack.ts +9 -0
- package/templates/agents-md/agent/instructions.md +39 -0
- package/templates/agents-md/agent/lib/collect.ts +439 -0
- package/templates/agents-md/agent/lib/config.ts +8 -0
- package/templates/agents-md/agent/lib/paths.ts +51 -0
- package/templates/agents-md/agent/schedules/weekly.ts +17 -0
- package/templates/agents-md/agent/tools/apply_agents.ts +226 -0
- package/templates/agents-md/evals/agents.eval.ts +135 -0
- package/templates/agents-md/evals/evals.config.ts +5 -0
- package/templates/agents-md/init.json +38 -0
- package/templates/agents-md/package.json +18 -0
- package/templates/agents-md/tsconfig.json +12 -0
- package/templates/code-wiki/README.md +34 -0
- package/templates/code-wiki/agent/agent.ts +8 -0
- package/templates/code-wiki/agent/channels/github.ts +144 -0
- package/templates/code-wiki/agent/instructions.md +39 -0
- package/templates/code-wiki/agent/lib/repos.ts +5 -0
- package/templates/code-wiki/agent/lib/wiki.ts +22 -0
- package/templates/code-wiki/agent/tools/apply_wiki.ts +219 -0
- package/templates/code-wiki/evals/evals.config.ts +5 -0
- package/templates/code-wiki/evals/wiki.eval.ts +132 -0
- package/templates/code-wiki/init.json +25 -0
- package/templates/code-wiki/package.json +18 -0
- package/templates/code-wiki/tsconfig.json +12 -0
- package/dist/docs/assets/chunks/@localSearchIndexroot.oqPawjiD.js +0 -1
- package/dist/docs/assets/guides_slack.md.C32HsdKk.js +0 -38
- package/dist/docs/assets/guides_slack.md.C32HsdKk.lean.js +0 -1
- package/dist/docs/assets/index.md.BoHaMdeZ.js +0 -5
- package/dist/docs/assets/reference_sessions.md.D0mIh4KK.js +0 -1
- package/dist/docs/assets/troubleshooting.md.Ctv3T8C2.js +0 -1
- package/dist/docs/design/agsh.md +0 -406
- package/dist/internal/deployment-scm-event-stream.d.ts +0 -116
- package/dist/internal/deployment-scm-event-stream.d.ts.map +0 -1
- package/dist/internal/deployment-scm-event-stream.js +0 -474
- package/dist/playground/assets/index-CF7hUDnQ.css +0 -1
- package/docs/design/agsh.md +0 -406
- package/src/internal/deployment-scm-event-stream.ts +0 -593
- /package/dist/docs/assets/{deployment.md.D9msOFOW.lean.js → deployment.md.MFPKqsqI.lean.js} +0 -0
- /package/dist/docs/assets/{reference_agent-config.md.Cp_x38Nl.lean.js → reference_agent-config.md.BHeYMgme.lean.js} +0 -0
- /package/dist/docs/assets/{reference_connections.md.BH8Oc0D0.lean.js → reference_connections.md.DxldvyIB.lean.js} +0 -0
- /package/dist/docs/assets/{reference_http-api.md.D89k1mdm.lean.js → reference_http-api.md.5zOAbV86.lean.js} +0 -0
- /package/dist/docs/assets/{reference_sessions.md.D0mIh4KK.lean.js → reference_sessions.md.NxFP_CAC.lean.js} +0 -0
- /package/dist/docs/assets/{reference_tools.md.BHeXn2id.lean.js → reference_tools.md.B84gw9Ii.lean.js} +0 -0
- /package/dist/docs/assets/{troubleshooting.md.Ctv3T8C2.lean.js → troubleshooting.md.DCiPBhYs.lean.js} +0 -0
package/skills/otel/SKILL.md
CHANGED
|
@@ -1,80 +1,48 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: agentsdk-otel
|
|
3
3
|
description: >-
|
|
4
|
-
Wire OpenTelemetry export
|
|
5
|
-
|
|
6
|
-
Datadog/Grafana/OTLP export, session/turn/tool tracing, or custom metrics.
|
|
4
|
+
Wire OpenTelemetry export (defineOtel, OTLP env, traces/metrics/logs,
|
|
5
|
+
ctx.host.otel). Use when adding collector export or custom metrics.
|
|
7
6
|
---
|
|
8
7
|
|
|
9
8
|
# Agent SDK OpenTelemetry (`defineOtel`)
|
|
10
9
|
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
Push traces and metrics from the serve process to an OTLP
|
|
11
|
+
collector. Logs are off until you opt in.
|
|
13
12
|
|
|
14
|
-
|
|
15
|
-
metrics, from the serve process to an OTLP collector. Logs are off
|
|
16
|
-
until you opt in.
|
|
17
|
-
|
|
18
|
-
Read [OpenTelemetry](../../docs/guides/opentelemetry.md) for the full
|
|
19
|
-
guide, including how this joins Cursor enterprise export.
|
|
13
|
+
Guide: `docs/guides/opentelemetry.md`.
|
|
20
14
|
|
|
21
15
|
## Enable
|
|
22
16
|
|
|
23
17
|
Any one of:
|
|
24
18
|
|
|
25
|
-
1.
|
|
19
|
+
1. `OTEL_EXPORTER_OTLP_ENDPOINT` (optional
|
|
26
20
|
`OTEL_SERVICE_NAME`, `OTEL_EXPORTER_OTLP_HEADERS`,
|
|
27
|
-
`OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf|http/json`)
|
|
28
|
-
|
|
29
|
-
`OTEL_EXPORTER_OTLP_TRACES_ENDPOINT` / `_METRICS_ENDPOINT` /
|
|
30
|
-
`_LOGS_ENDPOINT`.
|
|
31
|
-
2. **Authored.** `agent/otel.ts`:
|
|
21
|
+
`OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf|http/json`)
|
|
22
|
+
2. `agent/otel.ts`:
|
|
32
23
|
|
|
33
24
|
```ts
|
|
34
25
|
import { defineOtel } from "@cursor/july/otel";
|
|
35
26
|
|
|
36
27
|
export default defineOtel({
|
|
37
28
|
serviceName: "cursor",
|
|
38
|
-
exporters: [
|
|
39
|
-
{
|
|
40
|
-
url: "https://otel.example.com",
|
|
41
|
-
protocol: "http/protobuf",
|
|
42
|
-
headers: { Authorization: "Bearer …" },
|
|
43
|
-
},
|
|
44
|
-
],
|
|
29
|
+
exporters: [{ url: "https://otel.example.com", protocol: "http/protobuf" }],
|
|
45
30
|
});
|
|
46
31
|
```
|
|
47
32
|
|
|
48
|
-
3.
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
Multiple `exporters` fan out. Default protocol is `http/protobuf`.
|
|
52
|
-
Use `http/json` only when the collector requires it. `grpc` is ignored.
|
|
53
|
-
|
|
54
|
-
Precedence: `serve({ otel })` over `agent/otel.ts` over env.
|
|
55
|
-
|
|
56
|
-
## Signals
|
|
57
|
-
|
|
58
|
-
| Signal | Default | What |
|
|
59
|
-
| --- | --- | --- |
|
|
60
|
-
| Traces | on | `agent_sdk.http` → `agent_sdk.session` → `agent_sdk.turn` → `agent_sdk.tool` / `agent_sdk.subagent` |
|
|
61
|
-
| Metrics | on | `cursor.token.usage`, `cursor.tool.calls`, `cursor.cost.usage`, plus `agent_sdk.*` counts and HTTP duration |
|
|
62
|
-
| Logs | off | Opt in with `logs: true`, `OTEL_LOGS_EXPORTER=otlp`, or `OTEL_LOG_USER_PROMPTS=1` / `OTEL_LOG_TOOL_CONTENT=1` |
|
|
33
|
+
3. `serve(dir, { otel: { … } })`. `otel: false` disables env and
|
|
34
|
+
authored config.
|
|
63
35
|
|
|
64
|
-
|
|
65
|
-
|
|
36
|
+
| Signal | Default |
|
|
37
|
+
| --- | --- |
|
|
38
|
+
| Traces | on (`agent_sdk.http` → session → turn → tool / subagent) |
|
|
39
|
+
| Metrics | on (`cursor.token.usage`, `cursor.tool.calls`, `cursor.cost.usage`) |
|
|
40
|
+
| Logs | off (`logs: true` or `OTEL_LOGS_EXPORTER=otlp`) |
|
|
66
41
|
|
|
67
|
-
|
|
42
|
+
Prompt text and tool payloads stay off the wire unless you set
|
|
43
|
+
`OTEL_LOG_USER_PROMPTS` / `OTEL_LOG_TOOL_CONTENT`.
|
|
68
44
|
|
|
69
|
-
|
|
70
|
-
`setAttributes` still tags the open session when a collector is
|
|
71
|
-
attached. Prefix names with team or agent. No custom spans. Reserved
|
|
72
|
-
metric names: `cursor.token.usage`, `cursor.tool.calls`,
|
|
73
|
-
`cursor.cost.usage`, `agent_sdk.session.count`,
|
|
74
|
-
`agent_sdk.turn.count`, `agent_sdk.subagent.count`,
|
|
75
|
-
`agent_sdk.http.duration`. Reserved attributes:
|
|
76
|
-
`cursor.conversation.id`, `agent_sdk.agent`, `agent_sdk.turn_id`,
|
|
77
|
-
`agent_sdk.framework`.
|
|
45
|
+
## Custom metrics
|
|
78
46
|
|
|
79
47
|
```ts
|
|
80
48
|
ctx.host.otel.setAttributes({ "abc.ticket_id": "INC-123" });
|
|
@@ -82,20 +50,6 @@ ctx.host.otel.increment("abc.ticket.resolved");
|
|
|
82
50
|
ctx.host.otel.record("abc.approval.duration_ms", 1420);
|
|
83
51
|
```
|
|
84
52
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
- `cursor.tool.name` / `cursor.tool.kind` / `cursor.tool.status`
|
|
89
|
-
- `cursor.token.type`, `cursor.model.name`
|
|
90
|
-
- `agent_sdk.agent`, `agent_sdk.turn_id`, `agent_sdk.call_id`, `agent_sdk.channel`
|
|
91
|
-
|
|
92
|
-
Resource defaults: `service.name=cursor`, `cursor.entrypoint=sdk_ts`,
|
|
93
|
-
`cursor.surface=unspecified`.
|
|
94
|
-
|
|
95
|
-
Inbound HTTP extracts W3C `traceparent`, so a channel request parents
|
|
96
|
-
the session span when the turn starts in that request.
|
|
97
|
-
|
|
98
|
-
If another TracerProvider already owns the process (CLI / IDE), Agent
|
|
99
|
-
SDK reuses it. Run `serve` as its own process when Agent SDK should
|
|
100
|
-
own the destination. Conflicting `agent/otel.ts` files across mounts
|
|
101
|
-
fail at serve start.
|
|
53
|
+
Prefix names with team or agent. No custom spans. Join on
|
|
54
|
+
`cursor.conversation.id` and `agent_sdk.agent`. Run `serve` as its
|
|
55
|
+
own process when Agent SDK should own the destination.
|
|
@@ -1,270 +1,149 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: agentsdk-setup-slack
|
|
3
3
|
description: >-
|
|
4
|
-
Wire Slack to an Agent SDK agent. Mint a dedicated Socket Mode app
|
|
5
|
-
slack create
|
|
6
|
-
|
|
7
|
-
Slack to an agent.
|
|
4
|
+
Wire Slack to an Agent SDK agent. Mint a dedicated Socket Mode app
|
|
5
|
+
with slack create, then doctor and smoke. Use slack init --manual
|
|
6
|
+
only when the user owns the Slack app. Use when adding Slack.
|
|
8
7
|
---
|
|
9
8
|
|
|
10
9
|
# Setup Slack for the Agent SDK
|
|
11
10
|
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
Dedicated Socket Mode bot. `agent-sdk slack create` opens the
|
|
12
|
+
signed-in dashboard wizard. Tokens land in `.env.local` and as
|
|
13
|
+
deployment secrets. Never print token values.
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
Do not generate manifests or ask anyone to paste tokens unless
|
|
16
|
+
they asked for `slack init --manual`.
|
|
16
17
|
|
|
17
|
-
`
|
|
18
|
-
|
|
19
|
-
wizard; Slack consent and the bot name happen there. Tokens land in
|
|
20
|
-
`.env.local` and as deployment secrets.
|
|
18
|
+
Existing `<PREFIX>_SLACK_BOT_TOKEN` + `_SLACK_APP_TOKEN` in
|
|
19
|
+
`.env.local` keep working. Do not force those onto the wizard.
|
|
21
20
|
|
|
22
|
-
|
|
23
|
-
asked for a custom Slack app (`slack init --manual`).
|
|
21
|
+
Guide: `docs/guides/slack.md`.
|
|
24
22
|
|
|
25
|
-
|
|
26
|
-
`_SLACK_APP_TOKEN` in `.env.local` keep working. Do not force them onto
|
|
27
|
-
the wizard.
|
|
28
|
-
|
|
29
|
-
## Dedicated Slack app (Socket Mode)
|
|
30
|
-
|
|
31
|
-
Goal: one dedicated bot per agent, tokens in `.env.local`, local serve
|
|
32
|
-
without a cloud deploy. The dashboard wizard is the only first-run.
|
|
23
|
+
## 1. Wizard (default)
|
|
33
24
|
|
|
34
25
|
```bash
|
|
35
26
|
agent-sdk login
|
|
36
27
|
agent-sdk slack create --dir .
|
|
37
28
|
```
|
|
38
29
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
`<dir>/.env.local`, then runs `doctor`. Token values never print.
|
|
44
|
-
|
|
45
|
-
`--prod` provisions the prod app (default is dev). `--name` / `--icon` /
|
|
46
|
-
`--channel-posts` prefill the wizard. `--prefix` / `--no-prefix` set the
|
|
47
|
-
env-var names.
|
|
30
|
+
Same Cursor account in the browser. **Add Slack to this agent**,
|
|
31
|
+
approve Slack, pick the bot name. CLI writes
|
|
32
|
+
`<PREFIX>_SLACK_BOT_TOKEN` / `<PREFIX>_SLACK_APP_TOKEN` and runs
|
|
33
|
+
`doctor`.
|
|
48
34
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
35
|
+
Prefix is the directory basename in upper snake (`jenny` →
|
|
36
|
+
`JENNY`, `pr-approver` → `PR_APPROVER` → `PR_APPROVER_SLACK_*`).
|
|
37
|
+
`--prefix` / `--no-prefix` override. Dev and prod are separate
|
|
38
|
+
apps; `--prod` is the prod app. `--name` / `--icon` /
|
|
39
|
+
`--channel-posts` / `--slack-team` prefill the wizard.
|
|
54
40
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
41
|
+
If Slack needs workspace-admin approval, keep the CLI running.
|
|
42
|
+
Open the **Request approval** link it prints. Managed install
|
|
43
|
+
does not file the request. After approval, **Retry** in the
|
|
44
|
+
wizard.
|
|
59
45
|
|
|
60
|
-
|
|
61
|
-
agents unless you want a Cursor-managed app.
|
|
46
|
+
`create` scaffolds `agent/channels/slack.ts` when missing:
|
|
62
47
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
48
|
+
```ts
|
|
49
|
+
export default slackChannel({
|
|
50
|
+
envPrefix: "JENNY",
|
|
51
|
+
suggestedPrompts: [{ title: "Help", message: "How can you help me?" }],
|
|
52
|
+
});
|
|
68
53
|
```
|
|
69
54
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
When tokens are missing the channel logs
|
|
73
|
-
`channel idle reason=missing credentials need=…` and `serve` continues.
|
|
74
|
-
|
|
75
|
-
Human:
|
|
76
|
-
|
|
77
|
-
1. Invite the bot to a channel
|
|
78
|
-
2. `@mention` it (or DM)
|
|
79
|
-
3. Confirm Thinking… / Working… typing and a threaded reply
|
|
80
|
-
4. Server logs should show correlated lines (`event_id`, `session`, `channel`, `thread_ts`):
|
|
81
|
-
- `inbound kind=app_mention …`
|
|
82
|
-
- `session start …`
|
|
83
|
-
- `reply delivered via postMessage|stream …`
|
|
55
|
+
Return from dispatch handlers. Do not await long work in the
|
|
56
|
+
handler.
|
|
84
57
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
58
|
+
A second `slack create` for the same agent and env overwrites the
|
|
59
|
+
app (same Slack app id, new manifest and tokens).
|
|
60
|
+
`agent-sdk slack destroy` deletes it.
|
|
88
61
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
`agent-sdk slack destroy` deletes the provisioned app. Tokens left in
|
|
92
|
-
`.env.local` simply stop working.
|
|
62
|
+
Local serve does not need a hosted engine. Next
|
|
63
|
+
`agent-sdk deploy` injects the stored secrets.
|
|
93
64
|
|
|
94
|
-
## Manual
|
|
65
|
+
## 2. Manual (`slack init --manual`)
|
|
95
66
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
`.agent-serve/slack/setup-status.json` as you complete phases.
|
|
100
|
-
|
|
101
|
-
### Phase 0 — Generate (agent)
|
|
67
|
+
Only when they own the app. Preferred: Slack CLI
|
|
68
|
+
(`~/.slack/bin/slack`). Paste at api.slack.com if the CLI is
|
|
69
|
+
missing. Never `slack deploy`; Agent SDK serve owns Socket Mode.
|
|
102
70
|
|
|
103
71
|
```bash
|
|
104
72
|
agent-sdk slack init --manual --dir . --name "My Agent"
|
|
73
|
+
# --slack-team T0123ABCD when several workspaces are logged in
|
|
74
|
+
# --no-install to scaffold only
|
|
105
75
|
```
|
|
106
76
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
`
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
### Phase 2 — Install + tokens (human)
|
|
132
|
-
|
|
133
|
-
For each app:
|
|
134
|
-
|
|
135
|
-
1. **Install to Workspace** — copy Bot User OAuth Token (`xoxb-…`)
|
|
136
|
-
2. **Basic Information → App-Level Tokens** — Create Token with scope
|
|
137
|
-
`connections:write` → copy (`xapp-…`)
|
|
138
|
-
|
|
139
|
-
### Phase 3 — Env (agent)
|
|
140
|
-
|
|
141
|
-
Write into `.env.local` (dev app), using the keys from `env.example`:
|
|
142
|
-
|
|
143
|
-
```bash
|
|
144
|
-
MY_AGENT_SLACK_BOT_TOKEN=xoxb-…
|
|
145
|
-
MY_AGENT_SLACK_APP_TOKEN=xapp-…
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
```bash
|
|
149
|
-
agent-sdk slack doctor --prefix MY_AGENT
|
|
150
|
-
```
|
|
151
|
-
|
|
152
|
-
Stop when `app_token`, `connections_open`, `bot_token`, and `auth_test`
|
|
153
|
-
are green.
|
|
154
|
-
|
|
155
|
-
### Phase 4 — Serve + smoke (agent + human)
|
|
77
|
+
Writes `agent/channels/slack.ts` (`envPrefix` from the directory),
|
|
78
|
+
manifests, a `.slack/` project (`get-manifest` → those JSON files),
|
|
79
|
+
and `env.example`. `--channel-posts` subscribes `message.channels`
|
|
80
|
+
/ `message.groups`. If Slack CLI is logged in, this installs the
|
|
81
|
+
app. `--install` fails when that cannot run.
|
|
82
|
+
|
|
83
|
+
Human gates, one at a time. Stop after each.
|
|
84
|
+
|
|
85
|
+
1. **Install the app.** If `next` starts with "Ask the user to
|
|
86
|
+
install this Slack app", stop and prompt them. Slack CLI: they
|
|
87
|
+
run `slack login --no-prompt`, send `/slackauthticket <ticket>`,
|
|
88
|
+
then `slack login --ticket <ticket> --challenge <code>`, then
|
|
89
|
+
`slack app install --environment local --team <T> --force`.
|
|
90
|
+
Prod: `SLACK_ENV=deployed slack app install --environment
|
|
91
|
+
deployed --team <T> --force`. Fallback: Create New App → From a
|
|
92
|
+
manifest, start with `.slack/manifest.dev.json`.
|
|
93
|
+
2. **Tokens.** Slack CLI leaves xoxb / xapp in that process only.
|
|
94
|
+
Copy the bot token from the app's OAuth page. Mint an app-level
|
|
95
|
+
token with `connections:write`. Put both in `.env.local` using
|
|
96
|
+
`env.example` names. If Slack CLI wrote `SLACK_*` to `.env`,
|
|
97
|
+
copy those values to the prefixed keys.
|
|
98
|
+
3. **Doctor.**
|
|
99
|
+
|
|
100
|
+
## 3. Doctor and smoke
|
|
156
101
|
|
|
157
102
|
```bash
|
|
158
|
-
agent-sdk
|
|
103
|
+
agent-sdk slack doctor --prefix JENNY
|
|
104
|
+
agent-sdk serve --dir . --dev
|
|
159
105
|
```
|
|
160
106
|
|
|
161
|
-
|
|
107
|
+
Green: `app_token`, `connections_open`, `bot_token`, `auth_test`.
|
|
108
|
+
Log: `[agent-sdk/slack] Socket Mode connected`. Missing tokens
|
|
109
|
+
idle the channel; `serve` continues.
|
|
162
110
|
|
|
163
|
-
|
|
164
|
-
`
|
|
111
|
+
1. Invite the bot
|
|
112
|
+
2. `@mention` or DM
|
|
113
|
+
3. Thinking / Working, then a threaded reply
|
|
114
|
+
4. Logs: `inbound kind=app_mention`, `session start`,
|
|
115
|
+
`reply delivered via postMessage|stream`
|
|
165
116
|
|
|
166
|
-
|
|
117
|
+
## Watch channels (opt-in)
|
|
167
118
|
|
|
168
|
-
|
|
169
|
-
2. `@mention` it (or DM)
|
|
170
|
-
3. Confirm Thinking… / Working… typing and a threaded reply
|
|
171
|
-
4. Server logs should show correlated lines (`event_id`, `session`, `channel`, `thread_ts`):
|
|
172
|
-
- `inbound kind=app_mention …`
|
|
173
|
-
- `session start …`
|
|
174
|
-
- `reply delivered via postMessage|stream …`
|
|
175
|
-
|
|
176
|
-
## Features (defaults ON)
|
|
177
|
-
|
|
178
|
-
- Chat streaming (`chat.startStream` / `appendStream` / `stopStream`) with postMessage fallback
|
|
179
|
-
- Thinking / task cards for tool calls
|
|
180
|
-
- `assistant.threads.setStatus` with rotating `loading_messages`
|
|
181
|
-
- Thread title + suggested prompts
|
|
182
|
-
- `markdown_text` when supported
|
|
183
|
-
- Handler `message` / `workspaceFiles` / `cloud` passthrough for PR demos
|
|
184
|
-
|
|
185
|
-
If a Slack API is unavailable (`method_not_found` / `missing_scope`), the pack falls back to postMessage + setStatus.
|
|
186
|
-
|
|
187
|
-
## Engagement: mentions by default, channel watch opt-in
|
|
188
|
-
|
|
189
|
-
The pack dispatches only on `app_mention` + DMs unless told otherwise:
|
|
190
|
-
summoned, never proactive. To watch channels (dispatch on new posts without
|
|
191
|
-
a mention), opt in explicitly:
|
|
119
|
+
Default is mentions + DMs only. To wake on new posts:
|
|
192
120
|
|
|
193
121
|
```ts
|
|
194
122
|
export default slackChannel({
|
|
123
|
+
envPrefix: "JENNY",
|
|
195
124
|
engagement: {
|
|
196
125
|
channelPosts: {
|
|
197
|
-
allow: ["#
|
|
198
|
-
posts: "top-level",
|
|
199
|
-
debounceMs: 15_000, // optional: edits settle, deletes cancel
|
|
126
|
+
allow: ["#alerts"], // ["*"] for every joined channel
|
|
127
|
+
posts: "top-level",
|
|
200
128
|
},
|
|
201
129
|
},
|
|
202
130
|
onChannelPost: async (ctx, message) => ({}), // null = skip
|
|
203
131
|
});
|
|
204
132
|
```
|
|
205
133
|
|
|
206
|
-
Pass `--channel-posts` on `
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
`app_mention` path; watch sessions reuse the thread-scoped principal with an
|
|
210
|
-
`engagement: "channel_post"` attribute, so a later mention continues the
|
|
211
|
-
thread. `engagement.mentions` / `engagement.directMessages` can be set to
|
|
212
|
-
`false` to turn those surfaces off.
|
|
134
|
+
Pass `--channel-posts` on `create` / `init --manual`. Invite the
|
|
135
|
+
bot to each watched channel. Mentions stay on `app_mention`; a
|
|
136
|
+
later mention continues the watch thread.
|
|
213
137
|
|
|
214
|
-
##
|
|
215
|
-
|
|
216
|
-
Tools with `needsApproval` park until a human approves or denies. To route
|
|
217
|
-
that through Slack, set `toolApprovals: true` on `slackChannel`. It posts
|
|
218
|
-
Block Kit Approve/Deny cards and routes Socket Mode `interactive` clicks
|
|
219
|
-
back to the parked call:
|
|
138
|
+
## Approvals (opt-in)
|
|
220
139
|
|
|
221
140
|
```ts
|
|
222
141
|
export default slackChannel({
|
|
223
|
-
|
|
142
|
+
envPrefix: "JENNY",
|
|
224
143
|
toolApprovals: true,
|
|
225
144
|
});
|
|
226
145
|
```
|
|
227
146
|
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
on when `toolApprovals` is in play; `buildSlackManifest({ interactivity: true })`
|
|
232
|
-
is the same switch for existing apps.
|
|
233
|
-
- Composing by hand: spread `buildToolApprovalEvents({ credentials })` into
|
|
234
|
-
`events` **and** set `interactivity: true` on the channel.
|
|
235
|
-
- Cards show **redacted / truncated** args (Block Kit limits); execution
|
|
236
|
-
uses the full validated input. Review sensitive tools in the playground
|
|
237
|
-
when args may exceed the card.
|
|
238
|
-
- Approvals only exist for `execution: "server"` tools on the `local`
|
|
239
|
-
runtime, and parked calls do not survive a host restart.
|
|
240
|
-
- In `--dev` (loopback) or `--allow-anonymous` (trusted shared host), the
|
|
241
|
-
playground can also list Slack sessions and Approve/Deny
|
|
242
|
-
their parked tools (audit records the HTTP caller). Production and
|
|
243
|
-
bearer-auth hosts stay strict: Slack resolve must come from Slack
|
|
244
|
-
interactivity or a matching principal.
|
|
245
|
-
|
|
246
|
-
## Notes
|
|
247
|
-
|
|
248
|
-
- Dev and prod are **separate Slack apps** (separate tokens).
|
|
249
|
-
- Socket Mode is outbound only. No Events HTTP / Request URL path.
|
|
250
|
-
- Do not `await waitForCompletion()` inside Slack dispatch handlers. The pack uses `waitUntil`.
|
|
251
|
-
- Do not share one token pair across multiple agents in the same process.
|
|
252
|
-
|
|
253
|
-
## CLI reference
|
|
254
|
-
|
|
255
|
-
Wizard tooling is `create` / `destroy` / `icon` / `doctor`. Manual is
|
|
256
|
-
`init --manual` / `manifest` / `doctor`. `slack setup` prints this
|
|
257
|
-
guide. `slack init` hard-errors unless `--manual`.
|
|
258
|
-
|
|
259
|
-
```bash
|
|
260
|
-
agent-sdk slack setup
|
|
261
|
-
agent-sdk slack create --dir . # dashboard wizard (dev app)
|
|
262
|
-
agent-sdk slack create --dir . --prod # prod app
|
|
263
|
-
agent-sdk slack create --dir . --slack-team T0123ABCD
|
|
264
|
-
agent-sdk slack destroy --dir . [--prod] [--slack-team T0123ABCD]
|
|
265
|
-
agent-sdk slack init --manual --dir . --name "My Agent"
|
|
266
|
-
agent-sdk slack init --manual --dir . --no-prefix
|
|
267
|
-
agent-sdk slack init --manual --dir . --channel-posts
|
|
268
|
-
agent-sdk slack manifest --env both
|
|
269
|
-
agent-sdk slack doctor --prefix MY_AGENT
|
|
270
|
-
```
|
|
147
|
+
Wizard enables interactivity when this is set. Server tools on
|
|
148
|
+
`local` only. Parked calls die on host restart. Cards truncate
|
|
149
|
+
args; execution uses the full input.
|
package/src/bin/agent-serve.ts
CHANGED
|
@@ -140,7 +140,7 @@ Usage:
|
|
|
140
140
|
${CLI} deploy [--dir <path>] [--slug <slug> | --all] [--team <id>] [--json]
|
|
141
141
|
[--no-wait] [--repo <url>] [--ref <ref>]
|
|
142
142
|
[--path <agentPath>] [--cursor-events-repo <owner/name>]...
|
|
143
|
-
[--allow-domain <domain>]...
|
|
143
|
+
[--allow-domain <domain>]... [--multi-tenant]
|
|
144
144
|
${CLI} manifest [--dir <path>] [--json]
|
|
145
145
|
${CLI} deployments [--team <id>] [--json]
|
|
146
146
|
${CLI} deployment <slug> [--team <id>] [--json]
|
|
@@ -268,6 +268,8 @@ Commands:
|
|
|
268
268
|
(flags always win). When --dir is a multi-agent parent,
|
|
269
269
|
pick one interactively, or pass --slug / --all. First deploy
|
|
270
270
|
of a slug prints the alias token exactly once — save it.
|
|
271
|
+
--multi-tenant adds a release to an existing Cursor-managed
|
|
272
|
+
product (v2 only); it cannot create a new multi-tenant app.
|
|
271
273
|
deployments List the team's deployments (slug, status, generation, kind).
|
|
272
274
|
deployment Show one deployment in full (status, lastError, engine info).
|
|
273
275
|
stop Stop a deployment and wait until it reports stopped.
|
|
@@ -430,6 +432,9 @@ Options:
|
|
|
430
432
|
--allow-domain deploy: egress domain the engine pod may reach
|
|
431
433
|
(repeatable; unioned with hosting.egressDomains from the
|
|
432
434
|
agent manifest). Repo-backed deploys only.
|
|
435
|
+
--multi-tenant deploy: add a release to an existing Cursor-managed
|
|
436
|
+
(multi-tenant) product. architecture v2 only. Cannot
|
|
437
|
+
create a new multi-tenant application.
|
|
433
438
|
--from-argv secrets set: allow NAME=VALUE on argv (leaks into shell
|
|
434
439
|
history and agent-captured terminals). Default is names
|
|
435
440
|
only with a hidden prompt or piped stdin.
|
|
@@ -439,6 +444,8 @@ Options:
|
|
|
439
444
|
GITHUB_WEBHOOK_SECRET). github: --events overrides the
|
|
440
445
|
derived webhook event list.
|
|
441
446
|
--install github: install the cli/gh-webhook extension if missing.
|
|
447
|
+
slack init --manual: require Slack CLI app install.
|
|
448
|
+
--no-install slack init --manual: skip Slack CLI app install.
|
|
442
449
|
--action github replay: event action (e.g. opened, synchronize).
|
|
443
450
|
--conclusion github replay: CI conclusion (check_run/suite/status).
|
|
444
451
|
--comment github replay: comment body for comment events.
|
|
@@ -557,6 +564,7 @@ async function main(argv: string[]): Promise<number> {
|
|
|
557
564
|
secret: { type: "string" },
|
|
558
565
|
channel: { type: "string", multiple: true },
|
|
559
566
|
install: { type: "boolean", default: false },
|
|
567
|
+
"no-install": { type: "boolean", default: false },
|
|
560
568
|
action: { type: "string" },
|
|
561
569
|
conclusion: { type: "string" },
|
|
562
570
|
context: { type: "string" },
|
|
@@ -570,6 +578,7 @@ async function main(argv: string[]): Promise<number> {
|
|
|
570
578
|
all: { type: "boolean", default: false },
|
|
571
579
|
"cursor-events-repo": { type: "string", multiple: true },
|
|
572
580
|
"allow-domain": { type: "string", multiple: true },
|
|
581
|
+
"multi-tenant": { type: "boolean", default: false },
|
|
573
582
|
"from-argv": { type: "boolean", default: false },
|
|
574
583
|
strict: { type: "boolean", default: false },
|
|
575
584
|
junit: { type: "string" },
|
|
@@ -622,6 +631,8 @@ async function main(argv: string[]): Promise<number> {
|
|
|
622
631
|
icon: values.icon,
|
|
623
632
|
force: values.force,
|
|
624
633
|
manual: values.manual,
|
|
634
|
+
install: values.install,
|
|
635
|
+
noInstall: values["no-install"],
|
|
625
636
|
iconSource: positionals[0] === "icon" ? positionals[1] : undefined,
|
|
626
637
|
});
|
|
627
638
|
}
|
|
@@ -757,6 +768,7 @@ async function main(argv: string[]): Promise<number> {
|
|
|
757
768
|
...(values["allow-domain"] === undefined
|
|
758
769
|
? {}
|
|
759
770
|
: { allowDomains: values["allow-domain"] }),
|
|
771
|
+
multiTenant: values["multi-tenant"] === true,
|
|
760
772
|
});
|
|
761
773
|
}
|
|
762
774
|
|