indusagi-coding-agent 0.1.37 → 0.1.39
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 +23 -7
- 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 +23 -0
- 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 +36 -217
- 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 +7 -1
- 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/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 +60 -88
- package/LICENSE.md +0 -22
- 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
package/dist/core/event-bus.js
CHANGED
|
@@ -1,116 +1,27 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Event Bus - Core publish/subscribe system for agent events
|
|
3
|
-
*
|
|
4
|
-
* Purpose:
|
|
5
|
-
* Provides a decoupled event system for agent lifecycle events, tool execution,
|
|
6
|
-
* and state changes. Enables loose coupling between agent components.
|
|
7
|
-
*
|
|
8
|
-
* Architecture:
|
|
9
|
-
* - Wraps Node.js EventEmitter with type-safe interfaces
|
|
10
|
-
* - Automatic error handling and async support
|
|
11
|
-
* - Channel-based event routing (string identifiers)
|
|
12
|
-
* - Handler cleanup with unsubscribe functions
|
|
13
|
-
*
|
|
14
|
-
* Event Channels (as used throughout agent):
|
|
15
|
-
* - "agent:initialized" - Agent session created and ready
|
|
16
|
-
* - "agent:message" - New message added to session
|
|
17
|
-
* - "agent:tool:execute" - Tool execution started
|
|
18
|
-
* - "agent:tool:complete" - Tool execution finished
|
|
19
|
-
* - "agent:error" - Error occurred during execution
|
|
20
|
-
* - "agent:state" - Agent state changed
|
|
21
|
-
* - "session:persisted" - Session saved to disk
|
|
22
|
-
* - "session:compacted" - Session compressed
|
|
23
|
-
*
|
|
24
|
-
* Safety Features:
|
|
25
|
-
* - Async handler wrapping with error catching
|
|
26
|
-
* - Automatic error logging for handler failures
|
|
27
|
-
* - Handler isolation (errors don't propagate to other handlers)
|
|
28
|
-
* - Clean unsubscribe functions prevent memory leaks
|
|
29
|
-
*
|
|
30
|
-
* Example Usage:
|
|
31
|
-
* ```typescript
|
|
32
|
-
* const eventBus = createEventBus();
|
|
33
|
-
*
|
|
34
|
-
* // Subscribe to events
|
|
35
|
-
* const unsubscribe = eventBus.on("agent:message", async (data) => {
|
|
36
|
-
* console.log("New message:", data);
|
|
37
|
-
* });
|
|
38
|
-
*
|
|
39
|
-
* // Emit events
|
|
40
|
-
* eventBus.emit("agent:message", { role: "assistant", content: "Hello" });
|
|
41
|
-
*
|
|
42
|
-
* // Unsubscribe when done
|
|
43
|
-
* unsubscribe();
|
|
44
|
-
*
|
|
45
|
-
* // Clear all listeners
|
|
46
|
-
* eventBus.clear();
|
|
47
|
-
* ```
|
|
48
|
-
*
|
|
49
|
-
* Based on event bus pattern from indusagi-agent
|
|
50
|
-
* Original: https://github.com/varunisrani/indusagi-ts/vendor/indusagi-agent/src/event-bus.ts
|
|
51
|
-
*/
|
|
52
1
|
import { EventEmitter } from "node:events";
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
* - Unsubscribe functions use closure to cleanup listeners
|
|
66
|
-
*
|
|
67
|
-
* Example:
|
|
68
|
-
* ```
|
|
69
|
-
* const eventBus = createEventBus();
|
|
70
|
-
*
|
|
71
|
-
* // Set up listeners early
|
|
72
|
-
* eventBus.on("agent:error", handleError);
|
|
73
|
-
* eventBus.on("agent:message", updateUI);
|
|
74
|
-
*
|
|
75
|
-
* // Use throughout agent lifecycle
|
|
76
|
-
* // ...
|
|
77
|
-
*
|
|
78
|
-
* // Clean up on shutdown
|
|
79
|
-
* eventBus.clear();
|
|
80
|
-
* ```
|
|
81
|
-
*/
|
|
2
|
+
function runGuardedHandler(channel, handler, data) {
|
|
3
|
+
Promise.resolve(handler(data)).catch((error) => {
|
|
4
|
+
console.error(`Event handler error (${channel}):`, error);
|
|
5
|
+
});
|
|
6
|
+
}
|
|
7
|
+
function createSubscriber(emitter) {
|
|
8
|
+
return (channel, handler) => {
|
|
9
|
+
const wrappedHandler = (data) => runGuardedHandler(channel, handler, data);
|
|
10
|
+
emitter.on(channel, wrappedHandler);
|
|
11
|
+
return () => emitter.off(channel, wrappedHandler);
|
|
12
|
+
};
|
|
13
|
+
}
|
|
82
14
|
export function createEventBus() {
|
|
83
15
|
const emitter = new EventEmitter();
|
|
16
|
+
const subscribe = createSubscriber(emitter);
|
|
84
17
|
return {
|
|
85
|
-
|
|
86
|
-
// EMIT: Publish events to all subscribers
|
|
87
|
-
// ============================================================================
|
|
88
|
-
emit: (channel, data) => {
|
|
18
|
+
emit(channel, data) {
|
|
89
19
|
emitter.emit(channel, data);
|
|
90
20
|
},
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
// ============================================================================
|
|
94
|
-
on: (channel, handler) => {
|
|
95
|
-
// Wrap handler to catch errors and support async operations
|
|
96
|
-
const safeHandler = async (data) => {
|
|
97
|
-
try {
|
|
98
|
-
await handler(data);
|
|
99
|
-
}
|
|
100
|
-
catch (err) {
|
|
101
|
-
// Log error without propagating to other handlers
|
|
102
|
-
console.error(`Event handler error (${channel}):`, err);
|
|
103
|
-
}
|
|
104
|
-
};
|
|
105
|
-
// Register wrapped handler
|
|
106
|
-
emitter.on(channel, safeHandler);
|
|
107
|
-
// Return cleanup function
|
|
108
|
-
return () => emitter.off(channel, safeHandler);
|
|
21
|
+
on(channel, handler) {
|
|
22
|
+
return subscribe(channel, handler);
|
|
109
23
|
},
|
|
110
|
-
|
|
111
|
-
// CLEAR: Remove all listeners for reset/cleanup
|
|
112
|
-
// ============================================================================
|
|
113
|
-
clear: () => {
|
|
24
|
+
clear() {
|
|
114
25
|
emitter.removeAllListeners();
|
|
115
26
|
},
|
|
116
27
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-bus.js","sourceRoot":"","sources":["../../src/core/event-bus.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"event-bus.js","sourceRoot":"","sources":["../../src/core/event-bus.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAa3C,SAAS,iBAAiB,CAAC,OAAe,EAAE,OAAqB,EAAE,IAAa;IAC/E,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QAC9C,OAAO,CAAC,KAAK,CAAC,wBAAwB,OAAO,IAAI,EAAE,KAAK,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAqB;IAC9C,OAAO,CAAC,OAAe,EAAE,OAAqB,EAAgB,EAAE;QAC/D,MAAM,cAAc,GAAG,CAAC,IAAa,EAAE,EAAE,CAAC,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QACpF,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QACpC,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IACnD,CAAC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc;IAC7B,MAAM,OAAO,GAAG,IAAI,YAAY,EAAE,CAAC;IACnC,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAE5C,OAAO;QACN,IAAI,CAAC,OAAO,EAAE,IAAI;YACjB,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC7B,CAAC;QACD,EAAE,CAAC,OAAO,EAAE,OAAO;YAClB,OAAO,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACpC,CAAC;QACD,KAAK;YACJ,OAAO,CAAC,kBAAkB,EAAE,CAAC;QAC9B,CAAC;KACD,CAAC;AACH,CAAC"}
|
package/dist/core/exec.d.ts
CHANGED
|
@@ -1,29 +1,13 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared command execution utilities for extensions and custom tools.
|
|
3
|
-
*/
|
|
4
|
-
/**
|
|
5
|
-
* Options for executing shell commands.
|
|
6
|
-
*/
|
|
7
1
|
export interface ExecOptions {
|
|
8
|
-
/** AbortSignal to cancel the command */
|
|
9
2
|
signal?: AbortSignal;
|
|
10
|
-
/** Timeout in milliseconds */
|
|
11
3
|
timeout?: number;
|
|
12
|
-
/** Working directory */
|
|
13
4
|
cwd?: string;
|
|
14
5
|
}
|
|
15
|
-
/**
|
|
16
|
-
* Result of executing a shell command.
|
|
17
|
-
*/
|
|
18
6
|
export interface ExecResult {
|
|
19
7
|
stdout: string;
|
|
20
8
|
stderr: string;
|
|
21
9
|
code: number;
|
|
22
10
|
killed: boolean;
|
|
23
11
|
}
|
|
24
|
-
/**
|
|
25
|
-
* Execute a shell command and return stdout/stderr/code.
|
|
26
|
-
* Supports timeout and abort signal.
|
|
27
|
-
*/
|
|
28
12
|
export declare function execCommand(command: string, args: string[], cwd: string, options?: ExecOptions): Promise<ExecResult>;
|
|
29
13
|
//# sourceMappingURL=exec.d.ts.map
|
package/dist/core/exec.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exec.d.ts","sourceRoot":"","sources":["../../src/core/exec.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"exec.d.ts","sourceRoot":"","sources":["../../src/core/exec.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,WAAW,CAC/B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,UAAU,CAAC,CAmErB"}
|
package/dist/core/exec.js
CHANGED
|
@@ -1,15 +1,8 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared command execution utilities for extensions and custom tools.
|
|
3
|
-
*/
|
|
4
1
|
import { spawn } from "node:child_process";
|
|
5
|
-
/**
|
|
6
|
-
* Execute a shell command and return stdout/stderr/code.
|
|
7
|
-
* Supports timeout and abort signal.
|
|
8
|
-
*/
|
|
9
2
|
export async function execCommand(command, args, cwd, options) {
|
|
10
3
|
return new Promise((resolve) => {
|
|
11
4
|
const proc = spawn(command, args, {
|
|
12
|
-
cwd,
|
|
5
|
+
cwd: options?.cwd ?? cwd,
|
|
13
6
|
shell: false,
|
|
14
7
|
stdio: ["ignore", "pipe", "pipe"],
|
|
15
8
|
});
|
|
@@ -18,18 +11,17 @@ export async function execCommand(command, args, cwd, options) {
|
|
|
18
11
|
let killed = false;
|
|
19
12
|
let timeoutId;
|
|
20
13
|
const killProcess = () => {
|
|
21
|
-
if (
|
|
22
|
-
|
|
23
|
-
proc.kill("SIGTERM");
|
|
24
|
-
// Force kill after 5 seconds if SIGTERM doesn't work
|
|
25
|
-
setTimeout(() => {
|
|
26
|
-
if (!proc.killed) {
|
|
27
|
-
proc.kill("SIGKILL");
|
|
28
|
-
}
|
|
29
|
-
}, 5000);
|
|
14
|
+
if (killed) {
|
|
15
|
+
return;
|
|
30
16
|
}
|
|
17
|
+
killed = true;
|
|
18
|
+
proc.kill("SIGTERM");
|
|
19
|
+
setTimeout(() => {
|
|
20
|
+
if (!proc.killed) {
|
|
21
|
+
proc.kill("SIGKILL");
|
|
22
|
+
}
|
|
23
|
+
}, 5000);
|
|
31
24
|
};
|
|
32
|
-
// Handle abort signal
|
|
33
25
|
if (options?.signal) {
|
|
34
26
|
if (options.signal.aborted) {
|
|
35
27
|
killProcess();
|
|
@@ -38,7 +30,6 @@ export async function execCommand(command, args, cwd, options) {
|
|
|
38
30
|
options.signal.addEventListener("abort", killProcess, { once: true });
|
|
39
31
|
}
|
|
40
32
|
}
|
|
41
|
-
// Handle timeout
|
|
42
33
|
if (options?.timeout && options.timeout > 0) {
|
|
43
34
|
timeoutId = setTimeout(() => {
|
|
44
35
|
killProcess();
|
|
@@ -50,20 +41,20 @@ export async function execCommand(command, args, cwd, options) {
|
|
|
50
41
|
proc.stderr?.on("data", (data) => {
|
|
51
42
|
stderr += data.toString();
|
|
52
43
|
});
|
|
53
|
-
|
|
54
|
-
if (timeoutId)
|
|
44
|
+
const cleanup = () => {
|
|
45
|
+
if (timeoutId) {
|
|
55
46
|
clearTimeout(timeoutId);
|
|
47
|
+
}
|
|
56
48
|
if (options?.signal) {
|
|
57
49
|
options.signal.removeEventListener("abort", killProcess);
|
|
58
50
|
}
|
|
51
|
+
};
|
|
52
|
+
proc.on("close", (code) => {
|
|
53
|
+
cleanup();
|
|
59
54
|
resolve({ stdout, stderr, code: code ?? 0, killed });
|
|
60
55
|
});
|
|
61
|
-
proc.on("error", (
|
|
62
|
-
|
|
63
|
-
clearTimeout(timeoutId);
|
|
64
|
-
if (options?.signal) {
|
|
65
|
-
options.signal.removeEventListener("abort", killProcess);
|
|
66
|
-
}
|
|
56
|
+
proc.on("error", () => {
|
|
57
|
+
cleanup();
|
|
67
58
|
resolve({ stdout, stderr, code: 1, killed });
|
|
68
59
|
});
|
|
69
60
|
});
|
package/dist/core/exec.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exec.js","sourceRoot":"","sources":["../../src/core/exec.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"exec.js","sourceRoot":"","sources":["../../src/core/exec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ANSI escape code to HTML converter.
|
|
3
|
+
*
|
|
4
|
+
* Based on ANSI parsing logic from:
|
|
5
|
+
* - xterm.js (https://github.com/xtermjs/xterm.js) for ANSI SGR code handling
|
|
6
|
+
* - ansi-html (https://github.com/Tjatse/ansi-html) for color conversion
|
|
7
|
+
*
|
|
8
|
+
* Converts terminal ANSI color/style codes to HTML with inline styles.
|
|
9
|
+
* Supports:
|
|
10
|
+
* - Standard foreground colors (30-37) and bright variants (90-97)
|
|
11
|
+
* - Standard background colors (40-47) and bright variants (100-107)
|
|
12
|
+
* - 256-color palette (38;5;N and 48;5;N)
|
|
13
|
+
* - RGB true color (38;2;R;G;B and 48;2;R;G;B)
|
|
14
|
+
* - Text styles: bold (1), dim (2), italic (3), underline (4)
|
|
15
|
+
* - Reset (0)
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
// Standard ANSI color palette (0-15)
|
|
19
|
+
const ANSI_COLORS = [
|
|
20
|
+
"#000000", // 0: black
|
|
21
|
+
"#800000", // 1: red
|
|
22
|
+
"#008000", // 2: green
|
|
23
|
+
"#808000", // 3: yellow
|
|
24
|
+
"#000080", // 4: blue
|
|
25
|
+
"#800080", // 5: magenta
|
|
26
|
+
"#008080", // 6: cyan
|
|
27
|
+
"#c0c0c0", // 7: white
|
|
28
|
+
"#808080", // 8: bright black
|
|
29
|
+
"#ff0000", // 9: bright red
|
|
30
|
+
"#00ff00", // 10: bright green
|
|
31
|
+
"#ffff00", // 11: bright yellow
|
|
32
|
+
"#0000ff", // 12: bright blue
|
|
33
|
+
"#ff00ff", // 13: bright magenta
|
|
34
|
+
"#00ffff", // 14: bright cyan
|
|
35
|
+
"#ffffff", // 15: bright white
|
|
36
|
+
];
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Convert 256-color index to hex.
|
|
40
|
+
*/
|
|
41
|
+
function color256ToHex(index: number): string {
|
|
42
|
+
// Standard colors (0-15)
|
|
43
|
+
if (index < 16) {
|
|
44
|
+
return ANSI_COLORS[index];
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// Color cube (16-231): 6x6x6 = 216 colors
|
|
48
|
+
if (index < 232) {
|
|
49
|
+
const cubeIndex = index - 16;
|
|
50
|
+
const r = Math.floor(cubeIndex / 36);
|
|
51
|
+
const g = Math.floor((cubeIndex % 36) / 6);
|
|
52
|
+
const b = cubeIndex % 6;
|
|
53
|
+
const toComponent = (n: number) => (n === 0 ? 0 : 55 + n * 40);
|
|
54
|
+
const toHex = (n: number) => toComponent(n).toString(16).padStart(2, "0");
|
|
55
|
+
return `#${toHex(r)}${toHex(g)}${toHex(b)}`;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// Grayscale (232-255): 24 shades
|
|
59
|
+
const gray = 8 + (index - 232) * 10;
|
|
60
|
+
const grayHex = gray.toString(16).padStart(2, "0");
|
|
61
|
+
return `#${grayHex}${grayHex}${grayHex}`;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Escape HTML special characters.
|
|
66
|
+
*/
|
|
67
|
+
function escapeHtml(text: string): string {
|
|
68
|
+
return text
|
|
69
|
+
.replace(/&/g, "&")
|
|
70
|
+
.replace(/</g, "<")
|
|
71
|
+
.replace(/>/g, ">")
|
|
72
|
+
.replace(/"/g, """)
|
|
73
|
+
.replace(/'/g, "'");
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
interface TextStyle {
|
|
77
|
+
fg: string | null;
|
|
78
|
+
bg: string | null;
|
|
79
|
+
bold: boolean;
|
|
80
|
+
dim: boolean;
|
|
81
|
+
italic: boolean;
|
|
82
|
+
underline: boolean;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
function createEmptyStyle(): TextStyle {
|
|
86
|
+
return {
|
|
87
|
+
fg: null,
|
|
88
|
+
bg: null,
|
|
89
|
+
bold: false,
|
|
90
|
+
dim: false,
|
|
91
|
+
italic: false,
|
|
92
|
+
underline: false,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
function styleToInlineCSS(style: TextStyle): string {
|
|
97
|
+
const parts: string[] = [];
|
|
98
|
+
if (style.fg) parts.push(`color:${style.fg}`);
|
|
99
|
+
if (style.bg) parts.push(`background-color:${style.bg}`);
|
|
100
|
+
if (style.bold) parts.push("font-weight:bold");
|
|
101
|
+
if (style.dim) parts.push("opacity:0.6");
|
|
102
|
+
if (style.italic) parts.push("font-style:italic");
|
|
103
|
+
if (style.underline) parts.push("text-decoration:underline");
|
|
104
|
+
return parts.join(";");
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
function hasStyle(style: TextStyle): boolean {
|
|
108
|
+
return style.fg !== null || style.bg !== null || style.bold || style.dim || style.italic || style.underline;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Parse ANSI SGR (Select Graphic Rendition) codes and update style.
|
|
113
|
+
*/
|
|
114
|
+
function applySgrCode(params: number[], style: TextStyle): void {
|
|
115
|
+
let i = 0;
|
|
116
|
+
while (i < params.length) {
|
|
117
|
+
const code = params[i];
|
|
118
|
+
|
|
119
|
+
if (code === 0) {
|
|
120
|
+
// Reset all
|
|
121
|
+
style.fg = null;
|
|
122
|
+
style.bg = null;
|
|
123
|
+
style.bold = false;
|
|
124
|
+
style.dim = false;
|
|
125
|
+
style.italic = false;
|
|
126
|
+
style.underline = false;
|
|
127
|
+
} else if (code === 1) {
|
|
128
|
+
style.bold = true;
|
|
129
|
+
} else if (code === 2) {
|
|
130
|
+
style.dim = true;
|
|
131
|
+
} else if (code === 3) {
|
|
132
|
+
style.italic = true;
|
|
133
|
+
} else if (code === 4) {
|
|
134
|
+
style.underline = true;
|
|
135
|
+
} else if (code === 22) {
|
|
136
|
+
// Reset bold/dim
|
|
137
|
+
style.bold = false;
|
|
138
|
+
style.dim = false;
|
|
139
|
+
} else if (code === 23) {
|
|
140
|
+
style.italic = false;
|
|
141
|
+
} else if (code === 24) {
|
|
142
|
+
style.underline = false;
|
|
143
|
+
} else if (code >= 30 && code <= 37) {
|
|
144
|
+
// Standard foreground colors
|
|
145
|
+
style.fg = ANSI_COLORS[code - 30];
|
|
146
|
+
} else if (code === 38) {
|
|
147
|
+
// Extended foreground color
|
|
148
|
+
if (params[i + 1] === 5 && params.length > i + 2) {
|
|
149
|
+
// 256-color: 38;5;N
|
|
150
|
+
style.fg = color256ToHex(params[i + 2]);
|
|
151
|
+
i += 2;
|
|
152
|
+
} else if (params[i + 1] === 2 && params.length > i + 4) {
|
|
153
|
+
// RGB: 38;2;R;G;B
|
|
154
|
+
const r = params[i + 2];
|
|
155
|
+
const g = params[i + 3];
|
|
156
|
+
const b = params[i + 4];
|
|
157
|
+
style.fg = `rgb(${r},${g},${b})`;
|
|
158
|
+
i += 4;
|
|
159
|
+
}
|
|
160
|
+
} else if (code === 39) {
|
|
161
|
+
// Default foreground
|
|
162
|
+
style.fg = null;
|
|
163
|
+
} else if (code >= 40 && code <= 47) {
|
|
164
|
+
// Standard background colors
|
|
165
|
+
style.bg = ANSI_COLORS[code - 40];
|
|
166
|
+
} else if (code === 48) {
|
|
167
|
+
// Extended background color
|
|
168
|
+
if (params[i + 1] === 5 && params.length > i + 2) {
|
|
169
|
+
// 256-color: 48;5;N
|
|
170
|
+
style.bg = color256ToHex(params[i + 2]);
|
|
171
|
+
i += 2;
|
|
172
|
+
} else if (params[i + 1] === 2 && params.length > i + 4) {
|
|
173
|
+
// RGB: 48;2;R;G;B
|
|
174
|
+
const r = params[i + 2];
|
|
175
|
+
const g = params[i + 3];
|
|
176
|
+
const b = params[i + 4];
|
|
177
|
+
style.bg = `rgb(${r},${g},${b})`;
|
|
178
|
+
i += 4;
|
|
179
|
+
}
|
|
180
|
+
} else if (code === 49) {
|
|
181
|
+
// Default background
|
|
182
|
+
style.bg = null;
|
|
183
|
+
} else if (code >= 90 && code <= 97) {
|
|
184
|
+
// Bright foreground colors
|
|
185
|
+
style.fg = ANSI_COLORS[code - 90 + 8];
|
|
186
|
+
} else if (code >= 100 && code <= 107) {
|
|
187
|
+
// Bright background colors
|
|
188
|
+
style.bg = ANSI_COLORS[code - 100 + 8];
|
|
189
|
+
}
|
|
190
|
+
// Ignore unrecognized codes
|
|
191
|
+
|
|
192
|
+
i++;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
// Match ANSI escape sequences: ESC[ followed by params and ending with 'm'
|
|
197
|
+
const ANSI_REGEX = /\x1b\[([\d;]*)m/g;
|
|
198
|
+
|
|
199
|
+
/**
|
|
200
|
+
* Convert ANSI-escaped text to HTML with inline styles.
|
|
201
|
+
*/
|
|
202
|
+
export function ansiToHtml(text: string): string {
|
|
203
|
+
const style = createEmptyStyle();
|
|
204
|
+
let result = "";
|
|
205
|
+
let lastIndex = 0;
|
|
206
|
+
let inSpan = false;
|
|
207
|
+
|
|
208
|
+
// Reset regex state
|
|
209
|
+
ANSI_REGEX.lastIndex = 0;
|
|
210
|
+
|
|
211
|
+
let match = ANSI_REGEX.exec(text);
|
|
212
|
+
while (match !== null) {
|
|
213
|
+
// Add text before this escape sequence
|
|
214
|
+
const beforeText = text.slice(lastIndex, match.index);
|
|
215
|
+
if (beforeText) {
|
|
216
|
+
result += escapeHtml(beforeText);
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
// Parse SGR parameters
|
|
220
|
+
const paramStr = match[1];
|
|
221
|
+
const params = paramStr ? paramStr.split(";").map((p) => parseInt(p, 10) || 0) : [0];
|
|
222
|
+
|
|
223
|
+
// Close existing span if we have one
|
|
224
|
+
if (inSpan) {
|
|
225
|
+
result += "</span>";
|
|
226
|
+
inSpan = false;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
// Apply the codes
|
|
230
|
+
applySgrCode(params, style);
|
|
231
|
+
|
|
232
|
+
// Open new span if we have any styling
|
|
233
|
+
if (hasStyle(style)) {
|
|
234
|
+
result += `<span style="${styleToInlineCSS(style)}">`;
|
|
235
|
+
inSpan = true;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
lastIndex = match.index + match[0].length;
|
|
239
|
+
match = ANSI_REGEX.exec(text);
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
// Add remaining text
|
|
243
|
+
const remainingText = text.slice(lastIndex);
|
|
244
|
+
if (remainingText) {
|
|
245
|
+
result += escapeHtml(remainingText);
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
// Close any open span
|
|
249
|
+
if (inSpan) {
|
|
250
|
+
result += "</span>";
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
return result;
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
/**
|
|
257
|
+
* Convert array of ANSI-escaped lines to HTML.
|
|
258
|
+
* Each line is wrapped in a div element.
|
|
259
|
+
*/
|
|
260
|
+
export function ansiLinesToHtml(lines: string[]): string {
|
|
261
|
+
return lines.map((line) => `<div class="ansi-line">${ansiToHtml(line) || " "}</div>`).join("\n");
|
|
262
|
+
}
|