@geminixiang/mikan 1.0.0-beta.2 → 1.0.0-beta.20
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 +354 -0
- package/README.md +42 -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/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 +17 -42
- package/dist/adapters/discord/context.js.map +1 -1
- package/dist/adapters/github/bot.d.ts +148 -0
- package/dist/adapters/github/bot.d.ts.map +1 -0
- package/dist/adapters/github/bot.js +1031 -0
- package/dist/adapters/github/bot.js.map +1 -0
- package/dist/adapters/github/client.d.ts +118 -0
- package/dist/adapters/github/client.d.ts.map +1 -0
- package/dist/adapters/github/client.js +309 -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 +175 -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/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 +30 -0
- package/dist/adapters/github/repo.d.ts.map +1 -0
- package/dist/adapters/github/repo.js +136 -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 +116 -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 +59 -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 +59 -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 +152 -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 +49 -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 +45 -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 +81 -133
- 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 +8 -27
- 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 +38 -14
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +358 -224
- package/dist/agent.js.map +1 -1
- 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 +217 -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 +16 -6
- 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 +30 -1
- 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 +3 -1
- 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 +16 -12
- 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 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +90 -54
- package/dist/config.js.map +1 -1
- package/dist/events.d.ts +10 -0
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js +14 -5
- package/dist/events.js.map +1 -1
- package/dist/execution-resolver.d.ts +3 -2
- package/dist/execution-resolver.d.ts.map +1 -1
- package/dist/execution-resolver.js +28 -12
- package/dist/execution-resolver.js.map +1 -1
- package/dist/harness/extensions/loader.d.ts +39 -9
- package/dist/harness/extensions/loader.d.ts.map +1 -1
- package/dist/harness/extensions/loader.js +258 -54
- 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 +161 -14
- 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 +5 -5
- package/dist/harness/index.d.ts.map +1 -1
- package/dist/harness/index.js +2 -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 +21 -2
- package/dist/harness/runner.d.ts.map +1 -1
- package/dist/harness/runner.js +80 -22
- 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 +17 -0
- package/dist/harness/subagent-runner.d.ts.map +1 -0
- package/dist/harness/subagent-runner.js +307 -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 +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/main.js +232 -29
- package/dist/main.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 +264 -41
- package/dist/runtime/conversation-runtime.js.map +1 -1
- package/dist/runtime/types.d.ts +32 -5
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/runtime/types.js.map +1 -1
- package/dist/sandbox/cloudflare.d.ts +2 -0
- package/dist/sandbox/cloudflare.d.ts.map +1 -1
- package/dist/sandbox/cloudflare.js +7 -0
- package/dist/sandbox/cloudflare.js.map +1 -1
- package/dist/sandbox/container.d.ts +3 -0
- package/dist/sandbox/container.d.ts.map +1 -1
- package/dist/sandbox/container.js +8 -2
- package/dist/sandbox/container.js.map +1 -1
- package/dist/sandbox/firecracker.d.ts +2 -0
- package/dist/sandbox/firecracker.d.ts.map +1 -1
- package/dist/sandbox/firecracker.js +7 -1
- package/dist/sandbox/firecracker.js.map +1 -1
- 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 +85 -0
- package/dist/sandbox/gondolin-gateway.d.ts.map +1 -0
- package/dist/sandbox/gondolin-gateway.js +400 -0
- package/dist/sandbox/gondolin-gateway.js.map +1 -0
- package/dist/sandbox/gondolin-inventory.d.ts +89 -0
- package/dist/sandbox/gondolin-inventory.d.ts.map +1 -0
- package/dist/sandbox/gondolin-inventory.js +267 -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 +32 -0
- package/dist/sandbox/gondolin-placement.d.ts.map +1 -0
- package/dist/sandbox/gondolin-placement.js +83 -0
- package/dist/sandbox/gondolin-placement.js.map +1 -0
- package/dist/sandbox/gondolin-remote.d.ts +73 -0
- package/dist/sandbox/gondolin-remote.d.ts.map +1 -0
- package/dist/sandbox/gondolin-remote.js +352 -0
- package/dist/sandbox/gondolin-remote.js.map +1 -0
- package/dist/sandbox/gondolin-worker-client.d.ts +139 -0
- package/dist/sandbox/gondolin-worker-client.d.ts.map +1 -0
- package/dist/sandbox/gondolin-worker-client.js +325 -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 +55 -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 +52 -0
- package/dist/sandbox/gondolin.d.ts.map +1 -0
- package/dist/sandbox/gondolin.js +425 -0
- package/dist/sandbox/gondolin.js.map +1 -0
- package/dist/sandbox/host.d.ts +2 -0
- package/dist/sandbox/host.d.ts.map +1 -1
- package/dist/sandbox/host.js +11 -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 +4 -3
- package/dist/sandbox/index.d.ts.map +1 -1
- package/dist/sandbox/index.js +5 -3
- package/dist/sandbox/index.js.map +1 -1
- package/dist/sandbox/types.d.ts +26 -1
- package/dist/sandbox/types.d.ts.map +1 -1
- package/dist/sandbox/types.js.map +1 -1
- package/dist/sandbox/utils.d.ts +11 -0
- package/dist/sandbox/utils.d.ts.map +1 -1
- package/dist/sandbox/utils.js +35 -0
- package/dist/sandbox/utils.js.map +1 -1
- package/dist/sessions/agent-memory-file-manager.d.ts.map +1 -1
- package/dist/sessions/agent-memory-file-manager.js +16 -30
- package/dist/sessions/agent-memory-file-manager.js.map +1 -1
- 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/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 +2 -2
- package/dist/sessions/store.js.map +1 -1
- 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 +33 -4
- 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/index.d.ts +16 -2
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +27 -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 +40 -0
- package/dist/tools/react.js.map +1 -0
- package/dist/tools/sandbox.d.ts +2 -2
- package/dist/tools/sandbox.d.ts.map +1 -1
- package/dist/tools/sandbox.js +8 -7
- package/dist/tools/sandbox.js.map +1 -1
- package/dist/tools/subagent.d.ts +69 -0
- package/dist/tools/subagent.d.ts.map +1 -0
- package/dist/tools/subagent.js +286 -0
- package/dist/tools/subagent.js.map +1 -0
- package/dist/tools/types.d.ts +34 -1
- 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 +139 -7
- package/dist/types.d.ts.map +1 -1
- package/dist/types.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 +23 -0
- package/dist/vault/disabled.js.map +1 -0
- package/dist/vault/index.d.ts.map +1 -1
- package/dist/vault/index.js +3 -24
- package/dist/vault/index.js.map +1 -1
- 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/routing.d.ts +1 -0
- package/dist/vault/routing.d.ts.map +1 -1
- package/dist/vault/routing.js +3 -10
- package/dist/vault/routing.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 +91 -130
- package/dist/web/admin/portal.js.map +1 -1
- package/dist/web/admin/types.d.ts +3 -0
- package/dist/web/admin/types.d.ts.map +1 -1
- package/dist/web/admin/types.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/{download.d.ts → cli/download.d.ts} +0 -0
- /package/dist/{download.js → cli/download.js} +0 -0
package/dist/vault/routing.js
CHANGED
|
@@ -1,13 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { actorKey } from "../sandbox/identity.js";
|
|
2
|
+
/** The vault key for an actor — the shared runtime identity (see sandbox/identity.ts). */
|
|
2
3
|
export function resolveActorVaultKey(baseConfig, userId, conversationId) {
|
|
3
|
-
|
|
4
|
-
return `container-${baseConfig.container}`;
|
|
5
|
-
}
|
|
6
|
-
if (baseConfig.type === "image" ||
|
|
7
|
-
baseConfig.type === "cloudflare" ||
|
|
8
|
-
baseConfig.type === "firecracker") {
|
|
9
|
-
return DockerContainerManager.sanitizeSegment(conversationId);
|
|
10
|
-
}
|
|
11
|
-
return userId;
|
|
4
|
+
return actorKey(baseConfig, { userId, conversationId });
|
|
12
5
|
}
|
|
13
6
|
//# sourceMappingURL=routing.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routing.js","sourceRoot":"","sources":["../../src/vault/routing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"routing.js","sourceRoot":"","sources":["../../src/vault/routing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAGlD,0FAA0F;AAC1F,MAAM,UAAU,oBAAoB,CAClC,UAAyB,EACzB,MAAc,EACd,cAAsB;IAEtB,OAAO,QAAQ,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC;AAC1D,CAAC","sourcesContent":["import { actorKey } from \"../sandbox/identity.js\";\nimport type { SandboxConfig } from \"../sandbox/index.js\";\n\n/** The vault key for an actor — the shared runtime identity (see sandbox/identity.ts). */\nexport function resolveActorVaultKey(\n baseConfig: SandboxConfig,\n userId: string,\n conversationId: string,\n): string {\n return actorKey(baseConfig, { userId, conversationId });\n}\n"]}
|
|
@@ -1,5 +1,32 @@
|
|
|
1
1
|
import type { IncomingMessage, ServerResponse } from "http";
|
|
2
|
+
import type { EventStore } from "../../tools/types.js";
|
|
2
3
|
export type { AdminRuntimeBridge, AdminServices } from "./types.js";
|
|
3
4
|
import type { AdminServices } from "./types.js";
|
|
4
5
|
export declare function handleAdminRequest(req: IncomingMessage, res: ServerResponse, url: URL, services: AdminServices): Promise<boolean>;
|
|
6
|
+
interface SkillEntry {
|
|
7
|
+
name: string;
|
|
8
|
+
description: string;
|
|
9
|
+
source: "global" | "conversation";
|
|
10
|
+
path: string;
|
|
11
|
+
directory: string;
|
|
12
|
+
}
|
|
13
|
+
export declare function readSkillsFromDir(skillsDir: string, source: SkillEntry["source"]): SkillEntry[];
|
|
14
|
+
export interface EventSummary {
|
|
15
|
+
name: string;
|
|
16
|
+
size: number;
|
|
17
|
+
mtimeMs: number;
|
|
18
|
+
type: string | null;
|
|
19
|
+
platform: string | null;
|
|
20
|
+
conversationId: string | null;
|
|
21
|
+
text: string | null;
|
|
22
|
+
at: string | null;
|
|
23
|
+
schedule: string | null;
|
|
24
|
+
timezone: string | null;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* List events through the owning store (which normalizes the legacy
|
|
28
|
+
* `channelId` alias and keeps unparseable files visible with a null payload).
|
|
29
|
+
* Store payloads are unvalidated JSON, so field access stays defensive.
|
|
30
|
+
*/
|
|
31
|
+
export declare function listAllEvents(store: EventStore): Promise<EventSummary[]>;
|
|
5
32
|
//# sourceMappingURL=portal.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"portal.d.ts","sourceRoot":"","sources":["../../../src/web/admin/portal.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"portal.d.ts","sourceRoot":"","sources":["../../../src/web/admin/portal.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AAG5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAsBvD,YAAY,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAIhD,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,GAAG,EAAE,GAAG,EACR,QAAQ,EAAE,aAAa,GACtB,OAAO,CAAC,OAAO,CAAC,CA6BlB;AA4nCD,UAAU,UAAU;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,QAAQ,GAAG,cAAc,CAAC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAwBD,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,GAAG,UAAU,EAAE,CAuB/F;AAyED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAMD;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAyB9E"}
|
package/dist/web/admin/portal.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { existsSync, readdirSync, readFileSync,
|
|
1
|
+
import { existsSync, readdirSync, readFileSync, statSync } from "fs";
|
|
2
2
|
import { basename, join, resolve as pathResolve, sep as pathSep } from "path";
|
|
3
|
-
import { MikanModels, SessionStore } from "../../harness/index.js";
|
|
3
|
+
import { MikanModels, parseFrontmatter, SessionStore } from "../../harness/index.js";
|
|
4
4
|
import { loadConversationAutoReplyConfig, loadGlobalSettings, resolveConversationSettings, saveConversationAutoReplyConfig, updateConversationSettings, updateGlobalSettings, } from "../../config.js";
|
|
5
5
|
import { escapeHtml } from "../../utils/html.js";
|
|
6
6
|
import { readRawBody } from "../../utils/http-body.js";
|
|
7
|
-
import { renderPortalShell } from "
|
|
7
|
+
import { renderPortalShell } from "../portal-shell.js";
|
|
8
8
|
import { resolveExistingSessionFile } from "../session-view/service.js";
|
|
9
9
|
import { PRODUCT_NAME } from "../../platform-messages.js";
|
|
10
10
|
import { resolveActorVaultKey } from "../../vault/routing.js";
|
|
@@ -88,7 +88,7 @@ async function routeApiRequest(req, res, url, services) {
|
|
|
88
88
|
return;
|
|
89
89
|
}
|
|
90
90
|
if (url.pathname === "/admin/api/events") {
|
|
91
|
-
serveEventsList(res, services);
|
|
91
|
+
await serveEventsList(res, services);
|
|
92
92
|
return;
|
|
93
93
|
}
|
|
94
94
|
if (url.pathname === "/admin/api/events/file") {
|
|
@@ -96,7 +96,7 @@ async function routeApiRequest(req, res, url, services) {
|
|
|
96
96
|
return;
|
|
97
97
|
}
|
|
98
98
|
if (url.pathname === "/admin/api/conversations/events") {
|
|
99
|
-
serveConversationEventsList(res, url, services, token);
|
|
99
|
+
await serveConversationEventsList(res, url, services, token);
|
|
100
100
|
return;
|
|
101
101
|
}
|
|
102
102
|
jsonRes(res, 404, { error: "Not found" });
|
|
@@ -140,7 +140,7 @@ async function routeApiRequest(req, res, url, services) {
|
|
|
140
140
|
return;
|
|
141
141
|
}
|
|
142
142
|
if (url.pathname === "/admin/api/conversations/events/delete") {
|
|
143
|
-
serveConversationEventDelete(res, body, services, token);
|
|
143
|
+
await serveConversationEventDelete(res, body, services, token);
|
|
144
144
|
return;
|
|
145
145
|
}
|
|
146
146
|
if (url.pathname === "/admin/api/settings/model") {
|
|
@@ -465,8 +465,8 @@ function serveConversationState(res, url, services, token) {
|
|
|
465
465
|
globalProvider: globalConfig.provider,
|
|
466
466
|
globalModel: globalConfig.model,
|
|
467
467
|
globalThinkingLevel: globalConfig.thinkingLevel,
|
|
468
|
-
sandboxImageWorkspaceMount: conversationConfig.
|
|
469
|
-
globalSandboxImageWorkspaceMount: globalConfig.
|
|
468
|
+
sandboxImageWorkspaceMount: conversationConfig.sandbox?.image?.workspaceMount ?? null,
|
|
469
|
+
globalSandboxImageWorkspaceMount: globalConfig.sandbox?.image?.workspaceMount ?? null,
|
|
470
470
|
autoReplyEnabled: autoReply.enabled,
|
|
471
471
|
autoReplyRules: autoReply.rules,
|
|
472
472
|
slack: {
|
|
@@ -482,12 +482,12 @@ function serveGlobalSettings(res) {
|
|
|
482
482
|
provider: config.provider,
|
|
483
483
|
model: config.model,
|
|
484
484
|
thinkingLevel: config.thinkingLevel,
|
|
485
|
-
sandboxCpus: config.
|
|
486
|
-
sandboxMemory: config.
|
|
487
|
-
sandboxBoostCpus: config.
|
|
488
|
-
sandboxBoostMemory: config.
|
|
489
|
-
sandboxImageWorkspaceMount: config.
|
|
490
|
-
defaultSharedVault: config.defaultSharedVault ?? null,
|
|
485
|
+
sandboxCpus: config.sandbox?.cpus ?? null,
|
|
486
|
+
sandboxMemory: config.sandbox?.memory ?? null,
|
|
487
|
+
sandboxBoostCpus: config.sandbox?.boost?.cpus ?? null,
|
|
488
|
+
sandboxBoostMemory: config.sandbox?.boost?.memory ?? null,
|
|
489
|
+
sandboxImageWorkspaceMount: config.sandbox?.image?.workspaceMount ?? null,
|
|
490
|
+
defaultSharedVault: config.sandbox?.defaultSharedVault ?? null,
|
|
491
491
|
slack: {
|
|
492
492
|
replyMode: config.slack?.replyMode ?? "top-level",
|
|
493
493
|
},
|
|
@@ -518,7 +518,7 @@ async function serveModelsList(res) {
|
|
|
518
518
|
jsonRes(res, 500, { error: err instanceof Error ? err.message : String(err) });
|
|
519
519
|
}
|
|
520
520
|
}
|
|
521
|
-
const VALID_THINKING_LEVELS = new Set(["off", "minimal", "low", "medium", "high", "xhigh"]);
|
|
521
|
+
const VALID_THINKING_LEVELS = new Set(["off", "minimal", "low", "medium", "high", "xhigh", "max"]);
|
|
522
522
|
function serveConversationModelUpdate(res, body, services, token) {
|
|
523
523
|
const provider = typeof body.provider === "string" ? body.provider.trim() : "";
|
|
524
524
|
const model = typeof body.model === "string" ? body.model.trim() : "";
|
|
@@ -570,7 +570,7 @@ function serveConversationSandboxUpdate(res, body, services, token) {
|
|
|
570
570
|
return;
|
|
571
571
|
const dir = join(workingDir, scope.conversationId);
|
|
572
572
|
try {
|
|
573
|
-
updateConversationSettings(dir, {
|
|
573
|
+
updateConversationSettings(dir, { sandbox: { image: { workspaceMount } } });
|
|
574
574
|
jsonRes(res, 200, { ok: true });
|
|
575
575
|
}
|
|
576
576
|
catch (err) {
|
|
@@ -747,23 +747,25 @@ function serveGlobalSandboxUpdate(res, body) {
|
|
|
747
747
|
const boostMemory = typeof body.boostMemory === "string" ? body.boostMemory.trim() : "";
|
|
748
748
|
const workspaceMount = body.workspaceMount;
|
|
749
749
|
const validMount = workspaceMount === "private" || workspaceMount === "full";
|
|
750
|
-
const update = {
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
750
|
+
const update = {
|
|
751
|
+
...(cpus ? { cpus } : {}),
|
|
752
|
+
...(memory ? { memory } : {}),
|
|
753
|
+
...(boostCpus || boostMemory
|
|
754
|
+
? {
|
|
755
|
+
boost: {
|
|
756
|
+
...(boostCpus ? { cpus: boostCpus } : {}),
|
|
757
|
+
...(boostMemory ? { memory: boostMemory } : {}),
|
|
758
|
+
},
|
|
759
|
+
}
|
|
760
|
+
: {}),
|
|
761
|
+
...(validMount ? { image: { workspaceMount: workspaceMount } } : {}),
|
|
762
|
+
};
|
|
761
763
|
if (Object.keys(update).length === 0) {
|
|
762
764
|
jsonRes(res, 400, { error: "No valid sandbox fields provided" });
|
|
763
765
|
return;
|
|
764
766
|
}
|
|
765
767
|
try {
|
|
766
|
-
updateGlobalSettings(update);
|
|
768
|
+
updateGlobalSettings({ sandbox: update });
|
|
767
769
|
jsonRes(res, 200, { ok: true });
|
|
768
770
|
}
|
|
769
771
|
catch (err) {
|
|
@@ -994,7 +996,12 @@ function serveWorkspaceFile(res, url, services, token) {
|
|
|
994
996
|
}
|
|
995
997
|
servePreviewFile(res, safe.absolute, { path: requestedPath }, "File not found");
|
|
996
998
|
}
|
|
997
|
-
|
|
999
|
+
/**
|
|
1000
|
+
* Read skill metadata via the harness frontmatter parser (the owning module).
|
|
1001
|
+
* The portal historically accepted frontmatter keys case-insensitively, so
|
|
1002
|
+
* the lookup — not the parser — preserves that leniency.
|
|
1003
|
+
*/
|
|
1004
|
+
function readSkillMeta(filePath) {
|
|
998
1005
|
let text;
|
|
999
1006
|
try {
|
|
1000
1007
|
text = readFileSync(filePath, "utf-8");
|
|
@@ -1002,31 +1009,18 @@ function parseSkillFrontmatter(filePath) {
|
|
|
1002
1009
|
catch {
|
|
1003
1010
|
return {};
|
|
1004
1011
|
}
|
|
1005
|
-
|
|
1006
|
-
return {};
|
|
1007
|
-
const end = text.indexOf("\n---", 3);
|
|
1008
|
-
if (end < 0)
|
|
1009
|
-
return {};
|
|
1010
|
-
const block = text.slice(3, end);
|
|
1012
|
+
const { values } = parseFrontmatter(text);
|
|
1011
1013
|
const out = {};
|
|
1012
|
-
for (const
|
|
1013
|
-
const
|
|
1014
|
-
if (
|
|
1015
|
-
continue;
|
|
1016
|
-
const key = line.slice(0, colon).trim().toLowerCase();
|
|
1017
|
-
let value = line.slice(colon + 1).trim();
|
|
1018
|
-
if ((value.startsWith('"') && value.endsWith('"')) ||
|
|
1019
|
-
(value.startsWith("'") && value.endsWith("'"))) {
|
|
1020
|
-
value = value.slice(1, -1);
|
|
1021
|
-
}
|
|
1022
|
-
if (key === "name")
|
|
1014
|
+
for (const [key, value] of Object.entries(values)) {
|
|
1015
|
+
const normalized = key.toLowerCase();
|
|
1016
|
+
if (normalized === "name")
|
|
1023
1017
|
out.name = value;
|
|
1024
|
-
if (
|
|
1018
|
+
if (normalized === "description")
|
|
1025
1019
|
out.description = value;
|
|
1026
1020
|
}
|
|
1027
1021
|
return out;
|
|
1028
1022
|
}
|
|
1029
|
-
function readSkillsFromDir(skillsDir, source) {
|
|
1023
|
+
export function readSkillsFromDir(skillsDir, source) {
|
|
1030
1024
|
if (!existsSync(skillsDir))
|
|
1031
1025
|
return [];
|
|
1032
1026
|
const out = [];
|
|
@@ -1043,7 +1037,7 @@ function readSkillsFromDir(skillsDir, source) {
|
|
|
1043
1037
|
const skillMd = join(skillsDir, entry.name, "SKILL.md");
|
|
1044
1038
|
if (!existsSync(skillMd))
|
|
1045
1039
|
continue;
|
|
1046
|
-
const meta =
|
|
1040
|
+
const meta = readSkillMeta(skillMd);
|
|
1047
1041
|
out.push({
|
|
1048
1042
|
name: meta.name ?? entry.name,
|
|
1049
1043
|
description: meta.description ?? "",
|
|
@@ -1104,75 +1098,56 @@ function serveSkillFile(res, url, services, token) {
|
|
|
1104
1098
|
}
|
|
1105
1099
|
// ── Events ─────────────────────────────────────────────────────────────────────
|
|
1106
1100
|
const EVENTS_FILE_MAX_BYTES = 64 * 1024;
|
|
1107
|
-
function
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
.filter((e) => e.isFile() && e.name.endsWith(".json"))
|
|
1120
|
-
.map((e) => {
|
|
1121
|
-
const filePath = join(dir, e.name);
|
|
1122
|
-
let stats;
|
|
1123
|
-
try {
|
|
1124
|
-
stats = statSync(filePath);
|
|
1125
|
-
}
|
|
1126
|
-
catch {
|
|
1127
|
-
return null;
|
|
1128
|
-
}
|
|
1129
|
-
let parsed = null;
|
|
1130
|
-
try {
|
|
1131
|
-
parsed = JSON.parse(readFileSync(filePath, "utf-8"));
|
|
1132
|
-
}
|
|
1133
|
-
catch {
|
|
1134
|
-
// Keep entry; just omit parsed fields.
|
|
1135
|
-
}
|
|
1136
|
-
const meta = parsed && typeof parsed === "object" ? parsed : {};
|
|
1137
|
-
// events.ts accepts `channelId` as a legacy alias for `conversationId`.
|
|
1138
|
-
const conversationId = typeof meta.conversationId === "string"
|
|
1139
|
-
? meta.conversationId
|
|
1140
|
-
: typeof meta.channelId === "string"
|
|
1141
|
-
? meta.channelId
|
|
1142
|
-
: null;
|
|
1101
|
+
function stringOrNull(value) {
|
|
1102
|
+
return typeof value === "string" ? value : null;
|
|
1103
|
+
}
|
|
1104
|
+
/**
|
|
1105
|
+
* List events through the owning store (which normalizes the legacy
|
|
1106
|
+
* `channelId` alias and keeps unparseable files visible with a null payload).
|
|
1107
|
+
* Store payloads are unvalidated JSON, so field access stays defensive.
|
|
1108
|
+
*/
|
|
1109
|
+
export async function listAllEvents(store) {
|
|
1110
|
+
const entries = await store.list();
|
|
1111
|
+
return entries.map((entry) => {
|
|
1112
|
+
const payload = entry.payload;
|
|
1143
1113
|
return {
|
|
1144
|
-
name:
|
|
1145
|
-
size:
|
|
1146
|
-
mtimeMs:
|
|
1147
|
-
type:
|
|
1148
|
-
platform:
|
|
1149
|
-
conversationId,
|
|
1150
|
-
text:
|
|
1151
|
-
at:
|
|
1152
|
-
schedule:
|
|
1153
|
-
timezone:
|
|
1114
|
+
name: entry.filename,
|
|
1115
|
+
size: entry.size,
|
|
1116
|
+
mtimeMs: entry.mtimeMs,
|
|
1117
|
+
type: stringOrNull(payload?.type),
|
|
1118
|
+
platform: stringOrNull(payload?.platform),
|
|
1119
|
+
conversationId: stringOrNull(payload?.conversationId),
|
|
1120
|
+
text: stringOrNull(payload?.text),
|
|
1121
|
+
at: stringOrNull(payload?.at),
|
|
1122
|
+
schedule: stringOrNull(payload?.schedule),
|
|
1123
|
+
timezone: stringOrNull(payload?.timezone),
|
|
1154
1124
|
};
|
|
1155
|
-
})
|
|
1156
|
-
.filter((e) => e !== null)
|
|
1157
|
-
.toSorted((a, b) => a.name.localeCompare(b.name));
|
|
1125
|
+
});
|
|
1158
1126
|
}
|
|
1159
|
-
function
|
|
1160
|
-
|
|
1161
|
-
|
|
1127
|
+
function requireAdminEventStore(res, services) {
|
|
1128
|
+
if (!services.eventStore) {
|
|
1129
|
+
jsonRes(res, 503, { error: "Working directory not available" });
|
|
1130
|
+
return null;
|
|
1131
|
+
}
|
|
1132
|
+
return services.eventStore;
|
|
1133
|
+
}
|
|
1134
|
+
async function serveEventsList(res, services) {
|
|
1135
|
+
const store = requireAdminEventStore(res, services);
|
|
1136
|
+
if (!store)
|
|
1162
1137
|
return;
|
|
1163
|
-
jsonRes(res, 200, { events: listAllEvents(
|
|
1138
|
+
jsonRes(res, 200, { events: await listAllEvents(store) });
|
|
1164
1139
|
}
|
|
1165
1140
|
/** Per-conversation listing — filter all events by conversationId match. */
|
|
1166
|
-
function serveConversationEventsList(res, url, services, token) {
|
|
1141
|
+
async function serveConversationEventsList(res, url, services, token) {
|
|
1167
1142
|
const scope = resolveConversationFromQuery(url, token);
|
|
1168
1143
|
if (scope.error) {
|
|
1169
1144
|
jsonRes(res, 403, { error: scope.error });
|
|
1170
1145
|
return;
|
|
1171
1146
|
}
|
|
1172
|
-
const
|
|
1173
|
-
if (!
|
|
1147
|
+
const store = requireAdminEventStore(res, services);
|
|
1148
|
+
if (!store)
|
|
1174
1149
|
return;
|
|
1175
|
-
const events = listAllEvents(
|
|
1150
|
+
const events = (await listAllEvents(store)).filter((e) => e.conversationId === scope.conversationId);
|
|
1176
1151
|
jsonRes(res, 200, { conversationId: scope.conversationId, events });
|
|
1177
1152
|
}
|
|
1178
1153
|
function serveEventsFile(res, url, services) {
|
|
@@ -1212,7 +1187,7 @@ function serveEventsFile(res, url, services) {
|
|
|
1212
1187
|
jsonRes(res, 200, { name, content: raw });
|
|
1213
1188
|
}
|
|
1214
1189
|
/** Delete a single event file scoped to the caller's conversation. */
|
|
1215
|
-
function serveConversationEventDelete(res, body, services, token) {
|
|
1190
|
+
async function serveConversationEventDelete(res, body, services, token) {
|
|
1216
1191
|
const scope = resolveTargetConversation(body, token);
|
|
1217
1192
|
if (scope.error) {
|
|
1218
1193
|
jsonRes(res, 403, { error: scope.error });
|
|
@@ -1223,38 +1198,24 @@ function serveConversationEventDelete(res, body, services, token) {
|
|
|
1223
1198
|
jsonRes(res, 400, { error: "Invalid name" });
|
|
1224
1199
|
return;
|
|
1225
1200
|
}
|
|
1226
|
-
const
|
|
1227
|
-
if (!
|
|
1201
|
+
const store = requireAdminEventStore(res, services);
|
|
1202
|
+
if (!store)
|
|
1228
1203
|
return;
|
|
1229
|
-
|
|
1230
|
-
let raw;
|
|
1204
|
+
let payload;
|
|
1231
1205
|
try {
|
|
1232
|
-
|
|
1206
|
+
payload = (await store.read(name)).payload;
|
|
1233
1207
|
}
|
|
1234
1208
|
catch {
|
|
1235
1209
|
jsonRes(res, 404, { error: "Event not found" });
|
|
1236
1210
|
return;
|
|
1237
1211
|
}
|
|
1238
|
-
|
|
1239
|
-
|
|
1240
|
-
const j = JSON.parse(raw);
|
|
1241
|
-
if (j && typeof j === "object")
|
|
1242
|
-
parsed = j;
|
|
1243
|
-
}
|
|
1244
|
-
catch {
|
|
1245
|
-
// Malformed events cannot be associated with a conversation below.
|
|
1246
|
-
}
|
|
1247
|
-
const eventConvId = typeof parsed.conversationId === "string"
|
|
1248
|
-
? parsed.conversationId
|
|
1249
|
-
: typeof parsed.channelId === "string"
|
|
1250
|
-
? parsed.channelId
|
|
1251
|
-
: null;
|
|
1252
|
-
if (eventConvId !== scope.conversationId) {
|
|
1212
|
+
// The store normalizes the legacy `channelId` alias into `conversationId`.
|
|
1213
|
+
if (payload?.conversationId !== scope.conversationId) {
|
|
1253
1214
|
jsonRes(res, 403, { error: "Event does not belong to this conversation." });
|
|
1254
1215
|
return;
|
|
1255
1216
|
}
|
|
1256
1217
|
try {
|
|
1257
|
-
|
|
1218
|
+
await store.delete(name);
|
|
1258
1219
|
jsonRes(res, 200, { ok: true });
|
|
1259
1220
|
}
|
|
1260
1221
|
catch (err) {
|
|
@@ -1578,7 +1539,7 @@ function renderAdminPage(token) {
|
|
|
1578
1539
|
}
|
|
1579
1540
|
|
|
1580
1541
|
function renderSettings(data) {
|
|
1581
|
-
const thinking = ['off','minimal','low','medium','high','xhigh'];
|
|
1542
|
+
const thinking = ['off','minimal','low','medium','high','xhigh','max'];
|
|
1582
1543
|
const thinkingOpts = thinking.map((t) =>
|
|
1583
1544
|
'<option value="' + t + '"' + (data.thinkingLevel === t ? ' selected' : '') + '>' + t + '</option>'
|
|
1584
1545
|
).join('');
|
|
@@ -2130,7 +2091,7 @@ function renderAdminPage(token) {
|
|
|
2130
2091
|
}
|
|
2131
2092
|
|
|
2132
2093
|
function renderGlobalSettings(data) {
|
|
2133
|
-
const thinking = ['off','minimal','low','medium','high','xhigh'];
|
|
2094
|
+
const thinking = ['off','minimal','low','medium','high','xhigh','max'];
|
|
2134
2095
|
const thinkingOpts = thinking.map((t) =>
|
|
2135
2096
|
'<option value="' + t + '"' + (data.thinkingLevel === t ? ' selected' : '') + '>' + t + '</option>'
|
|
2136
2097
|
).join('');
|