@subimpact/e 0.100.0 → 0.100.1
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 +20 -0
- package/README.md +7 -1
- package/dist/bundle/chunks/{chunk-KAXC2ESR.js → chunk-GICF34HK.js} +8 -8
- package/dist/bundle/chunks/{chunk-FBZU53S6.js → chunk-NBSSK56J.js} +1 -1
- package/dist/bundle/chunks/{chunk-QSDAQKAU.js → chunk-RAB4RJZ2.js} +11 -12
- package/dist/bundle/chunks/{easter-egg-3d-DD22MRM3.js → easter-egg-3d-JQPBRQEU.js} +1 -1
- package/dist/bundle/chunks/{openai-codex-responses-YOLBMQOC.js → openai-codex-responses-WGH4GHLE.js} +1 -1
- package/dist/bundle/chunks/{virtual-modules-YQUQNKDN.js → virtual-modules-L22CHFWU.js} +1 -1
- package/dist/bundle/cli-runtime.js +1 -1
- package/dist/bundle/index.js +1 -1
- package/dist/bundle/rpc-entry.js +1 -1
- package/docs/compaction.md +2 -2
- package/docs/extensions.md +4 -10
- package/docs/message-types.md +2 -4
- package/docs/session-format.md +4 -4
- package/docs/settings.md +1 -1
- package/docs/tui.md +1 -1
- package/examples/extensions/overlay-test.ts +2 -2
- package/package.json +31 -31
- package/dist/bun/cli.d.ts +0 -5
- package/dist/bun/cli.d.ts.map +0 -1
- package/dist/bun/cli.js +0 -5
- package/dist/bun/cli.js.map +0 -1
- package/dist/bun/restore-sandbox-env.d.ts +0 -17
- package/dist/bun/restore-sandbox-env.d.ts.map +0 -1
- package/dist/bun/restore-sandbox-env.js +0 -36
- package/dist/bun/restore-sandbox-env.js.map +0 -1
- package/dist/bun/runtime-setup.d.ts +0 -2
- package/dist/bun/runtime-setup.d.ts.map +0 -1
- package/dist/bun/runtime-setup.js +0 -9
- package/dist/bun/runtime-setup.js.map +0 -1
- package/dist/bun/sandbox-env-setup.d.ts +0 -2
- package/dist/bun/sandbox-env-setup.d.ts.map +0 -1
- package/dist/bun/sandbox-env-setup.js +0 -4
- package/dist/bun/sandbox-env-setup.js.map +0 -1
- package/dist/cli/args.d.ts +0 -61
- package/dist/cli/args.d.ts.map +0 -1
- package/dist/cli/args.js +0 -453
- package/dist/cli/args.js.map +0 -1
- package/dist/cli/auth-check.d.ts +0 -19
- package/dist/cli/auth-check.d.ts.map +0 -1
- package/dist/cli/auth-check.js +0 -50
- package/dist/cli/auth-check.js.map +0 -1
- package/dist/cli/auth-command.d.ts +0 -24
- package/dist/cli/auth-command.d.ts.map +0 -1
- package/dist/cli/auth-command.js +0 -103
- package/dist/cli/auth-command.js.map +0 -1
- package/dist/cli/config-selector.d.ts +0 -16
- package/dist/cli/config-selector.d.ts.map +0 -1
- package/dist/cli/config-selector.js +0 -32
- package/dist/cli/config-selector.js.map +0 -1
- package/dist/cli/credential-print.d.ts +0 -13
- package/dist/cli/credential-print.d.ts.map +0 -1
- package/dist/cli/credential-print.js +0 -76
- package/dist/cli/credential-print.js.map +0 -1
- package/dist/cli/file-processor.d.ts +0 -15
- package/dist/cli/file-processor.d.ts.map +0 -1
- package/dist/cli/file-processor.js +0 -71
- package/dist/cli/file-processor.js.map +0 -1
- package/dist/cli/initial-message.d.ts +0 -18
- package/dist/cli/initial-message.d.ts.map +0 -1
- package/dist/cli/initial-message.js +0 -22
- package/dist/cli/initial-message.js.map +0 -1
- package/dist/cli/list-models.d.ts +0 -9
- package/dist/cli/list-models.d.ts.map +0 -1
- package/dist/cli/list-models.js +0 -98
- package/dist/cli/list-models.js.map +0 -1
- package/dist/cli/project-trust.d.ts +0 -10
- package/dist/cli/project-trust.d.ts.map +0 -1
- package/dist/cli/project-trust.js +0 -48
- package/dist/cli/project-trust.js.map +0 -1
- package/dist/cli/session-picker.d.ts +0 -10
- package/dist/cli/session-picker.d.ts.map +0 -1
- package/dist/cli/session-picker.js +0 -36
- package/dist/cli/session-picker.js.map +0 -1
- package/dist/cli/setup.d.ts +0 -2
- package/dist/cli/setup.d.ts.map +0 -1
- package/dist/cli/setup.js +0 -12
- package/dist/cli/setup.js.map +0 -1
- package/dist/cli/startup-ui.d.ts +0 -20
- package/dist/cli/startup-ui.d.ts.map +0 -1
- package/dist/cli/startup-ui.js +0 -193
- package/dist/cli/startup-ui.js.map +0 -1
- package/dist/cli.d.ts +0 -3
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js +0 -6
- package/dist/cli.js.map +0 -1
- package/dist/config.d.ts +0 -107
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js +0 -486
- package/dist/config.js.map +0 -1
- package/dist/core/agent-session-runtime.d.ts +0 -119
- package/dist/core/agent-session-runtime.d.ts.map +0 -1
- package/dist/core/agent-session-runtime.js +0 -317
- package/dist/core/agent-session-runtime.js.map +0 -1
- package/dist/core/agent-session-services.d.ts +0 -86
- package/dist/core/agent-session-services.d.ts.map +0 -1
- package/dist/core/agent-session-services.js +0 -147
- package/dist/core/agent-session-services.js.map +0 -1
- package/dist/core/agent-session.d.ts +0 -859
- package/dist/core/agent-session.d.ts.map +0 -1
- package/dist/core/agent-session.js +0 -3416
- package/dist/core/agent-session.js.map +0 -1
- package/dist/core/auth-guidance.d.ts +0 -5
- package/dist/core/auth-guidance.d.ts.map +0 -1
- package/dist/core/auth-guidance.js +0 -21
- package/dist/core/auth-guidance.js.map +0 -1
- package/dist/core/auth-storage.d.ts +0 -72
- package/dist/core/auth-storage.d.ts.map +0 -1
- package/dist/core/auth-storage.js +0 -426
- package/dist/core/auth-storage.js.map +0 -1
- package/dist/core/bash-executor.d.ts +0 -32
- package/dist/core/bash-executor.d.ts.map +0 -1
- package/dist/core/bash-executor.js +0 -106
- package/dist/core/bash-executor.js.map +0 -1
- package/dist/core/bug-report-upload.d.ts +0 -12
- package/dist/core/bug-report-upload.d.ts.map +0 -1
- package/dist/core/bug-report-upload.js +0 -22
- package/dist/core/bug-report-upload.js.map +0 -1
- package/dist/core/bug-report.d.ts +0 -176
- package/dist/core/bug-report.d.ts.map +0 -1
- package/dist/core/bug-report.js +0 -292
- package/dist/core/bug-report.js.map +0 -1
- package/dist/core/cache-stats.d.ts +0 -49
- package/dist/core/cache-stats.d.ts.map +0 -1
- package/dist/core/cache-stats.js +0 -112
- package/dist/core/cache-stats.js.map +0 -1
- package/dist/core/cache-warmer.d.ts +0 -103
- package/dist/core/cache-warmer.d.ts.map +0 -1
- package/dist/core/cache-warmer.js +0 -359
- package/dist/core/cache-warmer.js.map +0 -1
- package/dist/core/compaction/branch-summarization.d.ts +0 -98
- package/dist/core/compaction/branch-summarization.d.ts.map +0 -1
- package/dist/core/compaction/branch-summarization.js +0 -251
- package/dist/core/compaction/branch-summarization.js.map +0 -1
- package/dist/core/compaction/compaction.d.ts +0 -145
- package/dist/core/compaction/compaction.d.ts.map +0 -1
- package/dist/core/compaction/compaction.js +0 -744
- package/dist/core/compaction/compaction.js.map +0 -1
- package/dist/core/compaction/index.d.ts +0 -7
- package/dist/core/compaction/index.d.ts.map +0 -1
- package/dist/core/compaction/index.js +0 -7
- package/dist/core/compaction/index.js.map +0 -1
- package/dist/core/compaction/utils.d.ts +0 -39
- package/dist/core/compaction/utils.d.ts.map +0 -1
- package/dist/core/compaction/utils.js +0 -149
- package/dist/core/compaction/utils.js.map +0 -1
- package/dist/core/crash-log.d.ts +0 -27
- package/dist/core/crash-log.d.ts.map +0 -1
- package/dist/core/crash-log.js +0 -140
- package/dist/core/crash-log.js.map +0 -1
- package/dist/core/defaults.d.ts +0 -4
- package/dist/core/defaults.d.ts.map +0 -1
- package/dist/core/defaults.js +0 -11
- package/dist/core/defaults.js.map +0 -1
- package/dist/core/diagnostics.d.ts +0 -15
- package/dist/core/diagnostics.d.ts.map +0 -1
- package/dist/core/diagnostics.js +0 -2
- package/dist/core/diagnostics.js.map +0 -1
- package/dist/core/event-bus.d.ts +0 -9
- package/dist/core/event-bus.d.ts.map +0 -1
- package/dist/core/event-bus.js +0 -25
- package/dist/core/event-bus.js.map +0 -1
- package/dist/core/exec.d.ts +0 -29
- package/dist/core/exec.d.ts.map +0 -1
- package/dist/core/exec.js +0 -75
- package/dist/core/exec.js.map +0 -1
- package/dist/core/experimental.d.ts +0 -2
- package/dist/core/experimental.d.ts.map +0 -1
- package/dist/core/experimental.js +0 -6
- package/dist/core/experimental.js.map +0 -1
- package/dist/core/export-html/ansi-to-html.d.ts +0 -22
- package/dist/core/export-html/ansi-to-html.d.ts.map +0 -1
- package/dist/core/export-html/ansi-to-html.js +0 -249
- package/dist/core/export-html/ansi-to-html.js.map +0 -1
- package/dist/core/export-html/index.d.ts +0 -37
- package/dist/core/export-html/index.d.ts.map +0 -1
- package/dist/core/export-html/index.js +0 -226
- package/dist/core/export-html/index.js.map +0 -1
- package/dist/core/export-html/tool-renderer.d.ts +0 -34
- package/dist/core/export-html/tool-renderer.d.ts.map +0 -1
- package/dist/core/export-html/tool-renderer.js +0 -109
- package/dist/core/export-html/tool-renderer.js.map +0 -1
- package/dist/core/extensions/compat-check.d.ts +0 -26
- package/dist/core/extensions/compat-check.d.ts.map +0 -1
- package/dist/core/extensions/compat-check.js +0 -129
- package/dist/core/extensions/compat-check.js.map +0 -1
- package/dist/core/extensions/index.d.ts +0 -12
- package/dist/core/extensions/index.d.ts.map +0 -1
- package/dist/core/extensions/index.js +0 -9
- package/dist/core/extensions/index.js.map +0 -1
- package/dist/core/extensions/jiti-loader.d.ts +0 -2
- package/dist/core/extensions/jiti-loader.d.ts.map +0 -1
- package/dist/core/extensions/jiti-loader.js +0 -4
- package/dist/core/extensions/jiti-loader.js.map +0 -1
- package/dist/core/extensions/jiti-static-loader.d.ts +0 -2
- package/dist/core/extensions/jiti-static-loader.d.ts.map +0 -1
- package/dist/core/extensions/jiti-static-loader.js +0 -4
- package/dist/core/extensions/jiti-static-loader.js.map +0 -1
- package/dist/core/extensions/loader.d.ts +0 -23
- package/dist/core/extensions/loader.d.ts.map +0 -1
- package/dist/core/extensions/loader.js +0 -689
- package/dist/core/extensions/loader.js.map +0 -1
- package/dist/core/extensions/runner.d.ts +0 -204
- package/dist/core/extensions/runner.d.ts.map +0 -1
- package/dist/core/extensions/runner.js +0 -1207
- package/dist/core/extensions/runner.js.map +0 -1
- package/dist/core/extensions/types.d.ts +0 -1623
- package/dist/core/extensions/types.d.ts.map +0 -1
- package/dist/core/extensions/types.js +0 -48
- package/dist/core/extensions/types.js.map +0 -1
- package/dist/core/extensions/virtual-modules.d.ts +0 -3
- package/dist/core/extensions/virtual-modules.d.ts.map +0 -1
- package/dist/core/extensions/virtual-modules.js +0 -38
- package/dist/core/extensions/virtual-modules.js.map +0 -1
- package/dist/core/extensions/wrapper.d.ts +0 -20
- package/dist/core/extensions/wrapper.d.ts.map +0 -1
- package/dist/core/extensions/wrapper.js +0 -22
- package/dist/core/extensions/wrapper.js.map +0 -1
- package/dist/core/footer-data-provider.d.ts +0 -64
- package/dist/core/footer-data-provider.d.ts.map +0 -1
- package/dist/core/footer-data-provider.js +0 -338
- package/dist/core/footer-data-provider.js.map +0 -1
- package/dist/core/http-dispatcher.d.ts +0 -22
- package/dist/core/http-dispatcher.d.ts.map +0 -1
- package/dist/core/http-dispatcher.js +0 -98
- package/dist/core/http-dispatcher.js.map +0 -1
- package/dist/core/index.d.ts +0 -14
- package/dist/core/index.d.ts.map +0 -1
- package/dist/core/index.js +0 -13
- package/dist/core/index.js.map +0 -1
- package/dist/core/keybindings.d.ts +0 -428
- package/dist/core/keybindings.d.ts.map +0 -1
- package/dist/core/keybindings.js +0 -321
- package/dist/core/keybindings.js.map +0 -1
- package/dist/core/messages.d.ts +0 -77
- package/dist/core/messages.d.ts.map +0 -1
- package/dist/core/messages.js +0 -124
- package/dist/core/messages.js.map +0 -1
- package/dist/core/model-config.d.ts +0 -760
- package/dist/core/model-config.d.ts.map +0 -1
- package/dist/core/model-config.js +0 -294
- package/dist/core/model-config.js.map +0 -1
- package/dist/core/model-registry.d.ts +0 -61
- package/dist/core/model-registry.d.ts.map +0 -1
- package/dist/core/model-registry.js +0 -140
- package/dist/core/model-registry.js.map +0 -1
- package/dist/core/model-resolver.d.ts +0 -124
- package/dist/core/model-resolver.d.ts.map +0 -1
- package/dist/core/model-resolver.js +0 -590
- package/dist/core/model-resolver.js.map +0 -1
- package/dist/core/model-runtime.d.ts +0 -145
- package/dist/core/model-runtime.d.ts.map +0 -1
- package/dist/core/model-runtime.js +0 -758
- package/dist/core/model-runtime.js.map +0 -1
- package/dist/core/models-store.d.ts +0 -22
- package/dist/core/models-store.d.ts.map +0 -1
- package/dist/core/models-store.js +0 -115
- package/dist/core/models-store.js.map +0 -1
- package/dist/core/nested-tool-calls.d.ts +0 -102
- package/dist/core/nested-tool-calls.d.ts.map +0 -1
- package/dist/core/nested-tool-calls.js +0 -178
- package/dist/core/nested-tool-calls.js.map +0 -1
- package/dist/core/output-guard.d.ts +0 -7
- package/dist/core/output-guard.d.ts.map +0 -1
- package/dist/core/output-guard.js +0 -89
- package/dist/core/output-guard.js.map +0 -1
- package/dist/core/package-manager.d.ts +0 -222
- package/dist/core/package-manager.d.ts.map +0 -1
- package/dist/core/package-manager.js +0 -2258
- package/dist/core/package-manager.js.map +0 -1
- package/dist/core/pi-manifest.d.ts +0 -8
- package/dist/core/pi-manifest.d.ts.map +0 -1
- package/dist/core/pi-manifest.js +0 -26
- package/dist/core/pi-manifest.js.map +0 -1
- package/dist/core/project-trust.d.ts +0 -15
- package/dist/core/project-trust.d.ts.map +0 -1
- package/dist/core/project-trust.js +0 -59
- package/dist/core/project-trust.js.map +0 -1
- package/dist/core/prompt-templates.d.ts +0 -59
- package/dist/core/prompt-templates.d.ts.map +0 -1
- package/dist/core/prompt-templates.js +0 -262
- package/dist/core/prompt-templates.js.map +0 -1
- package/dist/core/provider-attribution.d.ts +0 -4
- package/dist/core/provider-attribution.d.ts.map +0 -1
- package/dist/core/provider-attribution.js +0 -72
- package/dist/core/provider-attribution.js.map +0 -1
- package/dist/core/provider-composer.d.ts +0 -80
- package/dist/core/provider-composer.d.ts.map +0 -1
- package/dist/core/provider-composer.js +0 -488
- package/dist/core/provider-composer.js.map +0 -1
- package/dist/core/radius.d.ts +0 -5
- package/dist/core/radius.d.ts.map +0 -1
- package/dist/core/radius.js +0 -9
- package/dist/core/radius.js.map +0 -1
- package/dist/core/remote-catalog-provider.d.ts +0 -12
- package/dist/core/remote-catalog-provider.d.ts.map +0 -1
- package/dist/core/remote-catalog-provider.js +0 -132
- package/dist/core/remote-catalog-provider.js.map +0 -1
- package/dist/core/resolve-config-value.d.ts +0 -30
- package/dist/core/resolve-config-value.d.ts.map +0 -1
- package/dist/core/resolve-config-value.js +0 -247
- package/dist/core/resolve-config-value.js.map +0 -1
- package/dist/core/resource-loader.d.ts +0 -227
- package/dist/core/resource-loader.d.ts.map +0 -1
- package/dist/core/resource-loader.js +0 -1008
- package/dist/core/resource-loader.js.map +0 -1
- package/dist/core/runtime-credentials.d.ts +0 -15
- package/dist/core/runtime-credentials.d.ts.map +0 -1
- package/dist/core/runtime-credentials.js +0 -39
- package/dist/core/runtime-credentials.js.map +0 -1
- package/dist/core/sdk.d.ts +0 -108
- package/dist/core/sdk.d.ts.map +0 -1
- package/dist/core/sdk.js +0 -315
- package/dist/core/sdk.js.map +0 -1
- package/dist/core/session-cwd.d.ts +0 -19
- package/dist/core/session-cwd.d.ts.map +0 -1
- package/dist/core/session-cwd.js +0 -38
- package/dist/core/session-cwd.js.map +0 -1
- package/dist/core/session-export.d.ts +0 -8
- package/dist/core/session-export.d.ts.map +0 -1
- package/dist/core/session-export.js +0 -33
- package/dist/core/session-export.js.map +0 -1
- package/dist/core/session-manager.d.ts +0 -416
- package/dist/core/session-manager.d.ts.map +0 -1
- package/dist/core/session-manager.js +0 -1537
- package/dist/core/session-manager.js.map +0 -1
- package/dist/core/settings-diagnostics.d.ts +0 -9
- package/dist/core/settings-diagnostics.d.ts.map +0 -1
- package/dist/core/settings-diagnostics.js +0 -21
- package/dist/core/settings-diagnostics.js.map +0 -1
- package/dist/core/settings-manager.d.ts +0 -362
- package/dist/core/settings-manager.d.ts.map +0 -1
- package/dist/core/settings-manager.js +0 -1107
- package/dist/core/settings-manager.js.map +0 -1
- package/dist/core/skills.d.ts +0 -60
- package/dist/core/skills.d.ts.map +0 -1
- package/dist/core/skills.js +0 -407
- package/dist/core/skills.js.map +0 -1
- package/dist/core/slash-commands.d.ts +0 -15
- package/dist/core/slash-commands.d.ts.map +0 -1
- package/dist/core/slash-commands.js +0 -28
- package/dist/core/slash-commands.js.map +0 -1
- package/dist/core/source-info.d.ts +0 -26
- package/dist/core/source-info.d.ts.map +0 -1
- package/dist/core/source-info.js +0 -35
- package/dist/core/source-info.js.map +0 -1
- package/dist/core/system-prompt.d.ts +0 -71
- package/dist/core/system-prompt.d.ts.map +0 -1
- package/dist/core/system-prompt.js +0 -147
- package/dist/core/system-prompt.js.map +0 -1
- package/dist/core/telemetry.d.ts +0 -3
- package/dist/core/telemetry.d.ts.map +0 -1
- package/dist/core/telemetry.js +0 -10
- package/dist/core/telemetry.js.map +0 -1
- package/dist/core/timings.d.ts +0 -6
- package/dist/core/timings.d.ts.map +0 -1
- package/dist/core/timings.js +0 -42
- package/dist/core/timings.js.map +0 -1
- package/dist/core/tools/bash.d.ts +0 -101
- package/dist/core/tools/bash.d.ts.map +0 -1
- package/dist/core/tools/bash.js +0 -348
- package/dist/core/tools/bash.js.map +0 -1
- package/dist/core/tools/edit-diff.d.ts +0 -101
- package/dist/core/tools/edit-diff.d.ts.map +0 -1
- package/dist/core/tools/edit-diff.js +0 -421
- package/dist/core/tools/edit-diff.js.map +0 -1
- package/dist/core/tools/edit.d.ts +0 -44
- package/dist/core/tools/edit.d.ts.map +0 -1
- package/dist/core/tools/edit.js +0 -147
- package/dist/core/tools/edit.js.map +0 -1
- package/dist/core/tools/file-mutation-queue.d.ts +0 -6
- package/dist/core/tools/file-mutation-queue.d.ts.map +0 -1
- package/dist/core/tools/file-mutation-queue.js +0 -52
- package/dist/core/tools/file-mutation-queue.js.map +0 -1
- package/dist/core/tools/find.d.ts +0 -42
- package/dist/core/tools/find.d.ts.map +0 -1
- package/dist/core/tools/find.js +0 -251
- package/dist/core/tools/find.js.map +0 -1
- package/dist/core/tools/grep.d.ts +0 -41
- package/dist/core/tools/grep.d.ts.map +0 -1
- package/dist/core/tools/grep.js +0 -252
- package/dist/core/tools/grep.js.map +0 -1
- package/dist/core/tools/index.d.ts +0 -43
- package/dist/core/tools/index.d.ts.map +0 -1
- package/dist/core/tools/index.js +0 -129
- package/dist/core/tools/index.js.map +0 -1
- package/dist/core/tools/ls.d.ts +0 -41
- package/dist/core/tools/ls.d.ts.map +0 -1
- package/dist/core/tools/ls.js +0 -126
- package/dist/core/tools/ls.js.map +0 -1
- package/dist/core/tools/output-accumulator.d.ts +0 -63
- package/dist/core/tools/output-accumulator.d.ts.map +0 -1
- package/dist/core/tools/output-accumulator.js +0 -220
- package/dist/core/tools/output-accumulator.js.map +0 -1
- package/dist/core/tools/path-utils.d.ts +0 -10
- package/dist/core/tools/path-utils.d.ts.map +0 -1
- package/dist/core/tools/path-utils.js +0 -99
- package/dist/core/tools/path-utils.js.map +0 -1
- package/dist/core/tools/powershell.d.ts +0 -16
- package/dist/core/tools/powershell.d.ts.map +0 -1
- package/dist/core/tools/powershell.js +0 -39
- package/dist/core/tools/powershell.js.map +0 -1
- package/dist/core/tools/read.d.ts +0 -42
- package/dist/core/tools/read.d.ts.map +0 -1
- package/dist/core/tools/read.js +0 -169
- package/dist/core/tools/read.js.map +0 -1
- package/dist/core/tools/render-utils.d.ts +0 -30
- package/dist/core/tools/render-utils.d.ts.map +0 -1
- package/dist/core/tools/render-utils.js +0 -91
- package/dist/core/tools/render-utils.js.map +0 -1
- package/dist/core/tools/renderers/bash.d.ts +0 -12
- package/dist/core/tools/renderers/bash.d.ts.map +0 -1
- package/dist/core/tools/renderers/bash.js +0 -117
- package/dist/core/tools/renderers/bash.js.map +0 -1
- package/dist/core/tools/renderers/edit.d.ts +0 -23
- package/dist/core/tools/renderers/edit.d.ts.map +0 -1
- package/dist/core/tools/renderers/edit.js +0 -168
- package/dist/core/tools/renderers/edit.js.map +0 -1
- package/dist/core/tools/renderers/find.d.ts +0 -10
- package/dist/core/tools/renderers/find.d.ts.map +0 -1
- package/dist/core/tools/renderers/find.js +0 -64
- package/dist/core/tools/renderers/find.js.map +0 -1
- package/dist/core/tools/renderers/grep.d.ts +0 -10
- package/dist/core/tools/renderers/grep.d.ts.map +0 -1
- package/dist/core/tools/renderers/grep.js +0 -69
- package/dist/core/tools/renderers/grep.js.map +0 -1
- package/dist/core/tools/renderers/index.d.ts +0 -28
- package/dist/core/tools/renderers/index.d.ts.map +0 -1
- package/dist/core/tools/renderers/index.js +0 -47
- package/dist/core/tools/renderers/index.js.map +0 -1
- package/dist/core/tools/renderers/ls.d.ts +0 -10
- package/dist/core/tools/renderers/ls.d.ts.map +0 -1
- package/dist/core/tools/renderers/ls.js +0 -58
- package/dist/core/tools/renderers/ls.js.map +0 -1
- package/dist/core/tools/renderers/read.d.ts +0 -11
- package/dist/core/tools/renderers/read.d.ts.map +0 -1
- package/dist/core/tools/renderers/read.js +0 -130
- package/dist/core/tools/renderers/read.js.map +0 -1
- package/dist/core/tools/renderers/write.d.ts +0 -10
- package/dist/core/tools/renderers/write.d.ts.map +0 -1
- package/dist/core/tools/renderers/write.js +0 -153
- package/dist/core/tools/renderers/write.js.map +0 -1
- package/dist/core/tools/tool-definition-wrapper.d.ts +0 -16
- package/dist/core/tools/tool-definition-wrapper.d.ts.map +0 -1
- package/dist/core/tools/tool-definition-wrapper.js +0 -38
- package/dist/core/tools/tool-definition-wrapper.js.map +0 -1
- package/dist/core/tools/truncate.d.ts +0 -84
- package/dist/core/tools/truncate.d.ts.map +0 -1
- package/dist/core/tools/truncate.js +0 -244
- package/dist/core/tools/truncate.js.map +0 -1
- package/dist/core/tools/write.d.ts +0 -30
- package/dist/core/tools/write.d.ts.map +0 -1
- package/dist/core/tools/write.js +0 -61
- package/dist/core/tools/write.js.map +0 -1
- package/dist/core/trust-manager.d.ts +0 -36
- package/dist/core/trust-manager.d.ts.map +0 -1
- package/dist/core/trust-manager.js +0 -203
- package/dist/core/trust-manager.js.map +0 -1
- package/dist/core/usage-totals.d.ts +0 -21
- package/dist/core/usage-totals.d.ts.map +0 -1
- package/dist/core/usage-totals.js +0 -79
- package/dist/core/usage-totals.js.map +0 -1
- package/dist/core/virtual-models.d.ts +0 -117
- package/dist/core/virtual-models.d.ts.map +0 -1
- package/dist/core/virtual-models.js +0 -124
- package/dist/core/virtual-models.js.map +0 -1
- package/dist/extensions/index.d.ts +0 -3
- package/dist/extensions/index.d.ts.map +0 -1
- package/dist/extensions/index.js +0 -3
- package/dist/extensions/index.js.map +0 -1
- package/dist/extensions/llama/client.d.ts +0 -69
- package/dist/extensions/llama/client.d.ts.map +0 -1
- package/dist/extensions/llama/client.js +0 -313
- package/dist/extensions/llama/client.js.map +0 -1
- package/dist/extensions/llama/huggingface.d.ts +0 -23
- package/dist/extensions/llama/huggingface.d.ts.map +0 -1
- package/dist/extensions/llama/huggingface.js +0 -141
- package/dist/extensions/llama/huggingface.js.map +0 -1
- package/dist/extensions/llama/index.d.ts +0 -3
- package/dist/extensions/llama/index.d.ts.map +0 -1
- package/dist/extensions/llama/index.js +0 -219
- package/dist/extensions/llama/index.js.map +0 -1
- package/dist/extensions/llama/provider.d.ts +0 -12
- package/dist/extensions/llama/provider.d.ts.map +0 -1
- package/dist/extensions/llama/provider.js +0 -213
- package/dist/extensions/llama/provider.js.map +0 -1
- package/dist/extensions/llama/ui.d.ts +0 -42
- package/dist/extensions/llama/ui.d.ts.map +0 -1
- package/dist/extensions/llama/ui.js +0 -416
- package/dist/extensions/llama/ui.js.map +0 -1
- package/dist/index.d.ts +0 -38
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -49
- package/dist/index.js.map +0 -1
- package/dist/main.d.ts +0 -16
- package/dist/main.d.ts.map +0 -1
- package/dist/main.js +0 -819
- package/dist/main.js.map +0 -1
- package/dist/migrations.d.ts +0 -33
- package/dist/migrations.d.ts.map +0 -1
- package/dist/migrations.js +0 -282
- package/dist/migrations.js.map +0 -1
- package/dist/modes/index.d.ts +0 -10
- package/dist/modes/index.d.ts.map +0 -1
- package/dist/modes/index.js +0 -8
- package/dist/modes/index.js.map +0 -1
- package/dist/modes/interactive/bug-report.d.ts +0 -16
- package/dist/modes/interactive/bug-report.d.ts.map +0 -1
- package/dist/modes/interactive/bug-report.js +0 -210
- package/dist/modes/interactive/bug-report.js.map +0 -1
- package/dist/modes/interactive/chat-viewport.d.ts +0 -20
- package/dist/modes/interactive/chat-viewport.d.ts.map +0 -1
- package/dist/modes/interactive/chat-viewport.js +0 -28
- package/dist/modes/interactive/chat-viewport.js.map +0 -1
- package/dist/modes/interactive/components/armin.d.ts +0 -37
- package/dist/modes/interactive/components/armin.d.ts.map +0 -1
- package/dist/modes/interactive/components/armin.js +0 -335
- package/dist/modes/interactive/components/armin.js.map +0 -1
- package/dist/modes/interactive/components/assistant-message.d.ts +0 -26
- package/dist/modes/interactive/components/assistant-message.d.ts.map +0 -1
- package/dist/modes/interactive/components/assistant-message.js +0 -158
- package/dist/modes/interactive/components/assistant-message.js.map +0 -1
- package/dist/modes/interactive/components/bash-execution.d.ts +0 -38
- package/dist/modes/interactive/components/bash-execution.d.ts.map +0 -1
- package/dist/modes/interactive/components/bash-execution.js +0 -178
- package/dist/modes/interactive/components/bash-execution.js.map +0 -1
- package/dist/modes/interactive/components/bordered-loader.d.ts +0 -16
- package/dist/modes/interactive/components/bordered-loader.d.ts.map +0 -1
- package/dist/modes/interactive/components/bordered-loader.js +0 -54
- package/dist/modes/interactive/components/bordered-loader.js.map +0 -1
- package/dist/modes/interactive/components/branch-summary-message.d.ts +0 -17
- package/dist/modes/interactive/components/branch-summary-message.d.ts.map +0 -1
- package/dist/modes/interactive/components/branch-summary-message.js +0 -54
- package/dist/modes/interactive/components/branch-summary-message.js.map +0 -1
- package/dist/modes/interactive/components/compaction-summary-message.d.ts +0 -17
- package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +0 -1
- package/dist/modes/interactive/components/compaction-summary-message.js +0 -55
- package/dist/modes/interactive/components/compaction-summary-message.js.map +0 -1
- package/dist/modes/interactive/components/config-selector.d.ts +0 -102
- package/dist/modes/interactive/components/config-selector.d.ts.map +0 -1
- package/dist/modes/interactive/components/config-selector.js +0 -771
- package/dist/modes/interactive/components/config-selector.js.map +0 -1
- package/dist/modes/interactive/components/countdown-timer.d.ts +0 -14
- package/dist/modes/interactive/components/countdown-timer.d.ts.map +0 -1
- package/dist/modes/interactive/components/countdown-timer.js +0 -33
- package/dist/modes/interactive/components/countdown-timer.js.map +0 -1
- package/dist/modes/interactive/components/custom-editor.d.ts +0 -30
- package/dist/modes/interactive/components/custom-editor.d.ts.map +0 -1
- package/dist/modes/interactive/components/custom-editor.js +0 -115
- package/dist/modes/interactive/components/custom-editor.js.map +0 -1
- package/dist/modes/interactive/components/custom-entry.d.ts +0 -21
- package/dist/modes/interactive/components/custom-entry.d.ts.map +0 -1
- package/dist/modes/interactive/components/custom-entry.js +0 -58
- package/dist/modes/interactive/components/custom-entry.js.map +0 -1
- package/dist/modes/interactive/components/custom-message.d.ts +0 -22
- package/dist/modes/interactive/components/custom-message.d.ts.map +0 -1
- package/dist/modes/interactive/components/custom-message.js +0 -88
- package/dist/modes/interactive/components/custom-message.js.map +0 -1
- package/dist/modes/interactive/components/diff.d.ts +0 -12
- package/dist/modes/interactive/components/diff.d.ts.map +0 -1
- package/dist/modes/interactive/components/diff.js +0 -133
- package/dist/modes/interactive/components/diff.js.map +0 -1
- package/dist/modes/interactive/components/dynamic-border.d.ts +0 -15
- package/dist/modes/interactive/components/dynamic-border.d.ts.map +0 -1
- package/dist/modes/interactive/components/dynamic-border.js +0 -21
- package/dist/modes/interactive/components/dynamic-border.js.map +0 -1
- package/dist/modes/interactive/components/e-logo.d.ts +0 -16
- package/dist/modes/interactive/components/e-logo.d.ts.map +0 -1
- package/dist/modes/interactive/components/e-logo.js +0 -29
- package/dist/modes/interactive/components/e-logo.js.map +0 -1
- package/dist/modes/interactive/components/earendil-announcement.d.ts +0 -5
- package/dist/modes/interactive/components/earendil-announcement.d.ts.map +0 -1
- package/dist/modes/interactive/components/earendil-announcement.js +0 -40
- package/dist/modes/interactive/components/earendil-announcement.js.map +0 -1
- package/dist/modes/interactive/components/easter-egg-3d.d.ts +0 -104
- package/dist/modes/interactive/components/easter-egg-3d.d.ts.map +0 -1
- package/dist/modes/interactive/components/easter-egg-3d.js +0 -1138
- package/dist/modes/interactive/components/easter-egg-3d.js.map +0 -1
- package/dist/modes/interactive/components/easter-egg-3d.lazy.d.ts +0 -6
- package/dist/modes/interactive/components/easter-egg-3d.lazy.d.ts.map +0 -1
- package/dist/modes/interactive/components/easter-egg-3d.lazy.js +0 -23
- package/dist/modes/interactive/components/easter-egg-3d.lazy.js.map +0 -1
- package/dist/modes/interactive/components/extension-editor.d.ts +0 -24
- package/dist/modes/interactive/components/extension-editor.d.ts.map +0 -1
- package/dist/modes/interactive/components/extension-editor.js +0 -103
- package/dist/modes/interactive/components/extension-editor.js.map +0 -1
- package/dist/modes/interactive/components/extension-input.d.ts +0 -25
- package/dist/modes/interactive/components/extension-input.d.ts.map +0 -1
- package/dist/modes/interactive/components/extension-input.js +0 -67
- package/dist/modes/interactive/components/extension-input.js.map +0 -1
- package/dist/modes/interactive/components/extension-selector.d.ts +0 -27
- package/dist/modes/interactive/components/extension-selector.d.ts.map +0 -1
- package/dist/modes/interactive/components/extension-selector.js +0 -87
- package/dist/modes/interactive/components/extension-selector.js.map +0 -1
- package/dist/modes/interactive/components/first-time-setup.d.ts +0 -25
- package/dist/modes/interactive/components/first-time-setup.d.ts.map +0 -1
- package/dist/modes/interactive/components/first-time-setup.js +0 -109
- package/dist/modes/interactive/components/first-time-setup.js.map +0 -1
- package/dist/modes/interactive/components/footer.d.ts +0 -39
- package/dist/modes/interactive/components/footer.d.ts.map +0 -1
- package/dist/modes/interactive/components/footer.js +0 -265
- package/dist/modes/interactive/components/footer.js.map +0 -1
- package/dist/modes/interactive/components/index.d.ts +0 -33
- package/dist/modes/interactive/components/index.d.ts.map +0 -1
- package/dist/modes/interactive/components/index.js +0 -34
- package/dist/modes/interactive/components/index.js.map +0 -1
- package/dist/modes/interactive/components/keybinding-hints.d.ts +0 -13
- package/dist/modes/interactive/components/keybinding-hints.d.ts.map +0 -1
- package/dist/modes/interactive/components/keybinding-hints.js +0 -36
- package/dist/modes/interactive/components/keybinding-hints.js.map +0 -1
- package/dist/modes/interactive/components/login-dialog.d.ts +0 -52
- package/dist/modes/interactive/components/login-dialog.d.ts.map +0 -1
- package/dist/modes/interactive/components/login-dialog.js +0 -188
- package/dist/modes/interactive/components/login-dialog.js.map +0 -1
- package/dist/modes/interactive/components/markdown-transform.d.ts +0 -3
- package/dist/modes/interactive/components/markdown-transform.d.ts.map +0 -1
- package/dist/modes/interactive/components/markdown-transform.js +0 -19
- package/dist/modes/interactive/components/markdown-transform.js.map +0 -1
- package/dist/modes/interactive/components/mermaid.d.ts +0 -11
- package/dist/modes/interactive/components/mermaid.d.ts.map +0 -1
- package/dist/modes/interactive/components/mermaid.js +0 -75
- package/dist/modes/interactive/components/mermaid.js.map +0 -1
- package/dist/modes/interactive/components/model-selector.d.ts +0 -60
- package/dist/modes/interactive/components/model-selector.d.ts.map +0 -1
- package/dist/modes/interactive/components/model-selector.js +0 -361
- package/dist/modes/interactive/components/model-selector.js.map +0 -1
- package/dist/modes/interactive/components/oauth-selector.d.ts +0 -33
- package/dist/modes/interactive/components/oauth-selector.d.ts.map +0 -1
- package/dist/modes/interactive/components/oauth-selector.js +0 -163
- package/dist/modes/interactive/components/oauth-selector.js.map +0 -1
- package/dist/modes/interactive/components/scoped-models-selector.d.ts +0 -46
- package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +0 -1
- package/dist/modes/interactive/components/scoped-models-selector.js +0 -326
- package/dist/modes/interactive/components/scoped-models-selector.js.map +0 -1
- package/dist/modes/interactive/components/session-selector-search.d.ts +0 -23
- package/dist/modes/interactive/components/session-selector-search.d.ts.map +0 -1
- package/dist/modes/interactive/components/session-selector-search.js +0 -155
- package/dist/modes/interactive/components/session-selector-search.js.map +0 -1
- package/dist/modes/interactive/components/session-selector.d.ts +0 -95
- package/dist/modes/interactive/components/session-selector.d.ts.map +0 -1
- package/dist/modes/interactive/components/session-selector.js +0 -893
- package/dist/modes/interactive/components/session-selector.js.map +0 -1
- package/dist/modes/interactive/components/settings-selector.d.ts +0 -96
- package/dist/modes/interactive/components/settings-selector.d.ts.map +0 -1
- package/dist/modes/interactive/components/settings-selector.js +0 -742
- package/dist/modes/interactive/components/settings-selector.js.map +0 -1
- package/dist/modes/interactive/components/settings-submenu.d.ts +0 -72
- package/dist/modes/interactive/components/settings-submenu.d.ts.map +0 -1
- package/dist/modes/interactive/components/settings-submenu.js +0 -165
- package/dist/modes/interactive/components/settings-submenu.js.map +0 -1
- package/dist/modes/interactive/components/show-images-selector.d.ts +0 -10
- package/dist/modes/interactive/components/show-images-selector.d.ts.map +0 -1
- package/dist/modes/interactive/components/show-images-selector.js +0 -39
- package/dist/modes/interactive/components/show-images-selector.js.map +0 -1
- package/dist/modes/interactive/components/skill-invocation-message.d.ts +0 -18
- package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +0 -1
- package/dist/modes/interactive/components/skill-invocation-message.js +0 -57
- package/dist/modes/interactive/components/skill-invocation-message.js.map +0 -1
- package/dist/modes/interactive/components/status-indicator.d.ts +0 -30
- package/dist/modes/interactive/components/status-indicator.d.ts.map +0 -1
- package/dist/modes/interactive/components/status-indicator.js +0 -67
- package/dist/modes/interactive/components/status-indicator.js.map +0 -1
- package/dist/modes/interactive/components/theme-selector.d.ts +0 -11
- package/dist/modes/interactive/components/theme-selector.d.ts.map +0 -1
- package/dist/modes/interactive/components/theme-selector.js +0 -50
- package/dist/modes/interactive/components/theme-selector.js.map +0 -1
- package/dist/modes/interactive/components/themed-text.d.ts +0 -17
- package/dist/modes/interactive/components/themed-text.d.ts.map +0 -1
- package/dist/modes/interactive/components/themed-text.js +0 -29
- package/dist/modes/interactive/components/themed-text.js.map +0 -1
- package/dist/modes/interactive/components/thinking-selector.d.ts +0 -23
- package/dist/modes/interactive/components/thinking-selector.d.ts.map +0 -1
- package/dist/modes/interactive/components/thinking-selector.js +0 -109
- package/dist/modes/interactive/components/thinking-selector.js.map +0 -1
- package/dist/modes/interactive/components/tool-execution.d.ts +0 -83
- package/dist/modes/interactive/components/tool-execution.d.ts.map +0 -1
- package/dist/modes/interactive/components/tool-execution.js +0 -323
- package/dist/modes/interactive/components/tool-execution.js.map +0 -1
- package/dist/modes/interactive/components/tree-selector.d.ts +0 -94
- package/dist/modes/interactive/components/tree-selector.d.ts.map +0 -1
- package/dist/modes/interactive/components/tree-selector.js +0 -1254
- package/dist/modes/interactive/components/tree-selector.js.map +0 -1
- package/dist/modes/interactive/components/trust-selector.d.ts +0 -23
- package/dist/modes/interactive/components/trust-selector.d.ts.map +0 -1
- package/dist/modes/interactive/components/trust-selector.js +0 -91
- package/dist/modes/interactive/components/trust-selector.js.map +0 -1
- package/dist/modes/interactive/components/user-message-selector.d.ts +0 -30
- package/dist/modes/interactive/components/user-message-selector.d.ts.map +0 -1
- package/dist/modes/interactive/components/user-message-selector.js +0 -114
- package/dist/modes/interactive/components/user-message-selector.js.map +0 -1
- package/dist/modes/interactive/components/user-message.d.ts +0 -16
- package/dist/modes/interactive/components/user-message.d.ts.map +0 -1
- package/dist/modes/interactive/components/user-message.js +0 -50
- package/dist/modes/interactive/components/user-message.js.map +0 -1
- package/dist/modes/interactive/components/visual-truncate.d.ts +0 -48
- package/dist/modes/interactive/components/visual-truncate.d.ts.map +0 -1
- package/dist/modes/interactive/components/visual-truncate.js +0 -66
- package/dist/modes/interactive/components/visual-truncate.js.map +0 -1
- package/dist/modes/interactive/external-editor.d.ts +0 -12
- package/dist/modes/interactive/external-editor.d.ts.map +0 -1
- package/dist/modes/interactive/external-editor.js +0 -38
- package/dist/modes/interactive/external-editor.js.map +0 -1
- package/dist/modes/interactive/interactive-mode.d.ts +0 -470
- package/dist/modes/interactive/interactive-mode.d.ts.map +0 -1
- package/dist/modes/interactive/interactive-mode.js +0 -5795
- package/dist/modes/interactive/interactive-mode.js.map +0 -1
- package/dist/modes/interactive/model-catalog-refresh.d.ts +0 -7
- package/dist/modes/interactive/model-catalog-refresh.d.ts.map +0 -1
- package/dist/modes/interactive/model-catalog-refresh.js +0 -34
- package/dist/modes/interactive/model-catalog-refresh.js.map +0 -1
- package/dist/modes/interactive/model-search.d.ts +0 -12
- package/dist/modes/interactive/model-search.d.ts.map +0 -1
- package/dist/modes/interactive/model-search.js +0 -15
- package/dist/modes/interactive/model-search.js.map +0 -1
- package/dist/modes/interactive/session-share.d.ts +0 -18
- package/dist/modes/interactive/session-share.d.ts.map +0 -1
- package/dist/modes/interactive/session-share.js +0 -188
- package/dist/modes/interactive/session-share.js.map +0 -1
- package/dist/modes/interactive/theme/system-theme.d.ts +0 -55
- package/dist/modes/interactive/theme/system-theme.d.ts.map +0 -1
- package/dist/modes/interactive/theme/system-theme.js +0 -546
- package/dist/modes/interactive/theme/system-theme.js.map +0 -1
- package/dist/modes/interactive/theme/theme-controller.d.ts +0 -81
- package/dist/modes/interactive/theme/theme-controller.d.ts.map +0 -1
- package/dist/modes/interactive/theme/theme-controller.js +0 -210
- package/dist/modes/interactive/theme/theme-controller.js.map +0 -1
- package/dist/modes/interactive/theme/theme-json.d.ts +0 -85
- package/dist/modes/interactive/theme/theme-json.d.ts.map +0 -1
- package/dist/modes/interactive/theme/theme-json.js +0 -132
- package/dist/modes/interactive/theme/theme-json.js.map +0 -1
- package/dist/modes/interactive/theme/theme.d.ts +0 -158
- package/dist/modes/interactive/theme/theme.d.ts.map +0 -1
- package/dist/modes/interactive/theme/theme.js +0 -913
- package/dist/modes/interactive/theme/theme.js.map +0 -1
- package/dist/modes/interactive/tui-renderer.d.ts +0 -22
- package/dist/modes/interactive/tui-renderer.d.ts.map +0 -1
- package/dist/modes/interactive/tui-renderer.js +0 -67
- package/dist/modes/interactive/tui-renderer.js.map +0 -1
- package/dist/modes/json-event.d.ts +0 -34
- package/dist/modes/json-event.d.ts.map +0 -1
- package/dist/modes/json-event.js +0 -29
- package/dist/modes/json-event.js.map +0 -1
- package/dist/modes/print-mode.d.ts +0 -28
- package/dist/modes/print-mode.d.ts.map +0 -1
- package/dist/modes/print-mode.js +0 -142
- package/dist/modes/print-mode.js.map +0 -1
- package/dist/modes/rpc/jsonl.d.ts +0 -17
- package/dist/modes/rpc/jsonl.d.ts.map +0 -1
- package/dist/modes/rpc/jsonl.js +0 -49
- package/dist/modes/rpc/jsonl.js.map +0 -1
- package/dist/modes/rpc/rpc-client.d.ts +0 -254
- package/dist/modes/rpc/rpc-client.d.ts.map +0 -1
- package/dist/modes/rpc/rpc-client.js +0 -499
- package/dist/modes/rpc/rpc-client.js.map +0 -1
- package/dist/modes/rpc/rpc-mode.d.ts +0 -20
- package/dist/modes/rpc/rpc-mode.d.ts.map +0 -1
- package/dist/modes/rpc/rpc-mode.js +0 -655
- package/dist/modes/rpc/rpc-mode.js.map +0 -1
- package/dist/modes/rpc/rpc-types.d.ts +0 -478
- package/dist/modes/rpc/rpc-types.d.ts.map +0 -1
- package/dist/modes/rpc/rpc-types.js +0 -8
- package/dist/modes/rpc/rpc-types.js.map +0 -1
- package/dist/package-manager-cli.d.ts +0 -9
- package/dist/package-manager-cli.d.ts.map +0 -1
- package/dist/package-manager-cli.js +0 -1003
- package/dist/package-manager-cli.js.map +0 -1
- package/dist/rpc-entry.d.ts +0 -3
- package/dist/rpc-entry.d.ts.map +0 -1
- package/dist/rpc-entry.js +0 -11
- package/dist/rpc-entry.js.map +0 -1
- package/dist/utils/abort.d.ts +0 -5
- package/dist/utils/abort.d.ts.map +0 -1
- package/dist/utils/abort.js +0 -48
- package/dist/utils/abort.js.map +0 -1
- package/dist/utils/ansi.d.ts +0 -10
- package/dist/utils/ansi.d.ts.map +0 -1
- package/dist/utils/ansi.js +0 -71
- package/dist/utils/ansi.js.map +0 -1
- package/dist/utils/changelog.d.ts +0 -22
- package/dist/utils/changelog.d.ts.map +0 -1
- package/dist/utils/changelog.js +0 -165
- package/dist/utils/changelog.js.map +0 -1
- package/dist/utils/child-process.d.ts +0 -18
- package/dist/utils/child-process.d.ts.map +0 -1
- package/dist/utils/child-process.js +0 -106
- package/dist/utils/child-process.js.map +0 -1
- package/dist/utils/clipboard-command.d.ts +0 -7
- package/dist/utils/clipboard-command.d.ts.map +0 -1
- package/dist/utils/clipboard-command.js +0 -45
- package/dist/utils/clipboard-command.js.map +0 -1
- package/dist/utils/clipboard-image.d.ts +0 -11
- package/dist/utils/clipboard-image.d.ts.map +0 -1
- package/dist/utils/clipboard-image.js +0 -214
- package/dist/utils/clipboard-image.js.map +0 -1
- package/dist/utils/clipboard.d.ts +0 -6
- package/dist/utils/clipboard.d.ts.map +0 -1
- package/dist/utils/clipboard.js +0 -157
- package/dist/utils/clipboard.js.map +0 -1
- package/dist/utils/deprecation.d.ts +0 -4
- package/dist/utils/deprecation.d.ts.map +0 -1
- package/dist/utils/deprecation.js +0 -13
- package/dist/utils/deprecation.js.map +0 -1
- package/dist/utils/exif-orientation.d.ts +0 -5
- package/dist/utils/exif-orientation.d.ts.map +0 -1
- package/dist/utils/exif-orientation.js +0 -157
- package/dist/utils/exif-orientation.js.map +0 -1
- package/dist/utils/frontmatter.d.ts +0 -8
- package/dist/utils/frontmatter.d.ts.map +0 -1
- package/dist/utils/frontmatter.js +0 -27
- package/dist/utils/frontmatter.js.map +0 -1
- package/dist/utils/fs-watch.d.ts +0 -5
- package/dist/utils/fs-watch.d.ts.map +0 -1
- package/dist/utils/fs-watch.js +0 -25
- package/dist/utils/fs-watch.js.map +0 -1
- package/dist/utils/git.d.ts +0 -26
- package/dist/utils/git.d.ts.map +0 -1
- package/dist/utils/git.js +0 -195
- package/dist/utils/git.js.map +0 -1
- package/dist/utils/html.d.ts +0 -7
- package/dist/utils/html.d.ts.map +0 -1
- package/dist/utils/html.js +0 -40
- package/dist/utils/html.js.map +0 -1
- package/dist/utils/image-convert.d.ts +0 -22
- package/dist/utils/image-convert.d.ts.map +0 -1
- package/dist/utils/image-convert.js +0 -84
- package/dist/utils/image-convert.js.map +0 -1
- package/dist/utils/image-process.d.ts +0 -18
- package/dist/utils/image-process.d.ts.map +0 -1
- package/dist/utils/image-process.js +0 -83
- package/dist/utils/image-process.js.map +0 -1
- package/dist/utils/image-resize-core.d.ts +0 -42
- package/dist/utils/image-resize-core.d.ts.map +0 -1
- package/dist/utils/image-resize-core.js +0 -129
- package/dist/utils/image-resize-core.js.map +0 -1
- package/dist/utils/image-resize-worker.d.ts +0 -2
- package/dist/utils/image-resize-worker.d.ts.map +0 -1
- package/dist/utils/image-resize-worker.js +0 -32
- package/dist/utils/image-resize-worker.js.map +0 -1
- package/dist/utils/image-resize.d.ts +0 -16
- package/dist/utils/image-resize.d.ts.map +0 -1
- package/dist/utils/image-resize.js +0 -96
- package/dist/utils/image-resize.js.map +0 -1
- package/dist/utils/json.d.ts +0 -3
- package/dist/utils/json.d.ts.map +0 -1
- package/dist/utils/json.js +0 -7
- package/dist/utils/json.js.map +0 -1
- package/dist/utils/management-http.d.ts +0 -25
- package/dist/utils/management-http.d.ts.map +0 -1
- package/dist/utils/management-http.js +0 -54
- package/dist/utils/management-http.js.map +0 -1
- package/dist/utils/mime.d.ts +0 -3
- package/dist/utils/mime.d.ts.map +0 -1
- package/dist/utils/mime.js +0 -110
- package/dist/utils/mime.js.map +0 -1
- package/dist/utils/open-browser.d.ts +0 -9
- package/dist/utils/open-browser.d.ts.map +0 -1
- package/dist/utils/open-browser.js +0 -22
- package/dist/utils/open-browser.js.map +0 -1
- package/dist/utils/paths.d.ts +0 -34
- package/dist/utils/paths.d.ts.map +0 -1
- package/dist/utils/paths.js +0 -115
- package/dist/utils/paths.js.map +0 -1
- package/dist/utils/photon.d.ts +0 -21
- package/dist/utils/photon.d.ts.map +0 -1
- package/dist/utils/photon.js +0 -121
- package/dist/utils/photon.js.map +0 -1
- package/dist/utils/pi-user-agent.d.ts +0 -2
- package/dist/utils/pi-user-agent.d.ts.map +0 -1
- package/dist/utils/pi-user-agent.js +0 -5
- package/dist/utils/pi-user-agent.js.map +0 -1
- package/dist/utils/shell.d.ts +0 -32
- package/dist/utils/shell.d.ts.map +0 -1
- package/dist/utils/shell.js +0 -189
- package/dist/utils/shell.js.map +0 -1
- package/dist/utils/sleep.d.ts +0 -5
- package/dist/utils/sleep.d.ts.map +0 -1
- package/dist/utils/sleep.js +0 -17
- package/dist/utils/sleep.js.map +0 -1
- package/dist/utils/syntax-highlight.d.ts +0 -13
- package/dist/utils/syntax-highlight.d.ts.map +0 -1
- package/dist/utils/syntax-highlight.js +0 -184
- package/dist/utils/syntax-highlight.js.map +0 -1
- package/dist/utils/text.d.ts +0 -8
- package/dist/utils/text.d.ts.map +0 -1
- package/dist/utils/text.js +0 -9
- package/dist/utils/text.js.map +0 -1
- package/dist/utils/tool-result-images.d.ts +0 -21
- package/dist/utils/tool-result-images.d.ts.map +0 -1
- package/dist/utils/tool-result-images.js +0 -48
- package/dist/utils/tool-result-images.js.map +0 -1
- package/dist/utils/tools-manager.d.ts +0 -13
- package/dist/utils/tools-manager.d.ts.map +0 -1
- package/dist/utils/tools-manager.js +0 -343
- package/dist/utils/tools-manager.js.map +0 -1
- package/dist/utils/version-check.d.ts +0 -19
- package/dist/utils/version-check.d.ts.map +0 -1
- package/dist/utils/version-check.js +0 -72
- package/dist/utils/version-check.js.map +0 -1
- package/dist/utils/windows-self-update.d.ts +0 -3
- package/dist/utils/windows-self-update.d.ts.map +0 -1
- package/dist/utils/windows-self-update.js +0 -77
- package/dist/utils/windows-self-update.js.map +0 -1
- package/dist/utils/wsl.d.ts +0 -3
- package/dist/utils/wsl.d.ts.map +0 -1
- package/dist/utils/wsl.js +0 -15
- package/dist/utils/wsl.js.map +0 -1
- package/dist/utils/zip.d.ts +0 -7
- package/dist/utils/zip.d.ts.map +0 -1
- package/dist/utils/zip.js +0 -60
- package/dist/utils/zip.js.map +0 -1
|
@@ -1,226 +0,0 @@
|
|
|
1
|
-
import { existsSync, readFileSync, writeFileSync } from "fs";
|
|
2
|
-
import { basename, join } from "path";
|
|
3
|
-
import { APP_NAME, getExportTemplateDir } from "../../config.js";
|
|
4
|
-
import { getResolvedThemeColors, getThemeExportColors } from "../../modes/interactive/theme/theme.js";
|
|
5
|
-
import { normalizePath, resolvePath } from "../../utils/paths.js";
|
|
6
|
-
import { SessionManager } from "../session-manager.js";
|
|
7
|
-
/** Parse a color string to RGB values. Supports hex (#RRGGBB) and rgb(r,g,b) formats. */
|
|
8
|
-
function parseColor(color) {
|
|
9
|
-
const hexMatch = color.match(/^#([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/);
|
|
10
|
-
if (hexMatch) {
|
|
11
|
-
return {
|
|
12
|
-
r: Number.parseInt(hexMatch[1], 16),
|
|
13
|
-
g: Number.parseInt(hexMatch[2], 16),
|
|
14
|
-
b: Number.parseInt(hexMatch[3], 16),
|
|
15
|
-
};
|
|
16
|
-
}
|
|
17
|
-
const rgbMatch = color.match(/^rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$/);
|
|
18
|
-
if (rgbMatch) {
|
|
19
|
-
return {
|
|
20
|
-
r: Number.parseInt(rgbMatch[1], 10),
|
|
21
|
-
g: Number.parseInt(rgbMatch[2], 10),
|
|
22
|
-
b: Number.parseInt(rgbMatch[3], 10),
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
return undefined;
|
|
26
|
-
}
|
|
27
|
-
/** Calculate relative luminance of a color (0-1, higher = lighter). */
|
|
28
|
-
function getLuminance(r, g, b) {
|
|
29
|
-
const toLinear = (c) => {
|
|
30
|
-
const s = c / 255;
|
|
31
|
-
return s <= 0.03928 ? s / 12.92 : ((s + 0.055) / 1.055) ** 2.4;
|
|
32
|
-
};
|
|
33
|
-
return 0.2126 * toLinear(r) + 0.7152 * toLinear(g) + 0.0722 * toLinear(b);
|
|
34
|
-
}
|
|
35
|
-
/** Adjust color brightness. Factor > 1 lightens, < 1 darkens. */
|
|
36
|
-
function adjustBrightness(color, factor) {
|
|
37
|
-
const parsed = parseColor(color);
|
|
38
|
-
if (!parsed)
|
|
39
|
-
return color;
|
|
40
|
-
const adjust = (c) => Math.min(255, Math.max(0, Math.round(c * factor)));
|
|
41
|
-
return `rgb(${adjust(parsed.r)}, ${adjust(parsed.g)}, ${adjust(parsed.b)})`;
|
|
42
|
-
}
|
|
43
|
-
/** Derive export background colors from a base color (e.g., userMessageBg). */
|
|
44
|
-
function deriveExportColors(baseColor) {
|
|
45
|
-
const parsed = parseColor(baseColor);
|
|
46
|
-
if (!parsed) {
|
|
47
|
-
return {
|
|
48
|
-
pageBg: "rgb(24, 24, 30)",
|
|
49
|
-
cardBg: "rgb(30, 30, 36)",
|
|
50
|
-
infoBg: "rgb(60, 55, 40)",
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
const luminance = getLuminance(parsed.r, parsed.g, parsed.b);
|
|
54
|
-
const isLight = luminance > 0.5;
|
|
55
|
-
if (isLight) {
|
|
56
|
-
return {
|
|
57
|
-
pageBg: adjustBrightness(baseColor, 0.96),
|
|
58
|
-
cardBg: baseColor,
|
|
59
|
-
infoBg: `rgb(${Math.min(255, parsed.r + 10)}, ${Math.min(255, parsed.g + 5)}, ${Math.max(0, parsed.b - 20)})`,
|
|
60
|
-
};
|
|
61
|
-
}
|
|
62
|
-
return {
|
|
63
|
-
pageBg: adjustBrightness(baseColor, 0.7),
|
|
64
|
-
cardBg: adjustBrightness(baseColor, 0.85),
|
|
65
|
-
infoBg: `rgb(${Math.min(255, parsed.r + 20)}, ${Math.min(255, parsed.g + 15)}, ${parsed.b})`,
|
|
66
|
-
};
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Generate CSS custom property declarations from theme colors.
|
|
70
|
-
*/
|
|
71
|
-
function generateThemeVars(themeName) {
|
|
72
|
-
const colors = getResolvedThemeColors(themeName);
|
|
73
|
-
const lines = [];
|
|
74
|
-
for (const [key, value] of Object.entries(colors)) {
|
|
75
|
-
lines.push(`--${key}: ${value};`);
|
|
76
|
-
}
|
|
77
|
-
// Use explicit theme export colors if available, otherwise derive from userMessageBg
|
|
78
|
-
const themeExport = getThemeExportColors(themeName);
|
|
79
|
-
const userMessageBg = colors.userMessageBg || "#343541";
|
|
80
|
-
const derivedColors = deriveExportColors(userMessageBg);
|
|
81
|
-
lines.push(`--exportPageBg: ${themeExport.pageBg ?? derivedColors.pageBg};`);
|
|
82
|
-
lines.push(`--exportCardBg: ${themeExport.cardBg ?? derivedColors.cardBg};`);
|
|
83
|
-
lines.push(`--exportInfoBg: ${themeExport.infoBg ?? derivedColors.infoBg};`);
|
|
84
|
-
return lines.join("\n ");
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* Core HTML generation logic shared by both export functions.
|
|
88
|
-
*/
|
|
89
|
-
function generateHtml(sessionData, themeName) {
|
|
90
|
-
const templateDir = getExportTemplateDir();
|
|
91
|
-
const template = readFileSync(join(templateDir, "template.html"), "utf-8");
|
|
92
|
-
const templateCss = readFileSync(join(templateDir, "template.css"), "utf-8");
|
|
93
|
-
const templateJs = readFileSync(join(templateDir, "template.js"), "utf-8");
|
|
94
|
-
const markedJs = readFileSync(join(templateDir, "vendor", "marked.min.js"), "utf-8");
|
|
95
|
-
const hljsJs = readFileSync(join(templateDir, "vendor", "highlight.min.js"), "utf-8");
|
|
96
|
-
const themeVars = generateThemeVars(themeName);
|
|
97
|
-
const colors = getResolvedThemeColors(themeName);
|
|
98
|
-
const themeExport = getThemeExportColors(themeName);
|
|
99
|
-
const derivedExportColors = deriveExportColors(colors.userMessageBg || "#343541");
|
|
100
|
-
const bodyBg = themeExport.pageBg ?? derivedExportColors.pageBg;
|
|
101
|
-
const containerBg = themeExport.cardBg ?? derivedExportColors.cardBg;
|
|
102
|
-
const infoBg = themeExport.infoBg ?? derivedExportColors.infoBg;
|
|
103
|
-
// Base64 encode session data to avoid escaping issues
|
|
104
|
-
const sessionDataBase64 = Buffer.from(JSON.stringify(sessionData)).toString("base64");
|
|
105
|
-
// Build the CSS with theme variables injected
|
|
106
|
-
const css = templateCss
|
|
107
|
-
.replace("{{THEME_VARS}}", themeVars)
|
|
108
|
-
.replace("{{BODY_BG}}", bodyBg)
|
|
109
|
-
.replace("{{CONTAINER_BG}}", containerBg)
|
|
110
|
-
.replace("{{INFO_BG}}", infoBg);
|
|
111
|
-
return template
|
|
112
|
-
.replace("{{CSS}}", css)
|
|
113
|
-
.replace("{{JS}}", templateJs)
|
|
114
|
-
.replace("{{SESSION_DATA}}", sessionDataBase64)
|
|
115
|
-
.replace("{{MARKED_JS}}", markedJs)
|
|
116
|
-
.replace("{{HIGHLIGHT_JS}}", hljsJs);
|
|
117
|
-
}
|
|
118
|
-
/** Tools rendered directly by the HTML template (not pre-rendered via TUI→ANSI→HTML pipeline) */
|
|
119
|
-
const TEMPLATE_RENDERED_TOOLS = new Set(["bash", "read", "write", "edit", "ls"]);
|
|
120
|
-
/**
|
|
121
|
-
* Pre-render custom tools to HTML using their TUI renderers.
|
|
122
|
-
*/
|
|
123
|
-
function preRenderCustomTools(entries, toolRenderer) {
|
|
124
|
-
const renderedTools = {};
|
|
125
|
-
for (const entry of entries) {
|
|
126
|
-
if (entry.type !== "message")
|
|
127
|
-
continue;
|
|
128
|
-
const msg = entry.message;
|
|
129
|
-
// Find tool calls in assistant messages
|
|
130
|
-
if (msg.role === "assistant" && Array.isArray(msg.content)) {
|
|
131
|
-
for (const block of msg.content) {
|
|
132
|
-
if (block.type === "toolCall" && !TEMPLATE_RENDERED_TOOLS.has(block.name)) {
|
|
133
|
-
const callHtml = toolRenderer.renderCall(block.id, block.name, block.arguments);
|
|
134
|
-
if (callHtml) {
|
|
135
|
-
renderedTools[block.id] = { callHtml };
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
// Find tool results
|
|
141
|
-
if (msg.role === "toolResult" && msg.toolCallId) {
|
|
142
|
-
const toolName = msg.toolName || "";
|
|
143
|
-
// Only render if we have a pre-rendered call OR it's not template-rendered
|
|
144
|
-
const existing = renderedTools[msg.toolCallId];
|
|
145
|
-
if (existing || !TEMPLATE_RENDERED_TOOLS.has(toolName)) {
|
|
146
|
-
const rendered = toolRenderer.renderResult(msg.toolCallId, toolName, msg.content, msg.details, msg.isError || false);
|
|
147
|
-
if (rendered) {
|
|
148
|
-
renderedTools[msg.toolCallId] = {
|
|
149
|
-
...existing,
|
|
150
|
-
resultHtmlCollapsed: rendered.collapsed,
|
|
151
|
-
resultHtmlExpanded: rendered.expanded,
|
|
152
|
-
};
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
return renderedTools;
|
|
158
|
-
}
|
|
159
|
-
/**
|
|
160
|
-
* Export session to HTML using SessionManager and AgentState.
|
|
161
|
-
* Used by TUI's /export command.
|
|
162
|
-
*/
|
|
163
|
-
export async function exportSessionToHtml(sm, state, options) {
|
|
164
|
-
const opts = typeof options === "string" ? { outputPath: options } : options || {};
|
|
165
|
-
const sessionFile = sm.getSessionFile();
|
|
166
|
-
if (!sessionFile) {
|
|
167
|
-
throw new Error("Cannot export in-memory session to HTML");
|
|
168
|
-
}
|
|
169
|
-
if (!existsSync(sessionFile)) {
|
|
170
|
-
throw new Error("Nothing to export yet - start a conversation first");
|
|
171
|
-
}
|
|
172
|
-
const entries = sm.getEntries();
|
|
173
|
-
// Pre-render custom tools if a tool renderer is provided
|
|
174
|
-
let renderedTools;
|
|
175
|
-
if (opts.toolRenderer) {
|
|
176
|
-
renderedTools = preRenderCustomTools(entries, opts.toolRenderer);
|
|
177
|
-
// Only include if we actually rendered something
|
|
178
|
-
if (Object.keys(renderedTools).length === 0) {
|
|
179
|
-
renderedTools = undefined;
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
const sessionData = {
|
|
183
|
-
header: sm.getHeader(),
|
|
184
|
-
entries,
|
|
185
|
-
leafId: sm.getLeafId(),
|
|
186
|
-
systemPrompt: state?.systemPrompt,
|
|
187
|
-
tools: state?.tools?.map((t) => ({ name: t.name, description: t.description, parameters: t.parameters })),
|
|
188
|
-
renderedTools,
|
|
189
|
-
};
|
|
190
|
-
const html = generateHtml(sessionData, opts.themeName);
|
|
191
|
-
let outputPath = opts.outputPath ? normalizePath(opts.outputPath) : undefined;
|
|
192
|
-
if (!outputPath) {
|
|
193
|
-
const sessionBasename = basename(sessionFile, ".jsonl");
|
|
194
|
-
outputPath = `${APP_NAME}-session-${sessionBasename}.html`;
|
|
195
|
-
}
|
|
196
|
-
writeFileSync(outputPath, html, "utf8");
|
|
197
|
-
return outputPath;
|
|
198
|
-
}
|
|
199
|
-
/**
|
|
200
|
-
* Export session file to HTML (standalone, without AgentState).
|
|
201
|
-
* Used by CLI for exporting arbitrary session files.
|
|
202
|
-
*/
|
|
203
|
-
export async function exportFromFile(inputPath, options) {
|
|
204
|
-
const opts = typeof options === "string" ? { outputPath: options } : options || {};
|
|
205
|
-
const resolvedInputPath = resolvePath(inputPath);
|
|
206
|
-
if (!existsSync(resolvedInputPath)) {
|
|
207
|
-
throw new Error(`File not found: ${resolvedInputPath}`);
|
|
208
|
-
}
|
|
209
|
-
const sm = SessionManager.open(resolvedInputPath);
|
|
210
|
-
const sessionData = {
|
|
211
|
-
header: sm.getHeader(),
|
|
212
|
-
entries: sm.getEntries(),
|
|
213
|
-
leafId: sm.getLeafId(),
|
|
214
|
-
systemPrompt: undefined,
|
|
215
|
-
tools: undefined,
|
|
216
|
-
};
|
|
217
|
-
const html = generateHtml(sessionData, opts.themeName);
|
|
218
|
-
let outputPath = opts.outputPath ? normalizePath(opts.outputPath) : undefined;
|
|
219
|
-
if (!outputPath) {
|
|
220
|
-
const inputBasename = basename(resolvedInputPath, ".jsonl");
|
|
221
|
-
outputPath = `${APP_NAME}-session-${inputBasename}.html`;
|
|
222
|
-
}
|
|
223
|
-
writeFileSync(outputPath, html, "utf8");
|
|
224
|
-
return outputPath;
|
|
225
|
-
}
|
|
226
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/export-html/index.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AgentState } from \"@earendil-works/pi-agent-core\";\nimport { existsSync, readFileSync, writeFileSync } from \"fs\";\nimport { basename, join } from \"path\";\nimport { APP_NAME, getExportTemplateDir } from \"../../config.ts\";\nimport { getResolvedThemeColors, getThemeExportColors } from \"../../modes/interactive/theme/theme.ts\";\nimport { normalizePath, resolvePath } from \"../../utils/paths.ts\";\nimport type { ToolDefinition } from \"../extensions/types.ts\";\nimport type { SessionEntry } from \"../session-manager.ts\";\nimport { SessionManager } from \"../session-manager.ts\";\n\n/**\n * Interface for rendering custom tools to HTML.\n * Used by agent-session to pre-render extension tool output.\n */\nexport interface ToolHtmlRenderer {\n\t/** Render a tool call to HTML. Returns undefined if tool has no custom renderer. */\n\trenderCall(toolCallId: string, toolName: string, args: unknown): string | undefined;\n\t/** Render a tool result to HTML. Returns collapsed/expanded or undefined if tool has no custom renderer. */\n\trenderResult(\n\t\ttoolCallId: string,\n\t\ttoolName: string,\n\t\tresult: Array<{ type: string; text?: string; data?: string; mimeType?: string }>,\n\t\tdetails: unknown,\n\t\tisError: boolean,\n\t): { collapsed?: string; expanded?: string } | undefined;\n}\n\n/** Pre-rendered HTML for a custom tool call and result */\ninterface RenderedToolHtml {\n\tcallHtml?: string;\n\tresultHtmlCollapsed?: string;\n\tresultHtmlExpanded?: string;\n}\n\nexport interface ExportOptions {\n\toutputPath?: string;\n\tthemeName?: string;\n\t/** Optional tool renderer for custom tools */\n\ttoolRenderer?: ToolHtmlRenderer;\n}\n\n/** Parse a color string to RGB values. Supports hex (#RRGGBB) and rgb(r,g,b) formats. */\nfunction parseColor(color: string): { r: number; g: number; b: number } | undefined {\n\tconst hexMatch = color.match(/^#([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/);\n\tif (hexMatch) {\n\t\treturn {\n\t\t\tr: Number.parseInt(hexMatch[1], 16),\n\t\t\tg: Number.parseInt(hexMatch[2], 16),\n\t\t\tb: Number.parseInt(hexMatch[3], 16),\n\t\t};\n\t}\n\tconst rgbMatch = color.match(/^rgb\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*\\)$/);\n\tif (rgbMatch) {\n\t\treturn {\n\t\t\tr: Number.parseInt(rgbMatch[1], 10),\n\t\t\tg: Number.parseInt(rgbMatch[2], 10),\n\t\t\tb: Number.parseInt(rgbMatch[3], 10),\n\t\t};\n\t}\n\treturn undefined;\n}\n\n/** Calculate relative luminance of a color (0-1, higher = lighter). */\nfunction getLuminance(r: number, g: number, b: number): number {\n\tconst toLinear = (c: number) => {\n\t\tconst s = c / 255;\n\t\treturn s <= 0.03928 ? s / 12.92 : ((s + 0.055) / 1.055) ** 2.4;\n\t};\n\treturn 0.2126 * toLinear(r) + 0.7152 * toLinear(g) + 0.0722 * toLinear(b);\n}\n\n/** Adjust color brightness. Factor > 1 lightens, < 1 darkens. */\nfunction adjustBrightness(color: string, factor: number): string {\n\tconst parsed = parseColor(color);\n\tif (!parsed) return color;\n\tconst adjust = (c: number) => Math.min(255, Math.max(0, Math.round(c * factor)));\n\treturn `rgb(${adjust(parsed.r)}, ${adjust(parsed.g)}, ${adjust(parsed.b)})`;\n}\n\n/** Derive export background colors from a base color (e.g., userMessageBg). */\nfunction deriveExportColors(baseColor: string): { pageBg: string; cardBg: string; infoBg: string } {\n\tconst parsed = parseColor(baseColor);\n\tif (!parsed) {\n\t\treturn {\n\t\t\tpageBg: \"rgb(24, 24, 30)\",\n\t\t\tcardBg: \"rgb(30, 30, 36)\",\n\t\t\tinfoBg: \"rgb(60, 55, 40)\",\n\t\t};\n\t}\n\n\tconst luminance = getLuminance(parsed.r, parsed.g, parsed.b);\n\tconst isLight = luminance > 0.5;\n\n\tif (isLight) {\n\t\treturn {\n\t\t\tpageBg: adjustBrightness(baseColor, 0.96),\n\t\t\tcardBg: baseColor,\n\t\t\tinfoBg: `rgb(${Math.min(255, parsed.r + 10)}, ${Math.min(255, parsed.g + 5)}, ${Math.max(0, parsed.b - 20)})`,\n\t\t};\n\t}\n\treturn {\n\t\tpageBg: adjustBrightness(baseColor, 0.7),\n\t\tcardBg: adjustBrightness(baseColor, 0.85),\n\t\tinfoBg: `rgb(${Math.min(255, parsed.r + 20)}, ${Math.min(255, parsed.g + 15)}, ${parsed.b})`,\n\t};\n}\n\n/**\n * Generate CSS custom property declarations from theme colors.\n */\nfunction generateThemeVars(themeName?: string): string {\n\tconst colors = getResolvedThemeColors(themeName);\n\tconst lines: string[] = [];\n\tfor (const [key, value] of Object.entries(colors)) {\n\t\tlines.push(`--${key}: ${value};`);\n\t}\n\n\t// Use explicit theme export colors if available, otherwise derive from userMessageBg\n\tconst themeExport = getThemeExportColors(themeName);\n\tconst userMessageBg = colors.userMessageBg || \"#343541\";\n\tconst derivedColors = deriveExportColors(userMessageBg);\n\n\tlines.push(`--exportPageBg: ${themeExport.pageBg ?? derivedColors.pageBg};`);\n\tlines.push(`--exportCardBg: ${themeExport.cardBg ?? derivedColors.cardBg};`);\n\tlines.push(`--exportInfoBg: ${themeExport.infoBg ?? derivedColors.infoBg};`);\n\n\treturn lines.join(\"\\n \");\n}\n\ninterface SessionData {\n\theader: ReturnType<SessionManager[\"getHeader\"]>;\n\tentries: ReturnType<SessionManager[\"getEntries\"]>;\n\tleafId: string | null;\n\tsystemPrompt?: string;\n\ttools?: Array<Pick<ToolDefinition, \"name\" | \"description\" | \"parameters\">>;\n\t/** Pre-rendered HTML for custom tool calls/results, keyed by tool call ID */\n\trenderedTools?: Record<string, RenderedToolHtml>;\n}\n\n/**\n * Core HTML generation logic shared by both export functions.\n */\nfunction generateHtml(sessionData: SessionData, themeName?: string): string {\n\tconst templateDir = getExportTemplateDir();\n\tconst template = readFileSync(join(templateDir, \"template.html\"), \"utf-8\");\n\tconst templateCss = readFileSync(join(templateDir, \"template.css\"), \"utf-8\");\n\tconst templateJs = readFileSync(join(templateDir, \"template.js\"), \"utf-8\");\n\tconst markedJs = readFileSync(join(templateDir, \"vendor\", \"marked.min.js\"), \"utf-8\");\n\tconst hljsJs = readFileSync(join(templateDir, \"vendor\", \"highlight.min.js\"), \"utf-8\");\n\n\tconst themeVars = generateThemeVars(themeName);\n\tconst colors = getResolvedThemeColors(themeName);\n\tconst themeExport = getThemeExportColors(themeName);\n\tconst derivedExportColors = deriveExportColors(colors.userMessageBg || \"#343541\");\n\tconst bodyBg = themeExport.pageBg ?? derivedExportColors.pageBg;\n\tconst containerBg = themeExport.cardBg ?? derivedExportColors.cardBg;\n\tconst infoBg = themeExport.infoBg ?? derivedExportColors.infoBg;\n\n\t// Base64 encode session data to avoid escaping issues\n\tconst sessionDataBase64 = Buffer.from(JSON.stringify(sessionData)).toString(\"base64\");\n\n\t// Build the CSS with theme variables injected\n\tconst css = templateCss\n\t\t.replace(\"{{THEME_VARS}}\", themeVars)\n\t\t.replace(\"{{BODY_BG}}\", bodyBg)\n\t\t.replace(\"{{CONTAINER_BG}}\", containerBg)\n\t\t.replace(\"{{INFO_BG}}\", infoBg);\n\n\treturn template\n\t\t.replace(\"{{CSS}}\", css)\n\t\t.replace(\"{{JS}}\", templateJs)\n\t\t.replace(\"{{SESSION_DATA}}\", sessionDataBase64)\n\t\t.replace(\"{{MARKED_JS}}\", markedJs)\n\t\t.replace(\"{{HIGHLIGHT_JS}}\", hljsJs);\n}\n\n/** Tools rendered directly by the HTML template (not pre-rendered via TUI→ANSI→HTML pipeline) */\nconst TEMPLATE_RENDERED_TOOLS = new Set([\"bash\", \"read\", \"write\", \"edit\", \"ls\"]);\n\n/**\n * Pre-render custom tools to HTML using their TUI renderers.\n */\nfunction preRenderCustomTools(\n\tentries: SessionEntry[],\n\ttoolRenderer: ToolHtmlRenderer,\n): Record<string, RenderedToolHtml> {\n\tconst renderedTools: Record<string, RenderedToolHtml> = {};\n\n\tfor (const entry of entries) {\n\t\tif (entry.type !== \"message\") continue;\n\t\tconst msg = entry.message;\n\n\t\t// Find tool calls in assistant messages\n\t\tif (msg.role === \"assistant\" && Array.isArray(msg.content)) {\n\t\t\tfor (const block of msg.content) {\n\t\t\t\tif (block.type === \"toolCall\" && !TEMPLATE_RENDERED_TOOLS.has(block.name)) {\n\t\t\t\t\tconst callHtml = toolRenderer.renderCall(block.id, block.name, block.arguments);\n\t\t\t\t\tif (callHtml) {\n\t\t\t\t\t\trenderedTools[block.id] = { callHtml };\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Find tool results\n\t\tif (msg.role === \"toolResult\" && msg.toolCallId) {\n\t\t\tconst toolName = msg.toolName || \"\";\n\t\t\t// Only render if we have a pre-rendered call OR it's not template-rendered\n\t\t\tconst existing = renderedTools[msg.toolCallId];\n\t\t\tif (existing || !TEMPLATE_RENDERED_TOOLS.has(toolName)) {\n\t\t\t\tconst rendered = toolRenderer.renderResult(\n\t\t\t\t\tmsg.toolCallId,\n\t\t\t\t\ttoolName,\n\t\t\t\t\tmsg.content,\n\t\t\t\t\tmsg.details,\n\t\t\t\t\tmsg.isError || false,\n\t\t\t\t);\n\t\t\t\tif (rendered) {\n\t\t\t\t\trenderedTools[msg.toolCallId] = {\n\t\t\t\t\t\t...existing,\n\t\t\t\t\t\tresultHtmlCollapsed: rendered.collapsed,\n\t\t\t\t\t\tresultHtmlExpanded: rendered.expanded,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn renderedTools;\n}\n\n/**\n * Export session to HTML using SessionManager and AgentState.\n * Used by TUI's /export command.\n */\nexport async function exportSessionToHtml(\n\tsm: SessionManager,\n\tstate?: AgentState,\n\toptions?: ExportOptions | string,\n): Promise<string> {\n\tconst opts: ExportOptions = typeof options === \"string\" ? { outputPath: options } : options || {};\n\n\tconst sessionFile = sm.getSessionFile();\n\tif (!sessionFile) {\n\t\tthrow new Error(\"Cannot export in-memory session to HTML\");\n\t}\n\tif (!existsSync(sessionFile)) {\n\t\tthrow new Error(\"Nothing to export yet - start a conversation first\");\n\t}\n\n\tconst entries = sm.getEntries();\n\n\t// Pre-render custom tools if a tool renderer is provided\n\tlet renderedTools: Record<string, RenderedToolHtml> | undefined;\n\tif (opts.toolRenderer) {\n\t\trenderedTools = preRenderCustomTools(entries, opts.toolRenderer);\n\t\t// Only include if we actually rendered something\n\t\tif (Object.keys(renderedTools).length === 0) {\n\t\t\trenderedTools = undefined;\n\t\t}\n\t}\n\n\tconst sessionData: SessionData = {\n\t\theader: sm.getHeader(),\n\t\tentries,\n\t\tleafId: sm.getLeafId(),\n\t\tsystemPrompt: state?.systemPrompt,\n\t\ttools: state?.tools?.map((t) => ({ name: t.name, description: t.description, parameters: t.parameters })),\n\t\trenderedTools,\n\t};\n\n\tconst html = generateHtml(sessionData, opts.themeName);\n\n\tlet outputPath = opts.outputPath ? normalizePath(opts.outputPath) : undefined;\n\tif (!outputPath) {\n\t\tconst sessionBasename = basename(sessionFile, \".jsonl\");\n\t\toutputPath = `${APP_NAME}-session-${sessionBasename}.html`;\n\t}\n\n\twriteFileSync(outputPath, html, \"utf8\");\n\treturn outputPath;\n}\n\n/**\n * Export session file to HTML (standalone, without AgentState).\n * Used by CLI for exporting arbitrary session files.\n */\nexport async function exportFromFile(inputPath: string, options?: ExportOptions | string): Promise<string> {\n\tconst opts: ExportOptions = typeof options === \"string\" ? { outputPath: options } : options || {};\n\tconst resolvedInputPath = resolvePath(inputPath);\n\n\tif (!existsSync(resolvedInputPath)) {\n\t\tthrow new Error(`File not found: ${resolvedInputPath}`);\n\t}\n\n\tconst sm = SessionManager.open(resolvedInputPath);\n\n\tconst sessionData: SessionData = {\n\t\theader: sm.getHeader(),\n\t\tentries: sm.getEntries(),\n\t\tleafId: sm.getLeafId(),\n\t\tsystemPrompt: undefined,\n\t\ttools: undefined,\n\t};\n\n\tconst html = generateHtml(sessionData, opts.themeName);\n\n\tlet outputPath = opts.outputPath ? normalizePath(opts.outputPath) : undefined;\n\tif (!outputPath) {\n\t\tconst inputBasename = basename(resolvedInputPath, \".jsonl\");\n\t\toutputPath = `${APP_NAME}-session-${inputBasename}.html`;\n\t}\n\n\twriteFileSync(outputPath, html, \"utf8\");\n\treturn outputPath;\n}\n"]}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tool HTML renderer for custom tools in HTML export.
|
|
3
|
-
*
|
|
4
|
-
* Renders custom tool calls and results to HTML by invoking their TUI renderers
|
|
5
|
-
* and converting the ANSI output to HTML.
|
|
6
|
-
*/
|
|
7
|
-
import type { Theme } from "../../modes/interactive/theme/theme.ts";
|
|
8
|
-
import type { ToolDefinition } from "../extensions/types.ts";
|
|
9
|
-
export interface ToolHtmlRendererDeps {
|
|
10
|
-
/** Function to look up tool definition by name */
|
|
11
|
-
getToolDefinition: (name: string) => ToolDefinition | undefined;
|
|
12
|
-
/** Theme for styling */
|
|
13
|
-
theme: Theme;
|
|
14
|
-
/** Working directory for render context */
|
|
15
|
-
cwd: string;
|
|
16
|
-
/** Terminal width for rendering (default: 100) */
|
|
17
|
-
width?: number;
|
|
18
|
-
}
|
|
19
|
-
export interface ToolHtmlRenderer {
|
|
20
|
-
/** Render a tool call to HTML. Returns undefined if tool has no custom renderer. */
|
|
21
|
-
renderCall(toolCallId: string, toolName: string, args: unknown): string | undefined;
|
|
22
|
-
/** Render a tool result to collapsed/expanded HTML. Returns undefined if tool has no custom renderer. */
|
|
23
|
-
renderResult(toolCallId: string, toolName: string, result: Array<{
|
|
24
|
-
type: string;
|
|
25
|
-
text?: string;
|
|
26
|
-
data?: string;
|
|
27
|
-
mimeType?: string;
|
|
28
|
-
}>, details: unknown, isError: boolean): {
|
|
29
|
-
collapsed?: string;
|
|
30
|
-
expanded?: string;
|
|
31
|
-
} | undefined;
|
|
32
|
-
}
|
|
33
|
-
export declare function createToolHtmlRenderer(deps: ToolHtmlRendererDeps): ToolHtmlRenderer;
|
|
34
|
-
//# sourceMappingURL=tool-renderer.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tool-renderer.d.ts","sourceRoot":"","sources":["../../../src/core/export-html/tool-renderer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,wCAAwC,CAAC;AACpE,OAAO,KAAK,EAAE,cAAc,EAAqB,MAAM,wBAAwB,CAAC;AAGhF,MAAM,WAAW,oBAAoB;IACpC,kDAAkD;IAClD,iBAAiB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,cAAc,GAAG,SAAS,CAAC;IAChE,wBAAwB;IACxB,KAAK,EAAE,KAAK,CAAC;IACb,2CAA2C;IAC3C,GAAG,EAAE,MAAM,CAAC;IACZ,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAChC,oFAAoF;IACpF,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;IACpF,yGAAyG;IACzG,YAAY,CACX,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,EAChF,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,GACd;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;CACzD;AAsBD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,oBAAoB,GAAG,gBAAgB,CAmHnF"}
|
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tool HTML renderer for custom tools in HTML export.
|
|
3
|
-
*
|
|
4
|
-
* Renders custom tool calls and results to HTML by invoking their TUI renderers
|
|
5
|
-
* and converting the ANSI output to HTML.
|
|
6
|
-
*/
|
|
7
|
-
import { ansiLinesToHtml } from "./ansi-to-html.js";
|
|
8
|
-
/**
|
|
9
|
-
* Create a tool HTML renderer.
|
|
10
|
-
*
|
|
11
|
-
* The renderer looks up tool definitions and invokes their renderCall/renderResult
|
|
12
|
-
* methods, converting the resulting TUI Component output (ANSI) to HTML.
|
|
13
|
-
*/
|
|
14
|
-
const ANSI_ESCAPE_REGEX = /\x1b\[[\d;]*m/g;
|
|
15
|
-
function isBlankRenderedLine(line) {
|
|
16
|
-
return line.replace(ANSI_ESCAPE_REGEX, "").trim().length === 0;
|
|
17
|
-
}
|
|
18
|
-
function trimRenderedResultLines(lines) {
|
|
19
|
-
let start = 0;
|
|
20
|
-
let end = lines.length;
|
|
21
|
-
while (start < end && isBlankRenderedLine(lines[start]))
|
|
22
|
-
start++;
|
|
23
|
-
while (end > start && isBlankRenderedLine(lines[end - 1]))
|
|
24
|
-
end--;
|
|
25
|
-
return lines.slice(start, end);
|
|
26
|
-
}
|
|
27
|
-
export function createToolHtmlRenderer(deps) {
|
|
28
|
-
const { getToolDefinition, theme, cwd, width = 100 } = deps;
|
|
29
|
-
const renderedCallComponents = new Map();
|
|
30
|
-
const renderedResultComponents = new Map();
|
|
31
|
-
const renderedStates = new Map();
|
|
32
|
-
const renderedArgs = new Map();
|
|
33
|
-
const getState = (toolCallId) => {
|
|
34
|
-
let state = renderedStates.get(toolCallId);
|
|
35
|
-
if (!state) {
|
|
36
|
-
state = {};
|
|
37
|
-
renderedStates.set(toolCallId, state);
|
|
38
|
-
}
|
|
39
|
-
return state;
|
|
40
|
-
};
|
|
41
|
-
const createRenderContext = (toolCallId, lastComponent, expanded, isPartial, isError) => {
|
|
42
|
-
return {
|
|
43
|
-
args: renderedArgs.get(toolCallId),
|
|
44
|
-
toolCallId,
|
|
45
|
-
invalidate: () => { },
|
|
46
|
-
lastComponent,
|
|
47
|
-
state: getState(toolCallId),
|
|
48
|
-
cwd,
|
|
49
|
-
executionStarted: true,
|
|
50
|
-
argsComplete: true,
|
|
51
|
-
isPartial,
|
|
52
|
-
expanded,
|
|
53
|
-
showImages: false,
|
|
54
|
-
isError,
|
|
55
|
-
outputPad: 1,
|
|
56
|
-
};
|
|
57
|
-
};
|
|
58
|
-
return {
|
|
59
|
-
renderCall(toolCallId, toolName, args) {
|
|
60
|
-
try {
|
|
61
|
-
renderedArgs.set(toolCallId, args);
|
|
62
|
-
const toolDef = getToolDefinition(toolName);
|
|
63
|
-
if (!toolDef?.renderCall) {
|
|
64
|
-
return undefined;
|
|
65
|
-
}
|
|
66
|
-
const component = toolDef.renderCall(args, theme, createRenderContext(toolCallId, renderedCallComponents.get(toolCallId), false, true, false));
|
|
67
|
-
renderedCallComponents.set(toolCallId, component);
|
|
68
|
-
const lines = component.render(width);
|
|
69
|
-
return ansiLinesToHtml(lines);
|
|
70
|
-
}
|
|
71
|
-
catch {
|
|
72
|
-
// On error, return undefined so HTML export can fall back to structured result rendering
|
|
73
|
-
return undefined;
|
|
74
|
-
}
|
|
75
|
-
},
|
|
76
|
-
renderResult(toolCallId, toolName, result, details, isError) {
|
|
77
|
-
try {
|
|
78
|
-
const toolDef = getToolDefinition(toolName);
|
|
79
|
-
if (!toolDef?.renderResult) {
|
|
80
|
-
return undefined;
|
|
81
|
-
}
|
|
82
|
-
// Build AgentToolResult from content array
|
|
83
|
-
// Cast content since session storage uses generic object types
|
|
84
|
-
const agentToolResult = {
|
|
85
|
-
content: result,
|
|
86
|
-
details,
|
|
87
|
-
isError,
|
|
88
|
-
};
|
|
89
|
-
// Render collapsed
|
|
90
|
-
const collapsedComponent = toolDef.renderResult(agentToolResult, { expanded: false, isPartial: false }, theme, createRenderContext(toolCallId, renderedResultComponents.get(toolCallId), false, false, isError));
|
|
91
|
-
renderedResultComponents.set(toolCallId, collapsedComponent);
|
|
92
|
-
const collapsed = ansiLinesToHtml(trimRenderedResultLines(collapsedComponent.render(width)));
|
|
93
|
-
// Render expanded
|
|
94
|
-
const expandedComponent = toolDef.renderResult(agentToolResult, { expanded: true, isPartial: false }, theme, createRenderContext(toolCallId, renderedResultComponents.get(toolCallId), true, false, isError));
|
|
95
|
-
renderedResultComponents.set(toolCallId, expandedComponent);
|
|
96
|
-
const expanded = ansiLinesToHtml(trimRenderedResultLines(expandedComponent.render(width)));
|
|
97
|
-
return {
|
|
98
|
-
...(collapsed && collapsed !== expanded ? { collapsed } : {}),
|
|
99
|
-
expanded,
|
|
100
|
-
};
|
|
101
|
-
}
|
|
102
|
-
catch {
|
|
103
|
-
// On error, return undefined so HTML export can fall back to structured result rendering
|
|
104
|
-
return undefined;
|
|
105
|
-
}
|
|
106
|
-
},
|
|
107
|
-
};
|
|
108
|
-
}
|
|
109
|
-
//# sourceMappingURL=tool-renderer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tool-renderer.js","sourceRoot":"","sources":["../../../src/core/export-html/tool-renderer.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Tool HTML renderer for custom tools in HTML export.\n *\n * Renders custom tool calls and results to HTML by invoking their TUI renderers\n * and converting the ANSI output to HTML.\n */\n\nimport type { ImageContent, TextContent } from \"@earendil-works/pi-ai\";\nimport type { Component } from \"@earendil-works/pi-tui\";\nimport type { Theme } from \"../../modes/interactive/theme/theme.ts\";\nimport type { ToolDefinition, ToolRenderContext } from \"../extensions/types.ts\";\nimport { ansiLinesToHtml } from \"./ansi-to-html.ts\";\n\nexport interface ToolHtmlRendererDeps {\n\t/** Function to look up tool definition by name */\n\tgetToolDefinition: (name: string) => ToolDefinition | undefined;\n\t/** Theme for styling */\n\ttheme: Theme;\n\t/** Working directory for render context */\n\tcwd: string;\n\t/** Terminal width for rendering (default: 100) */\n\twidth?: number;\n}\n\nexport interface ToolHtmlRenderer {\n\t/** Render a tool call to HTML. Returns undefined if tool has no custom renderer. */\n\trenderCall(toolCallId: string, toolName: string, args: unknown): string | undefined;\n\t/** Render a tool result to collapsed/expanded HTML. Returns undefined if tool has no custom renderer. */\n\trenderResult(\n\t\ttoolCallId: string,\n\t\ttoolName: string,\n\t\tresult: Array<{ type: string; text?: string; data?: string; mimeType?: string }>,\n\t\tdetails: unknown,\n\t\tisError: boolean,\n\t): { collapsed?: string; expanded?: string } | undefined;\n}\n\n/**\n * Create a tool HTML renderer.\n *\n * The renderer looks up tool definitions and invokes their renderCall/renderResult\n * methods, converting the resulting TUI Component output (ANSI) to HTML.\n */\nconst ANSI_ESCAPE_REGEX = /\\x1b\\[[\\d;]*m/g;\n\nfunction isBlankRenderedLine(line: string): boolean {\n\treturn line.replace(ANSI_ESCAPE_REGEX, \"\").trim().length === 0;\n}\n\nfunction trimRenderedResultLines(lines: string[]): string[] {\n\tlet start = 0;\n\tlet end = lines.length;\n\twhile (start < end && isBlankRenderedLine(lines[start])) start++;\n\twhile (end > start && isBlankRenderedLine(lines[end - 1])) end--;\n\treturn lines.slice(start, end);\n}\n\nexport function createToolHtmlRenderer(deps: ToolHtmlRendererDeps): ToolHtmlRenderer {\n\tconst { getToolDefinition, theme, cwd, width = 100 } = deps;\n\n\tconst renderedCallComponents = new Map<string, Component>();\n\tconst renderedResultComponents = new Map<string, Component>();\n\tconst renderedStates = new Map<string, any>();\n\tconst renderedArgs = new Map<string, unknown>();\n\n\tconst getState = (toolCallId: string): any => {\n\t\tlet state = renderedStates.get(toolCallId);\n\t\tif (!state) {\n\t\t\tstate = {};\n\t\t\trenderedStates.set(toolCallId, state);\n\t\t}\n\t\treturn state;\n\t};\n\n\tconst createRenderContext = (\n\t\ttoolCallId: string,\n\t\tlastComponent: Component | undefined,\n\t\texpanded: boolean,\n\t\tisPartial: boolean,\n\t\tisError: boolean,\n\t): ToolRenderContext => {\n\t\treturn {\n\t\t\targs: renderedArgs.get(toolCallId),\n\t\t\ttoolCallId,\n\t\t\tinvalidate: () => {},\n\t\t\tlastComponent,\n\t\t\tstate: getState(toolCallId),\n\t\t\tcwd,\n\t\t\texecutionStarted: true,\n\t\t\targsComplete: true,\n\t\t\tisPartial,\n\t\t\texpanded,\n\t\t\tshowImages: false,\n\t\t\tisError,\n\t\t\toutputPad: 1,\n\t\t};\n\t};\n\n\treturn {\n\t\trenderCall(toolCallId: string, toolName: string, args: unknown): string | undefined {\n\t\t\ttry {\n\t\t\t\trenderedArgs.set(toolCallId, args);\n\t\t\t\tconst toolDef = getToolDefinition(toolName);\n\t\t\t\tif (!toolDef?.renderCall) {\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\n\t\t\t\tconst component = toolDef.renderCall(\n\t\t\t\t\targs,\n\t\t\t\t\ttheme,\n\t\t\t\t\tcreateRenderContext(toolCallId, renderedCallComponents.get(toolCallId), false, true, false),\n\t\t\t\t);\n\t\t\t\trenderedCallComponents.set(toolCallId, component);\n\t\t\t\tconst lines = component.render(width);\n\t\t\t\treturn ansiLinesToHtml(lines);\n\t\t\t} catch {\n\t\t\t\t// On error, return undefined so HTML export can fall back to structured result rendering\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t},\n\n\t\trenderResult(\n\t\t\ttoolCallId: string,\n\t\t\ttoolName: string,\n\t\t\tresult: Array<{ type: string; text?: string; data?: string; mimeType?: string }>,\n\t\t\tdetails: unknown,\n\t\t\tisError: boolean,\n\t\t): { collapsed?: string; expanded?: string } | undefined {\n\t\t\ttry {\n\t\t\t\tconst toolDef = getToolDefinition(toolName);\n\t\t\t\tif (!toolDef?.renderResult) {\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\n\t\t\t\t// Build AgentToolResult from content array\n\t\t\t\t// Cast content since session storage uses generic object types\n\t\t\t\tconst agentToolResult = {\n\t\t\t\t\tcontent: result as (TextContent | ImageContent)[],\n\t\t\t\t\tdetails,\n\t\t\t\t\tisError,\n\t\t\t\t};\n\n\t\t\t\t// Render collapsed\n\t\t\t\tconst collapsedComponent = toolDef.renderResult(\n\t\t\t\t\tagentToolResult,\n\t\t\t\t\t{ expanded: false, isPartial: false },\n\t\t\t\t\ttheme,\n\t\t\t\t\tcreateRenderContext(toolCallId, renderedResultComponents.get(toolCallId), false, false, isError),\n\t\t\t\t);\n\t\t\t\trenderedResultComponents.set(toolCallId, collapsedComponent);\n\t\t\t\tconst collapsed = ansiLinesToHtml(trimRenderedResultLines(collapsedComponent.render(width)));\n\n\t\t\t\t// Render expanded\n\t\t\t\tconst expandedComponent = toolDef.renderResult(\n\t\t\t\t\tagentToolResult,\n\t\t\t\t\t{ expanded: true, isPartial: false },\n\t\t\t\t\ttheme,\n\t\t\t\t\tcreateRenderContext(toolCallId, renderedResultComponents.get(toolCallId), true, false, isError),\n\t\t\t\t);\n\t\t\t\trenderedResultComponents.set(toolCallId, expandedComponent);\n\t\t\t\tconst expanded = ansiLinesToHtml(trimRenderedResultLines(expandedComponent.render(width)));\n\n\t\t\t\treturn {\n\t\t\t\t\t...(collapsed && collapsed !== expanded ? { collapsed } : {}),\n\t\t\t\t\texpanded,\n\t\t\t\t};\n\t\t\t} catch {\n\t\t\t\t// On error, return undefined so HTML export can fall back to structured result rendering\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t},\n\t};\n}\n"]}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
export declare const EXTENSIONS_COMPAT_URL = "https://e.subimpact.net/extensions/";
|
|
2
|
-
/** Human labels of the unsupported features a piece of extension source uses. */
|
|
3
|
-
export declare function scanExtensionSource(text: string): string[];
|
|
4
|
-
/**
|
|
5
|
-
* Every extension source file of an installed package: the given entry files plus all
|
|
6
|
-
* .ts/.js/.mjs/.cjs files under `dir`, skipping node_modules, capped at `limit` files.
|
|
7
|
-
*/
|
|
8
|
-
export declare function collectExtensionSourceFiles(dir: string, entries: readonly string[], limit?: number): string[];
|
|
9
|
-
/** Scan extension source files, merging findings from all of them. Unreadable and oversized files are skipped. */
|
|
10
|
-
export declare function scanExtensionFiles(paths: string[]): Promise<string[]>;
|
|
11
|
-
/** The findings sentence, for channels that already name the extension (the loader). */
|
|
12
|
-
export declare function formatCompatFindings(findings: string[]): string;
|
|
13
|
-
/** One short warning block naming the unsupported features an extension uses. */
|
|
14
|
-
export declare function formatCompatWarning(name: string, findings: string[]): string;
|
|
15
|
-
/**
|
|
16
|
-
* Labels of the unsupported features a registered tool definition uses: an `exposure` other
|
|
17
|
-
* than `"direct"` (deferred or hidden tools) or a `prepareLoadout` hook.
|
|
18
|
-
*/
|
|
19
|
-
export declare function scanToolDefinition(definition: unknown): string[];
|
|
20
|
-
/**
|
|
21
|
-
* Strip the unsupported surfaces from a registered tool definition so it loads as an ordinary
|
|
22
|
-
* tool: `exposure` is ignored and `prepareLoadout` is never called. Mutates and returns the
|
|
23
|
-
* definition when it carries either field.
|
|
24
|
-
*/
|
|
25
|
-
export declare function sanitizeToolDefinition<T>(definition: T): T;
|
|
26
|
-
//# sourceMappingURL=compat-check.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"compat-check.d.ts","sourceRoot":"","sources":["../../../src/core/extensions/compat-check.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,qBAAqB,wCAAwC,CAAC;AAY3E,iFAAiF;AACjF,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAM1D;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,SAAM,GAAG,MAAM,EAAE,CAiC1G;AAED,kHAAkH;AAClH,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAW3E;AAED,wFAAwF;AACxF,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAK/D;AAED,iFAAiF;AACjF,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAE5E;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,OAAO,GAAG,MAAM,EAAE,CAShE;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,GAAG,CAAC,CAM1D"}
|
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
// e does not support tool search, deferred or hidden tools, or mid-conversation tool changes.
|
|
2
|
-
// Third-party extensions written for older e versions may still use those surfaces, so this
|
|
3
|
-
// scanner detects them in extension source and callers warn the user (without blocking).
|
|
4
|
-
import { existsSync, readdirSync, statSync } from "node:fs";
|
|
5
|
-
import { readFile, stat } from "node:fs/promises";
|
|
6
|
-
import { join } from "node:path";
|
|
7
|
-
export const EXTENSIONS_COMPAT_URL = "https://e.subimpact.net/extensions/";
|
|
8
|
-
const FEATURE_PATTERNS = [
|
|
9
|
-
[/prepareLoadout/, "tool loadout hooks (prepareLoadout)"],
|
|
10
|
-
[/exposure\s*:\s*["'](hidden|model-only)["']/, 'deferred or hidden tools (exposure: "hidden" / "model-only")'],
|
|
11
|
-
[/defer_loading/, "mid-conversation tool changes"],
|
|
12
|
-
[/tool_addition/, "mid-conversation tool changes"],
|
|
13
|
-
[/tool_removal/, "mid-conversation tool changes"],
|
|
14
|
-
[/toolsAdded/, "mid-conversation tool changes"],
|
|
15
|
-
[/toolsRemoved/, "mid-conversation tool changes"],
|
|
16
|
-
];
|
|
17
|
-
/** Human labels of the unsupported features a piece of extension source uses. */
|
|
18
|
-
export function scanExtensionSource(text) {
|
|
19
|
-
const labels = new Set();
|
|
20
|
-
for (const [pattern, label] of FEATURE_PATTERNS) {
|
|
21
|
-
if (pattern.test(text))
|
|
22
|
-
labels.add(label);
|
|
23
|
-
}
|
|
24
|
-
return [...labels];
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Every extension source file of an installed package: the given entry files plus all
|
|
28
|
-
* .ts/.js/.mjs/.cjs files under `dir`, skipping node_modules, capped at `limit` files.
|
|
29
|
-
*/
|
|
30
|
-
export function collectExtensionSourceFiles(dir, entries, limit = 500) {
|
|
31
|
-
const files = [];
|
|
32
|
-
const seen = new Set();
|
|
33
|
-
const visit = (path) => {
|
|
34
|
-
if (files.length >= limit || seen.has(path) || !existsSync(path))
|
|
35
|
-
return;
|
|
36
|
-
seen.add(path);
|
|
37
|
-
files.push(path);
|
|
38
|
-
};
|
|
39
|
-
const walk = (current) => {
|
|
40
|
-
let names;
|
|
41
|
-
try {
|
|
42
|
-
names = readdirSync(current);
|
|
43
|
-
}
|
|
44
|
-
catch {
|
|
45
|
-
return;
|
|
46
|
-
}
|
|
47
|
-
for (const name of names) {
|
|
48
|
-
if (files.length >= limit)
|
|
49
|
-
return;
|
|
50
|
-
if (name === "node_modules")
|
|
51
|
-
continue;
|
|
52
|
-
const full = join(current, name);
|
|
53
|
-
let st;
|
|
54
|
-
try {
|
|
55
|
-
st = statSync(full);
|
|
56
|
-
}
|
|
57
|
-
catch {
|
|
58
|
-
continue;
|
|
59
|
-
}
|
|
60
|
-
if (st.isDirectory())
|
|
61
|
-
walk(full);
|
|
62
|
-
else if (st.isFile() && /\.(ts|js|mjs|cjs)$/.test(name))
|
|
63
|
-
visit(full);
|
|
64
|
-
}
|
|
65
|
-
};
|
|
66
|
-
// Entries first, so the cap can never crowd out the files e actually loads.
|
|
67
|
-
for (const entry of entries)
|
|
68
|
-
visit(entry);
|
|
69
|
-
if (existsSync(dir))
|
|
70
|
-
walk(dir);
|
|
71
|
-
return files;
|
|
72
|
-
}
|
|
73
|
-
/** Scan extension source files, merging findings from all of them. Unreadable and oversized files are skipped. */
|
|
74
|
-
export async function scanExtensionFiles(paths) {
|
|
75
|
-
const labels = new Set();
|
|
76
|
-
for (const path of paths) {
|
|
77
|
-
try {
|
|
78
|
-
const stats = await stat(path);
|
|
79
|
-
if (stats.size > 1024 * 1024)
|
|
80
|
-
continue;
|
|
81
|
-
const text = await readFile(path, "utf8");
|
|
82
|
-
for (const label of scanExtensionSource(text))
|
|
83
|
-
labels.add(label);
|
|
84
|
-
}
|
|
85
|
-
catch { }
|
|
86
|
-
}
|
|
87
|
-
return [...labels];
|
|
88
|
-
}
|
|
89
|
-
/** The findings sentence, for channels that already name the extension (the loader). */
|
|
90
|
-
export function formatCompatFindings(findings) {
|
|
91
|
-
return (`uses features e does not support: ${findings.join("; ")}. ` +
|
|
92
|
-
`e ignores them, so the extension may not work as intended. Why: ${EXTENSIONS_COMPAT_URL}`);
|
|
93
|
-
}
|
|
94
|
-
/** One short warning block naming the unsupported features an extension uses. */
|
|
95
|
-
export function formatCompatWarning(name, findings) {
|
|
96
|
-
return `Warning: extension "${name}" ${formatCompatFindings(findings)}`;
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* Labels of the unsupported features a registered tool definition uses: an `exposure` other
|
|
100
|
-
* than `"direct"` (deferred or hidden tools) or a `prepareLoadout` hook.
|
|
101
|
-
*/
|
|
102
|
-
export function scanToolDefinition(definition) {
|
|
103
|
-
if (typeof definition !== "object" || definition === null)
|
|
104
|
-
return [];
|
|
105
|
-
const fields = definition;
|
|
106
|
-
const labels = new Set();
|
|
107
|
-
if (fields.exposure !== undefined && fields.exposure !== "direct") {
|
|
108
|
-
labels.add('deferred or hidden tools (exposure: "hidden" / "model-only")');
|
|
109
|
-
}
|
|
110
|
-
if ("prepareLoadout" in fields)
|
|
111
|
-
labels.add("tool loadout hooks (prepareLoadout)");
|
|
112
|
-
return [...labels];
|
|
113
|
-
}
|
|
114
|
-
/**
|
|
115
|
-
* Strip the unsupported surfaces from a registered tool definition so it loads as an ordinary
|
|
116
|
-
* tool: `exposure` is ignored and `prepareLoadout` is never called. Mutates and returns the
|
|
117
|
-
* definition when it carries either field.
|
|
118
|
-
*/
|
|
119
|
-
export function sanitizeToolDefinition(definition) {
|
|
120
|
-
if (typeof definition !== "object" || definition === null)
|
|
121
|
-
return definition;
|
|
122
|
-
const fields = definition;
|
|
123
|
-
if ("exposure" in fields)
|
|
124
|
-
delete fields.exposure;
|
|
125
|
-
if ("prepareLoadout" in fields)
|
|
126
|
-
delete fields.prepareLoadout;
|
|
127
|
-
return definition;
|
|
128
|
-
}
|
|
129
|
-
//# sourceMappingURL=compat-check.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"compat-check.js","sourceRoot":"","sources":["../../../src/core/extensions/compat-check.ts"],"names":[],"mappings":"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","sourcesContent":["// e does not support tool search, deferred or hidden tools, or mid-conversation tool changes.\n// Third-party extensions written for older e versions may still use those surfaces, so this\n// scanner detects them in extension source and callers warn the user (without blocking).\n\nimport { existsSync, readdirSync, type Stats, statSync } from \"node:fs\";\nimport { readFile, stat } from \"node:fs/promises\";\nimport { join } from \"node:path\";\n\nexport const EXTENSIONS_COMPAT_URL = \"https://e.subimpact.net/extensions/\";\n\nconst FEATURE_PATTERNS: [RegExp, string][] = [\n\t[/prepareLoadout/, \"tool loadout hooks (prepareLoadout)\"],\n\t[/exposure\\s*:\\s*[\"'](hidden|model-only)[\"']/, 'deferred or hidden tools (exposure: \"hidden\" / \"model-only\")'],\n\t[/defer_loading/, \"mid-conversation tool changes\"],\n\t[/tool_addition/, \"mid-conversation tool changes\"],\n\t[/tool_removal/, \"mid-conversation tool changes\"],\n\t[/toolsAdded/, \"mid-conversation tool changes\"],\n\t[/toolsRemoved/, \"mid-conversation tool changes\"],\n];\n\n/** Human labels of the unsupported features a piece of extension source uses. */\nexport function scanExtensionSource(text: string): string[] {\n\tconst labels = new Set<string>();\n\tfor (const [pattern, label] of FEATURE_PATTERNS) {\n\t\tif (pattern.test(text)) labels.add(label);\n\t}\n\treturn [...labels];\n}\n\n/**\n * Every extension source file of an installed package: the given entry files plus all\n * .ts/.js/.mjs/.cjs files under `dir`, skipping node_modules, capped at `limit` files.\n */\nexport function collectExtensionSourceFiles(dir: string, entries: readonly string[], limit = 500): string[] {\n\tconst files: string[] = [];\n\tconst seen = new Set<string>();\n\tconst visit = (path: string): void => {\n\t\tif (files.length >= limit || seen.has(path) || !existsSync(path)) return;\n\t\tseen.add(path);\n\t\tfiles.push(path);\n\t};\n\tconst walk = (current: string): void => {\n\t\tlet names: string[];\n\t\ttry {\n\t\t\tnames = readdirSync(current);\n\t\t} catch {\n\t\t\treturn;\n\t\t}\n\t\tfor (const name of names) {\n\t\t\tif (files.length >= limit) return;\n\t\t\tif (name === \"node_modules\") continue;\n\t\t\tconst full = join(current, name);\n\t\t\tlet st: Stats;\n\t\t\ttry {\n\t\t\t\tst = statSync(full);\n\t\t\t} catch {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (st.isDirectory()) walk(full);\n\t\t\telse if (st.isFile() && /\\.(ts|js|mjs|cjs)$/.test(name)) visit(full);\n\t\t}\n\t};\n\t// Entries first, so the cap can never crowd out the files e actually loads.\n\tfor (const entry of entries) visit(entry);\n\tif (existsSync(dir)) walk(dir);\n\treturn files;\n}\n\n/** Scan extension source files, merging findings from all of them. Unreadable and oversized files are skipped. */\nexport async function scanExtensionFiles(paths: string[]): Promise<string[]> {\n\tconst labels = new Set<string>();\n\tfor (const path of paths) {\n\t\ttry {\n\t\t\tconst stats = await stat(path);\n\t\t\tif (stats.size > 1024 * 1024) continue;\n\t\t\tconst text = await readFile(path, \"utf8\");\n\t\t\tfor (const label of scanExtensionSource(text)) labels.add(label);\n\t\t} catch {}\n\t}\n\treturn [...labels];\n}\n\n/** The findings sentence, for channels that already name the extension (the loader). */\nexport function formatCompatFindings(findings: string[]): string {\n\treturn (\n\t\t`uses features e does not support: ${findings.join(\"; \")}. ` +\n\t\t`e ignores them, so the extension may not work as intended. Why: ${EXTENSIONS_COMPAT_URL}`\n\t);\n}\n\n/** One short warning block naming the unsupported features an extension uses. */\nexport function formatCompatWarning(name: string, findings: string[]): string {\n\treturn `Warning: extension \"${name}\" ${formatCompatFindings(findings)}`;\n}\n\n/**\n * Labels of the unsupported features a registered tool definition uses: an `exposure` other\n * than `\"direct\"` (deferred or hidden tools) or a `prepareLoadout` hook.\n */\nexport function scanToolDefinition(definition: unknown): string[] {\n\tif (typeof definition !== \"object\" || definition === null) return [];\n\tconst fields = definition as { exposure?: unknown; prepareLoadout?: unknown };\n\tconst labels = new Set<string>();\n\tif (fields.exposure !== undefined && fields.exposure !== \"direct\") {\n\t\tlabels.add('deferred or hidden tools (exposure: \"hidden\" / \"model-only\")');\n\t}\n\tif (\"prepareLoadout\" in fields) labels.add(\"tool loadout hooks (prepareLoadout)\");\n\treturn [...labels];\n}\n\n/**\n * Strip the unsupported surfaces from a registered tool definition so it loads as an ordinary\n * tool: `exposure` is ignored and `prepareLoadout` is never called. Mutates and returns the\n * definition when it carries either field.\n */\nexport function sanitizeToolDefinition<T>(definition: T): T {\n\tif (typeof definition !== \"object\" || definition === null) return definition;\n\tconst fields = definition as Record<string, unknown>;\n\tif (\"exposure\" in fields) delete fields.exposure;\n\tif (\"prepareLoadout\" in fields) delete fields.prepareLoadout;\n\treturn definition;\n}\n"]}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Extension system for lifecycle events and custom tools.
|
|
3
|
-
*/
|
|
4
|
-
export type { SlashCommandInfo, SlashCommandSource } from "../slash-commands.ts";
|
|
5
|
-
export type { SourceInfo } from "../source-info.ts";
|
|
6
|
-
export { createExtensionRuntime, discoverAndLoadExtensions, loadExtensionFromFactory, loadExtensions, } from "./loader.ts";
|
|
7
|
-
export type { ExtensionErrorListener, ForkHandler, NavigateTreeHandler, NewSessionHandler, ShutdownHandler, SwitchSessionHandler, } from "./runner.ts";
|
|
8
|
-
export { ExtensionRunner } from "./runner.ts";
|
|
9
|
-
export type { AfterProviderResponseEvent, AgentActivityOutcome, AgentBeforeSettleEvent, AgentBeforeSettleEventResult, AgentEndEvent, AgentSettledEvent, AgentStartEvent, AgentToolResult, AgentToolUpdateCallback, AppendEntryHandler, AppKeybinding, AutocompleteProviderFactory, BashToolCallEvent, BashToolResultEvent, BeforeAgentStartEvent, BeforeAgentStartEventResult, BeforeProviderHeadersEvent, BeforeProviderRequestEvent, BeforeProviderRequestEventResult, BoundaryContextPreview, BoundaryResult, BoundaryState, BuildSystemPromptOptions, CacheWarmingDecisionEvent, CacheWarmingDecisionEventResult, CompactionEntryDraft, CompactOptions, ContextEditEntryDraft, ContextEvent, ContextEventResult, ContextUsage, ContextWithSystemEvent, CustomEntryDraft, CustomMessageEntryDraft, CustomToolCallEvent, CustomToolResultEvent, EditorFactory, EditToolCallEvent, EditToolResultEvent, EntryRenderer, EntryRenderOptions, ExecOptions, ExecResult, ExecuteToolOptions, Extension, ExtensionActions, ExtensionAPI, ExtensionCommandContext, ExtensionCommandContextActions, ExtensionContext, ExtensionContextActions, ExtensionError, ExtensionEvent, ExtensionFactory, ExtensionFlag, ExtensionHandler, ExtensionMode, ExtensionRuntime, ExtensionShortcut, ExtensionToolContext, ExtensionUIContext, ExtensionUIDialogOptions, ExtensionVirtualModel, ExtensionWidgetOptions, FindToolCallEvent, FindToolResultEvent, GetActiveToolsHandler, GetAllToolsHandler, GetCommandsHandler, GetThinkingLevelHandler, GrepToolCallEvent, GrepToolResultEvent, InlineExtension, InputEvent, InputEventResult, InputSource, KeybindingsManager, LoadExtensionsResult, LsToolCallEvent, LsToolResultEvent, MarkdownTransformContext, MarkdownTransformer, MessageEndEvent, MessageEndEventResult, MessageRenderer, MessageRenderOptions, MessageStartEvent, MessageUpdateEvent, ModelSelectEvent, ModelSelectSource, NormalizedBuildSystemPromptOptions, PowerShellToolCallEvent, PowerShellToolResultEvent, ProjectTrustContext, ProjectTrustEvent, ProjectTrustEventDecision, ProjectTrustEventResult, ProjectTrustHandler, ProviderConfig, ProviderModelConfig, ProviderStreamEvent, ReadToolCallEvent, ReadToolResultEvent, RegisteredCommand, RegisteredTool, ReplacedSessionContext, ResolvedCommand, ResourcesDiscoverEvent, ResourcesDiscoverResult, SendMessageHandler, SendUserMessageHandler, SessionBeforeCompactEvent, SessionBeforeCompactResult, SessionBeforeForkEvent, SessionBeforeForkResult, SessionBeforeSwitchEvent, SessionBeforeSwitchResult, SessionBeforeTreeEvent, SessionBeforeTreeResult, SessionBoundaryDraft, SessionCompactEvent, SessionCompactFailedEvent, SessionEvent, SessionInfoChangedEvent, SessionShutdownEvent, SessionStartEvent, SessionTreeEvent, SetActiveToolsHandler, SetLabelHandler, SetModelHandler, SetThinkingLevelHandler, TerminalInputHandler, ThinkingLevelSelectEvent, ToolAnnotations, ToolCallEvent, ToolCallEventResult, ToolDefinition, ToolExecutionEndEvent, ToolExecutionMode, ToolExecutionStartEvent, ToolExecutionUpdateEvent, ToolInfo, ToolNamespace, ToolRenderResultOptions, ToolResultEvent, ToolResultEventResult, TreePreparation, TurnEndEvent, TurnEndEventResult, TurnStartEvent, UIPromptEndEvent, UIPromptKind, UIPromptStartEvent, UserBashEvent, UserBashEventResult, WidgetPlacement, WorkingIndicatorOptions, WriteToolCallEvent, WriteToolResultEvent, } from "./types.ts";
|
|
10
|
-
export { defineTool, isBashToolResult, isEditToolResult, isFindToolResult, isGrepToolResult, isLsToolResult, isPowerShellToolResult, isReadToolResult, isToolCallEventType, isWriteToolResult, } from "./types.ts";
|
|
11
|
-
export { wrapRegisteredTool, wrapRegisteredTools } from "./wrapper.ts";
|
|
12
|
-
//# sourceMappingURL=index.d.ts.map
|