@geminixiang/mikan 1.0.0-beta.7 → 1.0.0-beta.71
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 +1052 -0
- package/README.md +98 -38
- package/dist/adapters/commands/admin.d.ts.map +1 -0
- package/dist/{commands → adapters/commands}/admin.js +11 -8
- package/dist/adapters/commands/admin.js.map +1 -0
- package/dist/{commands → adapters/commands}/auto-reply.d.ts +0 -3
- package/dist/adapters/commands/auto-reply.d.ts.map +1 -0
- package/dist/adapters/commands/auto-reply.js +47 -0
- package/dist/adapters/commands/auto-reply.js.map +1 -0
- package/dist/adapters/commands/login.d.ts +6 -0
- package/dist/adapters/commands/login.d.ts.map +1 -0
- package/dist/adapters/commands/login.js +166 -0
- package/dist/adapters/commands/login.js.map +1 -0
- package/dist/adapters/commands/manifest.d.ts +37 -0
- package/dist/adapters/commands/manifest.d.ts.map +1 -0
- package/dist/adapters/commands/manifest.js +155 -0
- package/dist/adapters/commands/manifest.js.map +1 -0
- package/dist/adapters/commands/model.d.ts +15 -0
- package/dist/adapters/commands/model.d.ts.map +1 -0
- package/dist/adapters/commands/model.js +153 -0
- package/dist/adapters/commands/model.js.map +1 -0
- package/dist/adapters/commands/new.d.ts.map +1 -0
- package/dist/adapters/commands/new.js +41 -0
- package/dist/adapters/commands/new.js.map +1 -0
- package/dist/adapters/commands/registry.d.ts +5 -0
- package/dist/adapters/commands/registry.d.ts.map +1 -0
- package/dist/adapters/commands/registry.js +43 -0
- package/dist/adapters/commands/registry.js.map +1 -0
- package/dist/adapters/commands/sandbox.d.ts.map +1 -0
- package/dist/adapters/commands/sandbox.js +125 -0
- package/dist/adapters/commands/sandbox.js.map +1 -0
- package/dist/adapters/commands/session-view.d.ts.map +1 -0
- package/dist/{commands → adapters/commands}/session-view.js +23 -16
- package/dist/adapters/commands/session-view.js.map +1 -0
- package/dist/adapters/commands/types.d.ts +145 -0
- package/dist/adapters/commands/types.d.ts.map +1 -0
- package/dist/adapters/commands/types.js.map +1 -0
- package/dist/adapters/commands/utils.d.ts +14 -0
- package/dist/adapters/commands/utils.d.ts.map +1 -0
- package/dist/{commands → adapters/commands}/utils.js +18 -1
- package/dist/adapters/commands/utils.js.map +1 -0
- package/dist/adapters/discord/bot.d.ts +11 -8
- package/dist/adapters/discord/bot.d.ts.map +1 -1
- package/dist/adapters/discord/bot.js +223 -256
- package/dist/adapters/discord/bot.js.map +1 -1
- package/dist/adapters/discord/components.d.ts +28 -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 +2 -6
- package/dist/adapters/discord/context.d.ts.map +1 -1
- package/dist/adapters/discord/context.js +64 -218
- 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 +84 -0
- package/dist/adapters/discord/format.js.map +1 -0
- package/dist/adapters/discord/types.d.ts +8 -1
- package/dist/adapters/discord/types.d.ts.map +1 -1
- package/dist/adapters/discord/types.js.map +1 -1
- package/dist/adapters/github/bot.d.ts +102 -0
- package/dist/adapters/github/bot.d.ts.map +1 -0
- package/dist/adapters/github/bot.js +720 -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 +301 -0
- package/dist/adapters/github/client.js.map +1 -0
- package/dist/adapters/github/context.d.ts +5 -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/github-ops.d.ts +78 -0
- package/dist/adapters/github/github-ops.d.ts.map +1 -0
- package/dist/adapters/github/github-ops.js +337 -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 +55 -0
- package/dist/adapters/github/tool-pack.js.map +1 -0
- package/dist/adapters/github/tools/checks.d.ts +18 -0
- package/dist/adapters/github/tools/checks.d.ts.map +1 -0
- package/dist/adapters/github/tools/checks.js +86 -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 +345 -0
- package/dist/adapters/github/types.d.ts.map +1 -0
- package/dist/adapters/github/types.js.map +1 -0
- package/dist/adapters/github/webhook.d.ts +20 -0
- package/dist/adapters/github/webhook.d.ts.map +1 -0
- package/dist/adapters/github/webhook.js +78 -0
- package/dist/adapters/github/webhook.js.map +1 -0
- package/dist/adapters/index.d.ts +12 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +19 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/intake.d.ts +17 -6
- package/dist/adapters/intake.d.ts.map +1 -1
- package/dist/adapters/intake.js +96 -27
- package/dist/adapters/intake.js.map +1 -1
- package/dist/adapters/markdown-tables.d.ts +19 -0
- package/dist/adapters/markdown-tables.d.ts.map +1 -0
- package/dist/adapters/markdown-tables.js +152 -0
- package/dist/adapters/markdown-tables.js.map +1 -0
- package/dist/{platform-messages.d.ts → adapters/messages.d.ts} +3 -2
- package/dist/adapters/messages.d.ts.map +1 -0
- package/dist/{platform-messages.js → adapters/messages.js} +4 -1
- package/dist/adapters/messages.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 +443 -0
- package/dist/adapters/progressive-renderer.js.map +1 -0
- package/dist/adapters/shared.d.ts +37 -11
- package/dist/adapters/shared.d.ts.map +1 -1
- package/dist/adapters/shared.js +130 -24
- package/dist/adapters/shared.js.map +1 -1
- package/dist/adapters/slack/assistant.d.ts +73 -0
- package/dist/adapters/slack/assistant.d.ts.map +1 -0
- package/dist/adapters/slack/assistant.js +205 -0
- package/dist/adapters/slack/assistant.js.map +1 -0
- package/dist/adapters/slack/auto-reply-context.d.ts +21 -0
- package/dist/adapters/slack/auto-reply-context.d.ts.map +1 -0
- package/dist/adapters/slack/auto-reply-context.js +28 -0
- package/dist/adapters/slack/auto-reply-context.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 +104 -148
- package/dist/adapters/slack/blocks.js.map +1 -1
- package/dist/adapters/slack/bot.d.ts +154 -21
- package/dist/adapters/slack/bot.d.ts.map +1 -1
- package/dist/adapters/slack/bot.js +1037 -484
- package/dist/adapters/slack/bot.js.map +1 -1
- package/dist/adapters/slack/context.d.ts +2 -6
- 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/jev-context.d.ts +30 -0
- package/dist/adapters/slack/jev-context.d.ts.map +1 -0
- package/dist/adapters/slack/jev-context.js +67 -0
- package/dist/adapters/slack/jev-context.js.map +1 -0
- package/dist/adapters/slack/markdown.d.ts +3 -0
- package/dist/adapters/slack/markdown.d.ts.map +1 -0
- package/dist/adapters/slack/markdown.js +48 -0
- package/dist/adapters/slack/markdown.js.map +1 -0
- package/dist/adapters/slack/persona.d.ts +15 -0
- package/dist/adapters/slack/persona.d.ts.map +1 -0
- package/dist/adapters/slack/persona.js +22 -0
- package/dist/adapters/slack/persona.js.map +1 -0
- package/dist/adapters/slack/response-lifecycle.d.ts +1 -1
- package/dist/adapters/slack/response-lifecycle.d.ts.map +1 -1
- package/dist/adapters/slack/response-lifecycle.js +261 -345
- 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/task-intent.d.ts +32 -0
- package/dist/adapters/slack/task-intent.d.ts.map +1 -0
- package/dist/adapters/slack/task-intent.js +72 -0
- package/dist/adapters/slack/task-intent.js.map +1 -0
- package/dist/adapters/slack/task-status.d.ts +7 -0
- package/dist/adapters/slack/task-status.d.ts.map +1 -0
- package/dist/adapters/slack/task-status.js +107 -0
- package/dist/adapters/slack/task-status.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/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 +73 -2
- 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 +14 -0
- package/dist/adapters/slack/update-diagnostics.d.ts.map +1 -0
- package/dist/adapters/slack/update-diagnostics.js +134 -0
- package/dist/adapters/slack/update-diagnostics.js.map +1 -0
- package/dist/adapters/telegram/bot.d.ts +10 -9
- package/dist/adapters/telegram/bot.d.ts.map +1 -1
- package/dist/adapters/telegram/bot.js +133 -202
- package/dist/adapters/telegram/bot.js.map +1 -1
- package/dist/adapters/telegram/context.d.ts +2 -6
- package/dist/adapters/telegram/context.d.ts.map +1 -1
- package/dist/adapters/telegram/context.js +53 -190
- package/dist/adapters/telegram/context.js.map +1 -1
- package/dist/adapters/telegram/types.d.ts +1 -1
- package/dist/adapters/telegram/types.d.ts.map +1 -1
- package/dist/adapters/telegram/types.js.map +1 -1
- package/dist/adapters/types.d.ts +144 -13
- package/dist/adapters/types.d.ts.map +1 -1
- package/dist/adapters/types.js.map +1 -1
- package/dist/adapters/web/admin/portal.d.ts +44 -0
- package/dist/adapters/web/admin/portal.d.ts.map +1 -0
- package/dist/adapters/web/admin/portal.js +3207 -0
- package/dist/adapters/web/admin/portal.js.map +1 -0
- package/dist/{web → adapters/web}/admin/provider-models.d.ts +1 -1
- package/dist/adapters/web/admin/provider-models.d.ts.map +1 -0
- package/dist/{web → adapters/web}/admin/provider-models.js +1 -1
- package/dist/adapters/web/admin/provider-models.js.map +1 -0
- package/dist/adapters/web/admin/types.d.ts +53 -0
- package/dist/adapters/web/admin/types.d.ts.map +1 -0
- package/dist/adapters/web/admin/types.js.map +1 -0
- package/dist/adapters/web/login/oauth.d.ts +5 -0
- package/dist/adapters/web/login/oauth.d.ts.map +1 -0
- package/dist/{web → adapters/web}/login/oauth.js +50 -85
- package/dist/adapters/web/login/oauth.js.map +1 -0
- package/dist/{web → adapters/web}/login/portal.d.ts +9 -3
- package/dist/adapters/web/login/portal.d.ts.map +1 -0
- package/dist/{web → adapters/web}/login/portal.js +161 -119
- package/dist/adapters/web/login/portal.js.map +1 -0
- package/dist/{web → adapters/web}/login/types.d.ts +1 -12
- package/dist/adapters/web/login/types.d.ts.map +1 -0
- package/dist/adapters/web/login/types.js.map +1 -0
- package/dist/adapters/web/portal-shell.d.ts +22 -0
- package/dist/adapters/web/portal-shell.d.ts.map +1 -0
- package/dist/{portal-shell.js → adapters/web/portal-shell.js} +78 -2
- package/dist/adapters/web/portal-shell.js.map +1 -0
- package/dist/{web → adapters/web}/server.d.ts +14 -8
- package/dist/adapters/web/server.d.ts.map +1 -0
- package/dist/{web → adapters/web}/server.js +14 -7
- package/dist/adapters/web/server.js.map +1 -0
- package/dist/adapters/web/session-view/portal.d.ts +20 -0
- package/dist/adapters/web/session-view/portal.d.ts.map +1 -0
- package/dist/{web → adapters/web}/session-view/portal.js +633 -162
- package/dist/adapters/web/session-view/portal.js.map +1 -0
- package/dist/{web → adapters/web}/session-view/types.d.ts +11 -6
- package/dist/adapters/web/session-view/types.d.ts.map +1 -0
- package/dist/adapters/web/session-view/types.js.map +1 -0
- package/dist/adapters/web/token-store.d.ts.map +1 -0
- package/dist/{web → adapters/web}/token-store.js +1 -1
- package/dist/adapters/web/token-store.js.map +1 -0
- package/dist/adapters/web/types.d.ts.map +1 -0
- package/dist/adapters/web/types.js.map +1 -0
- package/dist/cli/arg-grammar.d.ts +11 -0
- package/dist/cli/arg-grammar.d.ts.map +1 -0
- package/dist/cli/arg-grammar.js +50 -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 +90 -0
- package/dist/cli/boot.js.map +1 -0
- package/dist/cli/download.d.ts.map +1 -0
- package/dist/cli/download.js +88 -0
- package/dist/cli/download.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 +181 -0
- package/dist/cli/office.js.map +1 -0
- package/dist/cli/onboard.d.ts +10 -0
- package/dist/cli/onboard.d.ts.map +1 -0
- package/dist/cli/onboard.js +225 -0
- package/dist/cli/onboard.js.map +1 -0
- package/dist/cli/process-lifecycle.d.ts +19 -0
- package/dist/cli/process-lifecycle.d.ts.map +1 -0
- package/dist/cli/process-lifecycle.js +67 -0
- package/dist/cli/process-lifecycle.js.map +1 -0
- package/dist/cli/sessions.d.ts +2 -0
- package/dist/cli/sessions.d.ts.map +1 -0
- package/dist/cli/sessions.js +88 -0
- package/dist/cli/sessions.js.map +1 -0
- package/dist/cli/types.d.ts +25 -0
- package/dist/cli/types.d.ts.map +1 -0
- package/dist/cli/types.js.map +1 -0
- package/dist/dream/index.d.ts +20 -0
- package/dist/dream/index.d.ts.map +1 -0
- package/dist/dream/index.js +264 -0
- package/dist/dream/index.js.map +1 -0
- package/dist/dream/types.d.ts +30 -0
- package/dist/dream/types.d.ts.map +1 -0
- package/dist/dream/types.js +2 -0
- package/dist/dream/types.js.map +1 -0
- package/dist/env-manifest.d.ts +38 -0
- package/dist/env-manifest.d.ts.map +1 -0
- package/dist/env-manifest.js +260 -0
- package/dist/env-manifest.js.map +1 -0
- package/dist/events/index.d.ts +172 -0
- package/dist/events/index.d.ts.map +1 -0
- package/dist/events/index.js +340 -0
- package/dist/events/index.js.map +1 -0
- package/dist/events/scheduler.d.ts +34 -0
- package/dist/events/scheduler.d.ts.map +1 -0
- package/dist/events/scheduler.js +231 -0
- package/dist/events/scheduler.js.map +1 -0
- package/dist/file-guards.d.ts +26 -0
- package/dist/file-guards.d.ts.map +1 -0
- package/dist/file-guards.js +133 -0
- package/dist/file-guards.js.map +1 -0
- package/dist/harness/execution-env.d.ts +19 -0
- package/dist/harness/execution-env.d.ts.map +1 -0
- package/dist/harness/execution-env.js +262 -0
- package/dist/harness/execution-env.js.map +1 -0
- package/dist/harness/execution-resolver.d.ts +25 -0
- package/dist/harness/execution-resolver.d.ts.map +1 -0
- package/dist/harness/execution-resolver.js +156 -0
- package/dist/harness/execution-resolver.js.map +1 -0
- package/dist/harness/index.d.ts +18 -13
- package/dist/harness/index.d.ts.map +1 -1
- package/dist/harness/index.js +11 -11
- package/dist/harness/index.js.map +1 -1
- package/dist/harness/jev.d.ts +86 -0
- package/dist/harness/jev.d.ts.map +1 -0
- package/dist/harness/jev.js +167 -0
- package/dist/harness/jev.js.map +1 -0
- package/dist/harness/mcp.d.ts +38 -0
- package/dist/harness/mcp.d.ts.map +1 -0
- package/dist/harness/mcp.js +304 -0
- package/dist/harness/mcp.js.map +1 -0
- package/dist/harness/models.d.ts +7 -4
- package/dist/harness/models.d.ts.map +1 -1
- package/dist/harness/models.js +54 -55
- package/dist/harness/models.js.map +1 -1
- package/dist/harness/open-connector.d.ts +25 -0
- package/dist/harness/open-connector.d.ts.map +1 -0
- package/dist/harness/open-connector.js +178 -0
- package/dist/harness/open-connector.js.map +1 -0
- package/dist/harness/presenter.d.ts +31 -0
- package/dist/harness/presenter.d.ts.map +1 -0
- package/dist/harness/presenter.js +859 -0
- package/dist/harness/presenter.js.map +1 -0
- package/dist/harness/prompt.d.ts +30 -0
- package/dist/harness/prompt.d.ts.map +1 -0
- package/dist/harness/prompt.js +420 -0
- package/dist/harness/prompt.js.map +1 -0
- package/dist/harness/runner.d.ts +2 -123
- package/dist/harness/runner.d.ts.map +1 -1
- package/dist/harness/runner.js +551 -416
- package/dist/harness/runner.js.map +1 -1
- package/dist/harness/session.d.ts +122 -0
- package/dist/harness/session.d.ts.map +1 -0
- package/dist/harness/session.js +581 -0
- package/dist/harness/session.js.map +1 -0
- package/dist/harness/skills.d.ts +17 -28
- package/dist/harness/skills.d.ts.map +1 -1
- package/dist/harness/skills.js +104 -39
- 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 +293 -0
- package/dist/harness/subagent-profiles.js.map +1 -0
- package/dist/harness/subagent.d.ts +64 -0
- package/dist/harness/subagent.d.ts.map +1 -0
- package/dist/harness/subagent.js +687 -0
- package/dist/harness/subagent.js.map +1 -0
- package/dist/harness/tools/attach.d.ts.map +1 -0
- package/dist/{adapters/slack → harness}/tools/attach.js +1 -1
- package/dist/harness/tools/attach.js.map +1 -0
- package/dist/{tools → harness/tools}/event.d.ts +4 -33
- package/dist/harness/tools/event.d.ts.map +1 -0
- package/dist/harness/tools/event.js +175 -0
- package/dist/harness/tools/event.js.map +1 -0
- package/dist/harness/tools/generate-image.d.ts +23 -0
- package/dist/harness/tools/generate-image.d.ts.map +1 -0
- package/dist/harness/tools/generate-image.js +65 -0
- package/dist/harness/tools/generate-image.js.map +1 -0
- package/dist/harness/tools/host-fn-tool.d.ts +21 -0
- package/dist/harness/tools/host-fn-tool.d.ts.map +1 -0
- package/dist/harness/tools/host-fn-tool.js +32 -0
- package/dist/harness/tools/host-fn-tool.js.map +1 -0
- package/dist/harness/tools/index.d.ts +41 -0
- package/dist/harness/tools/index.d.ts.map +1 -0
- package/dist/harness/tools/index.js +51 -0
- package/dist/harness/tools/index.js.map +1 -0
- package/dist/harness/tools/jev.d.ts +21 -0
- package/dist/harness/tools/jev.d.ts.map +1 -0
- package/dist/harness/tools/jev.js +109 -0
- package/dist/harness/tools/jev.js.map +1 -0
- package/dist/harness/tools/pi-tools.d.ts +18 -0
- package/dist/harness/tools/pi-tools.d.ts.map +1 -0
- package/dist/harness/tools/pi-tools.js +84 -0
- package/dist/harness/tools/pi-tools.js.map +1 -0
- package/dist/harness/tools/react.d.ts.map +1 -0
- package/dist/{tools → harness/tools}/react.js +6 -17
- package/dist/harness/tools/react.js.map +1 -0
- package/dist/{tools → harness/tools}/sandbox.d.ts +4 -4
- package/dist/harness/tools/sandbox.d.ts.map +1 -0
- package/dist/{tools → harness/tools}/sandbox.js +12 -8
- package/dist/harness/tools/sandbox.js.map +1 -0
- package/dist/harness/tools/subagent.d.ts +85 -0
- package/dist/harness/tools/subagent.d.ts.map +1 -0
- package/dist/harness/tools/subagent.js +677 -0
- package/dist/harness/tools/subagent.js.map +1 -0
- package/dist/harness/tools/task.d.ts +20 -0
- package/dist/harness/tools/task.d.ts.map +1 -0
- package/dist/harness/tools/task.js +79 -0
- package/dist/harness/tools/task.js.map +1 -0
- package/dist/harness/tools/types.d.ts +29 -0
- package/dist/harness/tools/types.d.ts.map +1 -0
- package/dist/harness/tools/types.js +2 -0
- package/dist/harness/tools/types.js.map +1 -0
- package/dist/harness/types.d.ts +384 -25
- package/dist/harness/types.d.ts.map +1 -1
- package/dist/harness/types.js +1 -1
- package/dist/harness/types.js.map +1 -1
- package/dist/index.d.ts +33 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -6
- package/dist/index.js.map +1 -1
- package/dist/log.d.ts.map +1 -1
- package/dist/log.js +4 -1
- package/dist/log.js.map +1 -1
- package/dist/main.js +357 -198
- package/dist/main.js.map +1 -1
- package/dist/observability/index.d.ts +33 -0
- package/dist/observability/index.d.ts.map +1 -0
- package/dist/observability/index.js +257 -0
- package/dist/observability/index.js.map +1 -0
- package/dist/observability/instrument.js +14 -6
- package/dist/observability/instrument.js.map +1 -1
- package/dist/observability/otel.d.ts +10 -0
- package/dist/observability/otel.d.ts.map +1 -0
- package/dist/observability/otel.js +183 -0
- package/dist/observability/otel.js.map +1 -0
- package/dist/observability/sentry.d.ts +40 -7
- package/dist/observability/sentry.d.ts.map +1 -1
- package/dist/observability/sentry.js +176 -32
- package/dist/observability/sentry.js.map +1 -1
- package/dist/observability/types.d.ts +24 -3
- package/dist/observability/types.d.ts.map +1 -1
- package/dist/observability/types.js.map +1 -1
- package/dist/office/index.d.ts +139 -0
- package/dist/office/index.d.ts.map +1 -0
- package/dist/office/index.js +1084 -0
- package/dist/office/index.js.map +1 -0
- package/dist/office/projection.d.ts +42 -0
- package/dist/office/projection.d.ts.map +1 -0
- package/dist/office/projection.js +182 -0
- package/dist/office/projection.js.map +1 -0
- package/dist/office/types.d.ts +116 -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/runtime/conversation-runtime.d.ts +1 -1
- package/dist/runtime/conversation-runtime.d.ts.map +1 -1
- package/dist/runtime/conversation-runtime.js +423 -152
- package/dist/runtime/conversation-runtime.js.map +1 -1
- package/dist/runtime/session-lifecycle.d.ts +76 -0
- package/dist/runtime/session-lifecycle.d.ts.map +1 -0
- package/dist/runtime/session-lifecycle.js +404 -0
- package/dist/runtime/session-lifecycle.js.map +1 -0
- package/dist/runtime/types.d.ts +63 -15
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/runtime/types.js.map +1 -1
- package/dist/sandbox/cloudflare.d.ts +4 -0
- package/dist/sandbox/cloudflare.d.ts.map +1 -1
- package/dist/sandbox/cloudflare.js +54 -52
- package/dist/sandbox/cloudflare.js.map +1 -1
- package/dist/sandbox/container.d.ts +3 -0
- package/dist/sandbox/container.d.ts.map +1 -1
- package/dist/sandbox/container.js +19 -7
- package/dist/sandbox/container.js.map +1 -1
- package/dist/sandbox/host.d.ts +3 -0
- package/dist/sandbox/host.d.ts.map +1 -1
- package/dist/sandbox/host.js +44 -35
- package/dist/sandbox/host.js.map +1 -1
- package/dist/sandbox/identity.d.ts +42 -0
- package/dist/sandbox/identity.d.ts.map +1 -0
- package/dist/sandbox/identity.js +77 -0
- package/dist/sandbox/identity.js.map +1 -0
- package/dist/sandbox/index.d.ts +24 -6
- package/dist/sandbox/index.d.ts.map +1 -1
- package/dist/sandbox/index.js +77 -17
- package/dist/sandbox/index.js.map +1 -1
- package/dist/sandbox/provisioner.d.ts +139 -0
- package/dist/sandbox/provisioner.d.ts.map +1 -0
- package/dist/{provisioner.js → sandbox/provisioner.js} +378 -24
- package/dist/sandbox/provisioner.js.map +1 -0
- package/dist/sandbox/types.d.ts +43 -9
- package/dist/sandbox/types.d.ts.map +1 -1
- package/dist/sandbox/types.js.map +1 -1
- package/dist/sandbox/utils.d.ts +24 -0
- package/dist/sandbox/utils.d.ts.map +1 -1
- package/dist/sandbox/utils.js +92 -1
- package/dist/sandbox/utils.js.map +1 -1
- package/dist/sessions/chat-history-sync.d.ts +23 -0
- package/dist/sessions/chat-history-sync.d.ts.map +1 -0
- package/dist/sessions/{agent-memory-file-manager.js → chat-history-sync.js} +239 -175
- package/dist/sessions/chat-history-sync.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/migrate-common.d.ts +43 -0
- package/dist/sessions/migrate-common.d.ts.map +1 -0
- package/dist/sessions/migrate-common.js +99 -0
- package/dist/sessions/migrate-common.js.map +1 -0
- package/dist/sessions/migrate-pi-084.d.ts +8 -0
- package/dist/sessions/migrate-pi-084.d.ts.map +1 -0
- package/dist/sessions/migrate-pi-084.js +302 -0
- package/dist/sessions/migrate-pi-084.js.map +1 -0
- package/dist/sessions/migrate-v3.d.ts +15 -0
- package/dist/sessions/migrate-v3.d.ts.map +1 -0
- package/dist/sessions/migrate-v3.js +419 -0
- package/dist/sessions/migrate-v3.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/session-store.d.ts +61 -0
- package/dist/sessions/session-store.d.ts.map +1 -0
- package/dist/sessions/session-store.js +684 -0
- package/dist/sessions/session-store.js.map +1 -0
- package/dist/sessions/store.d.ts +17 -10
- package/dist/sessions/store.d.ts.map +1 -1
- package/dist/sessions/store.js +182 -47
- package/dist/sessions/store.js.map +1 -1
- package/dist/sessions/types.d.ts +74 -8
- package/dist/sessions/types.d.ts.map +1 -1
- package/dist/sessions/types.js +1 -1
- package/dist/sessions/types.js.map +1 -1
- package/dist/settings/apply.d.ts +16 -0
- package/dist/settings/apply.d.ts.map +1 -0
- package/dist/settings/apply.js +60 -0
- package/dist/settings/apply.js.map +1 -0
- package/dist/settings/index.d.ts +126 -0
- package/dist/settings/index.d.ts.map +1 -0
- package/dist/settings/index.js +422 -0
- package/dist/settings/index.js.map +1 -0
- package/dist/settings/migrate.d.ts +21 -0
- package/dist/settings/migrate.d.ts.map +1 -0
- package/dist/settings/migrate.js +86 -0
- package/dist/settings/migrate.js.map +1 -0
- package/dist/types.d.ts +330 -141
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +2 -2
- package/dist/types.js.map +1 -1
- package/dist/vault/index.d.ts +52 -2
- package/dist/vault/index.d.ts.map +1 -1
- package/dist/vault/index.js +218 -86
- 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/package.json +79 -40
- package/dist/adapter.d.ts +0 -2
- package/dist/adapter.d.ts.map +0 -1
- package/dist/adapter.js +0 -2
- package/dist/adapter.js.map +0 -1
- package/dist/adapters/slack/tools/attach.d.ts.map +0 -1
- package/dist/adapters/slack/tools/attach.js.map +0 -1
- 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/agent-events.d.ts +0 -5
- package/dist/agent-events.d.ts.map +0 -1
- package/dist/agent-events.js +0 -26
- package/dist/agent-events.js.map +0 -1
- package/dist/agent.d.ts +0 -39
- package/dist/agent.d.ts.map +0 -1
- package/dist/agent.js +0 -1291
- package/dist/agent.js.map +0 -1
- package/dist/cli/ext-git.d.ts +0 -22
- package/dist/cli/ext-git.d.ts.map +0 -1
- package/dist/cli/ext-git.js +0 -76
- package/dist/cli/ext-git.js.map +0 -1
- package/dist/cli/ext.d.ts +0 -2
- package/dist/cli/ext.d.ts.map +0 -1
- package/dist/cli/ext.js +0 -217
- package/dist/cli/ext.js.map +0 -1
- package/dist/commands/admin.d.ts.map +0 -1
- package/dist/commands/admin.js.map +0 -1
- package/dist/commands/auto-reply.d.ts.map +0 -1
- package/dist/commands/auto-reply.js +0 -76
- package/dist/commands/auto-reply.js.map +0 -1
- package/dist/commands/extensions.d.ts +0 -14
- package/dist/commands/extensions.d.ts.map +0 -1
- package/dist/commands/extensions.js +0 -55
- package/dist/commands/extensions.js.map +0 -1
- package/dist/commands/login.d.ts +0 -5
- package/dist/commands/login.d.ts.map +0 -1
- package/dist/commands/login.js +0 -115
- package/dist/commands/login.js.map +0 -1
- package/dist/commands/model.d.ts +0 -10
- package/dist/commands/model.d.ts.map +0 -1
- package/dist/commands/model.js +0 -102
- package/dist/commands/model.js.map +0 -1
- package/dist/commands/new.d.ts.map +0 -1
- package/dist/commands/new.js +0 -25
- package/dist/commands/new.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/commands/registry.d.ts +0 -5
- package/dist/commands/registry.d.ts.map +0 -1
- package/dist/commands/registry.js +0 -31
- package/dist/commands/registry.js.map +0 -1
- package/dist/commands/sandbox.d.ts.map +0 -1
- package/dist/commands/sandbox.js +0 -78
- package/dist/commands/sandbox.js.map +0 -1
- package/dist/commands/session-view.d.ts.map +0 -1
- package/dist/commands/session-view.js.map +0 -1
- package/dist/commands/types.d.ts +0 -66
- package/dist/commands/types.d.ts.map +0 -1
- package/dist/commands/types.js.map +0 -1
- package/dist/commands/utils.d.ts +0 -11
- package/dist/commands/utils.d.ts.map +0 -1
- package/dist/commands/utils.js.map +0 -1
- package/dist/config.d.ts +0 -78
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js +0 -450
- package/dist/config.js.map +0 -1
- package/dist/download.d.ts.map +0 -1
- package/dist/download.js +0 -89
- package/dist/download.js.map +0 -1
- package/dist/events.d.ts +0 -43
- package/dist/events.d.ts.map +0 -1
- package/dist/events.js +0 -456
- package/dist/events.js.map +0 -1
- package/dist/execution-resolver.d.ts +0 -21
- package/dist/execution-resolver.d.ts.map +0 -1
- package/dist/execution-resolver.js +0 -170
- package/dist/execution-resolver.js.map +0 -1
- package/dist/harness/auth.d.ts +0 -16
- package/dist/harness/auth.d.ts.map +0 -1
- package/dist/harness/auth.js +0 -86
- package/dist/harness/auth.js.map +0 -1
- package/dist/harness/extensions/loader.d.ts +0 -86
- package/dist/harness/extensions/loader.d.ts.map +0 -1
- package/dist/harness/extensions/loader.js +0 -525
- package/dist/harness/extensions/loader.js.map +0 -1
- package/dist/harness/extensions/registry.d.ts +0 -23
- package/dist/harness/extensions/registry.d.ts.map +0 -1
- package/dist/harness/extensions/registry.js +0 -45
- package/dist/harness/extensions/registry.js.map +0 -1
- package/dist/harness/extensions/types.d.ts +0 -248
- package/dist/harness/extensions/types.d.ts.map +0 -1
- package/dist/harness/extensions/types.js.map +0 -1
- package/dist/harness/session-store.d.ts +0 -77
- package/dist/harness/session-store.d.ts.map +0 -1
- package/dist/harness/session-store.js +0 -248
- package/dist/harness/session-store.js.map +0 -1
- package/dist/harness/settings.d.ts +0 -47
- package/dist/harness/settings.d.ts.map +0 -1
- package/dist/harness/settings.js +0 -29
- package/dist/harness/settings.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/platform-messages.d.ts.map +0 -1
- package/dist/platform-messages.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/provisioner.d.ts +0 -61
- package/dist/provisioner.d.ts.map +0 -1
- package/dist/provisioner.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/errors.d.ts +0 -6
- package/dist/sandbox/errors.d.ts.map +0 -1
- package/dist/sandbox/errors.js +0 -11
- package/dist/sandbox/errors.js.map +0 -1
- package/dist/sandbox/firecracker.d.ts +0 -15
- package/dist/sandbox/firecracker.d.ts.map +0 -1
- package/dist/sandbox/firecracker.js +0 -212
- package/dist/sandbox/firecracker.js.map +0 -1
- package/dist/sandbox/image.d.ts +0 -3
- package/dist/sandbox/image.d.ts.map +0 -1
- package/dist/sandbox/image.js +0 -27
- package/dist/sandbox/image.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/bash.d.ts +0 -10
- package/dist/tools/bash.d.ts.map +0 -1
- package/dist/tools/bash.js +0 -80
- package/dist/tools/bash.js.map +0 -1
- package/dist/tools/edit.d.ts +0 -11
- package/dist/tools/edit.d.ts.map +0 -1
- package/dist/tools/edit.js +0 -131
- package/dist/tools/edit.js.map +0 -1
- package/dist/tools/event.d.ts.map +0 -1
- package/dist/tools/event.js +0 -252
- package/dist/tools/event.js.map +0 -1
- package/dist/tools/index.d.ts +0 -24
- package/dist/tools/index.d.ts.map +0 -1
- package/dist/tools/index.js +0 -31
- package/dist/tools/index.js.map +0 -1
- package/dist/tools/react.d.ts.map +0 -1
- package/dist/tools/react.js.map +0 -1
- package/dist/tools/read.d.ts +0 -11
- package/dist/tools/read.d.ts.map +0 -1
- package/dist/tools/read.js +0 -134
- package/dist/tools/read.js.map +0 -1
- package/dist/tools/sandbox.d.ts.map +0 -1
- package/dist/tools/sandbox.js.map +0 -1
- package/dist/tools/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/tools/types.d.ts +0 -54
- package/dist/tools/types.d.ts.map +0 -1
- package/dist/tools/types.js.map +0 -1
- package/dist/tools/write.d.ts +0 -10
- package/dist/tools/write.d.ts.map +0 -1
- package/dist/tools/write.js +0 -29
- package/dist/tools/write.js.map +0 -1
- package/dist/trigger.d.ts +0 -22
- package/dist/trigger.d.ts.map +0 -1
- package/dist/trigger.js +0 -100
- package/dist/trigger.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/file-guards.d.ts +0 -9
- package/dist/utils/file-guards.d.ts.map +0 -1
- package/dist/utils/file-guards.js +0 -59
- package/dist/utils/file-guards.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/admin/portal.d.ts +0 -5
- package/dist/web/admin/portal.d.ts.map +0 -1
- package/dist/web/admin/portal.js +0 -2572
- package/dist/web/admin/portal.js.map +0 -1
- package/dist/web/admin/provider-models.d.ts.map +0 -1
- package/dist/web/admin/provider-models.js.map +0 -1
- package/dist/web/admin/store.d.ts +0 -13
- package/dist/web/admin/store.d.ts.map +0 -1
- package/dist/web/admin/store.js +0 -14
- package/dist/web/admin/store.js.map +0 -1
- package/dist/web/admin/types.d.ts +0 -30
- package/dist/web/admin/types.d.ts.map +0 -1
- package/dist/web/admin/types.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/login/oauth.d.ts +0 -6
- package/dist/web/login/oauth.d.ts.map +0 -1
- package/dist/web/login/oauth.js.map +0 -1
- package/dist/web/login/portal.d.ts.map +0 -1
- package/dist/web/login/portal.js.map +0 -1
- package/dist/web/login/store.d.ts +0 -8
- package/dist/web/login/store.d.ts.map +0 -1
- package/dist/web/login/store.js +0 -15
- package/dist/web/login/store.js.map +0 -1
- package/dist/web/login/types.d.ts.map +0 -1
- package/dist/web/login/types.js.map +0 -1
- package/dist/web/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/server.d.ts.map +0 -1
- package/dist/web/server.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/web/session-view/portal.d.ts +0 -13
- package/dist/web/session-view/portal.d.ts.map +0 -1
- package/dist/web/session-view/portal.js.map +0 -1
- package/dist/web/session-view/service.d.ts +0 -6
- package/dist/web/session-view/service.d.ts.map +0 -1
- package/dist/web/session-view/service.js +0 -498
- package/dist/web/session-view/service.js.map +0 -1
- package/dist/web/session-view/store.d.ts +0 -8
- package/dist/web/session-view/store.d.ts.map +0 -1
- package/dist/web/session-view/store.js +0 -15
- package/dist/web/session-view/store.js.map +0 -1
- package/dist/web/session-view/types.d.ts.map +0 -1
- package/dist/web/session-view/types.js.map +0 -1
- package/dist/web/token-store.d.ts.map +0 -1
- package/dist/web/token-store.js.map +0 -1
- package/dist/web/types.d.ts.map +0 -1
- package/dist/web/types.js.map +0 -1
- /package/dist/{commands → adapters/commands}/admin.d.ts +0 -0
- /package/dist/{commands → adapters/commands}/new.d.ts +0 -0
- /package/dist/{commands → adapters/commands}/sandbox.d.ts +0 -0
- /package/dist/{commands → adapters/commands}/session-view.d.ts +0 -0
- /package/dist/{commands → adapters/commands}/types.js +0 -0
- /package/dist/{harness/extensions → adapters/github}/types.js +0 -0
- /package/dist/{tools → adapters/web/admin}/types.js +0 -0
- /package/dist/{web/admin → adapters/web/login}/types.js +0 -0
- /package/dist/{web/login → adapters/web/session-view}/types.js +0 -0
- /package/dist/{web → adapters/web}/token-store.d.ts +0 -0
- /package/dist/{web → adapters/web}/types.d.ts +0 -0
- /package/dist/{web/session-view → adapters/web}/types.js +0 -0
- /package/dist/{download.d.ts → cli/download.d.ts} +0 -0
- /package/dist/{web → cli}/types.js +0 -0
- /package/dist/{adapters/slack → harness}/tools/attach.d.ts +0 -0
- /package/dist/{tools → harness/tools}/react.d.ts +0 -0
package/dist/main.js
CHANGED
|
@@ -1,38 +1,47 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import "./observability/instrument.js";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { fileURLToPath } from "url";
|
|
7
|
-
import { dirname, join as pathJoin } from "path";
|
|
3
|
+
import { existsSync, mkdirSync, readFileSync, statSync, writeFileSync } from "node:fs";
|
|
4
|
+
import { dirname, join } from "node:path";
|
|
5
|
+
import { fileURLToPath } from "node:url";
|
|
8
6
|
import { DiscordMessagingBot } from "./adapters/discord/bot.js";
|
|
7
|
+
import { GithubMessagingBot } from "./adapters/github/bot.js";
|
|
8
|
+
import { createGithubToolPack } from "./adapters/github/tool-pack.js";
|
|
9
9
|
import { TelegramMessagingBot } from "./adapters/telegram/bot.js";
|
|
10
10
|
import { SlackMessagingBot as SlackMessagingBotClass } from "./adapters/slack/bot.js";
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
11
|
+
import { createSlackToolPack } from "./adapters/slack/tool-pack.js";
|
|
12
|
+
import { downloadChannel } from "./cli/download.js";
|
|
13
|
+
import { DreamScheduler } from "./dream/index.js";
|
|
14
|
+
import { EventScheduler } from "./events/scheduler.js";
|
|
13
15
|
import * as log from "./log.js";
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
21
|
-
import {
|
|
22
|
-
import {
|
|
23
|
-
import {
|
|
24
|
-
import {
|
|
16
|
+
import { createProcessShutdownHandler, runShutdownSteps } from "./cli/process-lifecycle.js";
|
|
17
|
+
import { startWebServer } from "./adapters/web/server.js";
|
|
18
|
+
import { InMemoryAdminTokenStore } from "./adapters/web/admin/portal.js";
|
|
19
|
+
import { InMemoryLinkTokenStore } from "./adapters/web/login/portal.js";
|
|
20
|
+
import { InMemorySessionViewTokenStore } from "./adapters/web/session-view/portal.js";
|
|
21
|
+
import { DockerContainerManager } from "./sandbox/provisioner.js";
|
|
22
|
+
import { loadGlobalSettings, MissingGlobalSettingsError } from "./settings/index.js";
|
|
23
|
+
import { assertStateDirOutsideWorkspace } from "./file-guards.js";
|
|
24
|
+
import { resolveLinkBaseUrl } from "./env-manifest.js";
|
|
25
|
+
import { configureHttpDispatcher, defaultModelsJsonPath, parseHttpIdleTimeoutMs, } from "./harness/index.js";
|
|
26
|
+
import { readEnv, setEnvAliases } from "./env-manifest.js";
|
|
27
|
+
import { ensureDirExists, isRecord, readJsonFileIfExists } from "./file-guards.js";
|
|
28
|
+
import { SandboxError, validateSandbox } from "./sandbox/index.js";
|
|
29
|
+
import { helpText, resolveBoot } from "./cli/boot.js";
|
|
30
|
+
import { runOnboardCommand } from "./cli/onboard.js";
|
|
31
|
+
import { envReport, noPlatformsMessage, platformIsActive } from "./env-manifest.js";
|
|
25
32
|
import { FileVaultManager } from "./vault/index.js";
|
|
26
|
-
import {
|
|
33
|
+
import { runOfficeCommand } from "./cli/office.js";
|
|
34
|
+
import { runSessionsCommand } from "./cli/sessions.js";
|
|
35
|
+
import { buildContainerBindTranslator, createWorkspace, formatUnmigratedOfficesError, migrateLegacyOffices, OfficeRegistry, } from "./office/index.js";
|
|
27
36
|
import { createConversationRuntime } from "./runtime/conversation-runtime.js";
|
|
28
|
-
import {
|
|
29
|
-
import * as Sentry from "@sentry/node";
|
|
37
|
+
import { captureError, shutdownObservability } from "./observability/index.js";
|
|
30
38
|
function getVersion() {
|
|
31
39
|
// Try to find package.json in the dist directory or parent
|
|
40
|
+
const moduleDir = dirname(fileURLToPath(import.meta.url));
|
|
32
41
|
const possiblePaths = [
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
42
|
+
join(moduleDir, "package.json"),
|
|
43
|
+
join(dirname(moduleDir), "package.json"),
|
|
44
|
+
join(process.cwd(), "package.json"),
|
|
36
45
|
];
|
|
37
46
|
for (const pkgPath of possiblePaths) {
|
|
38
47
|
const pkg = readJsonFileIfExists(pkgPath, (value) => isRecord(value), () => "Ignoring package.json while resolving version");
|
|
@@ -45,57 +54,28 @@ const SLACK_APP_TOKEN = readEnv("SLACK_APP_TOKEN");
|
|
|
45
54
|
const SLACK_BOT_TOKEN = readEnv("SLACK_BOT_TOKEN");
|
|
46
55
|
const TELEGRAM_BOT_TOKEN = readEnv("TELEGRAM_BOT_TOKEN");
|
|
47
56
|
const DISCORD_BOT_TOKEN = readEnv("DISCORD_BOT_TOKEN");
|
|
48
|
-
const
|
|
57
|
+
const GITHUB_APP_ID = readEnv("GITHUB_APP_ID");
|
|
58
|
+
const GITHUB_APP_PRIVATE_KEY = readEnv("GITHUB_APP_PRIVATE_KEY");
|
|
59
|
+
const GITHUB_APP_PRIVATE_KEY_PATH = readEnv("GITHUB_APP_PRIVATE_KEY_PATH");
|
|
60
|
+
const GITHUB_INSTALLATION_ID = readEnv("GITHUB_INSTALLATION_ID");
|
|
61
|
+
const GITHUB_REPOS = readEnv("GITHUB_REPOS");
|
|
62
|
+
const GITHUB_POLL_INTERVAL = readEnv("GITHUB_POLL_INTERVAL");
|
|
63
|
+
const GITHUB_WEBHOOK_SECRET = readEnv("GITHUB_WEBHOOK_SECRET");
|
|
64
|
+
// Externally-visible base URL of the link/OAuth server; the env read and
|
|
65
|
+
// trailing-slash normalization live in config.resolveLinkBaseUrl.
|
|
66
|
+
const LINK_BASE_URL = resolveLinkBaseUrl();
|
|
49
67
|
const LINK_PORT_RAW = readEnv("LINK_PORT");
|
|
50
|
-
const LINK_PORT = LINK_PORT_RAW ? parseInt(LINK_PORT_RAW, 10) :
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
let stateDirArg;
|
|
56
|
-
let downloadChannelId;
|
|
57
|
-
let showOnboard = false;
|
|
58
|
-
let showVersion = false;
|
|
59
|
-
for (let i = 0; i < args.length; i++) {
|
|
60
|
-
const arg = args[i];
|
|
61
|
-
if (arg === "--version" || arg === "-v" || arg === "-V") {
|
|
62
|
-
showVersion = true;
|
|
63
|
-
}
|
|
64
|
-
else if (arg === "--onboard") {
|
|
65
|
-
showOnboard = true;
|
|
66
|
-
}
|
|
67
|
-
else if (arg.startsWith("--sandbox=")) {
|
|
68
|
-
sandbox = parseSandboxArg(arg.slice("--sandbox=".length));
|
|
69
|
-
}
|
|
70
|
-
else if (arg === "--sandbox") {
|
|
71
|
-
sandbox = parseSandboxArg(args[++i] || "");
|
|
72
|
-
}
|
|
73
|
-
else if (arg.startsWith("--state-dir=")) {
|
|
74
|
-
stateDirArg = arg.slice("--state-dir=".length);
|
|
75
|
-
}
|
|
76
|
-
else if (arg === "--state-dir") {
|
|
77
|
-
stateDirArg = args[++i];
|
|
78
|
-
}
|
|
79
|
-
else if (arg.startsWith("--download=")) {
|
|
80
|
-
downloadChannelId = arg.slice("--download=".length);
|
|
81
|
-
}
|
|
82
|
-
else if (arg === "--download") {
|
|
83
|
-
downloadChannelId = args[++i];
|
|
84
|
-
}
|
|
85
|
-
else if (!arg.startsWith("-")) {
|
|
86
|
-
workingDir = arg;
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
return {
|
|
90
|
-
workingDir: workingDir ? resolve(workingDir) : undefined,
|
|
91
|
-
stateDir: stateDirArg ? resolve(stateDirArg) : undefined,
|
|
92
|
-
sandbox,
|
|
93
|
-
downloadChannel: downloadChannelId,
|
|
94
|
-
showOnboard,
|
|
95
|
-
showVersion,
|
|
96
|
-
};
|
|
97
|
-
}
|
|
68
|
+
const LINK_PORT = LINK_PORT_RAW ? parseInt(LINK_PORT_RAW, 10) : LINK_BASE_URL ? 8181 : undefined;
|
|
69
|
+
const OPENCONNECTOR_ENDPOINT = readEnv("OPENCONNECTOR_ENDPOINT");
|
|
70
|
+
const openConnector = OPENCONNECTOR_ENDPOINT
|
|
71
|
+
? { url: OPENCONNECTOR_ENDPOINT }
|
|
72
|
+
: undefined;
|
|
98
73
|
const WORLD_WRITABLE_MODE = 0o002;
|
|
74
|
+
// How long in-flight runs (and messages already queued behind them) may keep
|
|
75
|
+
// running after a shutdown signal before they are aborted. pm2 fork-mode reload
|
|
76
|
+
// is sequential, so this is also the window where no process is connected to
|
|
77
|
+
// the platforms; Slack's documented redelivery schedule ends at five minutes.
|
|
78
|
+
const SHUTDOWN_DRAIN_TIMEOUT_MS = 5 * 60_000;
|
|
99
79
|
function ensureSecureStateDir(path) {
|
|
100
80
|
let stat;
|
|
101
81
|
try {
|
|
@@ -150,38 +130,44 @@ function handleStartupError(error) {
|
|
|
150
130
|
console.error(String(error));
|
|
151
131
|
process.exit(1);
|
|
152
132
|
}
|
|
153
|
-
|
|
154
|
-
// bot-mode argument parsing (which requires a workspace dir and tokens).
|
|
155
|
-
if (process.argv[2] === "ext") {
|
|
156
|
-
const code = await runExtCommand(process.argv.slice(3));
|
|
157
|
-
process.exit(code);
|
|
158
|
-
}
|
|
159
|
-
let parsedArgs;
|
|
133
|
+
let plan;
|
|
160
134
|
try {
|
|
161
|
-
|
|
135
|
+
plan = resolveBoot();
|
|
162
136
|
}
|
|
163
137
|
catch (error) {
|
|
164
138
|
handleStartupError(error);
|
|
165
139
|
}
|
|
140
|
+
// `mikan office …` inspects/claims conversation offices and exits.
|
|
141
|
+
if (plan.mode === "office") {
|
|
142
|
+
process.exit(runOfficeCommand(plan.officeArgs ?? []));
|
|
143
|
+
}
|
|
144
|
+
// `mikan sessions …` migrates/maintains session files and exits.
|
|
145
|
+
if (plan.mode === "sessions") {
|
|
146
|
+
process.exit(await runSessionsCommand(plan.sessionsArgs ?? []));
|
|
147
|
+
}
|
|
166
148
|
// Global fetch: proxy support (HTTP_PROXY/HTTPS_PROXY/NO_PROXY) and idle
|
|
167
149
|
// timeouts so a stalled LLM stream errors out instead of hanging a session.
|
|
168
150
|
const httpIdleTimeoutMs = parseHttpIdleTimeoutMs(readEnv("HTTP_IDLE_TIMEOUT"));
|
|
169
151
|
configureHttpDispatcher(httpIdleTimeoutMs);
|
|
170
|
-
|
|
171
|
-
|
|
152
|
+
if (plan.mode === "help") {
|
|
153
|
+
console.log(helpText());
|
|
154
|
+
process.exit(0);
|
|
155
|
+
}
|
|
156
|
+
if (plan.mode === "env") {
|
|
157
|
+
console.log(envReport());
|
|
158
|
+
process.exit(0);
|
|
159
|
+
}
|
|
160
|
+
if (plan.mode === "version") {
|
|
172
161
|
console.log(getVersion());
|
|
173
162
|
process.exit(0);
|
|
174
163
|
}
|
|
175
|
-
// Handle
|
|
176
|
-
if (
|
|
177
|
-
const stateDir =
|
|
164
|
+
// Handle onboard mode
|
|
165
|
+
if (plan.mode === "onboard") {
|
|
166
|
+
const stateDir = plan.stateDir;
|
|
178
167
|
setEnvAliases("STATE_DIR", stateDir);
|
|
179
168
|
ensureSecureStateDir(stateDir);
|
|
180
169
|
try {
|
|
181
|
-
|
|
182
|
-
console.log(`Created global settings at ${settingsPath}`);
|
|
183
|
-
console.log("Review the file, then start mikan with your working directory.");
|
|
184
|
-
process.exit(0);
|
|
170
|
+
process.exit(await runOnboardCommand(stateDir));
|
|
185
171
|
}
|
|
186
172
|
catch (err) {
|
|
187
173
|
console.error(err instanceof Error ? err.message : String(err));
|
|
@@ -189,53 +175,89 @@ if (parsedArgs.showOnboard) {
|
|
|
189
175
|
}
|
|
190
176
|
}
|
|
191
177
|
// Handle --download mode (Slack only)
|
|
192
|
-
if (
|
|
178
|
+
if (plan.mode === "download" && plan.downloadChannel) {
|
|
193
179
|
if (!SLACK_BOT_TOKEN) {
|
|
194
180
|
console.error("Missing env: SLACK_BOT_TOKEN");
|
|
195
181
|
process.exit(1);
|
|
196
182
|
}
|
|
197
|
-
await downloadChannel(
|
|
183
|
+
await downloadChannel(plan.downloadChannel, SLACK_BOT_TOKEN);
|
|
198
184
|
process.exit(0);
|
|
199
185
|
}
|
|
200
|
-
// Normal bot mode -
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
console.error(" mikan --download <channel-id>");
|
|
205
|
-
process.exit(1);
|
|
206
|
-
}
|
|
207
|
-
const { workingDir, sandbox } = { workingDir: parsedArgs.workingDir, sandbox: parsedArgs.sandbox };
|
|
208
|
-
const stateDir = parsedArgs.stateDir ?? join(homedir(), ".mikan");
|
|
186
|
+
// Normal bot mode - working dir is optional and defaults under the state dir
|
|
187
|
+
const sandbox = plan.sandbox;
|
|
188
|
+
const stateDir = plan.stateDir;
|
|
189
|
+
const workingDir = plan.workingDir;
|
|
209
190
|
setEnvAliases("STATE_DIR", stateDir);
|
|
210
191
|
ensureSecureStateDir(stateDir);
|
|
192
|
+
if (!plan.workingDirExplicit) {
|
|
193
|
+
ensureDirExists(workingDir);
|
|
194
|
+
}
|
|
211
195
|
try {
|
|
212
196
|
assertStateDirOutsideWorkspace(stateDir, workingDir, sandbox.type);
|
|
213
197
|
}
|
|
214
198
|
catch (error) {
|
|
215
199
|
handleStartupError(error);
|
|
216
200
|
}
|
|
217
|
-
// Validate platform tokens
|
|
218
|
-
const hasSlack =
|
|
219
|
-
const hasTelegram =
|
|
220
|
-
const hasDiscord =
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
" Telegram: TELEGRAM_BOT_TOKEN\n" +
|
|
225
|
-
" Discord: DISCORD_BOT_TOKEN");
|
|
201
|
+
// Validate platform tokens — activation rules live in the env manifest.
|
|
202
|
+
const hasSlack = platformIsActive("slack");
|
|
203
|
+
const hasTelegram = platformIsActive("telegram");
|
|
204
|
+
const hasDiscord = platformIsActive("discord");
|
|
205
|
+
const hasGithub = platformIsActive("github");
|
|
206
|
+
if (!hasSlack && !hasTelegram && !hasDiscord && !hasGithub) {
|
|
207
|
+
console.error(noPlatformsMessage());
|
|
226
208
|
process.exit(1);
|
|
227
209
|
}
|
|
210
|
+
// Move legacy raw-id conversation directories to the office-key layout before
|
|
211
|
+
// anything touches the workspace. Runs every boot; a completed migration is a
|
|
212
|
+
// no-op. Unowned or failed offices are fatal: after the layout flip a legacy
|
|
213
|
+
// directory is invisible to the runtime, and booting anyway would present
|
|
214
|
+
// those conversations as silently empty.
|
|
215
|
+
const enabledPlatforms = [
|
|
216
|
+
...(hasSlack ? ["slack"] : []),
|
|
217
|
+
...(hasTelegram ? ["telegram"] : []),
|
|
218
|
+
...(hasDiscord ? ["discord"] : []),
|
|
219
|
+
...(hasGithub ? ["github"] : []),
|
|
220
|
+
];
|
|
221
|
+
const officeMigration = (() => {
|
|
222
|
+
try {
|
|
223
|
+
return migrateLegacyOffices({ workspaceRoot: workingDir, stateDir, enabledPlatforms });
|
|
224
|
+
}
|
|
225
|
+
catch (error) {
|
|
226
|
+
handleStartupError(error);
|
|
227
|
+
}
|
|
228
|
+
})();
|
|
229
|
+
if (officeMigration.unowned.length > 0 ||
|
|
230
|
+
officeMigration.failed.length > 0 ||
|
|
231
|
+
officeMigration.vaultConflicts.length > 0 ||
|
|
232
|
+
officeMigration.stateDirConflicts.length > 0) {
|
|
233
|
+
console.error(formatUnmigratedOfficesError(officeMigration));
|
|
234
|
+
process.exit(1);
|
|
235
|
+
}
|
|
236
|
+
if (officeMigration.migrated.length > 0 || officeMigration.recovered.length > 0) {
|
|
237
|
+
console.log(` Office layout migration: ${officeMigration.migrated.length} moved, ` +
|
|
238
|
+
`${officeMigration.recovered.length} recovered.`);
|
|
239
|
+
}
|
|
240
|
+
if (officeMigration.vaultKeysMigrated.length > 0) {
|
|
241
|
+
console.log(` Vault keys migrated to office keys: ${officeMigration.vaultKeysMigrated.length}.`);
|
|
242
|
+
}
|
|
243
|
+
if (officeMigration.stateDirsMigrated.length > 0) {
|
|
244
|
+
console.log(` Host state dirs migrated to office keys: ${officeMigration.stateDirsMigrated.length}.`);
|
|
245
|
+
}
|
|
228
246
|
try {
|
|
229
247
|
await validateSandbox(sandbox);
|
|
230
248
|
}
|
|
231
249
|
catch (error) {
|
|
232
250
|
handleStartupError(error);
|
|
233
251
|
}
|
|
252
|
+
// The one Workspace value for this process: workspace-global paths plus the
|
|
253
|
+
// per-conversation Office factory. Constructed after the office migration so
|
|
254
|
+
// every office it materializes lands in the office-key layout.
|
|
255
|
+
const workspace = createWorkspace({ root: workingDir, stateDir });
|
|
234
256
|
const vaultManager = new FileVaultManager(stateDir);
|
|
235
257
|
if (vaultManager.isEnabled()) {
|
|
236
258
|
console.log(sandbox.type === "container"
|
|
237
259
|
? " Vault system enabled. Container vault active."
|
|
238
|
-
: sandbox.type === "image" || sandbox.type === "
|
|
260
|
+
: sandbox.type === "image" || sandbox.type === "cloudflare"
|
|
239
261
|
? " Vault system enabled. Conversation-scoped credential routing active."
|
|
240
262
|
: " Vault system enabled. Host mode will not inject vault env.");
|
|
241
263
|
}
|
|
@@ -247,11 +269,12 @@ const startupConfig = (() => {
|
|
|
247
269
|
handleStartupError(error);
|
|
248
270
|
}
|
|
249
271
|
})();
|
|
250
|
-
const
|
|
251
|
-
|
|
272
|
+
const sandboxSettings = startupConfig.sandbox;
|
|
273
|
+
const sandboxLimits = sandboxSettings?.cpus || sandboxSettings?.memory
|
|
274
|
+
? { cpus: sandboxSettings?.cpus, memory: sandboxSettings?.memory }
|
|
252
275
|
: undefined;
|
|
253
|
-
const sandboxBoostLimits =
|
|
254
|
-
? { cpus:
|
|
276
|
+
const sandboxBoostLimits = sandboxSettings?.boost?.cpus || sandboxSettings?.boost?.memory
|
|
277
|
+
? { cpus: sandboxSettings?.boost?.cpus, memory: sandboxSettings?.boost?.memory }
|
|
255
278
|
: undefined;
|
|
256
279
|
const provisioner = sandbox.type === "image"
|
|
257
280
|
? new DockerContainerManager(sandbox.image, {
|
|
@@ -259,11 +282,25 @@ const provisioner = sandbox.type === "image"
|
|
|
259
282
|
boostLimits: sandboxBoostLimits,
|
|
260
283
|
})
|
|
261
284
|
: undefined;
|
|
285
|
+
// Containers provisioned before the office migration mount the renamed
|
|
286
|
+
// legacy paths. Their writable layers (everything installed inside) are
|
|
287
|
+
// preserved: each container is committed and recreated with translated
|
|
288
|
+
// mounts — on demand before its next message, and via a background sweep
|
|
289
|
+
// after the bots start.
|
|
290
|
+
const registryOffices = new OfficeRegistry(stateDir).getOffices();
|
|
291
|
+
if (provisioner && registryOffices.length > 0) {
|
|
292
|
+
provisioner.armContainerLayoutMigration(buildContainerBindTranslator({
|
|
293
|
+
offices: registryOffices,
|
|
294
|
+
workspaceRoot: workingDir,
|
|
295
|
+
stateDir,
|
|
296
|
+
}));
|
|
297
|
+
}
|
|
298
|
+
const resourceController = sandbox.type === "image" ? provisioner : undefined;
|
|
262
299
|
if (sandbox.type === "image") {
|
|
263
|
-
ensureDirExists(
|
|
264
|
-
ensureDirExists(
|
|
300
|
+
ensureDirExists(workspace.skillsDir);
|
|
301
|
+
ensureDirExists(workspace.agentsDir);
|
|
265
302
|
try {
|
|
266
|
-
writeFileSync(
|
|
303
|
+
writeFileSync(workspace.memoryPath, "", { flag: "wx" });
|
|
267
304
|
}
|
|
268
305
|
catch (err) {
|
|
269
306
|
if (err.code !== "EEXIST")
|
|
@@ -277,64 +314,90 @@ setInterval(() => linkTokenStore.purge(), 5 * 60 * 1000).unref();
|
|
|
277
314
|
setInterval(() => sessionViewTokenStore.purge(), 5 * 60 * 1000).unref();
|
|
278
315
|
setInterval(() => adminTokenStore.purge(), 5 * 60 * 1000).unref();
|
|
279
316
|
function portalBaseUrl() {
|
|
280
|
-
if (
|
|
281
|
-
return
|
|
317
|
+
if (LINK_BASE_URL)
|
|
318
|
+
return LINK_BASE_URL;
|
|
282
319
|
if (LINK_PORT)
|
|
283
320
|
return `http://localhost:${LINK_PORT}`;
|
|
284
321
|
return undefined;
|
|
285
322
|
}
|
|
286
|
-
/** Idle timeout for managed
|
|
287
|
-
const
|
|
323
|
+
/** Idle timeout for managed sandboxes (10 minutes) */
|
|
324
|
+
const MANAGED_SANDBOX_IDLE_TIMEOUT_MS = 10 * 60 * 1000;
|
|
288
325
|
if (provisioner) {
|
|
289
326
|
await provisioner.reconcile();
|
|
290
|
-
await provisioner.stopIdle(
|
|
291
|
-
setInterval(() => provisioner.stopIdle(
|
|
327
|
+
await provisioner.stopIdle(MANAGED_SANDBOX_IDLE_TIMEOUT_MS);
|
|
328
|
+
setInterval(() => provisioner.stopIdle(MANAGED_SANDBOX_IDLE_TIMEOUT_MS), MANAGED_SANDBOX_IDLE_TIMEOUT_MS).unref();
|
|
292
329
|
}
|
|
293
|
-
// Declared before the runtime so the notifier closure can capture them;
|
|
294
|
-
// bots register below once their platforms initialize.
|
|
295
|
-
const bots = [];
|
|
296
330
|
const botsByPlatform = {};
|
|
297
|
-
/**
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
*/
|
|
301
|
-
function resolvePlatformBot(op, platform) {
|
|
302
|
-
const available = Object.keys(botsByPlatform);
|
|
303
|
-
const key = platform?.trim().toLowerCase() || (available.length === 1 ? available[0] : undefined);
|
|
304
|
-
const bot = key ? botsByPlatform[key] : undefined;
|
|
331
|
+
/** github_* tool backends: PR push/create and CI checks, host-side. */
|
|
332
|
+
function requireGithubBot(op) {
|
|
333
|
+
const bot = botsByPlatform.github;
|
|
305
334
|
if (!bot) {
|
|
306
|
-
throw new Error(platform
|
|
307
|
-
? `${op}: unknown platform '${platform}' (available: ${available.join(", ") || "none"})`
|
|
308
|
-
: `${op}: multiple platforms active (${available.join(", ")}); specify platform`);
|
|
335
|
+
throw new Error(`${op}: the GitHub platform is not running`);
|
|
309
336
|
}
|
|
310
|
-
return
|
|
311
|
-
}
|
|
312
|
-
/**
|
|
313
|
-
|
|
314
|
-
const
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
}
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
337
|
+
return bot;
|
|
338
|
+
}
|
|
339
|
+
/** slack_* tool backends: Block Kit posting/updating, host-side. */
|
|
340
|
+
function requireSlackBot(op) {
|
|
341
|
+
const bot = botsByPlatform.slack;
|
|
342
|
+
if (!bot) {
|
|
343
|
+
throw new Error(`${op}: the Slack platform is not running`);
|
|
344
|
+
}
|
|
345
|
+
return bot;
|
|
346
|
+
}
|
|
347
|
+
/**
|
|
348
|
+
* Platform capability pack factories — only when the corresponding bot is
|
|
349
|
+
* configured. Factories, not instances: each runner materializes its own
|
|
350
|
+
* pack so per-run bind state never crosses conversations.
|
|
351
|
+
*/
|
|
352
|
+
function buildPlatformToolPackFactories() {
|
|
353
|
+
const factories = [];
|
|
354
|
+
if (hasSlack) {
|
|
355
|
+
const platformSlackOps = {
|
|
356
|
+
postBlocks: async (conversationId, { text, blocks, threadTs }) => {
|
|
357
|
+
const bot = requireSlackBot("slack_blockkit");
|
|
358
|
+
const ts = threadTs
|
|
359
|
+
? await bot.postInThreadBlocks(conversationId, threadTs, text, blocks)
|
|
360
|
+
: await bot.postMessageBlocks(conversationId, text, blocks);
|
|
361
|
+
bot.logBotResponse(conversationId, text, ts, threadTs, blocks);
|
|
362
|
+
return { ts };
|
|
363
|
+
},
|
|
364
|
+
updateBlocks: async (conversationId, { ts, text, blocks, threadTs }) => {
|
|
365
|
+
const bot = requireSlackBot("slack_blockkit");
|
|
366
|
+
await bot.updateMessageBlocks(conversationId, ts, text, blocks);
|
|
367
|
+
bot.logBotResponse(conversationId, text, ts, threadTs, blocks);
|
|
368
|
+
},
|
|
369
|
+
ownsBlockKitMessage: (conversationId, ts, threadTs) => requireSlackBot("slack_blockkit").ownsBlockKitMessage(conversationId, ts, threadTs),
|
|
370
|
+
};
|
|
371
|
+
factories.push(() => createSlackToolPack(platformSlackOps));
|
|
323
372
|
}
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
373
|
+
if (!hasGithub)
|
|
374
|
+
return factories;
|
|
375
|
+
const platformGithubOps = {
|
|
376
|
+
pushAndCreatePr: (conversationId, request) => requireGithubBot("github_pr").ops.pushAndCreatePr(conversationId, request),
|
|
377
|
+
getChecks: (conversationId, branch) => requireGithubBot("github_checks").ops.getChecks(conversationId, branch),
|
|
378
|
+
getJobLog: (conversationId, jobId) => requireGithubBot("github_checks").ops.getJobLog(conversationId, jobId),
|
|
379
|
+
replyToReviewThread: (conversationId, commentId, body) => requireGithubBot("github_review_reply").ops.replyToReviewThread(conversationId, commentId, body),
|
|
380
|
+
syncRepo: (conversationId, branch) => requireGithubBot("github_sync").ops.syncRepo(conversationId, branch),
|
|
381
|
+
readGithub: (conversationId, request) => requireGithubBot("github_read").ops.readGithub(conversationId, request),
|
|
382
|
+
manageIssue: (conversationId, request) => requireGithubBot("github_issue").ops.manageIssue(conversationId, request),
|
|
383
|
+
};
|
|
384
|
+
factories.push(() => createGithubToolPack(platformGithubOps));
|
|
385
|
+
return factories;
|
|
386
|
+
}
|
|
387
|
+
let eventScheduler;
|
|
327
388
|
const handler = createConversationRuntime({
|
|
328
|
-
|
|
389
|
+
workspace,
|
|
390
|
+
eventScheduler: () => eventScheduler,
|
|
329
391
|
sandbox,
|
|
330
392
|
vaultManager,
|
|
331
393
|
provisioner,
|
|
394
|
+
resourceController,
|
|
332
395
|
linkTokenStore,
|
|
333
396
|
sessionViewTokenStore,
|
|
334
397
|
adminTokenStore,
|
|
398
|
+
openConnector,
|
|
335
399
|
portalBaseUrl: portalBaseUrl(),
|
|
336
|
-
|
|
337
|
-
platformReactor,
|
|
400
|
+
platformToolPackFactories: buildPlatformToolPackFactories(),
|
|
338
401
|
});
|
|
339
402
|
const sandboxDesc = sandbox.type === "host"
|
|
340
403
|
? "host"
|
|
@@ -342,9 +405,7 @@ const sandboxDesc = sandbox.type === "host"
|
|
|
342
405
|
? `container:${sandbox.container}`
|
|
343
406
|
: sandbox.type === "image"
|
|
344
407
|
? `image:${sandbox.image}`
|
|
345
|
-
: sandbox.
|
|
346
|
-
? `firecracker:${sandbox.vmId}`
|
|
347
|
-
: `cloudflare:${sandbox.sandboxId}`;
|
|
408
|
+
: `cloudflare:${sandbox.sandboxId}`;
|
|
348
409
|
log.logStartup(workingDir, sandboxDesc);
|
|
349
410
|
logHarnessStartupSummary();
|
|
350
411
|
/**
|
|
@@ -358,19 +419,6 @@ function logHarnessStartupSummary() {
|
|
|
358
419
|
process.env.HTTP_PROXY ??
|
|
359
420
|
process.env.http_proxy;
|
|
360
421
|
log.logInfo(`HTTP dispatcher: idle timeout ${httpIdleTimeoutMs}ms${proxy ? `, proxy ${proxy}` : ", no proxy"}`);
|
|
361
|
-
const authPath = defaultAuthPath();
|
|
362
|
-
if (existsSync(authPath)) {
|
|
363
|
-
try {
|
|
364
|
-
const providers = Object.keys(JSON.parse(readFileSync(authPath, "utf-8")));
|
|
365
|
-
log.logInfo(`Harness auth: ${authPath} (providers: ${providers.join(", ") || "none"})`);
|
|
366
|
-
}
|
|
367
|
-
catch {
|
|
368
|
-
log.logWarning(`Harness auth: ${authPath} exists but is not valid JSON`);
|
|
369
|
-
}
|
|
370
|
-
}
|
|
371
|
-
else {
|
|
372
|
-
log.logInfo(`Harness auth: ${authPath} missing — provider keys come from env vars only`);
|
|
373
|
-
}
|
|
374
422
|
const modelsPath = defaultModelsJsonPath();
|
|
375
423
|
log.logInfo(existsSync(modelsPath)
|
|
376
424
|
? `Harness models.json: ${modelsPath}`
|
|
@@ -382,14 +430,11 @@ if (hasSlack) {
|
|
|
382
430
|
if (!slackMessagingBotToken || !slackAppToken) {
|
|
383
431
|
throw new Error("Slack startup requires both SLACK_APP_TOKEN and SLACK_BOT_TOKEN");
|
|
384
432
|
}
|
|
385
|
-
const sharedStore = new ChannelStore({ workingDir, botToken: slackMessagingBotToken });
|
|
386
433
|
const slackMessagingBot = new SlackMessagingBotClass(handler, {
|
|
387
434
|
appToken: slackAppToken,
|
|
388
435
|
botToken: slackMessagingBotToken,
|
|
389
|
-
|
|
390
|
-
store: sharedStore,
|
|
436
|
+
workspace,
|
|
391
437
|
});
|
|
392
|
-
bots.push(slackMessagingBot);
|
|
393
438
|
botsByPlatform.slack = slackMessagingBot;
|
|
394
439
|
log.logInfo("Platform: Slack");
|
|
395
440
|
}
|
|
@@ -400,9 +445,8 @@ if (hasTelegram) {
|
|
|
400
445
|
}
|
|
401
446
|
const telegramMessagingBot = new TelegramMessagingBot(handler, {
|
|
402
447
|
token: telegramToken,
|
|
403
|
-
|
|
448
|
+
workspace,
|
|
404
449
|
});
|
|
405
|
-
bots.push(telegramMessagingBot);
|
|
406
450
|
botsByPlatform.telegram = telegramMessagingBot;
|
|
407
451
|
log.logInfo("Platform: Telegram");
|
|
408
452
|
}
|
|
@@ -413,14 +457,48 @@ if (hasDiscord) {
|
|
|
413
457
|
}
|
|
414
458
|
const discordMessagingBot = new DiscordMessagingBot(handler, {
|
|
415
459
|
token: discordToken,
|
|
416
|
-
|
|
460
|
+
workspace,
|
|
417
461
|
});
|
|
418
|
-
bots.push(discordMessagingBot);
|
|
419
462
|
botsByPlatform.discord = discordMessagingBot;
|
|
420
463
|
log.logInfo("Platform: Discord");
|
|
421
464
|
}
|
|
422
|
-
if (
|
|
423
|
-
|
|
465
|
+
if (hasGithub) {
|
|
466
|
+
if (!GITHUB_APP_ID || !GITHUB_INSTALLATION_ID) {
|
|
467
|
+
throw new Error("GitHub startup requires GITHUB_APP_ID and GITHUB_INSTALLATION_ID");
|
|
468
|
+
}
|
|
469
|
+
// Env vars flatten PEM newlines to literal `\n`; a key file avoids that.
|
|
470
|
+
const githubPrivateKey = GITHUB_APP_PRIVATE_KEY_PATH
|
|
471
|
+
? readFileSync(GITHUB_APP_PRIVATE_KEY_PATH, "utf-8")
|
|
472
|
+
: GITHUB_APP_PRIVATE_KEY?.replace(/\\n/g, "\n");
|
|
473
|
+
if (!githubPrivateKey) {
|
|
474
|
+
throw new Error("GitHub startup requires GITHUB_APP_PRIVATE_KEY or GITHUB_APP_PRIVATE_KEY_PATH");
|
|
475
|
+
}
|
|
476
|
+
const pollIntervalSeconds = GITHUB_POLL_INTERVAL ? parseInt(GITHUB_POLL_INTERVAL, 10) : NaN;
|
|
477
|
+
const githubMessagingBot = new GithubMessagingBot(handler, {
|
|
478
|
+
appId: GITHUB_APP_ID,
|
|
479
|
+
privateKey: githubPrivateKey,
|
|
480
|
+
installationId: GITHUB_INSTALLATION_ID,
|
|
481
|
+
repos: GITHUB_REPOS
|
|
482
|
+
? GITHUB_REPOS.split(",")
|
|
483
|
+
.map((repo) => repo.trim())
|
|
484
|
+
.filter(Boolean)
|
|
485
|
+
: [],
|
|
486
|
+
pollIntervalMs: (Number.isFinite(pollIntervalSeconds) && pollIntervalSeconds > 0 ? pollIntervalSeconds : 60) *
|
|
487
|
+
1000,
|
|
488
|
+
workspace,
|
|
489
|
+
syncStatePath: join(stateDir, "github-sync.json"),
|
|
490
|
+
});
|
|
491
|
+
botsByPlatform.github = githubMessagingBot;
|
|
492
|
+
log.logInfo("Platform: GitHub");
|
|
493
|
+
}
|
|
494
|
+
const githubBotForWebhook = botsByPlatform.github;
|
|
495
|
+
if (GITHUB_WEBHOOK_SECRET && (!githubBotForWebhook || !LINK_PORT)) {
|
|
496
|
+
log.logWarning("GITHUB_WEBHOOK_SECRET is set but " +
|
|
497
|
+
(githubBotForWebhook ? "LINK_PORT is not" : "the GitHub platform is not enabled") +
|
|
498
|
+
" — the webhook endpoint will not be served");
|
|
499
|
+
}
|
|
500
|
+
const webServer = LINK_PORT
|
|
501
|
+
? startWebServer({
|
|
424
502
|
port: LINK_PORT,
|
|
425
503
|
linkTokenStore,
|
|
426
504
|
vaultManager,
|
|
@@ -431,28 +509,109 @@ if (LINK_PORT) {
|
|
|
431
509
|
},
|
|
432
510
|
sessionViewTokenStore,
|
|
433
511
|
sessionViewInteractive: { handler, botsByPlatform },
|
|
434
|
-
adminOptions: {
|
|
512
|
+
adminOptions: {
|
|
513
|
+
adminTokenStore,
|
|
514
|
+
workspace,
|
|
515
|
+
runtime: handler,
|
|
516
|
+
sandbox,
|
|
517
|
+
botsByPlatform,
|
|
518
|
+
eventScheduler: () => eventScheduler,
|
|
519
|
+
},
|
|
520
|
+
githubWebhook: GITHUB_WEBHOOK_SECRET && githubBotForWebhook
|
|
521
|
+
? {
|
|
522
|
+
secret: GITHUB_WEBHOOK_SECRET,
|
|
523
|
+
onPoke: () => githubBotForWebhook.requestPoll(),
|
|
524
|
+
}
|
|
525
|
+
: undefined,
|
|
526
|
+
})
|
|
527
|
+
: undefined;
|
|
528
|
+
function closeWebServer() {
|
|
529
|
+
if (!webServer)
|
|
530
|
+
return Promise.resolve();
|
|
531
|
+
return new Promise((resolve, reject) => {
|
|
532
|
+
webServer.close((error) => (error ? reject(error) : resolve()));
|
|
435
533
|
});
|
|
436
534
|
}
|
|
437
|
-
|
|
438
|
-
const
|
|
535
|
+
async function stopConversationIntake() {
|
|
536
|
+
const results = await Promise.allSettled([
|
|
537
|
+
...Object.values(botsByPlatform).map((bot) => bot.stop()),
|
|
538
|
+
closeWebServer(),
|
|
539
|
+
]);
|
|
540
|
+
const failures = results.flatMap((result) => result.status === "rejected" ? [result.reason] : []);
|
|
541
|
+
if (failures.length > 0)
|
|
542
|
+
throw new AggregateError(failures, "Failed to stop conversation intake");
|
|
543
|
+
}
|
|
544
|
+
async function waitForGracefulDrain(drain) {
|
|
545
|
+
let timeout;
|
|
546
|
+
const settled = await Promise.race([
|
|
547
|
+
drain.then(() => true),
|
|
548
|
+
new Promise((resolve) => {
|
|
549
|
+
timeout = setTimeout(() => resolve(false), SHUTDOWN_DRAIN_TIMEOUT_MS);
|
|
550
|
+
}),
|
|
551
|
+
]);
|
|
552
|
+
if (timeout)
|
|
553
|
+
clearTimeout(timeout);
|
|
554
|
+
return settled;
|
|
555
|
+
}
|
|
556
|
+
async function drainConversationWork(intakeStop) {
|
|
557
|
+
const dreamStop = dreamScheduler.stop();
|
|
558
|
+
const gracefulDrain = Promise.allSettled([intakeStop, dreamStop]);
|
|
559
|
+
if (!(await waitForGracefulDrain(gracefulDrain))) {
|
|
560
|
+
const runtimeResult = await Promise.allSettled([handler.shutdown(0)]);
|
|
561
|
+
const failures = [
|
|
562
|
+
new Error(`Conversation work did not drain within ${SHUTDOWN_DRAIN_TIMEOUT_MS}ms`),
|
|
563
|
+
...runtimeResult.flatMap((result) => (result.status === "rejected" ? [result.reason] : [])),
|
|
564
|
+
];
|
|
565
|
+
throw new AggregateError(failures, "Failed to drain conversation work");
|
|
566
|
+
}
|
|
567
|
+
const results = [
|
|
568
|
+
...(await gracefulDrain),
|
|
569
|
+
...(await Promise.allSettled([handler.shutdown(SHUTDOWN_DRAIN_TIMEOUT_MS)])),
|
|
570
|
+
];
|
|
571
|
+
const failures = results.flatMap((result) => result.status === "rejected" ? [result.reason] : []);
|
|
572
|
+
if (failures.length > 0)
|
|
573
|
+
throw new AggregateError(failures, "Failed to drain conversation work");
|
|
574
|
+
}
|
|
575
|
+
// Start the event scheduler; office event stores notify it through the runtime.
|
|
576
|
+
eventScheduler = new EventScheduler(workspace, botsByPlatform);
|
|
439
577
|
const slackMessagingBot = botsByPlatform.slack;
|
|
440
578
|
if (slackMessagingBot) {
|
|
441
|
-
slackMessagingBot.
|
|
442
|
-
}
|
|
443
|
-
eventsWatcher.start();
|
|
444
|
-
// Handle shutdown
|
|
445
|
-
async function shutdown() {
|
|
446
|
-
await handler.shutdown();
|
|
447
|
-
eventsWatcher.stop();
|
|
448
|
-
await Sentry.close(5000);
|
|
449
|
-
process.exit(0);
|
|
579
|
+
slackMessagingBot.setEventScheduler(eventScheduler);
|
|
450
580
|
}
|
|
451
|
-
|
|
452
|
-
|
|
581
|
+
eventScheduler.start();
|
|
582
|
+
const dreamScheduler = new DreamScheduler(workspace, handler);
|
|
583
|
+
dreamScheduler.start();
|
|
584
|
+
// Handle shutdown. A second signal is an explicit request to stop waiting.
|
|
585
|
+
const shutdown = createProcessShutdownHandler({
|
|
586
|
+
stop: () => {
|
|
587
|
+
const intakeStop = stopConversationIntake();
|
|
588
|
+
return runShutdownSteps([
|
|
589
|
+
{
|
|
590
|
+
name: "event scheduler",
|
|
591
|
+
run: async () => {
|
|
592
|
+
eventScheduler?.stop();
|
|
593
|
+
},
|
|
594
|
+
},
|
|
595
|
+
{ name: "conversation work", run: () => drainConversationWork(intakeStop) },
|
|
596
|
+
]);
|
|
597
|
+
},
|
|
598
|
+
shutdownObservability: () => shutdownObservability(5000),
|
|
599
|
+
captureError,
|
|
600
|
+
warn: log.logWarning,
|
|
601
|
+
exit: (code) => process.exit(code),
|
|
602
|
+
});
|
|
603
|
+
process.on("SIGINT", () => void shutdown("SIGINT"));
|
|
604
|
+
process.on("SIGTERM", () => void shutdown("SIGTERM"));
|
|
453
605
|
// Start all bots
|
|
454
|
-
await Promise.all(
|
|
606
|
+
await Promise.all(Object.values(botsByPlatform).map((bot) => bot.start().catch((err) => {
|
|
455
607
|
log.logWarning("Failed to start bot", err instanceof Error ? err.message : String(err));
|
|
456
608
|
process.exit(1);
|
|
457
609
|
})));
|
|
610
|
+
// Drain the container layout migration off the hot path; every unit is
|
|
611
|
+
// idempotent, so an interrupted sweep simply resumes on the next boot.
|
|
612
|
+
if (provisioner) {
|
|
613
|
+
void provisioner.sweepContainerLayoutMigration().catch((err) => {
|
|
614
|
+
log.logWarning("Container layout sweep failed", err instanceof Error ? err.message : String(err));
|
|
615
|
+
});
|
|
616
|
+
}
|
|
458
617
|
//# sourceMappingURL=main.js.map
|