@geminixiang/mikan 1.0.0-beta.53 → 1.0.0-beta.55
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 +29 -0
- package/README.md +3 -2
- package/dist/adapters/commands/admin.d.ts.map +1 -0
- package/dist/{commands → adapters/commands}/admin.js +4 -8
- package/dist/adapters/commands/admin.js.map +1 -0
- package/dist/adapters/commands/login.d.ts.map +1 -0
- package/dist/adapters/commands/login.js +166 -0
- package/dist/adapters/commands/login.js.map +1 -0
- package/dist/adapters/commands/manifest.d.ts.map +1 -0
- package/dist/{commands → adapters/commands}/manifest.js +0 -7
- package/dist/adapters/commands/manifest.js.map +1 -0
- package/dist/{commands → adapters/commands}/model.d.ts +6 -0
- package/dist/adapters/commands/model.d.ts.map +1 -0
- package/dist/{commands → adapters/commands}/model.js +56 -44
- package/dist/adapters/commands/model.js.map +1 -0
- package/dist/adapters/commands/new.d.ts.map +1 -0
- package/dist/{commands → adapters/commands}/new.js +7 -8
- package/dist/adapters/commands/new.js.map +1 -0
- package/dist/adapters/commands/registry.d.ts.map +1 -0
- package/dist/{commands → adapters/commands}/registry.js +1 -3
- package/dist/adapters/commands/registry.js.map +1 -0
- package/dist/adapters/commands/sandbox.d.ts.map +1 -0
- package/dist/{commands → adapters/commands}/sandbox.js +22 -21
- package/dist/adapters/commands/sandbox.js.map +1 -0
- package/dist/adapters/commands/session-view.d.ts.map +1 -0
- package/dist/{commands → adapters/commands}/session-view.js +8 -11
- package/dist/adapters/commands/session-view.js.map +1 -0
- package/dist/{commands → adapters/commands}/types.d.ts +6 -6
- package/dist/adapters/commands/types.d.ts.map +1 -0
- package/dist/adapters/commands/types.js.map +1 -0
- package/dist/adapters/commands/utils.d.ts +14 -0
- package/dist/adapters/commands/utils.d.ts.map +1 -0
- package/dist/{commands → adapters/commands}/utils.js +18 -1
- package/dist/adapters/commands/utils.js.map +1 -0
- package/dist/adapters/discord/bot.d.ts.map +1 -1
- package/dist/adapters/discord/bot.js +4 -5
- package/dist/adapters/discord/bot.js.map +1 -1
- package/dist/adapters/github/bot.d.ts.map +1 -1
- package/dist/adapters/github/bot.js +3 -4
- package/dist/adapters/github/bot.js.map +1 -1
- package/dist/adapters/github/client.d.ts.map +1 -1
- package/dist/adapters/github/client.js +5 -18
- package/dist/adapters/github/client.js.map +1 -1
- package/dist/adapters/github/tool-pack.d.ts +1 -1
- package/dist/adapters/github/tool-pack.d.ts.map +1 -1
- package/dist/adapters/github/tool-pack.js.map +1 -1
- package/dist/adapters/github/tools/checks.js +1 -1
- package/dist/adapters/github/tools/checks.js.map +1 -1
- package/dist/adapters/github/tools/issue.js +1 -1
- package/dist/adapters/github/tools/issue.js.map +1 -1
- package/dist/adapters/github/tools/pr.js +1 -1
- package/dist/adapters/github/tools/pr.js.map +1 -1
- package/dist/adapters/github/tools/read.d.ts.map +1 -1
- package/dist/adapters/github/tools/read.js +53 -53
- package/dist/adapters/github/tools/read.js.map +1 -1
- package/dist/adapters/github/tools/review-reply.js +1 -1
- package/dist/adapters/github/tools/review-reply.js.map +1 -1
- package/dist/adapters/github/tools/sync.js +1 -1
- package/dist/adapters/github/tools/sync.js.map +1 -1
- package/dist/adapters/intake.d.ts +1 -1
- package/dist/adapters/intake.d.ts.map +1 -1
- package/dist/adapters/intake.js +2 -6
- package/dist/adapters/intake.js.map +1 -1
- package/dist/adapters/markdown-tables.d.ts +0 -13
- package/dist/adapters/markdown-tables.d.ts.map +1 -1
- package/dist/adapters/markdown-tables.js +26 -38
- package/dist/adapters/markdown-tables.js.map +1 -1
- package/dist/adapters/shared.js +1 -1
- package/dist/adapters/shared.js.map +1 -1
- package/dist/adapters/slack/bot.d.ts +7 -4
- package/dist/adapters/slack/bot.d.ts.map +1 -1
- package/dist/adapters/slack/bot.js +104 -122
- package/dist/adapters/slack/bot.js.map +1 -1
- package/dist/adapters/slack/response-lifecycle.d.ts.map +1 -1
- package/dist/adapters/slack/response-lifecycle.js +33 -25
- package/dist/adapters/slack/response-lifecycle.js.map +1 -1
- package/dist/adapters/slack/tool-pack.d.ts +1 -1
- package/dist/adapters/slack/tool-pack.d.ts.map +1 -1
- package/dist/adapters/slack/tool-pack.js.map +1 -1
- package/dist/adapters/slack/update-diagnostics.d.ts.map +1 -1
- package/dist/adapters/slack/update-diagnostics.js +8 -24
- package/dist/adapters/slack/update-diagnostics.js.map +1 -1
- package/dist/adapters/telegram/bot.d.ts.map +1 -1
- package/dist/adapters/telegram/bot.js +3 -4
- package/dist/adapters/telegram/bot.js.map +1 -1
- package/dist/adapters/types.d.ts +2 -4
- package/dist/adapters/types.d.ts.map +1 -1
- package/dist/adapters/types.js.map +1 -1
- package/dist/{web → adapters/web}/admin/portal.d.ts +3 -3
- package/dist/adapters/web/admin/portal.d.ts.map +1 -0
- package/dist/{web → adapters/web}/admin/portal.js +535 -709
- package/dist/adapters/web/admin/portal.js.map +1 -0
- package/dist/{web → adapters/web}/admin/provider-models.d.ts +1 -1
- package/dist/adapters/web/admin/provider-models.d.ts.map +1 -0
- package/dist/adapters/web/admin/provider-models.js.map +1 -0
- package/dist/{web → adapters/web}/admin/types.d.ts +5 -5
- package/dist/adapters/web/admin/types.d.ts.map +1 -0
- package/dist/adapters/web/admin/types.js.map +1 -0
- package/dist/adapters/web/login/oauth.d.ts.map +1 -0
- package/dist/{web → adapters/web}/login/oauth.js +50 -54
- package/dist/adapters/web/login/oauth.js.map +1 -0
- package/dist/{web → adapters/web}/login/portal.d.ts +2 -2
- package/dist/adapters/web/login/portal.d.ts.map +1 -0
- package/dist/{web → adapters/web}/login/portal.js +6 -6
- package/dist/adapters/web/login/portal.js.map +1 -0
- package/dist/{web → adapters/web}/login/types.d.ts +1 -1
- package/dist/adapters/web/login/types.d.ts.map +1 -0
- package/dist/adapters/web/login/types.js.map +1 -0
- package/dist/{web → adapters/web}/portal-shell.d.ts +2 -2
- package/dist/adapters/web/portal-shell.d.ts.map +1 -0
- package/dist/{web → adapters/web}/portal-shell.js +2 -2
- package/dist/adapters/web/portal-shell.js.map +1 -0
- package/dist/{web → adapters/web}/server.d.ts +5 -5
- package/dist/adapters/web/server.d.ts.map +1 -0
- package/dist/{web → adapters/web}/server.js +4 -7
- package/dist/adapters/web/server.js.map +1 -0
- package/dist/adapters/web/session-view/portal.d.ts.map +1 -0
- package/dist/{web → adapters/web}/session-view/portal.js +9 -9
- package/dist/adapters/web/session-view/portal.js.map +1 -0
- package/dist/{web → adapters/web}/session-view/types.d.ts +3 -3
- package/dist/adapters/web/session-view/types.d.ts.map +1 -0
- package/dist/adapters/web/session-view/types.js.map +1 -0
- package/dist/adapters/web/token-store.d.ts.map +1 -0
- package/dist/adapters/web/token-store.js.map +1 -0
- package/dist/adapters/web/types.d.ts.map +1 -0
- package/dist/adapters/web/types.js.map +1 -0
- package/dist/cli/arg-grammar.d.ts +24 -0
- package/dist/cli/arg-grammar.d.ts.map +1 -1
- package/dist/cli/arg-grammar.js +39 -8
- package/dist/cli/arg-grammar.js.map +1 -1
- package/dist/cli/boot.d.ts.map +1 -1
- package/dist/cli/boot.js +48 -62
- package/dist/cli/boot.js.map +1 -1
- package/dist/cli/download.d.ts.map +1 -1
- package/dist/cli/download.js +51 -54
- package/dist/cli/download.js.map +1 -1
- package/dist/cli/office.d.ts.map +1 -1
- package/dist/cli/office.js +9 -26
- package/dist/cli/office.js.map +1 -1
- package/dist/cli/onboard.d.ts.map +1 -1
- package/dist/cli/onboard.js +15 -11
- package/dist/cli/onboard.js.map +1 -1
- package/dist/cli/sessions.d.ts.map +1 -1
- package/dist/cli/sessions.js +49 -52
- package/dist/cli/sessions.js.map +1 -1
- package/dist/config.d.ts +4 -28
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +7 -112
- package/dist/config.js.map +1 -1
- package/dist/dream/index.d.ts.map +1 -1
- package/dist/dream/index.js +8 -2
- package/dist/dream/index.js.map +1 -1
- package/dist/dream/types.d.ts +1 -1
- package/dist/dream/types.d.ts.map +1 -1
- package/dist/dream/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 +29 -8
- package/dist/env-manifest.js.map +1 -1
- package/dist/events/index.d.ts +150 -0
- package/dist/events/index.d.ts.map +1 -0
- package/dist/{harness/event-format.js → events/index.js} +80 -2
- package/dist/events/index.js.map +1 -0
- package/dist/{events.d.ts → events/watcher.d.ts} +4 -4
- package/dist/events/watcher.d.ts.map +1 -0
- package/dist/{events.js → events/watcher.js} +8 -8
- package/dist/events/watcher.js.map +1 -0
- package/dist/file-guards.d.ts.map +1 -0
- package/dist/file-guards.js.map +1 -0
- package/dist/harness/execution-env.d.ts +19 -0
- package/dist/harness/execution-env.d.ts.map +1 -0
- package/dist/harness/execution-env.js +262 -0
- package/dist/harness/execution-env.js.map +1 -0
- package/dist/harness/execution-resolver.d.ts +25 -0
- package/dist/harness/execution-resolver.d.ts.map +1 -0
- package/dist/{execution-resolver.js → harness/execution-resolver.js} +12 -21
- package/dist/harness/execution-resolver.js.map +1 -0
- package/dist/harness/index.d.ts +9 -9
- package/dist/harness/index.d.ts.map +1 -1
- package/dist/harness/index.js +8 -8
- package/dist/harness/index.js.map +1 -1
- package/dist/harness/mcp.d.ts +38 -0
- package/dist/harness/mcp.d.ts.map +1 -0
- package/dist/{mcp/loader.js → harness/mcp.js} +155 -6
- package/dist/harness/mcp.js.map +1 -0
- package/dist/harness/models.js +1 -1
- package/dist/harness/models.js.map +1 -1
- package/dist/harness/open-connector.d.ts.map +1 -0
- package/dist/{mcp → harness}/open-connector.js +1 -1
- package/dist/harness/open-connector.js.map +1 -0
- package/dist/{agent → harness}/presenter.d.ts +2 -9
- package/dist/harness/presenter.d.ts.map +1 -0
- package/dist/{agent → harness}/presenter.js +170 -146
- package/dist/harness/presenter.js.map +1 -0
- package/dist/{agent → harness}/prompt.d.ts +10 -3
- package/dist/harness/prompt.d.ts.map +1 -0
- package/dist/{agent → harness}/prompt.js +137 -41
- package/dist/harness/prompt.js.map +1 -0
- package/dist/harness/runner.d.ts +2 -109
- package/dist/harness/runner.d.ts.map +1 -1
- package/dist/harness/runner.js +499 -467
- package/dist/harness/runner.js.map +1 -1
- package/dist/harness/session.d.ts +119 -0
- package/dist/harness/session.d.ts.map +1 -0
- package/dist/harness/session.js +561 -0
- package/dist/harness/session.js.map +1 -0
- package/dist/harness/skills.d.ts +10 -2
- package/dist/harness/skills.d.ts.map +1 -1
- package/dist/harness/skills.js +62 -39
- package/dist/harness/skills.js.map +1 -1
- package/dist/harness/{subagent-runner.d.ts → subagent.d.ts} +25 -6
- package/dist/harness/subagent.d.ts.map +1 -0
- package/dist/harness/{subagent-runner.js → subagent.js} +106 -54
- package/dist/harness/subagent.js.map +1 -0
- package/dist/harness/tools/attach.d.ts.map +1 -0
- package/dist/harness/tools/attach.js.map +1 -0
- package/dist/{tools → harness/tools}/event.d.ts +3 -32
- package/dist/harness/tools/event.d.ts.map +1 -0
- package/dist/harness/tools/event.js +178 -0
- package/dist/harness/tools/event.js.map +1 -0
- package/dist/harness/tools/generate-image.d.ts.map +1 -0
- package/dist/harness/tools/generate-image.js.map +1 -0
- package/dist/harness/tools/host-fn-tool.d.ts.map +1 -0
- package/dist/harness/tools/host-fn-tool.js.map +1 -0
- package/dist/{tools → harness/tools}/index.d.ts +5 -6
- package/dist/harness/tools/index.d.ts.map +1 -0
- package/dist/{tools → harness/tools}/index.js +12 -16
- package/dist/harness/tools/index.js.map +1 -0
- package/dist/harness/tools/pi-tools.d.ts +18 -0
- package/dist/harness/tools/pi-tools.d.ts.map +1 -0
- package/dist/harness/tools/pi-tools.js +84 -0
- package/dist/harness/tools/pi-tools.js.map +1 -0
- package/dist/harness/tools/react.d.ts.map +1 -0
- package/dist/harness/tools/react.js.map +1 -0
- package/dist/{tools → harness/tools}/sandbox.d.ts +2 -2
- package/dist/harness/tools/sandbox.d.ts.map +1 -0
- package/dist/{tools → harness/tools}/sandbox.js +1 -1
- package/dist/harness/tools/sandbox.js.map +1 -0
- package/dist/{tools → harness/tools}/subagent.d.ts +28 -1
- package/dist/harness/tools/subagent.d.ts.map +1 -0
- package/dist/{tools → harness/tools}/subagent.js +218 -2
- package/dist/harness/tools/subagent.js.map +1 -0
- package/dist/{tools → harness/tools}/types.d.ts +0 -33
- package/dist/harness/tools/types.d.ts.map +1 -0
- package/dist/harness/tools/types.js.map +1 -0
- package/dist/harness/types.d.ts +180 -97
- package/dist/harness/types.d.ts.map +1 -1
- package/dist/harness/types.js +1 -1
- package/dist/harness/types.js.map +1 -1
- package/dist/index.d.ts +12 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -6
- package/dist/index.js.map +1 -1
- package/dist/main.js +10 -12
- package/dist/main.js.map +1 -1
- package/dist/observability/index.d.ts +33 -0
- package/dist/observability/index.d.ts.map +1 -0
- package/dist/observability/index.js +256 -0
- package/dist/observability/index.js.map +1 -0
- package/dist/observability/instrument.js +7 -1
- package/dist/observability/instrument.js.map +1 -1
- package/dist/observability/otel.d.ts +10 -0
- package/dist/observability/otel.d.ts.map +1 -0
- package/dist/observability/otel.js +183 -0
- package/dist/observability/otel.js.map +1 -0
- package/dist/observability/sentry.d.ts +22 -5
- package/dist/observability/sentry.d.ts.map +1 -1
- package/dist/observability/sentry.js +68 -23
- package/dist/observability/sentry.js.map +1 -1
- package/dist/observability/types.d.ts +6 -2
- package/dist/observability/types.d.ts.map +1 -1
- package/dist/observability/types.js.map +1 -1
- package/dist/office/index.d.ts +2 -3
- package/dist/office/index.d.ts.map +1 -1
- package/dist/office/index.js +172 -140
- package/dist/office/index.js.map +1 -1
- package/dist/{workspace-projection/index.d.ts → office/projection.d.ts} +2 -2
- package/dist/office/projection.d.ts.map +1 -0
- package/dist/{workspace-projection/index.js → office/projection.js} +2 -2
- package/dist/office/projection.js.map +1 -0
- package/dist/office/types.d.ts +29 -2
- package/dist/office/types.d.ts.map +1 -1
- package/dist/office/types.js.map +1 -1
- package/dist/process-lifecycle.d.ts +1 -1
- package/dist/process-lifecycle.d.ts.map +1 -1
- package/dist/process-lifecycle.js +3 -3
- package/dist/process-lifecycle.js.map +1 -1
- package/dist/runtime/conversation-runtime.d.ts.map +1 -1
- package/dist/runtime/conversation-runtime.js +106 -107
- package/dist/runtime/conversation-runtime.js.map +1 -1
- package/dist/runtime/session-lifecycle.d.ts +10 -0
- package/dist/runtime/session-lifecycle.d.ts.map +1 -1
- package/dist/runtime/session-lifecycle.js +42 -24
- package/dist/runtime/session-lifecycle.js.map +1 -1
- package/dist/runtime/types.d.ts +3 -3
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/runtime/types.js.map +1 -1
- package/dist/sandbox/cloudflare.d.ts +1 -0
- package/dist/sandbox/cloudflare.d.ts.map +1 -1
- package/dist/sandbox/cloudflare.js +41 -50
- package/dist/sandbox/cloudflare.js.map +1 -1
- package/dist/sandbox/container.d.ts.map +1 -1
- package/dist/sandbox/container.js +7 -4
- package/dist/sandbox/container.js.map +1 -1
- package/dist/sandbox/host.d.ts.map +1 -1
- package/dist/sandbox/host.js +27 -35
- package/dist/sandbox/host.js.map +1 -1
- package/dist/sandbox/index.d.ts.map +1 -1
- package/dist/sandbox/index.js +8 -15
- package/dist/sandbox/index.js.map +1 -1
- package/dist/{provisioner.d.ts → sandbox/provisioner.d.ts} +2 -2
- package/dist/sandbox/provisioner.d.ts.map +1 -0
- package/dist/{provisioner.js → sandbox/provisioner.js} +3 -3
- package/dist/sandbox/provisioner.js.map +1 -0
- package/dist/sandbox/types.d.ts +2 -0
- package/dist/sandbox/types.d.ts.map +1 -1
- package/dist/sandbox/types.js.map +1 -1
- package/dist/sandbox/utils.d.ts +5 -0
- package/dist/sandbox/utils.d.ts.map +1 -1
- package/dist/sandbox/utils.js +14 -0
- package/dist/sandbox/utils.js.map +1 -1
- package/dist/sessions/chat-history-sync.d.ts.map +1 -1
- package/dist/sessions/chat-history-sync.js +72 -62
- package/dist/sessions/chat-history-sync.js.map +1 -1
- package/dist/sessions/migrate-common.d.ts +43 -0
- package/dist/sessions/migrate-common.d.ts.map +1 -0
- package/dist/sessions/migrate-common.js +99 -0
- package/dist/sessions/migrate-common.js.map +1 -0
- package/dist/sessions/migrate-pi-084.d.ts.map +1 -1
- package/dist/sessions/migrate-pi-084.js +152 -203
- package/dist/sessions/migrate-pi-084.js.map +1 -1
- package/dist/sessions/migrate-v3.d.ts +5 -0
- package/dist/sessions/migrate-v3.d.ts.map +1 -1
- package/dist/sessions/migrate-v3.js +161 -209
- package/dist/sessions/migrate-v3.js.map +1 -1
- package/dist/{harness → sessions}/session-store.d.ts +12 -1
- package/dist/sessions/session-store.d.ts.map +1 -0
- package/dist/{harness → sessions}/session-store.js +74 -35
- package/dist/sessions/session-store.js.map +1 -0
- package/dist/sessions/store.d.ts +1 -1
- package/dist/sessions/store.d.ts.map +1 -1
- package/dist/sessions/store.js +18 -17
- package/dist/sessions/store.js.map +1 -1
- package/dist/sessions/types.d.ts +40 -1
- package/dist/sessions/types.d.ts.map +1 -1
- package/dist/sessions/types.js +1 -1
- package/dist/sessions/types.js.map +1 -1
- package/dist/types.d.ts +7 -99
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/vault/index.d.ts.map +1 -1
- package/dist/vault/index.js +70 -53
- package/dist/vault/index.js.map +1 -1
- package/package.json +10 -4
- package/dist/adapters/slack/tools/attach.d.ts.map +0 -1
- package/dist/adapters/slack/tools/attach.js.map +0 -1
- package/dist/agent/catalog.d.ts +0 -22
- package/dist/agent/catalog.d.ts.map +0 -1
- package/dist/agent/catalog.js +0 -104
- package/dist/agent/catalog.js.map +0 -1
- package/dist/agent/execution.d.ts +0 -25
- package/dist/agent/execution.d.ts.map +0 -1
- package/dist/agent/execution.js +0 -171
- package/dist/agent/execution.js.map +0 -1
- package/dist/agent/presenter.d.ts.map +0 -1
- package/dist/agent/presenter.js.map +0 -1
- package/dist/agent/prompt.d.ts.map +0 -1
- package/dist/agent/prompt.js.map +0 -1
- package/dist/agent/runner.d.ts +0 -3
- package/dist/agent/runner.d.ts.map +0 -1
- package/dist/agent/runner.js +0 -452
- package/dist/agent/runner.js.map +0 -1
- package/dist/agent/types.d.ts +0 -101
- package/dist/agent/types.d.ts.map +0 -1
- package/dist/agent/types.js +0 -3
- package/dist/agent/types.js.map +0 -1
- package/dist/agent-events.d.ts +0 -6
- package/dist/agent-events.d.ts.map +0 -1
- package/dist/agent-events.js +0 -44
- package/dist/agent-events.js.map +0 -1
- package/dist/commands/admin.d.ts.map +0 -1
- package/dist/commands/admin.js.map +0 -1
- package/dist/commands/auto-reply.d.ts +0 -8
- package/dist/commands/auto-reply.d.ts.map +0 -1
- package/dist/commands/auto-reply.js +0 -65
- package/dist/commands/auto-reply.js.map +0 -1
- package/dist/commands/login.d.ts.map +0 -1
- package/dist/commands/login.js +0 -158
- package/dist/commands/login.js.map +0 -1
- package/dist/commands/manifest.d.ts.map +0 -1
- package/dist/commands/manifest.js.map +0 -1
- package/dist/commands/model.d.ts.map +0 -1
- package/dist/commands/model.js.map +0 -1
- package/dist/commands/new.d.ts.map +0 -1
- package/dist/commands/new.js.map +0 -1
- package/dist/commands/registry.d.ts.map +0 -1
- package/dist/commands/registry.js.map +0 -1
- package/dist/commands/sandbox.d.ts.map +0 -1
- package/dist/commands/sandbox.js.map +0 -1
- package/dist/commands/session-view.d.ts.map +0 -1
- package/dist/commands/session-view.js.map +0 -1
- package/dist/commands/types.d.ts.map +0 -1
- package/dist/commands/types.js.map +0 -1
- package/dist/commands/utils.d.ts +0 -11
- package/dist/commands/utils.d.ts.map +0 -1
- package/dist/commands/utils.js.map +0 -1
- package/dist/events.d.ts.map +0 -1
- package/dist/events.js.map +0 -1
- package/dist/execution-resolver.d.ts +0 -27
- package/dist/execution-resolver.d.ts.map +0 -1
- package/dist/execution-resolver.js.map +0 -1
- package/dist/harness/event-format.d.ts +0 -33
- package/dist/harness/event-format.d.ts.map +0 -1
- package/dist/harness/event-format.js.map +0 -1
- package/dist/harness/session-store.d.ts.map +0 -1
- package/dist/harness/session-store.js.map +0 -1
- package/dist/harness/settings.d.ts +0 -29
- package/dist/harness/settings.d.ts.map +0 -1
- package/dist/harness/settings.js +0 -40
- package/dist/harness/settings.js.map +0 -1
- package/dist/harness/subagent-runner.d.ts.map +0 -1
- package/dist/harness/subagent-runner.js.map +0 -1
- package/dist/harness/subagent-slots.d.ts +0 -28
- package/dist/harness/subagent-slots.d.ts.map +0 -1
- package/dist/harness/subagent-slots.js +0 -72
- package/dist/harness/subagent-slots.js.map +0 -1
- package/dist/harness/usage.d.ts +0 -11
- package/dist/harness/usage.d.ts.map +0 -1
- package/dist/harness/usage.js +0 -38
- package/dist/harness/usage.js.map +0 -1
- package/dist/mcp/catalog.d.ts +0 -5
- package/dist/mcp/catalog.d.ts.map +0 -1
- package/dist/mcp/catalog.js +0 -68
- package/dist/mcp/catalog.js.map +0 -1
- package/dist/mcp/loader.d.ts +0 -12
- package/dist/mcp/loader.d.ts.map +0 -1
- package/dist/mcp/loader.js.map +0 -1
- package/dist/mcp/open-connector.d.ts.map +0 -1
- package/dist/mcp/open-connector.js.map +0 -1
- package/dist/mcp/types.d.ts +0 -66
- package/dist/mcp/types.d.ts.map +0 -1
- package/dist/mcp/types.js.map +0 -1
- package/dist/packages/index.d.ts +0 -169
- package/dist/packages/index.d.ts.map +0 -1
- package/dist/packages/index.js +0 -721
- package/dist/packages/index.js.map +0 -1
- package/dist/packages/types.d.ts +0 -100
- package/dist/packages/types.d.ts.map +0 -1
- package/dist/packages/types.js.map +0 -1
- package/dist/provisioner.d.ts.map +0 -1
- package/dist/provisioner.js.map +0 -1
- package/dist/subagent-progress.d.ts +0 -39
- package/dist/subagent-progress.d.ts.map +0 -1
- package/dist/subagent-progress.js +0 -225
- package/dist/subagent-progress.js.map +0 -1
- package/dist/tools/bash.d.ts +0 -12
- package/dist/tools/bash.d.ts.map +0 -1
- package/dist/tools/bash.js +0 -80
- package/dist/tools/bash.js.map +0 -1
- package/dist/tools/edit.d.ts +0 -11
- package/dist/tools/edit.d.ts.map +0 -1
- package/dist/tools/edit.js +0 -132
- package/dist/tools/edit.js.map +0 -1
- package/dist/tools/event.d.ts.map +0 -1
- package/dist/tools/event.js +0 -255
- package/dist/tools/event.js.map +0 -1
- package/dist/tools/generate-image.d.ts.map +0 -1
- package/dist/tools/generate-image.js.map +0 -1
- package/dist/tools/host-fn-tool.d.ts.map +0 -1
- package/dist/tools/host-fn-tool.js.map +0 -1
- package/dist/tools/index.d.ts.map +0 -1
- package/dist/tools/index.js.map +0 -1
- package/dist/tools/react.d.ts.map +0 -1
- package/dist/tools/react.js.map +0 -1
- package/dist/tools/read.d.ts +0 -12
- package/dist/tools/read.d.ts.map +0 -1
- package/dist/tools/read.js +0 -140
- package/dist/tools/read.js.map +0 -1
- package/dist/tools/sandbox.d.ts.map +0 -1
- package/dist/tools/sandbox.js.map +0 -1
- package/dist/tools/subagent.d.ts.map +0 -1
- package/dist/tools/subagent.js.map +0 -1
- package/dist/tools/types.d.ts.map +0 -1
- package/dist/tools/types.js.map +0 -1
- package/dist/tools/write.d.ts +0 -10
- package/dist/tools/write.d.ts.map +0 -1
- package/dist/tools/write.js +0 -23
- package/dist/tools/write.js.map +0 -1
- package/dist/trigger.d.ts +0 -23
- package/dist/trigger.d.ts.map +0 -1
- package/dist/trigger.js +0 -97
- package/dist/trigger.js.map +0 -1
- package/dist/utils/file-guards.d.ts.map +0 -1
- package/dist/utils/file-guards.js.map +0 -1
- package/dist/web/admin/portal.d.ts.map +0 -1
- package/dist/web/admin/portal.js.map +0 -1
- package/dist/web/admin/provider-models.d.ts.map +0 -1
- package/dist/web/admin/provider-models.js.map +0 -1
- package/dist/web/admin/types.d.ts.map +0 -1
- package/dist/web/admin/types.js.map +0 -1
- package/dist/web/login/oauth.d.ts.map +0 -1
- package/dist/web/login/oauth.js.map +0 -1
- package/dist/web/login/portal.d.ts.map +0 -1
- package/dist/web/login/portal.js.map +0 -1
- package/dist/web/login/types.d.ts.map +0 -1
- package/dist/web/login/types.js.map +0 -1
- package/dist/web/portal-shell.d.ts.map +0 -1
- package/dist/web/portal-shell.js.map +0 -1
- package/dist/web/server.d.ts.map +0 -1
- package/dist/web/server.js.map +0 -1
- package/dist/web/session-view/portal.d.ts.map +0 -1
- package/dist/web/session-view/portal.js.map +0 -1
- package/dist/web/session-view/types.d.ts.map +0 -1
- package/dist/web/session-view/types.js +0 -2
- package/dist/web/session-view/types.js.map +0 -1
- package/dist/web/token-store.d.ts.map +0 -1
- package/dist/web/token-store.js.map +0 -1
- package/dist/web/types.d.ts.map +0 -1
- package/dist/web/types.js +0 -2
- package/dist/web/types.js.map +0 -1
- package/dist/workspace-projection/index.d.ts.map +0 -1
- package/dist/workspace-projection/index.js.map +0 -1
- package/dist/workspace-projection/types.d.ts +0 -29
- package/dist/workspace-projection/types.d.ts.map +0 -1
- package/dist/workspace-projection/types.js +0 -2
- package/dist/workspace-projection/types.js.map +0 -1
- /package/dist/{commands → adapters/commands}/admin.d.ts +0 -0
- /package/dist/{commands → adapters/commands}/login.d.ts +0 -0
- /package/dist/{commands → adapters/commands}/manifest.d.ts +0 -0
- /package/dist/{commands → adapters/commands}/new.d.ts +0 -0
- /package/dist/{commands → adapters/commands}/registry.d.ts +0 -0
- /package/dist/{commands → adapters/commands}/sandbox.d.ts +0 -0
- /package/dist/{commands → adapters/commands}/session-view.d.ts +0 -0
- /package/dist/{commands → adapters/commands}/types.js +0 -0
- /package/dist/{web → adapters/web}/admin/provider-models.js +0 -0
- /package/dist/{mcp → adapters/web/admin}/types.js +0 -0
- /package/dist/{web → adapters/web}/login/oauth.d.ts +0 -0
- /package/dist/{packages → adapters/web/login}/types.js +0 -0
- /package/dist/{web → adapters/web}/session-view/portal.d.ts +0 -0
- /package/dist/{tools → adapters/web/session-view}/types.js +0 -0
- /package/dist/{web → adapters/web}/token-store.d.ts +0 -0
- /package/dist/{web → adapters/web}/token-store.js +0 -0
- /package/dist/{web → adapters/web}/types.d.ts +0 -0
- /package/dist/{web/admin → adapters/web}/types.js +0 -0
- /package/dist/{utils/file-guards.d.ts → file-guards.d.ts} +0 -0
- /package/dist/{utils/file-guards.js → file-guards.js} +0 -0
- /package/dist/{mcp → harness}/open-connector.d.ts +0 -0
- /package/dist/{adapters/slack → harness}/tools/attach.d.ts +0 -0
- /package/dist/{adapters/slack → harness}/tools/attach.js +0 -0
- /package/dist/{tools → harness/tools}/generate-image.d.ts +0 -0
- /package/dist/{tools → harness/tools}/generate-image.js +0 -0
- /package/dist/{tools → harness/tools}/host-fn-tool.d.ts +0 -0
- /package/dist/{tools → harness/tools}/host-fn-tool.js +0 -0
- /package/dist/{tools → harness/tools}/react.d.ts +0 -0
- /package/dist/{tools → harness/tools}/react.js +0 -0
- /package/dist/{web/login → harness/tools}/types.js +0 -0
|
@@ -5,24 +5,35 @@ import { readFile, writeFile } from "node:fs/promises";
|
|
|
5
5
|
import { basename, join } from "node:path";
|
|
6
6
|
import { createConversationEvent, createConversationMessage, } from "../../adapter.js";
|
|
7
7
|
import { createOfficeAddress } from "../../office/index.js";
|
|
8
|
-
import { COMMAND_MANIFEST } from "
|
|
8
|
+
import { COMMAND_MANIFEST } from "../commands/manifest.js";
|
|
9
9
|
import { resolveConversationSettings } from "../../config.js";
|
|
10
10
|
import * as log from "../../log.js";
|
|
11
|
-
import { isRecord, readTextFileIfExists } from "../../
|
|
11
|
+
import { isRecord, readTextFileIfExists } from "../../file-guards.js";
|
|
12
12
|
import { PRODUCT_NAME, formatForceStopped } from "../../platform-messages.js";
|
|
13
13
|
import { appendBotResponseLog, appendChannelLog, MessagingEventQueue, MessagingIntakeTracker, saveIncomingAttachments, withRetry, } from "../shared.js";
|
|
14
14
|
import { processMessageIntake } from "../intake.js";
|
|
15
|
-
import { recordPlatformChannelKind
|
|
15
|
+
import { recordPlatformChannelKind } from "../../office/projection.js";
|
|
16
16
|
import { AssistantThreadRegistry, handleAgentContextChanged, handleAgentDmOpened, handleAssistantThreadStarted, titleAssistantThread, } from "./assistant.js";
|
|
17
17
|
import { createSlackAdapters } from "./context.js";
|
|
18
18
|
import { hasMaterializedChatSession, registerThreadSession, } from "../../sessions/chat-history-sync.js";
|
|
19
19
|
import { conversationIdOf } from "../../sessions/session-key.js";
|
|
20
20
|
import { isSlackThreadSessionKey, planSlackAdapterSession, planSlackEventAnchorRun, resolveSlackSessionKey, } from "./session.js";
|
|
21
|
-
import { reportUserFacingError } from "../../observability/
|
|
21
|
+
import { reportUserFacingError } from "../../observability/index.js";
|
|
22
22
|
import { recordSlackUpdate } from "./update-diagnostics.js";
|
|
23
23
|
import { renderSlackBlocks, resolveSlackMentions } from "./blocks.js";
|
|
24
24
|
import { StreamStartLimiter } from "./stream-limits.js";
|
|
25
25
|
const SLACK_EVENT_ANCHOR_TEXT = "Working on it...";
|
|
26
|
+
function hasMessageContent(message, includeBlocks = true) {
|
|
27
|
+
const content = [message.text, message.files];
|
|
28
|
+
if (includeBlocks)
|
|
29
|
+
content.push(message.blocks, message.attachments);
|
|
30
|
+
return content.some((part) => !!part?.length);
|
|
31
|
+
}
|
|
32
|
+
function hasBotIdentity(message) {
|
|
33
|
+
return !!message.bot_id || message.subtype === "bot_message";
|
|
34
|
+
}
|
|
35
|
+
const USER_MESSAGE_SUBTYPES = new Set([undefined, "file_share"]);
|
|
36
|
+
const BOT_MESSAGE_SUBTYPES = new Set([...USER_MESSAGE_SUBTYPES, "bot_message"]);
|
|
26
37
|
/**
|
|
27
38
|
* Slack's per-call limit on `markdown_text`: "Limit this field to 12,000
|
|
28
39
|
* characters." mikan allows far more in a message, so streamed text is split
|
|
@@ -124,6 +135,7 @@ export class SlackMessagingBot {
|
|
|
124
135
|
});
|
|
125
136
|
}
|
|
126
137
|
constructor(handler, config) {
|
|
138
|
+
this.statusUpdates = new Map();
|
|
127
139
|
this.botUserId = null;
|
|
128
140
|
this.botId = null;
|
|
129
141
|
this.teamId = null;
|
|
@@ -154,6 +166,11 @@ export class SlackMessagingBot {
|
|
|
154
166
|
clientPingTimeout: 12_000,
|
|
155
167
|
});
|
|
156
168
|
this.webClient = new WebClient(config.botToken);
|
|
169
|
+
this.statusClient = new WebClient(config.botToken, {
|
|
170
|
+
timeout: 3000,
|
|
171
|
+
retryConfig: { retries: 0 },
|
|
172
|
+
rejectRateLimitedCalls: true,
|
|
173
|
+
});
|
|
157
174
|
}
|
|
158
175
|
setEventsWatcher(watcher) {
|
|
159
176
|
this.eventsWatcher = watcher;
|
|
@@ -221,9 +238,13 @@ export class SlackMessagingBot {
|
|
|
221
238
|
resolveMentions(text) {
|
|
222
239
|
return resolveSlackMentions(text, this.users.values());
|
|
223
240
|
}
|
|
224
|
-
async postMessage(channel, text) {
|
|
241
|
+
async postMessage(channel, text, threadTs) {
|
|
225
242
|
return slackRetry(async () => {
|
|
226
|
-
const payload = {
|
|
243
|
+
const payload = {
|
|
244
|
+
channel,
|
|
245
|
+
...(threadTs !== undefined ? { thread_ts: threadTs } : {}),
|
|
246
|
+
...renderSlackBlocks(this.resolveMentions(text)),
|
|
247
|
+
};
|
|
227
248
|
const result = await this.webClient.chat.postMessage(payload);
|
|
228
249
|
return result.ts;
|
|
229
250
|
});
|
|
@@ -243,30 +264,28 @@ export class SlackMessagingBot {
|
|
|
243
264
|
}
|
|
244
265
|
});
|
|
245
266
|
}
|
|
246
|
-
async postEphemeral(channel, user, text, threadTs) {
|
|
267
|
+
async postEphemeral(channel, user, text, threadTs, blocks) {
|
|
247
268
|
return slackRetry(async () => {
|
|
248
269
|
await this.webClient.chat.postEphemeral({
|
|
249
270
|
channel,
|
|
250
271
|
user,
|
|
251
272
|
text,
|
|
273
|
+
...(blocks !== undefined ? { blocks: blocks } : {}),
|
|
252
274
|
...(threadTs ? { thread_ts: threadTs } : {}),
|
|
253
275
|
});
|
|
254
276
|
});
|
|
255
277
|
}
|
|
256
278
|
async postEphemeralBlocks(channel, user, text, blocks, threadTs) {
|
|
279
|
+
return this.postEphemeral(channel, user, text, threadTs, blocks);
|
|
280
|
+
}
|
|
281
|
+
async postMessageBlocks(channel, text, blocks, threadTs) {
|
|
257
282
|
return slackRetry(async () => {
|
|
258
|
-
|
|
283
|
+
const payload = {
|
|
259
284
|
channel,
|
|
260
|
-
user,
|
|
261
285
|
text,
|
|
262
286
|
blocks: blocks,
|
|
263
|
-
...(threadTs ? { thread_ts: threadTs } : {}),
|
|
264
|
-
}
|
|
265
|
-
});
|
|
266
|
-
}
|
|
267
|
-
async postMessageBlocks(channel, text, blocks) {
|
|
268
|
-
return slackRetry(async () => {
|
|
269
|
-
const payload = { channel, text, blocks: blocks };
|
|
287
|
+
...(threadTs !== undefined ? { thread_ts: threadTs } : {}),
|
|
288
|
+
};
|
|
270
289
|
const result = await this.webClient.chat.postMessage(payload);
|
|
271
290
|
return result.ts;
|
|
272
291
|
});
|
|
@@ -442,13 +461,25 @@ export class SlackMessagingBot {
|
|
|
442
461
|
// ==========================================================================
|
|
443
462
|
/** Set the status for an assistant thread (shows "thinking" state) */
|
|
444
463
|
async setAssistantStatus(channel, threadTs, status) {
|
|
445
|
-
|
|
446
|
-
|
|
464
|
+
const key = `${channel}:${threadTs}`;
|
|
465
|
+
const previous = this.statusUpdates.get(key) ?? Promise.resolve();
|
|
466
|
+
const update = previous
|
|
467
|
+
.catch(() => undefined)
|
|
468
|
+
.then(async () => {
|
|
469
|
+
await this.statusClient.assistant.threads.setStatus({
|
|
447
470
|
channel_id: channel,
|
|
448
471
|
thread_ts: threadTs,
|
|
449
472
|
status,
|
|
450
473
|
});
|
|
451
474
|
});
|
|
475
|
+
this.statusUpdates.set(key, update);
|
|
476
|
+
try {
|
|
477
|
+
await update;
|
|
478
|
+
}
|
|
479
|
+
finally {
|
|
480
|
+
if (this.statusUpdates.get(key) === update)
|
|
481
|
+
this.statusUpdates.delete(key);
|
|
482
|
+
}
|
|
452
483
|
}
|
|
453
484
|
/** Offer starting points in a new assistant thread. */
|
|
454
485
|
async setAssistantSuggestedPrompts(channel, threadTs, prompts) {
|
|
@@ -514,27 +545,10 @@ export class SlackMessagingBot {
|
|
|
514
545
|
}
|
|
515
546
|
}
|
|
516
547
|
async postInThread(channel, threadTs, text) {
|
|
517
|
-
return
|
|
518
|
-
const payload = {
|
|
519
|
-
channel,
|
|
520
|
-
thread_ts: threadTs,
|
|
521
|
-
...renderSlackBlocks(this.resolveMentions(text)),
|
|
522
|
-
};
|
|
523
|
-
const result = await this.webClient.chat.postMessage(payload);
|
|
524
|
-
return result.ts;
|
|
525
|
-
});
|
|
548
|
+
return this.postMessage(channel, text, threadTs);
|
|
526
549
|
}
|
|
527
550
|
async postInThreadBlocks(channel, threadTs, text, blocks) {
|
|
528
|
-
return
|
|
529
|
-
const payload = {
|
|
530
|
-
channel,
|
|
531
|
-
thread_ts: threadTs,
|
|
532
|
-
text, // fallback for notifications
|
|
533
|
-
blocks: blocks,
|
|
534
|
-
};
|
|
535
|
-
const result = await this.webClient.chat.postMessage(payload);
|
|
536
|
-
return result.ts;
|
|
537
|
-
});
|
|
551
|
+
return this.postMessageBlocks(channel, text, blocks, threadTs);
|
|
538
552
|
}
|
|
539
553
|
async uploadFile(channel, filePath, title, threadTs) {
|
|
540
554
|
return slackRetry(async () => {
|
|
@@ -745,8 +759,7 @@ export class SlackMessagingBot {
|
|
|
745
759
|
};
|
|
746
760
|
return processMessageIntake({
|
|
747
761
|
eventBase: options.event,
|
|
748
|
-
|
|
749
|
-
isAutoReplyCandidate: options.isAutoReplyCandidate,
|
|
762
|
+
addressed: options.addressed,
|
|
750
763
|
magicWord: { addressed: options.addressed, scopeFallback: "top-level" },
|
|
751
764
|
busyPolicy: "queue",
|
|
752
765
|
logEntryBase: {},
|
|
@@ -903,29 +916,22 @@ export class SlackMessagingBot {
|
|
|
903
916
|
text,
|
|
904
917
|
attachments: [],
|
|
905
918
|
});
|
|
906
|
-
const respond = async (responseText) => {
|
|
919
|
+
const respond = async (responseText, blocks) => {
|
|
907
920
|
if (options.ephemeralChannelId) {
|
|
908
|
-
await this.postEphemeral(options.ephemeralChannelId, userId, responseText, options.threadTs);
|
|
921
|
+
await this.postEphemeral(options.ephemeralChannelId, userId, responseText, options.threadTs, blocks);
|
|
909
922
|
return;
|
|
910
923
|
}
|
|
911
|
-
const messageTs =
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
const respondMuted = async (responseText) => {
|
|
915
|
-
const blocks = [buildMrkdwnContextBlock(responseText)];
|
|
916
|
-
if (options.ephemeralChannelId) {
|
|
917
|
-
await this.postEphemeralBlocks(options.ephemeralChannelId, userId, responseText, blocks, options.threadTs);
|
|
918
|
-
return;
|
|
919
|
-
}
|
|
920
|
-
const messageTs = await this.postMessageBlocks(conversationId, responseText, blocks);
|
|
924
|
+
const messageTs = blocks
|
|
925
|
+
? await this.postMessageBlocks(conversationId, responseText, blocks)
|
|
926
|
+
: await this.postMessage(conversationId, responseText);
|
|
921
927
|
this.logBotResponse(conversationId, responseText, messageTs);
|
|
922
928
|
};
|
|
923
929
|
const responder = {
|
|
924
930
|
respond,
|
|
925
|
-
replaceResponse: respond,
|
|
931
|
+
replaceResponse: (responseText) => respond(responseText),
|
|
926
932
|
respondDiagnostic: async (responseText, responseOptions) => {
|
|
927
933
|
if (responseOptions?.style === "muted") {
|
|
928
|
-
await
|
|
934
|
+
await respond(responseText, [buildMrkdwnContextBlock(responseText)]);
|
|
929
935
|
return;
|
|
930
936
|
}
|
|
931
937
|
await respond(responseOptions?.style === "error" ? `_${responseText}_` : responseText);
|
|
@@ -1094,17 +1100,13 @@ export class SlackMessagingBot {
|
|
|
1094
1100
|
event: slackEvent,
|
|
1095
1101
|
attachmentsPromise,
|
|
1096
1102
|
queueKey: this.resolveQueueKey(e.channel, sessionKey),
|
|
1097
|
-
isAutoReplyCandidate: false,
|
|
1098
1103
|
addressed: true,
|
|
1099
1104
|
});
|
|
1100
1105
|
ack();
|
|
1101
1106
|
await intake;
|
|
1102
1107
|
}
|
|
1103
1108
|
admitHumanMessage(event, ack) {
|
|
1104
|
-
const hasSlackContent =
|
|
1105
|
-
!!event.files?.length ||
|
|
1106
|
-
!!event.blocks?.length ||
|
|
1107
|
-
!!event.attachments?.length;
|
|
1109
|
+
const hasSlackContent = hasMessageContent(event);
|
|
1108
1110
|
const isOwnMessage = event.user === this.botUserId || (!!this.botId && event.bot_id === this.botId);
|
|
1109
1111
|
if (isOwnMessage) {
|
|
1110
1112
|
ack();
|
|
@@ -1115,9 +1117,7 @@ export class SlackMessagingBot {
|
|
|
1115
1117
|
const authorIsKnownHuman = !!event.user && this.users.get(event.user)?.isBot === false;
|
|
1116
1118
|
const isExternalMessage = event.subtype === "bot_message" || (!!event.bot_id && !authorIsKnownHuman);
|
|
1117
1119
|
if (isExternalMessage) {
|
|
1118
|
-
const supportedSubtype = event.subtype
|
|
1119
|
-
event.subtype === "bot_message" ||
|
|
1120
|
-
event.subtype === "file_share";
|
|
1120
|
+
const supportedSubtype = BOT_MESSAGE_SUBTYPES.has(event.subtype);
|
|
1121
1121
|
if (supportedSubtype && hasSlackContent) {
|
|
1122
1122
|
void this.logExternalMessagingBotMessage(event).catch((err) => {
|
|
1123
1123
|
log.logWarning("Failed to log Slack bot message", String(err));
|
|
@@ -1126,9 +1126,7 @@ export class SlackMessagingBot {
|
|
|
1126
1126
|
ack();
|
|
1127
1127
|
return false;
|
|
1128
1128
|
}
|
|
1129
|
-
const isSupportedUserMessage = !!event.user &&
|
|
1130
|
-
(event.subtype === undefined || event.subtype === "file_share") &&
|
|
1131
|
-
hasSlackContent;
|
|
1129
|
+
const isSupportedUserMessage = !!event.user && USER_MESSAGE_SUBTYPES.has(event.subtype) && hasSlackContent;
|
|
1132
1130
|
if (isSupportedUserMessage)
|
|
1133
1131
|
return true;
|
|
1134
1132
|
ack();
|
|
@@ -1140,8 +1138,8 @@ export class SlackMessagingBot {
|
|
|
1140
1138
|
return;
|
|
1141
1139
|
// message.im normally carries channel_type "im", but fall back to the
|
|
1142
1140
|
// D-prefix convention (used by handleAppMention and session keys) so a
|
|
1143
|
-
// missing channel_type cannot silently
|
|
1144
|
-
//
|
|
1141
|
+
// missing channel_type cannot silently classify a DM as an unaddressed
|
|
1142
|
+
// channel message that never triggers.
|
|
1145
1143
|
const isDM = e.channel_type === "im" || e.channel.startsWith("D");
|
|
1146
1144
|
const conversationKind = isDM ? "direct" : "shared";
|
|
1147
1145
|
const isMessagingBotMention = e.text?.includes(`<@${this.botUserId}>`);
|
|
@@ -1199,7 +1197,6 @@ export class SlackMessagingBot {
|
|
|
1199
1197
|
event: slackEvent,
|
|
1200
1198
|
attachmentsPromise,
|
|
1201
1199
|
queueKey: this.resolveQueueKey(e.channel, activeSessionKey),
|
|
1202
|
-
isAutoReplyCandidate: !isDM,
|
|
1203
1200
|
addressed: isDM,
|
|
1204
1201
|
});
|
|
1205
1202
|
ack();
|
|
@@ -1486,6 +1483,19 @@ export class SlackMessagingBot {
|
|
|
1486
1483
|
}
|
|
1487
1484
|
return timestamps;
|
|
1488
1485
|
}
|
|
1486
|
+
isBackfillableMessage(message) {
|
|
1487
|
+
if (message.user === this.botUserId)
|
|
1488
|
+
return true;
|
|
1489
|
+
if (hasBotIdentity(message)) {
|
|
1490
|
+
if (this.botId && message.bot_id === this.botId)
|
|
1491
|
+
return false;
|
|
1492
|
+
return BOT_MESSAGE_SUBTYPES.has(message.subtype) && hasMessageContent(message);
|
|
1493
|
+
}
|
|
1494
|
+
// Unlike live intake, historical human posts need text or files, not just blocks.
|
|
1495
|
+
return (!!message.user &&
|
|
1496
|
+
USER_MESSAGE_SUBTYPES.has(message.subtype) &&
|
|
1497
|
+
hasMessageContent(message, false));
|
|
1498
|
+
}
|
|
1489
1499
|
async backfillChannel(channelId, upperBoundTs) {
|
|
1490
1500
|
const existingTs = await this.getExistingTimestamps(channelId);
|
|
1491
1501
|
// Find the biggest ts in log.jsonl
|
|
@@ -1517,36 +1527,14 @@ export class SlackMessagingBot {
|
|
|
1517
1527
|
const relevantMessages = allMessages.filter((msg) => {
|
|
1518
1528
|
if (!msg.ts || existingTs.has(msg.ts))
|
|
1519
1529
|
return false; // Skip duplicates
|
|
1520
|
-
|
|
1521
|
-
return true;
|
|
1522
|
-
const isExternalMessagingBotMessage = !!msg.bot_id || msg.subtype === "bot_message";
|
|
1523
|
-
if (isExternalMessagingBotMessage) {
|
|
1524
|
-
if (this.botId && msg.bot_id === this.botId)
|
|
1525
|
-
return false;
|
|
1526
|
-
if (msg.subtype !== undefined &&
|
|
1527
|
-
msg.subtype !== "bot_message" &&
|
|
1528
|
-
msg.subtype !== "file_share") {
|
|
1529
|
-
return false;
|
|
1530
|
-
}
|
|
1531
|
-
return (!!msg.text ||
|
|
1532
|
-
!!(msg.files && msg.files.length > 0) ||
|
|
1533
|
-
!!msg.blocks?.length ||
|
|
1534
|
-
!!msg.attachments?.length);
|
|
1535
|
-
}
|
|
1536
|
-
if (msg.subtype !== undefined && msg.subtype !== "file_share")
|
|
1537
|
-
return false;
|
|
1538
|
-
if (!msg.user)
|
|
1539
|
-
return false;
|
|
1540
|
-
if (!msg.text && (!msg.files || msg.files.length === 0))
|
|
1541
|
-
return false;
|
|
1542
|
-
return true;
|
|
1530
|
+
return this.isBackfillableMessage(msg);
|
|
1543
1531
|
});
|
|
1544
1532
|
// Reverse to chronological order
|
|
1545
1533
|
relevantMessages.reverse();
|
|
1546
1534
|
// Log each message to log.jsonl
|
|
1547
1535
|
for (const msg of relevantMessages) {
|
|
1548
1536
|
const isMikanMessage = msg.user === this.botUserId;
|
|
1549
|
-
const isExternalMessagingBotMessage = !isMikanMessage && (
|
|
1537
|
+
const isExternalMessagingBotMessage = !isMikanMessage && hasBotIdentity(msg);
|
|
1550
1538
|
if (isExternalMessagingBotMessage) {
|
|
1551
1539
|
await this.logExternalMessagingBotMessage({ ...msg, channel: channelId, ts: msg.ts });
|
|
1552
1540
|
continue;
|
|
@@ -1608,17 +1596,15 @@ export class SlackMessagingBot {
|
|
|
1608
1596
|
do {
|
|
1609
1597
|
const result = await this.webClient.users.list({ limit: 200, cursor });
|
|
1610
1598
|
const members = result.members;
|
|
1611
|
-
|
|
1612
|
-
|
|
1613
|
-
|
|
1614
|
-
|
|
1615
|
-
|
|
1616
|
-
|
|
1617
|
-
|
|
1618
|
-
|
|
1619
|
-
|
|
1620
|
-
}
|
|
1621
|
-
}
|
|
1599
|
+
for (const u of members ?? []) {
|
|
1600
|
+
if (!u.id || !u.name || u.deleted)
|
|
1601
|
+
continue;
|
|
1602
|
+
this.users.set(u.id, {
|
|
1603
|
+
id: u.id,
|
|
1604
|
+
userName: u.name,
|
|
1605
|
+
displayName: u.real_name || u.name,
|
|
1606
|
+
isBot: !!u.is_bot,
|
|
1607
|
+
});
|
|
1622
1608
|
}
|
|
1623
1609
|
cursor = result.response_metadata?.next_cursor;
|
|
1624
1610
|
} while (cursor);
|
|
@@ -1634,17 +1620,15 @@ export class SlackMessagingBot {
|
|
|
1634
1620
|
cursor,
|
|
1635
1621
|
});
|
|
1636
1622
|
const channels = result.channels;
|
|
1637
|
-
|
|
1638
|
-
|
|
1639
|
-
|
|
1640
|
-
|
|
1641
|
-
|
|
1642
|
-
|
|
1643
|
-
|
|
1644
|
-
|
|
1645
|
-
|
|
1646
|
-
}
|
|
1647
|
-
}
|
|
1623
|
+
for (const c of channels ?? []) {
|
|
1624
|
+
if (!c.id || !c.name || !c.is_member)
|
|
1625
|
+
continue;
|
|
1626
|
+
this.channels.set(c.id, {
|
|
1627
|
+
id: c.id,
|
|
1628
|
+
name: c.name,
|
|
1629
|
+
...(typeof c.is_private === "boolean" ? { isPrivate: c.is_private } : {}),
|
|
1630
|
+
...(c.is_shared || c.is_ext_shared ? { isExternallyShared: true } : {}),
|
|
1631
|
+
});
|
|
1648
1632
|
}
|
|
1649
1633
|
cursor = result.response_metadata?.next_cursor;
|
|
1650
1634
|
} while (cursor);
|
|
@@ -1657,15 +1641,13 @@ export class SlackMessagingBot {
|
|
|
1657
1641
|
cursor,
|
|
1658
1642
|
});
|
|
1659
1643
|
const ims = result.channels;
|
|
1660
|
-
|
|
1661
|
-
|
|
1662
|
-
|
|
1663
|
-
|
|
1664
|
-
|
|
1665
|
-
|
|
1666
|
-
|
|
1667
|
-
}
|
|
1668
|
-
}
|
|
1644
|
+
for (const im of ims ?? []) {
|
|
1645
|
+
if (!im.id)
|
|
1646
|
+
continue;
|
|
1647
|
+
// Use user's name as channel name for DMs
|
|
1648
|
+
const user = im.user ? this.users.get(im.user) : undefined;
|
|
1649
|
+
const name = user ? `DM:${user.userName}` : `DM:${im.id}`;
|
|
1650
|
+
this.channels.set(im.id, { id: im.id, name });
|
|
1669
1651
|
}
|
|
1670
1652
|
cursor = result.response_metadata?.next_cursor;
|
|
1671
1653
|
} while (cursor);
|