@geminixiang/mikan 1.4.0 → 1.5.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.
Files changed (116) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/dist/adapters/commands/desktop.d.ts +5 -0
  3. package/dist/adapters/commands/desktop.d.ts.map +1 -0
  4. package/dist/adapters/commands/desktop.js +58 -0
  5. package/dist/adapters/commands/desktop.js.map +1 -0
  6. package/dist/adapters/commands/manifest.d.ts.map +1 -1
  7. package/dist/adapters/commands/manifest.js +8 -0
  8. package/dist/adapters/commands/manifest.js.map +1 -1
  9. package/dist/adapters/commands/registry.d.ts.map +1 -1
  10. package/dist/adapters/commands/registry.js +2 -0
  11. package/dist/adapters/commands/registry.js.map +1 -1
  12. package/dist/adapters/commands/types.d.ts +3 -1
  13. package/dist/adapters/commands/types.d.ts.map +1 -1
  14. package/dist/adapters/commands/types.js.map +1 -1
  15. package/dist/adapters/messages.d.ts +0 -1
  16. package/dist/adapters/messages.d.ts.map +1 -1
  17. package/dist/adapters/messages.js +0 -3
  18. package/dist/adapters/messages.js.map +1 -1
  19. package/dist/adapters/slack/app-config.d.ts +27 -0
  20. package/dist/adapters/slack/app-config.d.ts.map +1 -0
  21. package/dist/adapters/slack/app-config.js +241 -0
  22. package/dist/adapters/slack/app-config.js.map +1 -0
  23. package/dist/adapters/slack/bot.d.ts +0 -3
  24. package/dist/adapters/slack/bot.d.ts.map +1 -1
  25. package/dist/adapters/slack/bot.js +4 -163
  26. package/dist/adapters/slack/bot.js.map +1 -1
  27. package/dist/adapters/slack/types.d.ts +46 -2
  28. package/dist/adapters/slack/types.d.ts.map +1 -1
  29. package/dist/adapters/slack/types.js.map +1 -1
  30. package/dist/adapters/web/desktop/index.d.ts +16 -0
  31. package/dist/adapters/web/desktop/index.d.ts.map +1 -0
  32. package/dist/adapters/web/desktop/index.js +163 -0
  33. package/dist/adapters/web/desktop/index.js.map +1 -0
  34. package/dist/adapters/web/desktop/page.d.ts +2 -0
  35. package/dist/adapters/web/desktop/page.d.ts.map +1 -0
  36. package/dist/adapters/web/desktop/page.js +83 -0
  37. package/dist/adapters/web/desktop/page.js.map +1 -0
  38. package/dist/adapters/web/desktop/types.d.ts +8 -0
  39. package/dist/adapters/web/desktop/types.d.ts.map +1 -0
  40. package/dist/adapters/web/desktop/types.js +2 -0
  41. package/dist/adapters/web/desktop/types.js.map +1 -0
  42. package/dist/adapters/web/server.d.ts +2 -0
  43. package/dist/adapters/web/server.d.ts.map +1 -1
  44. package/dist/adapters/web/server.js +19 -0
  45. package/dist/adapters/web/server.js.map +1 -1
  46. package/dist/cli/boot.d.ts.map +1 -1
  47. package/dist/cli/boot.js +4 -1
  48. package/dist/cli/boot.js.map +1 -1
  49. package/dist/cli/onboard.d.ts +3 -0
  50. package/dist/cli/onboard.d.ts.map +1 -1
  51. package/dist/cli/onboard.js +79 -3
  52. package/dist/cli/onboard.js.map +1 -1
  53. package/dist/cli/slack.d.ts +9 -0
  54. package/dist/cli/slack.d.ts.map +1 -0
  55. package/dist/cli/slack.js +96 -0
  56. package/dist/cli/slack.js.map +1 -0
  57. package/dist/cli/types.d.ts +2 -1
  58. package/dist/cli/types.d.ts.map +1 -1
  59. package/dist/cli/types.js.map +1 -1
  60. package/dist/harness/desktop.d.ts +16 -0
  61. package/dist/harness/desktop.d.ts.map +1 -0
  62. package/dist/harness/desktop.js +6 -0
  63. package/dist/harness/desktop.js.map +1 -0
  64. package/dist/harness/execution-resolver.d.ts +1 -0
  65. package/dist/harness/execution-resolver.d.ts.map +1 -1
  66. package/dist/harness/execution-resolver.js +5 -0
  67. package/dist/harness/execution-resolver.js.map +1 -1
  68. package/dist/harness/presenter.d.ts.map +1 -1
  69. package/dist/harness/presenter.js +6 -1
  70. package/dist/harness/presenter.js.map +1 -1
  71. package/dist/harness/runner.d.ts.map +1 -1
  72. package/dist/harness/runner.js +22 -1
  73. package/dist/harness/runner.js.map +1 -1
  74. package/dist/harness/session.d.ts +1 -1
  75. package/dist/harness/session.d.ts.map +1 -1
  76. package/dist/harness/session.js +30 -9
  77. package/dist/harness/session.js.map +1 -1
  78. package/dist/harness/tools/codemode.d.ts.map +1 -1
  79. package/dist/harness/tools/codemode.js +2 -2
  80. package/dist/harness/tools/codemode.js.map +1 -1
  81. package/dist/harness/tools/index.d.ts +2 -2
  82. package/dist/harness/tools/index.d.ts.map +1 -1
  83. package/dist/harness/tools/index.js +10 -2
  84. package/dist/harness/tools/index.js.map +1 -1
  85. package/dist/harness/tools/jev-browser.d.ts +12 -1
  86. package/dist/harness/tools/jev-browser.d.ts.map +1 -1
  87. package/dist/harness/tools/jev-browser.js +189 -30
  88. package/dist/harness/tools/jev-browser.js.map +1 -1
  89. package/dist/harness/tools/pi-tools.d.ts.map +1 -1
  90. package/dist/harness/tools/pi-tools.js +2 -1
  91. package/dist/harness/tools/pi-tools.js.map +1 -1
  92. package/dist/harness/tools/types.d.ts +4 -0
  93. package/dist/harness/tools/types.d.ts.map +1 -1
  94. package/dist/harness/tools/types.js.map +1 -1
  95. package/dist/harness/types.d.ts +2 -1
  96. package/dist/harness/types.d.ts.map +1 -1
  97. package/dist/harness/types.js.map +1 -1
  98. package/dist/main.js +29 -0
  99. package/dist/main.js.map +1 -1
  100. package/dist/runtime/conversation-runtime.js +7 -0
  101. package/dist/runtime/conversation-runtime.js.map +1 -1
  102. package/dist/sandbox/desktop.d.ts +30 -0
  103. package/dist/sandbox/desktop.d.ts.map +1 -0
  104. package/dist/sandbox/desktop.js +112 -0
  105. package/dist/sandbox/desktop.js.map +1 -0
  106. package/dist/sandbox/provisioner.d.ts +4 -1
  107. package/dist/sandbox/provisioner.d.ts.map +1 -1
  108. package/dist/sandbox/provisioner.js +21 -0
  109. package/dist/sandbox/provisioner.js.map +1 -1
  110. package/dist/sandbox/types.d.ts +19 -0
  111. package/dist/sandbox/types.d.ts.map +1 -1
  112. package/dist/sandbox/types.js.map +1 -1
  113. package/dist/types.d.ts +17 -1
  114. package/dist/types.d.ts.map +1 -1
  115. package/dist/types.js.map +1 -1
  116. package/package.json +9 -8
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-config.js","sourceRoot":"","sources":["../../../src/adapters/slack/app-config.ts"],"names":[],"mappings":"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","sourcesContent":["import { join } from \"node:path\";\nimport { WebClient } from \"@slack/web-api\";\nimport { Type } from \"typebox\";\nimport { Value } from \"typebox/value\";\nimport { COMMAND_MANIFEST } from \"../commands/manifest.js\";\nimport { atomicWritePrivateFile, readJsonSchemaFileIfExists } from \"../../file-guards.js\";\nimport { errorMessage, isRecord } from \"../../unknown-values.js\";\nimport type {\n SlackAppApi,\n SlackAppCustomization,\n SlackAppManifest,\n SlackAppSyncResult,\n SlackBotApi,\n SlackConfigTokens,\n} from \"./types.js\";\n\nexport const SLACK_APP_CUSTOMIZATION_FILE = \"slack.json\";\nexport const SLACK_CONFIG_TOKEN_FILE = \"slack-config-token.json\";\n\nconst BOT_SCOPES = [\n \"app_mentions:read\",\n \"channels:history\",\n \"channels:read\",\n \"chat:write\",\n \"chat:write.customize\",\n \"commands\",\n \"files:read\",\n \"files:write\",\n \"groups:history\",\n \"groups:read\",\n \"im:history\",\n \"im:read\",\n \"im:write\",\n \"reactions:write\",\n \"users:read\",\n] as const;\n\nconst BOT_EVENTS = [\n \"app_home_opened\",\n \"app_mention\",\n \"message.channels\",\n \"message.groups\",\n \"message.im\",\n] as const;\n\nconst SlackAppCustomizationSchema = Type.Object(\n {\n display_information: Type.Optional(\n Type.Object(\n {\n name: Type.Optional(Type.String({ minLength: 1, maxLength: 35 })),\n description: Type.Optional(Type.String({ maxLength: 140 })),\n long_description: Type.Optional(Type.String({ maxLength: 4000 })),\n background_color: Type.Optional(Type.String({ pattern: \"^#[0-9a-fA-F]{6}$\" })),\n },\n { additionalProperties: false },\n ),\n ),\n },\n { additionalProperties: false },\n);\n\nconst ConfigTokenFileSchema = Type.Object({\n token: Type.String({ minLength: 1 }),\n refresh_token: Type.String({ minLength: 1 }),\n});\n\nconst DEFAULT_BOT_NAME = \"mikan\";\nconst SLACK_BOT_NAME = /^[A-Za-z0-9 ._-]{1,80}$/;\n\nexport function slackBotNameProblem(name: string): string | undefined {\n return SLACK_BOT_NAME.test(name)\n ? undefined\n : `Slack names the bot user only with letters, digits, spaces, \".\", \"_\", and \"-\" (up to 80), so the bot keeps the name ${DEFAULT_BOT_NAME}.`;\n}\n\nfunction botName(customization: SlackAppCustomization): string {\n const name = customization.display_information?.name;\n return name !== undefined && slackBotNameProblem(name) === undefined ? name : DEFAULT_BOT_NAME;\n}\n\nexport function slackAppManifest(customization: SlackAppCustomization = {}): SlackAppManifest {\n const manifest = {\n display_information: {\n name: \"mikan\",\n description: \"mikan Slack assistant\",\n background_color: \"#4d5673\",\n ...customization.display_information,\n },\n features: {\n app_home: {\n home_tab_enabled: false,\n messages_tab_enabled: true,\n messages_tab_read_only_enabled: false,\n },\n bot_user: { display_name: botName(customization), always_online: true },\n slash_commands: COMMAND_MANIFEST.flatMap((entry) =>\n entry.slackCommand\n ? [\n {\n command: entry.slackCommand,\n description: entry.description,\n usage_hint: entry.arg?.description,\n should_escape: false,\n },\n ]\n : [],\n ),\n },\n oauth_config: {\n redirect_urls: [\"https://localhost\"],\n scopes: { bot: [...BOT_SCOPES] },\n pkce_enabled: false,\n },\n settings: {\n event_subscriptions: { bot_events: [...BOT_EVENTS] },\n interactivity: { is_enabled: true },\n org_deploy_enabled: false,\n socket_mode_enabled: true,\n token_rotation_enabled: false,\n app_level_token_rotation_enabled: false,\n is_mcp_enabled: false,\n },\n };\n return manifest;\n}\n\nexport function readSlackAppCustomization(stateDir: string): SlackAppCustomization {\n const path = join(stateDir, SLACK_APP_CUSTOMIZATION_FILE);\n return (\n readJsonSchemaFileIfExists(\n path,\n SlackAppCustomizationSchema,\n (detail) => `Invalid ${path}: ${detail}. It may hold only display_information fields.`,\n ) ?? {}\n );\n}\n\nexport function slackAppCustomizationProblem(\n customization: SlackAppCustomization,\n): string | undefined {\n if (Value.Check(SlackAppCustomizationSchema, customization)) return undefined;\n const first = Value.Errors(SlackAppCustomizationSchema, customization)[0];\n return `Slack would reject this app setting: ${first?.instancePath ?? \"\"} ${first?.message ?? \"\"}`.trim();\n}\n\nexport function writeSlackAppCustomization(\n stateDir: string,\n customization: SlackAppCustomization,\n): void {\n const problem = slackAppCustomizationProblem(customization);\n if (problem) throw new Error(problem);\n atomicWritePrivateFile(\n join(stateDir, SLACK_APP_CUSTOMIZATION_FILE),\n `${JSON.stringify(customization, null, 2)}\\n`,\n );\n}\n\nfunction readConfigTokens(stateDir: string): SlackConfigTokens | undefined {\n const path = join(stateDir, SLACK_CONFIG_TOKEN_FILE);\n const stored = readJsonSchemaFileIfExists(\n path,\n ConfigTokenFileSchema,\n (detail) => `Invalid ${path}: ${detail}`,\n );\n return stored ? { token: stored.token, refreshToken: stored.refresh_token } : undefined;\n}\n\nexport function writeConfigTokens(stateDir: string, tokens: SlackConfigTokens): void {\n atomicWritePrivateFile(\n join(stateDir, SLACK_CONFIG_TOKEN_FILE),\n `${JSON.stringify({ token: tokens.token, refresh_token: tokens.refreshToken })}\\n`,\n );\n}\n\nfunction canonical(value: unknown): unknown {\n if (Array.isArray(value)) return value.map(canonical);\n if (!isRecord(value)) return value;\n return Object.fromEntries(\n Object.keys(value)\n .filter((key) => value[key] !== undefined)\n .toSorted()\n .map((key) => [key, canonical(value[key])]),\n );\n}\n\nconst SLACK_MANAGED_APP_HOME_FIELDS = new Set([\"agent_tasks_enabled\"]);\n\nfunction withoutSlackManagedFields(live: unknown): unknown {\n if (!isRecord(live) || !isRecord(live.features) || !isRecord(live.features.app_home)) return live;\n const appHome = Object.fromEntries(\n Object.entries(live.features.app_home).filter(\n ([key]) => !SLACK_MANAGED_APP_HOME_FIELDS.has(key),\n ),\n );\n return { ...live, features: { ...live.features, app_home: appHome } };\n}\n\nfunction sameManifest(live: unknown, desired: SlackAppManifest): boolean {\n return (\n JSON.stringify(canonical(withoutSlackManagedFields(live))) ===\n JSON.stringify(canonical(desired))\n );\n}\n\nfunction reinstallMessage(appId: string, missingScopes: string[]): string {\n return `mikan updated this Slack app, and it now needs permissions the installed bot does not have: ${missingScopes.join(\", \")}. Reinstall the app to grant them: https://api.slack.com/apps/${appId}/install-on-team`;\n}\n\nexport async function syncSlackApp(options: {\n stateDir: string;\n apps: SlackAppApi;\n bot: SlackBotApi;\n}): Promise<SlackAppSyncResult> {\n const { stateDir, apps, bot } = options;\n const stored = readConfigTokens(stateDir);\n if (!stored) return { status: \"no-token\" };\n try {\n const rotated = await apps.rotate(stored.refreshToken);\n writeConfigTokens(stateDir, rotated);\n const appId = await bot.appId();\n const desired = slackAppManifest(readSlackAppCustomization(stateDir));\n if (sameManifest(await apps.export(rotated.token, appId), desired)) {\n return { status: \"unchanged\", appId };\n }\n const { permissionsUpdated } = await apps.update(rotated.token, appId, desired);\n const granted = permissionsUpdated ? new Set(await bot.scopes()) : undefined;\n const missingScopes = granted\n ? (desired.oauth_config?.scopes?.bot ?? []).filter((scope) => !granted.has(scope))\n : [];\n if (missingScopes.length > 0) {\n await bot.directMessage(rotated.userId, reinstallMessage(appId, missingScopes));\n }\n return { status: \"updated\", appId, missingScopes };\n } catch (error) {\n return { status: \"failed\", reason: errorMessage(error) };\n }\n}\n\nexport function describeSlackAppSync(result: SlackAppSyncResult): string | undefined {\n switch (result.status) {\n case \"no-token\":\n return undefined;\n case \"failed\":\n return `Slack app sync failed, app left as it was: ${result.reason}`;\n case \"unchanged\":\n return `Slack app ${result.appId} already matches mikan's manifest`;\n case \"updated\":\n return result.missingScopes.length > 0\n ? `Slack app ${result.appId} updated to mikan's manifest; it needs a reinstall to grant ${result.missingScopes.join(\", \")}, and the configuration token owner was asked by DM`\n : `Slack app ${result.appId} updated to mikan's manifest`;\n }\n}\n\nexport async function createSlackApp(options: {\n apps: SlackAppApi;\n refreshToken: string;\n customization: SlackAppCustomization;\n}): Promise<{ appId: string; installUrl: string; tokens: SlackConfigTokens }> {\n const tokens = await options.apps.rotate(options.refreshToken);\n const created = await options.apps.create(tokens.token, slackAppManifest(options.customization));\n return { ...created, tokens };\n}\n\nfunction required<T>(value: T | undefined, what: string): T {\n if (value === undefined) throw new Error(`Slack did not return ${what}`);\n return value;\n}\n\nconst NO_RETRIES = { retryConfig: { retries: 0 }, timeout: 15_000 };\n\nexport function slackAppApi(): SlackAppApi {\n const client = new WebClient(undefined, NO_RETRIES);\n return {\n rotate: async (refreshToken) => {\n const result = await client.tooling.tokens.rotate({ refresh_token: refreshToken });\n return {\n token: required(result.token, \"a configuration token\"),\n refreshToken: required(result.refresh_token, \"a refresh token\"),\n userId: required(result.user_id, \"the token owner\"),\n };\n },\n export: async (token, appId) =>\n required(\n (await client.apps.manifest.export({ token, app_id: appId })).manifest,\n \"a manifest\",\n ),\n update: async (token, appId, manifest) => ({\n permissionsUpdated:\n (await client.apps.manifest.update({ token, app_id: appId, manifest }))\n .permissions_updated === true,\n }),\n create: async (token, manifest) => {\n const result = await client.apps.manifest.create({ token, manifest });\n return {\n appId: required(result.app_id, \"an app ID\"),\n installUrl: required(result.oauth_authorize_url, \"an install link\"),\n };\n },\n delete: async (token, appId) => {\n await client.apps.manifest.delete({ token, app_id: appId });\n },\n };\n}\n\nexport function slackBotApi(botToken: string): SlackBotApi {\n const client = new WebClient(botToken, NO_RETRIES);\n return {\n appId: async () => {\n const bot = required((await client.auth.test()).bot_id, \"the bot ID\");\n return required((await client.bots.info({ bot })).bot?.app_id, \"the app ID\");\n },\n scopes: async () => (await client.auth.test()).response_metadata?.scopes ?? [],\n directMessage: async (userId, text) => {\n await client.chat.postMessage({ channel: userId, text });\n },\n };\n}\n"]}
@@ -90,9 +90,6 @@ export declare class SlackMessagingBot implements MessagingBot {
90
90
  private channelKindFor;
91
91
  private backfillChannelKinds;
92
92
  private processSlackMessageIntake;
93
- private appendRunningTasks;
94
- private appendScheduledJobs;
95
- private buildHomeView;
96
93
  private createCommandAdapters;
97
94
  private buildSlashCommandEvent;
98
95
  private routeSlashCommand;
@@ -1 +1 @@
1
- {"version":3,"file":"bot.d.ts","sourceRoot":"","sources":["../../../src/adapters/slack/bot.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bot.d.ts","sourceRoot":"","sources":["../../../src/adapters/slack/bot.ts"],"names":[],"mappings":"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"}
@@ -12,14 +12,13 @@ import { evaluateWithJev, JevNotConfiguredError } from "../../harness/jev.js";
12
12
  import * as log from "../../log.js";
13
13
  import { SlackSocketAgent } from "./socket-agent.js";
14
14
  import { readTextFileNoFollowIfExists } from "../../file-guards.js";
15
- import { PRODUCT_NAME, formatForceStopped, formatResumingTask, formatTaskResumesExhausted, } from "../messages.js";
15
+ import { formatResumingTask, formatTaskResumesExhausted } from "../messages.js";
16
16
  import { MessagingEventQueue, MessagingIntakeTracker, AttachmentRejectedError, saveIncomingAttachments, writeResponseToFile, withRetry, } from "../shared.js";
17
17
  import { matchMagicWord, processMessageIntake } from "../intake.js";
18
18
  import { readPlatformChannelKind, recordPlatformChannelKind } from "../../office/projection.js";
19
19
  import { AssistantThreadRegistry, handleAgentContextChanged, handleAgentDmOpened, handleAssistantThreadStarted, titleAssistantThread, } from "./assistant.js";
20
20
  import { createSlackAdapters } from "./context.js";
21
21
  import { hasMaterializedChatSession, registerThreadSession, } from "../../sessions/chat-history-sync.js";
22
- import { conversationIdOf } from "../../sessions/session-key.js";
23
22
  import { isSlackThreadSessionKey, parseSlackSessionKey, planSlackAdapterSession, planSlackEventAnchorRun, resolveSlackSessionKey, } from "./session.js";
24
23
  import { reportUserFacingError } from "../../observability/index.js";
25
24
  import { recordSlackUpdate } from "./update-diagnostics.js";
@@ -850,127 +849,6 @@ export class SlackMessagingBot {
850
849
  absorbAttachmentFailure();
851
850
  });
852
851
  }
