indusagi-coding-agent 0.1.38 → 0.1.40
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 +22 -7
- package/{LICENSE.md → LICENSE} +0 -1
- package/README.md +2 -4
- package/dist/cli/args.d.ts +6 -128
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +277 -472
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/config-selector.d.ts +9 -62
- package/dist/cli/config-selector.d.ts.map +1 -1
- package/dist/cli/config-selector.js +31 -146
- package/dist/cli/config-selector.js.map +1 -1
- package/dist/cli/file-processor.d.ts +1 -69
- package/dist/cli/file-processor.d.ts.map +1 -1
- package/dist/cli/file-processor.js +36 -267
- package/dist/cli/file-processor.js.map +1 -1
- package/dist/cli/list-models.d.ts +0 -60
- package/dist/cli/list-models.d.ts.map +1 -1
- package/dist/cli/list-models.js +53 -246
- package/dist/cli/list-models.js.map +1 -1
- package/dist/cli/session-picker.d.ts +1 -72
- package/dist/cli/session-picker.d.ts.map +1 -1
- package/dist/cli/session-picker.js +57 -231
- package/dist/cli/session-picker.js.map +1 -1
- package/dist/cli.js +25 -31
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +0 -42
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +62 -97
- package/dist/config.js.map +1 -1
- package/dist/core/agent-session.d.ts +26 -2
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +78 -66
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/auth-storage.d.ts +4 -95
- package/dist/core/auth-storage.d.ts.map +1 -1
- package/dist/core/auth-storage.js +233 -288
- package/dist/core/auth-storage.js.map +1 -1
- package/dist/core/bash-executor.d.ts +0 -323
- package/dist/core/bash-executor.d.ts.map +1 -1
- package/dist/core/bash-executor.js +126 -359
- package/dist/core/bash-executor.js.map +1 -1
- package/dist/core/compaction/branch-summarization.d.ts +3 -3
- package/dist/core/compaction/branch-summarization.js +16 -16
- package/dist/core/compaction/branch-summarization.js.map +1 -1
- package/dist/core/compaction/compaction.d.ts +3 -3
- package/dist/core/compaction/compaction.js +40 -40
- package/dist/core/compaction/compaction.js.map +1 -1
- package/dist/core/compaction/index.d.ts +32 -4
- package/dist/core/compaction/index.d.ts.map +1 -1
- package/dist/core/compaction/index.js +30 -4
- package/dist/core/compaction/index.js.map +1 -1
- package/dist/core/compaction/utils.d.ts +1 -19
- package/dist/core/compaction/utils.d.ts.map +1 -1
- package/dist/core/compaction/utils.js +92 -113
- package/dist/core/compaction/utils.js.map +1 -1
- package/dist/core/discover-packages.d.ts +0 -4
- package/dist/core/discover-packages.d.ts.map +1 -1
- package/dist/core/discover-packages.js +41 -44
- package/dist/core/discover-packages.js.map +1 -1
- package/dist/core/event-bus.d.ts +1 -147
- package/dist/core/event-bus.d.ts.map +1 -1
- package/dist/core/event-bus.js +17 -106
- package/dist/core/event-bus.js.map +1 -1
- package/dist/core/exec.d.ts +0 -16
- package/dist/core/exec.d.ts.map +1 -1
- package/dist/core/exec.js +18 -27
- package/dist/core/exec.js.map +1 -1
- package/dist/core/export-html/ansi-to-html.ts +262 -0
- package/dist/core/export-html/index.ts +433 -0
- package/dist/core/export-html/template.html +48 -26
- package/dist/core/export-html/tool-renderer.d.ts +0 -21
- package/dist/core/export-html/tool-renderer.d.ts.map +1 -1
- package/dist/core/export-html/tool-renderer.js +35 -51
- package/dist/core/export-html/tool-renderer.js.map +1 -1
- package/dist/core/export-html/tool-renderer.ts +80 -0
- package/dist/core/export-html/vendor/highlight.min.js +401 -370
- package/dist/core/export-html/vendor/marked.min.js +71 -3
- package/dist/core/extensions/index.d.ts +7 -4
- package/dist/core/extensions/index.d.ts.map +1 -1
- package/dist/core/extensions/index.js +17 -3
- package/dist/core/extensions/index.js.map +1 -1
- package/dist/core/extensions/loader.d.ts +0 -6
- package/dist/core/extensions/loader.d.ts.map +1 -1
- package/dist/core/extensions/loader.js +60 -56
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/extensions/runner.d.ts +3 -0
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js +48 -80
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/types.d.ts +50 -23
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/footer-data-provider.d.ts +2 -15
- package/dist/core/footer-data-provider.d.ts.map +1 -1
- package/dist/core/footer-data-provider.js +21 -33
- package/dist/core/footer-data-provider.js.map +1 -1
- package/dist/core/hooks/loader.js +2 -2
- package/dist/core/hooks/loader.js.map +1 -1
- package/dist/core/index.d.ts +29 -10
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +29 -10
- package/dist/core/index.js.map +1 -1
- package/dist/core/keybindings.d.ts +2 -179
- package/dist/core/keybindings.d.ts.map +1 -1
- package/dist/core/keybindings.js +64 -238
- package/dist/core/keybindings.js.map +1 -1
- package/dist/core/model-registry.d.ts +26 -181
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/model-registry.js +228 -407
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/model-resolver.d.ts +0 -139
- package/dist/core/model-resolver.d.ts.map +1 -1
- package/dist/core/model-resolver.js +34 -215
- package/dist/core/model-resolver.js.map +1 -1
- package/dist/core/package-manager.d.ts +25 -57
- package/dist/core/package-manager.d.ts.map +1 -1
- package/dist/core/package-manager.js +326 -964
- package/dist/core/package-manager.js.map +1 -1
- package/dist/core/prompt-templates.d.ts +2 -34
- package/dist/core/prompt-templates.d.ts.map +1 -1
- package/dist/core/prompt-templates.js +122 -170
- package/dist/core/prompt-templates.js.map +1 -1
- package/dist/core/resource-loader.d.ts +19 -12
- package/dist/core/resource-loader.d.ts.map +1 -1
- package/dist/core/resource-loader.js +353 -467
- package/dist/core/resource-loader.js.map +1 -1
- package/dist/core/sdk.d.ts +2 -61
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +184 -252
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/session-manager.d.ts +447 -1
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +1176 -1
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/settings-manager.d.ts +9 -12
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +170 -398
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/skills.d.ts +2 -27
- package/dist/core/skills.d.ts.map +1 -1
- package/dist/core/skills.js +149 -212
- package/dist/core/skills.js.map +1 -1
- package/dist/core/subagents.d.ts +2 -2
- package/dist/core/subagents.d.ts.map +1 -1
- package/dist/core/subagents.js +21 -14
- package/dist/core/subagents.js.map +1 -1
- package/dist/core/system-prompt.d.ts +0 -11
- package/dist/core/system-prompt.d.ts.map +1 -1
- package/dist/core/system-prompt.js +168 -139
- package/dist/core/system-prompt.js.map +1 -1
- package/dist/core/timings.d.ts +1 -4
- package/dist/core/timings.d.ts.map +1 -1
- package/dist/core/timings.js +34 -18
- package/dist/core/timings.js.map +1 -1
- package/dist/core/todo-store.d.ts +20 -0
- package/dist/core/todo-store.d.ts.map +1 -0
- package/dist/core/todo-store.js +60 -0
- package/dist/core/todo-store.js.map +1 -0
- package/dist/core/tools/bash.d.ts +2 -0
- package/dist/core/tools/bash.d.ts.map +1 -0
- package/dist/core/tools/bash.js +2 -0
- package/dist/core/tools/bash.js.map +1 -0
- package/dist/core/tools/bg-process.d.ts +1 -6
- package/dist/core/tools/bg-process.d.ts.map +1 -1
- package/dist/core/tools/bg-process.js +4 -18
- package/dist/core/tools/bg-process.js.map +1 -1
- package/dist/core/tools/edit-diff.d.ts +9 -0
- package/dist/core/tools/edit-diff.d.ts.map +1 -0
- package/dist/core/tools/edit-diff.js +2 -0
- package/dist/core/tools/edit-diff.js.map +1 -0
- package/dist/core/tools/edit.d.ts +2 -0
- package/dist/core/tools/edit.d.ts.map +1 -0
- package/dist/core/tools/edit.js +2 -0
- package/dist/core/tools/edit.js.map +1 -0
- package/dist/core/tools/find.d.ts +2 -0
- package/dist/core/tools/find.d.ts.map +1 -0
- package/dist/core/tools/find.js +2 -0
- package/dist/core/tools/find.js.map +1 -0
- package/dist/core/tools/grep.d.ts +2 -0
- package/dist/core/tools/grep.d.ts.map +1 -0
- package/dist/core/tools/grep.js +2 -0
- package/dist/core/tools/grep.js.map +1 -0
- package/dist/core/tools/index.d.ts +8 -2
- package/dist/core/tools/index.d.ts.map +1 -1
- package/dist/core/tools/ls.d.ts +2 -0
- package/dist/core/tools/ls.d.ts.map +1 -0
- package/dist/core/tools/ls.js +2 -0
- package/dist/core/tools/ls.js.map +1 -0
- package/dist/core/tools/memory.d.ts +50 -1
- package/dist/core/tools/memory.d.ts.map +1 -1
- package/dist/core/tools/memory.js +11 -7
- package/dist/core/tools/memory.js.map +1 -1
- package/dist/core/tools/path-utils.d.ts +2 -0
- package/dist/core/tools/path-utils.d.ts.map +1 -0
- package/dist/core/tools/path-utils.js +2 -0
- package/dist/core/tools/path-utils.js.map +1 -0
- package/dist/core/tools/read.d.ts +2 -0
- package/dist/core/tools/read.d.ts.map +1 -0
- package/dist/core/tools/read.js +2 -0
- package/dist/core/tools/read.js.map +1 -0
- package/dist/core/tools/registry.d.ts +0 -15
- package/dist/core/tools/registry.d.ts.map +1 -1
- package/dist/core/tools/registry.js +13 -37
- package/dist/core/tools/registry.js.map +1 -1
- package/dist/core/tools/task.d.ts +17 -23
- package/dist/core/tools/task.d.ts.map +1 -1
- package/dist/core/tools/task.js +43 -82
- package/dist/core/tools/task.js.map +1 -1
- package/dist/core/tools/todo.d.ts +17 -20
- package/dist/core/tools/todo.d.ts.map +1 -1
- package/dist/core/tools/todo.js +79 -58
- package/dist/core/tools/todo.js.map +1 -1
- package/dist/core/tools/truncate.d.ts +2 -0
- package/dist/core/tools/truncate.d.ts.map +1 -0
- package/dist/core/tools/truncate.js +2 -0
- package/dist/core/tools/truncate.js.map +1 -0
- package/dist/core/tools/webfetch.d.ts +2 -0
- package/dist/core/tools/webfetch.d.ts.map +1 -0
- package/dist/core/tools/webfetch.js +2 -0
- package/dist/core/tools/webfetch.js.map +1 -0
- package/dist/core/tools/websearch.d.ts +2 -0
- package/dist/core/tools/websearch.d.ts.map +1 -0
- package/dist/core/tools/websearch.js +2 -0
- package/dist/core/tools/websearch.js.map +1 -0
- package/dist/core/tools/write.d.ts +2 -0
- package/dist/core/tools/write.d.ts.map +1 -0
- package/dist/core/tools/write.js +2 -0
- package/dist/core/tools/write.js.map +1 -0
- package/dist/index.d.ts +35 -29
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +33 -41
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +237 -225
- package/dist/main.js.map +1 -1
- package/dist/migrations.d.ts +0 -25
- package/dist/migrations.d.ts.map +1 -1
- package/dist/migrations.js +129 -180
- package/dist/migrations.js.map +1 -1
- package/dist/modes/index.d.ts +13 -6
- package/dist/modes/index.d.ts.map +1 -1
- package/dist/modes/index.js +11 -5
- package/dist/modes/index.js.map +1 -1
- package/dist/modes/interactive/components/armin.d.ts +8 -23
- package/dist/modes/interactive/components/armin.d.ts.map +1 -1
- package/dist/modes/interactive/components/armin.js +217 -266
- package/dist/modes/interactive/components/armin.js.map +1 -1
- package/dist/modes/interactive/components/assistant-message.d.ts +2 -168
- package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/assistant-message.js +61 -216
- package/dist/modes/interactive/components/assistant-message.js.map +1 -1
- package/dist/modes/interactive/components/bash-execution.d.ts +6 -313
- package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
- package/dist/modes/interactive/components/bash-execution.js +86 -403
- package/dist/modes/interactive/components/bash-execution.js.map +1 -1
- package/dist/modes/interactive/components/bordered-loader.d.ts +1 -3
- package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -1
- package/dist/modes/interactive/components/bordered-loader.js +59 -29
- package/dist/modes/interactive/components/bordered-loader.js.map +1 -1
- package/dist/modes/interactive/components/branch-summary-message.d.ts +3 -3
- package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/branch-summary-message.js +30 -17
- package/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
- package/dist/modes/interactive/components/compaction-summary-message.d.ts +3 -3
- package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/compaction-summary-message.js +35 -18
- package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -1
- package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/config-selector.js +60 -68
- package/dist/modes/interactive/components/config-selector.js.map +1 -1
- package/dist/modes/interactive/components/countdown-timer.d.ts +2 -6
- package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -1
- package/dist/modes/interactive/components/countdown-timer.js +32 -18
- package/dist/modes/interactive/components/countdown-timer.js.map +1 -1
- package/dist/modes/interactive/components/custom-editor.d.ts +1 -5
- package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
- package/dist/modes/interactive/components/custom-editor.js +45 -37
- package/dist/modes/interactive/components/custom-editor.js.map +1 -1
- package/dist/modes/interactive/components/custom-message.d.ts +5 -6
- package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/custom-message.js +43 -53
- package/dist/modes/interactive/components/custom-message.js.map +1 -1
- package/dist/modes/interactive/components/diff.d.ts +0 -3
- package/dist/modes/interactive/components/diff.d.ts.map +1 -1
- package/dist/modes/interactive/components/diff.js +101 -108
- package/dist/modes/interactive/components/diff.js.map +1 -1
- package/dist/modes/interactive/components/dynamic-border.d.ts +7 -2
- package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -1
- package/dist/modes/interactive/components/dynamic-border.js +24 -4
- package/dist/modes/interactive/components/dynamic-border.js.map +1 -1
- package/dist/modes/interactive/components/extension-editor.d.ts +5 -9
- package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
- package/dist/modes/interactive/components/extension-editor.js +43 -46
- package/dist/modes/interactive/components/extension-editor.js.map +1 -1
- package/dist/modes/interactive/components/extension-input.d.ts +4 -9
- package/dist/modes/interactive/components/extension-input.d.ts.map +1 -1
- package/dist/modes/interactive/components/extension-input.js +45 -28
- package/dist/modes/interactive/components/extension-input.js.map +1 -1
- package/dist/modes/interactive/components/extension-selector.d.ts +7 -12
- package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/extension-selector.js +54 -32
- package/dist/modes/interactive/components/extension-selector.js.map +1 -1
- package/dist/modes/interactive/components/footer.d.ts +2 -11
- package/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/dist/modes/interactive/components/footer.js +135 -183
- package/dist/modes/interactive/components/footer.js.map +1 -1
- package/dist/modes/interactive/components/index.d.ts +79 -30
- package/dist/modes/interactive/components/index.d.ts.map +1 -1
- package/dist/modes/interactive/components/index.js +73 -31
- package/dist/modes/interactive/components/index.js.map +1 -1
- package/dist/modes/interactive/components/keybinding-hints.d.ts +0 -18
- package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -1
- package/dist/modes/interactive/components/keybinding-hints.js +24 -31
- package/dist/modes/interactive/components/keybinding-hints.js.map +1 -1
- package/dist/modes/interactive/components/login-dialog.d.ts +11 -24
- package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
- package/dist/modes/interactive/components/login-dialog.js +89 -86
- package/dist/modes/interactive/components/login-dialog.js.map +1 -1
- package/dist/modes/interactive/components/model-selector.d.ts +15 -19
- package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/model-selector.js +104 -157
- package/dist/modes/interactive/components/model-selector.js.map +1 -1
- package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/oauth-selector.js +5 -5
- package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
- package/dist/modes/interactive/components/scoped-models-selector.d.ts +12 -22
- package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/scoped-models-selector.js +111 -132
- package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
- package/dist/modes/interactive/components/session-selector-search.d.ts +3 -3
- package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -1
- package/dist/modes/interactive/components/session-selector-search.js +92 -103
- package/dist/modes/interactive/components/session-selector-search.js.map +1 -1
- package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/session-selector.js +28 -39
- package/dist/modes/interactive/components/session-selector.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector.d.ts +1 -1
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +111 -203
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/components/show-images-selector.d.ts +1 -1
- package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/show-images-selector.js +17 -19
- package/dist/modes/interactive/components/show-images-selector.js.map +1 -1
- package/dist/modes/interactive/components/skill-invocation-message.d.ts +3 -3
- package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/skill-invocation-message.js +29 -19
- package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
- package/dist/modes/interactive/components/theme-selector.d.ts +2 -2
- package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/theme-selector.js +20 -25
- package/dist/modes/interactive/components/theme-selector.js.map +1 -1
- package/dist/modes/interactive/components/thinking-selector.d.ts +1 -1
- package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/thinking-selector.js +19 -20
- package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
- package/dist/modes/interactive/components/tool-execution.d.ts +12 -10
- package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
- package/dist/modes/interactive/components/tool-execution.js +14 -8
- package/dist/modes/interactive/components/tool-execution.js.map +1 -1
- package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/tree-selector.js +53 -60
- package/dist/modes/interactive/components/tree-selector.js.map +1 -1
- package/dist/modes/interactive/components/user-message-selector.d.ts +3 -9
- package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/user-message-selector.js +57 -68
- package/dist/modes/interactive/components/user-message-selector.js.map +1 -1
- package/dist/modes/interactive/components/visual-truncate.d.ts +0 -12
- package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -1
- package/dist/modes/interactive/components/visual-truncate.js +14 -22
- package/dist/modes/interactive/components/visual-truncate.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +6 -0
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +118 -113
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme.js +189 -39
- package/dist/modes/interactive/theme/theme.js.map +1 -1
- package/dist/modes/rpc/rpc-client.d.ts +8 -1
- package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client.js +88 -59
- package/dist/modes/rpc/rpc-client.js.map +1 -1
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-mode.js +24 -46
- package/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-types.d.ts +75 -409
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-types.js +21 -360
- package/dist/modes/rpc/rpc-types.js.map +1 -1
- package/dist/observability/core/config.d.ts +28 -0
- package/dist/observability/core/config.d.ts.map +1 -0
- package/dist/observability/core/config.js +150 -0
- package/dist/observability/core/config.js.map +1 -0
- package/dist/observability/core/event-bus.d.ts +15 -0
- package/dist/observability/core/event-bus.d.ts.map +1 -0
- package/dist/observability/core/event-bus.js +37 -0
- package/dist/observability/core/event-bus.js.map +1 -0
- package/dist/observability/core/index.d.ts +12 -0
- package/dist/observability/core/index.d.ts.map +1 -0
- package/dist/observability/core/index.js +14 -0
- package/dist/observability/core/index.js.map +1 -0
- package/dist/observability/core/observability.d.ts +63 -0
- package/dist/observability/core/observability.d.ts.map +1 -0
- package/dist/observability/core/observability.js +127 -0
- package/dist/observability/core/observability.js.map +1 -0
- package/dist/observability/core/span.d.ts +37 -0
- package/dist/observability/core/span.d.ts.map +1 -0
- package/dist/observability/core/span.js +90 -0
- package/dist/observability/core/span.js.map +1 -0
- package/dist/observability/core/tracer.d.ts +22 -0
- package/dist/observability/core/tracer.d.ts.map +1 -0
- package/dist/observability/core/tracer.js +79 -0
- package/dist/observability/core/tracer.js.map +1 -0
- package/dist/observability/core/types.d.ts +155 -0
- package/dist/observability/core/types.d.ts.map +1 -0
- package/dist/observability/core/types.js +38 -0
- package/dist/observability/core/types.js.map +1 -0
- package/dist/observability/exporters/base-exporter.d.ts +16 -0
- package/dist/observability/exporters/base-exporter.d.ts.map +1 -0
- package/dist/observability/exporters/base-exporter.js +26 -0
- package/dist/observability/exporters/base-exporter.js.map +1 -0
- package/dist/observability/exporters/console-exporter.d.ts +22 -0
- package/dist/observability/exporters/console-exporter.d.ts.map +1 -0
- package/dist/observability/exporters/console-exporter.js +80 -0
- package/dist/observability/exporters/console-exporter.js.map +1 -0
- package/dist/observability/exporters/file-exporter.d.ts +31 -0
- package/dist/observability/exporters/file-exporter.d.ts.map +1 -0
- package/dist/observability/exporters/file-exporter.js +120 -0
- package/dist/observability/exporters/file-exporter.js.map +1 -0
- package/dist/observability/exporters/index.d.ts +12 -0
- package/dist/observability/exporters/index.d.ts.map +1 -0
- package/dist/observability/exporters/index.js +11 -0
- package/dist/observability/exporters/index.js.map +1 -0
- package/dist/observability/exporters/langfuse-exporter.d.ts +27 -0
- package/dist/observability/exporters/langfuse-exporter.d.ts.map +1 -0
- package/dist/observability/exporters/langfuse-exporter.js +146 -0
- package/dist/observability/exporters/langfuse-exporter.js.map +1 -0
- package/dist/observability/exporters/sentry-exporter.d.ts +22 -0
- package/dist/observability/exporters/sentry-exporter.d.ts.map +1 -0
- package/dist/observability/exporters/sentry-exporter.js +121 -0
- package/dist/observability/exporters/sentry-exporter.js.map +1 -0
- package/dist/observability/index.d.ts +3 -0
- package/dist/observability/index.d.ts.map +1 -0
- package/dist/observability/index.js +3 -0
- package/dist/observability/index.js.map +1 -0
- package/dist/utils/changelog.d.ts +1 -2
- package/dist/utils/changelog.d.ts.map +1 -1
- package/dist/utils/changelog.js +53 -61
- package/dist/utils/changelog.js.map +1 -1
- package/dist/utils/clipboard-image.d.ts.map +1 -1
- package/dist/utils/clipboard-image.js +77 -83
- package/dist/utils/clipboard-image.js.map +1 -1
- package/dist/utils/clipboard.d.ts.map +1 -1
- package/dist/utils/clipboard.js +62 -49
- package/dist/utils/clipboard.js.map +1 -1
- package/dist/utils/image-convert.d.ts +6 -6
- package/dist/utils/image-convert.d.ts.map +1 -1
- package/dist/utils/image-convert.js +29 -23
- package/dist/utils/image-convert.js.map +1 -1
- package/dist/utils/image-resize.d.ts +0 -17
- package/dist/utils/image-resize.d.ts.map +1 -1
- package/dist/utils/image-resize.js +100 -138
- package/dist/utils/image-resize.js.map +1 -1
- package/dist/utils/mime.d.ts +1 -0
- package/dist/utils/mime.d.ts.map +1 -1
- package/dist/utils/mime.js +35 -15
- package/dist/utils/mime.js.map +1 -1
- package/dist/utils/photon.d.ts +4 -15
- package/dist/utils/photon.d.ts.map +1 -1
- package/dist/utils/photon.js +71 -60
- package/dist/utils/photon.js.map +1 -1
- package/dist/utils/shell.d.ts +4 -21
- package/dist/utils/shell.d.ts.map +1 -1
- package/dist/utils/shell.js +101 -124
- package/dist/utils/shell.js.map +1 -1
- package/dist/utils/sleep.d.ts +1 -1
- package/dist/utils/sleep.d.ts.map +1 -1
- package/dist/utils/sleep.js +32 -8
- package/dist/utils/sleep.js.map +1 -1
- package/dist/utils/tools-manager.d.ts +4 -2
- package/dist/utils/tools-manager.d.ts.map +1 -1
- package/dist/utils/tools-manager.js +96 -122
- package/dist/utils/tools-manager.js.map +1 -1
- package/docs/PI_MONO_MIT_REMOVAL_GUIDE.md +2132 -0
- package/docs/SAME_TO_SAME_PARITY_REPORT.md +312 -0
- package/examples/README.md +12 -0
- package/package.json +62 -88
- package/dist/modes/interactive/theme/dark.json +0 -85
- package/dist/modes/interactive/theme/light.json +0 -84
- package/dist/modes/interactive/theme/theme-schema.json +0 -335
- package/docs/FEATURES.md +0 -306
- package/docs/MCP.md +0 -341
- package/docs/MEMORY.md +0 -443
- package/examples/mcp-servers.example.json +0 -50
|
@@ -1,2 +1,448 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Session Manager - Persistent session storage and retrieval
|
|
3
|
+
*
|
|
4
|
+
* Purpose:
|
|
5
|
+
* Manages agent session persistence using JSONL (JSON Lines) format for append-only,
|
|
6
|
+
* transaction-safe storage. Handles session loading, saving, branching, and compaction.
|
|
7
|
+
*
|
|
8
|
+
* Based on conversation persistence patterns from Anthropic's Claude API
|
|
9
|
+
* and JSONL formats from common chat applications (ChatGPT, Claude.ai).
|
|
10
|
+
* Refactored for agent session branching and compaction.
|
|
11
|
+
*
|
|
12
|
+
* Architecture:
|
|
13
|
+
* - Session File Format: JSONL (one JSON object per line)
|
|
14
|
+
* - Storage Location: ~/.indusagi/sessions/ (or INDUSAGI_DIR/sessions/)
|
|
15
|
+
* - Entry Types: Messages, model changes, thinking level changes, compaction markers
|
|
16
|
+
* - Concurrency: Append-only prevents write conflicts
|
|
17
|
+
* - Recovery: Can rebuild state from session entry log
|
|
18
|
+
*
|
|
19
|
+
* Key Features:
|
|
20
|
+
* - Append-only session files for safe concurrent access
|
|
21
|
+
* - Session branching (fork a session at any point)
|
|
22
|
+
* - Entry types for different session events
|
|
23
|
+
* - Compaction metadata tracking
|
|
24
|
+
* - Custom entry support for extensions
|
|
25
|
+
* - Session validation and recovery
|
|
26
|
+
* - Efficient file operations (streaming read for large sessions)
|
|
27
|
+
*
|
|
28
|
+
* Session File Format:
|
|
29
|
+
* ```
|
|
30
|
+
* {"type":"session","version":3,"id":"abc123","timestamp":"2025-02-21T...","cwd":"/path","parentSession":"parent-id"}
|
|
31
|
+
* {"type":"message","id":"msg1","parentId":null,"timestamp":"2025-02-21T...","message":{...}}
|
|
32
|
+
* {"type":"message","id":"msg2","parentId":"msg1","timestamp":"2025-02-21T...","message":{...}}
|
|
33
|
+
* {"type":"model_change","id":"mc1","parentId":"msg2","timestamp":"2025-02-21T...","provider":"openai","modelId":"gpt-4"}
|
|
34
|
+
* {"type":"thinking_level_change","id":"tlc1","parentId":"mc1","timestamp":"2025-02-21T...","thinkingLevel":"high"}
|
|
35
|
+
* {"type":"compaction","id":"comp1","parentId":"tlc1","timestamp":"2025-02-21T...","summary":"...","firstKeptEntryId":"msg2","tokensBefore":5000}
|
|
36
|
+
* ```
|
|
37
|
+
*
|
|
38
|
+
* Entry Types:
|
|
39
|
+
* - "message" - Agent or user message
|
|
40
|
+
* - "model_change" - Model was switched
|
|
41
|
+
* - "thinking_level_change" - Thinking level was adjusted
|
|
42
|
+
* - "compaction" - Session was compacted with summary
|
|
43
|
+
* - "branch_summary" - Branch point summary
|
|
44
|
+
* - "custom" - Extension-specific data
|
|
45
|
+
*
|
|
46
|
+
* Session State Reconstruction:
|
|
47
|
+
* 1. Load session header (first line)
|
|
48
|
+
* 2. Read all entries sequentially
|
|
49
|
+
* 3. Build message list from "message" entries
|
|
50
|
+
* 4. Track latest "model_change" for current model
|
|
51
|
+
* 5. Track latest "thinking_level_change" for current level
|
|
52
|
+
* 6. Use "compaction" markers to know what was summarized
|
|
53
|
+
* 7. Ignore "branch_summary" and "custom" entries from context
|
|
54
|
+
*
|
|
55
|
+
* Session Branching:
|
|
56
|
+
* ```typescript
|
|
57
|
+
* // Load existing session
|
|
58
|
+
* const session = await loadSession("original-id");
|
|
59
|
+
*
|
|
60
|
+
* // Create branch at current point
|
|
61
|
+
* const branchId = randomUUID();
|
|
62
|
+
* const newSession = createNewSession(branchId, { parentSession: "original-id" });
|
|
63
|
+
*
|
|
64
|
+
* // Messages after branch are separate from original
|
|
65
|
+
* ```
|
|
66
|
+
*
|
|
67
|
+
* Compaction Process:
|
|
68
|
+
* - Summarize old messages into summary text
|
|
69
|
+
* - Write CompactionEntry with summary and metadata
|
|
70
|
+
* - Keep all entries for recovery
|
|
71
|
+
* - LLM context uses summary instead of original messages
|
|
72
|
+
*
|
|
73
|
+
* Large File Handling:
|
|
74
|
+
* - Sessions can be > 1GB
|
|
75
|
+
* - Use streaming/chunked reads for file access
|
|
76
|
+
* - Append operations are efficient (seek to EOF + write)
|
|
77
|
+
* - Supports pagination for large message lists
|
|
78
|
+
*
|
|
79
|
+
* Error Handling:
|
|
80
|
+
* - Malformed entries: Logged and skipped
|
|
81
|
+
* - Incomplete files: Recovery via last valid entry
|
|
82
|
+
* - Missing sessions: Returns undefined
|
|
83
|
+
* - File permission errors: Throws with context
|
|
84
|
+
*
|
|
85
|
+
* Usage Examples:
|
|
86
|
+
* ```typescript
|
|
87
|
+
* // Create new session
|
|
88
|
+
* const sessionId = randomUUID();
|
|
89
|
+
* const header = createSessionHeader(sessionId, process.cwd());
|
|
90
|
+
* await saveSessionEntry(sessionId, header);
|
|
91
|
+
*
|
|
92
|
+
* // Add messages
|
|
93
|
+
* const message: AgentMessage = { role: "user", content: "..." };
|
|
94
|
+
* await saveSessionEntry(sessionId, {
|
|
95
|
+
* type: "message",
|
|
96
|
+
* id: randomUUID(),
|
|
97
|
+
* parentId: null,
|
|
98
|
+
* timestamp: new Date().toISOString(),
|
|
99
|
+
* message
|
|
100
|
+
* });
|
|
101
|
+
*
|
|
102
|
+
* // Load session
|
|
103
|
+
* const loaded = await loadSession(sessionId);
|
|
104
|
+
* console.log(loaded.messages.length);
|
|
105
|
+
*
|
|
106
|
+
* // List all sessions
|
|
107
|
+
* const all = await listSessions();
|
|
108
|
+
* ```
|
|
109
|
+
*
|
|
110
|
+
* File Locations:
|
|
111
|
+
* - Session directory: ~/.indusagi/sessions/
|
|
112
|
+
* - Session file: ~/.indusagi/sessions/{sessionId}.jsonl
|
|
113
|
+
* - Can override with INDUSAGI_DIR environment variable
|
|
114
|
+
*
|
|
115
|
+
* Thread Safety:
|
|
116
|
+
* - JSONL format allows append-only writes
|
|
117
|
+
* - No explicit locking needed
|
|
118
|
+
* - Multiple processes can append safely
|
|
119
|
+
* - Reads may see partial entries (handle gracefully)
|
|
120
|
+
*
|
|
121
|
+
* Based on session manager from indusagi-agent
|
|
122
|
+
* Original: https://github.com/varunisrani/indusagi-ts/vendor/indusagi-agent/src/session-manager.ts
|
|
123
|
+
*/
|
|
124
|
+
import type { AgentMessage } from "indusagi/agent";
|
|
125
|
+
import type { ImageContent, Message, TextContent } from "indusagi/ai";
|
|
126
|
+
import { type BashExecutionMessage, type CustomMessage } from "./messages.js";
|
|
127
|
+
export declare const CURRENT_SESSION_VERSION = 3;
|
|
128
|
+
export interface SessionHeader {
|
|
129
|
+
type: "session";
|
|
130
|
+
version?: number;
|
|
131
|
+
id: string;
|
|
132
|
+
timestamp: string;
|
|
133
|
+
cwd: string;
|
|
134
|
+
parentSession?: string;
|
|
135
|
+
}
|
|
136
|
+
export interface NewSessionOptions {
|
|
137
|
+
parentSession?: string;
|
|
138
|
+
}
|
|
139
|
+
export interface SessionEntryBase {
|
|
140
|
+
type: string;
|
|
141
|
+
id: string;
|
|
142
|
+
parentId: string | null;
|
|
143
|
+
timestamp: string;
|
|
144
|
+
}
|
|
145
|
+
export interface SessionMessageEntry extends SessionEntryBase {
|
|
146
|
+
type: "message";
|
|
147
|
+
message: AgentMessage;
|
|
148
|
+
}
|
|
149
|
+
export interface ThinkingLevelChangeEntry extends SessionEntryBase {
|
|
150
|
+
type: "thinking_level_change";
|
|
151
|
+
thinkingLevel: string;
|
|
152
|
+
}
|
|
153
|
+
export interface ModelChangeEntry extends SessionEntryBase {
|
|
154
|
+
type: "model_change";
|
|
155
|
+
provider: string;
|
|
156
|
+
modelId: string;
|
|
157
|
+
}
|
|
158
|
+
export interface CompactionEntry<T = unknown> extends SessionEntryBase {
|
|
159
|
+
type: "compaction";
|
|
160
|
+
summary: string;
|
|
161
|
+
firstKeptEntryId: string;
|
|
162
|
+
tokensBefore: number;
|
|
163
|
+
/** Extension-specific data (e.g., ArtifactIndex, version markers for structured compaction) */
|
|
164
|
+
details?: T;
|
|
165
|
+
/** True if generated by an extension, undefined/false if indusagi-generated (backward compatible) */
|
|
166
|
+
fromHook?: boolean;
|
|
167
|
+
}
|
|
168
|
+
export interface BranchSummaryEntry<T = unknown> extends SessionEntryBase {
|
|
169
|
+
type: "branch_summary";
|
|
170
|
+
fromId: string;
|
|
171
|
+
summary: string;
|
|
172
|
+
/** Extension-specific data (not sent to LLM) */
|
|
173
|
+
details?: T;
|
|
174
|
+
/** True if generated by an extension, false if indusagi-generated */
|
|
175
|
+
fromHook?: boolean;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Custom entry for extensions to store extension-specific data in the session.
|
|
179
|
+
* Use customType to identify your extension's entries.
|
|
180
|
+
*
|
|
181
|
+
* Purpose: Persist extension state across session reloads. On reload, extensions can
|
|
182
|
+
* scan entries for their customType and reconstruct internal state.
|
|
183
|
+
*
|
|
184
|
+
* Does NOT participate in LLM context (ignored by buildSessionContext).
|
|
185
|
+
* For injecting content into context, see CustomMessageEntry.
|
|
186
|
+
*/
|
|
187
|
+
export interface CustomEntry<T = unknown> extends SessionEntryBase {
|
|
188
|
+
type: "custom";
|
|
189
|
+
customType: string;
|
|
190
|
+
data?: T;
|
|
191
|
+
}
|
|
192
|
+
/** Label entry for user-defined bookmarks/markers on entries. */
|
|
193
|
+
export interface LabelEntry extends SessionEntryBase {
|
|
194
|
+
type: "label";
|
|
195
|
+
targetId: string;
|
|
196
|
+
label: string | undefined;
|
|
197
|
+
}
|
|
198
|
+
/** Session metadata entry (e.g., user-defined display name). */
|
|
199
|
+
export interface SessionInfoEntry extends SessionEntryBase {
|
|
200
|
+
type: "session_info";
|
|
201
|
+
name?: string;
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Custom message entry for extensions to inject messages into LLM context.
|
|
205
|
+
* Use customType to identify your extension's entries.
|
|
206
|
+
*
|
|
207
|
+
* Unlike CustomEntry, this DOES participate in LLM context.
|
|
208
|
+
* The content is converted to a user message in buildSessionContext().
|
|
209
|
+
* Use details for extension-specific metadata (not sent to LLM).
|
|
210
|
+
*
|
|
211
|
+
* display controls TUI rendering:
|
|
212
|
+
* - false: hidden entirely
|
|
213
|
+
* - true: rendered with distinct styling (different from user messages)
|
|
214
|
+
*/
|
|
215
|
+
export interface CustomMessageEntry<T = unknown> extends SessionEntryBase {
|
|
216
|
+
type: "custom_message";
|
|
217
|
+
customType: string;
|
|
218
|
+
content: string | (TextContent | ImageContent)[];
|
|
219
|
+
details?: T;
|
|
220
|
+
display: boolean;
|
|
221
|
+
}
|
|
222
|
+
/** Session entry - has id/parentId for tree structure (returned by "read" methods in SessionManager) */
|
|
223
|
+
export type SessionEntry = SessionMessageEntry | ThinkingLevelChangeEntry | ModelChangeEntry | CompactionEntry | BranchSummaryEntry | CustomEntry | CustomMessageEntry | LabelEntry | SessionInfoEntry;
|
|
224
|
+
/** Raw file entry (includes header) */
|
|
225
|
+
export type FileEntry = SessionHeader | SessionEntry;
|
|
226
|
+
/** Tree node for getTree() - defensive copy of session structure */
|
|
227
|
+
export interface SessionTreeNode {
|
|
228
|
+
entry: SessionEntry;
|
|
229
|
+
children: SessionTreeNode[];
|
|
230
|
+
/** Resolved label for this entry, if any */
|
|
231
|
+
label?: string;
|
|
232
|
+
}
|
|
233
|
+
export interface SessionContext {
|
|
234
|
+
messages: AgentMessage[];
|
|
235
|
+
thinkingLevel: string;
|
|
236
|
+
model: {
|
|
237
|
+
provider: string;
|
|
238
|
+
modelId: string;
|
|
239
|
+
} | null;
|
|
240
|
+
}
|
|
241
|
+
export interface SessionInfo {
|
|
242
|
+
path: string;
|
|
243
|
+
id: string;
|
|
244
|
+
/** Working directory where the session was started. Empty string for old sessions. */
|
|
245
|
+
cwd: string;
|
|
246
|
+
/** User-defined display name from session_info entries. */
|
|
247
|
+
name?: string;
|
|
248
|
+
/** Timestamp when session was last modified */
|
|
249
|
+
lastModified: number;
|
|
250
|
+
created: Date;
|
|
251
|
+
modified: Date;
|
|
252
|
+
messageCount: number;
|
|
253
|
+
firstMessage: string;
|
|
254
|
+
allMessagesText: string;
|
|
255
|
+
/** Size of session file in bytes */
|
|
256
|
+
size?: number;
|
|
257
|
+
}
|
|
258
|
+
export type ReadonlySessionManager = Pick<SessionManager, "getCwd" | "getSessionDir" | "getSessionId" | "getSessionFile" | "getLeafId" | "getLeafEntry" | "getEntry" | "getLabel" | "getBranch" | "getHeader" | "getEntries" | "getTree" | "getSessionName">;
|
|
259
|
+
/** Exported for testing */
|
|
260
|
+
export declare function migrateSessionEntries(entries: FileEntry[]): void;
|
|
261
|
+
/** Exported for compaction.test.ts */
|
|
262
|
+
export declare function parseSessionEntries(content: string): FileEntry[];
|
|
263
|
+
export declare function getLatestCompactionEntry(entries: SessionEntry[]): CompactionEntry | null;
|
|
264
|
+
/**
|
|
265
|
+
* Build the session context from entries using tree traversal.
|
|
266
|
+
* If leafId is provided, walks from that entry to root.
|
|
267
|
+
* Handles compaction and branch summaries along the path.
|
|
268
|
+
*/
|
|
269
|
+
export declare function buildSessionContext(entries: SessionEntry[], leafId?: string | null, byId?: Map<string, SessionEntry>): SessionContext;
|
|
270
|
+
/** Exported for testing */
|
|
271
|
+
export declare function loadEntriesFromFile(filePath: string): FileEntry[];
|
|
272
|
+
/** Exported for testing */
|
|
273
|
+
export declare function findMostRecentSession(sessionDir: string): string | null;
|
|
274
|
+
export type SessionListProgress = (loaded: number, total: number) => void;
|
|
275
|
+
/**
|
|
276
|
+
* Manages conversation sessions as append-only trees stored in JSONL files.
|
|
277
|
+
*
|
|
278
|
+
* Each session entry has an id and parentId forming a tree structure. The "leaf"
|
|
279
|
+
* pointer tracks the current position. Appending creates a child of the current leaf.
|
|
280
|
+
* Branching moves the leaf to an earlier entry, allowing new branches without
|
|
281
|
+
* modifying history.
|
|
282
|
+
*
|
|
283
|
+
* Use buildSessionContext() to get the resolved message list for the LLM, which
|
|
284
|
+
* handles compaction summaries and follows the path from root to current leaf.
|
|
285
|
+
*/
|
|
286
|
+
export declare class SessionManager {
|
|
287
|
+
private sessionId;
|
|
288
|
+
private sessionFile;
|
|
289
|
+
private sessionDir;
|
|
290
|
+
private cwd;
|
|
291
|
+
private persist;
|
|
292
|
+
private flushed;
|
|
293
|
+
private fileEntries;
|
|
294
|
+
private byId;
|
|
295
|
+
private labelsById;
|
|
296
|
+
private leafId;
|
|
297
|
+
private constructor();
|
|
298
|
+
/** Switch to a different session file (used for resume and branching) */
|
|
299
|
+
setSessionFile(sessionFile: string): void;
|
|
300
|
+
newSession(options?: NewSessionOptions): string | undefined;
|
|
301
|
+
private _buildIndex;
|
|
302
|
+
private _rewriteFile;
|
|
303
|
+
isPersisted(): boolean;
|
|
304
|
+
getCwd(): string;
|
|
305
|
+
getSessionDir(): string;
|
|
306
|
+
getSessionId(): string;
|
|
307
|
+
getSessionFile(): string | undefined;
|
|
308
|
+
_persist(entry: SessionEntry): void;
|
|
309
|
+
private _appendEntry;
|
|
310
|
+
/** Append a message as child of current leaf, then advance leaf. Returns entry id.
|
|
311
|
+
* Does not allow writing CompactionSummaryMessage and BranchSummaryMessage directly.
|
|
312
|
+
* Reason: we want these to be top-level entries in the session, not message session entries,
|
|
313
|
+
* so it is easier to find them.
|
|
314
|
+
* These need to be appended via appendCompaction() and appendBranchSummary() methods.
|
|
315
|
+
*/
|
|
316
|
+
appendMessage(message: Message | CustomMessage | BashExecutionMessage): string;
|
|
317
|
+
/** Append a thinking level change as child of current leaf, then advance leaf. Returns entry id. */
|
|
318
|
+
appendThinkingLevelChange(thinkingLevel: string): string;
|
|
319
|
+
/** Append a model change as child of current leaf, then advance leaf. Returns entry id. */
|
|
320
|
+
appendModelChange(provider: string, modelId: string): string;
|
|
321
|
+
/** Append a compaction summary as child of current leaf, then advance leaf. Returns entry id. */
|
|
322
|
+
appendCompaction<T = unknown>(summary: string, firstKeptEntryId: string, tokensBefore: number, details?: T, fromHook?: boolean): string;
|
|
323
|
+
/** Append a custom entry (for extensions) as child of current leaf, then advance leaf. Returns entry id. */
|
|
324
|
+
appendCustomEntry(customType: string, data?: unknown): string;
|
|
325
|
+
/** Append a session info entry (e.g., display name). Returns entry id. */
|
|
326
|
+
appendSessionInfo(name: string): string;
|
|
327
|
+
/** Get the current session name from the latest session_info entry, if any. */
|
|
328
|
+
getSessionName(): string | undefined;
|
|
329
|
+
/**
|
|
330
|
+
* Append a custom message entry (for extensions) that participates in LLM context.
|
|
331
|
+
* @param customType Extension identifier for filtering on reload
|
|
332
|
+
* @param content Message content (string or TextContent/ImageContent array)
|
|
333
|
+
* @param display Whether to show in TUI (true = styled display, false = hidden)
|
|
334
|
+
* @param details Optional extension-specific metadata (not sent to LLM)
|
|
335
|
+
* @returns Entry id
|
|
336
|
+
*/
|
|
337
|
+
appendCustomMessageEntry<T = unknown>(customType: string, content: string | (TextContent | ImageContent)[], display: boolean, details?: T): string;
|
|
338
|
+
getLeafId(): string | null;
|
|
339
|
+
getLeafEntry(): SessionEntry | undefined;
|
|
340
|
+
getEntry(id: string): SessionEntry | undefined;
|
|
341
|
+
/**
|
|
342
|
+
* Get all direct children of an entry.
|
|
343
|
+
*/
|
|
344
|
+
getChildren(parentId: string): SessionEntry[];
|
|
345
|
+
/**
|
|
346
|
+
* Get the label for an entry, if any.
|
|
347
|
+
*/
|
|
348
|
+
getLabel(id: string): string | undefined;
|
|
349
|
+
/**
|
|
350
|
+
* Set or clear a label on an entry.
|
|
351
|
+
* Labels are user-defined markers for bookmarking/navigation.
|
|
352
|
+
* Pass undefined or empty string to clear the label.
|
|
353
|
+
*/
|
|
354
|
+
appendLabelChange(targetId: string, label: string | undefined): string;
|
|
355
|
+
/**
|
|
356
|
+
* Walk from entry to root, returning all entries in path order.
|
|
357
|
+
* Includes all entry types (messages, compaction, model changes, etc.).
|
|
358
|
+
* Use buildSessionContext() to get the resolved messages for the LLM.
|
|
359
|
+
*/
|
|
360
|
+
getBranch(fromId?: string): SessionEntry[];
|
|
361
|
+
/**
|
|
362
|
+
* Build the session context (what gets sent to the LLM).
|
|
363
|
+
* Uses tree traversal from current leaf.
|
|
364
|
+
*/
|
|
365
|
+
buildSessionContext(): SessionContext;
|
|
366
|
+
/**
|
|
367
|
+
* Get session header.
|
|
368
|
+
*/
|
|
369
|
+
getHeader(): SessionHeader | null;
|
|
370
|
+
/**
|
|
371
|
+
* Get all session entries (excludes header). Returns a shallow copy.
|
|
372
|
+
* The session is append-only: use appendXXX() to add entries, branch() to
|
|
373
|
+
* change the leaf pointer. Entries cannot be modified or deleted.
|
|
374
|
+
*/
|
|
375
|
+
getEntries(): SessionEntry[];
|
|
376
|
+
/**
|
|
377
|
+
* Get the session as a tree structure. Returns a shallow defensive copy of all entries.
|
|
378
|
+
* A well-formed session has exactly one root (first entry with parentId === null).
|
|
379
|
+
* Orphaned entries (broken parent chain) are also returned as roots.
|
|
380
|
+
*/
|
|
381
|
+
getTree(): SessionTreeNode[];
|
|
382
|
+
/**
|
|
383
|
+
* Start a new branch from an earlier entry.
|
|
384
|
+
* Moves the leaf pointer to the specified entry. The next appendXXX() call
|
|
385
|
+
* will create a child of that entry, forming a new branch. Existing entries
|
|
386
|
+
* are not modified or deleted.
|
|
387
|
+
*/
|
|
388
|
+
branch(branchFromId: string): void;
|
|
389
|
+
/**
|
|
390
|
+
* Reset the leaf pointer to null (before any entries).
|
|
391
|
+
* The next appendXXX() call will create a new root entry (parentId = null).
|
|
392
|
+
* Use this when navigating to re-edit the first user message.
|
|
393
|
+
*/
|
|
394
|
+
resetLeaf(): void;
|
|
395
|
+
/**
|
|
396
|
+
* Start a new branch with a summary of the abandoned path.
|
|
397
|
+
* Same as branch(), but also appends a branch_summary entry that captures
|
|
398
|
+
* context from the abandoned conversation path.
|
|
399
|
+
*/
|
|
400
|
+
branchWithSummary(branchFromId: string | null, summary: string, details?: unknown, fromHook?: boolean): string;
|
|
401
|
+
/**
|
|
402
|
+
* Create a new session file containing only the path from root to the specified leaf.
|
|
403
|
+
* Useful for extracting a single conversation path from a branched session.
|
|
404
|
+
* Returns the new session file path, or undefined if not persisting.
|
|
405
|
+
*/
|
|
406
|
+
createBranchedSession(leafId: string): string | undefined;
|
|
407
|
+
/**
|
|
408
|
+
* Create a new session.
|
|
409
|
+
* @param cwd Working directory (stored in session header)
|
|
410
|
+
* @param sessionDir Optional session directory. If omitted, uses default (~/.indusagi/agent/sessions/<encoded-cwd>/).
|
|
411
|
+
*/
|
|
412
|
+
static create(cwd: string, sessionDir?: string): SessionManager;
|
|
413
|
+
/**
|
|
414
|
+
* Open a specific session file.
|
|
415
|
+
* @param path Path to session file
|
|
416
|
+
* @param sessionDir Optional session directory for /new or /branch. If omitted, derives from file's parent.
|
|
417
|
+
*/
|
|
418
|
+
static open(path: string, sessionDir?: string): SessionManager;
|
|
419
|
+
/**
|
|
420
|
+
* Continue the most recent session, or create new if none.
|
|
421
|
+
* @param cwd Working directory
|
|
422
|
+
* @param sessionDir Optional session directory. If omitted, uses default (~/.indusagi/agent/sessions/<encoded-cwd>/).
|
|
423
|
+
*/
|
|
424
|
+
static continueRecent(cwd: string, sessionDir?: string): SessionManager;
|
|
425
|
+
/** Create an in-memory session (no file persistence) */
|
|
426
|
+
static inMemory(cwd?: string): SessionManager;
|
|
427
|
+
/**
|
|
428
|
+
* Fork a session from another project directory into the current project.
|
|
429
|
+
* Creates a new session in the target cwd with the full history from the source session.
|
|
430
|
+
* @param sourcePath Path to the source session file
|
|
431
|
+
* @param targetCwd Target working directory (where the new session will be stored)
|
|
432
|
+
* @param sessionDir Optional session directory. If omitted, uses default for targetCwd.
|
|
433
|
+
*/
|
|
434
|
+
static forkFrom(sourcePath: string, targetCwd: string, sessionDir?: string): SessionManager;
|
|
435
|
+
/**
|
|
436
|
+
* List all sessions for a directory.
|
|
437
|
+
* @param cwd Working directory (used to compute default session directory)
|
|
438
|
+
* @param sessionDir Optional session directory. If omitted, uses default (~/.indusagi/agent/sessions/<encoded-cwd>/).
|
|
439
|
+
* @param onProgress Optional callback for progress updates (loaded, total)
|
|
440
|
+
*/
|
|
441
|
+
static list(cwd: string, sessionDir?: string, onProgress?: SessionListProgress): Promise<SessionInfo[]>;
|
|
442
|
+
/**
|
|
443
|
+
* List all sessions across all project directories.
|
|
444
|
+
* @param onProgress Optional callback for progress updates (loaded, total)
|
|
445
|
+
*/
|
|
446
|
+
static listAll(onProgress?: SessionListProgress): Promise<SessionInfo[]>;
|
|
447
|
+
}
|
|
2
448
|
//# sourceMappingURL=session-manager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../src/core/session-manager.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../src/core/session-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0HG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAiBtE,OAAO,EACN,KAAK,oBAAoB,EACzB,KAAK,aAAa,EAIlB,MAAM,eAAe,CAAC;AAEvB,eAAO,MAAM,uBAAuB,IAAI,CAAC;AAEzC,MAAM,WAAW,aAAa;IAC7B,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IACjC,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IAC5D,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,YAAY,CAAC;CACtB;AAED,MAAM,WAAW,wBAAyB,SAAQ,gBAAgB;IACjE,IAAI,EAAE,uBAAuB,CAAC;IAC9B,aAAa,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAiB,SAAQ,gBAAgB;IACzD,IAAI,EAAE,cAAc,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe,CAAC,CAAC,GAAG,OAAO,CAAE,SAAQ,gBAAgB;IACrE,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,+FAA+F;IAC/F,OAAO,CAAC,EAAE,CAAC,CAAC;IACZ,qGAAqG;IACrG,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB,CAAC,CAAC,GAAG,OAAO,CAAE,SAAQ,gBAAgB;IACxE,IAAI,EAAE,gBAAgB,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,gDAAgD;IAChD,OAAO,CAAC,EAAE,CAAC,CAAC;IACZ,qEAAqE;IACrE,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,OAAO,CAAE,SAAQ,gBAAgB;IACjE,IAAI,EAAE,QAAQ,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,CAAC,CAAC;CACT;AAED,iEAAiE;AACjE,MAAM,WAAW,UAAW,SAAQ,gBAAgB;IACnD,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1B;AAED,gEAAgE;AAChE,MAAM,WAAW,gBAAiB,SAAQ,gBAAgB;IACzD,IAAI,EAAE,cAAc,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,kBAAkB,CAAC,CAAC,GAAG,OAAO,CAAE,SAAQ,gBAAgB;IACxE,IAAI,EAAE,gBAAgB,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,GAAG,CAAC,WAAW,GAAG,YAAY,CAAC,EAAE,CAAC;IACjD,OAAO,CAAC,EAAE,CAAC,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;CACjB;AAED,wGAAwG;AACxG,MAAM,MAAM,YAAY,GACrB,mBAAmB,GACnB,wBAAwB,GACxB,gBAAgB,GAChB,eAAe,GACf,kBAAkB,GAClB,WAAW,GACX,kBAAkB,GAClB,UAAU,GACV,gBAAgB,CAAC;AAEpB,uCAAuC;AACvC,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,YAAY,CAAC;AAErD,oEAAoE;AACpE,MAAM,WAAW,eAAe;IAC/B,KAAK,EAAE,YAAY,CAAC;IACpB,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,4CAA4C;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC9B,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CACpD;AAED,MAAM,WAAW,WAAW;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,sFAAsF;IACtF,GAAG,EAAE,MAAM,CAAC;IACZ,2DAA2D;IAC3D,IAAI,CAAC,EAAE,MAAM,CAAC;IACb,+CAA+C;IAC/C,YAAY,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,IAAI,CAAC;IACd,QAAQ,EAAE,IAAI,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,oCAAoC;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,MAAM,sBAAsB,GAAG,IAAI,CACxC,cAAc,EACZ,QAAQ,GACR,eAAe,GACf,cAAc,GACd,gBAAgB,GAChB,WAAW,GACX,cAAc,GACd,UAAU,GACV,UAAU,GACV,WAAW,GACX,WAAW,GACX,YAAY,GACZ,SAAS,GACT,gBAAgB,CAClB,CAAC;AAiKF,2BAA2B;AAC3B,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI,CAEhE;AAED,sCAAsC;AACtC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,EAAE,CAEhE;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,eAAe,GAAG,IAAI,CAOxF;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAClC,OAAO,EAAE,YAAY,EAAE,EACvB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,EACtB,IAAI,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,GAC9B,cAAc,CAkGhB;AAeD,2BAA2B;AAC3B,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,CAKjE;AAiBD,2BAA2B;AAC3B,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAavE;AAoHD,MAAM,MAAM,mBAAmB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;AAuC1E;;;;;;;;;;GAUG;AACH,qBAAa,cAAc;IAC1B,OAAO,CAAC,SAAS,CAAc;IAC/B,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,WAAW,CAAmB;IACtC,OAAO,CAAC,IAAI,CAAwC;IACpD,OAAO,CAAC,UAAU,CAAkC;IACpD,OAAO,CAAC,MAAM,CAAuB;IAErC,OAAO;IAeP,yEAAyE;IACzE,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IA8BzC,UAAU,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,MAAM,GAAG,SAAS;IAwB3D,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,YAAY;IAMpB,WAAW,IAAI,OAAO;IAItB,MAAM,IAAI,MAAM;IAIhB,aAAa,IAAI,MAAM;IAIvB,YAAY,IAAI,MAAM;IAItB,cAAc,IAAI,MAAM,GAAG,SAAS;IAIpC,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IAgBnC,OAAO,CAAC,YAAY;IAOpB;;;;;OAKG;IACH,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa,GAAG,oBAAoB,GAAG,MAAM;IAY9E,oGAAoG;IACpG,yBAAyB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM;IAYxD,2FAA2F;IAC3F,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;IAa5D,iGAAiG;IACjG,gBAAgB,CAAC,CAAC,GAAG,OAAO,EAC3B,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,MAAM,EACxB,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,CAAC,EACX,QAAQ,CAAC,EAAE,OAAO,GAChB,MAAM;IAgBT,4GAA4G;IAC5G,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM;IAa7D,0EAA0E;IAC1E,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAYvC,+EAA+E;IAC/E,cAAc,IAAI,MAAM,GAAG,SAAS;IAYpC;;;;;;;OAOG;IACH,wBAAwB,CAAC,CAAC,GAAG,OAAO,EACnC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GAAG,CAAC,WAAW,GAAG,YAAY,CAAC,EAAE,EAChD,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,CAAC,GACT,MAAM;IAmBT,SAAS,IAAI,MAAM,GAAG,IAAI;IAI1B,YAAY,IAAI,YAAY,GAAG,SAAS;IAIxC,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAI9C;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,EAAE;IAU7C;;OAEG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIxC;;;;OAIG;IACH,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM;IAqBtE;;;;OAIG;IACH,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,YAAY,EAAE;IAI1C;;;OAGG;IACH,mBAAmB,IAAI,cAAc;IAIrC;;OAEG;IACH,SAAS,IAAI,aAAa,GAAG,IAAI;IAKjC;;;;OAIG;IACH,UAAU,IAAI,YAAY,EAAE;IAI5B;;;;OAIG;IACH,OAAO,IAAI,eAAe,EAAE;IAQ5B;;;;;OAKG;IACH,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAOlC;;;;OAIG;IACH,SAAS,IAAI,IAAI;IAIjB;;;;OAIG;IACH,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM;IAmB9G;;;;OAIG;IACH,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAkFzD;;;;OAIG;IACH,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,cAAc;IAK/D;;;;OAIG;IACH,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,cAAc;IAU9D;;;;OAIG;IACH,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,cAAc;IASvE,wDAAwD;IACxD,MAAM,CAAC,QAAQ,CAAC,GAAG,GAAE,MAAsB,GAAG,cAAc;IAI5D;;;;;;OAMG;IACH,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,cAAc;IA2C3F;;;;;OAKG;WACU,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAO7G;;;OAGG;WACU,OAAO,CAAC,UAAU,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;CAiD9E"}
|