@cursor/july 0.1.99 → 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 +4 -2
- package/dist/channels/github/defaults.d.ts.map +1 -1
- package/dist/channels/github/defaults.js +28 -3
- package/dist/channels/github/progress.d.ts +7 -0
- package/dist/channels/github/progress.d.ts.map +1 -1
- 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 +154 -76
- 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 +5 -0
- package/dist/channels/slack/live-delivery.d.ts.map +1 -1
- package/dist/channels/slack/live-delivery.js +107 -19
- 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 +145 -6
- 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.BplEAZ3S.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.CHXyv4wP.js → VPLocalSearchBox.l8omwc6D.js} +1 -1
- package/dist/docs/assets/chunks/{theme.BTcsZmjQ.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_connections.md.DxldvyIB.js → reference_connections.md.BiGoBAk2.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/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 +1041 -30
- package/dist/docs/llms.txt +14 -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 +4 -4
- 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 +4 -4
- 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 +4 -4
- 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 +6 -0
- package/dist/files-backends/cursor-hosted.d.ts.map +1 -1
- package/dist/files-backends/cursor-hosted.js +6 -9
- package/dist/internal/cli-deploy.js +2 -2
- 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/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 +12 -5
- package/dist/internal/framework-file-storage.d.ts.map +1 -1
- package/dist/internal/framework-file-storage.js +36 -5
- package/dist/internal/framework-storage-selection.d.ts +12 -12
- package/dist/internal/framework-storage-selection.d.ts.map +1 -1
- package/dist/internal/framework-storage-selection.js +33 -39
- package/dist/internal/session-run-log.d.ts +3 -3
- package/dist/internal/session-run-log.d.ts.map +1 -1
- package/dist/internal/session-run-log.js +6 -7
- package/dist/internal/storage-coordinator.d.ts +0 -6
- package/dist/internal/storage-coordinator.d.ts.map +1 -1
- package/dist/internal/storage-coordinator.js +1 -9
- package/dist/playground/assets/index-BszoQDc6.css +1 -0
- package/dist/playground/assets/{index-jzNbJENa.js → index-DVs98vPL.js} +1 -1
- 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/types.d.ts +5 -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/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/connections.md +1 -1
- 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/channels/github/defaults.ts +36 -3
- package/src/channels/github/progress.ts +7 -0
- package/src/channels/slack/api.ts +35 -17
- package/src/channels/slack/constants.ts +6 -0
- package/src/channels/slack/defaults.ts +173 -92
- package/src/channels/slack/dispatch.ts +8 -1
- package/src/channels/slack/inbound.ts +17 -0
- package/src/channels/slack/index.ts +1 -0
- package/src/channels/slack/live-delivery.ts +131 -20
- 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 +159 -6
- package/src/files-backends/cursor-hosted.ts +15 -5
- package/src/internal/cli-deploy.ts +2 -2
- package/src/internal/conversation-mirror.ts +3 -8
- package/src/internal/cursor/hosted-store-secrets.ts +72 -0
- package/src/internal/deploy-client.ts +10 -10
- package/src/internal/discovery.ts +9 -1
- package/src/internal/framework-file-storage.ts +41 -5
- package/src/internal/framework-storage-selection.ts +31 -44
- package/src/internal/session-run-log.ts +6 -11
- package/src/internal/storage-coordinator.ts +1 -11
- package/src/storage-backends/cursor-hosted-v2.ts +219 -0
- package/src/storage-backends/cursor-hosted.ts +6 -1
- package/src/types.ts +5 -0
- package/dist/docs/assets/chunks/@localSearchIndexroot.DpuI4i7Z.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/internal/null-kv-storage.d.ts +0 -48
- package/dist/internal/null-kv-storage.d.ts.map +0 -1
- package/dist/internal/null-kv-storage.js +0 -58
- package/dist/playground/assets/index-D7rGZNjy.css +0 -1
- package/src/internal/null-kv-storage.ts +0 -74
- /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/{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
|
@@ -10,14 +10,28 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
10
10
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
11
11
|
});
|
|
12
12
|
};
|
|
13
|
-
|
|
13
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
14
|
+
var t = {};
|
|
15
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
16
|
+
t[p] = s[p];
|
|
17
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
18
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
19
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
20
|
+
t[p[i]] = s[p[i]];
|
|
21
|
+
}
|
|
22
|
+
return t;
|
|
23
|
+
};
|
|
24
|
+
import { postMessage, setThreadStatus, truncateTypingStatus } from "./api.js";
|
|
14
25
|
import { firstNonEmptyLine, maybeSetSuggestedPrompts } from "./assistant.js";
|
|
15
26
|
import { defaultSlackAuth } from "./auth.js";
|
|
16
27
|
import { SLACK_DEFAULT_LOADING_MESSAGES, SLACK_TYPING_MIN_GROWTH, SLACK_TYPING_MIN_INTERVAL_MS, } from "./constants.js";
|
|
17
28
|
import { createStreamDeliveryStrategy } from "./live-delivery.js";
|
|
18
29
|
import { defaultSlackLog } from "./log.js";
|
|
19
30
|
import { createProgressDelivery } from "./progress-delivery.js";
|
|
20
|
-
import {
|
|
31
|
+
import { createReasoningCard } from "./reasoning-card.js";
|
|
32
|
+
import { redactSecretTokens } from "./redact.js";
|
|
33
|
+
import { resolveSlackReply } from "./reply-options.js";
|
|
34
|
+
import { createToolCards } from "./tool-cards.js";
|
|
21
35
|
const SLACK_TURN_FAILURE_FALLBACK = "I hit an error while handling your request. Please try again or rephrase.";
|
|
22
36
|
const SLACK_TURN_FAILURE_MAX_CHARS = 400;
|
|
23
37
|
export function resolveSlackRespondTo(policy) {
|
|
@@ -40,9 +54,8 @@ export function formatSlackTurnFailureMessage(raw) {
|
|
|
40
54
|
return `I hit an error while handling your request: ${scrubbed}`;
|
|
41
55
|
}
|
|
42
56
|
function scrubSlackErrorDetail(message) {
|
|
43
|
-
const scrubbed = message
|
|
57
|
+
const scrubbed = redactSecretTokens(message)
|
|
44
58
|
.replace(/https?:\/\/\S+/gi, "[url]")
|
|
45
|
-
.replace(/\b(crsr_|xox[baprs]-|sk-|Bearer\s+)\S+/gi, "[redacted]")
|
|
46
59
|
.replace(/\/(?:home|Users|var\/folders)\/\S+/g, "[path]")
|
|
47
60
|
.replace(/\b[A-Za-z]:(?:\\|\/)[^\s]+/g, "[path]")
|
|
48
61
|
.replace(/\\\\[^\s]+/g, "[path]")
|
|
@@ -91,7 +104,6 @@ export const defaultOnDirectMessage = createDefaultOnInbound();
|
|
|
91
104
|
export const defaultOnChannelPost = createDefaultOnChannelPost();
|
|
92
105
|
/**
|
|
93
106
|
* Build default stream-event handlers (typing, streaming, replies).
|
|
94
|
-
* Streaming / thinking default to ON.
|
|
95
107
|
*
|
|
96
108
|
* Tool-approval cards are a separate primitive — compose with
|
|
97
109
|
* `buildToolApprovalEvents` or set `toolApprovals: true` on `slackChannel`.
|
|
@@ -99,16 +111,58 @@ export const defaultOnChannelPost = createDefaultOnChannelPost();
|
|
|
99
111
|
export function buildDefaultEvents(options = {}) {
|
|
100
112
|
var _a, _b;
|
|
101
113
|
const credentials = options.credentials;
|
|
102
|
-
const
|
|
103
|
-
|
|
114
|
+
const reply = resolveSlackReply({
|
|
115
|
+
reply: options.reply,
|
|
116
|
+
toolLabels: options.toolLabels,
|
|
117
|
+
streaming: options.streaming,
|
|
118
|
+
thinkingSteps: options.thinkingSteps,
|
|
119
|
+
loadingMessages: options.loadingMessages,
|
|
120
|
+
});
|
|
121
|
+
const streaming = reply.mode === "stream";
|
|
104
122
|
const suggestedPrompts = (_a = options.suggestedPrompts) !== null && _a !== void 0 ? _a : [];
|
|
105
123
|
const suggestedPromptsTitle = options.suggestedPromptsTitle;
|
|
106
|
-
const loadingMessages =
|
|
124
|
+
const loadingMessages = reply.status.idle;
|
|
107
125
|
const botToken = credentials === null || credentials === void 0 ? void 0 : credentials.botToken;
|
|
108
126
|
const getLog = (_b = options.getLog) !== null && _b !== void 0 ? _b : (() => defaultSlackLog);
|
|
109
127
|
const strategy = createStreamDeliveryStrategy({ botToken, getLog });
|
|
110
128
|
const progress = createProgressDelivery({ botToken, getLog });
|
|
111
129
|
const streamLive = (state) => streaming && !state.streamingUnavailable;
|
|
130
|
+
const streamTarget = (channel) => {
|
|
131
|
+
var _a;
|
|
132
|
+
const channelId = (_a = channel.state.streamChannelId) !== null && _a !== void 0 ? _a : channel.state.channelId;
|
|
133
|
+
if (channelId === null ||
|
|
134
|
+
channelId === "" ||
|
|
135
|
+
channel.state.threadTs === null) {
|
|
136
|
+
return null;
|
|
137
|
+
}
|
|
138
|
+
return channelId;
|
|
139
|
+
};
|
|
140
|
+
const sendCards = (args) => __awaiter(this, void 0, void 0, function* () {
|
|
141
|
+
if (!streamLive(args.channel.state)) {
|
|
142
|
+
return false;
|
|
143
|
+
}
|
|
144
|
+
const channelId = streamTarget(args.channel);
|
|
145
|
+
if (channelId === null) {
|
|
146
|
+
return false;
|
|
147
|
+
}
|
|
148
|
+
return strategy.appendChunks(Object.assign(Object.assign({}, args), { channelId }));
|
|
149
|
+
});
|
|
150
|
+
const reasoning = reply.reasoningCard === false
|
|
151
|
+
? null
|
|
152
|
+
: createReasoningCard(reply.reasoningCard, (_a) => {
|
|
153
|
+
var { chunk } = _a, rest = __rest(_a, ["chunk"]);
|
|
154
|
+
return sendCards(Object.assign(Object.assign({}, rest), { chunks: [chunk] }));
|
|
155
|
+
});
|
|
156
|
+
const toolCards = reply.toolCards === false
|
|
157
|
+
? null
|
|
158
|
+
: createToolCards(reply.toolCards, reply.toolLabel);
|
|
159
|
+
const completeReasoning = (channel, sessionId) => __awaiter(this, void 0, void 0, function* () {
|
|
160
|
+
if (reasoning === null || reasoning === void 0 ? void 0 : reasoning.inProgress(channel)) {
|
|
161
|
+
yield reasoning.flush({ channel, sessionId, status: "complete" });
|
|
162
|
+
}
|
|
163
|
+
});
|
|
164
|
+
/** Subagent events carry `parentCallId`; cards and the reply are the parent's. */
|
|
165
|
+
const nested = (event) => event.data.parentCallId !== undefined;
|
|
112
166
|
const clearWorkingStatus = (channelId, threadTs) => __awaiter(this, void 0, void 0, function* () {
|
|
113
167
|
const result = yield setThreadStatus({
|
|
114
168
|
botToken,
|
|
@@ -225,8 +279,11 @@ export function buildDefaultEvents(options = {}) {
|
|
|
225
279
|
channel.state.lastReasoningTypingStatus = null;
|
|
226
280
|
channel.state.streamTs = null;
|
|
227
281
|
channel.state.streamChannelId = null;
|
|
282
|
+
channel.state.streamFull = false;
|
|
228
283
|
channel.state.lastPostedText = null;
|
|
229
284
|
channel.state.streamBlockText = null;
|
|
285
|
+
channel.state.reasoningCard = undefined;
|
|
286
|
+
channel.state.toolCardCounts = {};
|
|
230
287
|
// Keep lastBotMessageTs across turns — warm delta watermark.
|
|
231
288
|
channel.state.approvalMessageByCallId = {};
|
|
232
289
|
const state = channel.state;
|
|
@@ -250,15 +307,15 @@ export function buildDefaultEvents(options = {}) {
|
|
|
250
307
|
},
|
|
251
308
|
"message.appended"(event, channel) {
|
|
252
309
|
return __awaiter(this, void 0, void 0, function* () {
|
|
253
|
-
|
|
254
|
-
if (!streamLive(channel.state)) {
|
|
310
|
+
// Nested (subagent) text is not the reply.
|
|
311
|
+
if (nested(event) || !streamLive(channel.state)) {
|
|
255
312
|
return;
|
|
256
313
|
}
|
|
257
|
-
const channelId = (
|
|
258
|
-
|
|
259
|
-
if (channelId === null || channelId === "" || threadTs === null) {
|
|
314
|
+
const channelId = streamTarget(channel);
|
|
315
|
+
if (channelId === null) {
|
|
260
316
|
return;
|
|
261
317
|
}
|
|
318
|
+
yield completeReasoning(channel, event.sessionId);
|
|
262
319
|
yield strategy.append({
|
|
263
320
|
channel,
|
|
264
321
|
channelId,
|
|
@@ -269,6 +326,17 @@ export function buildDefaultEvents(options = {}) {
|
|
|
269
326
|
},
|
|
270
327
|
"reasoning.appended"(event, channel) {
|
|
271
328
|
return __awaiter(this, void 0, void 0, function* () {
|
|
329
|
+
if (!nested(event)) {
|
|
330
|
+
yield reasoning === null || reasoning === void 0 ? void 0 : reasoning.append({
|
|
331
|
+
channel,
|
|
332
|
+
sessionId: event.sessionId,
|
|
333
|
+
text: event.data.text,
|
|
334
|
+
});
|
|
335
|
+
}
|
|
336
|
+
// The chip is hidden while a stream is open.
|
|
337
|
+
if (!reply.status.reasoning || channel.state.streamTs !== null) {
|
|
338
|
+
return;
|
|
339
|
+
}
|
|
272
340
|
const line = firstNonEmptyLine(event.data.text);
|
|
273
341
|
if (line === undefined) {
|
|
274
342
|
return;
|
|
@@ -289,102 +357,109 @@ export function buildDefaultEvents(options = {}) {
|
|
|
289
357
|
if (channel.state.channelId === null || channel.state.threadTs === null) {
|
|
290
358
|
return;
|
|
291
359
|
}
|
|
360
|
+
// One entry: Slack cycles `loading_messages` every couple of seconds,
|
|
361
|
+
// so padding an informative line with the rotation makes the chip
|
|
362
|
+
// flip between the reasoning and filler until the next update.
|
|
292
363
|
yield setThreadStatus({
|
|
293
364
|
botToken,
|
|
294
365
|
channelId: channel.state.channelId,
|
|
295
366
|
threadTs: channel.state.threadTs,
|
|
296
367
|
status,
|
|
297
|
-
loadingMessages: [
|
|
298
|
-
status,
|
|
299
|
-
...loadingMessages.filter((message) => message !== status),
|
|
300
|
-
],
|
|
368
|
+
loadingMessages: [status],
|
|
301
369
|
});
|
|
302
370
|
channel.state.lastReasoningTypingAtMs = now;
|
|
303
371
|
channel.state.lastReasoningTypingStatus = status;
|
|
304
372
|
});
|
|
305
373
|
},
|
|
374
|
+
"reasoning.completed"(event, channel) {
|
|
375
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
376
|
+
if (reasoning === null || nested(event)) {
|
|
377
|
+
return;
|
|
378
|
+
}
|
|
379
|
+
reasoning.endBlock(channel);
|
|
380
|
+
yield reasoning.flush({
|
|
381
|
+
channel,
|
|
382
|
+
sessionId: event.sessionId,
|
|
383
|
+
status: "in_progress",
|
|
384
|
+
});
|
|
385
|
+
});
|
|
386
|
+
},
|
|
306
387
|
"actions.requested"(event, channel) {
|
|
307
388
|
return __awaiter(this, void 0, void 0, function* () {
|
|
308
|
-
var _a;
|
|
309
389
|
const pending = channel.state.pendingToolCallMessage;
|
|
310
390
|
channel.state.pendingToolCallMessage = null;
|
|
311
|
-
const
|
|
391
|
+
const calls = event.data.calls;
|
|
392
|
+
if (toolCards !== null && strategy.inlineToolSteps && !nested(event)) {
|
|
393
|
+
// Card order: the thinking that led to these tools goes first.
|
|
394
|
+
yield reasoning === null || reasoning === void 0 ? void 0 : reasoning.flush({
|
|
395
|
+
channel,
|
|
396
|
+
sessionId: event.sessionId,
|
|
397
|
+
status: "in_progress",
|
|
398
|
+
});
|
|
399
|
+
const streamed = yield sendCards({
|
|
400
|
+
channel,
|
|
401
|
+
sessionId: event.sessionId,
|
|
402
|
+
chunks: toolCards.forCalls(channel.state, calls),
|
|
403
|
+
});
|
|
404
|
+
// An open stream hides the chip; skip the status write.
|
|
405
|
+
if (streamed) {
|
|
406
|
+
return;
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
if (reply.status.tools === false) {
|
|
410
|
+
return;
|
|
411
|
+
}
|
|
312
412
|
const statusText = pending !== null
|
|
313
413
|
? truncateTypingStatus(pending)
|
|
314
|
-
: truncateTypingStatus(
|
|
315
|
-
if (
|
|
316
|
-
|
|
317
|
-
streamLive(channel.state)) {
|
|
318
|
-
const channelId = (_a = channel.state.streamChannelId) !== null && _a !== void 0 ? _a : channel.state.channelId;
|
|
319
|
-
const threadTs = channel.state.threadTs;
|
|
320
|
-
if (channelId !== null && channelId !== "" && threadTs !== null) {
|
|
321
|
-
const chunks = buildTaskChunksForCalls(event.data.calls, "in_progress");
|
|
322
|
-
const streamed = yield strategy.appendChunks({
|
|
323
|
-
channel,
|
|
324
|
-
channelId,
|
|
325
|
-
chunks,
|
|
326
|
-
sessionId: event.sessionId,
|
|
327
|
-
});
|
|
328
|
-
if (streamed) {
|
|
329
|
-
if (channel.state.channelId !== null &&
|
|
330
|
-
channel.state.threadTs !== null) {
|
|
331
|
-
yield setThreadStatus({
|
|
332
|
-
botToken,
|
|
333
|
-
channelId: channel.state.channelId,
|
|
334
|
-
threadTs: channel.state.threadTs,
|
|
335
|
-
status: statusText,
|
|
336
|
-
});
|
|
337
|
-
}
|
|
338
|
-
return;
|
|
339
|
-
}
|
|
340
|
-
}
|
|
414
|
+
: truncateTypingStatus(reply.status.tools(calls));
|
|
415
|
+
if (channel.state.channelId === null || channel.state.threadTs === null) {
|
|
416
|
+
return;
|
|
341
417
|
}
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
}
|
|
418
|
+
// Hold the tool line steady; see reasoning.appended.
|
|
419
|
+
yield setThreadStatus({
|
|
420
|
+
botToken,
|
|
421
|
+
channelId: channel.state.channelId,
|
|
422
|
+
threadTs: channel.state.threadTs,
|
|
423
|
+
status: statusText,
|
|
424
|
+
loadingMessages: [statusText],
|
|
425
|
+
});
|
|
426
|
+
if (toolCards !== null &&
|
|
427
|
+
channel.state.streamingUnavailable === true &&
|
|
428
|
+
(channel.state.streamTs === null || channel.state.streamTs === "")) {
|
|
429
|
+
yield progress.upsert({ channel, text: statusText });
|
|
354
430
|
}
|
|
355
431
|
});
|
|
356
432
|
},
|
|
357
433
|
"action.result"(event, channel) {
|
|
358
434
|
return __awaiter(this, void 0, void 0, function* () {
|
|
359
|
-
var _a;
|
|
360
435
|
const streamTs = channel.state.streamTs;
|
|
361
|
-
if (
|
|
362
|
-
!
|
|
363
|
-
|
|
436
|
+
if (toolCards === null ||
|
|
437
|
+
!strategy.inlineToolSteps ||
|
|
438
|
+
nested(event) ||
|
|
364
439
|
streamTs === null ||
|
|
365
440
|
streamTs === "") {
|
|
366
441
|
return;
|
|
367
442
|
}
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
channel: channelId,
|
|
380
|
-
ts: streamTs,
|
|
381
|
-
chunks: [chunk],
|
|
443
|
+
yield sendCards({
|
|
444
|
+
channel,
|
|
445
|
+
sessionId: event.sessionId,
|
|
446
|
+
chunks: [
|
|
447
|
+
toolCards.forResult(channel.state, {
|
|
448
|
+
callId: event.data.callId,
|
|
449
|
+
toolName: event.data.toolName,
|
|
450
|
+
output: event.data.output,
|
|
451
|
+
isError: event.data.isError,
|
|
452
|
+
}),
|
|
453
|
+
],
|
|
382
454
|
});
|
|
383
455
|
});
|
|
384
456
|
},
|
|
385
457
|
"message.completed"(event, channel) {
|
|
386
458
|
return __awaiter(this, void 0, void 0, function* () {
|
|
387
459
|
var _a;
|
|
460
|
+
if (nested(event)) {
|
|
461
|
+
return;
|
|
462
|
+
}
|
|
388
463
|
if (event.data.finishReason === "tool_call") {
|
|
389
464
|
channel.state.pendingToolCallMessage = (_a = firstNonEmptyLine(event.data.text)) !== null && _a !== void 0 ? _a : null;
|
|
390
465
|
// The harness restarts its cumulative text after a tool call, so the
|
|
@@ -397,6 +472,7 @@ export function buildDefaultEvents(options = {}) {
|
|
|
397
472
|
if (state.channelId === null || state.threadTs === null) {
|
|
398
473
|
return;
|
|
399
474
|
}
|
|
475
|
+
yield completeReasoning(channel, event.sessionId);
|
|
400
476
|
// Empty final text: still close any open stream / clear the skeleton
|
|
401
477
|
// and clear typing.
|
|
402
478
|
if (event.data.text === "") {
|
|
@@ -430,6 +506,7 @@ export function buildDefaultEvents(options = {}) {
|
|
|
430
506
|
const unpublished = typeof result === "string" &&
|
|
431
507
|
result !== "" &&
|
|
432
508
|
result !== channel.state.lastPostedText;
|
|
509
|
+
yield completeReasoning(channel, event.sessionId);
|
|
433
510
|
if (unpublished) {
|
|
434
511
|
yield deliverReplyText({
|
|
435
512
|
channel,
|
|
@@ -476,6 +553,7 @@ export function buildDefaultEvents(options = {}) {
|
|
|
476
553
|
const errorText = formatSlackTurnFailureMessage(event.data.message);
|
|
477
554
|
let delivered = false;
|
|
478
555
|
if (streamLive(state)) {
|
|
556
|
+
yield completeReasoning(channel, event.sessionId);
|
|
479
557
|
({ delivered } = yield strategy.fail({
|
|
480
558
|
channel,
|
|
481
559
|
channelId: (_a = state.streamChannelId) !== null && _a !== void 0 ? _a : state.channelId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatch.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/dispatch.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,KAAK,oBAAoB,EAI1B,MAAM,yCAAyC,CAAC;AAGjD,OAAO,KAAK,EACV,YAAY,EACZ,WAAW,EAEX,aAAa,EACd,MAAM,gBAAgB,CAAC;AAYxB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAK7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"dispatch.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/dispatch.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,7 +18,7 @@ import { firstLineTitle, maybeSetSuggestedPrompts, maybeSetThreadTitle, } from "
|
|
|
18
18
|
import { appendSlackAttachmentAnnotations, prepareSlackAttachments, SLACK_ATTACHMENT_ONLY_PROMPT, } from "./attachments.js";
|
|
19
19
|
import { handleSlackEvalDirective, parseSlackEvalDirective, } from "./eval-directive.js";
|
|
20
20
|
import { isExternalSlackSender } from "./external-policy.js";
|
|
21
|
-
import { formatSlackContextBlock, parseAppMentionEvent, parseAssistantThreadStarted, parseChannelMessageEvent, parseDirectMessageEvent, parseReactionAddedEvent, } from "./inbound.js";
|
|
21
|
+
import { describeSlackEventShape, formatSlackContextBlock, parseAppMentionEvent, parseAssistantThreadStarted, parseChannelMessageEvent, parseDirectMessageEvent, parseReactionAddedEvent, } from "./inbound.js";
|
|
22
22
|
import { defaultSlackLog } from "./log.js";
|
|
23
23
|
import { isWholeMessageStop } from "./stop.js";
|
|
24
24
|
import { loadSlackThreadContextBlock, loadSlackThreadDeltaBlock, } from "./thread-context.js";
|
|
@@ -56,7 +56,7 @@ function slackTurnMedia(args) {
|
|
|
56
56
|
}
|
|
57
57
|
/** Blank per-session adapter state. */
|
|
58
58
|
export function emptySlackChannelState(patch = {}) {
|
|
59
|
-
return Object.assign({ channelId: null, threadTs: null, teamId: null, triggeringUserId: null, pendingToolCallMessage: null, lastReasoningTypingAtMs: null, lastReasoningTypingStatus: null, streamTs: null, streamChannelId: null, lastPostedText: null, streamBlockText: null, lastBotMessageTs: null, streamingUnavailable: false, progressTs: null, approvalMessageByCallId: {} }, patch);
|
|
59
|
+
return Object.assign({ channelId: null, threadTs: null, teamId: null, triggeringUserId: null, pendingToolCallMessage: null, lastReasoningTypingAtMs: null, lastReasoningTypingStatus: null, streamTs: null, streamChannelId: null, lastPostedText: null, streamBlockText: null, lastBotMessageTs: null, streamingUnavailable: false, streamFull: false, progressTs: null, approvalMessageByCallId: {}, reasoningCard: undefined, toolCardCounts: {} }, patch);
|
|
60
60
|
}
|
|
61
61
|
function triggeringMergeMessage(message) {
|
|
62
62
|
var _a, _b;
|
|
@@ -484,6 +484,6 @@ export function dispatchInboundFromEventBody(body, deps) {
|
|
|
484
484
|
return deps.channelWatch.handle(channelEvent, eventId);
|
|
485
485
|
}
|
|
486
486
|
}
|
|
487
|
-
log.debug("inbound ignored (unhandled event shape)", { event_id: eventId });
|
|
487
|
+
log.debug("inbound ignored (unhandled event shape)", Object.assign(Object.assign({}, describeSlackEventShape(body)), { event_id: eventId }));
|
|
488
488
|
return false;
|
|
489
489
|
}
|
|
@@ -2,6 +2,15 @@
|
|
|
2
2
|
* Parse Slack Events API payloads into structured inbound messages.
|
|
3
3
|
*/
|
|
4
4
|
import type { SlackMessage } from "./types.js";
|
|
5
|
+
/**
|
|
6
|
+
* `type` / `subtype` of an Events API body's inner event, for log lines about
|
|
7
|
+
* payloads no parser claimed (own-bot echoes, `message_changed`, pane
|
|
8
|
+
* context changes). Never throws on odd shapes.
|
|
9
|
+
*/
|
|
10
|
+
export declare function describeSlackEventShape(body: unknown): {
|
|
11
|
+
event_type: string;
|
|
12
|
+
event_subtype?: string;
|
|
13
|
+
};
|
|
5
14
|
/** Strip common Slack mention tokens for a cleaner model prompt. */
|
|
6
15
|
export declare function slackTextToMarkdown(text: string): string;
|
|
7
16
|
export interface ParseAppMentionOptions {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inbound.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/inbound.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAe,YAAY,EAAE,MAAM,YAAY,CAAC;AAe5D,oEAAoE;AACpE,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CASxD;AAsDD,MAAM,WAAW,sBAAsB;IACrC;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,OAAO,EACb,OAAO,CAAC,EAAE,sBAAsB,GAC/B,YAAY,GAAG,IAAI,CAsBrB;AAED,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,4EAA4E;AAC5E,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,OAAO,GACZ,2BAA2B,GAAG,IAAI,CA+BpC;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,OAAO,GAAG,YAAY,GAAG,IAAI,CA8B1E;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,OAAO,GAAG,YAAY,GAAG,IAAI,CAkD1E;AAED,4EAA4E;AAC5E,MAAM,MAAM,wBAAwB,GAChC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,YAAY,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,YAAY,CAAA;CAAE,GACzC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvD,MAAM,WAAW,0BAA0B;IACzC;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,OAAO,EACb,OAAO,CAAC,EAAE,0BAA0B,GACnC,wBAAwB,GAAG,IAAI,CA4DjC;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,MAAM,CAYT"}
|
|
1
|
+
{"version":3,"file":"inbound.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/inbound.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAe,YAAY,EAAE,MAAM,YAAY,CAAC;AAe5D;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,OAAO,GAAG;IACtD,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAOA;AAED,oEAAoE;AACpE,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CASxD;AAsDD,MAAM,WAAW,sBAAsB;IACrC;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,OAAO,EACb,OAAO,CAAC,EAAE,sBAAsB,GAC/B,YAAY,GAAG,IAAI,CAsBrB;AAED,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,4EAA4E;AAC5E,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,OAAO,GACZ,2BAA2B,GAAG,IAAI,CA+BpC;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,OAAO,GAAG,YAAY,GAAG,IAAI,CA8B1E;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,OAAO,GAAG,YAAY,GAAG,IAAI,CAkD1E;AAED,4EAA4E;AAC5E,MAAM,MAAM,wBAAwB,GAChC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,YAAY,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,YAAY,CAAA;CAAE,GACzC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvD,MAAM,WAAW,0BAA0B;IACzC;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,OAAO,EACb,OAAO,CAAC,EAAE,0BAA0B,GACnC,wBAAwB,GAAG,IAAI,CA4DjC;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,MAAM,CAYT"}
|
|
@@ -13,6 +13,20 @@ function asRecord(value) {
|
|
|
13
13
|
function asString(value) {
|
|
14
14
|
return typeof value === "string" ? value : undefined;
|
|
15
15
|
}
|
|
16
|
+
/**
|
|
17
|
+
* `type` / `subtype` of an Events API body's inner event, for log lines about
|
|
18
|
+
* payloads no parser claimed (own-bot echoes, `message_changed`, pane
|
|
19
|
+
* context changes). Never throws on odd shapes.
|
|
20
|
+
*/
|
|
21
|
+
export function describeSlackEventShape(body) {
|
|
22
|
+
var _a, _b;
|
|
23
|
+
const root = asRecord(body);
|
|
24
|
+
const event = asRecord(root === null || root === void 0 ? void 0 : root.event);
|
|
25
|
+
return {
|
|
26
|
+
event_type: (_b = (_a = asString(event === null || event === void 0 ? void 0 : event.type)) !== null && _a !== void 0 ? _a : asString(root === null || root === void 0 ? void 0 : root.type)) !== null && _b !== void 0 ? _b : "unknown",
|
|
27
|
+
event_subtype: asString(event === null || event === void 0 ? void 0 : event.subtype),
|
|
28
|
+
};
|
|
29
|
+
}
|
|
16
30
|
/** Strip common Slack mention tokens for a cleaner model prompt. */
|
|
17
31
|
export function slackTextToMarkdown(text) {
|
|
18
32
|
return text
|
|
@@ -45,5 +45,6 @@ export * from "./stop.js";
|
|
|
45
45
|
export * from "./stream.js";
|
|
46
46
|
export * from "./thread-context.js";
|
|
47
47
|
export * from "./tool-approval-events.js";
|
|
48
|
+
export { defaultToolCardDetails } from "./tool-cards.js";
|
|
48
49
|
export * from "./types.js";
|
|
49
50
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,cAAc,YAAY,CAAC"}
|
|
@@ -8,6 +8,11 @@
|
|
|
8
8
|
* Assistant-pane threads only render stream APIs. Start lazily with the
|
|
9
9
|
* first real markdown/chunks plus recipient ids — empty startStream is
|
|
10
10
|
* rejected or never attaches.
|
|
11
|
+
*
|
|
12
|
+
* Every call speaks `chunks`. Slack pins a stream's mode at start: text
|
|
13
|
+
* opened as bare `markdown_text` rejects later `task_update` appends with
|
|
14
|
+
* `streaming_mode_mismatch`, so assistant text goes out as `markdown_text`
|
|
15
|
+
* chunks and tool steps can land in the same message.
|
|
11
16
|
*/
|
|
12
17
|
import type { ChannelEventContext } from "../../types.js";
|
|
13
18
|
import type { SlackLog } from "./log.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"live-delivery.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/live-delivery.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"live-delivery.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/live-delivery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAQ1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAIL,KAAK,eAAe,EACrB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEnE,KAAK,YAAY,GAAG,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;AAE3D,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,aAAa,GAAG,SAAS,CAAC;IACpC,MAAM,EAAE,MAAM,QAAQ,CAAC;CACxB;AAED,KAAK,QAAQ,GAAG;IACd,OAAO,EAAE,YAAY,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,eAAe,EAAE,CAAC;CAC5B,CAAC;AAEF,KAAK,UAAU,GAAG;IAChB,OAAO,EAAE,YAAY,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,yEAAyE;IACzE,IAAI,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACvC,MAAM,CAAC,IAAI,EAAE,UAAU,GAAG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,YAAY,CACV,IAAI,EAAE,UAAU,GAAG;QAAE,MAAM,EAAE,eAAe,EAAE,CAAA;KAAE,GAC/C,OAAO,CAAC,OAAO,CAAC,CAAC;IACpB;;;OAGG;IACH,QAAQ,CACN,IAAI,EAAE,UAAU,GAAG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAClC,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACnC,aAAa,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,YAAY,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D,aAAa,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,YAAY,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D,IAAI,CACF,IAAI,EAAE,UAAU,GAAG;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,GACvC,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CACpC;AAmBD,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,gBAAgB,GACrB,oBAAoB,CA2VtB"}
|