@cursor/july 0.1.97 → 0.1.100
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 +5 -3
- package/dist/bin/agent-serve.js +6 -7
- package/dist/channels/github/defaults.d.ts.map +1 -1
- package/dist/channels/github/defaults.js +28 -3
- package/dist/channels/github/github-channel.d.ts.map +1 -1
- package/dist/channels/github/github-channel.js +16 -0
- package/dist/channels/github/progress.d.ts +7 -0
- package/dist/channels/github/progress.d.ts.map +1 -1
- package/dist/channels/origin/origin-channel.d.ts +2 -0
- package/dist/channels/origin/origin-channel.d.ts.map +1 -1
- package/dist/channels/origin/origin-channel.js +37 -4
- package/dist/channels/slack/api.d.ts +16 -7
- package/dist/channels/slack/api.d.ts.map +1 -1
- package/dist/channels/slack/api.js +29 -13
- package/dist/channels/slack/constants.d.ts +6 -0
- package/dist/channels/slack/constants.d.ts.map +1 -1
- package/dist/channels/slack/constants.js +6 -0
- package/dist/channels/slack/defaults.d.ts +9 -4
- package/dist/channels/slack/defaults.d.ts.map +1 -1
- package/dist/channels/slack/defaults.js +221 -122
- package/dist/channels/slack/dispatch.d.ts.map +1 -1
- package/dist/channels/slack/dispatch.js +3 -3
- package/dist/channels/slack/inbound.d.ts +9 -0
- package/dist/channels/slack/inbound.d.ts.map +1 -1
- package/dist/channels/slack/inbound.js +14 -0
- package/dist/channels/slack/index.d.ts +1 -0
- package/dist/channels/slack/index.d.ts.map +1 -1
- package/dist/channels/slack/index.js +1 -0
- package/dist/channels/slack/live-delivery.d.ts +6 -1
- package/dist/channels/slack/live-delivery.d.ts.map +1 -1
- package/dist/channels/slack/live-delivery.js +110 -20
- package/dist/channels/slack/progress-delivery.d.ts +28 -0
- package/dist/channels/slack/progress-delivery.d.ts.map +1 -0
- package/dist/channels/slack/progress-delivery.js +115 -0
- package/dist/channels/slack/reasoning-card.d.ts +38 -0
- package/dist/channels/slack/reasoning-card.d.ts.map +1 -0
- package/dist/channels/slack/reasoning-card.js +104 -0
- package/dist/channels/slack/redact.d.ts +2 -0
- package/dist/channels/slack/redact.d.ts.map +1 -0
- package/dist/channels/slack/redact.js +5 -0
- package/dist/channels/slack/reply-options.d.ts +40 -0
- package/dist/channels/slack/reply-options.d.ts.map +1 -0
- package/dist/channels/slack/reply-options.js +150 -0
- package/dist/channels/slack/slack-channel.d.ts.map +1 -1
- package/dist/channels/slack/slack-channel.js +8 -4
- package/dist/channels/slack/stream.d.ts +22 -10
- package/dist/channels/slack/stream.d.ts.map +1 -1
- package/dist/channels/slack/stream.js +9 -16
- package/dist/channels/slack/tool-cards.d.ts +22 -0
- package/dist/channels/slack/tool-cards.d.ts.map +1 -0
- package/dist/channels/slack/tool-cards.js +178 -0
- package/dist/channels/slack/types.d.ts +154 -7
- package/dist/channels/slack/types.d.ts.map +1 -1
- package/dist/docs/404.html +2 -2
- package/dist/docs/ab.html +6 -6
- package/dist/docs/ab.md +1 -1
- package/dist/docs/assets/{ab.md.DJo5r4R-.js → ab.md.mlVgqvSk.js} +1 -1
- package/dist/docs/assets/{app.B3rWNYE1.js → app.DZ1e0Ycq.js} +1 -1
- package/dist/docs/assets/{building-with-agents.md.DI4mEzlt.js → building-with-agents.md.CUSWxlP_.js} +2 -2
- package/dist/docs/assets/chunks/@localSearchIndexroot.j70vvPL4.js +1 -0
- package/dist/docs/assets/chunks/{VPLocalSearchBox.C1lhqJJR.js → VPLocalSearchBox.l8omwc6D.js} +1 -1
- package/dist/docs/assets/chunks/{theme.B40_SXuv.js → theme.JVcD6gel.js} +2 -2
- package/dist/docs/assets/{evals.md.lfJoEVc8.js → evals.md.CPzDAwoH.js} +1 -1
- package/dist/docs/assets/{guides_github.md.Cnh2mL4a.js → guides_github.md.BtPr9GaP.js} +1 -1
- package/dist/docs/assets/{guides_mcp-oauth.md.CN-6YmTJ.js → guides_mcp-oauth.md.Dp6cDP7f.js} +1 -1
- package/dist/docs/assets/{guides_opentelemetry.md.bmPmkvJu.js → guides_opentelemetry.md.BVTXDCRg.js} +2 -2
- package/dist/docs/assets/{guides_slack.md.VDXQV3ja.js → guides_slack.md.9oHPye9o.js} +19 -3
- package/dist/docs/assets/{guides_slack.md.VDXQV3ja.lean.js → guides_slack.md.9oHPye9o.lean.js} +1 -1
- package/dist/docs/assets/hillclimbing.md.CpTGTCle.js +4 -0
- package/dist/docs/assets/{index.md.CVeRUOeZ.js → index.md.Bb4k8kUm.js} +1 -1
- package/dist/docs/assets/{quickstart.md.Nj_LjW_a.js → quickstart.md.DdQOF7Y8.js} +1 -1
- package/dist/docs/assets/{reference_cli.md.RyZf5OTE.js → reference_cli.md.DfoeyvL0.js} +4 -4
- package/dist/docs/assets/{reference_cli.md.RyZf5OTE.lean.js → reference_cli.md.DfoeyvL0.lean.js} +1 -1
- package/dist/docs/assets/{reference_connections.md.DxldvyIB.js → reference_connections.md.BiGoBAk2.js} +1 -1
- package/dist/docs/assets/{reference_http-api.md.5zOAbV86.js → reference_http-api.md.BEJx9XVj.js} +1 -1
- package/dist/docs/assets/{reference_tools.md.B84gw9Ii.js → reference_tools.md.CvAHsdSp.js} +10 -2
- package/dist/docs/assets/{reference_tools.md.B84gw9Ii.lean.js → reference_tools.md.CvAHsdSp.lean.js} +1 -1
- package/dist/docs/assets/scaffolding-agents.md.em43xlY1.js +1 -0
- package/dist/docs/assets/skills_ab.md.CsFNatVx.js +26 -0
- package/dist/docs/assets/skills_ab.md.CsFNatVx.lean.js +1 -0
- package/dist/docs/assets/skills_create-agent.md.BVoWPcan.js +8 -0
- package/dist/docs/assets/skills_create-agent.md.BVoWPcan.lean.js +1 -0
- package/dist/docs/assets/skills_debug.md.CDbPhHfg.js +1 -0
- package/dist/docs/assets/skills_debug.md.CDbPhHfg.lean.js +1 -0
- package/dist/docs/assets/skills_evals.md.723kpUmA.js +25 -0
- package/dist/docs/assets/skills_evals.md.723kpUmA.lean.js +1 -0
- package/dist/docs/assets/skills_framework-map.md.BTi817yv.js +1 -0
- package/dist/docs/assets/skills_framework-map.md.BTi817yv.lean.js +1 -0
- package/dist/docs/assets/skills_github.md.D0JahM8c.js +16 -0
- package/dist/docs/assets/skills_github.md.D0JahM8c.lean.js +1 -0
- package/dist/docs/assets/skills_hillclimb.md.B_zJerxA.js +7 -0
- package/dist/docs/assets/skills_hillclimb.md.B_zJerxA.lean.js +1 -0
- package/dist/docs/assets/skills_index.md.DKwIxzGg.js +1 -0
- package/dist/docs/assets/skills_index.md.DKwIxzGg.lean.js +1 -0
- package/dist/docs/assets/skills_mcp-auth.md.DGvFP3HE.js +18 -0
- package/dist/docs/assets/skills_mcp-auth.md.DGvFP3HE.lean.js +1 -0
- package/dist/docs/assets/skills_otel.md.CgiZryR3.js +8 -0
- package/dist/docs/assets/skills_otel.md.CgiZryR3.lean.js +1 -0
- package/dist/docs/assets/skills_setup-slack.md.BBgx8lUz.js +20 -0
- package/dist/docs/assets/skills_setup-slack.md.BBgx8lUz.lean.js +1 -0
- package/dist/docs/assets/{troubleshooting.md.DCiPBhYs.js → troubleshooting.md.Cus_YZga.js} +1 -1
- package/dist/docs/building-with-agents.html +6 -6
- package/dist/docs/building-with-agents.md +14 -11
- package/dist/docs/concepts.html +4 -4
- package/dist/docs/deployment.html +4 -4
- package/dist/docs/design/runtime-abstraction.md +1757 -0
- package/dist/docs/evals.html +6 -6
- package/dist/docs/evals.md +1 -1
- 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 +5 -5
- package/dist/docs/guides/github.md +1 -1
- package/dist/docs/guides/human-in-the-loop.html +4 -4
- package/dist/docs/guides/mcp-oauth.html +5 -5
- package/dist/docs/guides/mcp-oauth.md +1 -1
- package/dist/docs/guides/opentelemetry.html +7 -7
- package/dist/docs/guides/opentelemetry.md +2 -2
- package/dist/docs/guides/slack.html +22 -6
- package/dist/docs/guides/slack.md +80 -1
- package/dist/docs/guides/webhooks.html +5 -5
- package/dist/docs/hashmap.json +1 -1
- package/dist/docs/hillclimbing.html +6 -6
- package/dist/docs/hillclimbing.md +5 -5
- package/dist/docs/index.html +6 -6
- package/dist/docs/index.md +1 -1
- package/dist/docs/llms-full.txt +2830 -37
- package/dist/docs/llms.txt +15 -0
- package/dist/docs/quickstart.html +5 -5
- package/dist/docs/quickstart.md +1 -1
- 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 +7 -7
- package/dist/docs/reference/cli.md +1 -7
- package/dist/docs/reference/connections.html +6 -6
- package/dist/docs/reference/connections.md +1 -1
- package/dist/docs/reference/hooks.html +4 -4
- package/dist/docs/reference/http-api.html +6 -6
- package/dist/docs/reference/http-api.md +1 -0
- 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 +4 -4
- package/dist/docs/reference/skills.html +4 -4
- package/dist/docs/reference/subagents.html +4 -4
- package/dist/docs/reference/tools.html +14 -6
- package/dist/docs/reference/tools.md +25 -0
- package/dist/docs/scaffolding-agents.html +5 -5
- package/dist/docs/scaffolding-agents.md +3 -3
- package/dist/docs/skills/ab.html +52 -0
- package/dist/docs/skills/ab.md +50 -0
- package/dist/docs/skills/create-agent.html +34 -0
- package/dist/docs/skills/create-agent.md +160 -0
- package/dist/docs/skills/debug.html +27 -0
- package/dist/docs/skills/debug.md +36 -0
- package/dist/docs/skills/evals.html +51 -0
- package/dist/docs/skills/evals.md +99 -0
- package/dist/docs/skills/framework-map.html +27 -0
- package/dist/docs/skills/framework-map.md +95 -0
- package/dist/docs/skills/github.html +42 -0
- package/dist/docs/skills/github.md +93 -0
- package/dist/docs/skills/hillclimb.html +33 -0
- package/dist/docs/skills/hillclimb.md +55 -0
- package/dist/docs/skills/index.html +27 -0
- package/dist/docs/skills/index.md +21 -0
- package/dist/docs/skills/mcp-auth.html +44 -0
- package/dist/docs/skills/mcp-auth.md +76 -0
- package/dist/docs/skills/otel.html +34 -0
- package/dist/docs/skills/otel.md +48 -0
- package/dist/docs/skills/setup-slack.html +46 -0
- package/dist/docs/skills/setup-slack.md +141 -0
- package/dist/docs/storage.html +4 -4
- package/dist/docs/templates/agentic-owners.html +4 -4
- package/dist/docs/templates/agents-md.html +4 -4
- package/dist/docs/templates/code-wiki.html +4 -4
- package/dist/docs/templates/demo.html +4 -4
- 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 +4 -4
- package/dist/docs/templates/triage.html +4 -4
- package/dist/docs/troubleshooting.html +5 -5
- package/dist/docs/troubleshooting.md +1 -1
- package/dist/files-backends/cursor-hosted.d.ts +9 -2
- package/dist/files-backends/cursor-hosted.d.ts.map +1 -1
- package/dist/files-backends/cursor-hosted.js +9 -11
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/internal/as-of.d.ts +19 -0
- package/dist/internal/as-of.d.ts.map +1 -0
- package/dist/internal/as-of.js +82 -0
- package/dist/internal/cli-deploy.d.ts +2 -1
- package/dist/internal/cli-deploy.d.ts.map +1 -1
- package/dist/internal/cli-deploy.js +102 -7
- package/dist/internal/conversation-mirror.d.ts.map +1 -1
- package/dist/internal/conversation-mirror.js +3 -4
- package/dist/internal/cursor/hosted-store-secrets.d.ts +15 -0
- package/dist/internal/cursor/hosted-store-secrets.d.ts.map +1 -0
- package/dist/internal/cursor/hosted-store-secrets.js +48 -0
- package/dist/internal/cursor-event-relay.d.ts.map +1 -1
- package/dist/internal/cursor-event-relay.js +5 -6
- package/dist/internal/deploy-client.d.ts +6 -6
- package/dist/internal/deploy-client.js +7 -7
- package/dist/internal/discovery.d.ts.map +1 -1
- package/dist/internal/discovery.js +11 -1
- package/dist/internal/framework-file-storage.d.ts +5 -4
- package/dist/internal/framework-file-storage.d.ts.map +1 -1
- package/dist/internal/framework-file-storage.js +6 -4
- package/dist/internal/framework-storage-selection.d.ts +13 -11
- package/dist/internal/framework-storage-selection.d.ts.map +1 -1
- package/dist/internal/framework-storage-selection.js +28 -23
- package/dist/internal/hosted-admission-adapter.d.ts +28 -0
- package/dist/internal/hosted-admission-adapter.d.ts.map +1 -0
- package/dist/internal/hosted-admission-adapter.js +7 -0
- package/dist/internal/hosted-delivery-protocol.d.ts +6 -1
- package/dist/internal/hosted-delivery-protocol.d.ts.map +1 -1
- package/dist/internal/hosted-delivery-protocol.js +1 -1
- package/dist/internal/hosted-delivery.d.ts +15 -1
- package/dist/internal/hosted-delivery.d.ts.map +1 -1
- package/dist/internal/hosted-delivery.js +47 -21
- package/dist/internal/hosted-execution-diag.d.ts +11 -0
- package/dist/internal/hosted-execution-diag.d.ts.map +1 -1
- package/dist/internal/hosted-execution-diag.js +39 -2
- package/dist/internal/http-channel.d.ts.map +1 -1
- package/dist/internal/http-channel.js +4 -1
- package/dist/internal/server.d.ts +3 -0
- package/dist/internal/server.d.ts.map +1 -1
- package/dist/internal/server.js +82 -19
- package/dist/internal/session-engine.d.ts.map +1 -1
- package/dist/internal/session-engine.js +24 -4
- package/dist/internal/session-run-log.d.ts +120 -0
- package/dist/internal/session-run-log.d.ts.map +1 -0
- package/dist/internal/session-run-log.js +358 -0
- package/dist/internal/tool-policy.d.ts +20 -8
- package/dist/internal/tool-policy.d.ts.map +1 -1
- package/dist/internal/tool-policy.js +11 -0
- package/dist/playground/assets/index-BszoQDc6.css +1 -0
- package/dist/playground/assets/index-DVs98vPL.js +69 -0
- package/dist/playground/index.html +2 -2
- package/dist/storage-backends/cursor-hosted-v2.d.ts +83 -0
- package/dist/storage-backends/cursor-hosted-v2.d.ts.map +1 -0
- package/dist/storage-backends/cursor-hosted-v2.js +164 -0
- package/dist/storage-backends/cursor-hosted.d.ts +6 -0
- package/dist/storage-backends/cursor-hosted.d.ts.map +1 -1
- package/dist/storage-backends/cursor-hosted.js +6 -1
- package/dist/storage-protocol.d.ts +8 -0
- package/dist/storage-protocol.d.ts.map +1 -1
- package/dist/storage-protocol.js +8 -0
- package/dist/tools.d.ts +12 -2
- package/dist/tools.d.ts.map +1 -1
- package/dist/types.d.ts +30 -0
- package/dist/types.d.ts.map +1 -1
- package/docs/README.md +1 -1
- package/docs/ab.md +1 -1
- package/docs/building-with-agents.md +14 -11
- package/docs/design/runtime-abstraction.md +1757 -0
- package/docs/evals.md +1 -1
- package/docs/guides/github.md +1 -1
- package/docs/guides/mcp-oauth.md +1 -1
- package/docs/guides/opentelemetry.md +2 -2
- package/docs/guides/slack.md +80 -1
- package/docs/hillclimbing.md +5 -5
- package/docs/quickstart.md +1 -1
- package/docs/reference/cli.md +1 -7
- package/docs/reference/connections.md +1 -1
- package/docs/reference/http-api.md +1 -0
- package/docs/reference/tools.md +25 -0
- package/docs/scaffolding-agents.md +3 -3
- package/docs/skills/index.md +26 -0
- package/docs/troubleshooting.md +1 -1
- package/package.json +1 -1
- package/src/bin/agent-serve.ts +6 -7
- package/src/channels/github/defaults.ts +36 -3
- package/src/channels/github/github-channel.ts +17 -0
- package/src/channels/github/progress.ts +7 -0
- package/src/channels/origin/origin-channel.ts +74 -10
- package/src/channels/slack/api.ts +35 -17
- package/src/channels/slack/constants.ts +6 -0
- package/src/channels/slack/defaults.ts +253 -144
- package/src/channels/slack/dispatch.ts +10 -1
- package/src/channels/slack/inbound.ts +17 -0
- package/src/channels/slack/index.ts +1 -0
- package/src/channels/slack/live-delivery.ts +135 -22
- package/src/channels/slack/progress-delivery.ts +133 -0
- package/src/channels/slack/reasoning-card.ts +140 -0
- package/src/channels/slack/redact.ts +6 -0
- package/src/channels/slack/reply-options.ts +229 -0
- package/src/channels/slack/slack-channel.ts +7 -2
- package/src/channels/slack/stream.ts +31 -24
- package/src/channels/slack/tool-cards.ts +221 -0
- package/src/channels/slack/types.ts +168 -7
- package/src/files-backends/cursor-hosted.ts +18 -7
- package/src/index.ts +4 -0
- package/src/internal/as-of.ts +107 -0
- package/src/internal/cli-deploy.ts +130 -10
- package/src/internal/conversation-mirror.ts +3 -8
- package/src/internal/cursor/hosted-store-secrets.ts +72 -0
- package/src/internal/cursor-event-relay.ts +5 -6
- package/src/internal/deploy-client.ts +10 -10
- package/src/internal/discovery.ts +9 -1
- package/src/internal/framework-file-storage.ts +6 -4
- package/src/internal/framework-storage-selection.ts +28 -25
- package/src/internal/hosted-admission-adapter.ts +42 -0
- package/src/internal/hosted-delivery-protocol.ts +7 -2
- package/src/internal/hosted-delivery.ts +88 -36
- package/src/internal/hosted-execution-diag.ts +45 -0
- package/src/internal/http-channel.ts +8 -0
- package/src/internal/server.ts +100 -2
- package/src/internal/session-engine.ts +32 -1
- package/src/internal/session-run-log.ts +579 -0
- package/src/internal/tool-policy.ts +31 -9
- package/src/storage-backends/cursor-hosted-v2.ts +219 -0
- package/src/storage-backends/cursor-hosted.ts +6 -1
- package/src/storage-protocol.ts +10 -0
- package/src/tools.ts +12 -2
- package/src/types.ts +30 -0
- package/dist/docs/assets/chunks/@localSearchIndexroot.BU9nHdnQ.js +0 -1
- package/dist/docs/assets/hillclimbing.md.DhESf3OO.js +0 -4
- package/dist/docs/assets/scaffolding-agents.md.D7UUkWw0.js +0 -1
- package/dist/playground/assets/index-DrkI6y5O.js +0 -88
- package/dist/playground/assets/index-DzNGwm7q.css +0 -1
- /package/dist/docs/assets/{ab.md.DJo5r4R-.lean.js → ab.md.mlVgqvSk.lean.js} +0 -0
- /package/dist/docs/assets/{building-with-agents.md.DI4mEzlt.lean.js → building-with-agents.md.CUSWxlP_.lean.js} +0 -0
- /package/dist/docs/assets/{evals.md.lfJoEVc8.lean.js → evals.md.CPzDAwoH.lean.js} +0 -0
- /package/dist/docs/assets/{guides_github.md.Cnh2mL4a.lean.js → guides_github.md.BtPr9GaP.lean.js} +0 -0
- /package/dist/docs/assets/{guides_mcp-oauth.md.CN-6YmTJ.lean.js → guides_mcp-oauth.md.Dp6cDP7f.lean.js} +0 -0
- /package/dist/docs/assets/{guides_opentelemetry.md.bmPmkvJu.lean.js → guides_opentelemetry.md.BVTXDCRg.lean.js} +0 -0
- /package/dist/docs/assets/{hillclimbing.md.DhESf3OO.lean.js → hillclimbing.md.CpTGTCle.lean.js} +0 -0
- /package/dist/docs/assets/{index.md.CVeRUOeZ.lean.js → index.md.Bb4k8kUm.lean.js} +0 -0
- /package/dist/docs/assets/{quickstart.md.Nj_LjW_a.lean.js → quickstart.md.DdQOF7Y8.lean.js} +0 -0
- /package/dist/docs/assets/{reference_connections.md.DxldvyIB.lean.js → reference_connections.md.BiGoBAk2.lean.js} +0 -0
- /package/dist/docs/assets/{reference_http-api.md.5zOAbV86.lean.js → reference_http-api.md.BEJx9XVj.lean.js} +0 -0
- /package/dist/docs/assets/{scaffolding-agents.md.D7UUkWw0.lean.js → scaffolding-agents.md.em43xlY1.lean.js} +0 -0
- /package/dist/docs/assets/{troubleshooting.md.DCiPBhYs.lean.js → troubleshooting.md.Cus_YZga.lean.js} +0 -0
package/AGENTS.md
CHANGED
|
@@ -52,7 +52,7 @@ which reads these files. Open them directly. There are no
|
|
|
52
52
|
|
|
53
53
|
Hosted-platform debug (stopped / slow start / health-fail, Datadog
|
|
54
54
|
`cursor.agent_serve.*`) is the monorepo skill
|
|
55
|
-
`.cursor/skills/debugging/debug-
|
|
55
|
+
`.cursor/skills/debugging/debug-agentsdk-deployment/SKILL.md` — it does
|
|
56
56
|
not ship with `@cursor/july`. Dual-pod alerts:
|
|
57
57
|
`docs/agent-serve/orphan-engines-runbook.md`.
|
|
58
58
|
|
|
@@ -223,8 +223,10 @@ shared `SLACK_*` vars (`slackChannel()` / `slack create --no-prefix`).
|
|
|
223
223
|
Channel watching is `engagement.channelPosts`. Tool approvals are
|
|
224
224
|
`toolApprovals` / `interactivity`.
|
|
225
225
|
|
|
226
|
-
|
|
227
|
-
|
|
226
|
+
Replies default to `reply: { mode: "post" }` (status chip while the turn
|
|
227
|
+
runs, one message at the end); `reply: { mode: "stream" }` streams the answer
|
|
228
|
+
with optional `toolCards` / `reasoningCard`. Suggested prompts default on.
|
|
229
|
+
Guided skill: `skills/setup-slack/SKILL.md`.
|
|
228
230
|
|
|
229
231
|
## Playground UI (Vite + React)
|
|
230
232
|
|
package/dist/bin/agent-serve.js
CHANGED
|
@@ -37,6 +37,7 @@ import { cmdManifest } from "../internal/cli-manifest.js";
|
|
|
37
37
|
import { CLI_COMMAND_NAME as CLI, formatCliVersion, PACKAGE_NAME, packageVersion, } from "../internal/distribution.js";
|
|
38
38
|
import { loadAgentLocalEnv } from "../internal/local-env.js";
|
|
39
39
|
import { ENTER_RESTART_EXIT_CODE, isServeRestartWorker, runEnterRestartSupervisor, } from "../internal/serve-restart.js";
|
|
40
|
+
import { flushSessionRunFatal } from "../internal/session-run-log.js";
|
|
40
41
|
import { clearTerminal, stdoutPalette } from "../internal/terminal-style.js";
|
|
41
42
|
import { cmdUpdate, warnIfOutdated } from "../internal/update-check.js";
|
|
42
43
|
const HELP = `${CLI} — serve a filesystem-defined Cursor agent over channels
|
|
@@ -104,7 +105,7 @@ Usage:
|
|
|
104
105
|
${CLI} deploy [--dir <path>] [--slug <slug> | --all] [--team <id>] [--json]
|
|
105
106
|
[--no-wait] [--repo <url>] [--ref <ref>]
|
|
106
107
|
[--path <agentPath>] [--cursor-events-repo <owner/name>]...
|
|
107
|
-
[--allow-domain <domain>]...
|
|
108
|
+
[--allow-domain <domain>]...
|
|
108
109
|
${CLI} manifest [--dir <path>] [--json]
|
|
109
110
|
${CLI} deployments [--team <id>] [--json]
|
|
110
111
|
${CLI} deployment <slug> [--team <id>] [--json]
|
|
@@ -232,8 +233,6 @@ Commands:
|
|
|
232
233
|
(flags always win). When --dir is a multi-agent parent,
|
|
233
234
|
pick one interactively, or pass --slug / --all. First deploy
|
|
234
235
|
of a slug prints the alias token exactly once — save it.
|
|
235
|
-
--multi-tenant adds a release to an existing Cursor-managed
|
|
236
|
-
product (v2 only); it cannot create a new multi-tenant app.
|
|
237
236
|
deployments List the team's deployments (slug, status, generation, kind).
|
|
238
237
|
deployment Show one deployment in full (status, lastError, engine info).
|
|
239
238
|
stop Stop a deployment and wait until it reports stopped.
|
|
@@ -396,9 +395,6 @@ Options:
|
|
|
396
395
|
--allow-domain deploy: egress domain the engine pod may reach
|
|
397
396
|
(repeatable; unioned with hosting.egressDomains from the
|
|
398
397
|
agent manifest). Repo-backed deploys only.
|
|
399
|
-
--multi-tenant deploy: add a release to an existing Cursor-managed
|
|
400
|
-
(multi-tenant) product. architecture v2 only. Cannot
|
|
401
|
-
create a new multi-tenant application.
|
|
402
398
|
--from-argv secrets set: allow NAME=VALUE on argv (leaks into shell
|
|
403
399
|
history and agent-captured terminals). Default is names
|
|
404
400
|
only with a hidden prompt or piped stdin.
|
|
@@ -538,6 +534,7 @@ function main(argv) {
|
|
|
538
534
|
all: { type: "boolean", default: false },
|
|
539
535
|
"cursor-events-repo": { type: "string", multiple: true },
|
|
540
536
|
"allow-domain": { type: "string", multiple: true },
|
|
537
|
+
// Hidden Anysphere-only flag; omitted from help.
|
|
541
538
|
"multi-tenant": { type: "boolean", default: false },
|
|
542
539
|
"from-argv": { type: "boolean", default: false },
|
|
543
540
|
strict: { type: "boolean", default: false },
|
|
@@ -1447,7 +1444,9 @@ function installTransportErrorGuards() {
|
|
|
1447
1444
|
return;
|
|
1448
1445
|
}
|
|
1449
1446
|
process.stderr.write(`[agent-sdk] uncaughtException: ${(_a = error.stack) !== null && _a !== void 0 ? _a : error.message}\n`);
|
|
1450
|
-
|
|
1447
|
+
void flushSessionRunFatal(error).finally(() => {
|
|
1448
|
+
process.exit(1);
|
|
1449
|
+
});
|
|
1451
1450
|
});
|
|
1452
1451
|
}
|
|
1453
1452
|
installTransportErrorGuards();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../../src/channels/github/defaults.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAExD,OAAO,EAAuB,KAAK,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC/E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD,MAAM,WAAW,+BAAgC,SAAQ,mBAAmB;IAC1E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAChC;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,GAAE,+BAAoC,GAC5C,oBAAoB,CAAC,kBAAkB,CAAC,
|
|
1
|
+
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../../src/channels/github/defaults.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAExD,OAAO,EAAuB,KAAK,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC/E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD,MAAM,WAAW,+BAAgC,SAAQ,mBAAmB;IAC1E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAChC;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,GAAE,+BAAoC,GAC5C,oBAAoB,CAAC,kBAAkB,CAAC,CA2G1C"}
|
|
@@ -18,11 +18,18 @@ import { applyGitHubProgress } from "./progress.js";
|
|
|
18
18
|
* `message.completed`, and a short error comment on turn/session failure.
|
|
19
19
|
*/
|
|
20
20
|
export function buildDefaultGitHubEvents(options = {}) {
|
|
21
|
+
var _a, _b;
|
|
22
|
+
var _c;
|
|
21
23
|
const deliverReplies = options.deliverReplies !== false;
|
|
24
|
+
const requiredSuccessfulTools = new Set((_c = (_b = (_a = options.progress) === null || _a === void 0 ? void 0 : _a.requireSuccessfulTools) === null || _b === void 0 ? void 0 : _b.map((toolName) => toolName.trim()).filter((toolName) => toolName !== "")) !== null && _c !== void 0 ? _c : []);
|
|
25
|
+
const toolOutcomesBySession = new Map();
|
|
22
26
|
return {
|
|
23
|
-
"turn.started"(
|
|
27
|
+
"turn.started"(event, channel) {
|
|
24
28
|
return __awaiter(this, void 0, void 0, function* () {
|
|
25
29
|
var _a;
|
|
30
|
+
if (requiredSuccessfulTools.size > 0) {
|
|
31
|
+
toolOutcomesBySession.set(event.sessionId, new Map());
|
|
32
|
+
}
|
|
26
33
|
yield applyGitHubProgress({
|
|
27
34
|
phase: "pending",
|
|
28
35
|
channel,
|
|
@@ -46,10 +53,26 @@ export function buildDefaultGitHubEvents(options = {}) {
|
|
|
46
53
|
}
|
|
47
54
|
});
|
|
48
55
|
},
|
|
49
|
-
"
|
|
56
|
+
"action.result"(event) {
|
|
57
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
58
|
+
var _a;
|
|
59
|
+
if (event.data.parentCallId !== undefined ||
|
|
60
|
+
!requiredSuccessfulTools.has(event.data.toolName)) {
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
const outcomes = (_a = toolOutcomesBySession.get(event.sessionId)) !== null && _a !== void 0 ? _a : new Map();
|
|
64
|
+
outcomes.set(event.data.toolName, !event.data.isError && event.data.stubbed !== true);
|
|
65
|
+
toolOutcomesBySession.set(event.sessionId, outcomes);
|
|
66
|
+
});
|
|
67
|
+
},
|
|
68
|
+
"turn.completed"(event, channel) {
|
|
50
69
|
return __awaiter(this, void 0, void 0, function* () {
|
|
70
|
+
const outcomes = toolOutcomesBySession.get(event.sessionId);
|
|
71
|
+
const pipelineSucceeded = requiredSuccessfulTools.size === 0 ||
|
|
72
|
+
[...requiredSuccessfulTools].every((toolName) => (outcomes === null || outcomes === void 0 ? void 0 : outcomes.get(toolName)) === true);
|
|
73
|
+
toolOutcomesBySession.delete(event.sessionId);
|
|
51
74
|
yield applyGitHubProgress({
|
|
52
|
-
phase: "success",
|
|
75
|
+
phase: pipelineSucceeded ? "success" : "failure",
|
|
53
76
|
channel,
|
|
54
77
|
options,
|
|
55
78
|
});
|
|
@@ -80,6 +103,7 @@ export function buildDefaultGitHubEvents(options = {}) {
|
|
|
80
103
|
},
|
|
81
104
|
"turn.failed"(event, channel) {
|
|
82
105
|
return __awaiter(this, void 0, void 0, function* () {
|
|
106
|
+
toolOutcomesBySession.delete(event.sessionId);
|
|
83
107
|
yield applyGitHubProgress({
|
|
84
108
|
phase: "failure",
|
|
85
109
|
channel,
|
|
@@ -90,6 +114,7 @@ export function buildDefaultGitHubEvents(options = {}) {
|
|
|
90
114
|
},
|
|
91
115
|
"session.failed"(event, channel) {
|
|
92
116
|
return __awaiter(this, void 0, void 0, function* () {
|
|
117
|
+
toolOutcomesBySession.delete(event.sessionId);
|
|
93
118
|
yield applyGitHubProgress({
|
|
94
119
|
phase: "failure",
|
|
95
120
|
channel,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github-channel.d.ts","sourceRoot":"","sources":["../../../src/channels/github/github-channel.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"github-channel.d.ts","sourceRoot":"","sources":["../../../src/channels/github/github-channel.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,7 @@ import { allowAll, defineChannel, localDevStrict, loopbackGitHubDev, POST, } fro
|
|
|
13
13
|
import { continuationSource, normalizeIdentity, } from "../../internal/continuation-identity.js";
|
|
14
14
|
import { isDeferredChannelSession } from "../../internal/deferred-channel-session.js";
|
|
15
15
|
import { isDevMode } from "../../internal/dev-mode.js";
|
|
16
|
+
import { attachHostedAdmissionAdapter } from "../../internal/hosted-admission-adapter.js";
|
|
16
17
|
import { bindLocalIngressSend } from "../../internal/local-ingress.js";
|
|
17
18
|
import { resolveCredentialValue } from "./auth.js";
|
|
18
19
|
import { buildGitHubBinding, } from "./binding.js";
|
|
@@ -523,6 +524,21 @@ export function githubChannel(options = {}) {
|
|
|
523
524
|
],
|
|
524
525
|
});
|
|
525
526
|
githubChannelOptionsByDefinition.set(definition, channelOptions);
|
|
527
|
+
attachHostedAdmissionAdapter(definition, {
|
|
528
|
+
kind: GITHUB_CHANNEL_KIND,
|
|
529
|
+
prepareArgs: withPropagatingGitHubBackgroundErrors,
|
|
530
|
+
dispatch: ({ eventType, payload, deliveryId, args }) => dispatchGitHubWebhook({
|
|
531
|
+
options: channelOptions,
|
|
532
|
+
eventName: eventType,
|
|
533
|
+
payload,
|
|
534
|
+
deliveryId,
|
|
535
|
+
args,
|
|
536
|
+
}),
|
|
537
|
+
getOutcome: (response) => {
|
|
538
|
+
const outcome = getGitHubDispatchOutcome(response);
|
|
539
|
+
return outcome === "skip" || outcome === "task" ? outcome : undefined;
|
|
540
|
+
},
|
|
541
|
+
});
|
|
526
542
|
if (cursorCredentials !== undefined) {
|
|
527
543
|
registerGithubCursorAccountRuntime(definition, {
|
|
528
544
|
options,
|
|
@@ -17,6 +17,13 @@ export type GitHubBannerProgress = GitHubProgressPhaseCopy;
|
|
|
17
17
|
export interface GitHubProgressConfig {
|
|
18
18
|
/** When false, skip the eyes reaction on turn.started. Defaults to true. */
|
|
19
19
|
reactions?: boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Top-level tools that must each finish successfully before a completed
|
|
22
|
+
* turn is reported as successful. A missing, stubbed, or ultimately failed
|
|
23
|
+
* tool reports failure instead. Later successful retries replace an earlier
|
|
24
|
+
* failure for the same tool.
|
|
25
|
+
*/
|
|
26
|
+
requireSuccessfulTools?: readonly string[];
|
|
20
27
|
/**
|
|
21
28
|
* Opt-in Checks API run on the PR head. Omit or `false` keeps today's
|
|
22
29
|
* behavior (no check from default events). With `cursorAccount`, enabling
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../../src/channels/github/progress.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAExD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAKrD,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAEpE,MAAM,WAAW,uBAAuB;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,0BAA2B,SAAQ,uBAAuB;IACzE,0DAA0D;IAC1D,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,oBAAoB,GAAG,uBAAuB,CAAC;AAE3D,MAAM,WAAW,oBAAoB;IACnC,4EAA4E;IAC5E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,KAAK,GAAG,0BAA0B,CAAC;IAClD;;;OAGG;IACH,MAAM,CAAC,EAAE,KAAK,GAAG,oBAAoB,CAAC;CACvC;AAED,MAAM,WAAW,qBAAsB,SAAQ,mBAAmB;IAChE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,oBAAoB,CAAC;CACjC;AAED,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,oBAAoB,GAAG,SAAS,GACzC,0BAA0B,GAAG,IAAI,CAKnC;AAED,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,oBAAoB,GAAG,SAAS,GACzC,oBAAoB,GAAG,IAAI,CAK7B;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IACvC,IAAI,EAAE,uBAAuB,GAAG,SAAS,CAAC;IAC1C,KAAK,EAAE,mBAAmB,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;CACf,GAAG,MAAM,CAaT;AAuBD;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,KAAK,EAAE;IAC/C,KAAK,EAAE,mBAAmB,CAAC;IAC3B,OAAO,EAAE;QAAE,KAAK,EAAE,kBAAkB,CAAA;KAAE,CAAC;IACvC,OAAO,EAAE,qBAAqB,CAAC;CAChC,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BhB"}
|
|
1
|
+
{"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../../src/channels/github/progress.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAExD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAKrD,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAEpE,MAAM,WAAW,uBAAuB;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,0BAA2B,SAAQ,uBAAuB;IACzE,0DAA0D;IAC1D,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,oBAAoB,GAAG,uBAAuB,CAAC;AAE3D,MAAM,WAAW,oBAAoB;IACnC,4EAA4E;IAC5E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;;OAKG;IACH,sBAAsB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C;;;;;OAKG;IACH,YAAY,CAAC,EAAE,KAAK,GAAG,0BAA0B,CAAC;IAClD;;;OAGG;IACH,MAAM,CAAC,EAAE,KAAK,GAAG,oBAAoB,CAAC;CACvC;AAED,MAAM,WAAW,qBAAsB,SAAQ,mBAAmB;IAChE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,oBAAoB,CAAC;CACjC;AAED,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,oBAAoB,GAAG,SAAS,GACzC,0BAA0B,GAAG,IAAI,CAKnC;AAED,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,oBAAoB,GAAG,SAAS,GACzC,oBAAoB,GAAG,IAAI,CAK7B;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IACvC,IAAI,EAAE,uBAAuB,GAAG,SAAS,CAAC;IAC1C,KAAK,EAAE,mBAAmB,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;CACf,GAAG,MAAM,CAaT;AAuBD;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,KAAK,EAAE;IAC/C,KAAK,EAAE,mBAAmB,CAAC;IAC3B,OAAO,EAAE;QAAE,KAAK,EAAE,kBAAkB,CAAA;KAAE,CAAC;IACvC,OAAO,EAAE,qBAAqB,CAAC;CAChC,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BhB"}
|
|
@@ -23,6 +23,8 @@ export declare function originIngressExtractPayload(envelope: OriginWebhookEnvel
|
|
|
23
23
|
export declare function defaultOriginTitle(ctx: Pick<OriginEventContext, "repository" | "pullRequestNumber">): string;
|
|
24
24
|
export declare function defaultOriginPullRequestMessage(ctx: Omit<OriginEventContext, "host" | "artifacts" | "origin">, pullRequest: OriginPullRequestEvent): string;
|
|
25
25
|
export declare function defaultOriginPullRequestDispatch(ctx: Omit<OriginEventContext, "host" | "artifacts" | "origin">, pullRequest: OriginPullRequestEvent): OriginTurnDispatch | null;
|
|
26
|
+
export type OriginDispatchOutcome = "skip" | "send" | "task";
|
|
27
|
+
export declare function getOriginDispatchOutcome(response: Response): OriginDispatchOutcome | undefined;
|
|
26
28
|
/**
|
|
27
29
|
* Core Origin webhook dispatch used by {@link originChannel} routes and by
|
|
28
30
|
* {@link handleAgentServeTrigger} fan-out. Signature verification is the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"origin-channel.d.ts","sourceRoot":"","sources":["../../../src/channels/origin/origin-channel.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"origin-channel.d.ts","sourceRoot":"","sources":["../../../src/channels/origin/origin-channel.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAEV,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,gBAAgB,CAAC;AAaxB,OAAO,KAAK,EAEV,oBAAoB,EAGpB,kBAAkB,EAClB,sBAAsB,EAItB,kBAAkB,EAClB,qBAAqB,EACtB,MAAM,YAAY,CAAC;AAiFpB,mFAAmF;AACnF,wBAAgB,cAAc,IAAI,MAAM,GAAG,SAAS,CAGnD;AAqGD,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,OAAO,GACf,qBAAqB,GAAG,IAAI,CAG9B;AAuCD,wBAAgB,2BAA2B,CAAC,KAAK,EAAE;IACjD,QAAQ,EAAE,qBAAqB,CAAC;CACjC,GAAG;IACF,GAAG,EAAE,IAAI,CAAC,kBAAkB,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC,CAAC;IAC/D,WAAW,EAAE,sBAAsB,CAAC;IACpC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC,GAAG,IAAI,CAwDP;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,IAAI,CAAC,kBAAkB,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC,GAC7D,WAAW,CAeb;AAED,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,IAAI,CAAC,kBAAkB,EAAE,YAAY,GAAG,mBAAmB,CAAC,GAChE,MAAM,CAER;AAED,2EAA2E;AAC3E,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,qBAAqB,GAC9B,OAAO,CAST;AAED,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,IAAI,CAAC,kBAAkB,EAAE,YAAY,GAAG,mBAAmB,CAAC,GAChE,MAAM,CAER;AAED,wBAAgB,+BAA+B,CAC7C,GAAG,EAAE,IAAI,CAAC,kBAAkB,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC,EAC9D,WAAW,EAAE,sBAAsB,GAClC,MAAM,CAaR;AAED,wBAAgB,gCAAgC,CAC9C,GAAG,EAAE,IAAI,CAAC,kBAAkB,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC,EAC9D,WAAW,EAAE,sBAAsB,GAClC,kBAAkB,GAAG,IAAI,CAK3B;AA4BD,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAe7D,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,QAAQ,GACjB,qBAAqB,GAAG,SAAS,CAEnC;AAgID;;;;GAIG;AACH;;;GAGG;AACH,wBAAsB,qBAAqB,CAAC,KAAK,EAAE;IACjD,OAAO,EAAE,oBAAoB,CAAC;IAC9B,QAAQ,EAAE,qBAAqB,CAAC;IAChC,IAAI,EAAE,kBAAkB,CAAC;CAC1B,GAAG,OAAO,CAAC,QAAQ,CAAC,CAgHpB;AAED;;;GAGG;AACH,wBAAsB,0BAA0B,CAAC,KAAK,EAAE;IACtD,OAAO,EAAE,oBAAoB,CAAC;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,kBAAkB,CAAC;IACzB,0EAA0E;IAC1E,yBAAyB,CAAC,EAAE,OAAO,CAAC;CACrC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAwDpB;AAOD,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,MAAM,GACjB,oBAAoB,GAAG,SAAS,CAElC;AAED,wBAAgB,aAAa,CAC3B,OAAO,GAAE,oBAAyB,GACjC,iBAAiB,CAqFnB;AAED,+DAA+D;AAC/D,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE;QACP,QAAQ,EAAE,KAAK,CAAC;YACd,EAAE,EAAE,MAAM,CAAC;YACX,UAAU,EAAE;gBACV,IAAI,CAAC,EAAE;oBAAE,IAAI,CAAC,EAAE,MAAM,CAAC;oBAAC,mBAAmB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;iBAAE,CAAC;aACnE,CAAC;SACH,CAAC,CAAC;KACJ,CAAC;CACH;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,aAAa,CAAC,oBAAoB,CAAC,GAC1C,mBAAmB,EAAE,CAgBvB"}
|
|
@@ -10,7 +10,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
10
10
|
import { z } from "zod";
|
|
11
11
|
import { allowAll, defineChannel, localDevStrict, loopbackOnly, POST, } from "../../channels.js";
|
|
12
12
|
import { continuationSource, normalizeIdentity, } from "../../internal/continuation-identity.js";
|
|
13
|
+
import { isDeferredChannelSession } from "../../internal/deferred-channel-session.js";
|
|
13
14
|
import { isDevMode } from "../../internal/dev-mode.js";
|
|
15
|
+
import { attachHostedAdmissionAdapter } from "../../internal/hosted-admission-adapter.js";
|
|
14
16
|
import { bindLocalIngressSend } from "../../internal/local-ingress.js";
|
|
15
17
|
import { buildOriginBinding } from "./binding.js";
|
|
16
18
|
import { parseCursorOriginRepoScope, registerOriginCursorAccountRuntime, } from "./cursor-account.js";
|
|
@@ -310,8 +312,16 @@ function enrichEventContext(input) {
|
|
|
310
312
|
app: input.options.app,
|
|
311
313
|
}) });
|
|
312
314
|
}
|
|
315
|
+
const dispatchOutcomeByResponse = new WeakMap();
|
|
316
|
+
function withDispatchOutcome(response, outcome) {
|
|
317
|
+
dispatchOutcomeByResponse.set(response, outcome);
|
|
318
|
+
return response;
|
|
319
|
+
}
|
|
320
|
+
export function getOriginDispatchOutcome(response) {
|
|
321
|
+
return dispatchOutcomeByResponse.get(response);
|
|
322
|
+
}
|
|
313
323
|
function skipped(reason, extra = {}) {
|
|
314
|
-
return Response.json(Object.assign({ ok: true, skipped: true, reason }, extra));
|
|
324
|
+
return withDispatchOutcome(Response.json(Object.assign({ ok: true, skipped: true, reason }, extra)), "skip");
|
|
315
325
|
}
|
|
316
326
|
function acknowledgeTask(args, dispatch, extra) {
|
|
317
327
|
args.waitUntil(new Promise((resolve, reject) => {
|
|
@@ -321,7 +331,7 @@ function acknowledgeTask(args, dispatch, extra) {
|
|
|
321
331
|
.then(() => resolve(), reject);
|
|
322
332
|
});
|
|
323
333
|
}));
|
|
324
|
-
return Response.json(Object.assign({ ok: true, dispatched: true, mode: "task" }, extra), { status: 202 });
|
|
334
|
+
return withDispatchOutcome(Response.json(Object.assign({ ok: true, dispatched: true, mode: "task" }, extra), { status: 202 }), "task");
|
|
325
335
|
}
|
|
326
336
|
function startTurn(input) {
|
|
327
337
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -330,12 +340,17 @@ function startTurn(input) {
|
|
|
330
340
|
const session = yield input.args.send(input.message, Object.assign(Object.assign(Object.assign({ auth: input.dispatch.auth }, (source === "engine"
|
|
331
341
|
? { continuationToken: originContinuationKey(input.ctx) }
|
|
332
342
|
: {})), { title: (_a = input.dispatch.title) !== null && _a !== void 0 ? _a : defaultOriginTitle(input.ctx) }), (input.cloud === undefined ? {} : { cloud: input.cloud })));
|
|
333
|
-
|
|
343
|
+
if (isDeferredChannelSession(session)) {
|
|
344
|
+
// Hosted admission captured the send; the control plane allocates the
|
|
345
|
+
// session after acknowledgement, so there is nothing to report yet.
|
|
346
|
+
return withDispatchOutcome(Response.json({ ok: true, dispatched: true, mode: "turn" }, { status: 202 }), "send");
|
|
347
|
+
}
|
|
348
|
+
return withDispatchOutcome(Response.json({
|
|
334
349
|
ok: true,
|
|
335
350
|
sessionId: session.id,
|
|
336
351
|
isNew: session.isNew,
|
|
337
352
|
continuationToken: session.continuationToken,
|
|
338
|
-
});
|
|
353
|
+
}), "send");
|
|
339
354
|
});
|
|
340
355
|
}
|
|
341
356
|
function resolveCloudOptions(cloud, ctx, pullRequest) {
|
|
@@ -595,6 +610,24 @@ export function originChannel(options = {}) {
|
|
|
595
610
|
],
|
|
596
611
|
});
|
|
597
612
|
originChannelOptionsByDefinition.set(definition, channelOptions);
|
|
613
|
+
attachHostedAdmissionAdapter(definition, {
|
|
614
|
+
kind: ORIGIN_CHANNEL_KIND,
|
|
615
|
+
dispatch: (_a) => __awaiter(this, [_a], void 0, function* ({ payload, args }) {
|
|
616
|
+
const envelope = parseOriginWebhookEnvelope(payload);
|
|
617
|
+
if (envelope === null) {
|
|
618
|
+
return Response.json({ ok: false, error: "invalid_origin_payload" }, { status: 400 });
|
|
619
|
+
}
|
|
620
|
+
return dispatchOriginWebhook({
|
|
621
|
+
options: channelOptions,
|
|
622
|
+
envelope,
|
|
623
|
+
args,
|
|
624
|
+
});
|
|
625
|
+
}),
|
|
626
|
+
getOutcome: (response) => {
|
|
627
|
+
const outcome = getOriginDispatchOutcome(response);
|
|
628
|
+
return outcome === "skip" || outcome === "task" ? outcome : undefined;
|
|
629
|
+
},
|
|
630
|
+
});
|
|
598
631
|
if (usesCursorAccount) {
|
|
599
632
|
registerOriginCursorAccountRuntime(definition, {
|
|
600
633
|
options: channelOptions,
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import type { ArtifactsApi, HostContext } from "../../types.js";
|
|
5
5
|
import { type SlackLog } from "./log.js";
|
|
6
|
-
import type {
|
|
6
|
+
import type { StreamChunk } from "./stream.js";
|
|
7
7
|
import type { SlackApiTransport, SlackBinding, SlackBotToken, SlackCredentials, SlackSuggestedPrompt, SoftSlackResult } from "./types.js";
|
|
8
8
|
/** Whether a bot token slot holds an API transport instead of a token. */
|
|
9
9
|
export declare function isSlackApiTransport(token: SlackBotToken | undefined): token is SlackApiTransport;
|
|
@@ -41,10 +41,18 @@ export declare function truncateTypingStatus(status: string, max?: number): stri
|
|
|
41
41
|
export declare function truncateLoadingMessages(messages: string[], nowMs?: number): string[];
|
|
42
42
|
export declare function truncateTitle(title: string, max?: number): string;
|
|
43
43
|
/**
|
|
44
|
-
* Show or clear the
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
*
|
|
44
|
+
* Show or clear the status chip under the thread.
|
|
45
|
+
*
|
|
46
|
+
* Status text goes through `assistant.threads.setStatus` alone. The agent
|
|
47
|
+
* session is only written when clearing: Agent UX ignores an empty assistant
|
|
48
|
+
* status, so `agents.sessions.setStatus` `active` is what actually drops the
|
|
49
|
+
* chip. That same write must not accompany status text — Slack applies it
|
|
50
|
+
* asynchronously and it blanks the chip when it lands after the text, which
|
|
51
|
+
* reads as flicker between updates. A `processing` write would be worse:
|
|
52
|
+
* Agent UX paints its own generic "is working…" over the assistant text
|
|
53
|
+
* while the session is `processing`. An open `chat.startStream` also flips
|
|
54
|
+
* the session to `processing` on Slack's side, so status text only shows on
|
|
55
|
+
* non-streaming turns. The empty assistant call stays for older workspaces.
|
|
48
56
|
*/
|
|
49
57
|
export declare function setThreadStatus(args: {
|
|
50
58
|
botToken: SlackBotToken | undefined;
|
|
@@ -71,7 +79,7 @@ export declare function startChatStream(args: {
|
|
|
71
79
|
channel: string;
|
|
72
80
|
thread_ts?: string;
|
|
73
81
|
markdown_text?: string;
|
|
74
|
-
chunks?:
|
|
82
|
+
chunks?: StreamChunk[];
|
|
75
83
|
recipient_user_id?: string;
|
|
76
84
|
recipient_team_id?: string;
|
|
77
85
|
}): Promise<SoftSlackResult<{
|
|
@@ -83,13 +91,14 @@ export declare function appendChatStream(args: {
|
|
|
83
91
|
channel: string;
|
|
84
92
|
ts: string;
|
|
85
93
|
markdown_text?: string;
|
|
86
|
-
chunks?:
|
|
94
|
+
chunks?: StreamChunk[];
|
|
87
95
|
}): Promise<SoftSlackResult>;
|
|
88
96
|
export declare function stopChatStream(args: {
|
|
89
97
|
botToken: SlackBotToken | undefined;
|
|
90
98
|
channel: string;
|
|
91
99
|
ts: string;
|
|
92
100
|
markdown_text?: string;
|
|
101
|
+
chunks?: StreamChunk[];
|
|
93
102
|
blocks?: unknown[];
|
|
94
103
|
}): Promise<SoftSlackResult>;
|
|
95
104
|
export declare function postMessage(args: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/api.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAWhE,OAAO,EAAmB,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AAC1D,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/api.ts"],"names":[],"mappings":"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"}
|
|
@@ -145,10 +145,18 @@ export function truncateTitle(title, max) {
|
|
|
145
145
|
// Assistant / stream helpers
|
|
146
146
|
// ---------------------------------------------------------------------------
|
|
147
147
|
/**
|
|
148
|
-
* Show or clear the
|
|
149
|
-
*
|
|
150
|
-
*
|
|
151
|
-
*
|
|
148
|
+
* Show or clear the status chip under the thread.
|
|
149
|
+
*
|
|
150
|
+
* Status text goes through `assistant.threads.setStatus` alone. The agent
|
|
151
|
+
* session is only written when clearing: Agent UX ignores an empty assistant
|
|
152
|
+
* status, so `agents.sessions.setStatus` `active` is what actually drops the
|
|
153
|
+
* chip. That same write must not accompany status text — Slack applies it
|
|
154
|
+
* asynchronously and it blanks the chip when it lands after the text, which
|
|
155
|
+
* reads as flicker between updates. A `processing` write would be worse:
|
|
156
|
+
* Agent UX paints its own generic "is working…" over the assistant text
|
|
157
|
+
* while the session is `processing`. An open `chat.startStream` also flips
|
|
158
|
+
* the session to `processing` on Slack's side, so status text only shows on
|
|
159
|
+
* non-streaming turns. The empty assistant call stays for older workspaces.
|
|
152
160
|
*/
|
|
153
161
|
export function setThreadStatus(args) {
|
|
154
162
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -156,15 +164,6 @@ export function setThreadStatus(args) {
|
|
|
156
164
|
return { ok: false, error: "missing_channel_or_thread" };
|
|
157
165
|
}
|
|
158
166
|
const status = truncateTypingStatus(args.status);
|
|
159
|
-
const sessionResult = yield callSlackApiSoft({
|
|
160
|
-
botToken: args.botToken,
|
|
161
|
-
operation: "agents.sessions.setStatus",
|
|
162
|
-
body: {
|
|
163
|
-
channel_id: args.channelId,
|
|
164
|
-
thread_ts: args.threadTs,
|
|
165
|
-
status: status.length > 0 ? "processing" : "active",
|
|
166
|
-
},
|
|
167
|
-
});
|
|
168
167
|
const body = {
|
|
169
168
|
channel_id: args.channelId,
|
|
170
169
|
thread_ts: args.threadTs,
|
|
@@ -181,7 +180,21 @@ export function setThreadStatus(args) {
|
|
|
181
180
|
if (loading_messages.length > 0) {
|
|
182
181
|
body.loading_messages = loading_messages;
|
|
183
182
|
}
|
|
183
|
+
return callSlackApiSoft({
|
|
184
|
+
botToken: args.botToken,
|
|
185
|
+
operation: "assistant.threads.setStatus",
|
|
186
|
+
body,
|
|
187
|
+
});
|
|
184
188
|
}
|
|
189
|
+
const sessionResult = yield callSlackApiSoft({
|
|
190
|
+
botToken: args.botToken,
|
|
191
|
+
operation: "agents.sessions.setStatus",
|
|
192
|
+
body: {
|
|
193
|
+
channel_id: args.channelId,
|
|
194
|
+
thread_ts: args.threadTs,
|
|
195
|
+
status: "active",
|
|
196
|
+
},
|
|
197
|
+
});
|
|
185
198
|
const assistantResult = yield callSlackApiSoft({
|
|
186
199
|
botToken: args.botToken,
|
|
187
200
|
operation: "assistant.threads.setStatus",
|
|
@@ -295,6 +308,9 @@ export function stopChatStream(args) {
|
|
|
295
308
|
if (args.markdown_text !== undefined) {
|
|
296
309
|
body.markdown_text = args.markdown_text;
|
|
297
310
|
}
|
|
311
|
+
if (args.chunks !== undefined && args.chunks.length > 0) {
|
|
312
|
+
body.chunks = args.chunks;
|
|
313
|
+
}
|
|
298
314
|
if (args.blocks !== undefined && args.blocks.length > 0) {
|
|
299
315
|
body.blocks = args.blocks;
|
|
300
316
|
}
|
|
@@ -12,6 +12,12 @@ export declare const SLACK_LOADING_MESSAGE_MAX_LEN = 50;
|
|
|
12
12
|
/** Slack `assistant.threads.setStatus` accepts at most 5 `loading_messages`. */
|
|
13
13
|
export declare const SLACK_LOADING_MESSAGES_MAX = 5;
|
|
14
14
|
export declare const SLACK_TITLE_MAX_LEN = 80;
|
|
15
|
+
/**
|
|
16
|
+
* `markdown_text` (and so a streamed message, cards included) tops out near
|
|
17
|
+
* 12k characters; past it Slack answers `msg_too_long`. Plain `text` allows
|
|
18
|
+
* about 40k.
|
|
19
|
+
*/
|
|
20
|
+
export declare const SLACK_MARKDOWN_TEXT_MAX_LEN = 12000;
|
|
15
21
|
/** Rotating assistant status lines (Slack `loading_messages`). */
|
|
16
22
|
export declare const SLACK_DEFAULT_LOADING_MESSAGES: readonly ["Thinking…", "Working on it…", "Almost there…"];
|
|
17
23
|
/** Slack API errors that mean a feature is unavailable for this app. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/constants.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAE3C,eAAO,MAAM,gBAAgB,UAAU,CAAC;AACxC,eAAO,MAAM,uBAAuB,IAAI,CAAC;AACzC,eAAO,MAAM,4BAA4B,OAAQ,CAAC;AAClD;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,KAAK,CAAC;AACvC,eAAO,MAAM,6BAA6B,KAAK,CAAC;AAChD,gFAAgF;AAChF,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAC5C,eAAO,MAAM,mBAAmB,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/constants.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAE3C,eAAO,MAAM,gBAAgB,UAAU,CAAC;AACxC,eAAO,MAAM,uBAAuB,IAAI,CAAC;AACzC,eAAO,MAAM,4BAA4B,OAAQ,CAAC;AAClD;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,KAAK,CAAC;AACvC,eAAO,MAAM,6BAA6B,KAAK,CAAC;AAChD,gFAAgF;AAChF,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAC5C,eAAO,MAAM,mBAAmB,KAAK,CAAC;AACtC;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,QAAS,CAAC;AAElD,kEAAkE;AAClE,eAAO,MAAM,8BAA8B,YACzC,WAAW,EACX,gBAAgB,EAChB,eAAe,CACP,CAAC;AAEX,wEAAwE;AACxE,eAAO,MAAM,wBAAwB,EAAE,GAAG,CAAC,MAAM,CAO/C,CAAC"}
|
|
@@ -12,6 +12,12 @@ export const SLACK_LOADING_MESSAGE_MAX_LEN = 50;
|
|
|
12
12
|
/** Slack `assistant.threads.setStatus` accepts at most 5 `loading_messages`. */
|
|
13
13
|
export const SLACK_LOADING_MESSAGES_MAX = 5;
|
|
14
14
|
export const SLACK_TITLE_MAX_LEN = 80;
|
|
15
|
+
/**
|
|
16
|
+
* `markdown_text` (and so a streamed message, cards included) tops out near
|
|
17
|
+
* 12k characters; past it Slack answers `msg_too_long`. Plain `text` allows
|
|
18
|
+
* about 40k.
|
|
19
|
+
*/
|
|
20
|
+
export const SLACK_MARKDOWN_TEXT_MAX_LEN = 12000;
|
|
15
21
|
/** Rotating assistant status lines (Slack `loading_messages`). */
|
|
16
22
|
export const SLACK_DEFAULT_LOADING_MESSAGES = [
|
|
17
23
|
"Thinking…",
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import type { ChannelEventHandlers } from "../../types.js";
|
|
5
5
|
import { type SlackLog } from "./log.js";
|
|
6
|
-
import type { SlackAccessPolicy, SlackChannelState, SlackCredentials, SlackMessageHandler, SlackRespondTo, SlackSuggestedPrompt } from "./types.js";
|
|
6
|
+
import type { SlackAccessPolicy, SlackChannelState, SlackCredentials, SlackMessageHandler, SlackReplyOptions, SlackRespondTo, SlackSuggestedPrompt, SlackToolLabels } from "./types.js";
|
|
7
7
|
export declare function resolveSlackRespondTo(policy: SlackAccessPolicy | undefined): SlackRespondTo;
|
|
8
8
|
/** Defaults to true when omitted. */
|
|
9
9
|
export declare function resolveSlackBlockExternals(policy: SlackAccessPolicy | undefined): boolean;
|
|
@@ -22,18 +22,23 @@ export declare const defaultOnDirectMessage: SlackMessageHandler;
|
|
|
22
22
|
export declare const defaultOnChannelPost: SlackMessageHandler;
|
|
23
23
|
export interface BuildDefaultEventsOptions {
|
|
24
24
|
credentials?: SlackCredentials;
|
|
25
|
+
/** Same shape as `slackChannel({ reply })`; see {@link SlackReplyOptions}. */
|
|
26
|
+
reply?: SlackReplyOptions;
|
|
27
|
+
/** Same as `slackChannel({ toolLabels })`. */
|
|
28
|
+
toolLabels?: SlackToolLabels;
|
|
29
|
+
/** @deprecated Use `reply`. */
|
|
25
30
|
streaming?: boolean;
|
|
31
|
+
/** @deprecated Use `reply`. */
|
|
26
32
|
thinkingSteps?: boolean;
|
|
33
|
+
/** @deprecated Use `reply.status.idle`. */
|
|
34
|
+
loadingMessages?: readonly string[];
|
|
27
35
|
suggestedPrompts?: SlackSuggestedPrompt[];
|
|
28
36
|
suggestedPromptsTitle?: string;
|
|
29
|
-
/** Rotating assistant status lines; defaults to pack constants. */
|
|
30
|
-
loadingMessages?: readonly string[];
|
|
31
37
|
/** Resolved per-call so channel onStart can rebind the server logger. */
|
|
32
38
|
getLog?: () => SlackLog;
|
|
33
39
|
}
|
|
34
40
|
/**
|
|
35
41
|
* Build default stream-event handlers (typing, streaming, replies).
|
|
36
|
-
* Streaming / thinking default to ON.
|
|
37
42
|
*
|
|
38
43
|
* Tool-approval cards are a separate primitive — compose with
|
|
39
44
|
* `buildToolApprovalEvents` or set `toolApprovals: true` on `slackChannel`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/defaults.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAuB,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/defaults.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAuB,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAUhF,OAAO,EAAmB,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AAO1D,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,EACd,oBAAoB,EACpB,eAAe,EAChB,MAAM,YAAY,CAAC;AAMpB,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,iBAAiB,GAAG,SAAS,GACpC,cAAc,CAEhB;AAED,qCAAqC;AACrC,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,iBAAiB,GAAG,SAAS,GACpC,OAAO,CAET;AAED,6EAA6E;AAC7E,wBAAgB,6BAA6B,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAS7E;AAyBD,6EAA6E;AAC7E,wBAAgB,sBAAsB,CACpC,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,EACnC,MAAM,CAAC,EAAE,iBAAiB,GACzB,mBAAmB,CAQrB;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CACxC,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,EACnC,MAAM,CAAC,EAAE,iBAAiB,GACzB,mBAAmB,CAWrB;AAED,eAAO,MAAM,mBAAmB,EAAE,mBACR,CAAC;AAC3B,eAAO,MAAM,sBAAsB,EAAE,mBACX,CAAC;AAC3B,eAAO,MAAM,oBAAoB,EAAE,mBACL,CAAC;AAE/B,MAAM,WAAW,yBAAyB;IACxC,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,8EAA8E;IAC9E,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,8CAA8C;IAC9C,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,+BAA+B;IAC/B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,+BAA+B;IAC/B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,2CAA2C;IAC3C,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,gBAAgB,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAC1C,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,yEAAyE;IACzE,MAAM,CAAC,EAAE,MAAM,QAAQ,CAAC;CACzB;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,GAAE,yBAA8B,GACtC,oBAAoB,CAAC,iBAAiB,CAAC,CAkhBzC"}
|