@geminixiang/mikan 1.0.0-beta.4 → 1.0.0-beta.41
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 +714 -0
- package/README.md +99 -36
- package/dist/adapter.d.ts +11 -1
- package/dist/adapter.d.ts.map +1 -1
- package/dist/adapter.js +18 -1
- package/dist/adapter.js.map +1 -1
- package/dist/adapters/discord/bot.d.ts +6 -7
- package/dist/adapters/discord/bot.d.ts.map +1 -1
- package/dist/adapters/discord/bot.js +88 -122
- package/dist/adapters/discord/bot.js.map +1 -1
- package/dist/adapters/discord/components.d.ts +33 -0
- package/dist/adapters/discord/components.d.ts.map +1 -0
- package/dist/adapters/discord/components.js +32 -0
- package/dist/adapters/discord/components.js.map +1 -0
- package/dist/adapters/discord/context.d.ts +3 -1
- package/dist/adapters/discord/context.d.ts.map +1 -1
- package/dist/adapters/discord/context.js +66 -217
- package/dist/adapters/discord/context.js.map +1 -1
- package/dist/adapters/discord/format.d.ts +3 -0
- package/dist/adapters/discord/format.d.ts.map +1 -0
- package/dist/adapters/discord/format.js +86 -0
- package/dist/adapters/discord/format.js.map +1 -0
- package/dist/adapters/github/bot.d.ts +89 -0
- package/dist/adapters/github/bot.d.ts.map +1 -0
- package/dist/adapters/github/bot.js +653 -0
- package/dist/adapters/github/bot.js.map +1 -0
- package/dist/adapters/github/client.d.ts +122 -0
- package/dist/adapters/github/client.d.ts.map +1 -0
- package/dist/adapters/github/client.js +314 -0
- package/dist/adapters/github/client.js.map +1 -0
- package/dist/adapters/github/cloudbuild.d.ts +19 -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 +12 -0
- package/dist/adapters/github/context.d.ts.map +1 -0
- package/dist/adapters/github/context.js +101 -0
- package/dist/adapters/github/context.js.map +1 -0
- package/dist/adapters/github/gcp-auth.d.ts +28 -0
- package/dist/adapters/github/gcp-auth.d.ts.map +1 -0
- package/dist/adapters/github/gcp-auth.js +196 -0
- package/dist/adapters/github/gcp-auth.js.map +1 -0
- package/dist/adapters/github/github-ops.d.ts +91 -0
- package/dist/adapters/github/github-ops.d.ts.map +1 -0
- package/dist/adapters/github/github-ops.js +406 -0
- package/dist/adapters/github/github-ops.js.map +1 -0
- package/dist/adapters/github/ids.d.ts +34 -0
- package/dist/adapters/github/ids.d.ts.map +1 -0
- package/dist/adapters/github/ids.js +57 -0
- package/dist/adapters/github/ids.js.map +1 -0
- package/dist/adapters/github/repo.d.ts +33 -0
- package/dist/adapters/github/repo.d.ts.map +1 -0
- package/dist/adapters/github/repo.js +141 -0
- package/dist/adapters/github/repo.js.map +1 -0
- package/dist/adapters/github/tool-pack.d.ts +14 -0
- package/dist/adapters/github/tool-pack.d.ts.map +1 -0
- package/dist/adapters/github/tool-pack.js +56 -0
- package/dist/adapters/github/tool-pack.js.map +1 -0
- package/dist/adapters/github/tools/checks.d.ts +19 -0
- package/dist/adapters/github/tools/checks.d.ts.map +1 -0
- package/dist/adapters/github/tools/checks.js +105 -0
- package/dist/adapters/github/tools/checks.js.map +1 -0
- package/dist/adapters/github/tools/issue.d.ts +21 -0
- package/dist/adapters/github/tools/issue.d.ts.map +1 -0
- package/dist/adapters/github/tools/issue.js +48 -0
- package/dist/adapters/github/tools/issue.js.map +1 -0
- package/dist/adapters/github/tools/pr.d.ts +22 -0
- package/dist/adapters/github/tools/pr.d.ts.map +1 -0
- package/dist/adapters/github/tools/pr.js +48 -0
- package/dist/adapters/github/tools/pr.js.map +1 -0
- package/dist/adapters/github/tools/read.d.ts +21 -0
- package/dist/adapters/github/tools/read.d.ts.map +1 -0
- package/dist/adapters/github/tools/read.js +141 -0
- package/dist/adapters/github/tools/read.js.map +1 -0
- package/dist/adapters/github/tools/review-reply.d.ts +17 -0
- package/dist/adapters/github/tools/review-reply.d.ts.map +1 -0
- package/dist/adapters/github/tools/review-reply.js +38 -0
- package/dist/adapters/github/tools/review-reply.js.map +1 -0
- package/dist/adapters/github/tools/sync.d.ts +17 -0
- package/dist/adapters/github/tools/sync.d.ts.map +1 -0
- package/dist/adapters/github/tools/sync.js +34 -0
- package/dist/adapters/github/tools/sync.js.map +1 -0
- package/dist/adapters/github/types.d.ts +373 -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 +86 -23
- package/dist/adapters/intake.js.map +1 -1
- package/dist/adapters/markdown-tables.d.ts +37 -0
- package/dist/adapters/markdown-tables.d.ts.map +1 -0
- package/dist/adapters/markdown-tables.js +164 -0
- package/dist/adapters/markdown-tables.js.map +1 -0
- package/dist/adapters/progressive-renderer.d.ts +7 -0
- package/dist/adapters/progressive-renderer.d.ts.map +1 -0
- package/dist/adapters/progressive-renderer.js +440 -0
- package/dist/adapters/progressive-renderer.js.map +1 -0
- package/dist/adapters/shared.d.ts +23 -10
- package/dist/adapters/shared.d.ts.map +1 -1
- package/dist/adapters/shared.js +60 -22
- package/dist/adapters/shared.js.map +1 -1
- package/dist/adapters/slack/assistant.d.ts +101 -0
- package/dist/adapters/slack/assistant.d.ts.map +1 -0
- package/dist/adapters/slack/assistant.js +204 -0
- package/dist/adapters/slack/assistant.js.map +1 -0
- package/dist/adapters/slack/blocks.d.ts +14 -0
- package/dist/adapters/slack/blocks.d.ts.map +1 -1
- package/dist/adapters/slack/blocks.js +105 -147
- package/dist/adapters/slack/blocks.js.map +1 -1
- package/dist/adapters/slack/bot.d.ts +95 -13
- package/dist/adapters/slack/bot.d.ts.map +1 -1
- package/dist/adapters/slack/bot.js +545 -211
- package/dist/adapters/slack/bot.js.map +1 -1
- package/dist/adapters/slack/context.d.ts +3 -1
- package/dist/adapters/slack/context.d.ts.map +1 -1
- package/dist/adapters/slack/context.js +11 -17
- 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 +197 -323
- 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 +7 -11
- package/dist/adapters/slack/session.js.map +1 -1
- package/dist/adapters/slack/stream-limits.d.ts +35 -0
- package/dist/adapters/slack/stream-limits.d.ts.map +1 -0
- package/dist/adapters/slack/stream-limits.js +56 -0
- package/dist/adapters/slack/stream-limits.js.map +1 -0
- package/dist/adapters/slack/tool-pack.d.ts +11 -0
- package/dist/adapters/slack/tool-pack.d.ts.map +1 -0
- package/dist/adapters/slack/tool-pack.js +45 -0
- package/dist/adapters/slack/tool-pack.js.map +1 -0
- package/dist/adapters/slack/tools/attach.js +1 -1
- package/dist/adapters/slack/tools/attach.js.map +1 -1
- package/dist/adapters/slack/tools/blockkit.d.ts +14 -0
- package/dist/adapters/slack/tools/blockkit.d.ts.map +1 -0
- package/dist/adapters/slack/tools/blockkit.js +106 -0
- package/dist/adapters/slack/tools/blockkit.js.map +1 -0
- package/dist/adapters/slack/types.d.ts +40 -2
- package/dist/adapters/slack/types.d.ts.map +1 -1
- package/dist/adapters/slack/types.js.map +1 -1
- package/dist/adapters/telegram/bot.d.ts +8 -9
- package/dist/adapters/telegram/bot.d.ts.map +1 -1
- package/dist/adapters/telegram/bot.js +115 -163
- package/dist/adapters/telegram/bot.js.map +1 -1
- package/dist/adapters/telegram/context.d.ts +2 -0
- package/dist/adapters/telegram/context.d.ts.map +1 -1
- package/dist/adapters/telegram/context.js +53 -188
- package/dist/adapters/telegram/context.js.map +1 -1
- package/dist/adapters/types.d.ts +132 -12
- package/dist/adapters/types.d.ts.map +1 -1
- package/dist/adapters/types.js.map +1 -1
- package/dist/agent-events.d.ts +3 -2
- package/dist/agent-events.d.ts.map +1 -1
- package/dist/agent-events.js +19 -1
- package/dist/agent-events.js.map +1 -1
- package/dist/agent.d.ts +14 -19
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +841 -298
- package/dist/agent.js.map +1 -1
- package/dist/cli/arg-grammar.d.ts +25 -0
- package/dist/cli/arg-grammar.d.ts.map +1 -0
- package/dist/cli/arg-grammar.js +61 -0
- package/dist/cli/arg-grammar.js.map +1 -0
- package/dist/cli/boot.d.ts +5 -0
- package/dist/cli/boot.d.ts.map +1 -0
- package/dist/cli/boot.js +117 -0
- package/dist/cli/boot.js.map +1 -0
- package/dist/cli/download.d.ts.map +1 -0
- package/dist/{download.js → cli/download.js} +2 -0
- package/dist/cli/download.js.map +1 -0
- package/dist/cli/ext-dev.d.ts +2 -0
- package/dist/cli/ext-dev.d.ts.map +1 -0
- package/dist/cli/ext-dev.js +188 -0
- package/dist/cli/ext-dev.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 +324 -0
- package/dist/cli/ext.js.map +1 -0
- package/dist/cli/office.d.ts +2 -0
- package/dist/cli/office.d.ts.map +1 -0
- package/dist/cli/office.js +91 -0
- package/dist/cli/office.js.map +1 -0
- package/dist/cli/types.d.ts +16 -0
- package/dist/cli/types.d.ts.map +1 -0
- package/dist/cli/types.js +2 -0
- package/dist/cli/types.js.map +1 -0
- package/dist/commands/admin.d.ts.map +1 -1
- package/dist/commands/admin.js +3 -2
- package/dist/commands/admin.js.map +1 -1
- package/dist/commands/auto-reply.d.ts.map +1 -1
- package/dist/commands/auto-reply.js +5 -9
- package/dist/commands/auto-reply.js.map +1 -1
- package/dist/commands/extensions.d.ts +18 -6
- package/dist/commands/extensions.d.ts.map +1 -1
- package/dist/commands/extensions.js +64 -14
- 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 +40 -5
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/manifest.d.ts +37 -0
- package/dist/commands/manifest.d.ts.map +1 -0
- package/dist/commands/manifest.js +151 -0
- package/dist/commands/manifest.js.map +1 -0
- package/dist/commands/model.d.ts +2 -3
- package/dist/commands/model.d.ts.map +1 -1
- package/dist/commands/model.js +63 -24
- package/dist/commands/model.js.map +1 -1
- package/dist/commands/new.d.ts.map +1 -1
- package/dist/commands/new.js +15 -3
- package/dist/commands/new.js.map +1 -1
- package/dist/commands/registry.d.ts +2 -2
- package/dist/commands/registry.d.ts.map +1 -1
- package/dist/commands/registry.js +1 -2
- package/dist/commands/registry.js.map +1 -1
- package/dist/commands/sandbox.d.ts.map +1 -1
- package/dist/commands/sandbox.js +83 -33
- package/dist/commands/sandbox.js.map +1 -1
- package/dist/commands/session-view.d.ts.map +1 -1
- package/dist/commands/session-view.js +6 -3
- package/dist/commands/session-view.js.map +1 -1
- package/dist/commands/types.d.ts +79 -7
- package/dist/commands/types.d.ts.map +1 -1
- package/dist/commands/types.js.map +1 -1
- package/dist/config.d.ts +23 -8
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +222 -135
- package/dist/config.js.map +1 -1
- package/dist/env-manifest.d.ts +30 -0
- package/dist/env-manifest.d.ts.map +1 -0
- package/dist/env-manifest.js +233 -0
- package/dist/env-manifest.js.map +1 -0
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js +20 -81
- package/dist/events.js.map +1 -1
- package/dist/execution-resolver.d.ts +7 -8
- package/dist/execution-resolver.d.ts.map +1 -1
- package/dist/execution-resolver.js +106 -110
- package/dist/execution-resolver.js.map +1 -1
- package/dist/extension-schedules.d.ts +31 -0
- package/dist/extension-schedules.d.ts.map +1 -0
- package/dist/extension-schedules.js +229 -0
- package/dist/extension-schedules.js.map +1 -0
- package/dist/harness/auth.d.ts +2 -1
- package/dist/harness/auth.d.ts.map +1 -1
- package/dist/harness/auth.js +11 -5
- package/dist/harness/auth.js.map +1 -1
- package/dist/harness/event-format.d.ts +27 -0
- package/dist/harness/event-format.d.ts.map +1 -0
- package/dist/harness/event-format.js +160 -0
- package/dist/harness/event-format.js.map +1 -0
- package/dist/harness/extensions/loader.d.ts +27 -49
- package/dist/harness/extensions/loader.d.ts.map +1 -1
- package/dist/harness/extensions/loader.js +486 -130
- package/dist/harness/extensions/loader.js.map +1 -1
- package/dist/harness/extensions/registry.d.ts +107 -2
- package/dist/harness/extensions/registry.d.ts.map +1 -1
- package/dist/harness/extensions/registry.js +316 -0
- package/dist/harness/extensions/registry.js.map +1 -1
- package/dist/harness/extensions/types.d.ts +482 -42
- 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 +18 -8
- package/dist/harness/index.d.ts.map +1 -1
- package/dist/harness/index.js +7 -4
- package/dist/harness/index.js.map +1 -1
- package/dist/harness/models.d.ts +7 -4
- package/dist/harness/models.d.ts.map +1 -1
- package/dist/harness/models.js +46 -24
- package/dist/harness/models.js.map +1 -1
- package/dist/harness/runner.d.ts +50 -54
- package/dist/harness/runner.d.ts.map +1 -1
- package/dist/harness/runner.js +232 -46
- package/dist/harness/runner.js.map +1 -1
- package/dist/harness/session-store.d.ts +11 -5
- package/dist/harness/session-store.d.ts.map +1 -1
- package/dist/harness/session-store.js +141 -36
- package/dist/harness/session-store.js.map +1 -1
- package/dist/harness/settings.d.ts +2 -20
- package/dist/harness/settings.d.ts.map +1 -1
- package/dist/harness/settings.js +12 -1
- package/dist/harness/settings.js.map +1 -1
- package/dist/harness/skills.d.ts +10 -29
- package/dist/harness/skills.d.ts.map +1 -1
- package/dist/harness/skills.js +48 -6
- package/dist/harness/skills.js.map +1 -1
- package/dist/harness/subagent-profiles.d.ts +8 -0
- package/dist/harness/subagent-profiles.d.ts.map +1 -0
- package/dist/harness/subagent-profiles.js +299 -0
- package/dist/harness/subagent-profiles.js.map +1 -0
- package/dist/harness/subagent-runner.d.ts +45 -0
- package/dist/harness/subagent-runner.d.ts.map +1 -0
- package/dist/harness/subagent-runner.js +680 -0
- package/dist/harness/subagent-runner.js.map +1 -0
- package/dist/harness/types.d.ts +267 -1
- package/dist/harness/types.d.ts.map +1 -1
- package/dist/harness/types.js.map +1 -1
- package/dist/harness/usage.d.ts +6 -0
- package/dist/harness/usage.d.ts.map +1 -0
- package/dist/harness/usage.js +32 -0
- package/dist/harness/usage.js.map +1 -0
- package/dist/index.d.ts +36 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +22 -6
- package/dist/index.js.map +1 -1
- package/dist/main.js +391 -127
- package/dist/main.js.map +1 -1
- package/dist/observability/instrument.js +7 -5
- package/dist/observability/instrument.js.map +1 -1
- package/dist/observability/sentry.d.ts +2 -0
- package/dist/observability/sentry.d.ts.map +1 -1
- package/dist/observability/sentry.js +10 -2
- package/dist/observability/sentry.js.map +1 -1
- package/dist/office/address.d.ts +31 -0
- package/dist/office/address.d.ts.map +1 -0
- package/dist/office/address.js +113 -0
- package/dist/office/address.js.map +1 -0
- package/dist/office/index.d.ts +11 -0
- package/dist/office/index.d.ts.map +1 -0
- package/dist/office/index.js +11 -0
- package/dist/office/index.js.map +1 -0
- package/dist/office/layout.d.ts +27 -0
- package/dist/office/layout.d.ts.map +1 -0
- package/dist/office/layout.js +97 -0
- package/dist/office/layout.js.map +1 -0
- package/dist/office/migration.d.ts +44 -0
- package/dist/office/migration.d.ts.map +1 -0
- package/dist/office/migration.js +255 -0
- package/dist/office/migration.js.map +1 -0
- package/dist/office/registry.d.ts +75 -0
- package/dist/office/registry.d.ts.map +1 -0
- package/dist/office/registry.js +646 -0
- package/dist/office/registry.js.map +1 -0
- package/dist/office/types.d.ts +71 -0
- package/dist/office/types.d.ts.map +1 -0
- package/dist/office/types.js +2 -0
- package/dist/office/types.js.map +1 -0
- package/dist/packages/admin.d.ts +17 -0
- package/dist/packages/admin.d.ts.map +1 -0
- package/dist/packages/admin.js +98 -0
- package/dist/packages/admin.js.map +1 -0
- package/dist/packages/index.d.ts +6 -0
- package/dist/packages/index.d.ts.map +1 -0
- package/dist/packages/index.js +6 -0
- package/dist/packages/index.js.map +1 -0
- package/dist/packages/inspect.d.ts +11 -0
- package/dist/packages/inspect.d.ts.map +1 -0
- package/dist/packages/inspect.js +98 -0
- package/dist/packages/inspect.js.map +1 -0
- package/dist/packages/materialize.d.ts +40 -0
- package/dist/packages/materialize.d.ts.map +1 -0
- package/dist/packages/materialize.js +297 -0
- package/dist/packages/materialize.js.map +1 -0
- package/dist/packages/resolve.d.ts +25 -0
- package/dist/packages/resolve.d.ts.map +1 -0
- package/dist/packages/resolve.js +208 -0
- package/dist/packages/resolve.js.map +1 -0
- package/dist/packages/source.d.ts +39 -0
- package/dist/packages/source.d.ts.map +1 -0
- package/dist/packages/source.js +189 -0
- package/dist/packages/source.js.map +1 -0
- package/dist/packages/types.d.ts +104 -0
- package/dist/packages/types.d.ts.map +1 -0
- package/dist/packages/types.js +2 -0
- package/dist/packages/types.js.map +1 -0
- package/dist/provisioner.d.ts +66 -0
- package/dist/provisioner.d.ts.map +1 -1
- package/dist/provisioner.js +335 -13
- 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 +562 -118
- package/dist/runtime/conversation-runtime.js.map +1 -1
- package/dist/runtime/session-lifecycle.d.ts +38 -0
- package/dist/runtime/session-lifecycle.d.ts.map +1 -0
- package/dist/runtime/session-lifecycle.js +193 -0
- package/dist/runtime/session-lifecycle.js.map +1 -0
- package/dist/runtime/types.d.ts +66 -7
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/runtime/types.js.map +1 -1
- package/dist/sandbox/cloudflare.d.ts +3 -0
- package/dist/sandbox/cloudflare.d.ts.map +1 -1
- package/dist/sandbox/cloudflare.js +13 -1
- package/dist/sandbox/cloudflare.js.map +1 -1
- package/dist/sandbox/container.d.ts +4 -0
- package/dist/sandbox/container.d.ts.map +1 -1
- package/dist/sandbox/container.js +13 -3
- package/dist/sandbox/container.js.map +1 -1
- package/dist/sandbox/firecracker.d.ts +3 -0
- package/dist/sandbox/firecracker.d.ts.map +1 -1
- package/dist/sandbox/firecracker.js +13 -2
- package/dist/sandbox/firecracker.js.map +1 -1
- package/dist/sandbox/gondolin.d.ts +57 -0
- package/dist/sandbox/gondolin.d.ts.map +1 -0
- package/dist/sandbox/gondolin.js +764 -0
- package/dist/sandbox/gondolin.js.map +1 -0
- package/dist/sandbox/host.d.ts +3 -0
- package/dist/sandbox/host.d.ts.map +1 -1
- package/dist/sandbox/host.js +18 -3
- package/dist/sandbox/host.js.map +1 -1
- package/dist/sandbox/identity.d.ts +44 -0
- package/dist/sandbox/identity.d.ts.map +1 -0
- package/dist/sandbox/identity.js +68 -0
- package/dist/sandbox/identity.js.map +1 -0
- package/dist/sandbox/image.d.ts.map +1 -1
- package/dist/sandbox/image.js +2 -0
- package/dist/sandbox/image.js.map +1 -1
- package/dist/sandbox/index.d.ts +17 -4
- package/dist/sandbox/index.d.ts.map +1 -1
- package/dist/sandbox/index.js +37 -3
- package/dist/sandbox/index.js.map +1 -1
- package/dist/sandbox/types.d.ts +65 -1
- package/dist/sandbox/types.d.ts.map +1 -1
- package/dist/sandbox/types.js.map +1 -1
- package/dist/sandbox/utils.d.ts +14 -0
- package/dist/sandbox/utils.d.ts.map +1 -1
- package/dist/sandbox/utils.js +68 -1
- package/dist/sandbox/utils.js.map +1 -1
- package/dist/sessions/chat-history-sync.d.ts +25 -0
- package/dist/sessions/chat-history-sync.d.ts.map +1 -0
- package/dist/sessions/{agent-memory-file-manager.js → chat-history-sync.js} +135 -131
- package/dist/sessions/chat-history-sync.js.map +1 -0
- package/dist/sessions/conversation-log.d.ts +9 -0
- package/dist/sessions/conversation-log.d.ts.map +1 -0
- package/dist/sessions/conversation-log.js +50 -0
- package/dist/sessions/conversation-log.js.map +1 -0
- package/dist/sessions/history-line.d.ts +29 -0
- package/dist/sessions/history-line.d.ts.map +1 -0
- package/dist/sessions/history-line.js +45 -0
- package/dist/sessions/history-line.js.map +1 -0
- package/dist/sessions/rotation.d.ts +2 -0
- package/dist/sessions/rotation.d.ts.map +1 -0
- package/dist/sessions/rotation.js +39 -0
- package/dist/sessions/rotation.js.map +1 -0
- package/dist/sessions/session-key.d.ts +33 -0
- package/dist/sessions/session-key.d.ts.map +1 -0
- package/dist/sessions/session-key.js +115 -0
- package/dist/sessions/session-key.js.map +1 -0
- package/dist/sessions/store.d.ts +15 -7
- package/dist/sessions/store.d.ts.map +1 -1
- package/dist/sessions/store.js +127 -36
- package/dist/sessions/store.js.map +1 -1
- package/dist/sessions/types.d.ts +19 -5
- package/dist/sessions/types.d.ts.map +1 -1
- package/dist/sessions/types.js.map +1 -1
- package/dist/settings-mutation.d.ts +40 -0
- package/dist/settings-mutation.d.ts.map +1 -0
- package/dist/settings-mutation.js +61 -0
- package/dist/settings-mutation.js.map +1 -0
- package/dist/subagent-progress.d.ts +39 -0
- package/dist/subagent-progress.d.ts.map +1 -0
- package/dist/subagent-progress.js +225 -0
- package/dist/subagent-progress.js.map +1 -0
- package/dist/tools/bash.d.ts +3 -1
- package/dist/tools/bash.d.ts.map +1 -1
- package/dist/tools/bash.js +26 -18
- package/dist/tools/bash.js.map +1 -1
- package/dist/tools/edit.d.ts.map +1 -1
- package/dist/tools/edit.js +14 -13
- 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 +58 -45
- package/dist/tools/event.js.map +1 -1
- package/dist/tools/generate-image.d.ts +23 -0
- package/dist/tools/generate-image.d.ts.map +1 -0
- package/dist/tools/generate-image.js +65 -0
- package/dist/tools/generate-image.js.map +1 -0
- package/dist/tools/host-fn-tool.d.ts +21 -0
- package/dist/tools/host-fn-tool.d.ts.map +1 -0
- package/dist/tools/host-fn-tool.js +32 -0
- package/dist/tools/host-fn-tool.js.map +1 -0
- package/dist/tools/index.d.ts +19 -2
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +25 -2
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/react.d.ts +15 -0
- package/dist/tools/react.d.ts.map +1 -0
- package/dist/tools/react.js +29 -0
- package/dist/tools/react.js.map +1 -0
- package/dist/tools/read.d.ts +1 -0
- package/dist/tools/read.d.ts.map +1 -1
- package/dist/tools/read.js +39 -33
- package/dist/tools/read.js.map +1 -1
- package/dist/tools/sandbox.d.ts +2 -2
- package/dist/tools/sandbox.d.ts.map +1 -1
- package/dist/tools/sandbox.js +14 -9
- package/dist/tools/sandbox.js.map +1 -1
- package/dist/tools/subagent-slots.d.ts +28 -0
- package/dist/tools/subagent-slots.d.ts.map +1 -0
- package/dist/tools/subagent-slots.js +72 -0
- package/dist/tools/subagent-slots.js.map +1 -0
- package/dist/tools/subagent.d.ts +61 -0
- package/dist/tools/subagent.d.ts.map +1 -0
- package/dist/tools/subagent.js +434 -0
- package/dist/tools/subagent.js.map +1 -0
- package/dist/tools/types.d.ts +40 -32
- 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 +2 -8
- package/dist/tools/write.js.map +1 -1
- package/dist/trigger.d.ts +2 -1
- package/dist/trigger.d.ts.map +1 -1
- package/dist/trigger.js +6 -9
- package/dist/trigger.js.map +1 -1
- package/dist/types.d.ts +411 -59
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +2 -2
- package/dist/types.js.map +1 -1
- package/dist/utils/file-guards.d.ts +9 -0
- package/dist/utils/file-guards.d.ts.map +1 -1
- package/dist/utils/file-guards.js +44 -1
- package/dist/utils/file-guards.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 +25 -0
- package/dist/vault/disabled.js.map +1 -0
- package/dist/vault/index.d.ts +45 -2
- package/dist/vault/index.d.ts.map +1 -1
- package/dist/vault/index.js +127 -36
- package/dist/vault/index.js.map +1 -1
- package/dist/vault/types.d.ts +6 -2
- package/dist/vault/types.d.ts.map +1 -1
- package/dist/vault/types.js.map +1 -1
- package/dist/web/admin/portal.d.ts +31 -3
- package/dist/web/admin/portal.d.ts.map +1 -1
- package/dist/web/admin/portal.js +850 -345
- package/dist/web/admin/portal.js.map +1 -1
- package/dist/web/admin/provider-models.js +1 -1
- package/dist/web/admin/provider-models.js.map +1 -1
- package/dist/web/admin/types.d.ts +23 -3
- 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 +1 -32
- package/dist/web/login/oauth.js.map +1 -1
- package/dist/web/login/portal.d.ts +1 -1
- package/dist/web/login/portal.d.ts.map +1 -1
- package/dist/web/login/portal.js +13 -36
- 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 +21 -0
- package/dist/web/portal-shell.d.ts.map +1 -0
- package/dist/{portal-shell.js → web/portal-shell.js} +67 -2
- package/dist/web/portal-shell.js.map +1 -0
- package/dist/web/server.d.ts +3 -2
- package/dist/web/server.d.ts.map +1 -1
- package/dist/web/server.js +11 -4
- package/dist/web/server.js.map +1 -1
- package/dist/web/session-view/portal.d.ts +1 -1
- package/dist/web/session-view/portal.d.ts.map +1 -1
- package/dist/web/session-view/portal.js +37 -28
- package/dist/web/session-view/portal.js.map +1 -1
- package/dist/web/session-view/service.d.ts +1 -1
- package/dist/web/session-view/service.d.ts.map +1 -1
- package/dist/web/session-view/service.js +61 -18
- package/dist/web/session-view/service.js.map +1 -1
- package/dist/web/session-view/types.d.ts +0 -3
- package/dist/web/session-view/types.d.ts.map +1 -1
- package/dist/web/session-view/types.js.map +1 -1
- package/dist/web/token-store.js +1 -1
- package/dist/web/token-store.js.map +1 -1
- package/dist/workspace-projection/index.d.ts +10 -0
- package/dist/workspace-projection/index.d.ts.map +1 -0
- package/dist/workspace-projection/index.js +120 -0
- package/dist/workspace-projection/index.js.map +1 -0
- package/dist/workspace-projection/types.d.ts +16 -0
- package/dist/workspace-projection/types.d.ts.map +1 -0
- package/dist/workspace-projection/types.js +2 -0
- package/dist/workspace-projection/types.js.map +1 -0
- package/package.json +68 -37
- package/dist/adapters/streaming.d.ts +0 -18
- package/dist/adapters/streaming.d.ts.map +0 -1
- package/dist/adapters/streaming.js +0 -44
- package/dist/adapters/streaming.js.map +0 -1
- package/dist/adapters/telegram/html.d.ts +0 -3
- package/dist/adapters/telegram/html.d.ts.map +0 -1
- package/dist/adapters/telegram/html.js +0 -98
- package/dist/adapters/telegram/html.js.map +0 -1
- package/dist/commands/parse.d.ts +0 -7
- package/dist/commands/parse.d.ts.map +0 -1
- package/dist/commands/parse.js +0 -14
- package/dist/commands/parse.js.map +0 -1
- 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/sandbox/path-context.d.ts +0 -3
- package/dist/sandbox/path-context.d.ts.map +0 -1
- package/dist/sandbox/path-context.js +0 -20
- package/dist/sandbox/path-context.js.map +0 -1
- package/dist/sessions/agent-memory-file-manager.d.ts +0 -19
- package/dist/sessions/agent-memory-file-manager.d.ts.map +0 -1
- package/dist/sessions/agent-memory-file-manager.js.map +0 -1
- package/dist/sessions/metadata.d.ts +0 -3
- package/dist/sessions/metadata.d.ts.map +0 -1
- package/dist/sessions/metadata.js +0 -11
- package/dist/sessions/metadata.js.map +0 -1
- package/dist/sessions/policy.d.ts +0 -6
- package/dist/sessions/policy.d.ts.map +0 -1
- package/dist/sessions/policy.js +0 -23
- package/dist/sessions/policy.js.map +0 -1
- package/dist/store.d.ts +0 -46
- package/dist/store.d.ts.map +0 -1
- package/dist/store.js +0 -177
- package/dist/store.js.map +0 -1
- package/dist/tools/truncate.d.ts +0 -33
- package/dist/tools/truncate.d.ts.map +0 -1
- package/dist/tools/truncate.js +0 -184
- package/dist/tools/truncate.js.map +0 -1
- package/dist/utils/date.d.ts +0 -10
- package/dist/utils/date.d.ts.map +0 -1
- package/dist/utils/date.js +0 -23
- package/dist/utils/date.js.map +0 -1
- package/dist/utils/env.d.ts +0 -3
- package/dist/utils/env.d.ts.map +0 -1
- package/dist/utils/env.js +0 -12
- package/dist/utils/env.js.map +0 -1
- package/dist/utils/fs-atomic.d.ts +0 -10
- package/dist/utils/fs-atomic.d.ts.map +0 -1
- package/dist/utils/fs-atomic.js +0 -45
- package/dist/utils/fs-atomic.js.map +0 -1
- package/dist/utils/html.d.ts +0 -2
- package/dist/utils/html.d.ts.map +0 -1
- package/dist/utils/html.js +0 -4
- package/dist/utils/html.js.map +0 -1
- package/dist/utils/http-body.d.ts +0 -10
- package/dist/utils/http-body.d.ts.map +0 -1
- package/dist/utils/http-body.js +0 -34
- package/dist/utils/http-body.js.map +0 -1
- package/dist/vault/routing.d.ts +0 -3
- package/dist/vault/routing.d.ts.map +0 -1
- package/dist/vault/routing.js +0 -13
- package/dist/vault/routing.js.map +0 -1
- package/dist/web/agent-events/portal.d.ts +0 -3
- package/dist/web/agent-events/portal.d.ts.map +0 -1
- package/dist/web/agent-events/portal.js +0 -18
- package/dist/web/agent-events/portal.js.map +0 -1
- package/dist/web/request.d.ts +0 -3
- package/dist/web/request.d.ts.map +0 -1
- package/dist/web/request.js +0 -13
- package/dist/web/request.js.map +0 -1
- package/dist/web/session-view/command.d.ts +0 -4
- package/dist/web/session-view/command.d.ts.map +0 -1
- package/dist/web/session-view/command.js +0 -7
- package/dist/web/session-view/command.js.map +0 -1
- /package/dist/{download.d.ts → cli/download.d.ts} +0 -0
package/dist/config.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { Type } from "@sinclair/typebox";
|
|
2
|
-
import { existsSync, readFileSync, renameSync, rmSync } from "fs";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { readEnv } from "./
|
|
2
|
+
import { existsSync, lstatSync, readFileSync, renameSync, rmSync } from "node:fs";
|
|
3
|
+
import { dirname, join, resolve } from "node:path";
|
|
4
|
+
import { effectiveStateDir } from "./cli/arg-grammar.js";
|
|
5
|
+
import { readEnv } from "./env-manifest.js";
|
|
6
6
|
import { ensureDirExists, readJsonSchemaFileIfExists } from "./utils/file-guards.js";
|
|
7
|
-
import { atomicWritePrivateFile } from "./utils/
|
|
7
|
+
import { atomicWritePrivateFile } from "./utils/file-guards.js";
|
|
8
8
|
import * as log from "./log.js";
|
|
9
9
|
export class MissingGlobalSettingsError extends Error {
|
|
10
10
|
constructor(settingsPath) {
|
|
@@ -33,8 +33,8 @@ const ONBOARD_SETTINGS = {
|
|
|
33
33
|
cpus: "2",
|
|
34
34
|
memory: "4g",
|
|
35
35
|
},
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
workspace: {
|
|
37
|
+
doorPolicy: "isolated",
|
|
38
38
|
},
|
|
39
39
|
defaultSharedVault: "",
|
|
40
40
|
},
|
|
@@ -50,6 +50,7 @@ const SettingsFileSchema = Type.Object({
|
|
|
50
50
|
Type.Literal("medium"),
|
|
51
51
|
Type.Literal("high"),
|
|
52
52
|
Type.Literal("xhigh"),
|
|
53
|
+
Type.Literal("max"),
|
|
53
54
|
])),
|
|
54
55
|
autoReply: Type.Optional(Type.Object({
|
|
55
56
|
provider: Type.Optional(Type.String()),
|
|
@@ -72,21 +73,43 @@ const SettingsFileSchema = Type.Object({
|
|
|
72
73
|
image: Type.Optional(Type.Object({
|
|
73
74
|
workspaceMount: Type.Optional(Type.Union([Type.Literal("private"), Type.Literal("full")])),
|
|
74
75
|
})),
|
|
76
|
+
workspace: Type.Optional(Type.Object({
|
|
77
|
+
doorPolicy: Type.Optional(Type.Union([Type.Literal("isolated"), Type.Literal("trusted")])),
|
|
78
|
+
layout: Type.Optional(Type.Union([
|
|
79
|
+
Type.Literal("conversation"),
|
|
80
|
+
Type.Literal("shared-support"),
|
|
81
|
+
Type.Literal("full"),
|
|
82
|
+
])),
|
|
83
|
+
})),
|
|
75
84
|
defaultSharedVault: Type.Optional(Type.String()),
|
|
76
85
|
})),
|
|
77
86
|
autoReply: Type.Optional(Type.Object({
|
|
78
87
|
enabled: Type.Optional(Type.Boolean()),
|
|
79
88
|
rules: Type.Optional(Type.Array(Type.String())),
|
|
80
89
|
})),
|
|
90
|
+
/** Package sources for this scope; see `src/packages`. */
|
|
91
|
+
packages: Type.Optional(Type.Array(Type.String())),
|
|
81
92
|
});
|
|
82
93
|
function loadSettingsFile(settingsPath) {
|
|
94
|
+
if (existsSync(settingsPath)) {
|
|
95
|
+
try {
|
|
96
|
+
const raw = JSON.parse(readFileSync(settingsPath, "utf-8"));
|
|
97
|
+
if (raw?.sandbox?.gondolin?.remote !== undefined) {
|
|
98
|
+
throw new Error("sandbox.gondolin.remote is no longer supported; use gondolin:default and remove the remote setting");
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
if (error instanceof Error && error.message.startsWith("sandbox.gondolin.remote")) {
|
|
103
|
+
throw error;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
83
107
|
return readJsonSchemaFileIfExists(settingsPath, SettingsFileSchema, (detail) => detail === "unexpected JSON shape"
|
|
84
108
|
? `Malformed settings file at ${settingsPath}: expected a JSON object at the top level`
|
|
85
109
|
: `Malformed settings file at ${settingsPath}: ${detail}`);
|
|
86
110
|
}
|
|
87
111
|
function getStateDir() {
|
|
88
|
-
|
|
89
|
-
return raw ? resolve(raw) : join(homedir(), ".mikan");
|
|
112
|
+
return effectiveStateDir();
|
|
90
113
|
}
|
|
91
114
|
function normalizeSettingsConfig(config) {
|
|
92
115
|
return {
|
|
@@ -94,21 +117,68 @@ function normalizeSettingsConfig(config) {
|
|
|
94
117
|
...(config.llm?.model !== undefined ? { model: config.llm.model } : {}),
|
|
95
118
|
...(config.llm?.thinkingLevel !== undefined ? { thinkingLevel: config.llm.thinkingLevel } : {}),
|
|
96
119
|
...(config.sentry?.dsn !== undefined ? { sentryDsn: config.sentry.dsn } : {}),
|
|
97
|
-
...(config.sandbox
|
|
98
|
-
...(config.sandbox?.memory !== undefined ? { sandboxMemory: config.sandbox.memory } : {}),
|
|
99
|
-
...(config.sandbox?.boost?.cpus !== undefined
|
|
100
|
-
? { sandboxBoostCpus: config.sandbox.boost.cpus }
|
|
101
|
-
: {}),
|
|
102
|
-
...(config.sandbox?.boost?.memory !== undefined
|
|
103
|
-
? { sandboxBoostMemory: config.sandbox.boost.memory }
|
|
104
|
-
: {}),
|
|
105
|
-
...(config.sandbox?.image?.workspaceMount !== undefined
|
|
106
|
-
? { sandboxImageWorkspaceMount: config.sandbox.image.workspaceMount }
|
|
107
|
-
: {}),
|
|
108
|
-
...(config.sandbox?.defaultSharedVault?.trim()
|
|
109
|
-
? { defaultSharedVault: config.sandbox.defaultSharedVault.trim() }
|
|
110
|
-
: {}),
|
|
120
|
+
...(config.sandbox !== undefined ? { sandbox: normalizeSandboxSettings(config.sandbox) } : {}),
|
|
111
121
|
...(config.slack !== undefined ? { slack: config.slack } : {}),
|
|
122
|
+
...(config.packages !== undefined ? { packages: normalizePackages(config.packages) } : {}),
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
/** Drop blank entries and duplicates while preserving the author's order. */
|
|
126
|
+
function normalizePackages(packages) {
|
|
127
|
+
const seen = new Set();
|
|
128
|
+
const normalized = [];
|
|
129
|
+
for (const entry of packages) {
|
|
130
|
+
const trimmed = entry.trim();
|
|
131
|
+
if (!trimmed || seen.has(trimmed))
|
|
132
|
+
continue;
|
|
133
|
+
seen.add(trimmed);
|
|
134
|
+
normalized.push(trimmed);
|
|
135
|
+
}
|
|
136
|
+
return normalized;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* File shape → in-memory shape for the sandbox group. An empty or
|
|
140
|
+
* whitespace-only `defaultSharedVault` means "no default" and is dropped;
|
|
141
|
+
* non-empty values are trimmed. Everything else passes through as-is.
|
|
142
|
+
*/
|
|
143
|
+
function normalizeSandboxSettings(sandbox) {
|
|
144
|
+
const defaultSharedVault = sandbox.defaultSharedVault?.trim();
|
|
145
|
+
const legacyWorkspace = sandbox.image?.workspaceMount === "private"
|
|
146
|
+
? { doorPolicy: "trusted", layout: "shared-support" }
|
|
147
|
+
: sandbox.image?.workspaceMount === "full"
|
|
148
|
+
? { doorPolicy: "trusted", layout: "full" }
|
|
149
|
+
: undefined;
|
|
150
|
+
const workspace = legacyWorkspace
|
|
151
|
+
? { ...legacyWorkspace, ...sandbox.workspace }
|
|
152
|
+
: sandbox.workspace;
|
|
153
|
+
return {
|
|
154
|
+
...(sandbox.cpus !== undefined ? { cpus: sandbox.cpus } : {}),
|
|
155
|
+
...(sandbox.memory !== undefined ? { memory: sandbox.memory } : {}),
|
|
156
|
+
...(sandbox.boost !== undefined ? { boost: sandbox.boost } : {}),
|
|
157
|
+
...(sandbox.image !== undefined ? { image: sandbox.image } : {}),
|
|
158
|
+
...(workspace !== undefined ? { workspace } : {}),
|
|
159
|
+
...(defaultSharedVault ? { defaultSharedVault } : {}),
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Merge two sandbox settings groups. The merge invariant is LEAF-LEVEL:
|
|
164
|
+
* an override that only sets `sandbox.memory` keeps the base `sandbox.cpus`,
|
|
165
|
+
* and an override that only sets `boost.memory` keeps the base `boost.cpus`
|
|
166
|
+
* (same for `image`). This mirrors how the fields merged when they were
|
|
167
|
+
* flat top-level keys; a group-level spread would silently drop base leaves.
|
|
168
|
+
*/
|
|
169
|
+
function mergeSandboxSettings(base, override) {
|
|
170
|
+
if (!base)
|
|
171
|
+
return override;
|
|
172
|
+
if (!override)
|
|
173
|
+
return base;
|
|
174
|
+
return {
|
|
175
|
+
...base,
|
|
176
|
+
...override,
|
|
177
|
+
...(base.boost || override.boost ? { boost: { ...base.boost, ...override.boost } } : {}),
|
|
178
|
+
...(base.image || override.image ? { image: { ...base.image, ...override.image } } : {}),
|
|
179
|
+
...(base.workspace || override.workspace
|
|
180
|
+
? { workspace: { ...base.workspace, ...override.workspace } }
|
|
181
|
+
: {}),
|
|
112
182
|
};
|
|
113
183
|
}
|
|
114
184
|
function getSettingsPath() {
|
|
@@ -135,26 +205,18 @@ function toAgentConfig(fromFile) {
|
|
|
135
205
|
const provider = requireString(fromFile.provider, "llm.provider");
|
|
136
206
|
const model = requireString(fromFile.model, "llm.model");
|
|
137
207
|
const thinkingLevel = requireThinkingLevel(fromFile.thinkingLevel);
|
|
138
|
-
const sentryDsn = fromFile.sentryDsn
|
|
139
|
-
const
|
|
140
|
-
const sandboxMemory = fromFile.sandboxMemory;
|
|
141
|
-
const sandboxBoostCpus = fromFile.sandboxBoostCpus;
|
|
142
|
-
const sandboxBoostMemory = fromFile.sandboxBoostMemory;
|
|
143
|
-
const sandboxImageWorkspaceMount = fromFile.sandboxImageWorkspaceMount;
|
|
144
|
-
const defaultSharedVault = fromFile.defaultSharedVault;
|
|
208
|
+
const sentryDsn = sentryDsnFrom(fromFile.sentryDsn);
|
|
209
|
+
const sandbox = fromFile.sandbox;
|
|
145
210
|
const slack = fromFile.slack;
|
|
211
|
+
const packages = fromFile.packages;
|
|
146
212
|
return {
|
|
147
213
|
provider,
|
|
148
214
|
model,
|
|
149
215
|
thinkingLevel,
|
|
150
216
|
sentryDsn,
|
|
151
|
-
|
|
152
|
-
sandboxMemory,
|
|
153
|
-
sandboxBoostCpus,
|
|
154
|
-
sandboxBoostMemory,
|
|
155
|
-
sandboxImageWorkspaceMount,
|
|
156
|
-
defaultSharedVault,
|
|
217
|
+
sandbox,
|
|
157
218
|
slack,
|
|
219
|
+
packages,
|
|
158
220
|
};
|
|
159
221
|
}
|
|
160
222
|
function loadRawGlobalSettings() {
|
|
@@ -165,7 +227,9 @@ export function loadGlobalSettings() {
|
|
|
165
227
|
}
|
|
166
228
|
/**
|
|
167
229
|
* Host-authoritative location of a conversation's settings file:
|
|
168
|
-
* `<
|
|
230
|
+
* `<office state dir>/settings.json`. The Office value names both the
|
|
231
|
+
* state-dir key and the legacy pre-host-migration location (its workspace
|
|
232
|
+
* dir) — the key is never inferred from a directory basename.
|
|
169
233
|
*
|
|
170
234
|
* Conversation settings used to live at `<conversationDir>/settings.json`,
|
|
171
235
|
* but conversation dirs are bind-mounted read-write into sandbox containers
|
|
@@ -180,23 +244,23 @@ export function loadGlobalSettings() {
|
|
|
180
244
|
* migration marker — a legacy file (re)appearing later, e.g. planted from
|
|
181
245
|
* inside the sandbox, is never read again.
|
|
182
246
|
*/
|
|
183
|
-
export function conversationSettingsPath(
|
|
184
|
-
const
|
|
185
|
-
|
|
186
|
-
|
|
247
|
+
export function conversationSettingsPath(office) {
|
|
248
|
+
const hostPath = join(office.stateDir, "settings.json");
|
|
249
|
+
if (existsSync(hostPath)) {
|
|
250
|
+
assertSettingsFile(hostPath, "Host conversation settings");
|
|
187
251
|
return hostPath;
|
|
252
|
+
}
|
|
188
253
|
ensureDirExists(dirname(hostPath));
|
|
189
|
-
const legacyPath = join(
|
|
254
|
+
const legacyPath = join(office.dir, "settings.json");
|
|
190
255
|
let content = "{}\n";
|
|
191
256
|
let migrated = false;
|
|
192
257
|
if (existsSync(legacyPath)) {
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
}
|
|
258
|
+
assertSettingsFile(legacyPath, "Legacy conversation settings");
|
|
259
|
+
content = readFileSync(legacyPath, "utf-8");
|
|
260
|
+
// Validate before moving the file. A malformed legacy file must fail
|
|
261
|
+
// closed and remain available for an operator to repair.
|
|
262
|
+
loadSettingsFile(legacyPath);
|
|
263
|
+
migrated = true;
|
|
200
264
|
}
|
|
201
265
|
atomicWritePrivateFile(hostPath, content);
|
|
202
266
|
if (migrated) {
|
|
@@ -210,10 +274,36 @@ export function conversationSettingsPath(conversationDir) {
|
|
|
210
274
|
}
|
|
211
275
|
return hostPath;
|
|
212
276
|
}
|
|
213
|
-
|
|
277
|
+
function assertSettingsFile(path, label) {
|
|
278
|
+
let stats;
|
|
279
|
+
try {
|
|
280
|
+
stats = lstatSync(path);
|
|
281
|
+
}
|
|
282
|
+
catch (err) {
|
|
283
|
+
throw new Error(`${label} cannot be inspected: ${path}`, { cause: err });
|
|
284
|
+
}
|
|
285
|
+
if (stats.isSymbolicLink() || !stats.isFile()) {
|
|
286
|
+
throw new Error(`${label} must be a regular non-symlink file: ${path}`);
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
export function resolveConversationSettings(office) {
|
|
214
290
|
const globalConfig = loadRawGlobalSettings();
|
|
215
|
-
const conversationConfig = normalizeSettingsConfig(loadSettingsFile(conversationSettingsPath(
|
|
216
|
-
|
|
291
|
+
const conversationConfig = normalizeSettingsConfig(loadSettingsFile(conversationSettingsPath(office)) ?? {});
|
|
292
|
+
// The sandbox group merges at the leaf level (see mergeSandboxSettings):
|
|
293
|
+
// a conversation that only sets sandbox.memory keeps the global sandbox.cpus.
|
|
294
|
+
const sandbox = mergeSandboxSettings(globalConfig.sandbox, conversationConfig.sandbox);
|
|
295
|
+
return toAgentConfig({
|
|
296
|
+
...globalConfig,
|
|
297
|
+
...conversationConfig,
|
|
298
|
+
...(sandbox ? { sandbox } : {}),
|
|
299
|
+
// Packages are additive across scopes, so the spread above would be wrong
|
|
300
|
+
// twice over: an unset conversation list would read as the global list
|
|
301
|
+
// (loading every global package a second time under the conversation
|
|
302
|
+
// scope), and a set one would read as if it had replaced the global list.
|
|
303
|
+
// Report only this conversation's entries; resolveConversationPackages
|
|
304
|
+
// combines the scopes.
|
|
305
|
+
packages: conversationConfig.packages,
|
|
306
|
+
});
|
|
217
307
|
}
|
|
218
308
|
/**
|
|
219
309
|
* Resolve the model used to judge auto-reply rules. Falls back to the main
|
|
@@ -222,11 +312,9 @@ export function resolveConversationSettings(conversationDir) {
|
|
|
222
312
|
*
|
|
223
313
|
* @deprecated Auto-reply is kept for compatibility while its future is undecided.
|
|
224
314
|
*/
|
|
225
|
-
export function loadAutoReplyJudgeModel(
|
|
315
|
+
export function loadAutoReplyJudgeModel(office) {
|
|
226
316
|
const global = requireGlobalSettings();
|
|
227
|
-
const local =
|
|
228
|
-
? (loadSettingsFile(conversationSettingsPath(conversationDir)) ?? {})
|
|
229
|
-
: {};
|
|
317
|
+
const local = office ? (loadSettingsFile(conversationSettingsPath(office)) ?? {}) : {};
|
|
230
318
|
const merged = { ...global.llm, ...local.llm };
|
|
231
319
|
const judge = { ...global.llm?.autoReply, ...local.llm?.autoReply };
|
|
232
320
|
const provider = requireString(judge.provider ?? merged?.provider, "llm.autoReply.provider");
|
|
@@ -275,39 +363,6 @@ export function saveConversationAutoReplyConfig(conversationDir, config) {
|
|
|
275
363
|
}
|
|
276
364
|
atomicWritePrivateFile(targetPath, config.rules.join("\n"));
|
|
277
365
|
}
|
|
278
|
-
export function resolveWorkspaceDirFromArgv(args = process.argv.slice(2)) {
|
|
279
|
-
for (let i = 0; i < args.length; i++) {
|
|
280
|
-
const arg = args[i];
|
|
281
|
-
if (arg === "--sandbox" || arg === "--download" || arg === "--state-dir") {
|
|
282
|
-
i += 1;
|
|
283
|
-
continue;
|
|
284
|
-
}
|
|
285
|
-
if (arg === "--version" || arg === "-v" || arg === "-V" || arg === "--onboard") {
|
|
286
|
-
continue;
|
|
287
|
-
}
|
|
288
|
-
if (arg.startsWith("--sandbox=") ||
|
|
289
|
-
arg.startsWith("--download=") ||
|
|
290
|
-
arg.startsWith("--state-dir=")) {
|
|
291
|
-
continue;
|
|
292
|
-
}
|
|
293
|
-
if (!arg.startsWith("-")) {
|
|
294
|
-
return arg;
|
|
295
|
-
}
|
|
296
|
-
}
|
|
297
|
-
return undefined;
|
|
298
|
-
}
|
|
299
|
-
export function resolveStateDirFromArgv(args = process.argv.slice(2)) {
|
|
300
|
-
for (let i = 0; i < args.length; i++) {
|
|
301
|
-
const arg = args[i];
|
|
302
|
-
if (arg.startsWith("--state-dir=")) {
|
|
303
|
-
return resolve(arg.slice("--state-dir=".length));
|
|
304
|
-
}
|
|
305
|
-
if (arg === "--state-dir") {
|
|
306
|
-
return resolve(args[++i] || "");
|
|
307
|
-
}
|
|
308
|
-
}
|
|
309
|
-
return join(homedir(), ".mikan");
|
|
310
|
-
}
|
|
311
366
|
/**
|
|
312
367
|
* True when `child` is `parent` or a path inside it. Purely lexical (no
|
|
313
368
|
* symlink resolution) — used for configuration sanity checks, not as the
|
|
@@ -338,12 +393,13 @@ export function assertStateDirOutsideWorkspace(stateDir, workingDir, sandboxType
|
|
|
338
393
|
}
|
|
339
394
|
throw new Error(message);
|
|
340
395
|
}
|
|
396
|
+
/** Settings-file DSN wins over SENTRY_DSN env — the rule lives only here. */
|
|
397
|
+
function sentryDsnFrom(fromFile) {
|
|
398
|
+
return fromFile || readEnv("SENTRY_DSN");
|
|
399
|
+
}
|
|
341
400
|
export function resolveSentryDsn() {
|
|
342
401
|
const fromFile = normalizeSettingsConfig(loadSettingsFile(getSettingsPath()) ?? {});
|
|
343
|
-
|
|
344
|
-
return fromFile.sentryDsn;
|
|
345
|
-
}
|
|
346
|
-
return process.env.SENTRY_DSN;
|
|
402
|
+
return sentryDsnFrom(fromFile.sentryDsn);
|
|
347
403
|
}
|
|
348
404
|
export function createGlobalSettingsFile(stateDir) {
|
|
349
405
|
const settingsPath = join(stateDir, "settings.json");
|
|
@@ -375,6 +431,9 @@ function compactSettingsConfig(config) {
|
|
|
375
431
|
...(hasDefinedValue(config.sandbox) ? { sandbox: config.sandbox } : {}),
|
|
376
432
|
...(hasDefinedValue(config.autoReply) ? { autoReply: config.autoReply } : {}),
|
|
377
433
|
...(hasDefinedValue(config.slack) ? { slack: config.slack } : {}),
|
|
434
|
+
// An empty list is meaningful (the admin removed the last package) and
|
|
435
|
+
// must survive the round trip, so this checks for the key, not for values.
|
|
436
|
+
...(config.packages !== undefined ? { packages: config.packages } : {}),
|
|
378
437
|
};
|
|
379
438
|
}
|
|
380
439
|
function patchSettingsConfig(existing, config) {
|
|
@@ -390,61 +449,89 @@ function patchSettingsConfig(existing, config) {
|
|
|
390
449
|
...existing.sentry,
|
|
391
450
|
...(config.sentryDsn !== undefined ? { dsn: config.sentryDsn } : {}),
|
|
392
451
|
},
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
...(config.sandboxBoostCpus !== undefined || config.sandboxBoostMemory !== undefined
|
|
398
|
-
? {
|
|
399
|
-
boost: {
|
|
400
|
-
...existing.sandbox?.boost,
|
|
401
|
-
...(config.sandboxBoostCpus !== undefined ? { cpus: config.sandboxBoostCpus } : {}),
|
|
402
|
-
...(config.sandboxBoostMemory !== undefined
|
|
403
|
-
? { memory: config.sandboxBoostMemory }
|
|
404
|
-
: {}),
|
|
405
|
-
},
|
|
406
|
-
}
|
|
407
|
-
: {}),
|
|
408
|
-
...(config.sandboxImageWorkspaceMount !== undefined
|
|
409
|
-
? {
|
|
410
|
-
image: {
|
|
411
|
-
...existing.sandbox?.image,
|
|
412
|
-
workspaceMount: config.sandboxImageWorkspaceMount,
|
|
413
|
-
},
|
|
414
|
-
}
|
|
415
|
-
: {}),
|
|
416
|
-
...(config.defaultSharedVault !== undefined
|
|
417
|
-
? { defaultSharedVault: config.defaultSharedVault }
|
|
418
|
-
: {}),
|
|
419
|
-
},
|
|
452
|
+
// Leaf-level merge: a patch that only sets sandbox.boost.memory keeps the
|
|
453
|
+
// existing boost.cpus (and every other existing leaf). compactSettingsConfig
|
|
454
|
+
// drops the group entirely when it ends up with no defined values.
|
|
455
|
+
sandbox: mergeSandboxSettings(existing.sandbox, config.sandbox) ?? {},
|
|
420
456
|
slack: {
|
|
421
457
|
...existing.slack,
|
|
422
458
|
...config.slack,
|
|
423
459
|
},
|
|
460
|
+
// The package list is replaced wholesale, not merged: the portal edits it
|
|
461
|
+
// as a list, and a merge would make removal impossible.
|
|
462
|
+
...(config.packages !== undefined ? { packages: normalizePackages(config.packages) } : {}),
|
|
424
463
|
};
|
|
425
464
|
return compactSettingsConfig(patched);
|
|
426
465
|
}
|
|
427
|
-
function
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
}
|
|
466
|
+
function loadSettingsFileForUpdate(settingsPath, defaultSettings) {
|
|
467
|
+
if (!existsSync(settingsPath))
|
|
468
|
+
return defaultSettings;
|
|
469
|
+
try {
|
|
470
|
+
return loadSettingsFile(settingsPath) ?? {};
|
|
471
|
+
}
|
|
472
|
+
catch (err) {
|
|
473
|
+
const detail = err instanceof Error ? err.message : String(err);
|
|
474
|
+
const message = detail.startsWith("Malformed settings file")
|
|
475
|
+
? detail.replace("Malformed settings file", "Refusing to overwrite malformed settings file")
|
|
476
|
+
: detail;
|
|
477
|
+
throw new Error(message, { cause: err });
|
|
440
478
|
}
|
|
479
|
+
}
|
|
480
|
+
function updateSettingsFile(settingsPath, patch, defaultSettings) {
|
|
481
|
+
const existing = loadSettingsFileForUpdate(settingsPath, defaultSettings);
|
|
441
482
|
ensureDirExists(dirname(settingsPath));
|
|
442
483
|
atomicWritePrivateFile(settingsPath, JSON.stringify(patchSettingsConfig(existing, patch), null, 2));
|
|
443
484
|
}
|
|
444
485
|
export function updateGlobalSettings(patch) {
|
|
445
486
|
updateSettingsFile(join(getStateDir(), "settings.json"), patch, ONBOARD_SETTINGS);
|
|
446
487
|
}
|
|
447
|
-
export function updateConversationSettings(
|
|
448
|
-
updateSettingsFile(conversationSettingsPath(
|
|
488
|
+
export function updateConversationSettings(office, patch) {
|
|
489
|
+
updateSettingsFile(conversationSettingsPath(office), patch, {});
|
|
490
|
+
}
|
|
491
|
+
/**
|
|
492
|
+
* The conversation's own door-policy override (legacy `image.workspaceMount`
|
|
493
|
+
* included), or null when the office follows the global default.
|
|
494
|
+
*/
|
|
495
|
+
export function loadConversationWorkspaceOverride(office) {
|
|
496
|
+
const file = loadSettingsFile(conversationSettingsPath(office));
|
|
497
|
+
const sandbox = file?.sandbox;
|
|
498
|
+
if (sandbox?.workspace?.doorPolicy === "isolated")
|
|
499
|
+
return { doorPolicy: "isolated" };
|
|
500
|
+
if (sandbox?.workspace?.doorPolicy === "trusted") {
|
|
501
|
+
return {
|
|
502
|
+
doorPolicy: "trusted",
|
|
503
|
+
layout: sandbox.workspace.layout === "full" ? "full" : "shared-support",
|
|
504
|
+
};
|
|
505
|
+
}
|
|
506
|
+
if (sandbox?.image?.workspaceMount === "full")
|
|
507
|
+
return { doorPolicy: "trusted", layout: "full" };
|
|
508
|
+
if (sandbox?.image?.workspaceMount === "private") {
|
|
509
|
+
return { doorPolicy: "trusted", layout: "shared-support" };
|
|
510
|
+
}
|
|
511
|
+
return null;
|
|
512
|
+
}
|
|
513
|
+
export function setConversationWorkspacePolicy(office, choice) {
|
|
514
|
+
writeWorkspacePolicy(conversationSettingsPath(office), choice, {});
|
|
515
|
+
}
|
|
516
|
+
export function setGlobalWorkspacePolicy(choice) {
|
|
517
|
+
writeWorkspacePolicy(join(getStateDir(), "settings.json"), choice, ONBOARD_SETTINGS);
|
|
518
|
+
}
|
|
519
|
+
/**
|
|
520
|
+
* The generic settings patch merges leaves and cannot remove keys, so the
|
|
521
|
+
* door-policy writer edits the file shape directly: it always drops the
|
|
522
|
+
* legacy `image.workspaceMount` (the explicit choice replaces it) and either
|
|
523
|
+
* sets or removes the `workspace` group.
|
|
524
|
+
*/
|
|
525
|
+
function writeWorkspacePolicy(settingsPath, choice, defaultSettings) {
|
|
526
|
+
const existing = loadSettingsFileForUpdate(settingsPath, defaultSettings);
|
|
527
|
+
const { workspaceMount: _legacy, ...image } = existing.sandbox?.image ?? {};
|
|
528
|
+
const { workspace: _previous, image: _image, ...sandboxRest } = existing.sandbox ?? {};
|
|
529
|
+
const sandbox = {
|
|
530
|
+
...sandboxRest,
|
|
531
|
+
...(hasDefinedValue(image) ? { image } : {}),
|
|
532
|
+
...(choice ? { workspace: choice } : {}),
|
|
533
|
+
};
|
|
534
|
+
ensureDirExists(dirname(settingsPath));
|
|
535
|
+
atomicWritePrivateFile(settingsPath, JSON.stringify(compactSettingsConfig({ ...existing, sandbox }), null, 2));
|
|
449
536
|
}
|
|
450
537
|
//# sourceMappingURL=config.js.map
|