@geminixiang/mikan 1.0.0-beta.76 → 1.0.0-beta.78
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 +39 -0
- package/dist/adapters/commands/login.d.ts.map +1 -1
- package/dist/adapters/commands/login.js +0 -9
- package/dist/adapters/commands/login.js.map +1 -1
- package/dist/adapters/commands/manifest.d.ts +0 -19
- package/dist/adapters/commands/manifest.d.ts.map +1 -1
- package/dist/adapters/commands/manifest.js +0 -34
- package/dist/adapters/commands/manifest.js.map +1 -1
- package/dist/adapters/commands/model.d.ts +0 -5
- package/dist/adapters/commands/model.d.ts.map +1 -1
- package/dist/adapters/commands/model.js +0 -5
- package/dist/adapters/commands/model.js.map +1 -1
- package/dist/adapters/commands/new.d.ts.map +1 -1
- package/dist/adapters/commands/new.js +0 -2
- package/dist/adapters/commands/new.js.map +1 -1
- package/dist/adapters/commands/registry.d.ts +0 -1
- package/dist/adapters/commands/registry.d.ts.map +1 -1
- package/dist/adapters/commands/registry.js +0 -8
- package/dist/adapters/commands/registry.js.map +1 -1
- package/dist/adapters/commands/session-view.d.ts.map +1 -1
- package/dist/adapters/commands/session-view.js +0 -2
- package/dist/adapters/commands/session-view.js.map +1 -1
- package/dist/adapters/commands/types.d.ts +0 -29
- package/dist/adapters/commands/types.d.ts.map +1 -1
- package/dist/adapters/commands/types.js.map +1 -1
- package/dist/adapters/commands/utils.d.ts +0 -3
- package/dist/adapters/commands/utils.d.ts.map +1 -1
- package/dist/adapters/commands/utils.js +0 -3
- package/dist/adapters/commands/utils.js.map +1 -1
- package/dist/adapters/discord/bot.d.ts +0 -4
- package/dist/adapters/discord/bot.d.ts.map +1 -1
- package/dist/adapters/discord/bot.js +5 -41
- package/dist/adapters/discord/bot.js.map +1 -1
- package/dist/adapters/discord/components.d.ts +0 -23
- package/dist/adapters/discord/components.d.ts.map +1 -1
- package/dist/adapters/discord/components.js +0 -23
- package/dist/adapters/discord/components.js.map +1 -1
- package/dist/adapters/discord/context.d.ts.map +1 -1
- package/dist/adapters/discord/context.js +1 -11
- package/dist/adapters/discord/context.js.map +1 -1
- package/dist/adapters/discord/format.d.ts +0 -1
- package/dist/adapters/discord/format.d.ts.map +1 -1
- package/dist/adapters/discord/format.js +0 -37
- package/dist/adapters/discord/format.js.map +1 -1
- package/dist/adapters/github/bot.d.ts +0 -44
- package/dist/adapters/github/bot.d.ts.map +1 -1
- package/dist/adapters/github/bot.js +1 -120
- package/dist/adapters/github/bot.js.map +1 -1
- package/dist/adapters/github/client.d.ts +0 -57
- package/dist/adapters/github/client.d.ts.map +1 -1
- package/dist/adapters/github/client.js +0 -59
- package/dist/adapters/github/client.js.map +1 -1
- package/dist/adapters/github/context.d.ts.map +1 -1
- package/dist/adapters/github/context.js +1 -8
- package/dist/adapters/github/context.js.map +1 -1
- package/dist/adapters/github/github-ops.d.ts +0 -55
- package/dist/adapters/github/github-ops.d.ts.map +1 -1
- package/dist/adapters/github/github-ops.js +0 -59
- package/dist/adapters/github/github-ops.js.map +1 -1
- package/dist/adapters/github/ids.d.ts +0 -27
- package/dist/adapters/github/ids.d.ts.map +1 -1
- package/dist/adapters/github/ids.js +0 -29
- package/dist/adapters/github/ids.js.map +1 -1
- package/dist/adapters/github/repo.d.ts +0 -25
- package/dist/adapters/github/repo.d.ts.map +1 -1
- package/dist/adapters/github/repo.js +0 -49
- package/dist/adapters/github/repo.js.map +1 -1
- package/dist/adapters/github/tool-pack.d.ts +0 -10
- package/dist/adapters/github/tool-pack.d.ts.map +1 -1
- package/dist/adapters/github/tool-pack.js +0 -10
- package/dist/adapters/github/tool-pack.js.map +1 -1
- package/dist/adapters/github/tools/checks.d.ts +0 -6
- package/dist/adapters/github/tools/checks.d.ts.map +1 -1
- package/dist/adapters/github/tools/checks.js +0 -7
- package/dist/adapters/github/tools/checks.js.map +1 -1
- package/dist/adapters/github/tools/issue.d.ts +0 -5
- package/dist/adapters/github/tools/issue.d.ts.map +1 -1
- package/dist/adapters/github/tools/issue.js +0 -5
- package/dist/adapters/github/tools/issue.js.map +1 -1
- package/dist/adapters/github/tools/pr.d.ts +0 -7
- package/dist/adapters/github/tools/pr.d.ts.map +1 -1
- package/dist/adapters/github/tools/pr.js +0 -7
- package/dist/adapters/github/tools/pr.js.map +1 -1
- package/dist/adapters/github/tools/read.d.ts +0 -6
- package/dist/adapters/github/tools/read.d.ts.map +1 -1
- package/dist/adapters/github/tools/read.js +0 -8
- package/dist/adapters/github/tools/read.js.map +1 -1
- package/dist/adapters/github/tools/review-reply.d.ts +0 -5
- package/dist/adapters/github/tools/review-reply.d.ts.map +1 -1
- package/dist/adapters/github/tools/review-reply.js +0 -5
- package/dist/adapters/github/tools/review-reply.js.map +1 -1
- package/dist/adapters/github/tools/sync.d.ts +0 -6
- package/dist/adapters/github/tools/sync.d.ts.map +1 -1
- package/dist/adapters/github/tools/sync.js +0 -6
- package/dist/adapters/github/tools/sync.js.map +1 -1
- package/dist/adapters/github/types.d.ts +0 -88
- package/dist/adapters/github/types.d.ts.map +1 -1
- package/dist/adapters/github/types.js.map +1 -1
- package/dist/adapters/github/webhook.d.ts +0 -13
- package/dist/adapters/github/webhook.d.ts.map +1 -1
- package/dist/adapters/github/webhook.js +0 -16
- package/dist/adapters/github/webhook.js.map +1 -1
- package/dist/adapters/index.d.ts +3 -4
- package/dist/adapters/index.d.ts.map +1 -1
- package/dist/adapters/index.js +4 -4
- package/dist/adapters/index.js.map +1 -1
- package/dist/adapters/intake.d.ts +0 -17
- package/dist/adapters/intake.d.ts.map +1 -1
- package/dist/adapters/intake.js +6 -32
- package/dist/adapters/intake.js.map +1 -1
- package/dist/adapters/markdown-tables.d.ts +0 -10
- package/dist/adapters/markdown-tables.d.ts.map +1 -1
- package/dist/adapters/markdown-tables.js +1 -42
- package/dist/adapters/markdown-tables.js.map +1 -1
- package/dist/adapters/progressive-renderer.d.ts.map +1 -1
- package/dist/adapters/progressive-renderer.js +3 -25
- package/dist/adapters/progressive-renderer.js.map +1 -1
- package/dist/adapters/shared.d.ts +0 -57
- package/dist/adapters/shared.d.ts.map +1 -1
- package/dist/adapters/shared.js +0 -71
- package/dist/adapters/shared.js.map +1 -1
- package/dist/adapters/slack/assistant.d.ts +0 -49
- package/dist/adapters/slack/assistant.d.ts.map +1 -1
- package/dist/adapters/slack/assistant.js +0 -97
- package/dist/adapters/slack/assistant.js.map +1 -1
- package/dist/adapters/slack/auto-reply-context.d.ts +0 -7
- package/dist/adapters/slack/auto-reply-context.d.ts.map +1 -1
- package/dist/adapters/slack/auto-reply-context.js +0 -7
- package/dist/adapters/slack/auto-reply-context.js.map +1 -1
- package/dist/adapters/slack/blocks.d.ts +0 -9
- package/dist/adapters/slack/blocks.d.ts.map +1 -1
- package/dist/adapters/slack/blocks.js +0 -20
- package/dist/adapters/slack/blocks.js.map +1 -1
- package/dist/adapters/slack/bot.d.ts +0 -116
- package/dist/adapters/slack/bot.d.ts.map +1 -1
- package/dist/adapters/slack/bot.js +7 -231
- 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 +1 -3
- package/dist/adapters/slack/context.js.map +1 -1
- package/dist/adapters/slack/jev-context.d.ts +0 -13
- package/dist/adapters/slack/jev-context.d.ts.map +1 -1
- package/dist/adapters/slack/jev-context.js +0 -12
- package/dist/adapters/slack/jev-context.js.map +1 -1
- package/dist/adapters/slack/markdown.d.ts +0 -1
- package/dist/adapters/slack/markdown.d.ts.map +1 -1
- package/dist/adapters/slack/markdown.js +0 -5
- package/dist/adapters/slack/markdown.js.map +1 -1
- package/dist/adapters/slack/persona.d.ts +0 -9
- package/dist/adapters/slack/persona.d.ts.map +1 -1
- package/dist/adapters/slack/persona.js +0 -9
- package/dist/adapters/slack/persona.js.map +1 -1
- package/dist/adapters/slack/response-lifecycle.d.ts.map +1 -1
- package/dist/adapters/slack/response-lifecycle.js +1 -45
- package/dist/adapters/slack/response-lifecycle.js.map +1 -1
- package/dist/adapters/slack/session.d.ts +2 -1
- package/dist/adapters/slack/session.d.ts.map +1 -1
- package/dist/adapters/slack/session.js +2 -2
- package/dist/adapters/slack/session.js.map +1 -1
- package/dist/adapters/slack/stream-limits.d.ts +0 -25
- package/dist/adapters/slack/stream-limits.d.ts.map +1 -1
- package/dist/adapters/slack/stream-limits.js +0 -34
- package/dist/adapters/slack/stream-limits.js.map +1 -1
- package/dist/adapters/slack/task-intent.d.ts +0 -13
- package/dist/adapters/slack/task-intent.d.ts.map +1 -1
- package/dist/adapters/slack/task-intent.js +0 -7
- package/dist/adapters/slack/task-intent.js.map +1 -1
- package/dist/adapters/slack/task-status.d.ts +0 -1
- package/dist/adapters/slack/task-status.d.ts.map +1 -1
- package/dist/adapters/slack/task-status.js +1 -9
- package/dist/adapters/slack/task-status.js.map +1 -1
- package/dist/adapters/slack/tool-pack.d.ts +0 -6
- package/dist/adapters/slack/tool-pack.d.ts.map +1 -1
- package/dist/adapters/slack/tool-pack.js +0 -6
- package/dist/adapters/slack/tool-pack.js.map +1 -1
- package/dist/adapters/slack/tools/blockkit.d.ts.map +1 -1
- package/dist/adapters/slack/tools/blockkit.js +0 -11
- package/dist/adapters/slack/tools/blockkit.js.map +1 -1
- package/dist/adapters/slack/types.d.ts +0 -19
- package/dist/adapters/slack/types.d.ts.map +1 -1
- package/dist/adapters/slack/types.js.map +1 -1
- package/dist/adapters/slack/update-diagnostics.d.ts +0 -1
- package/dist/adapters/slack/update-diagnostics.d.ts.map +1 -1
- package/dist/adapters/slack/update-diagnostics.js +1 -7
- package/dist/adapters/slack/update-diagnostics.js.map +1 -1
- package/dist/adapters/telegram/bot.d.ts +0 -6
- package/dist/adapters/telegram/bot.d.ts.map +1 -1
- package/dist/adapters/telegram/bot.js +1 -50
- 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 +1 -8
- package/dist/adapters/telegram/context.js.map +1 -1
- package/dist/adapters/types.d.ts +0 -57
- package/dist/adapters/types.d.ts.map +1 -1
- package/dist/adapters/types.js.map +1 -1
- package/dist/adapters/web/admin/client-assets.d.ts +4 -0
- package/dist/adapters/web/admin/client-assets.d.ts.map +1 -0
- package/dist/adapters/web/admin/client-assets.js +1765 -0
- package/dist/adapters/web/admin/client-assets.js.map +1 -0
- package/dist/adapters/web/admin/portal.d.ts +0 -10
- package/dist/adapters/web/admin/portal.d.ts.map +1 -1
- package/dist/adapters/web/admin/portal.js +6 -1909
- package/dist/adapters/web/admin/portal.js.map +1 -1
- package/dist/adapters/web/admin/types.d.ts +0 -3
- package/dist/adapters/web/admin/types.d.ts.map +1 -1
- package/dist/adapters/web/admin/types.js.map +1 -1
- package/dist/adapters/web/login/oauth.d.ts.map +1 -1
- package/dist/adapters/web/login/oauth.js +3 -7
- package/dist/adapters/web/login/oauth.js.map +1 -1
- package/dist/adapters/web/login/portal.d.ts +0 -10
- package/dist/adapters/web/login/portal.d.ts.map +1 -1
- package/dist/adapters/web/login/portal.js +4 -37
- package/dist/adapters/web/login/portal.js.map +1 -1
- package/dist/adapters/web/login/types.d.ts +0 -5
- package/dist/adapters/web/login/types.d.ts.map +1 -1
- package/dist/adapters/web/login/types.js.map +1 -1
- package/dist/adapters/web/portal-shell.d.ts +0 -12
- package/dist/adapters/web/portal-shell.d.ts.map +1 -1
- package/dist/adapters/web/portal-shell.js +8 -25
- package/dist/adapters/web/portal-shell.js.map +1 -1
- package/dist/adapters/web/server.d.ts +0 -1
- package/dist/adapters/web/server.d.ts.map +1 -1
- package/dist/adapters/web/server.js +0 -2
- package/dist/adapters/web/server.js.map +1 -1
- package/dist/adapters/web/session-view/portal.d.ts.map +1 -1
- package/dist/adapters/web/session-view/portal.js +13 -24
- package/dist/adapters/web/session-view/portal.js.map +1 -1
- package/dist/adapters/web/session-view/types.d.ts.map +1 -1
- package/dist/adapters/web/session-view/types.js.map +1 -1
- package/dist/adapters/web/token-store.d.ts +0 -2
- package/dist/adapters/web/token-store.d.ts.map +1 -1
- package/dist/adapters/web/token-store.js +0 -2
- package/dist/adapters/web/token-store.js.map +1 -1
- package/dist/cli/arg-grammar.d.ts +0 -3
- package/dist/cli/arg-grammar.d.ts.map +1 -1
- package/dist/cli/arg-grammar.js +0 -3
- package/dist/cli/arg-grammar.js.map +1 -1
- package/dist/cli/boot.d.ts.map +1 -1
- package/dist/cli/boot.js +3 -12
- package/dist/cli/boot.js.map +1 -1
- package/dist/cli/download.d.ts.map +1 -1
- package/dist/cli/download.js +2 -6
- package/dist/cli/download.js.map +1 -1
- package/dist/cli/office.d.ts.map +1 -1
- package/dist/cli/office.js +0 -31
- package/dist/cli/office.js.map +1 -1
- package/dist/cli/onboard.d.ts +0 -2
- package/dist/cli/onboard.d.ts.map +1 -1
- package/dist/cli/onboard.js +0 -30
- package/dist/cli/onboard.js.map +1 -1
- package/dist/cli/process-lifecycle.d.ts +0 -5
- package/dist/cli/process-lifecycle.d.ts.map +1 -1
- package/dist/cli/process-lifecycle.js +0 -6
- package/dist/cli/process-lifecycle.js.map +1 -1
- package/dist/cli/sandbox.d.ts +3 -0
- package/dist/cli/sandbox.d.ts.map +1 -0
- package/dist/cli/sandbox.js +79 -0
- package/dist/cli/sandbox.js.map +1 -0
- package/dist/cli/sessions.d.ts.map +1 -1
- package/dist/cli/sessions.js +0 -11
- package/dist/cli/sessions.js.map +1 -1
- package/dist/cli/types.d.ts +2 -6
- package/dist/cli/types.d.ts.map +1 -1
- package/dist/cli/types.js.map +1 -1
- package/dist/env-manifest.d.ts +0 -21
- package/dist/env-manifest.d.ts.map +1 -1
- package/dist/env-manifest.js +0 -11
- package/dist/env-manifest.js.map +1 -1
- package/dist/events/index.d.ts +0 -51
- package/dist/events/index.d.ts.map +1 -1
- package/dist/events/index.js +0 -42
- package/dist/events/index.js.map +1 -1
- package/dist/events/scheduler.d.ts +0 -8
- package/dist/events/scheduler.d.ts.map +1 -1
- package/dist/events/scheduler.js +0 -8
- package/dist/events/scheduler.js.map +1 -1
- package/dist/file-guards.d.ts +0 -15
- package/dist/file-guards.d.ts.map +1 -1
- package/dist/file-guards.js +2 -26
- package/dist/file-guards.js.map +1 -1
- package/dist/harness/execution-env.d.ts +0 -15
- package/dist/harness/execution-env.d.ts.map +1 -1
- package/dist/harness/execution-env.js +4 -55
- package/dist/harness/execution-env.js.map +1 -1
- package/dist/harness/http.d.ts +0 -12
- package/dist/harness/http.d.ts.map +1 -1
- package/dist/harness/http.js +0 -34
- package/dist/harness/http.js.map +1 -1
- package/dist/harness/index.d.ts +4 -7
- package/dist/harness/index.d.ts.map +1 -1
- package/dist/harness/index.js +4 -7
- package/dist/harness/index.js.map +1 -1
- package/dist/harness/jev.d.ts +0 -28
- package/dist/harness/jev.d.ts.map +1 -1
- package/dist/harness/jev.js +0 -45
- package/dist/harness/jev.js.map +1 -1
- package/dist/harness/mcp-result.d.ts +20 -0
- package/dist/harness/mcp-result.d.ts.map +1 -0
- package/dist/harness/mcp-result.js +171 -0
- package/dist/harness/mcp-result.js.map +1 -0
- package/dist/harness/mcp.d.ts +0 -19
- package/dist/harness/mcp.d.ts.map +1 -1
- package/dist/harness/mcp.js +7 -66
- package/dist/harness/mcp.js.map +1 -1
- package/dist/harness/models.d.ts +0 -19
- package/dist/harness/models.d.ts.map +1 -1
- package/dist/harness/models.js +0 -52
- package/dist/harness/models.js.map +1 -1
- package/dist/harness/open-connector.d.ts +0 -12
- package/dist/harness/open-connector.d.ts.map +1 -1
- package/dist/harness/open-connector.js +0 -22
- package/dist/harness/open-connector.js.map +1 -1
- package/dist/harness/presenter.d.ts +1 -0
- package/dist/harness/presenter.d.ts.map +1 -1
- package/dist/harness/presenter.js +16 -66
- package/dist/harness/presenter.js.map +1 -1
- package/dist/harness/prompt.d.ts +0 -11
- package/dist/harness/prompt.d.ts.map +1 -1
- package/dist/harness/prompt.js +1 -18
- package/dist/harness/prompt.js.map +1 -1
- package/dist/harness/runner.d.ts.map +1 -1
- package/dist/harness/runner.js +8 -28
- package/dist/harness/runner.js.map +1 -1
- package/dist/harness/session.d.ts +11 -28
- package/dist/harness/session.d.ts.map +1 -1
- package/dist/harness/session.js +100 -38
- package/dist/harness/session.js.map +1 -1
- package/dist/harness/skills.d.ts +0 -22
- package/dist/harness/skills.d.ts.map +1 -1
- package/dist/harness/skills.js +0 -20
- package/dist/harness/skills.js.map +1 -1
- package/dist/harness/subagent-profiles.d.ts +0 -4
- package/dist/harness/subagent-profiles.d.ts.map +1 -1
- package/dist/harness/subagent-profiles.js +0 -29
- package/dist/harness/subagent-profiles.js.map +1 -1
- package/dist/harness/subagent.d.ts +0 -25
- package/dist/harness/subagent.d.ts.map +1 -1
- package/dist/harness/subagent.js +1 -70
- package/dist/harness/subagent.js.map +1 -1
- package/dist/harness/tools/event.d.ts.map +1 -1
- package/dist/harness/tools/event.js +0 -9
- package/dist/harness/tools/event.js.map +1 -1
- package/dist/harness/tools/generate-image.d.ts +0 -6
- package/dist/harness/tools/generate-image.d.ts.map +1 -1
- package/dist/harness/tools/generate-image.js.map +1 -1
- package/dist/harness/tools/host-fn-tool.d.ts +0 -17
- package/dist/harness/tools/host-fn-tool.d.ts.map +1 -1
- package/dist/harness/tools/host-fn-tool.js +0 -16
- package/dist/harness/tools/host-fn-tool.js.map +1 -1
- package/dist/harness/tools/index.d.ts +1 -7
- package/dist/harness/tools/index.d.ts.map +1 -1
- package/dist/harness/tools/index.js +3 -14
- package/dist/harness/tools/index.js.map +1 -1
- package/dist/harness/tools/jev-browser.d.ts +4 -94
- package/dist/harness/tools/jev-browser.d.ts.map +1 -1
- package/dist/harness/tools/jev-browser.js +203 -92
- package/dist/harness/tools/jev-browser.js.map +1 -1
- package/dist/harness/tools/jev.d.ts +0 -8
- package/dist/harness/tools/jev.d.ts.map +1 -1
- package/dist/harness/tools/jev.js +0 -11
- package/dist/harness/tools/jev.js.map +1 -1
- package/dist/harness/tools/pi-tools.d.ts +1 -11
- package/dist/harness/tools/pi-tools.d.ts.map +1 -1
- package/dist/harness/tools/pi-tools.js +1 -30
- package/dist/harness/tools/pi-tools.js.map +1 -1
- package/dist/harness/tools/react.d.ts +0 -5
- package/dist/harness/tools/react.d.ts.map +1 -1
- package/dist/harness/tools/react.js +0 -5
- package/dist/harness/tools/react.js.map +1 -1
- package/dist/harness/tools/secret-redaction.d.ts +0 -25
- package/dist/harness/tools/secret-redaction.d.ts.map +1 -1
- package/dist/harness/tools/secret-redaction.js +3 -36
- package/dist/harness/tools/secret-redaction.js.map +1 -1
- package/dist/harness/tools/subagent.d.ts +0 -34
- package/dist/harness/tools/subagent.d.ts.map +1 -1
- package/dist/harness/tools/subagent.js +0 -92
- package/dist/harness/tools/subagent.js.map +1 -1
- package/dist/harness/tools/task.d.ts +0 -1
- package/dist/harness/tools/task.d.ts.map +1 -1
- package/dist/harness/tools/task.js +0 -1
- package/dist/harness/tools/task.js.map +1 -1
- package/dist/harness/tools/types.d.ts +0 -16
- package/dist/harness/tools/types.d.ts.map +1 -1
- package/dist/harness/tools/types.js.map +1 -1
- package/dist/harness/types.d.ts +1 -77
- package/dist/harness/types.d.ts.map +1 -1
- package/dist/harness/types.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -2
- package/dist/index.js.map +1 -1
- package/dist/log.d.ts.map +1 -1
- package/dist/log.js +0 -13
- package/dist/log.js.map +1 -1
- package/dist/main.js +7 -52
- package/dist/main.js.map +1 -1
- package/dist/memory-capture/index.d.ts +16 -0
- package/dist/memory-capture/index.d.ts.map +1 -0
- package/dist/memory-capture/index.js +194 -0
- package/dist/memory-capture/index.js.map +1 -0
- package/dist/memory-capture/types.d.ts +27 -0
- package/dist/memory-capture/types.d.ts.map +1 -0
- package/dist/memory-capture/types.js.map +1 -0
- package/dist/observability/index.d.ts +0 -9
- package/dist/observability/index.d.ts.map +1 -1
- package/dist/observability/index.js +0 -9
- package/dist/observability/index.js.map +1 -1
- package/dist/observability/instrument.js +0 -5
- package/dist/observability/instrument.js.map +1 -1
- package/dist/observability/otel.js +0 -1
- package/dist/observability/otel.js.map +1 -1
- package/dist/observability/sentry.d.ts +0 -18
- package/dist/observability/sentry.d.ts.map +1 -1
- package/dist/observability/sentry.js +0 -36
- package/dist/observability/sentry.js.map +1 -1
- package/dist/observability/types.d.ts +1 -10
- package/dist/observability/types.d.ts.map +1 -1
- package/dist/observability/types.js.map +1 -1
- package/dist/office/index.d.ts +0 -76
- package/dist/office/index.d.ts.map +1 -1
- package/dist/office/index.js +4 -154
- package/dist/office/index.js.map +1 -1
- package/dist/office/projection.d.ts +0 -29
- package/dist/office/projection.d.ts.map +1 -1
- package/dist/office/projection.js +5 -41
- package/dist/office/projection.js.map +1 -1
- package/dist/office/types.d.ts +0 -66
- package/dist/office/types.d.ts.map +1 -1
- package/dist/office/types.js.map +1 -1
- package/dist/runtime/conversation-runtime.d.ts.map +1 -1
- package/dist/runtime/conversation-runtime.js +22 -83
- package/dist/runtime/conversation-runtime.js.map +1 -1
- package/dist/runtime/session-lifecycle.d.ts +0 -10
- package/dist/runtime/session-lifecycle.d.ts.map +1 -1
- package/dist/runtime/session-lifecycle.js +0 -12
- package/dist/runtime/session-lifecycle.js.map +1 -1
- package/dist/runtime/types.d.ts +2 -29
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/runtime/types.js.map +1 -1
- package/dist/sandbox/cloudflare.d.ts.map +1 -1
- package/dist/sandbox/cloudflare.js +2 -1
- package/dist/sandbox/cloudflare.js.map +1 -1
- package/dist/sandbox/container.d.ts.map +1 -1
- package/dist/sandbox/container.js +21 -15
- package/dist/sandbox/container.js.map +1 -1
- package/dist/sandbox/host.d.ts.map +1 -1
- package/dist/sandbox/host.js +0 -2
- package/dist/sandbox/host.js.map +1 -1
- package/dist/sandbox/identity.d.ts +0 -28
- package/dist/sandbox/identity.d.ts.map +1 -1
- package/dist/sandbox/identity.js +0 -28
- package/dist/sandbox/identity.js.map +1 -1
- package/dist/sandbox/index.d.ts +0 -18
- package/dist/sandbox/index.d.ts.map +1 -1
- package/dist/sandbox/index.js +2 -19
- package/dist/sandbox/index.js.map +1 -1
- package/dist/sandbox/layout.d.ts +7 -0
- package/dist/sandbox/layout.d.ts.map +1 -0
- package/dist/sandbox/layout.js +13 -0
- package/dist/sandbox/layout.js.map +1 -0
- package/dist/sandbox/provisioner.d.ts +24 -65
- package/dist/sandbox/provisioner.d.ts.map +1 -1
- package/dist/sandbox/provisioner.js +213 -125
- package/dist/sandbox/provisioner.js.map +1 -1
- package/dist/sandbox/types.d.ts +0 -39
- package/dist/sandbox/types.d.ts.map +1 -1
- package/dist/sandbox/types.js.map +1 -1
- package/dist/sandbox/utils.d.ts +2 -5
- package/dist/sandbox/utils.d.ts.map +1 -1
- package/dist/sandbox/utils.js +31 -31
- package/dist/sandbox/utils.js.map +1 -1
- package/dist/sessions/chat-history-sync.d.ts +0 -6
- package/dist/sessions/chat-history-sync.d.ts.map +1 -1
- package/dist/sessions/chat-history-sync.js +1 -33
- package/dist/sessions/chat-history-sync.js.map +1 -1
- package/dist/sessions/history-line.d.ts +0 -20
- package/dist/sessions/history-line.d.ts.map +1 -1
- package/dist/sessions/history-line.js +0 -20
- package/dist/sessions/history-line.js.map +1 -1
- package/dist/sessions/migrate-common.d.ts +0 -15
- package/dist/sessions/migrate-common.d.ts.map +1 -1
- package/dist/sessions/migrate-common.js +0 -19
- package/dist/sessions/migrate-common.js.map +1 -1
- package/dist/sessions/migrate-pi-084.d.ts.map +1 -1
- package/dist/sessions/migrate-pi-084.js +0 -7
- package/dist/sessions/migrate-pi-084.js.map +1 -1
- package/dist/sessions/migrate-v3.d.ts +0 -7
- package/dist/sessions/migrate-v3.d.ts.map +1 -1
- package/dist/sessions/migrate-v3.js +1 -67
- package/dist/sessions/migrate-v3.js.map +1 -1
- package/dist/sessions/session-key.d.ts +3 -17
- package/dist/sessions/session-key.d.ts.map +1 -1
- package/dist/sessions/session-key.js +8 -35
- package/dist/sessions/session-key.js.map +1 -1
- package/dist/sessions/session-store.d.ts +1 -7
- package/dist/sessions/session-store.d.ts.map +1 -1
- package/dist/sessions/session-store.js +8 -50
- package/dist/sessions/session-store.js.map +1 -1
- package/dist/sessions/store.d.ts +0 -60
- package/dist/sessions/store.d.ts.map +1 -1
- package/dist/sessions/store.js +0 -113
- package/dist/sessions/store.js.map +1 -1
- package/dist/sessions/types.d.ts +0 -17
- package/dist/sessions/types.d.ts.map +1 -1
- package/dist/sessions/types.js.map +1 -1
- package/dist/settings/apply.d.ts +0 -6
- package/dist/settings/apply.d.ts.map +1 -1
- package/dist/settings/apply.js +0 -29
- package/dist/settings/apply.js.map +1 -1
- package/dist/settings/index.d.ts +0 -53
- package/dist/settings/index.d.ts.map +1 -1
- package/dist/settings/index.js +0 -77
- package/dist/settings/index.js.map +1 -1
- package/dist/settings/migrate.d.ts +0 -5
- package/dist/settings/migrate.d.ts.map +1 -1
- package/dist/settings/migrate.js +0 -17
- package/dist/settings/migrate.js.map +1 -1
- package/dist/types.d.ts +9 -159
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/vault/index.d.ts +2 -36
- package/dist/vault/index.d.ts.map +1 -1
- package/dist/vault/index.js +135 -65
- package/dist/vault/index.js.map +1 -1
- package/dist/vault/types.d.ts +0 -15
- package/dist/vault/types.d.ts.map +1 -1
- package/dist/vault/types.js.map +1 -1
- package/package.json +1 -1
- package/dist/dream/index.d.ts +0 -20
- package/dist/dream/index.d.ts.map +0 -1
- package/dist/dream/index.js +0 -264
- package/dist/dream/index.js.map +0 -1
- package/dist/dream/types.d.ts +0 -30
- package/dist/dream/types.d.ts.map +0 -1
- package/dist/dream/types.js.map +0 -1
- /package/dist/{dream → memory-capture}/types.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/adapters/web/session-view/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/adapters/web/session-view/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,WAAW,6BAA6B;IAC5C,OAAO,EAAE,qBAAqB,CAAC;IAC/B,cAAc,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;CACvD;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,MAAM,GAAG,QAAQ,CAAC;IAC/C,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,SAAS,GAAG,IAAI,GAAG,KAAK,GAAG,OAAO,CAAC;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,mBAAmB,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,OAAO,EAAE,mBAAmB,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,EAAE,YAAY,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,gBAAiB,SAAQ,WAAW;IACnD,QAAQ,EAAE,YAAY,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/adapters/web/session-view/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { MessagingEventHandler } from \"../../index.js\";\nimport type { MessagingBot } from \"../../index.js\";\nimport type { PlatformName } from \"../../index.js\";\nimport type { TokenRecord } from \"../types.js\";\n\
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/adapters/web/session-view/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { MessagingEventHandler } from \"../../index.js\";\nimport type { MessagingBot } from \"../../index.js\";\nimport type { PlatformName } from \"../../index.js\";\nimport type { TokenRecord } from \"../types.js\";\n\nexport interface SessionViewInteractiveOptions {\n handler: MessagingEventHandler;\n botsByPlatform: Partial<Record<string, MessagingBot>>;\n}\n\nexport interface SessionViewItem {\n kind: \"user\" | \"assistant\" | \"tool\" | \"system\";\n title: string;\n body?: string;\n meta?: string;\n tone?: \"default\" | \"ok\" | \"err\" | \"muted\";\n entryId?: string;\n threads?: SessionViewRelation[];\n}\n\nexport interface SessionViewRelation {\n kind: \"parent\" | \"thread\";\n fileName: string;\n sessionId: string;\n title: string;\n updatedAt: string;\n entryCount: number;\n summary?: string;\n anchorEntryId?: string;\n}\n\nexport interface SessionViewModel {\n sessionId: string;\n fileName: string;\n title: string;\n createdAt: string;\n updatedAt: string;\n entryCount: number;\n items: SessionViewItem[];\n parent?: SessionViewRelation;\n threads: SessionViewRelation[];\n}\n\nexport interface SessionViewTokenCreateOptions {\n platform: PlatformName;\n platformUserId: string;\n conversationId: string;\n sessionKey: string;\n sessionFile: string;\n platformUserName?: string;\n}\n\nexport interface SessionViewToken extends TokenRecord {\n platform: PlatformName;\n platformUserId: string;\n platformUserName?: string;\n conversationId: string;\n sessionKey: string;\n sessionFile: string;\n}\n"]}
|
|
@@ -5,9 +5,7 @@ export declare class InMemoryTokenStore<T extends TokenRecord> {
|
|
|
5
5
|
protected createRecord(ttlMs: number, data: Omit<T, keyof TokenRecord>): T;
|
|
6
6
|
protected deleteWhere(predicate: (record: T) => boolean): void;
|
|
7
7
|
peek(rawToken: string): T | undefined;
|
|
8
|
-
/** One-shot consume. Returns undefined if missing or expired. */
|
|
9
8
|
consume(rawToken: string): T | undefined;
|
|
10
|
-
/** Remove expired tokens. Call periodically to bound memory usage. */
|
|
11
9
|
purge(): void;
|
|
12
10
|
}
|
|
13
11
|
//# sourceMappingURL=token-store.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-store.d.ts","sourceRoot":"","sources":["../../../src/adapters/web/token-store.ts"],"names":[],"mappings":"AACA,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,qBAAa,kBAAkB,CAAC,CAAC,SAAS,WAAW;IACnD,SAAS,CAAC,QAAQ,CAAC,MAAM,iBAAwB;IAEjD,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM,WAAW,CAAC,GAAG,CAAC,CAKzE;IAED,SAAS,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,OAAO,GAAG,IAAI,CAI7D;IAED,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAIpC;IAED,
|
|
1
|
+
{"version":3,"file":"token-store.d.ts","sourceRoot":"","sources":["../../../src/adapters/web/token-store.ts"],"names":[],"mappings":"AACA,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,qBAAa,kBAAkB,CAAC,CAAC,SAAS,WAAW;IACnD,SAAS,CAAC,QAAQ,CAAC,MAAM,iBAAwB;IAEjD,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM,WAAW,CAAC,GAAG,CAAC,CAKzE;IAED,SAAS,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,OAAO,GAAG,IAAI,CAI7D;IAED,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAIpC;IAED,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAMvC;IAED,KAAK,IAAI,IAAI,CAOZ;CACF"}
|
|
@@ -21,7 +21,6 @@ export class InMemoryTokenStore {
|
|
|
21
21
|
return undefined;
|
|
22
22
|
return entry;
|
|
23
23
|
}
|
|
24
|
-
/** One-shot consume. Returns undefined if missing or expired. */
|
|
25
24
|
consume(rawToken) {
|
|
26
25
|
const entry = this.tokens.get(rawToken);
|
|
27
26
|
if (!entry)
|
|
@@ -31,7 +30,6 @@ export class InMemoryTokenStore {
|
|
|
31
30
|
return undefined;
|
|
32
31
|
return entry;
|
|
33
32
|
}
|
|
34
|
-
/** Remove expired tokens. Call periodically to bound memory usage. */
|
|
35
33
|
purge() {
|
|
36
34
|
const now = Date.now();
|
|
37
35
|
for (const [key, t] of this.tokens) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-store.js","sourceRoot":"","sources":["../../../src/adapters/web/token-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI1C,MAAM,OAAO,kBAAkB;IAA/B;QACqB,WAAM,GAAG,IAAI,GAAG,EAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"token-store.js","sourceRoot":"","sources":["../../../src/adapters/web/token-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI1C,MAAM,OAAO,kBAAkB;IAA/B;QACqB,WAAM,GAAG,IAAI,GAAG,EAAa,CAAC;IAqCnD,CAAC;IAnCW,YAAY,CAAC,KAAa,EAAE,IAAgC;QACpE,MAAM,KAAK,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,EAAO,CAAC;QACtE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC/B,OAAO,MAAM,CAAC;IAChB,CAAC;IAES,WAAW,CAAC,SAAiC;QACrD,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACxC,IAAI,SAAS,CAAC,MAAM,CAAC;gBAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAED,IAAI,CAAC,QAAgB;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS;YAAE,OAAO,SAAS,CAAC;QAC7D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,CAAC,QAAgB;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,CAAC,KAAK;YAAE,OAAO,SAAS,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC7B,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS;YAAE,OAAO,SAAS,CAAC;QACnD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,KAAK,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACnC,IAAI,GAAG,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC;gBACtB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;IACH,CAAC;CACF","sourcesContent":["import { randomBytes } from \"node:crypto\";\nexport type { TokenRecord } from \"./types.js\";\nimport type { TokenRecord } from \"./types.js\";\n\nexport class InMemoryTokenStore<T extends TokenRecord> {\n protected readonly tokens = new Map<string, T>();\n\n protected createRecord(ttlMs: number, data: Omit<T, keyof TokenRecord>): T {\n const token = randomBytes(16).toString(\"hex\");\n const record = { ...data, token, expiresAt: Date.now() + ttlMs } as T;\n this.tokens.set(token, record);\n return record;\n }\n\n protected deleteWhere(predicate: (record: T) => boolean): void {\n for (const [key, record] of this.tokens) {\n if (predicate(record)) this.tokens.delete(key);\n }\n }\n\n peek(rawToken: string): T | undefined {\n const entry = this.tokens.get(rawToken);\n if (!entry || Date.now() > entry.expiresAt) return undefined;\n return entry;\n }\n\n consume(rawToken: string): T | undefined {\n const entry = this.tokens.get(rawToken);\n if (!entry) return undefined;\n this.tokens.delete(rawToken);\n if (Date.now() > entry.expiresAt) return undefined;\n return entry;\n }\n\n purge(): void {\n const now = Date.now();\n for (const [key, t] of this.tokens) {\n if (now > t.expiresAt) {\n this.tokens.delete(key);\n }\n }\n }\n}\n"]}
|
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
import { Command } from "commander";
|
|
2
|
-
/** Keep parsing testable: callers own output and exit codes. */
|
|
3
2
|
export declare function cliCommand(name: string): Command;
|
|
4
3
|
export declare function nonEmptyValue(value: string): string;
|
|
5
4
|
export declare function commandExitCode(error: unknown, command: Command): number;
|
|
6
5
|
export declare function defaultStateDir(): string;
|
|
7
|
-
/** Early instrumentation probe: tolerate unrelated flags without loading boot. */
|
|
8
6
|
export declare function resolveStateDir(args?: string[], envValue?: string | undefined): string;
|
|
9
|
-
/** Boot has already folded argv into the environment at this point. */
|
|
10
7
|
export declare function effectiveStateDir(): string;
|
|
11
8
|
//# sourceMappingURL=arg-grammar.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"arg-grammar.d.ts","sourceRoot":"","sources":["../../src/cli/arg-grammar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAwC,MAAM,WAAW,CAAC;AAK1E,
|
|
1
|
+
{"version":3,"file":"arg-grammar.d.ts","sourceRoot":"","sources":["../../src/cli/arg-grammar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAwC,MAAM,WAAW,CAAC;AAK1E,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAQhD;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAKnD;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAIxE;AAED,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED,wBAAgB,eAAe,CAC7B,IAAI,GAAE,MAAM,EAA0B,EACtC,QAAQ,GAAE,MAAM,GAAG,SAAgC,GAClD,MAAM,CAaR;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C"}
|
package/dist/cli/arg-grammar.js
CHANGED
|
@@ -2,7 +2,6 @@ import { Command, CommanderError, InvalidArgumentError } from "commander";
|
|
|
2
2
|
import { homedir } from "node:os";
|
|
3
3
|
import { join, resolve } from "node:path";
|
|
4
4
|
import { readEnv } from "../env-manifest.js";
|
|
5
|
-
/** Keep parsing testable: callers own output and exit codes. */
|
|
6
5
|
export function cliCommand(name) {
|
|
7
6
|
return new Command(name)
|
|
8
7
|
.configureHelp({ showGlobalOptions: true })
|
|
@@ -28,7 +27,6 @@ export function commandExitCode(error, command) {
|
|
|
28
27
|
export function defaultStateDir() {
|
|
29
28
|
return join(homedir(), ".mikan");
|
|
30
29
|
}
|
|
31
|
-
/** Early instrumentation probe: tolerate unrelated flags without loading boot. */
|
|
32
30
|
export function resolveStateDir(args = process.argv.slice(2), envValue = readEnv("STATE_DIR")) {
|
|
33
31
|
const command = cliCommand("mikan")
|
|
34
32
|
.helpOption(false)
|
|
@@ -43,7 +41,6 @@ export function resolveStateDir(args = process.argv.slice(2), envValue = readEnv
|
|
|
43
41
|
? resolve(envValue)
|
|
44
42
|
: defaultStateDir();
|
|
45
43
|
}
|
|
46
|
-
/** Boot has already folded argv into the environment at this point. */
|
|
47
44
|
export function effectiveStateDir() {
|
|
48
45
|
return resolveStateDir([]);
|
|
49
46
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"arg-grammar.js","sourceRoot":"","sources":["../../src/cli/arg-grammar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAC1E,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,
|
|
1
|
+
{"version":3,"file":"arg-grammar.js","sourceRoot":"","sources":["../../src/cli/arg-grammar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAC1E,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;SACrB,aAAa,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC;SAC1C,YAAY,EAAE;SACd,eAAe,CAAC;QACf,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAC/C,QAAQ,EAAE,GAAG,EAAE,GAAE,CAAC;KACnB,CAAC,CAAC;AACP,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,oBAAoB,CAAC,2CAA2C,CAAC,CAAC;IAC9E,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAc,EAAE,OAAgB;IAC9D,IAAI,CAAC,CAAC,KAAK,YAAY,cAAc,CAAC;QAAE,MAAM,KAAK,CAAC;IACpD,IAAI,KAAK,CAAC,QAAQ,KAAK,CAAC;QAAE,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,OAAO,KAAK,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;IAC1F,OAAO,KAAK,CAAC,QAAQ,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,IAAI,GAAa,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EACtC,QAAQ,GAAuB,OAAO,CAAC,WAAW,CAAC;IAEnD,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;SAChC,UAAU,CAAC,KAAK,CAAC;SACjB,kBAAkB,EAAE;SACpB,oBAAoB,EAAE;SACtB,MAAM,CAAC,mBAAmB,EAAE,iBAAiB,EAAE,aAAa,CAAC,CAAC;IACjE,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IACtC,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,IAAI,EAAyB,CAAC;IAC3D,OAAO,QAAQ,KAAK,SAAS;QAC3B,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;QACnB,CAAC,CAAC,QAAQ;YACR,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;YACnB,CAAC,CAAC,eAAe,EAAE,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,OAAO,eAAe,CAAC,EAAE,CAAC,CAAC;AAC7B,CAAC","sourcesContent":["import { Command, CommanderError, InvalidArgumentError } from \"commander\";\nimport { homedir } from \"node:os\";\nimport { join, resolve } from \"node:path\";\nimport { readEnv } from \"../env-manifest.js\";\n\nexport function cliCommand(name: string): Command {\n return new Command(name)\n .configureHelp({ showGlobalOptions: true })\n .exitOverride()\n .configureOutput({\n writeOut: (text) => console.log(text.trimEnd()),\n writeErr: () => {},\n });\n}\n\nexport function nonEmptyValue(value: string): string {\n if (!value.trim() || value.startsWith(\"-\")) {\n throw new InvalidArgumentError(\"expected a non-empty value, not an option\");\n }\n return value;\n}\n\nexport function commandExitCode(error: unknown, command: Command): number {\n if (!(error instanceof CommanderError)) throw error;\n if (error.exitCode !== 0) console.error(`${error.message}\\n${command.helpInformation()}`);\n return error.exitCode;\n}\n\nexport function defaultStateDir(): string {\n return join(homedir(), \".mikan\");\n}\n\nexport function resolveStateDir(\n args: string[] = process.argv.slice(2),\n envValue: string | undefined = readEnv(\"STATE_DIR\"),\n): string {\n const command = cliCommand(\"mikan\")\n .helpOption(false)\n .allowUnknownOption()\n .allowExcessArguments()\n .option(\"--state-dir <dir>\", \"State directory\", nonEmptyValue);\n command.parse(args, { from: \"user\" });\n const { stateDir } = command.opts<{ stateDir?: string }>();\n return stateDir !== undefined\n ? resolve(stateDir)\n : envValue\n ? resolve(envValue)\n : defaultStateDir();\n}\n\nexport function effectiveStateDir(): string {\n return resolveStateDir([]);\n}\n"]}
|
package/dist/cli/boot.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"boot.d.ts","sourceRoot":"","sources":["../../src/cli/boot.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"boot.d.ts","sourceRoot":"","sources":["../../src/cli/boot.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG3C,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AA+B3C,wBAAgB,WAAW,CAAC,IAAI,GAAE,MAAM,EAA0B,GAAG,QAAQ,CAoB5E;AA0BD,wBAAgB,QAAQ,IAAI,MAAM,CAejC"}
|
package/dist/cli/boot.js
CHANGED
|
@@ -1,17 +1,8 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Boot resolution for the `mikan` binary: argv → a BootPlan saying which mode
|
|
3
|
-
* to run and with what configuration. Pure — no side effects, no exits — so
|
|
4
|
-
* the grammar that actually drives the daemon is testable without spawning a
|
|
5
|
-
* process; main.ts just executes the plan.
|
|
6
|
-
*
|
|
7
|
-
* Modes, highest priority first: `office`, `sessions`, `env` (own grammars, never
|
|
8
|
-
* flag-parsed here), `help`, `version`, `onboard`, `download`, `run`.
|
|
9
|
-
*/
|
|
10
1
|
import { join, resolve } from "node:path";
|
|
11
2
|
import { envSummaryLines } from "../env-manifest.js";
|
|
12
3
|
import { parseSandboxArg } from "../sandbox/index.js";
|
|
13
4
|
import { cliCommand, defaultStateDir, nonEmptyValue, resolveStateDir } from "./arg-grammar.js";
|
|
14
|
-
const SUBCOMMANDS = ["office", "sessions", "env"];
|
|
5
|
+
const SUBCOMMANDS = ["office", "sessions", "sandbox", "env"];
|
|
15
6
|
function bootCommand() {
|
|
16
7
|
return cliCommand("mikan")
|
|
17
8
|
.description("Multi-platform chat agent daemon")
|
|
@@ -32,8 +23,6 @@ export function resolveBoot(args = process.argv.slice(2)) {
|
|
|
32
23
|
const command = bootCommand();
|
|
33
24
|
command.parse(args, { from: "user" });
|
|
34
25
|
const options = command.opts();
|
|
35
|
-
// `onboard` counts as a subcommand only in first position; anywhere else it
|
|
36
|
-
// is an ordinary working-directory positional.
|
|
37
26
|
const onboardFirst = args[0] === "onboard";
|
|
38
27
|
const workingDirArg = (onboardFirst ? command.args.slice(1) : command.args).at(-1);
|
|
39
28
|
const downloadChannel = options.download;
|
|
@@ -57,6 +46,7 @@ function subcommandPlan(args) {
|
|
|
57
46
|
mode,
|
|
58
47
|
...(mode === "office" ? { officeArgs: args.slice(1) } : {}),
|
|
59
48
|
...(mode === "sessions" ? { sessionsArgs: args.slice(1) } : {}),
|
|
49
|
+
...(mode === "sandbox" ? { sandboxArgs: args.slice(1) } : {}),
|
|
60
50
|
stateDir,
|
|
61
51
|
workingDir: join(stateDir, "workspace"),
|
|
62
52
|
workingDirExplicit: false,
|
|
@@ -80,6 +70,7 @@ export function helpText() {
|
|
|
80
70
|
Commands:
|
|
81
71
|
mikan office <list|claim|migrate-openconnector|migrate-events|migrate-door-policy> Inspect offices, claim legacy directories, migrate legacy state.
|
|
82
72
|
mikan sessions migrate Migrate legacy sessions (stop the daemon first).
|
|
73
|
+
mikan sandbox <status|diff|migrate> --image <image> Inspect and upgrade image:* sandboxes (stop the daemon before migrate).
|
|
83
74
|
mikan env Show environment-variable inventory.
|
|
84
75
|
mikan onboard Interactive first-run setup.
|
|
85
76
|
|
package/dist/cli/boot.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"boot.js","sourceRoot":"","sources":["../../src/cli/boot.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"boot.js","sourceRoot":"","sources":["../../src/cli/boot.ts"],"names":[],"mappings":"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","sourcesContent":["import { join, resolve } from \"node:path\";\nimport { envSummaryLines } from \"../env-manifest.js\";\nimport { parseSandboxArg } from \"../sandbox/index.js\";\nimport type { BootPlan } from \"./types.js\";\nimport { cliCommand, defaultStateDir, nonEmptyValue, resolveStateDir } from \"./arg-grammar.js\";\n\nexport type { BootPlan } from \"./types.js\";\n\nconst SUBCOMMANDS = [\"office\", \"sessions\", \"sandbox\", \"env\"] as const;\n\ninterface BootOptions {\n stateDir?: string;\n sandbox?: string;\n download?: string;\n help?: boolean;\n version?: boolean;\n onboard?: boolean;\n}\n\nfunction bootCommand() {\n return cliCommand(\"mikan\")\n .description(\"Multi-platform chat agent daemon\")\n .helpOption(false)\n .argument(\"[working-directory...]\", \"Workspace directory (default: <state-dir>/workspace)\")\n .option(\"--state-dir <dir>\", \"State directory (default: ~/.mikan)\", nonEmptyValue)\n .option(\n \"--sandbox <spec>\",\n \"host | container:<name> | image:<image[:tag]> | cloudflare:<id>\",\n nonEmptyValue,\n )\n .option(\"--download <channel>\", \"Dump a Slack channel's history, then exit\", nonEmptyValue)\n .option(\"--onboard\", \"Interactive first-run setup (also: mikan onboard)\")\n .option(\"-v, --version\", \"Print version\")\n .option(\"-V\", \"Print version\")\n .option(\"-h, --help\", \"Show help\");\n}\n\nexport function resolveBoot(args: string[] = process.argv.slice(2)): BootPlan {\n const routed = subcommandPlan(args);\n if (routed) return routed;\n\n const command = bootCommand();\n command.parse(args, { from: \"user\" });\n const options = command.opts<BootOptions & { V?: boolean }>();\n const onboardFirst = args[0] === \"onboard\";\n const workingDirArg = (onboardFirst ? command.args.slice(1) : command.args).at(-1);\n const downloadChannel = options.download;\n const sandboxArg = options.sandbox;\n const stateDir = resolveStateDir(args);\n return {\n mode: bootMode({ ...options, version: options.version || options.V }, onboardFirst),\n stateDir,\n workingDir: workingDirArg ? resolve(workingDirArg) : join(stateDir, \"workspace\"),\n workingDirExplicit: workingDirArg !== undefined,\n sandbox: sandboxArg === undefined ? { type: \"host\" } : parseSandboxArg(sandboxArg),\n downloadChannel,\n };\n}\n\nfunction subcommandPlan(args: string[]): BootPlan | undefined {\n const mode = SUBCOMMANDS.find((name) => name === args[0]);\n if (!mode) return undefined;\n const stateDir = defaultStateDir();\n return {\n mode,\n ...(mode === \"office\" ? { officeArgs: args.slice(1) } : {}),\n ...(mode === \"sessions\" ? { sessionsArgs: args.slice(1) } : {}),\n ...(mode === \"sandbox\" ? { sandboxArgs: args.slice(1) } : {}),\n stateDir,\n workingDir: join(stateDir, \"workspace\"),\n workingDirExplicit: false,\n sandbox: { type: \"host\" },\n };\n}\n\nfunction bootMode(options: BootOptions, onboardFirst: boolean): BootPlan[\"mode\"] {\n if (options.help) return \"help\";\n if (options.version) return \"version\";\n if (onboardFirst || options.onboard) return \"onboard\";\n if (options.download) return \"download\";\n return \"run\";\n}\n\nexport function helpText(): string {\n return (\n bootCommand().helpInformation() +\n `\nCommands:\n mikan office <list|claim|migrate-openconnector|migrate-events|migrate-door-policy> Inspect offices, claim legacy directories, migrate legacy state.\n mikan sessions migrate Migrate legacy sessions (stop the daemon first).\n mikan sandbox <status|diff|migrate> --image <image> Inspect and upgrade image:* sandboxes (stop the daemon before migrate).\n mikan env Show environment-variable inventory.\n mikan onboard Interactive first-run setup.\n\nEnvironment (platform tokens select which chat adapters start):\n${envSummaryLines().join(\"\\n\")}\nRun mikan env for the full inventory.`\n );\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../../src/cli/download.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../../src/cli/download.ts"],"names":[],"mappings":"AA4BA,wBAAsB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAaxF"}
|
package/dist/cli/download.js
CHANGED
|
@@ -12,7 +12,6 @@ function formatMessage(ts, user, text, indent = "") {
|
|
|
12
12
|
const firstLine = `${indent}${prefix}${lines[0]}`;
|
|
13
13
|
if (lines.length === 1)
|
|
14
14
|
return firstLine;
|
|
15
|
-
// All continuation lines get same indent as content start
|
|
16
15
|
const contentIndent = indent + " ".repeat(prefix.length);
|
|
17
16
|
return [firstLine, ...lines.slice(1).map((l) => contentIndent + l)].join("\n");
|
|
18
17
|
}
|
|
@@ -22,12 +21,11 @@ export async function downloadChannel(channelId, botToken) {
|
|
|
22
21
|
const channelName = await resolveChannelName(client, channelId);
|
|
23
22
|
console.error(`Downloading history for #${channelName} (${channelId})...`);
|
|
24
23
|
const messages = await fetchHistory(client, channelId);
|
|
25
|
-
messages.reverse();
|
|
24
|
+
messages.reverse();
|
|
26
25
|
const threadReplies = await fetchThreadReplies(client, channelId, messages);
|
|
27
26
|
const totalReplies = printTranscript(messages, threadReplies);
|
|
28
27
|
console.error(`Done! ${messages.length} messages, ${totalReplies} thread replies`);
|
|
29
28
|
}
|
|
30
|
-
/** DM channels have no name; the id is the readable fallback. */
|
|
31
29
|
async function resolveChannelName(client, channelId) {
|
|
32
30
|
try {
|
|
33
31
|
const info = await client.conversations.info({ channel: channelId });
|
|
@@ -37,7 +35,6 @@ async function resolveChannelName(client, channelId) {
|
|
|
37
35
|
return channelId;
|
|
38
36
|
}
|
|
39
37
|
}
|
|
40
|
-
/** Drain one cursor-paginated Slack conversations endpoint, page by page. */
|
|
41
38
|
async function* pages(fetchPage) {
|
|
42
39
|
let cursor;
|
|
43
40
|
do {
|
|
@@ -69,11 +66,10 @@ async function fetchReplies(client, channelId, ts) {
|
|
|
69
66
|
const replies = [];
|
|
70
67
|
const fetchPage = (cursor) => client.conversations.replies({ channel: channelId, ts, limit: 200, cursor });
|
|
71
68
|
for await (const page of pages(fetchPage)) {
|
|
72
|
-
replies.push(...page.slice(1));
|
|
69
|
+
replies.push(...page.slice(1));
|
|
73
70
|
}
|
|
74
71
|
return replies;
|
|
75
72
|
}
|
|
76
|
-
/** Print every message with its thread replies indented underneath. */
|
|
77
73
|
function printTranscript(messages, threadReplies) {
|
|
78
74
|
let totalReplies = 0;
|
|
79
75
|
for (const message of messages) {
|
package/dist/cli/download.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"download.js","sourceRoot":"","sources":["../../src/cli/download.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAWrD,SAAS,QAAQ,CAAC,EAAU;IAC1B,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;IAC7C,OAAO,IAAI;SACR,WAAW,EAAE;SACb,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC;SACjB,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,aAAa,CAAC,EAAU,EAAE,IAAY,EAAE,IAAY,EAAE,MAAM,GAAG,EAAE;IACxE,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC;IAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,SAAS,GAAG,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAClD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACzC,
|
|
1
|
+
{"version":3,"file":"download.js","sourceRoot":"","sources":["../../src/cli/download.ts"],"names":[],"mappings":"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","sourcesContent":["import { LogLevel, WebClient } from \"@slack/web-api\";\n\ninterface Message {\n ts: string;\n user?: string;\n text?: string;\n thread_ts?: string;\n reply_count?: number;\n files?: Array<{ name: string; url_private?: string }>;\n}\n\nfunction formatTs(ts: string): string {\n const date = new Date(parseFloat(ts) * 1000);\n return date\n .toISOString()\n .replace(\"T\", \" \")\n .replace(/\\.\\d+Z$/, \"\");\n}\n\nfunction formatMessage(ts: string, user: string, text: string, indent = \"\"): string {\n const prefix = `[${formatTs(ts)}] ${user}: `;\n const lines = text.split(\"\\n\");\n const firstLine = `${indent}${prefix}${lines[0]}`;\n if (lines.length === 1) return firstLine;\n const contentIndent = indent + \" \".repeat(prefix.length);\n return [firstLine, ...lines.slice(1).map((l) => contentIndent + l)].join(\"\\n\");\n}\n\nexport async function downloadChannel(channelId: string, botToken: string): Promise<void> {\n const client = new WebClient(botToken, { logLevel: LogLevel.ERROR });\n\n console.error(`Fetching channel info for ${channelId}...`);\n const channelName = await resolveChannelName(client, channelId);\n console.error(`Downloading history for #${channelName} (${channelId})...`);\n\n const messages = await fetchHistory(client, channelId);\n messages.reverse();\n\n const threadReplies = await fetchThreadReplies(client, channelId, messages);\n const totalReplies = printTranscript(messages, threadReplies);\n console.error(`Done! ${messages.length} messages, ${totalReplies} thread replies`);\n}\n\nasync function resolveChannelName(client: WebClient, channelId: string): Promise<string> {\n try {\n const info = await client.conversations.info({ channel: channelId });\n return typeof info.channel?.name === \"string\" ? info.channel.name : channelId;\n } catch {\n return channelId;\n }\n}\n\ninterface Page {\n messages?: unknown[];\n response_metadata?: { next_cursor?: string };\n}\n\nasync function* pages(fetchPage: (cursor?: string) => Promise<Page>): AsyncGenerator<Message[]> {\n let cursor: string | undefined;\n do {\n const response = await fetchPage(cursor);\n yield (response.messages ?? []) as Message[];\n cursor = response.response_metadata?.next_cursor;\n } while (cursor);\n}\n\nasync function fetchHistory(client: WebClient, channelId: string): Promise<Message[]> {\n const messages: Message[] = [];\n const fetchPage = (cursor?: string) =>\n client.conversations.history({ channel: channelId, limit: 200, cursor });\n for await (const page of pages(fetchPage)) {\n messages.push(...page);\n console.error(` Fetched ${messages.length} messages...`);\n }\n return messages;\n}\n\nasync function fetchThreadReplies(\n client: WebClient,\n channelId: string,\n messages: readonly Message[],\n): Promise<Map<string, Message[]>> {\n const parents = messages.filter((message) => message.reply_count && message.reply_count > 0);\n console.error(`Fetching ${parents.length} threads...`);\n\n const threadReplies = new Map<string, Message[]>();\n for (const [index, parent] of parents.entries()) {\n console.error(` Thread ${index + 1}/${parents.length} (${parent.reply_count} replies)...`);\n threadReplies.set(parent.ts, await fetchReplies(client, channelId, parent.ts));\n }\n return threadReplies;\n}\n\nasync function fetchReplies(client: WebClient, channelId: string, ts: string): Promise<Message[]> {\n const replies: Message[] = [];\n const fetchPage = (cursor?: string) =>\n client.conversations.replies({ channel: channelId, ts, limit: 200, cursor });\n for await (const page of pages(fetchPage)) {\n replies.push(...page.slice(1));\n }\n return replies;\n}\n\nfunction printTranscript(\n messages: readonly Message[],\n threadReplies: ReadonlyMap<string, Message[]>,\n): number {\n let totalReplies = 0;\n for (const message of messages) {\n console.log(formatMessage(message.ts, message.user || \"unknown\", message.text || \"\"));\n for (const reply of threadReplies.get(message.ts) ?? []) {\n console.log(formatMessage(reply.ts, reply.user || \"unknown\", reply.text || \"\", \" \"));\n totalReplies++;\n }\n }\n return totalReplies;\n}\n"]}
|
package/dist/cli/office.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"office.d.ts","sourceRoot":"","sources":["../../src/cli/office.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"office.d.ts","sourceRoot":"","sources":["../../src/cli/office.ts"],"names":[],"mappings":"AASA,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAgEvD"}
|
package/dist/cli/office.js
CHANGED
|
@@ -1,33 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `mikan office` — inspect and claim conversation offices from the CLI.
|
|
3
|
-
*
|
|
4
|
-
* mikan office list [--state-dir <dir>] [--workspace <dir>]
|
|
5
|
-
* mikan office claim <conversationId> <platform> [--state-dir <dir>] [--workspace <dir>]
|
|
6
|
-
* mikan office migrate-openconnector [--state-dir <dir>] [--workspace <dir>]
|
|
7
|
-
* mikan office migrate-events [--state-dir <dir>] [--workspace <dir>]
|
|
8
|
-
* mikan office migrate-door-policy [--state-dir <dir>] [--workspace <dir>]
|
|
9
|
-
*
|
|
10
|
-
* `migrate-door-policy` removes the retired `sandbox.image.workspaceMount` and
|
|
11
|
-
* `sandbox.workspace` keys from the global and every office settings file
|
|
12
|
-
* (ADR 0008). Only an explicit shared-support `private` visibility is carried
|
|
13
|
-
* into `office.visibility`; nothing else is derived. Run it with the daemon
|
|
14
|
-
* stopped.
|
|
15
|
-
*
|
|
16
|
-
* `migrate-events` moves legacy `<workspace>/events/*.json` records into the
|
|
17
|
-
* owning office's host-only state (`conversations/<key>/events/`). Records
|
|
18
|
-
* without an attributable, registered owner stay put and are reported. Run it
|
|
19
|
-
* with the daemon stopped.
|
|
20
|
-
*
|
|
21
|
-
* `migrate-openconnector` converts legacy per-office
|
|
22
|
-
* `open-connector-runtime-token.json` files into ordinary conversation
|
|
23
|
-
* `mcpServers` entries for the current `OPENCONNECTOR_ENDPOINT`. Run it with
|
|
24
|
-
* the daemon stopped.
|
|
25
|
-
*
|
|
26
|
-
* `claim` records which platform owns a legacy raw-id conversation directory
|
|
27
|
-
* when several platforms are enabled and boot cannot infer ownership. The
|
|
28
|
-
* daemon performs the actual move on its next start. Run it with the daemon
|
|
29
|
-
* stopped so the directory is not moving under a live runtime.
|
|
30
|
-
*/
|
|
31
1
|
import { join, resolve } from "node:path";
|
|
32
2
|
import { assertPlatformName, OfficeRegistry } from "../office/index.js";
|
|
33
3
|
import { cliCommand, commandExitCode, nonEmptyValue, resolveStateDir } from "./arg-grammar.js";
|
|
@@ -109,7 +79,6 @@ function listOffices(stateDir) {
|
|
|
109
79
|
return 0;
|
|
110
80
|
}
|
|
111
81
|
function migrateDoorPolicy(stateDir, workspaceRoot) {
|
|
112
|
-
// Settings readers resolve the global file from the process state dir.
|
|
113
82
|
setEnvAliases("STATE_DIR", stateDir);
|
|
114
83
|
const report = migrateLegacyDoorPolicy(createWorkspace({ root: workspaceRoot, stateDir }));
|
|
115
84
|
console.log(report.global.length > 0
|
package/dist/cli/office.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"office.js","sourceRoot":"","sources":["../../src/cli/office.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * `mikan office` — inspect and claim conversation offices from the CLI.\n *\n * mikan office list [--state-dir <dir>] [--workspace <dir>]\n * mikan office claim <conversationId> <platform> [--state-dir <dir>] [--workspace <dir>]\n * mikan office migrate-openconnector [--state-dir <dir>] [--workspace <dir>]\n * mikan office migrate-events [--state-dir <dir>] [--workspace <dir>]\n * mikan office migrate-door-policy [--state-dir <dir>] [--workspace <dir>]\n *\n * `migrate-door-policy` removes the retired `sandbox.image.workspaceMount` and\n * `sandbox.workspace` keys from the global and every office settings file\n * (ADR 0008). Only an explicit shared-support `private` visibility is carried\n * into `office.visibility`; nothing else is derived. Run it with the daemon\n * stopped.\n *\n * `migrate-events` moves legacy `<workspace>/events/*.json` records into the\n * owning office's host-only state (`conversations/<key>/events/`). Records\n * without an attributable, registered owner stay put and are reported. Run it\n * with the daemon stopped.\n *\n * `migrate-openconnector` converts legacy per-office\n * `open-connector-runtime-token.json` files into ordinary conversation\n * `mcpServers` entries for the current `OPENCONNECTOR_ENDPOINT`. Run it with\n * the daemon stopped.\n *\n * `claim` records which platform owns a legacy raw-id conversation directory\n * when several platforms are enabled and boot cannot infer ownership. The\n * daemon performs the actual move on its next start. Run it with the daemon\n * stopped so the directory is not moving under a live runtime.\n */\nimport { join, resolve } from \"node:path\";\nimport { assertPlatformName, OfficeRegistry } from \"../office/index.js\";\nimport { cliCommand, commandExitCode, nonEmptyValue, resolveStateDir } from \"./arg-grammar.js\";\nimport { readEnv, setEnvAliases } from \"../env-manifest.js\";\nimport { migrateLegacyOpenConnectorTokens } from \"../harness/open-connector.js\";\nimport { migrateLegacyWorkspaceEvents } from \"../events/index.js\";\nimport { migrateLegacyDoorPolicy } from \"../settings/migrate.js\";\nimport { createWorkspace } from \"../office/index.js\";\n\nexport function runOfficeCommand(argv: string[]): number {\n const command = cliCommand(\"mikan office\")\n .description(\"Inspect conversation offices and claim legacy directories\")\n .option(\"--state-dir <dir>\", \"State directory\", nonEmptyValue)\n .option(\"--workspace <dir>\", \"Workspace directory\", nonEmptyValue);\n let result = 1;\n command\n .command(\"list\")\n .description(\"List registered offices\")\n .action(() => {\n result = listOffices(resolveStateDir(argv));\n });\n command\n .command(\"claim <conversationId> <platform>\")\n .description(\"Claim a legacy directory (stop the daemon first)\")\n .action((conversationId: string, platform: string) => {\n const stateDir = resolveStateDir(argv);\n const { workspace } = command.opts<{ workspace?: string }>();\n result = claimOffice(stateDir, workspace ? resolve(workspace) : join(stateDir, \"workspace\"), [\n conversationId,\n platform,\n ]);\n });\n command\n .command(\"migrate-openconnector\")\n .description(\n \"Convert legacy OpenConnector token files into MCP settings (stop the daemon first)\",\n )\n .action(() => {\n const stateDir = resolveStateDir(argv);\n const { workspace } = command.opts<{ workspace?: string }>();\n result = migrateOpenConnector(\n stateDir,\n workspace ? resolve(workspace) : join(stateDir, \"workspace\"),\n );\n });\n command\n .command(\"migrate-events\")\n .description(\"Move legacy workspace event files into office state (stop the daemon first)\")\n .action(() => {\n const stateDir = resolveStateDir(argv);\n const { workspace } = command.opts<{ workspace?: string }>();\n result = migrateEvents(\n stateDir,\n workspace ? resolve(workspace) : join(stateDir, \"workspace\"),\n );\n });\n command\n .command(\"migrate-door-policy\")\n .description(\"Remove retired door-policy settings (stop the daemon first)\")\n .action(() => {\n const stateDir = resolveStateDir(argv);\n const { workspace } = command.opts<{ workspace?: string }>();\n result = migrateDoorPolicy(\n stateDir,\n workspace ? resolve(workspace) : join(stateDir, \"workspace\"),\n );\n });\n try {\n command.parse(argv, { from: \"user\" });\n return result;\n } catch (error) {\n return commandExitCode(error, command);\n }\n}\n\nfunction listOffices(stateDir: string): number {\n const state = new OfficeRegistry(stateDir).getState();\n console.log(`Enabled platforms: ${state.enabledPlatforms.join(\", \") || \"(none)\"}`);\n console.log(`Offices (${state.offices.length}):`);\n for (const office of state.offices) {\n console.log(` ${office.platform} ${office.conversationId}`);\n }\n const pending = state.migrations.filter((record) => record.status !== \"committed\");\n if (pending.length > 0) {\n console.log(`Pending migrations (${pending.length}):`);\n for (const record of pending) {\n const error = record.error ? ` (${record.error})` : \"\";\n console.log(` ${record.status} ${record.rawConversationId}${error}`);\n }\n }\n return 0;\n}\n\nfunction migrateDoorPolicy(stateDir: string, workspaceRoot: string): number {\n // Settings readers resolve the global file from the process state dir.\n setEnvAliases(\"STATE_DIR\", stateDir);\n const report = migrateLegacyDoorPolicy(createWorkspace({ root: workspaceRoot, stateDir }));\n console.log(\n report.global.length > 0\n ? `Global settings: removed ${report.global.join(\", \")}`\n : \"Global settings: nothing to remove\",\n );\n console.log(`Offices changed: ${report.conversations.length}`);\n for (const entry of report.conversations) {\n const carried = entry.visibility ? ` (kept as office.visibility=${entry.visibility})` : \"\";\n console.log(` ${entry.key}: removed ${entry.removed.join(\", \")}${carried}`);\n }\n for (const entry of report.skipped) console.log(` skipped ${entry.key}: ${entry.reason}`);\n return report.skipped.length > 0 ? 1 : 0;\n}\n\nfunction migrateEvents(stateDir: string, workspaceRoot: string): number {\n try {\n const report = migrateLegacyWorkspaceEvents(createWorkspace({ root: workspaceRoot, stateDir }));\n console.log(`Migrated ${report.migrated.length} event file(s) into office state.`);\n for (const entry of report.migrated) console.log(` ${entry.filename} -> ${entry.key}`);\n for (const entry of report.skipped) console.log(` skipped ${entry.filename}: ${entry.reason}`);\n return 0;\n } catch (err) {\n console.error(err instanceof Error ? err.message : String(err));\n return 1;\n }\n}\n\nfunction migrateOpenConnector(stateDir: string, workspaceRoot: string): number {\n const endpoint = readEnv(\"OPENCONNECTOR_ENDPOINT\");\n if (!endpoint) {\n console.error(\"OPENCONNECTOR_ENDPOINT is not set; nothing to migrate to.\");\n return 1;\n }\n try {\n const report = migrateLegacyOpenConnectorTokens(stateDir, endpoint, workspaceRoot);\n console.log(`Migrated ${report.migrated.length} office token file(s) into settings.json.`);\n for (const entry of report.skipped) {\n console.log(` skipped ${entry.key}: ${entry.reason}`);\n }\n return 0;\n } catch (err) {\n console.error(err instanceof Error ? err.message : String(err));\n return 1;\n }\n}\n\nfunction claimOffice(stateDir: string, workspaceRoot: string, rest: string[]): number {\n const [rawConversationId, platform] = rest;\n if (!rawConversationId || !platform) return 1;\n try {\n const record = new OfficeRegistry(stateDir).prepareLegacyMigration({\n rawConversationId,\n sourceDir: join(workspaceRoot, rawConversationId),\n workspaceRoot,\n ownerPlatform: assertPlatformName(platform),\n });\n console.log(\n `Claimed ${record.rawConversationId} for ${record.ownerPlatform}; ` +\n \"the daemon migrates the directory on its next start.\",\n );\n return 0;\n } catch (err) {\n console.error(err instanceof Error ? err.message : String(err));\n return 1;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"office.js","sourceRoot":"","sources":["../../src/cli/office.ts"],"names":[],"mappings":"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","sourcesContent":["import { join, resolve } from \"node:path\";\nimport { assertPlatformName, OfficeRegistry } from \"../office/index.js\";\nimport { cliCommand, commandExitCode, nonEmptyValue, resolveStateDir } from \"./arg-grammar.js\";\nimport { readEnv, setEnvAliases } from \"../env-manifest.js\";\nimport { migrateLegacyOpenConnectorTokens } from \"../harness/open-connector.js\";\nimport { migrateLegacyWorkspaceEvents } from \"../events/index.js\";\nimport { migrateLegacyDoorPolicy } from \"../settings/migrate.js\";\nimport { createWorkspace } from \"../office/index.js\";\n\nexport function runOfficeCommand(argv: string[]): number {\n const command = cliCommand(\"mikan office\")\n .description(\"Inspect conversation offices and claim legacy directories\")\n .option(\"--state-dir <dir>\", \"State directory\", nonEmptyValue)\n .option(\"--workspace <dir>\", \"Workspace directory\", nonEmptyValue);\n let result = 1;\n command\n .command(\"list\")\n .description(\"List registered offices\")\n .action(() => {\n result = listOffices(resolveStateDir(argv));\n });\n command\n .command(\"claim <conversationId> <platform>\")\n .description(\"Claim a legacy directory (stop the daemon first)\")\n .action((conversationId: string, platform: string) => {\n const stateDir = resolveStateDir(argv);\n const { workspace } = command.opts<{ workspace?: string }>();\n result = claimOffice(stateDir, workspace ? resolve(workspace) : join(stateDir, \"workspace\"), [\n conversationId,\n platform,\n ]);\n });\n command\n .command(\"migrate-openconnector\")\n .description(\n \"Convert legacy OpenConnector token files into MCP settings (stop the daemon first)\",\n )\n .action(() => {\n const stateDir = resolveStateDir(argv);\n const { workspace } = command.opts<{ workspace?: string }>();\n result = migrateOpenConnector(\n stateDir,\n workspace ? resolve(workspace) : join(stateDir, \"workspace\"),\n );\n });\n command\n .command(\"migrate-events\")\n .description(\"Move legacy workspace event files into office state (stop the daemon first)\")\n .action(() => {\n const stateDir = resolveStateDir(argv);\n const { workspace } = command.opts<{ workspace?: string }>();\n result = migrateEvents(\n stateDir,\n workspace ? resolve(workspace) : join(stateDir, \"workspace\"),\n );\n });\n command\n .command(\"migrate-door-policy\")\n .description(\"Remove retired door-policy settings (stop the daemon first)\")\n .action(() => {\n const stateDir = resolveStateDir(argv);\n const { workspace } = command.opts<{ workspace?: string }>();\n result = migrateDoorPolicy(\n stateDir,\n workspace ? resolve(workspace) : join(stateDir, \"workspace\"),\n );\n });\n try {\n command.parse(argv, { from: \"user\" });\n return result;\n } catch (error) {\n return commandExitCode(error, command);\n }\n}\n\nfunction listOffices(stateDir: string): number {\n const state = new OfficeRegistry(stateDir).getState();\n console.log(`Enabled platforms: ${state.enabledPlatforms.join(\", \") || \"(none)\"}`);\n console.log(`Offices (${state.offices.length}):`);\n for (const office of state.offices) {\n console.log(` ${office.platform} ${office.conversationId}`);\n }\n const pending = state.migrations.filter((record) => record.status !== \"committed\");\n if (pending.length > 0) {\n console.log(`Pending migrations (${pending.length}):`);\n for (const record of pending) {\n const error = record.error ? ` (${record.error})` : \"\";\n console.log(` ${record.status} ${record.rawConversationId}${error}`);\n }\n }\n return 0;\n}\n\nfunction migrateDoorPolicy(stateDir: string, workspaceRoot: string): number {\n setEnvAliases(\"STATE_DIR\", stateDir);\n const report = migrateLegacyDoorPolicy(createWorkspace({ root: workspaceRoot, stateDir }));\n console.log(\n report.global.length > 0\n ? `Global settings: removed ${report.global.join(\", \")}`\n : \"Global settings: nothing to remove\",\n );\n console.log(`Offices changed: ${report.conversations.length}`);\n for (const entry of report.conversations) {\n const carried = entry.visibility ? ` (kept as office.visibility=${entry.visibility})` : \"\";\n console.log(` ${entry.key}: removed ${entry.removed.join(\", \")}${carried}`);\n }\n for (const entry of report.skipped) console.log(` skipped ${entry.key}: ${entry.reason}`);\n return report.skipped.length > 0 ? 1 : 0;\n}\n\nfunction migrateEvents(stateDir: string, workspaceRoot: string): number {\n try {\n const report = migrateLegacyWorkspaceEvents(createWorkspace({ root: workspaceRoot, stateDir }));\n console.log(`Migrated ${report.migrated.length} event file(s) into office state.`);\n for (const entry of report.migrated) console.log(` ${entry.filename} -> ${entry.key}`);\n for (const entry of report.skipped) console.log(` skipped ${entry.filename}: ${entry.reason}`);\n return 0;\n } catch (err) {\n console.error(err instanceof Error ? err.message : String(err));\n return 1;\n }\n}\n\nfunction migrateOpenConnector(stateDir: string, workspaceRoot: string): number {\n const endpoint = readEnv(\"OPENCONNECTOR_ENDPOINT\");\n if (!endpoint) {\n console.error(\"OPENCONNECTOR_ENDPOINT is not set; nothing to migrate to.\");\n return 1;\n }\n try {\n const report = migrateLegacyOpenConnectorTokens(stateDir, endpoint, workspaceRoot);\n console.log(`Migrated ${report.migrated.length} office token file(s) into settings.json.`);\n for (const entry of report.skipped) {\n console.log(` skipped ${entry.key}: ${entry.reason}`);\n }\n return 0;\n } catch (err) {\n console.error(err instanceof Error ? err.message : String(err));\n return 1;\n }\n}\n\nfunction claimOffice(stateDir: string, workspaceRoot: string, rest: string[]): number {\n const [rawConversationId, platform] = rest;\n if (!rawConversationId || !platform) return 1;\n try {\n const record = new OfficeRegistry(stateDir).prepareLegacyMigration({\n rawConversationId,\n sourceDir: join(workspaceRoot, rawConversationId),\n workspaceRoot,\n ownerPlatform: assertPlatformName(platform),\n });\n console.log(\n `Claimed ${record.rawConversationId} for ${record.ownerPlatform}; ` +\n \"the daemon migrates the directory on its next start.\",\n );\n return 0;\n } catch (err) {\n console.error(err instanceof Error ? err.message : String(err));\n return 1;\n }\n}\n"]}
|
package/dist/cli/onboard.d.ts
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import type { OnboardIo } from "./types.js";
|
|
2
|
-
/** Merge collected vars into the env file, preserving unrelated existing lines. */
|
|
3
2
|
export declare function renderEnvFile(existing: string | undefined, vars: Record<string, string>): string;
|
|
4
3
|
export declare function runOnboardWizard(stateDir: string, io: OnboardIo, paths?: {
|
|
5
4
|
envFilePath?: string;
|
|
6
5
|
modelsJsonPath?: string;
|
|
7
6
|
}): Promise<number>;
|
|
8
|
-
/** Entry point for main.ts. Interactive on a TTY; template-only otherwise. */
|
|
9
7
|
export declare function runOnboardCommand(stateDir: string): Promise<number>;
|
|
10
8
|
//# sourceMappingURL=onboard.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"onboard.d.ts","sourceRoot":"","sources":["../../src/cli/onboard.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"onboard.d.ts","sourceRoot":"","sources":["../../src/cli/onboard.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAoI5C,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAUhG;AAUD,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,SAAS,EACb,KAAK,CAAC,EAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,GACxD,OAAO,CAAC,MAAM,CAAC,CAgDjB;AAED,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAwBzE"}
|
package/dist/cli/onboard.js
CHANGED
|
@@ -1,22 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `mikan onboard` — interactive first-run setup.
|
|
3
|
-
*
|
|
4
|
-
* Three questions cover the minimum viable deployment: one chat adapter,
|
|
5
|
-
* one LLM provider, and an optional sandbox mode. Everything asked is
|
|
6
|
-
* derived from existing authorities (ENV_MANIFEST for platform vars,
|
|
7
|
-
* settings/models.json shapes from settings/index.ts / harness/models.ts) — this
|
|
8
|
-
* file adds no second inventory of anything.
|
|
9
|
-
*
|
|
10
|
-
* Products:
|
|
11
|
-
* - <state-dir>/settings.json (llm section follows the choice)
|
|
12
|
-
* - <state-dir>/mikan.env (0600) (tokens/keys; at the default state
|
|
13
|
-
* dir this is the ~/.mikan/mikan.env
|
|
14
|
-
* the pm2 ecosystem file loads)
|
|
15
|
-
* - ~/.mikan/models.json (custom endpoint choice only)
|
|
16
|
-
*
|
|
17
|
-
* Non-interactive stdin (CI, piped) falls back to writing the settings
|
|
18
|
-
* template only — the pre-wizard `--onboard` behavior.
|
|
19
|
-
*/
|
|
20
1
|
import { existsSync, readFileSync } from "node:fs";
|
|
21
2
|
import { join } from "node:path";
|
|
22
3
|
import * as prompts from "@clack/prompts";
|
|
@@ -29,7 +10,6 @@ class OnboardAborted extends Error {
|
|
|
29
10
|
super("Onboarding aborted.");
|
|
30
11
|
}
|
|
31
12
|
}
|
|
32
|
-
/** Cancellation is handled before any settings are written. */
|
|
33
13
|
async function answer(result) {
|
|
34
14
|
const value = await result;
|
|
35
15
|
if (prompts.isCancel(value))
|
|
@@ -60,7 +40,6 @@ async function askRequired(io, query, secret = false) {
|
|
|
60
40
|
async function askChoice(io, labels, prompt) {
|
|
61
41
|
return io.select(prompt, labels);
|
|
62
42
|
}
|
|
63
|
-
/** Q1: pick a platform group from the manifest and collect its vars. */
|
|
64
43
|
async function askAdapter(io, env) {
|
|
65
44
|
const platforms = ENV_MANIFEST.filter((group) => group.kind === "platform");
|
|
66
45
|
io.print("\nStep 1/3 — chat adapter");
|
|
@@ -70,13 +49,11 @@ async function askAdapter(io, env) {
|
|
|
70
49
|
env[spec.name] = await askRequired(io, ` ${spec.name} (${spec.doc}): `, spec.secret);
|
|
71
50
|
}
|
|
72
51
|
if (group.anyOf) {
|
|
73
|
-
// Prefer the path form of an either/or pair (keeps PEMs out of env files).
|
|
74
52
|
const name = group.anyOf.find((n) => n.endsWith("_PATH")) ?? group.anyOf[0];
|
|
75
53
|
const doc = group.vars.find((v) => v.name === name)?.doc ?? "";
|
|
76
54
|
env[name] = await askRequired(io, ` ${name} (${doc}): `);
|
|
77
55
|
}
|
|
78
56
|
}
|
|
79
|
-
/** Q2: LLM provider. Returns settings llm choice; may add env vars / models.json. */
|
|
80
57
|
async function askLlm(io, env) {
|
|
81
58
|
io.print("\nStep 2/3 — LLM provider");
|
|
82
59
|
const index = await askChoice(io, [
|
|
@@ -113,7 +90,6 @@ async function askLlm(io, env) {
|
|
|
113
90
|
}, null, 2);
|
|
114
91
|
return { llm: { provider, model: ids[0] }, modelsJson };
|
|
115
92
|
}
|
|
116
|
-
/** Q3: sandbox mode. Returns the `--sandbox` argument, or undefined for host. */
|
|
117
93
|
async function askSandbox(io) {
|
|
118
94
|
io.print("\nStep 3/3 — sandbox (where agent commands run)");
|
|
119
95
|
const index = await askChoice(io, [
|
|
@@ -131,7 +107,6 @@ async function askSandbox(io) {
|
|
|
131
107
|
io.print(" See `mikan --help` for the --sandbox spec.");
|
|
132
108
|
return undefined;
|
|
133
109
|
}
|
|
134
|
-
/** Merge collected vars into the env file, preserving unrelated existing lines. */
|
|
135
110
|
export function renderEnvFile(existing, vars) {
|
|
136
111
|
const pending = new Map(Object.entries(vars));
|
|
137
112
|
const lines = [];
|
|
@@ -146,7 +121,6 @@ export function renderEnvFile(existing, vars) {
|
|
|
146
121
|
lines.push(`${key}=${value}`);
|
|
147
122
|
return `${lines.join("\n")}\n`;
|
|
148
123
|
}
|
|
149
|
-
/** Replace a `KEY=` line whose key is still pending, consuming that key. */
|
|
150
124
|
function rewriteEnvLine(line, pending) {
|
|
151
125
|
const key = /^([A-Za-z_][A-Za-z0-9_]*)=/.exec(line)?.[1];
|
|
152
126
|
if (key === undefined || !pending.has(key))
|
|
@@ -182,13 +156,10 @@ export async function runOnboardWizard(stateDir, io, paths) {
|
|
|
182
156
|
atomicWritePrivateFile(modelsPath, `${modelsJson}\n`);
|
|
183
157
|
io.print(`Wrote ${modelsPath}`);
|
|
184
158
|
}
|
|
185
|
-
// Lives beside settings.json; at the default state dir this is exactly
|
|
186
|
-
// the ~/.mikan/mikan.env that the pm2 ecosystem file loads.
|
|
187
159
|
const envFilePath = paths?.envFilePath ?? join(stateDir, "mikan.env");
|
|
188
160
|
const existing = existsSync(envFilePath) ? readFileSync(envFilePath, "utf-8") : undefined;
|
|
189
161
|
atomicWritePrivateFile(envFilePath, renderEnvFile(existing, env));
|
|
190
162
|
io.print(`Wrote ${envFilePath} (0600)`);
|
|
191
|
-
// Report against the answers just given without mutating process.env.
|
|
192
163
|
io.print(`\n${envReport((name) => env[name] ?? readEnv(name))}`);
|
|
193
164
|
const sandboxFlag = sandboxArg ? ` --sandbox ${sandboxArg}` : "";
|
|
194
165
|
io.print("Next steps:");
|
|
@@ -196,7 +167,6 @@ export async function runOnboardWizard(stateDir, io, paths) {
|
|
|
196
167
|
io.print(` direct: set -a; source ${envFilePath}; set +a; mikan${sandboxFlag}`);
|
|
197
168
|
return 0;
|
|
198
169
|
}
|
|
199
|
-
/** Entry point for main.ts. Interactive on a TTY; template-only otherwise. */
|
|
200
170
|
export async function runOnboardCommand(stateDir) {
|
|
201
171
|
if (!process.stdin.isTTY) {
|
|
202
172
|
const settingsPath = createGlobalSettingsFile(stateDir);
|