@geminixiang/mikan 1.0.0-beta.95 → 1.0.0
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 +387 -391
- package/README.md +33 -42
- package/dist/adapters/github/bot.js +1 -1
- package/dist/adapters/github/bot.js.map +1 -1
- package/dist/adapters/github/policy.d.ts +2 -9
- package/dist/adapters/github/policy.d.ts.map +1 -1
- package/dist/adapters/github/policy.js +18 -26
- package/dist/adapters/github/policy.js.map +1 -1
- package/dist/adapters/slack/bot.d.ts +2 -4
- package/dist/adapters/slack/bot.d.ts.map +1 -1
- package/dist/adapters/slack/bot.js +28 -56
- package/dist/adapters/slack/bot.js.map +1 -1
- package/dist/adapters/slack/socket-agent.d.ts +9 -0
- package/dist/adapters/slack/socket-agent.d.ts.map +1 -0
- package/dist/adapters/slack/socket-agent.js +17 -0
- package/dist/adapters/slack/socket-agent.js.map +1 -0
- package/dist/adapters/telegram/bot.d.ts +1 -0
- package/dist/adapters/telegram/bot.d.ts.map +1 -1
- package/dist/adapters/telegram/bot.js +6 -1
- package/dist/adapters/telegram/bot.js.map +1 -1
- package/dist/adapters/telegram/types.d.ts +1 -0
- package/dist/adapters/telegram/types.d.ts.map +1 -1
- package/dist/adapters/telegram/types.js.map +1 -1
- package/dist/cli/arg-grammar.d.ts +1 -2
- package/dist/cli/arg-grammar.d.ts.map +1 -1
- package/dist/cli/arg-grammar.js +2 -17
- package/dist/cli/arg-grammar.js.map +1 -1
- package/dist/cli/boot.d.ts.map +1 -1
- package/dist/cli/boot.js +5 -11
- package/dist/cli/boot.js.map +1 -1
- package/dist/cli/migrate.d.ts.map +1 -1
- package/dist/cli/migrate.js +22 -7
- package/dist/cli/migrate.js.map +1 -1
- package/dist/cli/office.d.ts.map +1 -1
- package/dist/cli/office.js +3 -5
- package/dist/cli/office.js.map +1 -1
- package/dist/cli/onboard.js +18 -20
- package/dist/cli/onboard.js.map +1 -1
- package/dist/cli/types.d.ts +1 -2
- package/dist/cli/types.d.ts.map +1 -1
- package/dist/cli/types.js.map +1 -1
- package/dist/env-manifest.d.ts +2 -0
- package/dist/env-manifest.d.ts.map +1 -1
- package/dist/env-manifest.js +76 -43
- package/dist/env-manifest.js.map +1 -1
- package/dist/events/index.d.ts +5 -5
- package/dist/events/index.d.ts.map +1 -1
- package/dist/events/index.js +1 -7
- package/dist/events/index.js.map +1 -1
- package/dist/file-guards.d.ts +1 -0
- package/dist/file-guards.d.ts.map +1 -1
- package/dist/file-guards.js +4 -1
- package/dist/file-guards.js.map +1 -1
- package/dist/harness/execution-resolver.d.ts.map +1 -1
- package/dist/harness/execution-resolver.js +1 -7
- package/dist/harness/execution-resolver.js.map +1 -1
- package/dist/harness/http.d.ts +1 -2
- package/dist/harness/http.d.ts.map +1 -1
- package/dist/harness/http.js +3 -16
- package/dist/harness/http.js.map +1 -1
- package/dist/harness/jev.d.ts +2 -1
- package/dist/harness/jev.d.ts.map +1 -1
- package/dist/harness/jev.js.map +1 -1
- package/dist/harness/prompt.d.ts.map +1 -1
- package/dist/harness/prompt.js +0 -6
- package/dist/harness/prompt.js.map +1 -1
- package/dist/harness/session.d.ts +2 -9
- package/dist/harness/session.d.ts.map +1 -1
- package/dist/harness/session.js +3 -3
- package/dist/harness/session.js.map +1 -1
- package/dist/harness/tools/event.d.ts +0 -1
- package/dist/harness/tools/event.d.ts.map +1 -1
- package/dist/harness/tools/event.js +1 -7
- package/dist/harness/tools/event.js.map +1 -1
- package/dist/harness/types.d.ts +3 -3
- package/dist/harness/types.d.ts.map +1 -1
- package/dist/harness/types.js.map +1 -1
- package/dist/index.d.ts +8 -31
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -15
- package/dist/index.js.map +1 -1
- package/dist/main.js +26 -36
- package/dist/main.js.map +1 -1
- package/dist/migrations/index.d.ts +0 -1
- package/dist/migrations/index.d.ts.map +1 -1
- package/dist/migrations/index.js +4 -4
- package/dist/migrations/index.js.map +1 -1
- package/dist/migrations/legacy-office-files.d.ts +3 -0
- package/dist/migrations/legacy-office-files.d.ts.map +1 -0
- package/dist/migrations/legacy-office-files.js +29 -0
- package/dist/migrations/legacy-office-files.js.map +1 -0
- package/dist/observability/instrument.js +2 -3
- package/dist/observability/instrument.js.map +1 -1
- package/dist/observability/sentry.js +1 -1
- package/dist/observability/sentry.js.map +1 -1
- package/dist/office/projection.js +2 -2
- package/dist/office/projection.js.map +1 -1
- package/dist/sandbox/identity.d.ts +0 -1
- package/dist/sandbox/identity.d.ts.map +1 -1
- package/dist/sandbox/identity.js +0 -3
- package/dist/sandbox/identity.js.map +1 -1
- package/dist/sandbox/registry.d.ts +1 -5
- package/dist/sandbox/registry.d.ts.map +1 -1
- package/dist/sandbox/registry.js +4 -13
- package/dist/sandbox/registry.js.map +1 -1
- package/dist/sandbox/types.d.ts +1 -5
- package/dist/sandbox/types.d.ts.map +1 -1
- package/dist/sandbox/types.js.map +1 -1
- package/dist/sessions/types.d.ts +1 -1
- package/dist/sessions/types.d.ts.map +1 -1
- package/dist/sessions/types.js.map +1 -1
- package/dist/settings/index.d.ts +56 -2
- package/dist/settings/index.d.ts.map +1 -1
- package/dist/settings/index.js +57 -37
- package/dist/settings/index.js.map +1 -1
- package/dist/types.d.ts +1 -25
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/vault/index.js +1 -1
- package/dist/vault/index.js.map +1 -1
- package/package.json +4 -17
- package/dist/cli/download.d.ts +0 -2
- package/dist/cli/download.d.ts.map +0 -1
- package/dist/cli/download.js +0 -84
- package/dist/cli/download.js.map +0 -1
- package/dist/harness/index.d.ts +0 -20
- package/dist/harness/index.d.ts.map +0 -1
- package/dist/harness/index.js +0 -14
- package/dist/harness/index.js.map +0 -1
- package/dist/sandbox/cloudflare.d.ts +0 -17
- package/dist/sandbox/cloudflare.d.ts.map +0 -1
- package/dist/sandbox/cloudflare.js +0 -142
- package/dist/sandbox/cloudflare.js.map +0 -1
- package/dist/sandbox/index.d.ts +0 -7
- package/dist/sandbox/index.d.ts.map +0 -1
- package/dist/sandbox/index.js +0 -6
- package/dist/sandbox/index.js.map +0 -1
|
@@ -8,6 +8,7 @@ import { COMMAND_MANIFEST } from "../commands/manifest.js";
|
|
|
8
8
|
import { slackConversationAutoReplyMode, resolveConversationSettings, } from "../../settings/index.js";
|
|
9
9
|
import { evaluateWithJev, JevNotConfiguredError } from "../../harness/jev.js";
|
|
10
10
|
import * as log from "../../log.js";
|
|
11
|
+
import { SlackSocketAgent } from "./socket-agent.js";
|
|
11
12
|
import { readTextFileNoFollowIfExists } from "../../file-guards.js";
|
|
12
13
|
import { PRODUCT_NAME, formatForceStopped } from "../messages.js";
|
|
13
14
|
import { MessagingEventQueue, MessagingIntakeTracker, AttachmentRejectedError, saveIncomingAttachments, writeResponseToFile, withRetry, } from "../shared.js";
|
|
@@ -257,6 +258,7 @@ export class SlackMessagingBot {
|
|
|
257
258
|
new SocketModeClient({
|
|
258
259
|
appToken: config.appToken,
|
|
259
260
|
clientPingTimeout: 12_000,
|
|
261
|
+
clientOptions: { agent: new SlackSocketAgent() },
|
|
260
262
|
});
|
|
261
263
|
this.webClient = config.webApi ?? new WebClient(config.botToken, { fetch: config.fetch });
|
|
262
264
|
this.statusClient = new WebClient(config.botToken, {
|
|
@@ -282,7 +284,14 @@ export class SlackMessagingBot {
|
|
|
282
284
|
this.backfillChannelKinds();
|
|
283
285
|
this.startupTs = (Date.now() / 1000).toFixed(6);
|
|
284
286
|
this.setupEventHandlers();
|
|
285
|
-
|
|
287
|
+
try {
|
|
288
|
+
await this.socketClient.start();
|
|
289
|
+
}
|
|
290
|
+
catch (error) {
|
|
291
|
+
if (this.stopped)
|
|
292
|
+
return;
|
|
293
|
+
throw error;
|
|
294
|
+
}
|
|
286
295
|
log.logConnected("Slack");
|
|
287
296
|
void this.backfillAllChannels(this.startupTs).catch((error) => {
|
|
288
297
|
log.logWarning("Slack backfill failed", String(error));
|
|
@@ -399,55 +408,6 @@ export class SlackMessagingBot {
|
|
|
399
408
|
return channelId;
|
|
400
409
|
});
|
|
401
410
|
}
|
|
402
|
-
async fetchHistory(channel, options) {
|
|
403
|
-
const limit = Math.min(Math.max(options?.limit ?? 200, 1), 999);
|
|
404
|
-
const threadTs = options?.threadTs;
|
|
405
|
-
return slackRetry(async () => {
|
|
406
|
-
const result = threadTs
|
|
407
|
-
? await this.webClient.conversations.replies({
|
|
408
|
-
channel,
|
|
409
|
-
ts: threadTs,
|
|
410
|
-
oldest: options?.oldest || undefined,
|
|
411
|
-
inclusive: options?.oldest ? false : undefined,
|
|
412
|
-
limit,
|
|
413
|
-
})
|
|
414
|
-
: await this.webClient.conversations.history({
|
|
415
|
-
channel,
|
|
416
|
-
oldest: options?.oldest || undefined,
|
|
417
|
-
inclusive: options?.oldest ? false : undefined,
|
|
418
|
-
limit,
|
|
419
|
-
});
|
|
420
|
-
const messages = (result.messages ?? []);
|
|
421
|
-
const mapped = messages
|
|
422
|
-
.filter((msg) => !!msg.ts)
|
|
423
|
-
.filter((msg) => msg.ts !== threadTs)
|
|
424
|
-
.map((msg) => {
|
|
425
|
-
const user = msg.user ? this.users.get(msg.user) : undefined;
|
|
426
|
-
const message = {
|
|
427
|
-
ts: msg.ts,
|
|
428
|
-
text: unescapeSlackText(msg.text ?? ""),
|
|
429
|
-
isBot: !!msg.bot_id || msg.subtype === "bot_message" || user?.isBot === true,
|
|
430
|
-
};
|
|
431
|
-
if (msg.thread_ts && msg.thread_ts !== msg.ts)
|
|
432
|
-
message.threadTs = msg.thread_ts;
|
|
433
|
-
if (msg.user)
|
|
434
|
-
message.userId = msg.user;
|
|
435
|
-
if (user)
|
|
436
|
-
message.userName = user.userName;
|
|
437
|
-
return message;
|
|
438
|
-
});
|
|
439
|
-
return threadTs ? mapped : mapped.toReversed();
|
|
440
|
-
});
|
|
441
|
-
}
|
|
442
|
-
async listUsers() {
|
|
443
|
-
await slackRetry(() => this.fetchUsers());
|
|
444
|
-
return this.getAllUsers().map((user) => ({
|
|
445
|
-
id: user.id,
|
|
446
|
-
userName: user.userName,
|
|
447
|
-
displayName: user.displayName,
|
|
448
|
-
isBot: user.isBot === true,
|
|
449
|
-
}));
|
|
450
|
-
}
|
|
451
411
|
async updateMessage(channel, ts, text) {
|
|
452
412
|
return slackRetry(async () => {
|
|
453
413
|
const payload = { channel, ts, ...renderSlackBlocks(this.resolveMentions(text)) };
|
|
@@ -1059,14 +1019,22 @@ export class SlackMessagingBot {
|
|
|
1059
1019
|
await this.handler.handleEvent(event, this, context);
|
|
1060
1020
|
}
|
|
1061
1021
|
setupEventHandlers() {
|
|
1062
|
-
this.socketClient.on("disconnect", (err) => {
|
|
1063
|
-
log.logWarning("Slack socket disconnect", err ? String(err) : "");
|
|
1064
|
-
});
|
|
1065
1022
|
this.socketClient.on("error", (err) => {
|
|
1066
1023
|
log.logWarning("Slack socket error", err ? String(err) : "");
|
|
1067
1024
|
});
|
|
1068
|
-
|
|
1069
|
-
|
|
1025
|
+
let connectionLostAt;
|
|
1026
|
+
this.socketClient.on("close", () => {
|
|
1027
|
+
if (this.stopped || connectionLostAt !== undefined)
|
|
1028
|
+
return;
|
|
1029
|
+
connectionLostAt = Date.now();
|
|
1030
|
+
log.logWarning("Slack connection lost; reconnecting");
|
|
1031
|
+
});
|
|
1032
|
+
this.socketClient.on("connected", () => {
|
|
1033
|
+
if (connectionLostAt === undefined)
|
|
1034
|
+
return;
|
|
1035
|
+
const seconds = Math.round((Date.now() - connectionLostAt) / 1000);
|
|
1036
|
+
connectionLostAt = undefined;
|
|
1037
|
+
log.logInfo(`Slack reconnected after ${seconds}s`);
|
|
1070
1038
|
});
|
|
1071
1039
|
const on = (event, handle) => this.socketClient.on(event, (payload) => this.intake.run(() => handle(withLoggedAck(event, payload))));
|
|
1072
1040
|
on("app_mention", (payload) => this.handleAppMention(payload));
|
|
@@ -1378,7 +1346,11 @@ export class SlackMessagingBot {
|
|
|
1378
1346
|
return;
|
|
1379
1347
|
}
|
|
1380
1348
|
ack();
|
|
1381
|
-
const sessionKey = action.value
|
|
1349
|
+
const sessionKey = action.value;
|
|
1350
|
+
if (!sessionKey) {
|
|
1351
|
+
log.logWarning("[Force Stop] Ignored a button without a session key", action.action_id);
|
|
1352
|
+
return;
|
|
1353
|
+
}
|
|
1382
1354
|
const userId = body.user?.id;
|
|
1383
1355
|
const channelId = body.container?.channel_id || conversationIdOf(sessionKey);
|
|
1384
1356
|
log.logInfo(`[Force Stop] User ${userId} requested force stop for ${sessionKey}`);
|