@cursor/july 0.1.20 → 0.1.21
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/dist/bin/agent-serve.js +0 -0
- package/dist/channels/github/instrument.d.ts +20 -0
- package/dist/channels/github/instrument.d.ts.map +1 -0
- package/dist/channels/slack/api.d.ts +2 -0
- package/dist/channels/slack/api.d.ts.map +1 -1
- package/dist/channels/slack/api.js +3 -0
- package/dist/channels/slack/bot-mentions.d.ts +106 -0
- package/dist/channels/slack/bot-mentions.d.ts.map +1 -0
- package/dist/channels/slack/bot-mentions.js +243 -0
- package/dist/channels/slack/dispatch.d.ts +6 -0
- package/dist/channels/slack/dispatch.d.ts.map +1 -1
- package/dist/channels/slack/dispatch.js +24 -3
- package/dist/channels/slack/inbound.d.ts +10 -1
- package/dist/channels/slack/inbound.d.ts.map +1 -1
- package/dist/channels/slack/inbound.js +12 -4
- 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/slack-channel.d.ts.map +1 -1
- package/dist/channels/slack/slack-channel.js +61 -22
- package/dist/channels/slack/types.d.ts +58 -0
- package/dist/channels/slack/types.d.ts.map +1 -1
- package/dist/docs/404.html +1 -1
- package/dist/docs/ab.html +2 -2
- package/dist/docs/assets/{app.T-5ImnM3.js → app.jDxLzWv4.js} +1 -1
- package/dist/docs/assets/chunks/@localSearchIndexroot.DoJHJjqF.js +1 -0
- package/dist/docs/assets/chunks/{VPLocalSearchBox.OMGMWH6H.js → VPLocalSearchBox.Y6bDR1-a.js} +1 -1
- package/dist/docs/assets/chunks/{theme.DLg4yB4D.js → theme.CLazCWlJ.js} +2 -2
- package/dist/docs/building-with-agents.html +2 -2
- package/dist/docs/concepts.html +2 -2
- package/dist/docs/deployment.html +2 -2
- package/dist/docs/evals.html +2 -2
- package/dist/docs/example-agents/approval-buddy.html +2 -2
- package/dist/docs/example-agents/benny.html +2 -2
- package/dist/docs/example-agents/bugbot.html +2 -2
- package/dist/docs/example-agents/codebase-wiki.html +2 -2
- package/dist/docs/example-agents/codeowners-review.html +2 -2
- package/dist/docs/example-agents/concierge.html +2 -2
- package/dist/docs/example-agents/fsd.html +2 -2
- package/dist/docs/example-agents/index.html +2 -2
- package/dist/docs/example-agents/knowledge-base.html +2 -2
- package/dist/docs/example-agents/oncall.html +2 -2
- package/dist/docs/example-agents/security-reviewer.html +2 -2
- package/dist/docs/example-agents/slack-agent.html +2 -2
- package/dist/docs/example-agents/weather-agent.html +2 -2
- package/dist/docs/guides/agent-to-agent.html +2 -2
- package/dist/docs/guides/cloud-runtime.html +2 -2
- package/dist/docs/guides/github.html +2 -2
- package/dist/docs/guides/human-in-the-loop.html +2 -2
- package/dist/docs/guides/mcp-oauth.html +2 -2
- package/dist/docs/guides/slack.html +2 -2
- package/dist/docs/guides/webhooks.html +2 -2
- package/dist/docs/hillclimbing.html +2 -2
- package/dist/docs/index.html +2 -2
- package/dist/docs/quickstart.html +2 -2
- package/dist/docs/reference/agent-config.html +2 -2
- package/dist/docs/reference/channels.html +2 -2
- package/dist/docs/reference/cli.html +2 -2
- package/dist/docs/reference/connections.html +2 -2
- package/dist/docs/reference/hooks.html +2 -2
- package/dist/docs/reference/http-api.html +2 -2
- package/dist/docs/reference/instructions.html +2 -2
- package/dist/docs/reference/playground.html +2 -2
- package/dist/docs/reference/project-layout.html +2 -2
- package/dist/docs/reference/prompt.html +2 -2
- package/dist/docs/reference/schedules.html +2 -2
- package/dist/docs/reference/sessions.html +2 -2
- package/dist/docs/reference/skills.html +2 -2
- package/dist/docs/reference/subagents.html +2 -2
- package/dist/docs/reference/tools.html +2 -2
- package/dist/docs/scaffolding-agents.html +2 -2
- package/dist/docs/storage.html +2 -2
- package/dist/docs/troubleshooting.html +2 -2
- package/dist/internal/json-dir-store.d.ts +32 -0
- package/dist/internal/json-dir-store.d.ts.map +1 -0
- package/dist/internal/json-dir-store.js +100 -0
- package/dist/internal/resolved-connections.d.ts +1 -1
- package/dist/internal/resolved-connections.d.ts.map +1 -1
- package/dist/internal/resolved-connections.js +10 -0
- package/dist/internal/session-engine.d.ts +4 -1
- package/dist/internal/session-engine.d.ts.map +1 -1
- package/dist/internal/session-engine.js +13 -2
- package/dist/playground/assets/index-CjOQ4hN9.css +1 -0
- package/dist/playground/assets/index-dshZQJCp.js +85 -0
- package/dist/playground/index.html +2 -2
- package/dist/types.d.ts +7 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +9 -0
- package/package.json +24 -24
- package/src/bin/agent-serve.version.test.ts +62 -0
- package/src/channels/github/api.test.ts +64 -0
- package/src/channels/github/auth.test.ts +105 -0
- package/src/channels/github/cursor-account.test.ts +204 -0
- package/src/channels/github/forward.test.ts +457 -0
- package/src/channels/github/github.test.ts +937 -0
- package/src/channels/github/replay.test.ts +179 -0
- package/src/channels/slack/api.post-message.test.ts +148 -0
- package/src/channels/slack/api.ts +5 -0
- package/src/channels/slack/approvals.test.ts +328 -0
- package/src/channels/slack/block-actions.test.ts +452 -0
- package/src/channels/slack/bot-mentions.test.ts +217 -0
- package/src/channels/slack/bot-mentions.ts +315 -0
- package/src/channels/slack/channel-watch.test.ts +363 -0
- package/src/channels/slack/cursor-account.test.ts +253 -0
- package/src/channels/slack/defaults.final-post.test.ts +182 -0
- package/src/channels/slack/dispatch.test.ts +795 -0
- package/src/channels/slack/dispatch.ts +27 -1
- package/src/channels/slack/eval-directive.test.ts +273 -0
- package/src/channels/slack/inbound.ts +25 -4
- package/src/channels/slack/index.ts +1 -0
- package/src/channels/slack/message-body.test.ts +54 -0
- package/src/channels/slack/nudge-store.test.ts +143 -0
- package/src/channels/slack/slack-channel.ts +66 -8
- package/src/channels/slack/slack.test.ts +391 -0
- package/src/channels/slack/stop.test.ts +23 -0
- package/src/channels/slack/thread-context.test.ts +202 -0
- package/src/channels/slack/types.ts +60 -0
- package/src/evals/assertions.test.ts +580 -0
- package/src/evals/expect.test.ts +144 -0
- package/src/evals/judge.test.ts +181 -0
- package/src/evals/loaders.test.ts +132 -0
- package/src/evals/matchers.test.ts +95 -0
- package/src/evals/reporters.test.ts +303 -0
- package/src/evals/run-facts.test.ts +259 -0
- package/src/internal/ab-snapshot.test.ts +325 -0
- package/src/internal/approval-gate.test.ts +49 -0
- package/src/internal/approvals.integration.test.ts +383 -0
- package/src/internal/authored-loaders.test.ts +31 -0
- package/src/internal/builtin-tools/reminders.test.ts +201 -0
- package/src/internal/channel-route-schema.test.ts +294 -0
- package/src/internal/chat-attach.test.ts +262 -0
- package/src/internal/cli-deploy.test.ts +1991 -0
- package/src/internal/cli-mcp.test.ts +789 -0
- package/src/internal/cli-skills.test.ts +133 -0
- package/src/internal/cli-slack.test.ts +1647 -0
- package/src/internal/cloud-merge.test.ts +74 -0
- package/src/internal/cron.test.ts +22 -0
- package/src/internal/cursor/account-mcp.test.ts +807 -0
- package/src/internal/cursor/backend-client.test.ts +591 -0
- package/src/internal/cursor/credentials.test.ts +351 -0
- package/src/internal/cursor/github-credentials.test.ts +136 -0
- package/src/internal/cursor-account-mcp-auth.test.ts +310 -0
- package/src/internal/cursor-account.integration.test.ts +441 -0
- package/src/internal/cursor-event-relay.test.ts +746 -0
- package/src/internal/cursor-github-credentials.integration.test.ts +271 -0
- package/src/internal/cursor-slack-relay.test.ts +525 -0
- package/src/internal/deploy-source.test.ts +111 -0
- package/src/internal/discovery.builtin-tools.test.ts +94 -0
- package/src/internal/discovery.concurrency.test.ts +60 -0
- package/src/internal/discovery.cursor-account.test.ts +133 -0
- package/src/internal/discovery.cwd.test.ts +83 -0
- package/src/internal/discovery.hosting.test.ts +80 -0
- package/src/internal/discovery.identity.test.ts +44 -0
- package/src/internal/docs-site.test.ts +66 -0
- package/src/internal/duration.test.ts +29 -0
- package/src/internal/eval-judge-model.test.ts +187 -0
- package/src/internal/eval-run-store.cancel.test.ts +142 -0
- package/src/internal/eval-run-store.storage.test.ts +211 -0
- package/src/internal/eval-runner.http.test.ts +403 -0
- package/src/internal/eval-runner.run.test.ts +928 -0
- package/src/internal/evals-client.test.ts +307 -0
- package/src/internal/event-mapper.test.ts +243 -0
- package/src/internal/github-fanout.test.ts +213 -0
- package/src/internal/handleAgentServeTrigger.test.ts +179 -0
- package/src/internal/host-kv.test.ts +82 -0
- package/src/internal/host-platforms.test.ts +126 -0
- package/src/internal/http-channel.test.ts +402 -0
- package/src/internal/init-project.test.ts +269 -0
- package/src/internal/install-cursor-skills.test.ts +262 -0
- package/src/internal/local-env.test.ts +100 -0
- package/src/internal/log-ring.test.ts +31 -0
- package/src/internal/logs-client.test.ts +350 -0
- package/src/internal/mcp-endpoint.test.ts +436 -0
- package/src/internal/mcp-host.test.ts +298 -0
- package/src/internal/mcp-oauth.test.ts +148 -0
- package/src/internal/net.test.ts +17 -0
- package/src/internal/peer-connections.test.ts +128 -0
- package/src/internal/peer-mcp.integration.test.ts +289 -0
- package/src/internal/playground/toolchain.test.ts +53 -0
- package/src/internal/playground-cli.test.ts +187 -0
- package/src/internal/playground-proxy.test.ts +376 -0
- package/src/internal/prompt-context.integration.test.ts +232 -0
- package/src/internal/prompt-context.test.ts +127 -0
- package/src/internal/reminder-runner.test.ts +390 -0
- package/src/internal/reminder-store.test.ts +53 -0
- package/src/internal/request-headers.test.ts +27 -0
- package/src/internal/resolve-prod-target.test.ts +787 -0
- package/src/internal/resolved-connections.test.ts +295 -0
- package/src/internal/resolved-connections.ts +18 -1
- package/src/internal/router.test.ts +57 -0
- package/src/internal/sdk-runner.test.ts +290 -0
- package/src/internal/session-engine.coalesce.test.ts +169 -0
- package/src/internal/session-engine.concurrency.test.ts +250 -0
- package/src/internal/session-engine.host-oauth-mcp.test.ts +110 -0
- package/src/internal/session-engine.interrupt.test.ts +577 -0
- package/src/internal/session-engine.storage.test.ts +547 -0
- package/src/internal/session-engine.ts +15 -1
- package/src/internal/session-urls.test.ts +28 -0
- package/src/internal/sessions-client.test.ts +518 -0
- package/src/internal/storage-coordinator.test.ts +517 -0
- package/src/internal/tool-call.test.ts +458 -0
- package/src/internal/tool-result.test.ts +52 -0
- package/src/internal/trajectory.approvals.test.ts +83 -0
- package/src/internal/trajectory.subagents.test.ts +198 -0
- package/src/internal/turn-governor.test.ts +137 -0
- package/src/internal/update-check.test.ts +485 -0
- package/src/internal/workspace.test.ts +81 -0
- package/src/storage-backends/cursor-hosted.test.ts +121 -0
- package/src/types.ts +12 -0
- package/dist/docs/assets/chunks/@localSearchIndexroot.CvejISXF.js +0 -1
- package/dist/playground/assets/index-CidizGZv.css +0 -1
- package/dist/playground/assets/index-CuiAKZaP.js +0 -85
|
@@ -17,6 +17,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
17
17
|
};
|
|
18
18
|
import { allowAll, defineChannel } from "../../channels.js";
|
|
19
19
|
import { slackContinuationKey } from "./api.js";
|
|
20
|
+
import { normalizeBotMentionAllowlist, SLACK_BOT_MENTION_DEFAULTS, SlackBotMentionGate, } from "./bot-mentions.js";
|
|
20
21
|
import { createChannelPostWatcher, resolveChannelNames, SlackChannelAllowlist, } from "./channel-watch.js";
|
|
21
22
|
import { credentialsFromEnv, slackEnvKeys, tryResolveAppToken, tryResolveBotToken, } from "./credentials.js";
|
|
22
23
|
import { createPendingSlackApiTransport, registerSlackCursorAccountRuntime, } from "./cursor-account.js";
|
|
@@ -36,8 +37,8 @@ import { assertSlackCursorAgentName, } from "./types.js";
|
|
|
36
37
|
* runtime values are still checked by {@link assertSlackCursorAgentName}.
|
|
37
38
|
*/
|
|
38
39
|
export function slackChannel(options = {}) {
|
|
39
|
-
var _a, _b, _c;
|
|
40
|
-
var
|
|
40
|
+
var _a, _b, _c, _d;
|
|
41
|
+
var _e, _f, _g, _h, _j;
|
|
41
42
|
const cursorAccount = options.cursorAccount === true;
|
|
42
43
|
if (cursorAccount) {
|
|
43
44
|
// Token pair and the Cursor connection are different Slack apps —
|
|
@@ -53,13 +54,19 @@ export function slackChannel(options = {}) {
|
|
|
53
54
|
if (((_a = options.engagement) === null || _a === void 0 ? void 0 : _a.channelPosts) !== undefined) {
|
|
54
55
|
throw new Error("slackChannel({ cursorAccount: true }) does not support engagement.channelPosts — agents must be explicitly addressed (@mention, DM, or claimed-thread reply). Channel watching is Socket Mode only.");
|
|
55
56
|
}
|
|
57
|
+
// Bot-mention wake needs the app's own bot identity (auth.test) and
|
|
58
|
+
// Socket Mode event delivery; the Cursor relay drops bot-authored
|
|
59
|
+
// mentions before they reach the agent.
|
|
60
|
+
if (((_b = options.engagement) === null || _b === void 0 ? void 0 : _b.botMentions) !== undefined) {
|
|
61
|
+
throw new Error("slackChannel({ cursorAccount: true }) does not support engagement.botMentions — bot-to-bot mention wake is Socket Mode only (author a dedicated Slack app channel).");
|
|
62
|
+
}
|
|
56
63
|
// Mentions/DMs are always routed by the backend. Disabling them
|
|
57
64
|
// client-side would black-hole events the webhook already stole from
|
|
58
65
|
// native Cursor handling — reject at construction instead.
|
|
59
|
-
if (((
|
|
66
|
+
if (((_c = options.engagement) === null || _c === void 0 ? void 0 : _c.mentions) === false) {
|
|
60
67
|
throw new Error("slackChannel({ cursorAccount: true }) cannot set engagement.mentions to false — the Cursor Slack relay always delivers mention and claimed-thread traffic.");
|
|
61
68
|
}
|
|
62
|
-
if (((
|
|
69
|
+
if (((_d = options.engagement) === null || _d === void 0 ? void 0 : _d.directMessages) === false) {
|
|
63
70
|
throw new Error("slackChannel({ cursorAccount: true }) cannot set engagement.directMessages to false — DM continuity is part of the Cursor Slack connection.");
|
|
64
71
|
}
|
|
65
72
|
// Tool approvals / interactivity ride Slack Socket Mode `interactive`
|
|
@@ -83,14 +90,14 @@ export function slackChannel(options = {}) {
|
|
|
83
90
|
: undefined;
|
|
84
91
|
const credentials = accountTransport !== undefined
|
|
85
92
|
? { botToken: accountTransport }
|
|
86
|
-
: ((
|
|
93
|
+
: ((_e = options.credentials) !== null && _e !== void 0 ? _e : credentialsFromEnv(options.envPrefix));
|
|
87
94
|
const envKeys = slackEnvKeys(options.envPrefix);
|
|
88
95
|
const loadingMessages = options.loadingMessages;
|
|
89
96
|
const defaultInbound = createDefaultOnInbound(loadingMessages);
|
|
90
|
-
const onAppMention = (
|
|
91
|
-
const onDirectMessage = (
|
|
92
|
-
const onChannelPost = (
|
|
93
|
-
const engagement = (
|
|
97
|
+
const onAppMention = (_f = options.onAppMention) !== null && _f !== void 0 ? _f : defaultInbound;
|
|
98
|
+
const onDirectMessage = (_g = options.onDirectMessage) !== null && _g !== void 0 ? _g : defaultInbound;
|
|
99
|
+
const onChannelPost = (_h = options.onChannelPost) !== null && _h !== void 0 ? _h : createDefaultOnChannelPost(loadingMessages);
|
|
100
|
+
const engagement = (_j = options.engagement) !== null && _j !== void 0 ? _j : {};
|
|
94
101
|
const mentionsEnabled = engagement.mentions !== false;
|
|
95
102
|
const directMessagesEnabled = engagement.directMessages !== false;
|
|
96
103
|
const evalCommandsEnabled = options.evalCommands !== false;
|
|
@@ -101,6 +108,10 @@ export function slackChannel(options = {}) {
|
|
|
101
108
|
throw new Error("slackChannel engagement.channelPosts.allow must list at least one channel (id or #name); there is no wildcard watch.");
|
|
102
109
|
}
|
|
103
110
|
}
|
|
111
|
+
const botMentions = engagement.botMentions;
|
|
112
|
+
if (botMentions !== undefined) {
|
|
113
|
+
normalizeBotMentionAllowlist(botMentions.allowFrom);
|
|
114
|
+
}
|
|
104
115
|
const eventIds = createEventIdDedupe();
|
|
105
116
|
const toolApprovals = options.toolApprovals === true;
|
|
106
117
|
const interactivity = options.interactivity === true;
|
|
@@ -130,8 +141,9 @@ export function slackChannel(options = {}) {
|
|
|
130
141
|
Object.assign(events, options.events);
|
|
131
142
|
let socketHandle = null;
|
|
132
143
|
let channelWatch;
|
|
144
|
+
let botMentionGate;
|
|
133
145
|
function inboundDeps(args) {
|
|
134
|
-
return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ send: args.send, waitUntil: args.waitUntil, onAppMention,
|
|
146
|
+
return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ send: args.send, waitUntil: args.waitUntil, onAppMention,
|
|
135
147
|
onDirectMessage,
|
|
136
148
|
credentials,
|
|
137
149
|
eventIds, host: args.host, log: getLog(), mentionsEnabled,
|
|
@@ -146,7 +158,7 @@ export function slackChannel(options = {}) {
|
|
|
146
158
|
getContinuationLastBotMessageTs: args.getContinuationLastBotMessageTs,
|
|
147
159
|
})), (args.interruptContinuation === undefined
|
|
148
160
|
? {}
|
|
149
|
-
: { interruptContinuation: args.interruptContinuation })), (channelWatch === undefined ? {} : { channelWatch }));
|
|
161
|
+
: { interruptContinuation: args.interruptContinuation })), (channelWatch === undefined ? {} : { channelWatch })), (botMentionGate === undefined ? {} : { botMentionGate }));
|
|
150
162
|
}
|
|
151
163
|
const definition = defineChannel({
|
|
152
164
|
auth: [allowAll()],
|
|
@@ -188,7 +200,7 @@ export function slackChannel(options = {}) {
|
|
|
188
200
|
events,
|
|
189
201
|
onStart(args) {
|
|
190
202
|
return __awaiter(this, void 0, void 0, function* () {
|
|
191
|
-
var _a, _b, _c;
|
|
203
|
+
var _a, _b, _c, _d, _e, _f;
|
|
192
204
|
runtime.log = createSlackLogger((_a = args.logger) !== null && _a !== void 0 ? _a : options.logger);
|
|
193
205
|
if (cursorAccount) {
|
|
194
206
|
// Inbound arrives through the serve host's Cursor Slack relay
|
|
@@ -207,21 +219,47 @@ export function slackChannel(options = {}) {
|
|
|
207
219
|
});
|
|
208
220
|
return;
|
|
209
221
|
}
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
222
|
+
let botUserId;
|
|
223
|
+
let botId;
|
|
224
|
+
let webClient = null;
|
|
225
|
+
if (channelPosts !== undefined || botMentions !== undefined) {
|
|
214
226
|
try {
|
|
215
227
|
const { WebClient } = yield import("@slack/web-api");
|
|
216
|
-
|
|
217
|
-
const identity = yield
|
|
228
|
+
webClient = new WebClient(botToken);
|
|
229
|
+
const identity = yield webClient.auth.test();
|
|
218
230
|
botUserId =
|
|
219
231
|
typeof identity.user_id === "string" ? identity.user_id : undefined;
|
|
220
232
|
botId =
|
|
221
233
|
typeof identity.bot_id === "string" ? identity.bot_id : undefined;
|
|
234
|
+
}
|
|
235
|
+
catch (error) {
|
|
236
|
+
getLog().error("bot identity lookup degraded", {
|
|
237
|
+
error: error instanceof Error ? error.message : String(error),
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
if (botMentions !== undefined) {
|
|
242
|
+
if (botUserId === undefined && botId === undefined) {
|
|
243
|
+
getLog().error("bot mentions disabled", {
|
|
244
|
+
reason: "engagement.botMentions requires bot identity from auth.test (loop safety)",
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
else {
|
|
248
|
+
botMentionGate = new SlackBotMentionGate(botMentions, { botUserId, botId }, { log: getLog() });
|
|
249
|
+
getLog().info("bot mentions enabled", {
|
|
250
|
+
allow_from: botMentions.allowFrom.join(","),
|
|
251
|
+
max_depth: (_b = botMentions.maxDepth) !== null && _b !== void 0 ? _b : SLACK_BOT_MENTION_DEFAULTS.maxDepth,
|
|
252
|
+
max_per_thread_per_hour: (_c = botMentions.maxPerThreadPerHour) !== null && _c !== void 0 ? _c : SLACK_BOT_MENTION_DEFAULTS.maxPerThreadPerHour,
|
|
253
|
+
max_per_thread_total: (_d = botMentions.maxPerThreadTotal) !== null && _d !== void 0 ? _d : SLACK_BOT_MENTION_DEFAULTS.maxPerThreadTotal,
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
if (channelPosts !== undefined) {
|
|
258
|
+
const allowlist = new SlackChannelAllowlist(channelPosts.allow);
|
|
259
|
+
try {
|
|
222
260
|
const names = allowlist.unresolvedNames();
|
|
223
|
-
if (names.length > 0) {
|
|
224
|
-
allowlist.applyResolvedNames(yield resolveChannelNames(
|
|
261
|
+
if (names.length > 0 && webClient !== null) {
|
|
262
|
+
allowlist.applyResolvedNames(yield resolveChannelNames(webClient, names, getLog()));
|
|
225
263
|
}
|
|
226
264
|
}
|
|
227
265
|
catch (error) {
|
|
@@ -263,8 +301,8 @@ export function slackChannel(options = {}) {
|
|
|
263
301
|
});
|
|
264
302
|
getLog().info("channel watch enabled", {
|
|
265
303
|
channels: channelPosts.allow.join(","),
|
|
266
|
-
posts: (
|
|
267
|
-
debounce_ms: (
|
|
304
|
+
posts: (_e = channelPosts.posts) !== null && _e !== void 0 ? _e : "top-level",
|
|
305
|
+
debounce_ms: (_f = channelPosts.debounceMs) !== null && _f !== void 0 ? _f : 0,
|
|
268
306
|
});
|
|
269
307
|
}
|
|
270
308
|
}
|
|
@@ -338,6 +376,7 @@ export function slackChannel(options = {}) {
|
|
|
338
376
|
getLog().info("channel stop");
|
|
339
377
|
channelWatch === null || channelWatch === void 0 ? void 0 : channelWatch.stop();
|
|
340
378
|
channelWatch = undefined;
|
|
379
|
+
botMentionGate = undefined;
|
|
341
380
|
yield socketHandle === null || socketHandle === void 0 ? void 0 : socketHandle.stop();
|
|
342
381
|
socketHandle = null;
|
|
343
382
|
yield (_a = options.onStop) === null || _a === void 0 ? void 0 : _a.call(options);
|
|
@@ -70,6 +70,20 @@ export interface SlackAuthor {
|
|
|
70
70
|
/** Posting app's `bot_id` (`B…`) when the message is bot-authored. */
|
|
71
71
|
botId?: string;
|
|
72
72
|
}
|
|
73
|
+
/**
|
|
74
|
+
* Delegation metadata carried on bot-to-bot mention posts (Slack message
|
|
75
|
+
* `metadata`, event type {@link SLACK_DELEGATION_METADATA_EVENT_TYPE}).
|
|
76
|
+
* Absent on posts from bots that don't speak the protocol — the gate then
|
|
77
|
+
* treats the mention as depth 1.
|
|
78
|
+
*/
|
|
79
|
+
export interface SlackDelegationInfo {
|
|
80
|
+
/** Delegation hop count. A dispatcher woken by a human posts depth 1. */
|
|
81
|
+
depth: number;
|
|
82
|
+
/** Mount slug / display name of the delegating agent. */
|
|
83
|
+
fromAgent?: string;
|
|
84
|
+
/** Session id on the delegating agent, for cross-agent tracing. */
|
|
85
|
+
originSessionId?: string;
|
|
86
|
+
}
|
|
73
87
|
export interface SlackMessage {
|
|
74
88
|
/** Raw top-level `text` exactly as Slack sent it. Often empty on bot posts. */
|
|
75
89
|
text: string;
|
|
@@ -87,6 +101,8 @@ export interface SlackMessage {
|
|
|
87
101
|
channelId: string;
|
|
88
102
|
teamId?: string;
|
|
89
103
|
author?: SlackAuthor;
|
|
104
|
+
/** Parsed delegation metadata when the post carried it (bot mentions). */
|
|
105
|
+
delegation?: SlackDelegationInfo;
|
|
90
106
|
}
|
|
91
107
|
export interface SlackDispatchDecision {
|
|
92
108
|
auth: AuthContext | null;
|
|
@@ -255,6 +271,43 @@ export interface SlackChannelPostsOptions {
|
|
|
255
271
|
*/
|
|
256
272
|
includeBotPosts?: boolean;
|
|
257
273
|
}
|
|
274
|
+
/**
|
|
275
|
+
* Opt-in bot-to-bot mention wake: allow @mentions authored by explicitly
|
|
276
|
+
* trusted bots (e.g. a dispatcher agent) to dispatch like human mentions.
|
|
277
|
+
* Default off — bot-authored mentions are dropped (loop safety). There is
|
|
278
|
+
* deliberately no "any bot" wildcard; trusting a bot is a per-bot decision.
|
|
279
|
+
*
|
|
280
|
+
* Loop protection is layered: this allowlist, the always-on own-post
|
|
281
|
+
* filter, a delegation-depth budget (Slack message metadata), and a
|
|
282
|
+
* per-thread wake budget.
|
|
283
|
+
*/
|
|
284
|
+
export interface SlackBotMentionsOptions {
|
|
285
|
+
/**
|
|
286
|
+
* Bots whose mentions may wake this agent: `bot_id`s (`B…`) and/or bot
|
|
287
|
+
* *user* ids (`U…`). Must be non-empty (empty is a definition error).
|
|
288
|
+
*/
|
|
289
|
+
allowFrom: string[];
|
|
290
|
+
/**
|
|
291
|
+
* Maximum delegation depth admitted (from the mention's delegation
|
|
292
|
+
* metadata; mentions without metadata count as depth 1). Defaults to 2 —
|
|
293
|
+
* human → dispatcher → specialist, no deeper chains.
|
|
294
|
+
*/
|
|
295
|
+
maxDepth?: number;
|
|
296
|
+
/**
|
|
297
|
+
* Maximum bot-initiated wakes per thread per hour (sliding window).
|
|
298
|
+
* Defaults to 5. Rate-limits ping-pong between bots that carry no
|
|
299
|
+
* delegation metadata; termination comes from {@link maxPerThreadTotal}.
|
|
300
|
+
*/
|
|
301
|
+
maxPerThreadPerHour?: number;
|
|
302
|
+
/**
|
|
303
|
+
* Lifetime cap on bot-initiated wakes per thread (resets only after the
|
|
304
|
+
* thread has been idle for 24h). Defaults to 20. This is the terminating
|
|
305
|
+
* backstop: a sliding window alone refills, so two mutually-allowlisted
|
|
306
|
+
* bots could ping-pong forever at the rate cap. Avoid mutual allowlists
|
|
307
|
+
* regardless — keep the delegation graph a DAG.
|
|
308
|
+
*/
|
|
309
|
+
maxPerThreadTotal?: number;
|
|
310
|
+
}
|
|
258
311
|
/**
|
|
259
312
|
* How the agent engages over Slack. Omitted entirely = mentions + DMs,
|
|
260
313
|
* which is also the default for each flag — summoned, never proactive.
|
|
@@ -270,6 +323,11 @@ export interface SlackEngagementOptions {
|
|
|
270
323
|
* (`slack init --channel-posts`, or add the events to an existing app).
|
|
271
324
|
*/
|
|
272
325
|
channelPosts?: SlackChannelPostsOptions;
|
|
326
|
+
/**
|
|
327
|
+
* Opt-in bot-to-bot mention wake (see {@link SlackBotMentionsOptions}).
|
|
328
|
+
* Socket Mode only — rejected on `cursorAccount: true`.
|
|
329
|
+
*/
|
|
330
|
+
botMentions?: SlackBotMentionsOptions;
|
|
273
331
|
}
|
|
274
332
|
/**
|
|
275
333
|
* Whitespace forbidden in {@link SlackChannelOptions.agentName}. The Cursor
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,iBAAiB,EACjB,WAAW,EACX,oBAAoB,EACpB,WAAW,EACZ,MAAM,gBAAgB,CAAC;AAExB;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,eAAe,CAAC;IACtB,uEAAuE;IACvE,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CACF,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACrC;AAED,+EAA+E;AAC/E,MAAM,MAAM,aAAa,GACrB,MAAM,GACN,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAChC,iBAAiB,CAAC;AAEtB,MAAM,WAAW,gBAAgB;IAC/B;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;CACtD;AAED,uCAAuC;AACvC,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,uBAAuB,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,yBAAyB,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,0DAA0D;IAC1D,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,mDAAmD;IACnD,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,2EAA2E;IAC3E,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;OAGG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClD;AAED,MAAM,WAAW,WAAW;IAC1B,sEAAsE;IACtE,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,sEAAsE;IACtE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,+EAA+E;IAC/E,IAAI,EAAE,MAAM,CAAC;IACb;;;;;OAKG;IACH,IAAI,EAAE,MAAM,CAAC;IACb,qEAAqE;IACrE,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/types.ts"],"names":[],"mappings":"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"}
|
package/dist/docs/404.html
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
<link rel="preload stylesheet" href="/docs/assets/style.Bj-IXa5W.css" as="style">
|
|
10
10
|
<link rel="preload stylesheet" href="/docs/vp-icons.css" as="style">
|
|
11
11
|
|
|
12
|
-
<script type="module" src="/docs/assets/app.
|
|
12
|
+
<script type="module" src="/docs/assets/app.jDxLzWv4.js"></script>
|
|
13
13
|
<link rel="preload" href="/docs/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
|
|
14
14
|
<script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
|
|
15
15
|
<script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script>
|
package/dist/docs/ab.html
CHANGED
|
@@ -9,9 +9,9 @@
|
|
|
9
9
|
<link rel="preload stylesheet" href="/docs/assets/style.Bj-IXa5W.css" as="style">
|
|
10
10
|
<link rel="preload stylesheet" href="/docs/vp-icons.css" as="style">
|
|
11
11
|
|
|
12
|
-
<script type="module" src="/docs/assets/app.
|
|
12
|
+
<script type="module" src="/docs/assets/app.jDxLzWv4.js"></script>
|
|
13
13
|
<link rel="preload" href="/docs/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
|
|
14
|
-
<link rel="modulepreload" href="/docs/assets/chunks/theme.
|
|
14
|
+
<link rel="modulepreload" href="/docs/assets/chunks/theme.CLazCWlJ.js">
|
|
15
15
|
<link rel="modulepreload" href="/docs/assets/chunks/framework.CAZyNGu9.js">
|
|
16
16
|
<link rel="modulepreload" href="/docs/assets/ab.md.BMCZ6Hd7.lean.js">
|
|
17
17
|
<script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as p}from"./chunks/theme.
|
|
1
|
+
import{t as p}from"./chunks/theme.CLazCWlJ.js";import{R as s,a2 as i,a3 as u,a4 as c,a5 as l,a6 as f,a7 as d,a8 as m,a9 as h,aa as g,ab as A,d as v,u as y,v as C,s as P,ac as b,ad as w,ae as R,af as E}from"./chunks/framework.CAZyNGu9.js";function r(e){if(e.extends){const a=r(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const n=r(p),S=v({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=y();return C(()=>{P(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&b(),w(),R(),n.setup&&n.setup(),()=>E(n.Layout)}});async function T(){globalThis.__VITEPRESS__=!0;const e=_(),a=D();a.provide(u,e);const t=c(e.route);return a.provide(l,t),a.component("Content",f),a.component("ClientOnly",d),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),n.enhanceApp&&await n.enhanceApp({app:a,router:e,siteData:m}),{app:a,router:e,data:t}}function D(){return A(S)}function _(){let e=s;return h(a=>{let t=g(a),o=null;return t&&(e&&(t=t.replace(/\.js$/,".lean.js")),o=import(t)),s&&(e=!1),o},n.NotFound)}s&&T().then(({app:e,router:a,data:t})=>{a.go().then(()=>{i(a.route,t.site),e.mount("#app")})});export{T as createApp};
|