@geminixiang/mikan 1.0.0-beta.84 → 1.0.0-beta.86
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/CHANGELOG.md +57 -0
- package/README.md +10 -10
- package/dist/adapters/commands/session-view.js +1 -1
- package/dist/adapters/commands/session-view.js.map +1 -1
- package/dist/adapters/discord/bot.d.ts.map +1 -1
- package/dist/adapters/discord/bot.js +1 -8
- package/dist/adapters/discord/bot.js.map +1 -1
- package/dist/adapters/github/activity.d.ts +3 -0
- package/dist/adapters/github/activity.d.ts.map +1 -0
- package/dist/adapters/github/activity.js +154 -0
- package/dist/adapters/github/activity.js.map +1 -0
- package/dist/adapters/github/bot.d.ts +10 -20
- package/dist/adapters/github/bot.d.ts.map +1 -1
- package/dist/adapters/github/bot.js +119 -342
- package/dist/adapters/github/bot.js.map +1 -1
- package/dist/adapters/github/client.d.ts +9 -19
- package/dist/adapters/github/client.d.ts.map +1 -1
- package/dist/adapters/github/client.js +28 -104
- package/dist/adapters/github/client.js.map +1 -1
- package/dist/adapters/github/context.d.ts.map +1 -1
- package/dist/adapters/github/context.js +29 -20
- package/dist/adapters/github/context.js.map +1 -1
- package/dist/adapters/github/github-ops.d.ts +2 -10
- package/dist/adapters/github/github-ops.d.ts.map +1 -1
- package/dist/adapters/github/github-ops.js +28 -91
- package/dist/adapters/github/github-ops.js.map +1 -1
- package/dist/adapters/github/policy.d.ts +19 -0
- package/dist/adapters/github/policy.d.ts.map +1 -0
- package/dist/adapters/github/policy.js +79 -0
- package/dist/adapters/github/policy.js.map +1 -0
- package/dist/adapters/github/tool-pack.d.ts +2 -2
- package/dist/adapters/github/tool-pack.d.ts.map +1 -1
- package/dist/adapters/github/tool-pack.js +4 -9
- package/dist/adapters/github/tool-pack.js.map +1 -1
- package/dist/adapters/github/tools/checks.d.ts.map +1 -1
- package/dist/adapters/github/tools/checks.js +6 -8
- package/dist/adapters/github/tools/checks.js.map +1 -1
- package/dist/adapters/github/tools/pr.d.ts.map +1 -1
- package/dist/adapters/github/tools/pr.js +7 -9
- package/dist/adapters/github/tools/pr.js.map +1 -1
- package/dist/adapters/github/types.d.ts +66 -67
- package/dist/adapters/github/types.d.ts.map +1 -1
- package/dist/adapters/github/types.js.map +1 -1
- package/dist/adapters/github/webhook.d.ts +2 -1
- package/dist/adapters/github/webhook.d.ts.map +1 -1
- package/dist/adapters/github/webhook.js +46 -4
- package/dist/adapters/github/webhook.js.map +1 -1
- package/dist/adapters/progressive-renderer.d.ts.map +1 -1
- package/dist/adapters/progressive-renderer.js +3 -0
- package/dist/adapters/progressive-renderer.js.map +1 -1
- package/dist/adapters/shared.d.ts +3 -1
- package/dist/adapters/shared.d.ts.map +1 -1
- package/dist/adapters/shared.js +45 -23
- package/dist/adapters/shared.js.map +1 -1
- package/dist/adapters/slack/blocks.d.ts.map +1 -1
- package/dist/adapters/slack/blocks.js +65 -2
- package/dist/adapters/slack/blocks.js.map +1 -1
- package/dist/adapters/slack/bot.d.ts +4 -0
- package/dist/adapters/slack/bot.d.ts.map +1 -1
- package/dist/adapters/slack/bot.js +84 -36
- package/dist/adapters/slack/bot.js.map +1 -1
- package/dist/adapters/slack/jev-context.js +2 -2
- package/dist/adapters/slack/jev-context.js.map +1 -1
- package/dist/adapters/slack/response-lifecycle.js +2 -2
- package/dist/adapters/slack/response-lifecycle.js.map +1 -1
- package/dist/adapters/slack/task-status.d.ts +3 -2
- package/dist/adapters/slack/task-status.d.ts.map +1 -1
- package/dist/adapters/slack/task-status.js +12 -15
- package/dist/adapters/slack/task-status.js.map +1 -1
- package/dist/adapters/telegram/bot.d.ts.map +1 -1
- package/dist/adapters/telegram/bot.js +1 -8
- package/dist/adapters/telegram/bot.js.map +1 -1
- package/dist/adapters/web/admin/portal.js +1 -1
- package/dist/adapters/web/admin/portal.js.map +1 -1
- package/dist/adapters/web/admin/provider-models.d.ts.map +1 -1
- package/dist/adapters/web/admin/provider-models.js +10 -3
- package/dist/adapters/web/admin/provider-models.js.map +1 -1
- package/dist/adapters/web/login/portal.js +6 -1
- package/dist/adapters/web/login/portal.js.map +1 -1
- package/dist/adapters/web/server.d.ts.map +1 -1
- package/dist/adapters/web/server.js +5 -3
- package/dist/adapters/web/server.js.map +1 -1
- package/dist/adapters/web/session-view/portal.d.ts +2 -1
- package/dist/adapters/web/session-view/portal.d.ts.map +1 -1
- package/dist/adapters/web/session-view/portal.js +18 -27
- package/dist/adapters/web/session-view/portal.js.map +1 -1
- package/dist/cli/boot.d.ts.map +1 -1
- package/dist/cli/boot.js +4 -6
- package/dist/cli/boot.js.map +1 -1
- package/dist/cli/migrate.d.ts +3 -0
- package/dist/cli/migrate.d.ts.map +1 -0
- package/dist/cli/migrate.js +74 -0
- package/dist/cli/migrate.js.map +1 -0
- package/dist/cli/office.d.ts.map +1 -1
- package/dist/cli/office.js +8 -129
- package/dist/cli/office.js.map +1 -1
- package/dist/cli/onboard.d.ts +0 -1
- package/dist/cli/onboard.d.ts.map +1 -1
- package/dist/cli/onboard.js +4 -7
- package/dist/cli/onboard.js.map +1 -1
- package/dist/cli/types.d.ts +2 -3
- package/dist/cli/types.d.ts.map +1 -1
- package/dist/cli/types.js.map +1 -1
- package/dist/env-manifest.d.ts.map +1 -1
- package/dist/env-manifest.js +24 -22
- package/dist/env-manifest.js.map +1 -1
- package/dist/events/index.d.ts +3 -13
- package/dist/events/index.d.ts.map +1 -1
- package/dist/events/index.js +12 -58
- package/dist/events/index.js.map +1 -1
- package/dist/events/scheduler.d.ts.map +1 -1
- package/dist/events/scheduler.js +3 -0
- package/dist/events/scheduler.js.map +1 -1
- package/dist/file-guards.d.ts +7 -0
- package/dist/file-guards.d.ts.map +1 -1
- package/dist/file-guards.js +63 -1
- package/dist/file-guards.js.map +1 -1
- package/dist/harness/budget-stop.d.ts +3 -0
- package/dist/harness/budget-stop.d.ts.map +1 -0
- package/dist/harness/budget-stop.js +36 -0
- package/dist/harness/budget-stop.js.map +1 -0
- package/dist/harness/execution-resolver.d.ts.map +1 -1
- package/dist/harness/execution-resolver.js +5 -9
- package/dist/harness/execution-resolver.js.map +1 -1
- package/dist/harness/mcp.d.ts.map +1 -1
- package/dist/harness/mcp.js +75 -31
- package/dist/harness/mcp.js.map +1 -1
- package/dist/harness/models.js +2 -2
- package/dist/harness/models.js.map +1 -1
- package/dist/harness/open-connector.d.ts +0 -9
- package/dist/harness/open-connector.d.ts.map +1 -1
- package/dist/harness/open-connector.js +15 -69
- package/dist/harness/open-connector.js.map +1 -1
- package/dist/harness/presenter.d.ts.map +1 -1
- package/dist/harness/presenter.js +33 -2
- package/dist/harness/presenter.js.map +1 -1
- package/dist/harness/prompt.d.ts +1 -1
- package/dist/harness/prompt.d.ts.map +1 -1
- package/dist/harness/prompt.js +14 -32
- package/dist/harness/prompt.js.map +1 -1
- package/dist/harness/run-events.d.ts.map +1 -1
- package/dist/harness/run-events.js +6 -1
- package/dist/harness/run-events.js.map +1 -1
- package/dist/harness/runner.d.ts.map +1 -1
- package/dist/harness/runner.js +6 -9
- package/dist/harness/runner.js.map +1 -1
- package/dist/harness/session.d.ts.map +1 -1
- package/dist/harness/session.js +6 -0
- package/dist/harness/session.js.map +1 -1
- package/dist/harness/tools/event.d.ts.map +1 -1
- package/dist/harness/tools/event.js +19 -2
- package/dist/harness/tools/event.js.map +1 -1
- package/dist/harness/tools/generate-image.d.ts.map +1 -1
- package/dist/harness/tools/generate-image.js +17 -3
- package/dist/harness/tools/generate-image.js.map +1 -1
- package/dist/harness/tools/jev-browser.d.ts +1 -2
- package/dist/harness/tools/jev-browser.d.ts.map +1 -1
- package/dist/harness/tools/jev-browser.js +75 -50
- package/dist/harness/tools/jev-browser.js.map +1 -1
- package/dist/harness/types.d.ts +16 -0
- package/dist/harness/types.d.ts.map +1 -1
- package/dist/harness/types.js.map +1 -1
- package/dist/index.d.ts +2 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -3
- package/dist/index.js.map +1 -1
- package/dist/main.js +40 -93
- package/dist/main.js.map +1 -1
- package/dist/memory-capture/index.d.ts.map +1 -1
- package/dist/memory-capture/index.js +3 -3
- package/dist/memory-capture/index.js.map +1 -1
- package/dist/migrations/actor-vaults.d.ts +3 -0
- package/dist/migrations/actor-vaults.d.ts.map +1 -0
- package/dist/migrations/actor-vaults.js +43 -0
- package/dist/migrations/actor-vaults.js.map +1 -0
- package/dist/migrations/conversation-settings.d.ts +3 -0
- package/dist/migrations/conversation-settings.d.ts.map +1 -0
- package/dist/migrations/conversation-settings.js +31 -0
- package/dist/migrations/conversation-settings.js.map +1 -0
- package/dist/migrations/index.d.ts +14 -0
- package/dist/migrations/index.d.ts.map +1 -0
- package/dist/migrations/index.js +99 -0
- package/dist/migrations/index.js.map +1 -0
- package/dist/migrations/models-json.d.ts +3 -0
- package/dist/migrations/models-json.d.ts.map +1 -0
- package/dist/migrations/models-json.js +18 -0
- package/dist/migrations/models-json.js.map +1 -0
- package/dist/migrations/office-layout.d.ts +4 -0
- package/dist/migrations/office-layout.d.ts.map +1 -0
- package/dist/migrations/office-layout.js +94 -0
- package/dist/migrations/office-layout.js.map +1 -0
- package/dist/migrations/office-sessions.d.ts +3 -0
- package/dist/migrations/office-sessions.d.ts.map +1 -0
- package/dist/migrations/office-sessions.js +70 -0
- package/dist/migrations/office-sessions.js.map +1 -0
- package/dist/migrations/sandbox-containers.d.ts +3 -0
- package/dist/migrations/sandbox-containers.d.ts.map +1 -0
- package/dist/migrations/sandbox-containers.js +36 -0
- package/dist/migrations/sandbox-containers.js.map +1 -0
- package/dist/{sessions/migrate-common.d.ts → migrations/session-files.d.ts} +1 -2
- package/dist/migrations/session-files.d.ts.map +1 -0
- package/dist/{sessions/migrate-common.js → migrations/session-files.js} +2 -2
- package/dist/migrations/session-files.js.map +1 -0
- package/dist/{sessions/migrate-v3.d.ts → migrations/sessions-v3.d.ts} +4 -3
- package/dist/migrations/sessions-v3.d.ts.map +1 -0
- package/dist/{sessions/migrate-v3.js → migrations/sessions-v3.js} +14 -4
- package/dist/migrations/sessions-v3.js.map +1 -0
- package/dist/migrations/types.d.ts +30 -0
- package/dist/migrations/types.d.ts.map +1 -0
- package/dist/migrations/types.js +2 -0
- package/dist/migrations/types.js.map +1 -0
- package/dist/migrations/workspace-events.d.ts +3 -0
- package/dist/migrations/workspace-events.d.ts.map +1 -0
- package/dist/migrations/workspace-events.js +43 -0
- package/dist/migrations/workspace-events.js.map +1 -0
- package/dist/office/index.d.ts +2 -24
- package/dist/office/index.d.ts.map +1 -1
- package/dist/office/index.js +15 -579
- package/dist/office/index.js.map +1 -1
- package/dist/office/types.d.ts +0 -10
- package/dist/office/types.d.ts.map +1 -1
- package/dist/office/types.js.map +1 -1
- package/dist/runtime/conversation-runtime.js +12 -12
- package/dist/runtime/conversation-runtime.js.map +1 -1
- package/dist/sandbox/identity.d.ts +2 -3
- package/dist/sandbox/identity.d.ts.map +1 -1
- package/dist/sandbox/identity.js +6 -13
- package/dist/sandbox/identity.js.map +1 -1
- package/dist/sandbox/layout.d.ts +0 -2
- package/dist/sandbox/layout.d.ts.map +1 -1
- package/dist/sandbox/layout.js +2 -2
- package/dist/sandbox/layout.js.map +1 -1
- package/dist/sandbox/provisioner.d.ts +4 -38
- package/dist/sandbox/provisioner.d.ts.map +1 -1
- package/dist/sandbox/provisioner.js +32 -456
- package/dist/sandbox/provisioner.js.map +1 -1
- package/dist/sessions/chat-history-sync.d.ts.map +1 -1
- package/dist/sessions/chat-history-sync.js +28 -40
- package/dist/sessions/chat-history-sync.js.map +1 -1
- package/dist/sessions/session-store.d.ts.map +1 -1
- package/dist/sessions/session-store.js +1 -8
- package/dist/sessions/session-store.js.map +1 -1
- package/dist/sessions/store.d.ts +2 -3
- package/dist/sessions/store.d.ts.map +1 -1
- package/dist/sessions/store.js +8 -14
- package/dist/sessions/store.js.map +1 -1
- package/dist/sessions/types.d.ts +6 -15
- package/dist/sessions/types.d.ts.map +1 -1
- package/dist/sessions/types.js.map +1 -1
- package/dist/settings/index.d.ts +0 -48
- package/dist/settings/index.d.ts.map +1 -1
- package/dist/settings/index.js +6 -37
- package/dist/settings/index.js.map +1 -1
- package/dist/types.d.ts +0 -29
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/vault/index.d.ts +0 -7
- package/dist/vault/index.d.ts.map +1 -1
- package/dist/vault/index.js +1 -36
- package/dist/vault/index.js.map +1 -1
- package/package.json +8 -6
- package/dist/adapters/github/repo.d.ts +0 -8
- package/dist/adapters/github/repo.d.ts.map +0 -1
- package/dist/adapters/github/repo.js +0 -92
- package/dist/adapters/github/repo.js.map +0 -1
- package/dist/adapters/github/tools/sync.d.ts +0 -13
- package/dist/adapters/github/tools/sync.d.ts.map +0 -1
- package/dist/adapters/github/tools/sync.js +0 -29
- package/dist/adapters/github/tools/sync.js.map +0 -1
- package/dist/cli/sandbox.d.ts +0 -3
- package/dist/cli/sandbox.d.ts.map +0 -1
- package/dist/cli/sandbox.js +0 -80
- package/dist/cli/sandbox.js.map +0 -1
- package/dist/cli/sessions.d.ts +0 -2
- package/dist/cli/sessions.d.ts.map +0 -1
- package/dist/cli/sessions.js +0 -78
- package/dist/cli/sessions.js.map +0 -1
- package/dist/sessions/migrate-common.d.ts.map +0 -1
- package/dist/sessions/migrate-common.js.map +0 -1
- package/dist/sessions/migrate-pi-084.d.ts +0 -7
- package/dist/sessions/migrate-pi-084.d.ts.map +0 -1
- package/dist/sessions/migrate-pi-084.js +0 -293
- package/dist/sessions/migrate-pi-084.js.map +0 -1
- package/dist/sessions/migrate-v3.d.ts.map +0 -1
- package/dist/sessions/migrate-v3.js.map +0 -1
- package/dist/settings/migrate.d.ts +0 -16
- package/dist/settings/migrate.d.ts.map +0 -1
- package/dist/settings/migrate.js +0 -70
- package/dist/settings/migrate.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bot.d.ts","sourceRoot":"","sources":["../../../src/adapters/slack/bot.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bot.d.ts","sourceRoot":"","sources":["../../../src/adapters/slack/bot.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
import { SocketModeClient } from "@slack/socket-mode";
|
|
2
2
|
import { WebAPIRateLimitedError, WebClient } from "@slack/web-api";
|
|
3
3
|
import { existsSync, readFileSync } from "node:fs";
|
|
4
|
-
import { readFile } from "node:fs/promises";
|
|
5
4
|
import { basename } from "node:path";
|
|
6
5
|
import { createConversationEvent, createConversationMessage, createOfficeAddress, listRegisteredOffices, } from "../../office/index.js";
|
|
7
6
|
import { COMMAND_MANIFEST } from "../commands/manifest.js";
|
|
8
7
|
import { slackConversationAutoReplyMode, resolveConversationSettings, } from "../../settings/index.js";
|
|
9
8
|
import { evaluateWithJev, JevNotConfiguredError } from "../../harness/jev.js";
|
|
10
9
|
import * as log from "../../log.js";
|
|
11
|
-
import {
|
|
10
|
+
import { readTextFileNoFollowIfExists } from "../../file-guards.js";
|
|
12
11
|
import { PRODUCT_NAME, formatForceStopped } from "../messages.js";
|
|
13
12
|
import { appendBotResponseLog, appendChannelLog, MessagingEventQueue, MessagingIntakeTracker, AttachmentRejectedError, saveIncomingAttachments, writeResponseToFile, withRetry, } from "../shared.js";
|
|
14
13
|
import { matchMagicWord, processMessageIntake } from "../intake.js";
|
|
@@ -48,6 +47,11 @@ export function chunkStreamText(text, limit = MAX_STREAM_TEXT_CHARS) {
|
|
|
48
47
|
}
|
|
49
48
|
return chunks;
|
|
50
49
|
}
|
|
50
|
+
function slackErrorCode(error) {
|
|
51
|
+
if (!isRecord(error) || !isRecord(error.data))
|
|
52
|
+
return undefined;
|
|
53
|
+
return typeof error.data.error === "string" ? error.data.error : undefined;
|
|
54
|
+
}
|
|
51
55
|
function slackIsRateLimited(err) {
|
|
52
56
|
if (err instanceof WebAPIRateLimitedError)
|
|
53
57
|
return true;
|
|
@@ -92,6 +96,21 @@ function buildSlackAppMessageText(event) {
|
|
|
92
96
|
const deduped = parts.filter((part, index) => parts.indexOf(part) === index);
|
|
93
97
|
return unescapeSlackText(deduped.join("\n"));
|
|
94
98
|
}
|
|
99
|
+
export function italicizeLines(text) {
|
|
100
|
+
return text
|
|
101
|
+
.split("\n")
|
|
102
|
+
.map((line) => (line.trim() ? `_${line}_` : line))
|
|
103
|
+
.join("\n");
|
|
104
|
+
}
|
|
105
|
+
const RECENT_MESSAGE_KEYS = 2000;
|
|
106
|
+
function withLoggedAck(event, payload) {
|
|
107
|
+
return {
|
|
108
|
+
...payload,
|
|
109
|
+
ack: () => payload.ack().catch((error) => {
|
|
110
|
+
log.logWarning(`Slack ack failed for ${event}; Slack may redeliver it`, errorMessage(error));
|
|
111
|
+
}),
|
|
112
|
+
};
|
|
113
|
+
}
|
|
95
114
|
const MRKDWN_CONTEXT_TEXT_LIMIT = 3000;
|
|
96
115
|
export function buildMrkdwnContextBlock(text) {
|
|
97
116
|
const blockText = text.length > MRKDWN_CONTEXT_TEXT_LIMIT
|
|
@@ -133,7 +152,7 @@ export class SlackMessagingBot {
|
|
|
133
152
|
replyMode: this.resolveReplyMode(event.address),
|
|
134
153
|
});
|
|
135
154
|
if (event.conversationKind === "direct") {
|
|
136
|
-
context.responder.getTaskStatus = (key) => querySlackTasks(this.
|
|
155
|
+
context.responder.getTaskStatus = (key) => querySlackTasks(this.office(event.channel), event.channel, this.handler
|
|
137
156
|
.getRunningSessions()
|
|
138
157
|
.filter((s) => s.address.platform === "slack" && s.address.conversationId === event.channel), key);
|
|
139
158
|
}
|
|
@@ -167,7 +186,7 @@ export class SlackMessagingBot {
|
|
|
167
186
|
const sessionKey = resolveSlackSessionKey(event.channel, root);
|
|
168
187
|
try {
|
|
169
188
|
registerThreadSession({
|
|
170
|
-
|
|
189
|
+
office: this.office(event.channel),
|
|
171
190
|
sessionKey,
|
|
172
191
|
});
|
|
173
192
|
const child = {
|
|
@@ -225,6 +244,8 @@ export class SlackMessagingBot {
|
|
|
225
244
|
this.stopped = false;
|
|
226
245
|
this.queues = new Map();
|
|
227
246
|
this.intake = new MessagingIntakeTracker("Slack");
|
|
247
|
+
this.recentMessageKeys = new Set();
|
|
248
|
+
this.agentSurfaceUnavailable = false;
|
|
228
249
|
this.eventScheduler = null;
|
|
229
250
|
this.handler = handler;
|
|
230
251
|
this.workspace = config.workspace;
|
|
@@ -362,7 +383,7 @@ export class SlackMessagingBot {
|
|
|
362
383
|
}
|
|
363
384
|
async postPrivateDiagnostic(conversationId, userId, text, options) {
|
|
364
385
|
if (options?.style !== "muted") {
|
|
365
|
-
await this.postEphemeral(conversationId, userId, options?.style === "error" ?
|
|
386
|
+
await this.postEphemeral(conversationId, userId, options?.style === "error" ? italicizeLines(text) : text);
|
|
366
387
|
return;
|
|
367
388
|
}
|
|
368
389
|
await this.postEphemeralBlocks(conversationId, userId, text, [buildMrkdwnContextBlock(text)]);
|
|
@@ -507,13 +528,23 @@ export class SlackMessagingBot {
|
|
|
507
528
|
}
|
|
508
529
|
}
|
|
509
530
|
async setAssistantSuggestedPrompts(channel, threadTs, prompts) {
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
531
|
+
if (this.agentSurfaceUnavailable)
|
|
532
|
+
return;
|
|
533
|
+
try {
|
|
534
|
+
await slackRetry(async () => {
|
|
535
|
+
await this.webClient.assistant.threads.setSuggestedPrompts({
|
|
536
|
+
channel_id: channel,
|
|
537
|
+
thread_ts: threadTs || undefined,
|
|
538
|
+
prompts,
|
|
539
|
+
});
|
|
515
540
|
});
|
|
516
|
-
}
|
|
541
|
+
}
|
|
542
|
+
catch (error) {
|
|
543
|
+
if (slackErrorCode(error) !== "not_agent_app")
|
|
544
|
+
throw error;
|
|
545
|
+
this.agentSurfaceUnavailable = true;
|
|
546
|
+
log.logInfo("Slack app is not an agent app; suggested prompts are disabled");
|
|
547
|
+
}
|
|
517
548
|
}
|
|
518
549
|
async setAssistantTitle(channel, threadTs, title) {
|
|
519
550
|
return slackRetry(async () => {
|
|
@@ -585,7 +616,7 @@ export class SlackMessagingBot {
|
|
|
585
616
|
});
|
|
586
617
|
}
|
|
587
618
|
ownsBlockKitMessage(channel, ts, threadTs) {
|
|
588
|
-
const content =
|
|
619
|
+
const content = readTextFileNoFollowIfExists(this.office(channel).logPath);
|
|
589
620
|
if (content === undefined)
|
|
590
621
|
return false;
|
|
591
622
|
for (const line of content.trim().split("\n").toReversed()) {
|
|
@@ -625,13 +656,7 @@ export class SlackMessagingBot {
|
|
|
625
656
|
if (this.stopped)
|
|
626
657
|
return false;
|
|
627
658
|
const conversationId = event.address.conversationId;
|
|
628
|
-
|
|
629
|
-
if (queue.size() >= 5) {
|
|
630
|
-
log.logWarning(`Event queue full for ${conversationId}, discarding: ${event.text.substring(0, 50)}`);
|
|
631
|
-
return false;
|
|
632
|
-
}
|
|
633
|
-
log.logInfo(`Enqueueing event for ${conversationId}: ${event.text.substring(0, 50)}`);
|
|
634
|
-
return queue.enqueue(async () => {
|
|
659
|
+
return this.getQueue(conversationId).offerEvent(event, async () => {
|
|
635
660
|
let anchorTs;
|
|
636
661
|
if (!event.thread_ts) {
|
|
637
662
|
try {
|
|
@@ -659,7 +684,7 @@ export class SlackMessagingBot {
|
|
|
659
684
|
const eventForRun = eventPlan.event;
|
|
660
685
|
if (eventPlan.initialMessageTs && eventForRun.sessionKey) {
|
|
661
686
|
registerThreadSession({
|
|
662
|
-
|
|
687
|
+
office: this.office(conversationId),
|
|
663
688
|
sessionKey: eventForRun.sessionKey,
|
|
664
689
|
});
|
|
665
690
|
}
|
|
@@ -713,10 +738,10 @@ export class SlackMessagingBot {
|
|
|
713
738
|
return this.hasKnownThreadSession(conversationId, sessionKey) ? sessionKey : conversationId;
|
|
714
739
|
}
|
|
715
740
|
isTaskThread(channel, root) {
|
|
716
|
-
return readTaskRoots(this.
|
|
741
|
+
return readTaskRoots(this.office(channel)).has(root);
|
|
717
742
|
}
|
|
718
743
|
hasRunningTaskThread(channel) {
|
|
719
|
-
const roots = readTaskRoots(this.
|
|
744
|
+
const roots = readTaskRoots(this.office(channel));
|
|
720
745
|
if (!roots.size)
|
|
721
746
|
return false;
|
|
722
747
|
return this.handler
|
|
@@ -727,7 +752,7 @@ export class SlackMessagingBot {
|
|
|
727
752
|
}
|
|
728
753
|
hasKnownThreadSession(conversationId, sessionKey) {
|
|
729
754
|
return hasMaterializedChatSession({
|
|
730
|
-
|
|
755
|
+
office: this.office(conversationId),
|
|
731
756
|
sessionKey,
|
|
732
757
|
});
|
|
733
758
|
}
|
|
@@ -960,7 +985,7 @@ export class SlackMessagingBot {
|
|
|
960
985
|
await respond(responseText, [buildMrkdwnContextBlock(responseText)]);
|
|
961
986
|
return;
|
|
962
987
|
}
|
|
963
|
-
await respond(responseOptions?.style === "error" ?
|
|
988
|
+
await respond(responseOptions?.style === "error" ? italicizeLines(responseText) : responseText);
|
|
964
989
|
},
|
|
965
990
|
respondToolResult: async (result) => {
|
|
966
991
|
const duration = (result.durationMs / 1000).toFixed(1);
|
|
@@ -1048,16 +1073,29 @@ export class SlackMessagingBot {
|
|
|
1048
1073
|
this.socketClient.on("unable_to_socket_mode_start", (err) => {
|
|
1049
1074
|
log.logWarning("Slack socket unable_to_start", err ? String(err) : "");
|
|
1050
1075
|
});
|
|
1051
|
-
this.socketClient.on(
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
this.
|
|
1060
|
-
|
|
1076
|
+
const on = (event, handle) => this.socketClient.on(event, (payload) => this.intake.run(() => handle(withLoggedAck(event, payload))));
|
|
1077
|
+
on("app_mention", (payload) => this.handleAppMention(payload));
|
|
1078
|
+
on("message", (payload) => this.handleMessageEvent(payload));
|
|
1079
|
+
on("slash_commands", (payload) => this.handleSlashCommand(payload));
|
|
1080
|
+
on("app_home_opened", (payload) => this.handleAppHomeOpened(payload));
|
|
1081
|
+
on("assistant_thread_started", (payload) => this.handleAssistantThreadStarted(payload));
|
|
1082
|
+
on("assistant_thread_context_changed", (payload) => this.handleAgentContextChangedEvent(payload));
|
|
1083
|
+
on("app_context_changed", (payload) => this.handleAgentContextChangedEvent(payload));
|
|
1084
|
+
const blockAction = ({ body, ack }) => this.handleBlockAction({ body: body, ack });
|
|
1085
|
+
on("block_actions", blockAction);
|
|
1086
|
+
on("interactive", blockAction);
|
|
1087
|
+
}
|
|
1088
|
+
isRedelivery(kind, channel, ts) {
|
|
1089
|
+
const key = `${kind}:${channel}:${ts}`;
|
|
1090
|
+
if (this.recentMessageKeys.has(key))
|
|
1091
|
+
return true;
|
|
1092
|
+
this.recentMessageKeys.add(key);
|
|
1093
|
+
if (this.recentMessageKeys.size > RECENT_MESSAGE_KEYS) {
|
|
1094
|
+
const oldest = this.recentMessageKeys.values().next().value;
|
|
1095
|
+
if (oldest !== undefined)
|
|
1096
|
+
this.recentMessageKeys.delete(oldest);
|
|
1097
|
+
}
|
|
1098
|
+
return false;
|
|
1061
1099
|
}
|
|
1062
1100
|
async handleAppMention({ event, ack }) {
|
|
1063
1101
|
const e = event;
|
|
@@ -1065,6 +1103,11 @@ export class SlackMessagingBot {
|
|
|
1065
1103
|
ack();
|
|
1066
1104
|
return;
|
|
1067
1105
|
}
|
|
1106
|
+
if (this.isRedelivery("app_mention", e.channel, e.ts)) {
|
|
1107
|
+
log.logInfo(`[${e.channel}] Ignoring redelivered mention ${e.ts}`);
|
|
1108
|
+
await ack();
|
|
1109
|
+
return;
|
|
1110
|
+
}
|
|
1068
1111
|
const sessionKey = resolveSlackSessionKey(e.channel, e.thread_ts);
|
|
1069
1112
|
const mentionText = this.stripOwnMention(e.text);
|
|
1070
1113
|
const slackEvent = createConversationEvent({
|
|
@@ -1214,6 +1257,11 @@ export class SlackMessagingBot {
|
|
|
1214
1257
|
const e = event;
|
|
1215
1258
|
if (!this.admitHumanMessage(e, ack))
|
|
1216
1259
|
return;
|
|
1260
|
+
if (this.isRedelivery("message", e.channel, e.ts)) {
|
|
1261
|
+
log.logInfo(`[${e.channel}] Ignoring redelivered message ${e.ts}`);
|
|
1262
|
+
await ack();
|
|
1263
|
+
return;
|
|
1264
|
+
}
|
|
1217
1265
|
const isDM = e.channel_type === "im" || e.channel.startsWith("D");
|
|
1218
1266
|
const conversationKind = isDM ? "direct" : "shared";
|
|
1219
1267
|
const isMessagingBotMention = e.text?.includes(`<@${this.botUserId}>`);
|
|
@@ -1517,9 +1565,9 @@ export class SlackMessagingBot {
|
|
|
1517
1565
|
async getExistingTimestamps(channelId) {
|
|
1518
1566
|
const { logPath } = this.office(channelId);
|
|
1519
1567
|
const timestamps = new Set();
|
|
1520
|
-
|
|
1568
|
+
const content = readTextFileNoFollowIfExists(logPath);
|
|
1569
|
+
if (content === undefined)
|
|
1521
1570
|
return timestamps;
|
|
1522
|
-
const content = await readFile(logPath, "utf-8");
|
|
1523
1571
|
const lines = content.trim().split("\n").filter(Boolean);
|
|
1524
1572
|
for (let i = 0; i < lines.length; i++) {
|
|
1525
1573
|
try {
|