@geminixiang/mikan 1.0.0-beta.2 → 1.0.0-beta.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +388 -0
- package/README.md +49 -16
- package/dist/adapter.d.ts +1 -1
- package/dist/adapter.d.ts.map +1 -1
- package/dist/adapter.js.map +1 -1
- package/dist/adapters/buffered-responder.d.ts +60 -0
- package/dist/adapters/buffered-responder.d.ts.map +1 -0
- package/dist/adapters/buffered-responder.js +201 -0
- package/dist/adapters/buffered-responder.js.map +1 -0
- package/dist/adapters/discord/bot.d.ts +1 -0
- package/dist/adapters/discord/bot.d.ts.map +1 -1
- package/dist/adapters/discord/bot.js +36 -67
- package/dist/adapters/discord/bot.js.map +1 -1
- package/dist/adapters/discord/context.d.ts.map +1 -1
- package/dist/adapters/discord/context.js +44 -204
- package/dist/adapters/discord/context.js.map +1 -1
- package/dist/adapters/github/bot.d.ts +86 -0
- package/dist/adapters/github/bot.d.ts.map +1 -0
- package/dist/adapters/github/bot.js +640 -0
- package/dist/adapters/github/bot.js.map +1 -0
- package/dist/adapters/github/client.d.ts +122 -0
- package/dist/adapters/github/client.d.ts.map +1 -0
- package/dist/adapters/github/client.js +314 -0
- package/dist/adapters/github/client.js.map +1 -0
- package/dist/adapters/github/cloudbuild.d.ts +24 -0
- package/dist/adapters/github/cloudbuild.d.ts.map +1 -0
- package/dist/adapters/github/cloudbuild.js +71 -0
- package/dist/adapters/github/cloudbuild.js.map +1 -0
- package/dist/adapters/github/context.d.ts +9 -0
- package/dist/adapters/github/context.d.ts.map +1 -0
- package/dist/adapters/github/context.js +103 -0
- package/dist/adapters/github/context.js.map +1 -0
- package/dist/adapters/github/gcp-auth.d.ts +31 -0
- package/dist/adapters/github/gcp-auth.d.ts.map +1 -0
- package/dist/adapters/github/gcp-auth.js +196 -0
- package/dist/adapters/github/gcp-auth.js.map +1 -0
- package/dist/adapters/github/github-ops.d.ts +90 -0
- package/dist/adapters/github/github-ops.d.ts.map +1 -0
- package/dist/adapters/github/github-ops.js +405 -0
- package/dist/adapters/github/github-ops.js.map +1 -0
- package/dist/adapters/github/ids.d.ts +34 -0
- package/dist/adapters/github/ids.d.ts.map +1 -0
- package/dist/adapters/github/ids.js +53 -0
- package/dist/adapters/github/ids.js.map +1 -0
- package/dist/adapters/github/repo.d.ts +32 -0
- package/dist/adapters/github/repo.d.ts.map +1 -0
- package/dist/adapters/github/repo.js +141 -0
- package/dist/adapters/github/repo.js.map +1 -0
- package/dist/adapters/github/tool-pack.d.ts +14 -0
- package/dist/adapters/github/tool-pack.d.ts.map +1 -0
- package/dist/adapters/github/tool-pack.js +56 -0
- package/dist/adapters/github/tool-pack.js.map +1 -0
- package/dist/adapters/github/tools/checks.d.ts +24 -0
- package/dist/adapters/github/tools/checks.d.ts.map +1 -0
- package/dist/adapters/github/tools/checks.js +105 -0
- package/dist/adapters/github/tools/checks.js.map +1 -0
- package/dist/adapters/github/tools/issue.d.ts +22 -0
- package/dist/adapters/github/tools/issue.d.ts.map +1 -0
- package/dist/adapters/github/tools/issue.js +48 -0
- package/dist/adapters/github/tools/issue.js.map +1 -0
- package/dist/adapters/github/tools/pr.d.ts +22 -0
- package/dist/adapters/github/tools/pr.d.ts.map +1 -0
- package/dist/adapters/github/tools/pr.js +48 -0
- package/dist/adapters/github/tools/pr.js.map +1 -0
- package/dist/adapters/github/tools/read.d.ts +22 -0
- package/dist/adapters/github/tools/read.d.ts.map +1 -0
- package/dist/adapters/github/tools/read.js +141 -0
- package/dist/adapters/github/tools/read.js.map +1 -0
- package/dist/adapters/github/tools/review-reply.d.ts +19 -0
- package/dist/adapters/github/tools/review-reply.d.ts.map +1 -0
- package/dist/adapters/github/tools/review-reply.js +38 -0
- package/dist/adapters/github/tools/review-reply.js.map +1 -0
- package/dist/adapters/github/tools/sync.d.ts +17 -0
- package/dist/adapters/github/tools/sync.d.ts.map +1 -0
- package/dist/adapters/github/tools/sync.js +34 -0
- package/dist/adapters/github/tools/sync.js.map +1 -0
- package/dist/adapters/github/types.d.ts +350 -0
- package/dist/adapters/github/types.d.ts.map +1 -0
- package/dist/adapters/github/types.js +2 -0
- package/dist/adapters/github/types.js.map +1 -0
- package/dist/adapters/intake.d.ts +16 -5
- package/dist/adapters/intake.d.ts.map +1 -1
- package/dist/adapters/intake.js +79 -22
- package/dist/adapters/intake.js.map +1 -1
- package/dist/adapters/slack/bot.d.ts +8 -6
- package/dist/adapters/slack/bot.d.ts.map +1 -1
- package/dist/adapters/slack/bot.js +82 -134
- package/dist/adapters/slack/bot.js.map +1 -1
- package/dist/adapters/slack/context.d.ts.map +1 -1
- package/dist/adapters/slack/context.js +3 -14
- package/dist/adapters/slack/context.js.map +1 -1
- package/dist/adapters/slack/response-lifecycle.d.ts.map +1 -1
- package/dist/adapters/slack/response-lifecycle.js +14 -17
- package/dist/adapters/slack/response-lifecycle.js.map +1 -1
- package/dist/adapters/slack/session.d.ts.map +1 -1
- package/dist/adapters/slack/session.js +5 -8
- package/dist/adapters/slack/session.js.map +1 -1
- package/dist/adapters/streaming.d.ts +4 -0
- package/dist/adapters/streaming.d.ts.map +1 -1
- package/dist/adapters/streaming.js +11 -0
- package/dist/adapters/streaming.js.map +1 -1
- package/dist/adapters/telegram/bot.d.ts +1 -2
- package/dist/adapters/telegram/bot.d.ts.map +1 -1
- package/dist/adapters/telegram/bot.js +27 -62
- package/dist/adapters/telegram/bot.js.map +1 -1
- package/dist/adapters/telegram/context.d.ts.map +1 -1
- package/dist/adapters/telegram/context.js +37 -174
- package/dist/adapters/telegram/context.js.map +1 -1
- package/dist/adapters/types.d.ts +28 -2
- package/dist/adapters/types.d.ts.map +1 -1
- package/dist/adapters/types.js.map +1 -1
- package/dist/agent.d.ts +37 -14
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +359 -229
- package/dist/agent.js.map +1 -1
- package/dist/cli/arg-grammar.d.ts +25 -0
- package/dist/cli/arg-grammar.d.ts.map +1 -0
- package/dist/cli/arg-grammar.js +59 -0
- package/dist/cli/arg-grammar.js.map +1 -0
- package/dist/cli/boot.d.ts +16 -0
- package/dist/cli/boot.d.ts.map +1 -0
- package/dist/cli/boot.js +119 -0
- package/dist/cli/boot.js.map +1 -0
- package/dist/cli/download.d.ts.map +1 -0
- package/dist/cli/download.js.map +1 -0
- package/dist/cli/ext-git.d.ts +22 -0
- package/dist/cli/ext-git.d.ts.map +1 -0
- package/dist/cli/ext-git.js +76 -0
- package/dist/cli/ext-git.js.map +1 -0
- package/dist/cli/ext.d.ts +2 -0
- package/dist/cli/ext.d.ts.map +1 -0
- package/dist/cli/ext.js +215 -0
- package/dist/cli/ext.js.map +1 -0
- package/dist/commands/admin.d.ts.map +1 -1
- package/dist/commands/admin.js +2 -1
- package/dist/commands/admin.js.map +1 -1
- package/dist/commands/auto-reply.d.ts.map +1 -1
- package/dist/commands/auto-reply.js +2 -6
- package/dist/commands/auto-reply.js.map +1 -1
- package/dist/commands/extensions.d.ts.map +1 -1
- package/dist/commands/extensions.js +18 -8
- package/dist/commands/extensions.js.map +1 -1
- package/dist/commands/login.d.ts +2 -1
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +35 -3
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/manifest.d.ts +72 -0
- package/dist/commands/manifest.d.ts.map +1 -0
- package/dist/commands/manifest.js +121 -0
- package/dist/commands/manifest.js.map +1 -0
- package/dist/commands/model.d.ts.map +1 -1
- package/dist/commands/model.js +11 -9
- package/dist/commands/model.js.map +1 -1
- package/dist/commands/new.d.ts.map +1 -1
- package/dist/commands/new.js +2 -1
- package/dist/commands/new.js.map +1 -1
- package/dist/commands/sandbox.d.ts.map +1 -1
- package/dist/commands/sandbox.js +23 -17
- package/dist/commands/sandbox.js.map +1 -1
- package/dist/commands/text.d.ts +2 -0
- package/dist/commands/text.d.ts.map +1 -0
- package/dist/commands/text.js +16 -0
- package/dist/commands/text.js.map +1 -0
- package/dist/commands/types.d.ts +14 -1
- package/dist/commands/types.d.ts.map +1 -1
- package/dist/commands/types.js.map +1 -1
- package/dist/config.d.ts +1 -3
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +98 -95
- package/dist/config.js.map +1 -1
- package/dist/env-manifest.d.ts +35 -0
- package/dist/env-manifest.d.ts.map +1 -0
- package/dist/env-manifest.js +225 -0
- package/dist/env-manifest.js.map +1 -0
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js +9 -73
- package/dist/events.js.map +1 -1
- package/dist/execution-resolver.d.ts +4 -2
- package/dist/execution-resolver.d.ts.map +1 -1
- package/dist/execution-resolver.js +54 -41
- package/dist/execution-resolver.js.map +1 -1
- package/dist/harness/event-format.d.ts +66 -0
- package/dist/harness/event-format.d.ts.map +1 -0
- package/dist/harness/event-format.js +112 -0
- package/dist/harness/event-format.js.map +1 -0
- package/dist/harness/extensions/loader.d.ts +44 -11
- package/dist/harness/extensions/loader.d.ts.map +1 -1
- package/dist/harness/extensions/loader.js +273 -84
- package/dist/harness/extensions/loader.js.map +1 -1
- package/dist/harness/extensions/registry.d.ts +48 -1
- package/dist/harness/extensions/registry.d.ts.map +1 -1
- package/dist/harness/extensions/registry.js +146 -0
- package/dist/harness/extensions/registry.js.map +1 -1
- package/dist/harness/extensions/types.d.ts +165 -22
- package/dist/harness/extensions/types.d.ts.map +1 -1
- package/dist/harness/extensions/types.js.map +1 -1
- package/dist/harness/index.d.ts +6 -5
- package/dist/harness/index.d.ts.map +1 -1
- package/dist/harness/index.js +3 -2
- package/dist/harness/index.js.map +1 -1
- package/dist/harness/models.d.ts +5 -0
- package/dist/harness/models.d.ts.map +1 -1
- package/dist/harness/models.js +10 -0
- package/dist/harness/models.js.map +1 -1
- package/dist/harness/runner.d.ts +37 -2
- package/dist/harness/runner.d.ts.map +1 -1
- package/dist/harness/runner.js +107 -23
- package/dist/harness/runner.js.map +1 -1
- package/dist/harness/session-store.d.ts +4 -1
- package/dist/harness/session-store.d.ts.map +1 -1
- package/dist/harness/session-store.js +11 -2
- package/dist/harness/session-store.js.map +1 -1
- package/dist/harness/subagent-runner.d.ts +34 -0
- package/dist/harness/subagent-runner.d.ts.map +1 -0
- package/dist/harness/subagent-runner.js +339 -0
- package/dist/harness/subagent-runner.js.map +1 -0
- package/dist/harness/types.d.ts +53 -0
- package/dist/harness/types.d.ts.map +1 -1
- package/dist/harness/types.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/main.js +260 -109
- package/dist/main.js.map +1 -1
- package/dist/observability/instrument.js +6 -4
- package/dist/observability/instrument.js.map +1 -1
- package/dist/observability/sentry.d.ts.map +1 -1
- package/dist/observability/sentry.js +3 -2
- package/dist/observability/sentry.js.map +1 -1
- package/dist/provisioner.d.ts.map +1 -1
- package/dist/provisioner.js +2 -5
- package/dist/provisioner.js.map +1 -1
- package/dist/runtime/conversation-runtime.d.ts +1 -1
- package/dist/runtime/conversation-runtime.d.ts.map +1 -1
- package/dist/runtime/conversation-runtime.js +276 -43
- package/dist/runtime/conversation-runtime.js.map +1 -1
- package/dist/runtime/types.d.ts +36 -5
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/runtime/types.js.map +1 -1
- package/dist/sandbox/cloudflare.d.ts +3 -0
- package/dist/sandbox/cloudflare.d.ts.map +1 -1
- package/dist/sandbox/cloudflare.js +10 -0
- package/dist/sandbox/cloudflare.js.map +1 -1
- package/dist/sandbox/container.d.ts +4 -0
- package/dist/sandbox/container.d.ts.map +1 -1
- package/dist/sandbox/container.js +11 -2
- package/dist/sandbox/container.js.map +1 -1
- package/dist/sandbox/firecracker.d.ts +3 -0
- package/dist/sandbox/firecracker.d.ts.map +1 -1
- package/dist/sandbox/firecracker.js +10 -1
- package/dist/sandbox/firecracker.js.map +1 -1
- package/dist/sandbox/gondolin-bootstrap.d.ts +26 -0
- package/dist/sandbox/gondolin-bootstrap.d.ts.map +1 -0
- package/dist/sandbox/gondolin-bootstrap.js +27 -0
- package/dist/sandbox/gondolin-bootstrap.js.map +1 -0
- package/dist/sandbox/gondolin-contract.d.ts +125 -0
- package/dist/sandbox/gondolin-contract.d.ts.map +1 -0
- package/dist/sandbox/gondolin-contract.js +155 -0
- package/dist/sandbox/gondolin-contract.js.map +1 -0
- package/dist/sandbox/gondolin-fleet.d.ts +104 -0
- package/dist/sandbox/gondolin-fleet.d.ts.map +1 -0
- package/dist/sandbox/gondolin-fleet.js +330 -0
- package/dist/sandbox/gondolin-fleet.js.map +1 -0
- package/dist/sandbox/gondolin-gateway.d.ts +86 -0
- package/dist/sandbox/gondolin-gateway.d.ts.map +1 -0
- package/dist/sandbox/gondolin-gateway.js +407 -0
- package/dist/sandbox/gondolin-gateway.js.map +1 -0
- package/dist/sandbox/gondolin-inventory.d.ts +75 -0
- package/dist/sandbox/gondolin-inventory.d.ts.map +1 -0
- package/dist/sandbox/gondolin-inventory.js +257 -0
- package/dist/sandbox/gondolin-inventory.js.map +1 -0
- package/dist/sandbox/gondolin-join.d.ts +62 -0
- package/dist/sandbox/gondolin-join.d.ts.map +1 -0
- package/dist/sandbox/gondolin-join.js +261 -0
- package/dist/sandbox/gondolin-join.js.map +1 -0
- package/dist/sandbox/gondolin-nfs-advisory.d.ts +15 -0
- package/dist/sandbox/gondolin-nfs-advisory.d.ts.map +1 -0
- package/dist/sandbox/gondolin-nfs-advisory.js +60 -0
- package/dist/sandbox/gondolin-nfs-advisory.js.map +1 -0
- package/dist/sandbox/gondolin-placement.d.ts +30 -0
- package/dist/sandbox/gondolin-placement.d.ts.map +1 -0
- package/dist/sandbox/gondolin-placement.js +77 -0
- package/dist/sandbox/gondolin-placement.js.map +1 -0
- package/dist/sandbox/gondolin-recovery.d.ts +33 -0
- package/dist/sandbox/gondolin-recovery.d.ts.map +1 -0
- package/dist/sandbox/gondolin-recovery.js +39 -0
- package/dist/sandbox/gondolin-recovery.js.map +1 -0
- package/dist/sandbox/gondolin-remote.d.ts +70 -0
- package/dist/sandbox/gondolin-remote.d.ts.map +1 -0
- package/dist/sandbox/gondolin-remote.js +325 -0
- package/dist/sandbox/gondolin-remote.js.map +1 -0
- package/dist/sandbox/gondolin-worker-client.d.ts +135 -0
- package/dist/sandbox/gondolin-worker-client.d.ts.map +1 -0
- package/dist/sandbox/gondolin-worker-client.js +323 -0
- package/dist/sandbox/gondolin-worker-client.js.map +1 -0
- package/dist/sandbox/gondolin-worker-main.d.ts +2 -0
- package/dist/sandbox/gondolin-worker-main.d.ts.map +1 -0
- package/dist/sandbox/gondolin-worker-main.js +22 -0
- package/dist/sandbox/gondolin-worker-main.js.map +1 -0
- package/dist/sandbox/gondolin-worker.d.ts +17 -0
- package/dist/sandbox/gondolin-worker.d.ts.map +1 -0
- package/dist/sandbox/gondolin-worker.js +201 -0
- package/dist/sandbox/gondolin-worker.js.map +1 -0
- package/dist/sandbox/gondolin.d.ts +53 -0
- package/dist/sandbox/gondolin.d.ts.map +1 -0
- package/dist/sandbox/gondolin.js +429 -0
- package/dist/sandbox/gondolin.js.map +1 -0
- package/dist/sandbox/host.d.ts +3 -0
- package/dist/sandbox/host.d.ts.map +1 -1
- package/dist/sandbox/host.js +14 -0
- package/dist/sandbox/host.js.map +1 -1
- package/dist/sandbox/identity.d.ts +21 -0
- package/dist/sandbox/identity.d.ts.map +1 -0
- package/dist/sandbox/identity.js +36 -0
- package/dist/sandbox/identity.js.map +1 -0
- package/dist/sandbox/index.d.ts +13 -4
- package/dist/sandbox/index.d.ts.map +1 -1
- package/dist/sandbox/index.js +19 -3
- package/dist/sandbox/index.js.map +1 -1
- package/dist/sandbox/types.d.ts +31 -1
- package/dist/sandbox/types.d.ts.map +1 -1
- package/dist/sandbox/types.js.map +1 -1
- package/dist/sandbox/utils.d.ts +12 -0
- package/dist/sandbox/utils.d.ts.map +1 -1
- package/dist/sandbox/utils.js +38 -0
- package/dist/sandbox/utils.js.map +1 -1
- package/dist/sessions/chat-history-sync.d.ts +32 -0
- package/dist/sessions/chat-history-sync.d.ts.map +1 -0
- package/dist/sessions/{agent-memory-file-manager.js → chat-history-sync.js} +40 -113
- package/dist/sessions/chat-history-sync.js.map +1 -0
- package/dist/sessions/conversation-log.d.ts +13 -0
- package/dist/sessions/conversation-log.d.ts.map +1 -0
- package/dist/sessions/conversation-log.js +47 -0
- package/dist/sessions/conversation-log.js.map +1 -0
- package/dist/sessions/history-line.d.ts +20 -0
- package/dist/sessions/history-line.d.ts.map +1 -0
- package/dist/sessions/history-line.js +24 -0
- package/dist/sessions/history-line.js.map +1 -0
- package/dist/sessions/policy.d.ts.map +1 -1
- package/dist/sessions/policy.js +5 -3
- package/dist/sessions/policy.js.map +1 -1
- package/dist/sessions/rotation.d.ts +2 -0
- package/dist/sessions/rotation.d.ts.map +1 -0
- package/dist/sessions/rotation.js +39 -0
- package/dist/sessions/rotation.js.map +1 -0
- package/dist/sessions/session-key.d.ts +31 -0
- package/dist/sessions/session-key.d.ts.map +1 -0
- package/dist/sessions/session-key.js +44 -0
- package/dist/sessions/session-key.js.map +1 -0
- package/dist/sessions/store.d.ts.map +1 -1
- package/dist/sessions/store.js +6 -12
- package/dist/sessions/store.js.map +1 -1
- package/dist/sessions/types.d.ts +2 -2
- package/dist/sessions/types.d.ts.map +1 -1
- package/dist/sessions/types.js.map +1 -1
- package/dist/settings-mutation.d.ts +23 -0
- package/dist/settings-mutation.d.ts.map +1 -0
- package/dist/settings-mutation.js +42 -0
- package/dist/settings-mutation.js.map +1 -0
- package/dist/tools/bash.d.ts +3 -1
- package/dist/tools/bash.d.ts.map +1 -1
- package/dist/tools/bash.js +24 -17
- package/dist/tools/bash.js.map +1 -1
- package/dist/tools/edit.d.ts.map +1 -1
- package/dist/tools/edit.js +9 -12
- package/dist/tools/edit.js.map +1 -1
- package/dist/tools/event.d.ts +1 -1
- package/dist/tools/event.d.ts.map +1 -1
- package/dist/tools/event.js +53 -43
- package/dist/tools/event.js.map +1 -1
- package/dist/tools/generate-image.d.ts +17 -0
- package/dist/tools/generate-image.d.ts.map +1 -0
- package/dist/tools/generate-image.js +63 -0
- package/dist/tools/generate-image.js.map +1 -0
- package/dist/tools/host-fn-tool.d.ts +21 -0
- package/dist/tools/host-fn-tool.d.ts.map +1 -0
- package/dist/tools/host-fn-tool.js +32 -0
- package/dist/tools/host-fn-tool.js.map +1 -0
- package/dist/tools/index.d.ts +17 -2
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +28 -3
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/react.d.ts +15 -0
- package/dist/tools/react.d.ts.map +1 -0
- package/dist/tools/react.js +29 -0
- package/dist/tools/react.js.map +1 -0
- package/dist/tools/read.d.ts.map +1 -1
- package/dist/tools/read.js +7 -26
- package/dist/tools/read.js.map +1 -1
- package/dist/tools/sandbox.d.ts +2 -2
- package/dist/tools/sandbox.d.ts.map +1 -1
- package/dist/tools/sandbox.js +13 -9
- package/dist/tools/sandbox.js.map +1 -1
- package/dist/tools/subagent-slots.d.ts +28 -0
- package/dist/tools/subagent-slots.d.ts.map +1 -0
- package/dist/tools/subagent-slots.js +57 -0
- package/dist/tools/subagent-slots.js.map +1 -0
- package/dist/tools/subagent.d.ts +74 -0
- package/dist/tools/subagent.d.ts.map +1 -0
- package/dist/tools/subagent.js +335 -0
- package/dist/tools/subagent.js.map +1 -0
- package/dist/tools/types.d.ts +40 -6
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/tools/types.js.map +1 -1
- package/dist/tools/write.d.ts.map +1 -1
- package/dist/tools/write.js +1 -8
- package/dist/tools/write.js.map +1 -1
- package/dist/trigger.d.ts.map +1 -1
- package/dist/trigger.js +1 -2
- package/dist/trigger.js.map +1 -1
- package/dist/types.d.ts +144 -31
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/date.d.ts +1 -1
- package/dist/utils/date.js +1 -1
- package/dist/utils/date.js.map +1 -1
- package/dist/vault/disabled.d.ts +9 -0
- package/dist/vault/disabled.d.ts.map +1 -0
- package/dist/vault/disabled.js +22 -0
- package/dist/vault/disabled.js.map +1 -0
- package/dist/vault/index.d.ts +0 -2
- package/dist/vault/index.d.ts.map +1 -1
- package/dist/vault/index.js +1 -32
- package/dist/vault/index.js.map +1 -1
- package/dist/vault/injection.d.ts +20 -0
- package/dist/vault/injection.d.ts.map +1 -0
- package/dist/vault/injection.js +27 -0
- package/dist/vault/injection.js.map +1 -0
- package/dist/vault/policy.d.ts +20 -0
- package/dist/vault/policy.d.ts.map +1 -0
- package/dist/vault/policy.js +20 -0
- package/dist/vault/policy.js.map +1 -0
- package/dist/vault/types.d.ts +0 -2
- package/dist/vault/types.d.ts.map +1 -1
- package/dist/vault/types.js.map +1 -1
- package/dist/web/admin/portal.d.ts +27 -0
- package/dist/web/admin/portal.d.ts.map +1 -1
- package/dist/web/admin/portal.js +117 -154
- package/dist/web/admin/portal.js.map +1 -1
- package/dist/web/admin/types.d.ts +6 -0
- package/dist/web/admin/types.d.ts.map +1 -1
- package/dist/web/admin/types.js.map +1 -1
- package/dist/web/agent-events/portal.d.ts.map +1 -1
- package/dist/web/agent-events/portal.js +2 -1
- package/dist/web/agent-events/portal.js.map +1 -1
- package/dist/web/login/oauth.d.ts +2 -3
- package/dist/web/login/oauth.d.ts.map +1 -1
- package/dist/web/login/oauth.js +0 -31
- package/dist/web/login/oauth.js.map +1 -1
- package/dist/web/login/portal.js +1 -1
- package/dist/web/login/portal.js.map +1 -1
- package/dist/web/login/types.d.ts +0 -11
- package/dist/web/login/types.d.ts.map +1 -1
- package/dist/web/login/types.js.map +1 -1
- package/dist/web/portal-shell.d.ts +4 -0
- package/dist/web/portal-shell.d.ts.map +1 -0
- package/dist/{portal-shell.js → web/portal-shell.js} +2 -2
- package/dist/web/portal-shell.js.map +1 -0
- package/dist/web/server.d.ts.map +1 -1
- package/dist/web/server.js +7 -0
- package/dist/web/server.js.map +1 -1
- package/dist/web/session-view/command.d.ts.map +1 -1
- package/dist/web/session-view/command.js +4 -1
- package/dist/web/session-view/command.js.map +1 -1
- package/dist/web/session-view/portal.d.ts.map +1 -1
- package/dist/web/session-view/portal.js +4 -3
- package/dist/web/session-view/portal.js.map +1 -1
- package/dist/web/session-view/service.d.ts.map +1 -1
- package/dist/web/session-view/service.js +2 -1
- package/dist/web/session-view/service.js.map +1 -1
- package/dist/web/session-view/types.d.ts +2 -1
- package/dist/web/session-view/types.d.ts.map +1 -1
- package/dist/web/session-view/types.js.map +1 -1
- package/package.json +7 -4
- package/dist/download.d.ts.map +0 -1
- package/dist/download.js.map +0 -1
- package/dist/model-registry.d.ts +0 -4
- package/dist/model-registry.d.ts.map +0 -1
- package/dist/model-registry.js +0 -7
- package/dist/model-registry.js.map +0 -1
- package/dist/portal-shell.d.ts +0 -4
- package/dist/portal-shell.d.ts.map +0 -1
- package/dist/portal-shell.js.map +0 -1
- package/dist/runtime/agent-run-controller.d.ts +0 -31
- package/dist/runtime/agent-run-controller.d.ts.map +0 -1
- package/dist/runtime/agent-run-controller.js +0 -195
- package/dist/runtime/agent-run-controller.js.map +0 -1
- package/dist/sessions/agent-memory-file-manager.d.ts +0 -19
- package/dist/sessions/agent-memory-file-manager.d.ts.map +0 -1
- package/dist/sessions/agent-memory-file-manager.js.map +0 -1
- package/dist/vault/routing.d.ts +0 -3
- package/dist/vault/routing.d.ts.map +0 -1
- package/dist/vault/routing.js +0 -13
- package/dist/vault/routing.js.map +0 -1
- /package/dist/{download.d.ts → cli/download.d.ts} +0 -0
- /package/dist/{download.js → cli/download.js} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bot.d.ts","sourceRoot":"","sources":["../../../src/adapters/slack/bot.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,YAAY,EAEZ,iBAAiB,EACjB,qBAAqB,EAKrB,aAAa,EACd,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"bot.d.ts","sourceRoot":"","sources":["../../../src/adapters/slack/bot.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,13 +3,15 @@ import { WebClient } from "@slack/web-api";
|
|
|
3
3
|
import { existsSync, readFileSync } from "fs";
|
|
4
4
|
import { readFile } from "fs/promises";
|
|
5
5
|
import { basename, join } from "path";
|
|
6
|
+
import { COMMAND_MANIFEST } from "../../commands/manifest.js";
|
|
6
7
|
import { resolveConversationSettings } from "../../config.js";
|
|
7
8
|
import * as log from "../../log.js";
|
|
8
|
-
import { PRODUCT_NAME, formatForceStopped
|
|
9
|
-
import { appendBotResponseLog, appendChannelLog, MessagingEventQueue,
|
|
9
|
+
import { PRODUCT_NAME, formatForceStopped } from "../../platform-messages.js";
|
|
10
|
+
import { appendBotResponseLog, appendChannelLog, MessagingEventQueue, withRetry, } from "../shared.js";
|
|
10
11
|
import { processMessageIntake } from "../intake.js";
|
|
11
12
|
import { createSlackAdapters } from "./context.js";
|
|
12
|
-
import { hasMaterializedChatSession, registerThreadSession, } from "../../sessions/
|
|
13
|
+
import { hasMaterializedChatSession, registerThreadSession, } from "../../sessions/chat-history-sync.js";
|
|
14
|
+
import { conversationIdOf } from "../../sessions/session-key.js";
|
|
13
15
|
import { isSlackThreadSessionKey, planSlackAdapterSession, planSlackEventAnchorRun, resolveSlackSessionKey, } from "./session.js";
|
|
14
16
|
import { reportUserFacingError } from "../../observability/sentry.js";
|
|
15
17
|
import { renderSlackBlocks } from "./blocks.js";
|
|
@@ -152,6 +154,21 @@ export class SlackMessagingBot {
|
|
|
152
154
|
return result.ts;
|
|
153
155
|
});
|
|
154
156
|
}
|
|
157
|
+
async addReaction(channel, messageTs, emoji) {
|
|
158
|
+
// Slack reaction names are colon-free short names; strip any wrapping colons.
|
|
159
|
+
const name = emoji.replace(/^:|:$/g, "");
|
|
160
|
+
await slackRetry(async () => {
|
|
161
|
+
try {
|
|
162
|
+
await this.webClient.reactions.add({ channel, timestamp: messageTs, name });
|
|
163
|
+
}
|
|
164
|
+
catch (err) {
|
|
165
|
+
// Re-reacting with the same emoji is not an error worth surfacing.
|
|
166
|
+
if (err?.data?.error === "already_reacted")
|
|
167
|
+
return;
|
|
168
|
+
throw err;
|
|
169
|
+
}
|
|
170
|
+
});
|
|
171
|
+
}
|
|
155
172
|
async postEphemeral(channel, user, text, threadTs) {
|
|
156
173
|
return slackRetry(async () => {
|
|
157
174
|
await this.webClient.chat.postEphemeral({
|
|
@@ -297,6 +314,7 @@ export class SlackMessagingBot {
|
|
|
297
314
|
getMessagingInfo() {
|
|
298
315
|
return {
|
|
299
316
|
name: "slack",
|
|
317
|
+
trustModel: "membership",
|
|
300
318
|
formattingGuide: "## Slack Formatting (mrkdwn, NOT Markdown)\nBold: *text*, Italic: _text_, Code: `code`, Block: ```code```, Links: <url|text>\nDo NOT use **double asterisks** or [markdown](links).",
|
|
301
319
|
channels: this.getAllChannels().map((c) => ({ id: c.id, name: c.name })),
|
|
302
320
|
users: this.getAllUsers().map((u) => ({
|
|
@@ -410,10 +428,17 @@ export class SlackMessagingBot {
|
|
|
410
428
|
});
|
|
411
429
|
}
|
|
412
430
|
processSlackMessageIntake(options) {
|
|
413
|
-
|
|
431
|
+
const absorbAttachmentFailure = () => {
|
|
432
|
+
void options.attachmentsPromise.catch((err) => {
|
|
433
|
+
log.logWarning("Failed to log Slack message", String(err));
|
|
434
|
+
});
|
|
435
|
+
};
|
|
436
|
+
processMessageIntake({
|
|
414
437
|
eventBase: options.event,
|
|
415
438
|
workingDir: this.workingDir,
|
|
416
439
|
isAutoReplyCandidate: options.isAutoReplyCandidate,
|
|
440
|
+
magicWord: { addressed: options.addressed, scopeFallback: "top-level" },
|
|
441
|
+
busyPolicy: "queue",
|
|
417
442
|
logEntryBase: {},
|
|
418
443
|
processAttachments: () => options.attachmentsPromise,
|
|
419
444
|
queueKey: options.queueKey,
|
|
@@ -421,8 +446,15 @@ export class SlackMessagingBot {
|
|
|
421
446
|
handler: this.handler,
|
|
422
447
|
bot: this,
|
|
423
448
|
createContext: (event) => this.createContext(event),
|
|
424
|
-
onNotTriggered: options.onNotTriggered,
|
|
425
449
|
deferAttachmentsUntilRun: true,
|
|
450
|
+
}).then((outcome) => {
|
|
451
|
+
// Slack logs eagerly via logUserMessage; when intake does not enqueue,
|
|
452
|
+
// nothing awaits the attachment download, so absorb its failure here.
|
|
453
|
+
if (outcome !== "enqueued")
|
|
454
|
+
absorbAttachmentFailure();
|
|
455
|
+
}, (err) => {
|
|
456
|
+
log.logWarning("Slack message intake failed", String(err));
|
|
457
|
+
absorbAttachmentFailure();
|
|
426
458
|
});
|
|
427
459
|
}
|
|
428
460
|
buildHomeView() {
|
|
@@ -460,7 +492,7 @@ export class SlackMessagingBot {
|
|
|
460
492
|
// Threshold for "stuck" detection (10 minutes)
|
|
461
493
|
const STUCK_THRESHOLD_MS = 10 * 60 * 1000;
|
|
462
494
|
for (const session of runningSessions) {
|
|
463
|
-
const channelId = session.sessionKey
|
|
495
|
+
const channelId = conversationIdOf(session.sessionKey);
|
|
464
496
|
const channel = this.channels.get(channelId);
|
|
465
497
|
const channelName = channel ? `#${channel.name}` : channelId;
|
|
466
498
|
const elapsed = Math.floor((Date.now() - session.startedAt) / 60000);
|
|
@@ -500,7 +532,14 @@ export class SlackMessagingBot {
|
|
|
500
532
|
{
|
|
501
533
|
type: "button",
|
|
502
534
|
text: { type: "plain_text", text: "Force Stop", emoji: true },
|
|
535
|
+
// The raw session key travels in `value` (Slack returns it
|
|
536
|
+
// verbatim); the action_id only routes and must be unique per
|
|
537
|
+
// view, so it carries a sanitized copy of the key. Never
|
|
538
|
+
// decode the key from the action_id — the `:`↔`_` rewrite is
|
|
539
|
+
// irreversible for conversation ids that contain `_` (GitHub's
|
|
540
|
+
// GH_owner_repo_number do, by design).
|
|
503
541
|
action_id: `force_stop_${session.sessionKey.replace(/:/g, "_")}`,
|
|
542
|
+
value: session.sessionKey,
|
|
504
543
|
style: "danger",
|
|
505
544
|
},
|
|
506
545
|
],
|
|
@@ -559,22 +598,6 @@ export class SlackMessagingBot {
|
|
|
559
598
|
});
|
|
560
599
|
return { type: "home", blocks: blocks };
|
|
561
600
|
}
|
|
562
|
-
resolveStopTarget(channelId, threadTs) {
|
|
563
|
-
const directTarget = resolveStopTarget({
|
|
564
|
-
handler: this.handler,
|
|
565
|
-
conversationId: channelId,
|
|
566
|
-
sessionKey: resolveSlackSessionKey(channelId, threadTs),
|
|
567
|
-
});
|
|
568
|
-
if (directTarget)
|
|
569
|
-
return directTarget;
|
|
570
|
-
if (threadTs)
|
|
571
|
-
return null;
|
|
572
|
-
return resolveOnlyScopedStopTarget(this.handler, channelId);
|
|
573
|
-
}
|
|
574
|
-
isStopText(text) {
|
|
575
|
-
const normalized = text.trim().toLowerCase();
|
|
576
|
-
return normalized === "stop" || normalized === "/stop";
|
|
577
|
-
}
|
|
578
601
|
createCommandAdapters(conversationId, userId, userName, text, ts, options = {}) {
|
|
579
602
|
const message = {
|
|
580
603
|
id: ts,
|
|
@@ -665,10 +688,23 @@ export class SlackMessagingBot {
|
|
|
665
688
|
const context = this.createCommandAdapters(conversationId, payload.user_id, userName, commandText, eventTs, isDirectMessage ? { threadTs } : { ephemeralChannelId: conversationId, threadTs });
|
|
666
689
|
return { event, context };
|
|
667
690
|
}
|
|
668
|
-
|
|
691
|
+
/**
|
|
692
|
+
* Generic slash-command route: synthesize the command text per the
|
|
693
|
+
* manifest's SlackSlashRoute data and dispatch to the handler. `/pi-new`
|
|
694
|
+
* stays bespoke (routeSlashNewCommand) because it replies in 中文 and calls
|
|
695
|
+
* handleNewCommand directly.
|
|
696
|
+
*/
|
|
697
|
+
async routeSlashCommand(route, payload) {
|
|
669
698
|
const { event, context } = this.buildSlashCommandEvent(payload, {
|
|
670
|
-
|
|
671
|
-
|
|
699
|
+
includeText: route.includeText,
|
|
700
|
+
thread: route.thread,
|
|
701
|
+
...(route.privateCommand
|
|
702
|
+
? {
|
|
703
|
+
type: payload.channel_id.startsWith("D")
|
|
704
|
+
? "dm"
|
|
705
|
+
: "private_command",
|
|
706
|
+
}
|
|
707
|
+
: {}),
|
|
672
708
|
});
|
|
673
709
|
await this.handler.handleEvent(event, this, context);
|
|
674
710
|
}
|
|
@@ -699,18 +735,6 @@ export class SlackMessagingBot {
|
|
|
699
735
|
};
|
|
700
736
|
await this.handler.handleNewCommand(conversationId, conversationId, commandMessagingBot);
|
|
701
737
|
}
|
|
702
|
-
async routeSlashModelCommand(payload) {
|
|
703
|
-
const { event, context } = this.buildSlashCommandEvent(payload, { includeText: true });
|
|
704
|
-
await this.handler.handleEvent(event, this, context);
|
|
705
|
-
}
|
|
706
|
-
async routeSlashSessionCommand(payload) {
|
|
707
|
-
const { event, context } = this.buildSlashCommandEvent(payload, { thread: true });
|
|
708
|
-
await this.handler.handleEvent(event, this, context);
|
|
709
|
-
}
|
|
710
|
-
async routeSlashAdminCommand(payload) {
|
|
711
|
-
const { event, context } = this.buildSlashCommandEvent(payload, { thread: true });
|
|
712
|
-
await this.handler.handleEvent(event, this, context);
|
|
713
|
-
}
|
|
714
738
|
setupEventHandlers() {
|
|
715
739
|
this.socketClient.on("disconnect", (err) => {
|
|
716
740
|
log.logWarning("Slack socket disconnect", err ? String(err) : "");
|
|
@@ -761,26 +785,12 @@ export class SlackMessagingBot {
|
|
|
761
785
|
ack();
|
|
762
786
|
return;
|
|
763
787
|
}
|
|
764
|
-
// Check for stop command - execute immediately, don't queue!
|
|
765
|
-
if (this.isStopText(slackEvent.text)) {
|
|
766
|
-
const stopTarget = this.resolveStopTarget(e.channel, e.thread_ts);
|
|
767
|
-
if (stopTarget) {
|
|
768
|
-
this.handler.handleStop(stopTarget, e.channel, this);
|
|
769
|
-
}
|
|
770
|
-
else {
|
|
771
|
-
this.postMessage(e.channel, formatNothingRunning("slack"));
|
|
772
|
-
}
|
|
773
|
-
void attachmentsPromise.catch((err) => {
|
|
774
|
-
log.logWarning("Failed to log Slack message", String(err));
|
|
775
|
-
});
|
|
776
|
-
ack();
|
|
777
|
-
return;
|
|
778
|
-
}
|
|
779
788
|
this.processSlackMessageIntake({
|
|
780
789
|
event: slackEvent,
|
|
781
790
|
attachmentsPromise,
|
|
782
791
|
queueKey: this.resolveQueueKey(e.channel, sessionKey),
|
|
783
792
|
isAutoReplyCandidate: false,
|
|
793
|
+
addressed: true,
|
|
784
794
|
});
|
|
785
795
|
ack();
|
|
786
796
|
}
|
|
@@ -853,59 +863,26 @@ export class SlackMessagingBot {
|
|
|
853
863
|
ack();
|
|
854
864
|
return;
|
|
855
865
|
}
|
|
856
|
-
|
|
857
|
-
if (isDM && this.isStopText(slackEvent.text)) {
|
|
858
|
-
const stopTarget = this.resolveStopTarget(e.channel, e.thread_ts);
|
|
859
|
-
if (stopTarget) {
|
|
860
|
-
this.handler.handleStop(stopTarget, e.channel, this);
|
|
861
|
-
}
|
|
862
|
-
else {
|
|
863
|
-
this.postMessage(e.channel, formatNothingRunning("slack"));
|
|
864
|
-
}
|
|
865
|
-
void attachmentsPromise.catch((err) => {
|
|
866
|
-
log.logWarning("Failed to log Slack message", String(err));
|
|
867
|
-
});
|
|
868
|
-
ack();
|
|
869
|
-
return;
|
|
870
|
-
}
|
|
871
|
-
const enqueueTriggered = () => {
|
|
872
|
-
const activeSessionKey = slackEvent.sessionKey ?? resolveSlackSessionKey(e.channel, e.thread_ts);
|
|
873
|
-
// Auto-reply top-level channel messages start with no sessionKey because
|
|
874
|
-
// they are only candidates until the policy allows them. Once triggered,
|
|
875
|
-
// persist the resolved key on the event; otherwise the runtime fallback
|
|
876
|
-
// treats the message ts as a thread session (`channel:ts`) instead of the
|
|
877
|
-
// persistent top-level channel session.
|
|
878
|
-
slackEvent.sessionKey = activeSessionKey;
|
|
879
|
-
this.processSlackMessageIntake({
|
|
880
|
-
event: slackEvent,
|
|
881
|
-
attachmentsPromise,
|
|
882
|
-
queueKey: this.resolveQueueKey(e.channel, activeSessionKey),
|
|
883
|
-
isAutoReplyCandidate: false,
|
|
884
|
-
});
|
|
885
|
-
};
|
|
886
|
-
const logOnly = () => {
|
|
866
|
+
if (!isDM && isThreadReply) {
|
|
887
867
|
void attachmentsPromise.catch((err) => {
|
|
888
868
|
log.logWarning("Failed to log Slack message", String(err));
|
|
889
869
|
});
|
|
890
|
-
};
|
|
891
|
-
if (isDM) {
|
|
892
|
-
enqueueTriggered();
|
|
893
870
|
ack();
|
|
894
871
|
return;
|
|
895
872
|
}
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
873
|
+
const activeSessionKey = slackEvent.sessionKey ?? resolveSlackSessionKey(e.channel, e.thread_ts);
|
|
874
|
+
// Auto-reply top-level channel messages start with no sessionKey because
|
|
875
|
+
// they are only candidates until the policy allows them. Persist the
|
|
876
|
+
// resolved key on the event; otherwise the runtime fallback treats the
|
|
877
|
+
// message ts as a thread session (`channel:ts`) instead of the persistent
|
|
878
|
+
// top-level channel session.
|
|
902
879
|
slackEvent.sessionKey = activeSessionKey;
|
|
903
880
|
this.processSlackMessageIntake({
|
|
904
881
|
event: slackEvent,
|
|
905
882
|
attachmentsPromise,
|
|
906
883
|
queueKey: this.resolveQueueKey(e.channel, activeSessionKey),
|
|
907
|
-
isAutoReplyCandidate:
|
|
908
|
-
|
|
884
|
+
isAutoReplyCandidate: !isDM,
|
|
885
|
+
addressed: isDM,
|
|
909
886
|
});
|
|
910
887
|
ack();
|
|
911
888
|
}
|
|
@@ -916,52 +893,20 @@ export class SlackMessagingBot {
|
|
|
916
893
|
return;
|
|
917
894
|
}
|
|
918
895
|
const { command, text, channel_id, user_id, user_name, thread_ts } = payload;
|
|
896
|
+
const entry = COMMAND_MANIFEST.find((candidate) => candidate.slackCommand === command);
|
|
897
|
+
if (!entry)
|
|
898
|
+
return;
|
|
919
899
|
let handlerPromise = null;
|
|
920
|
-
if (
|
|
921
|
-
handlerPromise = this.routeSlashLoginCommand({
|
|
922
|
-
command,
|
|
923
|
-
text,
|
|
924
|
-
channel_id,
|
|
925
|
-
user_id,
|
|
926
|
-
user_name,
|
|
927
|
-
});
|
|
928
|
-
}
|
|
929
|
-
else if (command === "/pi-new") {
|
|
900
|
+
if (entry.name === "new") {
|
|
930
901
|
handlerPromise = this.routeSlashNewCommand({ command, channel_id, user_id, user_name });
|
|
931
902
|
}
|
|
932
|
-
else if (
|
|
933
|
-
handlerPromise = this.
|
|
934
|
-
command,
|
|
935
|
-
channel_id,
|
|
936
|
-
user_id,
|
|
937
|
-
user_name,
|
|
938
|
-
thread_ts,
|
|
939
|
-
});
|
|
940
|
-
}
|
|
941
|
-
else if (command === "/pi-model") {
|
|
942
|
-
handlerPromise = this.routeSlashModelCommand({
|
|
943
|
-
command,
|
|
944
|
-
text,
|
|
945
|
-
channel_id,
|
|
946
|
-
user_id,
|
|
947
|
-
user_name,
|
|
948
|
-
});
|
|
949
|
-
}
|
|
950
|
-
else if (command === "/pi-sandbox" || command === "/pi-auto-reply") {
|
|
951
|
-
handlerPromise = this.routeSlashModelCommand({
|
|
903
|
+
else if (entry.slackRoute) {
|
|
904
|
+
handlerPromise = this.routeSlashCommand(entry.slackRoute, {
|
|
952
905
|
command,
|
|
953
906
|
text,
|
|
954
907
|
channel_id,
|
|
955
908
|
user_id,
|
|
956
909
|
user_name,
|
|
957
|
-
});
|
|
958
|
-
}
|
|
959
|
-
else if (command === "/pi-admin") {
|
|
960
|
-
handlerPromise = this.routeSlashAdminCommand({
|
|
961
|
-
command,
|
|
962
|
-
channel_id,
|
|
963
|
-
user_id,
|
|
964
|
-
user_name,
|
|
965
910
|
thread_ts,
|
|
966
911
|
});
|
|
967
912
|
}
|
|
@@ -998,9 +943,12 @@ export class SlackMessagingBot {
|
|
|
998
943
|
return;
|
|
999
944
|
}
|
|
1000
945
|
ack();
|
|
1001
|
-
|
|
946
|
+
// Prefer the verbatim key from `value`; the action_id fallback only
|
|
947
|
+
// serves buttons rendered before `value` existed and misdecodes session
|
|
948
|
+
// keys whose conversation id contains "_".
|
|
949
|
+
const sessionKey = action.value ?? action.action_id.replace("force_stop_", "").replace(/_/g, ":");
|
|
1002
950
|
const userId = body.user?.id;
|
|
1003
|
-
const channelId = body.container?.channel_id || sessionKey
|
|
951
|
+
const channelId = body.container?.channel_id || conversationIdOf(sessionKey);
|
|
1004
952
|
log.logInfo(`[Force Stop] User ${userId} requested force stop for ${sessionKey}`);
|
|
1005
953
|
// Use handler's forceStop method
|
|
1006
954
|
this.handler.forceStop(sessionKey);
|