@geminixiang/mikan 1.0.0-beta.7 → 1.0.0-beta.70
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 +1040 -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 +429 -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 +284 -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 +88 -0
- package/dist/harness/tools/subagent.d.ts.map +1 -0
- package/dist/harness/tools/subagent.js +681 -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/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} +377 -20
- 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
|
@@ -1,32 +1,33 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { atomicWritePrivateFile } from "../utils/fs-atomic.js";
|
|
1
|
+
import { officeSessionsDir } from "../office/index.js";
|
|
2
|
+
import { SessionStore } from "./session-store.js";
|
|
3
|
+
import { join } from "node:path";
|
|
5
4
|
import * as log from "../log.js";
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
5
|
+
import { isRecord, parseJsonValue, readTextFileIfExists } from "../file-guards.js";
|
|
6
|
+
import { isCommandText } from "../adapters/commands/manifest.js";
|
|
7
|
+
import { formatHistoryLine, stripHistoryLinePrefix } from "./history-line.js";
|
|
8
|
+
import { isPlatformHistorySession } from "./store.js";
|
|
9
|
+
import { isThreadSessionKey } from "./session-key.js";
|
|
10
|
+
import { archiveManagedSessionFile, createManagedSessionFile, createManagedSessionFileAtPath, extractSessionSuffix, getThreadSessionFile, openManagedSession, resolveChannelSessionFile, resolveParentSessionForThread, tryResolveCurrentSession, tryResolveThreadSession, } from "./store.js";
|
|
8
11
|
const DEFAULT_RECENT_DAYS = 14;
|
|
9
12
|
const DEFAULT_MAX_TOP_LEVEL_MESSAGES = 200;
|
|
10
13
|
const CHAT_SYNC_CUSTOM_TYPE = "mikan.chat_sync";
|
|
11
|
-
const BIWEEKLY_ROTATION_ANCHOR = new Date(2026, 0, 4); // Sunday
|
|
12
|
-
const BIWEEKLY_MS = 14 * 24 * 60 * 60 * 1000;
|
|
13
14
|
export function hasMaterializedChatSession(options) {
|
|
14
|
-
if (!options.sessionKey
|
|
15
|
+
if (!isThreadSessionKey(options.sessionKey)) {
|
|
15
16
|
return resolveChannelSessionFile(options.conversationDir) !== null;
|
|
16
17
|
}
|
|
17
18
|
return (tryResolveThreadSession(getThreadSessionFile(options.conversationDir, options.sessionKey)) !==
|
|
18
19
|
null);
|
|
19
20
|
}
|
|
20
21
|
export function registerThreadSession(options) {
|
|
21
|
-
if (!options.sessionKey
|
|
22
|
+
if (!isThreadSessionKey(options.sessionKey))
|
|
22
23
|
return null;
|
|
23
24
|
const threadFile = getThreadSessionFile(options.conversationDir, options.sessionKey);
|
|
24
25
|
return (tryResolveThreadSession(threadFile) ??
|
|
25
|
-
createManagedSessionFileAtPath(threadFile, options.cwd ?? options.conversationDir));
|
|
26
|
+
createManagedSessionFileAtPath(threadFile, options.cwd ?? options.conversationDir, resolveParentSessionForThread(options.conversationDir, extractSessionSuffix(options.sessionKey)) ?? undefined));
|
|
26
27
|
}
|
|
27
28
|
export async function waitForThreadSessionBootstrap(options) {
|
|
28
29
|
const { parentSessionKey, sessionKey, hasThreadSession, isParentRunning, sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms)), pollMs = 100, } = options;
|
|
29
|
-
if (!sessionKey
|
|
30
|
+
if (!isThreadSessionKey(sessionKey))
|
|
30
31
|
return false;
|
|
31
32
|
if (sessionKey === parentSessionKey)
|
|
32
33
|
return false;
|
|
@@ -39,7 +40,13 @@ export async function waitForThreadSessionBootstrap(options) {
|
|
|
39
40
|
}
|
|
40
41
|
return waited;
|
|
41
42
|
}
|
|
42
|
-
|
|
43
|
+
/**
|
|
44
|
+
* Syncs the platform chat transcript (log.jsonl) into managed session files:
|
|
45
|
+
* resolves which session file a message belongs to (top-level vs thread,
|
|
46
|
+
* with biweekly rotation), bootstraps new sessions from recent history, and
|
|
47
|
+
* incrementally appends log messages the session does not yet represent.
|
|
48
|
+
*/
|
|
49
|
+
export class ChatHistorySync {
|
|
43
50
|
constructor(options = {}) {
|
|
44
51
|
this.recentDays = options.recentDays ?? DEFAULT_RECENT_DAYS;
|
|
45
52
|
this.maxTopLevelMessages = options.maxTopLevelMessages ?? DEFAULT_MAX_TOP_LEVEL_MESSAGES;
|
|
@@ -47,14 +54,13 @@ export class AgentMemoryFileManager {
|
|
|
47
54
|
}
|
|
48
55
|
async resolveSessionScope(options) {
|
|
49
56
|
const cwd = options.cwd ?? options.conversationDir;
|
|
50
|
-
const sessionDir =
|
|
51
|
-
if (!options.sessionKey
|
|
52
|
-
const contextFile = this.resolveTopLevelSessionFile({
|
|
57
|
+
const sessionDir = officeSessionsDir(options.conversationDir);
|
|
58
|
+
if (!isThreadSessionKey(options.sessionKey)) {
|
|
59
|
+
const contextFile = await this.resolveTopLevelSessionFile({
|
|
53
60
|
conversationDir: options.conversationDir,
|
|
54
61
|
sessionDir,
|
|
55
62
|
cwd,
|
|
56
63
|
currentMessageId: options.currentMessageId,
|
|
57
|
-
rotateTopLevelSession: options.rotateTopLevelSession === true,
|
|
58
64
|
});
|
|
59
65
|
return { sessionDir, contextFile, threadRootMessage: null };
|
|
60
66
|
}
|
|
@@ -66,32 +72,49 @@ export class AgentMemoryFileManager {
|
|
|
66
72
|
currentMessageId: options.currentMessageId,
|
|
67
73
|
});
|
|
68
74
|
}
|
|
69
|
-
syncSessionManager(options) {
|
|
75
|
+
async syncSessionManager(options) {
|
|
70
76
|
const records = readConversationLog(options.conversationDir);
|
|
71
|
-
syncSessionManagerFromLog(options.sessionManager, selectExistingSessionSyncMessages(records, {
|
|
72
|
-
sessionKey: options.sessionKey
|
|
77
|
+
return syncSessionManagerFromLog(options.sessionManager, selectExistingSessionSyncMessages(records, {
|
|
78
|
+
sessionKey: isThreadSessionKey(options.sessionKey) ? options.sessionKey : null,
|
|
73
79
|
excludeMessageId: options.currentMessageId,
|
|
74
|
-
}),
|
|
80
|
+
}), {
|
|
81
|
+
recentDays: this.recentDays,
|
|
82
|
+
maxMessages: this.maxTopLevelMessages,
|
|
83
|
+
now: this.now(),
|
|
84
|
+
});
|
|
75
85
|
}
|
|
76
|
-
resetSession(options) {
|
|
86
|
+
async resetSession(options) {
|
|
77
87
|
const cwd = options.cwd ?? options.conversationDir;
|
|
78
|
-
|
|
79
|
-
|
|
88
|
+
const sessionFile = isThreadSessionKey(options.sessionKey)
|
|
89
|
+
? resetThreadSessionFile(options.conversationDir, options.sessionKey, cwd)
|
|
90
|
+
: createManagedSessionFile(officeSessionsDir(options.conversationDir), cwd);
|
|
91
|
+
const records = readConversationLog(options.conversationDir);
|
|
92
|
+
const lastMessageId = latestSyncMessageId(records, {
|
|
93
|
+
sessionKey: isThreadSessionKey(options.sessionKey) ? options.sessionKey : null,
|
|
94
|
+
});
|
|
95
|
+
const sessionManager = await openManagedSession(sessionFile, cwd);
|
|
96
|
+
try {
|
|
97
|
+
await sessionManager.appendCustomEntry(CHAT_SYNC_CUSTOM_TYPE, {
|
|
98
|
+
source: "log.jsonl",
|
|
99
|
+
messageCount: 0,
|
|
100
|
+
resetAt: this.now().toISOString(),
|
|
101
|
+
...(lastMessageId ? { lastMessageId } : {}),
|
|
102
|
+
});
|
|
80
103
|
}
|
|
81
|
-
|
|
104
|
+
finally {
|
|
105
|
+
await sessionManager.close();
|
|
106
|
+
}
|
|
107
|
+
return sessionFile;
|
|
82
108
|
}
|
|
83
|
-
resolveTopLevelSessionFile(options) {
|
|
84
|
-
|
|
109
|
+
async resolveTopLevelSessionFile(options) {
|
|
110
|
+
// Materialization only: an existing session is returned as-is. The
|
|
111
|
+
// runtime performs the one incremental log sync per event through the
|
|
112
|
+
// runner, after the writer is created — syncing here too made every
|
|
113
|
+
// cache-miss event run the pipeline twice.
|
|
85
114
|
const existing = tryResolveCurrentSession(options.sessionDir);
|
|
86
|
-
if (existing && !isPlatformHistorySession(existing))
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
sessionKey: null,
|
|
90
|
-
excludeMessageId: options.currentMessageId,
|
|
91
|
-
}), this.historyWindow());
|
|
92
|
-
return existing;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
115
|
+
if (existing && !isPlatformHistorySession(existing))
|
|
116
|
+
return existing;
|
|
117
|
+
const records = readConversationLog(options.conversationDir);
|
|
95
118
|
const sessionFile = createManagedSessionFile(options.sessionDir, options.cwd);
|
|
96
119
|
const bootstrapRecords = selectRecentTopLevelMessages(records, {
|
|
97
120
|
recentDays: this.recentDays,
|
|
@@ -99,119 +122,81 @@ export class AgentMemoryFileManager {
|
|
|
99
122
|
now: this.now(),
|
|
100
123
|
excludeMessageId: options.currentMessageId,
|
|
101
124
|
});
|
|
102
|
-
bootstrapSessionFromLog(sessionFile, options.cwd, bootstrapRecords, latestSyncMessageId(records, {
|
|
125
|
+
await bootstrapSessionFromLog(sessionFile, options.cwd, bootstrapRecords, latestSyncMessageId(records, {
|
|
103
126
|
sessionKey: null,
|
|
104
127
|
excludeMessageId: options.currentMessageId,
|
|
105
128
|
}));
|
|
106
129
|
return sessionFile;
|
|
107
130
|
}
|
|
108
|
-
|
|
109
|
-
return { recentDays: this.recentDays, maxMessages: this.maxTopLevelMessages, now: this.now() };
|
|
110
|
-
}
|
|
111
|
-
resolveThreadSessionScope(options) {
|
|
131
|
+
async resolveThreadSessionScope(options) {
|
|
112
132
|
const threadFile = getThreadSessionFile(options.conversationDir, options.sessionKey);
|
|
113
133
|
const threadId = extractSessionSuffix(options.sessionKey);
|
|
114
134
|
const records = readConversationLog(options.conversationDir);
|
|
115
135
|
const threadRootMessage = buildThreadRootSeed(findLogRecordById(records, threadId)?.message);
|
|
116
136
|
const existing = tryResolveThreadSession(threadFile);
|
|
117
137
|
if (existing) {
|
|
118
|
-
|
|
119
|
-
sessionKey: options.sessionKey,
|
|
120
|
-
excludeMessageId: options.currentMessageId,
|
|
121
|
-
}), this.historyWindow());
|
|
138
|
+
// Materialization only; the runtime owns the per-event incremental sync.
|
|
122
139
|
return { sessionDir: options.sessionDir, contextFile: existing, threadRootMessage };
|
|
123
140
|
}
|
|
124
|
-
createManagedSessionFileAtPath(threadFile, options.cwd);
|
|
141
|
+
createManagedSessionFileAtPath(threadFile, options.cwd, resolveParentSessionForThread(options.conversationDir, threadId) ?? undefined);
|
|
125
142
|
const bootstrapRecords = selectThreadBootstrapMessages(records, threadId, {
|
|
126
143
|
recentDays: this.recentDays,
|
|
127
144
|
maxTopLevelMessages: this.maxTopLevelMessages,
|
|
128
145
|
now: this.now(),
|
|
129
146
|
excludeMessageId: options.currentMessageId,
|
|
130
147
|
});
|
|
131
|
-
bootstrapSessionFromLog(threadFile, options.cwd, bootstrapRecords, latestSyncMessageId(records, {
|
|
148
|
+
await bootstrapSessionFromLog(threadFile, options.cwd, bootstrapRecords, latestSyncMessageId(records, {
|
|
132
149
|
sessionKey: options.sessionKey,
|
|
133
150
|
excludeMessageId: options.currentMessageId,
|
|
134
151
|
}));
|
|
135
152
|
return { sessionDir: options.sessionDir, contextFile: threadFile, threadRootMessage };
|
|
136
153
|
}
|
|
137
154
|
}
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
}
|
|
142
|
-
function readSessionTimestamp(sessionFile) {
|
|
143
|
-
const raw = readTextFileIfExists(sessionFile);
|
|
144
|
-
if (raw === undefined)
|
|
145
|
-
return null;
|
|
146
|
-
const firstLine = raw.split("\n").find((line) => line.trim());
|
|
147
|
-
if (!firstLine)
|
|
148
|
-
return null;
|
|
155
|
+
/** The recorded parent of an existing thread session, kept across a reset. */
|
|
156
|
+
function existingThreadParent(threadFile) {
|
|
157
|
+
let header;
|
|
149
158
|
try {
|
|
150
|
-
|
|
151
|
-
if (typeof header.timestamp !== "string")
|
|
152
|
-
return null;
|
|
153
|
-
const date = new Date(header.timestamp);
|
|
154
|
-
return Number.isFinite(date.getTime()) ? date : null;
|
|
159
|
+
header = SessionStore.readHeader(threadFile);
|
|
155
160
|
}
|
|
156
161
|
catch {
|
|
157
|
-
return
|
|
162
|
+
return undefined; // File missing or corrupted — the session is recreated.
|
|
158
163
|
}
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
const logFile = join(conversationDir, "log.jsonl");
|
|
170
|
-
const raw = readTextFileIfExists(logFile);
|
|
171
|
-
if (raw === undefined)
|
|
172
|
-
return [];
|
|
173
|
-
const lines = raw.trim().split("\n").filter(Boolean);
|
|
174
|
-
const records = [];
|
|
175
|
-
for (let i = 0; i < lines.length; i++) {
|
|
176
|
-
try {
|
|
177
|
-
const message = parseJsonValue(lines[i], (value) => isRecord(value), (detail) => (detail === "unexpected JSON shape" ? "expected a JSON object" : detail));
|
|
178
|
-
records.push({ message, index: i });
|
|
179
|
-
}
|
|
180
|
-
catch (err) {
|
|
181
|
-
log.logWarning(`Skipping malformed log entry at ${logFile}:${i + 1}`, err instanceof Error ? err.message : String(err));
|
|
182
|
-
}
|
|
164
|
+
const path = header?.parentSession;
|
|
165
|
+
if (!header || !path)
|
|
166
|
+
return undefined;
|
|
167
|
+
// Prefer the stored UUID; legacy sessions without it need the parent file.
|
|
168
|
+
const id = header.parentSessionId ?? readParentSessionId(path);
|
|
169
|
+
return id ? { path, id } : undefined;
|
|
170
|
+
}
|
|
171
|
+
function readParentSessionId(parentPath) {
|
|
172
|
+
try {
|
|
173
|
+
return SessionStore.readHeader(parentPath)?.id;
|
|
183
174
|
}
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
function coalesceMessagingBotLogChunks(records) {
|
|
187
|
-
const coalesced = [];
|
|
188
|
-
for (const record of records) {
|
|
189
|
-
const previous = coalesced.at(-1);
|
|
190
|
-
if (previous && canCoalesceMessagingBotLogChunk(previous.message, record.message)) {
|
|
191
|
-
previous.message.text = `${previous.message.text ?? ""}${record.message.text ?? ""}`;
|
|
192
|
-
continue;
|
|
193
|
-
}
|
|
194
|
-
coalesced.push({ ...record, message: { ...record.message } });
|
|
175
|
+
catch {
|
|
176
|
+
return undefined;
|
|
195
177
|
}
|
|
196
|
-
return coalesced;
|
|
197
178
|
}
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
179
|
+
/**
|
|
180
|
+
* Archive a thread session and create its replacement, preserving lineage:
|
|
181
|
+
* the original parent is kept rather than re-bound to the current session.
|
|
182
|
+
*/
|
|
183
|
+
function resetThreadSessionFile(conversationDir, sessionKey, cwd) {
|
|
184
|
+
const threadFile = getThreadSessionFile(conversationDir, sessionKey);
|
|
185
|
+
const parent = existingThreadParent(threadFile) ??
|
|
186
|
+
resolveParentSessionForThread(conversationDir, extractSessionSuffix(sessionKey)) ??
|
|
187
|
+
undefined;
|
|
188
|
+
archiveManagedSessionFile(threadFile);
|
|
189
|
+
return createManagedSessionFileAtPath(threadFile, cwd, parent);
|
|
205
190
|
}
|
|
206
191
|
function findLogRecordById(records, messageId) {
|
|
207
192
|
for (let i = records.length - 1; i >= 0; i--) {
|
|
208
|
-
if (records[i]
|
|
193
|
+
if (records[i]?.message.ts === messageId)
|
|
209
194
|
return records[i];
|
|
210
195
|
}
|
|
211
196
|
return undefined;
|
|
212
197
|
}
|
|
213
198
|
function selectRecentTopLevelMessages(records, options) {
|
|
214
|
-
return selectRecentMessages(records.filter((record) => isTopLevelHistoryMessage(record.message, options.excludeMessageId)), options);
|
|
199
|
+
return selectRecentMessages(recordsBeforeCurrentMessage(records, options.excludeMessageId).filter((record) => isTopLevelHistoryMessage(record.message, options.excludeMessageId)), options);
|
|
215
200
|
}
|
|
216
201
|
function selectRecentMessages(records, options) {
|
|
217
202
|
const sinceMs = options.now.getTime() - options.recentDays * 24 * 60 * 60 * 1000;
|
|
@@ -220,17 +205,18 @@ function selectRecentMessages(records, options) {
|
|
|
220
205
|
.slice(-options.maxMessages);
|
|
221
206
|
}
|
|
222
207
|
function selectThreadBootstrapMessages(records, threadId, options) {
|
|
223
|
-
const
|
|
208
|
+
const scopedRecords = recordsBeforeCurrentMessage(records, options.excludeMessageId);
|
|
209
|
+
const rootRecord = findLogRecordById(scopedRecords, threadId);
|
|
224
210
|
const topLevelSource = rootRecord
|
|
225
|
-
?
|
|
226
|
-
:
|
|
211
|
+
? scopedRecords.filter((record) => record.index <= rootRecord.index)
|
|
212
|
+
: scopedRecords;
|
|
227
213
|
const topLevelRecords = selectRecentTopLevelMessages(topLevelSource, {
|
|
228
214
|
recentDays: options.recentDays,
|
|
229
215
|
maxMessages: options.maxTopLevelMessages,
|
|
230
216
|
now: options.now,
|
|
231
217
|
excludeMessageId: options.excludeMessageId,
|
|
232
218
|
});
|
|
233
|
-
const threadRecords =
|
|
219
|
+
const threadRecords = scopedRecords.filter((record) => isRenderableConversationMessage(record.message, options.excludeMessageId) &&
|
|
234
220
|
(record.message.ts === threadId || record.message.threadTs === threadId));
|
|
235
221
|
return dedupeAndSortRecords([...topLevelRecords, ...threadRecords]);
|
|
236
222
|
}
|
|
@@ -247,7 +233,7 @@ function isRecentHistoryMessage(message, sinceMs) {
|
|
|
247
233
|
}
|
|
248
234
|
function selectExistingSessionSyncMessages(records, options) {
|
|
249
235
|
const threadId = options.sessionKey ? extractSessionSuffix(options.sessionKey) : null;
|
|
250
|
-
return dedupeAndSortRecords(records.filter((record) => {
|
|
236
|
+
return dedupeAndSortRecords(recordsBeforeCurrentMessage(records, options.excludeMessageId).filter((record) => {
|
|
251
237
|
if (!isRenderableConversationMessage(record.message, options.excludeMessageId))
|
|
252
238
|
return false;
|
|
253
239
|
if (!threadId)
|
|
@@ -255,21 +241,29 @@ function selectExistingSessionSyncMessages(records, options) {
|
|
|
255
241
|
return record.message.ts === threadId || record.message.threadTs === threadId;
|
|
256
242
|
}));
|
|
257
243
|
}
|
|
244
|
+
/**
|
|
245
|
+
* Slack logs messages before enqueueing them, so a later queued turn may
|
|
246
|
+
* already be present while the current turn is being prepared. Chat history
|
|
247
|
+
* must stop at the current record rather than merely removing that one id.
|
|
248
|
+
*/
|
|
249
|
+
function recordsBeforeCurrentMessage(records, currentMessageId) {
|
|
250
|
+
if (!currentMessageId)
|
|
251
|
+
return records;
|
|
252
|
+
const currentRecord = findLogRecordById(records, currentMessageId);
|
|
253
|
+
if (!currentRecord)
|
|
254
|
+
return records;
|
|
255
|
+
return records.filter((record) => record.index < currentRecord.index);
|
|
256
|
+
}
|
|
258
257
|
function latestSyncMessageId(records, options) {
|
|
259
258
|
return selectExistingSessionSyncMessages(records, options).at(-1)?.message.ts;
|
|
260
259
|
}
|
|
261
260
|
function isRenderableConversationMessage(message, excludeMessageId) {
|
|
262
261
|
if (excludeMessageId && message.ts === excludeMessageId)
|
|
263
262
|
return false;
|
|
264
|
-
if (
|
|
263
|
+
if (!message.isMessagingBot && isCommandText(message.text ?? ""))
|
|
265
264
|
return false;
|
|
266
265
|
return !!message.text?.trim();
|
|
267
266
|
}
|
|
268
|
-
function isChatCommandMessage(message) {
|
|
269
|
-
const text = message.text?.trim() ?? "";
|
|
270
|
-
return (!message.isMessagingBot &&
|
|
271
|
-
/^\/(?:pi-[\w-]+|login|session|new|stop|model|sandbox|admin|auto-reply)(?:@\w+)?(?:\s|$)/i.test(text));
|
|
272
|
-
}
|
|
273
267
|
function dedupeAndSortRecords(records) {
|
|
274
268
|
const byKey = new Map();
|
|
275
269
|
for (const record of records) {
|
|
@@ -296,74 +290,98 @@ function sortTime(record) {
|
|
|
296
290
|
}
|
|
297
291
|
return record.index;
|
|
298
292
|
}
|
|
299
|
-
function bootstrapSessionFromLog(sessionFile, cwd, records, lastMessageId = records.at(-1)?.message.ts) {
|
|
293
|
+
async function bootstrapSessionFromLog(sessionFile, cwd, records, lastMessageId = records.at(-1)?.message.ts) {
|
|
300
294
|
if (records.length === 0 && !lastMessageId)
|
|
301
295
|
return;
|
|
302
|
-
const sessionManager = openManagedSession(sessionFile, cwd);
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
}
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
syncSessionManagerFromLog(openManagedSession(sessionFile, cwd), records, historyWindow);
|
|
296
|
+
const sessionManager = await openManagedSession(sessionFile, cwd);
|
|
297
|
+
try {
|
|
298
|
+
await appendLogRecordsToSession(sessionManager, records);
|
|
299
|
+
await sessionManager.appendCustomEntry(CHAT_SYNC_CUSTOM_TYPE, {
|
|
300
|
+
source: "log.jsonl",
|
|
301
|
+
messageCount: records.length,
|
|
302
|
+
lastMessageId,
|
|
303
|
+
});
|
|
304
|
+
}
|
|
305
|
+
finally {
|
|
306
|
+
await sessionManager.close();
|
|
307
|
+
}
|
|
315
308
|
}
|
|
316
|
-
function syncSessionManagerFromLog(sessionManager, records, historyWindow) {
|
|
309
|
+
async function syncSessionManagerFromLog(sessionManager, records, historyWindow) {
|
|
317
310
|
if (records.length === 0)
|
|
318
|
-
return;
|
|
319
|
-
const existingEntries = sessionManager.getEntries();
|
|
311
|
+
return { appended: 0 };
|
|
312
|
+
const existingEntries = await sessionManager.getEntries();
|
|
313
|
+
const resetAt = getLatestChatSyncResetAt(existingEntries);
|
|
314
|
+
const controlledIds = new Set(existingEntries.flatMap((entry) => {
|
|
315
|
+
if (entry.type !== "custom" ||
|
|
316
|
+
entry.customType !== "mikan.control_input" ||
|
|
317
|
+
!isRecord(entry.data))
|
|
318
|
+
return [];
|
|
319
|
+
return typeof entry.data.messageId === "string" ? [entry.data.messageId] : [];
|
|
320
|
+
}));
|
|
321
|
+
const eligibleRecords = records.filter((record) => !controlledIds.has(record.message.ts ?? "") && (!resetAt || isAfterReset(record, resetAt)));
|
|
320
322
|
const lastSyncedMessageId = getLatestChatSyncMessageId(existingEntries);
|
|
321
323
|
const lastSyncedIndex = lastSyncedMessageId
|
|
322
|
-
?
|
|
324
|
+
? eligibleRecords.findIndex((record) => record.message.ts === lastSyncedMessageId)
|
|
323
325
|
: -1;
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
const syncCandidates = selectRecentMessages(
|
|
326
|
+
// A truncated or rebuilt log may no longer contain the watermark. Replay the
|
|
327
|
+
// current bounded history; represented-message matching below prevents duplicates.
|
|
328
|
+
const syncCandidates = selectRecentMessages(eligibleRecords.slice(lastSyncedIndex + 1), historyWindow);
|
|
327
329
|
if (syncCandidates.length === 0)
|
|
328
|
-
return;
|
|
330
|
+
return { appended: 0 };
|
|
329
331
|
const represented = buildRepresentedMessageCounts(existingEntries);
|
|
330
332
|
const newRecords = syncCandidates.filter((record) => !consumeRepresentedLogMessage(record, represented));
|
|
331
333
|
if (newRecords.length === 0)
|
|
332
|
-
return;
|
|
333
|
-
|
|
334
|
-
sessionManager
|
|
334
|
+
return { appended: 0 };
|
|
335
|
+
const lastMessageId = syncCandidates.at(-1)?.message.ts;
|
|
336
|
+
await appendLogRecordsToSession(sessionManager, newRecords);
|
|
337
|
+
await sessionManager.appendCustomEntry(CHAT_SYNC_CUSTOM_TYPE, {
|
|
335
338
|
source: "log.jsonl",
|
|
336
339
|
messageCount: newRecords.length,
|
|
337
|
-
lastMessageId
|
|
340
|
+
lastMessageId,
|
|
338
341
|
});
|
|
342
|
+
return {
|
|
343
|
+
appended: newRecords.length,
|
|
344
|
+
...(lastMessageId !== undefined ? { lastMessageId } : {}),
|
|
345
|
+
};
|
|
339
346
|
}
|
|
340
|
-
function appendLogRecordsToSession(sessionManager, records) {
|
|
347
|
+
async function appendLogRecordsToSession(sessionManager, records) {
|
|
341
348
|
for (const record of records) {
|
|
342
349
|
const message = buildHistorySessionMessage(record.message);
|
|
343
350
|
if (message)
|
|
344
|
-
sessionManager.appendMessage(message);
|
|
351
|
+
await sessionManager.appendMessage(message);
|
|
345
352
|
}
|
|
346
353
|
}
|
|
347
|
-
function
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
354
|
+
function isChatSyncMarker(entry) {
|
|
355
|
+
return entry.type === "custom" && entry.customType === CHAT_SYNC_CUSTOM_TYPE;
|
|
356
|
+
}
|
|
357
|
+
/** The reset timestamp a chat-sync marker records, when it carries a usable one. */
|
|
358
|
+
function markerResetAt(entry) {
|
|
359
|
+
if (!isChatSyncMarker(entry))
|
|
360
|
+
return undefined;
|
|
361
|
+
if (!isRecord(entry.data) || typeof entry.data.resetAt !== "string")
|
|
362
|
+
return undefined;
|
|
363
|
+
const resetAt = new Date(entry.data.resetAt).getTime();
|
|
364
|
+
return Number.isFinite(resetAt) ? resetAt : undefined;
|
|
365
|
+
}
|
|
366
|
+
function getLatestChatSyncResetAt(entries) {
|
|
367
|
+
for (const entry of entries.toReversed()) {
|
|
368
|
+
const resetAt = markerResetAt(entry);
|
|
369
|
+
if (resetAt !== undefined)
|
|
370
|
+
return resetAt;
|
|
364
371
|
}
|
|
365
372
|
return undefined;
|
|
366
373
|
}
|
|
374
|
+
function isAfterReset(record, resetAt) {
|
|
375
|
+
if (!record.message.date)
|
|
376
|
+
return false;
|
|
377
|
+
const messageTime = new Date(record.message.date).getTime();
|
|
378
|
+
return Number.isFinite(messageTime) && messageTime >= resetAt;
|
|
379
|
+
}
|
|
380
|
+
function getLatestChatSyncMessageId(entries) {
|
|
381
|
+
const marker = entries.toReversed().find(isChatSyncMarker);
|
|
382
|
+
const lastMessageId = isRecord(marker?.data) ? marker.data.lastMessageId : undefined;
|
|
383
|
+
return typeof lastMessageId === "string" ? lastMessageId : undefined;
|
|
384
|
+
}
|
|
367
385
|
function buildRepresentedMessageCounts(entries) {
|
|
368
386
|
const counts = new Map();
|
|
369
387
|
for (const entry of entries) {
|
|
@@ -413,11 +431,7 @@ function getSessionMessageText(entry) {
|
|
|
413
431
|
.map((part) => (part.type === "text" && "text" in part ? part.text : ""))
|
|
414
432
|
.join("\n");
|
|
415
433
|
}
|
|
416
|
-
|
|
417
|
-
return text
|
|
418
|
-
.replace(/^\[[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}[+-][0-9]{2}:[0-9]{2}\]\s+\[[^\]]+\](?:\s+\[in-thread:[^\]]+\])?:\s*/, "")
|
|
419
|
-
.trim();
|
|
420
|
-
}
|
|
434
|
+
const normalizeComparableText = stripHistoryLinePrefix;
|
|
421
435
|
function buildHistorySessionMessage(message) {
|
|
422
436
|
const text = message.text?.trim();
|
|
423
437
|
if (!text)
|
|
@@ -466,10 +480,11 @@ function parseMessageTimestamp(message) {
|
|
|
466
480
|
return undefined;
|
|
467
481
|
}
|
|
468
482
|
function formatHistoryMessage(message) {
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
483
|
+
return formatHistoryLine({
|
|
484
|
+
date: message.date ? new Date(message.date) : undefined,
|
|
485
|
+
userName: message.userName || message.user,
|
|
486
|
+
text: message.text?.trim() ?? "",
|
|
487
|
+
});
|
|
473
488
|
}
|
|
474
489
|
function zeroUsage() {
|
|
475
490
|
return {
|
|
@@ -481,4 +496,53 @@ function zeroUsage() {
|
|
|
481
496
|
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },
|
|
482
497
|
};
|
|
483
498
|
}
|
|
484
|
-
|
|
499
|
+
// ── Conversation platform log (log.jsonl) ─────────────────────────────────────
|
|
500
|
+
/**
|
|
501
|
+
* Read a conversation's platform chat log (log.jsonl): skip malformed lines,
|
|
502
|
+
* and coalesce consecutive messaging-bot chunks that share a ts — streamed
|
|
503
|
+
* responses are logged in pieces but represent one message.
|
|
504
|
+
*/
|
|
505
|
+
function readConversationLog(conversationDir) {
|
|
506
|
+
const logFile = join(conversationDir, "log.jsonl");
|
|
507
|
+
const raw = readTextFileIfExists(logFile);
|
|
508
|
+
if (raw === undefined)
|
|
509
|
+
return [];
|
|
510
|
+
const records = [];
|
|
511
|
+
for (const [index, line] of raw.trim().split("\n").filter(Boolean).entries()) {
|
|
512
|
+
const message = parseLogLine(line, logFile, index + 1);
|
|
513
|
+
if (message)
|
|
514
|
+
records.push({ message, index });
|
|
515
|
+
}
|
|
516
|
+
return coalesceMessagingBotLogChunks(records);
|
|
517
|
+
}
|
|
518
|
+
/** One log line, or `undefined` after warning about a malformed one. */
|
|
519
|
+
function parseLogLine(line, logFile, lineNumber) {
|
|
520
|
+
try {
|
|
521
|
+
return parseJsonValue(line, (value) => isRecord(value), (detail) => (detail === "unexpected JSON shape" ? "expected a JSON object" : detail));
|
|
522
|
+
}
|
|
523
|
+
catch (err) {
|
|
524
|
+
log.logWarning(`Skipping malformed log entry at ${logFile}:${lineNumber}`, err instanceof Error ? err.message : String(err));
|
|
525
|
+
return undefined;
|
|
526
|
+
}
|
|
527
|
+
}
|
|
528
|
+
function coalesceMessagingBotLogChunks(records) {
|
|
529
|
+
const coalesced = [];
|
|
530
|
+
for (const record of records) {
|
|
531
|
+
const previous = coalesced.at(-1);
|
|
532
|
+
if (previous && canCoalesceMessagingBotLogChunk(previous.message, record.message)) {
|
|
533
|
+
previous.message.text = `${previous.message.text ?? ""}${record.message.text ?? ""}`;
|
|
534
|
+
continue;
|
|
535
|
+
}
|
|
536
|
+
coalesced.push({ ...record, message: { ...record.message } });
|
|
537
|
+
}
|
|
538
|
+
return coalesced;
|
|
539
|
+
}
|
|
540
|
+
function canCoalesceMessagingBotLogChunk(previous, current) {
|
|
541
|
+
return (previous.isMessagingBot === true &&
|
|
542
|
+
current.isMessagingBot === true &&
|
|
543
|
+
!!previous.ts &&
|
|
544
|
+
previous.ts === current.ts &&
|
|
545
|
+
previous.threadTs === current.threadTs &&
|
|
546
|
+
previous.user === current.user);
|
|
547
|
+
}
|
|
548
|
+
//# sourceMappingURL=chat-history-sync.js.map
|