853
- appendRunningTasks(blocks) {
854
- const runningSessions = this.handler.getRunningSessions();
855
- blocks.push({ type: "divider" }, {
856
- type: "header",
857
- text: {
858
- type: "plain_text",
859
- text: `Running Tasks (${runningSessions.length})`,
860
- emoji: true,
861
- },
862
- });
863
- if (runningSessions.length === 0) {
864
- blocks.push({
865
- type: "context",
866
- elements: [{ type: "mrkdwn", text: "_No tasks running right now._" }],
867
- });
868
- return;
869
- }
870
- const stuckThresholdMs = 10 * 60 * 1000;
871
- for (const session of runningSessions) {
872
- const channelId = conversationIdOf(session.sessionKey);
873
- const channelName = this.channels.get(channelId)?.name;
874
- const elapsed = Math.floor((Date.now() - session.startedAt) / 60000);
875
- const elapsedStr = elapsed < 1 ? "<1 min" : `${elapsed} min`;
876
- const lastActivity = session.lastActivityAt ? Date.now() - session.lastActivityAt : 0;
877
- const isStuck = lastActivity > stuckThresholdMs;
878
- let statusLine = `${isStuck ? "_stuck_" : "_running_"} · ${elapsedStr}`;
879
- if (session.currentTool)
880
- statusLine += ` · ${session.currentTool}`;
881
- if (isStuck)
882
- statusLine += ` · idle ${Math.floor(lastActivity / 60000)}m`;
883
- blocks.push({
884
- type: "context",
885
- elements: [
886
- {
887
- type: "mrkdwn",
888
- text: `*${channelName ? `#${channelName}` : channelId}* · ${statusLine}`,
889
- },
890
- ],
891
- });
892
- if (isStuck) {
893
- blocks.push({
894
- type: "context",
895
- elements: [
896
- { type: "mrkdwn", text: " " },
897
- {
898
- type: "button",
899
- text: { type: "plain_text", text: "Force Stop", emoji: true },
900
- action_id: `force_stop_${session.sessionKey.replace(/:/g, "_")}`,
901
- value: session.sessionKey,
902
- style: "danger",
903
- },
904
- ],
905
- });
906
- }
907
- }
908
- }
909
- appendScheduledJobs(blocks, dmChannelId) {
910
- const periodicEvents = dmChannelId && this.eventScheduler
911
- ? this.eventScheduler.periodicEvents(createOfficeAddress("slack", dmChannelId))
912
- : [];
913
- blocks.push({ type: "divider" }, {
914
- type: "header",
915
- text: {
916
- type: "plain_text",
917
- text: `Scheduled Jobs (${periodicEvents.length})`,
918
- emoji: true,
919
- },
920
- });
921
- if (periodicEvents.length === 0) {
922
- blocks.push({
923
- type: "context",
924
- elements: [{ type: "mrkdwn", text: "_No scheduled jobs._" }],
925
- });
926
- return;
927
- }
928
- for (const event of periodicEvents) {
929
- const channel = event.platform === "slack" ? this.channels.get(event.conversationId) : undefined;
930
- const channelId = channel ? `#${channel.name}` : event.conversationId;
931
- const channelLabel = `${event.platform}:${channelId}`;
932
- const nextRun = event.nextRun
933
- ? new Date(event.nextRun).toLocaleString("en-US", {
934
- month: "short",
935
- day: "numeric",
936
- hour: "2-digit",
937
- minute: "2-digit",
938
- })
939
- : "—";
940
- blocks.push({
941
- type: "section",
942
- text: {
943
- type: "mrkdwn",
944
- text: `*${event.text}*\n└ \`${event.schedule}\` · ${channelLabel} · Next: ${nextRun}`,
945
- },
946
- });
947
- }
948
- }
949
- buildHomeView(dmChannelId) {
950
- const blocks = [
951
- {
952
- type: "section",
953
- text: {
954
- type: "mrkdwn",
955
- text: `*${PRODUCT_NAME}*\nStart a new task or check on running work.`,
956
- },
957
- accessory: {
958
- type: "image",
959
- image_url: "https://media1.tenor.com/m/lfDATg4Bhc0AAAAC/happy-cat.gif",
960
- alt_text: PRODUCT_NAME,
961
- },
962
- },
963
- ];
964
- this.appendRunningTasks(blocks);
965
- this.appendScheduledJobs(blocks, dmChannelId);
966
- blocks.push({ type: "divider" }, {
967
- type: "context",
968
- elements: [
969
- { type: "mrkdwn", text: "💡 @mention in a channel or send a DM to start a new task" },
970
- ],
971
- });
972
- return { type: "home", blocks: blocks };
973
- }
974
852
  createCommandAdapters(input) {
975
853
  const { conversationId, userId, userName, text, ts, ...options } = input;
976
854
  const message = createConversationMessage({
@@ -1379,22 +1257,9 @@ export class SlackMessagingBot {
1379
1257
  handleAppHomeOpened({ event, ack }) {
1380
1258
  const e = event;
1381
1259
  ack();
1382
- if (e.tab === "messages") {
1383
- if (e.channel) {
1384
- void handleAgentDmOpened(this.assistantOps(), this.assistantThreads, e.channel, e.context);
1385
- }
1386
- return;
1387
- }
1388
- if (e.tab !== "home")
1260
+ if (e.tab !== "messages" || !e.channel)
1389
1261
  return;
1390
- this.webClient.views
1391
- .publish({
1392
- user_id: e.user,
1393
- view: this.buildHomeView(e.channel),
1394
- })
1395
- .catch((err) => {
1396
- log.logWarning(`Failed to publish App Home view`, String(err));
1397
- });
1262
+ void handleAgentDmOpened(this.assistantOps(), this.assistantThreads, e.channel, e.context);
1398
1263
  }
1399
1264
  async handleBlockAction({ body, ack, }) {
1400
1265
  const action = body.actions?.[0];
@@ -1402,32 +1267,8 @@ export class SlackMessagingBot {
1402
1267
  ack();
1403
1268
  return;
1404
1269
  }
1405
- if (!action.action_id?.startsWith("force_stop_")) {
1406
- ack();
1407
- await this.handleSlackInteraction(body, action);
1408
- return;
1409
- }
1410
1270
  ack();
1411
- const sessionKey = action.value;
1412
- if (!sessionKey) {
1413
- log.logWarning("[Force Stop] Ignored a button without a session key", action.action_id);
1414
- return;
1415
- }
1416
- const userId = body.user?.id;
1417
- const channelId = body.container?.channel_id || conversationIdOf(sessionKey);
1418
- log.logInfo(`[Force Stop] User ${userId} requested force stop for ${sessionKey}`);
1419
- this.handler.forceStop(createOfficeAddress("slack", channelId), sessionKey);
1420
- await this.postMessage(channelId, formatForceStopped("slack", userId ?? "unknown"));
1421
- if (userId) {
1422
- this.openDirectConversation(userId)
1423
- .then((dmChannelId) => this.webClient.views.publish({
1424
- user_id: userId,
1425
- view: this.buildHomeView(dmChannelId),
1426
- }))
1427
- .catch((err) => {
1428
- log.logWarning(`Failed to refresh App Home view`, String(err));
1429
- });
1430
- }
1271
+ await this.handleSlackInteraction(body, action);
1431
1272
  }
1432
1273
  async handleSlackInteraction(body, action) {
1433
1274
  const container = body.container ?? {};