@skaft/hamr 0.4.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 +314 -0
- package/LICENSE +27 -0
- package/README.md +96 -0
- package/dist/bun/cli.d.ts +3 -0
- package/dist/bun/cli.d.ts.map +1 -0
- package/dist/bun/cli.js +9 -0
- package/dist/bun/cli.js.map +1 -0
- package/dist/bun/register-bedrock.d.ts +2 -0
- package/dist/bun/register-bedrock.d.ts.map +1 -0
- package/dist/bun/register-bedrock.js +4 -0
- package/dist/bun/register-bedrock.js.map +1 -0
- package/dist/bun/restore-sandbox-env.d.ts +17 -0
- package/dist/bun/restore-sandbox-env.d.ts.map +1 -0
- package/dist/bun/restore-sandbox-env.js +36 -0
- package/dist/bun/restore-sandbox-env.js.map +1 -0
- package/dist/cli/args.d.ts +57 -0
- package/dist/cli/args.d.ts.map +1 -0
- package/dist/cli/args.js +379 -0
- package/dist/cli/args.js.map +1 -0
- package/dist/cli/config-selector.d.ts +14 -0
- package/dist/cli/config-selector.d.ts.map +1 -0
- package/dist/cli/config-selector.js +31 -0
- package/dist/cli/config-selector.js.map +1 -0
- package/dist/cli/file-processor.d.ts +15 -0
- package/dist/cli/file-processor.d.ts.map +1 -0
- package/dist/cli/file-processor.js +82 -0
- package/dist/cli/file-processor.js.map +1 -0
- package/dist/cli/initial-message.d.ts +18 -0
- package/dist/cli/initial-message.d.ts.map +1 -0
- package/dist/cli/initial-message.js +22 -0
- package/dist/cli/initial-message.js.map +1 -0
- package/dist/cli/list-models.d.ts +9 -0
- package/dist/cli/list-models.d.ts.map +1 -0
- package/dist/cli/list-models.js +98 -0
- package/dist/cli/list-models.js.map +1 -0
- package/dist/cli/project-trust.d.ts +10 -0
- package/dist/cli/project-trust.d.ts.map +1 -0
- package/dist/cli/project-trust.js +48 -0
- package/dist/cli/project-trust.js.map +1 -0
- package/dist/cli/session-picker.d.ts +9 -0
- package/dist/cli/session-picker.d.ts.map +1 -0
- package/dist/cli/session-picker.js +35 -0
- package/dist/cli/session-picker.js.map +1 -0
- package/dist/cli/startup-ui.d.ts +17 -0
- package/dist/cli/startup-ui.d.ts.map +1 -0
- package/dist/cli/startup-ui.js +135 -0
- package/dist/cli/startup-ui.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +40 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +92 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +449 -0
- package/dist/config.js.map +1 -0
- package/dist/core/agent-session-runtime.d.ts +119 -0
- package/dist/core/agent-session-runtime.d.ts.map +1 -0
- package/dist/core/agent-session-runtime.js +295 -0
- package/dist/core/agent-session-runtime.js.map +1 -0
- package/dist/core/agent-session-services.d.ts +88 -0
- package/dist/core/agent-session-services.d.ts.map +1 -0
- package/dist/core/agent-session-services.js +129 -0
- package/dist/core/agent-session-services.js.map +1 -0
- package/dist/core/agent-session.d.ts +633 -0
- package/dist/core/agent-session.d.ts.map +1 -0
- package/dist/core/agent-session.js +2512 -0
- package/dist/core/agent-session.js.map +1 -0
- package/dist/core/auth-guidance.d.ts +5 -0
- package/dist/core/auth-guidance.d.ts.map +1 -0
- package/dist/core/auth-guidance.js +21 -0
- package/dist/core/auth-guidance.js.map +1 -0
- package/dist/core/auth-storage.d.ts +150 -0
- package/dist/core/auth-storage.d.ts.map +1 -0
- package/dist/core/auth-storage.js +446 -0
- package/dist/core/auth-storage.js.map +1 -0
- package/dist/core/bash-executor.d.ts +32 -0
- package/dist/core/bash-executor.d.ts.map +1 -0
- package/dist/core/bash-executor.js +111 -0
- package/dist/core/bash-executor.js.map +1 -0
- package/dist/core/compaction/branch-summarization.d.ts +92 -0
- package/dist/core/compaction/branch-summarization.d.ts.map +1 -0
- package/dist/core/compaction/branch-summarization.js +249 -0
- package/dist/core/compaction/branch-summarization.js.map +1 -0
- package/dist/core/compaction/compaction.d.ts +121 -0
- package/dist/core/compaction/compaction.d.ts.map +1 -0
- package/dist/core/compaction/compaction.js +619 -0
- package/dist/core/compaction/compaction.js.map +1 -0
- package/dist/core/compaction/index.d.ts +7 -0
- package/dist/core/compaction/index.d.ts.map +1 -0
- package/dist/core/compaction/index.js +7 -0
- package/dist/core/compaction/index.js.map +1 -0
- package/dist/core/compaction/utils.d.ts +38 -0
- package/dist/core/compaction/utils.d.ts.map +1 -0
- package/dist/core/compaction/utils.js +153 -0
- package/dist/core/compaction/utils.js.map +1 -0
- package/dist/core/defaults.d.ts +3 -0
- package/dist/core/defaults.d.ts.map +1 -0
- package/dist/core/defaults.js +2 -0
- package/dist/core/defaults.js.map +1 -0
- package/dist/core/diagnostics.d.ts +15 -0
- package/dist/core/diagnostics.d.ts.map +1 -0
- package/dist/core/diagnostics.js +2 -0
- package/dist/core/diagnostics.js.map +1 -0
- package/dist/core/event-bus.d.ts +9 -0
- package/dist/core/event-bus.d.ts.map +1 -0
- package/dist/core/event-bus.js +25 -0
- package/dist/core/event-bus.js.map +1 -0
- package/dist/core/exec.d.ts +29 -0
- package/dist/core/exec.d.ts.map +1 -0
- package/dist/core/exec.js +75 -0
- package/dist/core/exec.js.map +1 -0
- package/dist/core/experimental.d.ts +2 -0
- package/dist/core/experimental.d.ts.map +1 -0
- package/dist/core/experimental.js +4 -0
- package/dist/core/experimental.js.map +1 -0
- package/dist/core/export-html/ansi-to-html.d.ts +22 -0
- package/dist/core/export-html/ansi-to-html.d.ts.map +1 -0
- package/dist/core/export-html/ansi-to-html.js +249 -0
- package/dist/core/export-html/ansi-to-html.js.map +1 -0
- package/dist/core/export-html/index.d.ts +37 -0
- package/dist/core/export-html/index.d.ts.map +1 -0
- package/dist/core/export-html/index.js +226 -0
- package/dist/core/export-html/index.js.map +1 -0
- package/dist/core/export-html/template.css +1066 -0
- package/dist/core/export-html/template.html +55 -0
- package/dist/core/export-html/template.js +1864 -0
- package/dist/core/export-html/tool-renderer.d.ts +34 -0
- package/dist/core/export-html/tool-renderer.d.ts.map +1 -0
- package/dist/core/export-html/tool-renderer.js +108 -0
- package/dist/core/export-html/tool-renderer.js.map +1 -0
- package/dist/core/export-html/vendor/highlight.min.js +1213 -0
- package/dist/core/export-html/vendor/marked.min.js +78 -0
- package/dist/core/extensions/index.d.ts +12 -0
- package/dist/core/extensions/index.d.ts.map +1 -0
- package/dist/core/extensions/index.js +9 -0
- package/dist/core/extensions/index.js.map +1 -0
- package/dist/core/extensions/loader.d.ts +24 -0
- package/dist/core/extensions/loader.d.ts.map +1 -0
- package/dist/core/extensions/loader.js +481 -0
- package/dist/core/extensions/loader.js.map +1 -0
- package/dist/core/extensions/runner.d.ts +166 -0
- package/dist/core/extensions/runner.d.ts.map +1 -0
- package/dist/core/extensions/runner.js +877 -0
- package/dist/core/extensions/runner.js.map +1 -0
- package/dist/core/extensions/types.d.ts +1201 -0
- package/dist/core/extensions/types.d.ts.map +1 -0
- package/dist/core/extensions/types.js +45 -0
- package/dist/core/extensions/types.js.map +1 -0
- package/dist/core/extensions/wrapper.d.ts +20 -0
- package/dist/core/extensions/wrapper.d.ts.map +1 -0
- package/dist/core/extensions/wrapper.js +22 -0
- package/dist/core/extensions/wrapper.js.map +1 -0
- package/dist/core/footer-data-provider.d.ts +55 -0
- package/dist/core/footer-data-provider.d.ts.map +1 -0
- package/dist/core/footer-data-provider.js +348 -0
- package/dist/core/footer-data-provider.js.map +1 -0
- package/dist/core/http-dispatcher.d.ts +22 -0
- package/dist/core/http-dispatcher.d.ts.map +1 -0
- package/dist/core/http-dispatcher.js +64 -0
- package/dist/core/http-dispatcher.js.map +1 -0
- package/dist/core/index.d.ts +13 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +13 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/keybindings.d.ts +353 -0
- package/dist/core/keybindings.d.ts.map +1 -0
- package/dist/core/keybindings.js +294 -0
- package/dist/core/keybindings.js.map +1 -0
- package/dist/core/messages.d.ts +77 -0
- package/dist/core/messages.d.ts.map +1 -0
- package/dist/core/messages.js +123 -0
- package/dist/core/messages.js.map +1 -0
- package/dist/core/model-registry.d.ts +151 -0
- package/dist/core/model-registry.d.ts.map +1 -0
- package/dist/core/model-registry.js +734 -0
- package/dist/core/model-registry.js.map +1 -0
- package/dist/core/model-resolver.d.ts +111 -0
- package/dist/core/model-resolver.d.ts.map +1 -0
- package/dist/core/model-resolver.js +533 -0
- package/dist/core/model-resolver.js.map +1 -0
- package/dist/core/output-guard.d.ts +7 -0
- package/dist/core/output-guard.d.ts.map +1 -0
- package/dist/core/output-guard.js +89 -0
- package/dist/core/output-guard.js.map +1 -0
- package/dist/core/package-manager.d.ts +208 -0
- package/dist/core/package-manager.d.ts.map +1 -0
- package/dist/core/package-manager.js +2061 -0
- package/dist/core/package-manager.js.map +1 -0
- package/dist/core/project-trust.d.ts +15 -0
- package/dist/core/project-trust.d.ts.map +1 -0
- package/dist/core/project-trust.js +58 -0
- package/dist/core/project-trust.js.map +1 -0
- package/dist/core/prompt-templates.d.ts +53 -0
- package/dist/core/prompt-templates.d.ts.map +1 -0
- package/dist/core/prompt-templates.js +236 -0
- package/dist/core/prompt-templates.js.map +1 -0
- package/dist/core/provider-attribution.d.ts +4 -0
- package/dist/core/provider-attribution.d.ts.map +1 -0
- package/dist/core/provider-attribution.js +80 -0
- package/dist/core/provider-attribution.js.map +1 -0
- package/dist/core/provider-display-names.d.ts +2 -0
- package/dist/core/provider-display-names.d.ts.map +1 -0
- package/dist/core/provider-display-names.js +36 -0
- package/dist/core/provider-display-names.js.map +1 -0
- package/dist/core/resolve-config-value.d.ts +30 -0
- package/dist/core/resolve-config-value.d.ts.map +1 -0
- package/dist/core/resolve-config-value.js +245 -0
- package/dist/core/resolve-config-value.js.map +1 -0
- package/dist/core/resource-loader.d.ts +205 -0
- package/dist/core/resource-loader.d.ts.map +1 -0
- package/dist/core/resource-loader.js +769 -0
- package/dist/core/resource-loader.js.map +1 -0
- package/dist/core/sdk.d.ts +109 -0
- package/dist/core/sdk.d.ts.map +1 -0
- package/dist/core/sdk.js +267 -0
- package/dist/core/sdk.js.map +1 -0
- package/dist/core/session-cwd.d.ts +19 -0
- package/dist/core/session-cwd.d.ts.map +1 -0
- package/dist/core/session-cwd.js +37 -0
- package/dist/core/session-cwd.js.map +1 -0
- package/dist/core/session-manager.d.ts +332 -0
- package/dist/core/session-manager.d.ts.map +1 -0
- package/dist/core/session-manager.js +1222 -0
- package/dist/core/session-manager.js.map +1 -0
- package/dist/core/settings-manager.d.ts +288 -0
- package/dist/core/settings-manager.d.ts.map +1 -0
- package/dist/core/settings-manager.js +862 -0
- package/dist/core/settings-manager.js.map +1 -0
- package/dist/core/skills.d.ts +60 -0
- package/dist/core/skills.d.ts.map +1 -0
- package/dist/core/skills.js +386 -0
- package/dist/core/skills.js.map +1 -0
- package/dist/core/slash-commands.d.ts +14 -0
- package/dist/core/slash-commands.d.ts.map +1 -0
- package/dist/core/slash-commands.js +26 -0
- package/dist/core/slash-commands.js.map +1 -0
- package/dist/core/source-info.d.ts +18 -0
- package/dist/core/source-info.d.ts.map +1 -0
- package/dist/core/source-info.js +19 -0
- package/dist/core/source-info.js.map +1 -0
- package/dist/core/system-prompt.d.ts +28 -0
- package/dist/core/system-prompt.d.ts.map +1 -0
- package/dist/core/system-prompt.js +134 -0
- package/dist/core/system-prompt.js.map +1 -0
- package/dist/core/telemetry.d.ts +3 -0
- package/dist/core/telemetry.d.ts.map +1 -0
- package/dist/core/telemetry.js +9 -0
- package/dist/core/telemetry.js.map +1 -0
- package/dist/core/timings.d.ts +8 -0
- package/dist/core/timings.d.ts.map +1 -0
- package/dist/core/timings.js +31 -0
- package/dist/core/timings.js.map +1 -0
- package/dist/core/tools/bash.d.ts +68 -0
- package/dist/core/tools/bash.d.ts.map +1 -0
- package/dist/core/tools/bash.js +373 -0
- package/dist/core/tools/bash.js.map +1 -0
- package/dist/core/tools/edit-diff.d.ts +87 -0
- package/dist/core/tools/edit-diff.d.ts.map +1 -0
- package/dist/core/tools/edit-diff.js +345 -0
- package/dist/core/tools/edit-diff.js.map +1 -0
- package/dist/core/tools/edit.d.ts +51 -0
- package/dist/core/tools/edit.d.ts.map +1 -0
- package/dist/core/tools/edit.js +289 -0
- package/dist/core/tools/edit.js.map +1 -0
- package/dist/core/tools/file-mutation-queue.d.ts +6 -0
- package/dist/core/tools/file-mutation-queue.d.ts.map +1 -0
- package/dist/core/tools/file-mutation-queue.js +52 -0
- package/dist/core/tools/file-mutation-queue.js.map +1 -0
- package/dist/core/tools/find.d.ts +35 -0
- package/dist/core/tools/find.d.ts.map +1 -0
- package/dist/core/tools/find.js +297 -0
- package/dist/core/tools/find.js.map +1 -0
- package/dist/core/tools/grep.d.ts +37 -0
- package/dist/core/tools/grep.d.ts.map +1 -0
- package/dist/core/tools/grep.js +301 -0
- package/dist/core/tools/grep.js.map +1 -0
- package/dist/core/tools/index.d.ts +40 -0
- package/dist/core/tools/index.d.ts.map +1 -0
- package/dist/core/tools/index.js +112 -0
- package/dist/core/tools/index.js.map +1 -0
- package/dist/core/tools/ls.d.ts +37 -0
- package/dist/core/tools/ls.d.ts.map +1 -0
- package/dist/core/tools/ls.js +167 -0
- package/dist/core/tools/ls.js.map +1 -0
- package/dist/core/tools/output-accumulator.d.ts +52 -0
- package/dist/core/tools/output-accumulator.d.ts.map +1 -0
- package/dist/core/tools/output-accumulator.js +178 -0
- package/dist/core/tools/output-accumulator.js.map +1 -0
- package/dist/core/tools/path-utils.d.ts +10 -0
- package/dist/core/tools/path-utils.d.ts.map +1 -0
- package/dist/core/tools/path-utils.js +99 -0
- package/dist/core/tools/path-utils.js.map +1 -0
- package/dist/core/tools/read.d.ts +35 -0
- package/dist/core/tools/read.d.ts.map +1 -0
- package/dist/core/tools/read.js +286 -0
- package/dist/core/tools/read.js.map +1 -0
- package/dist/core/tools/render-utils.d.ts +24 -0
- package/dist/core/tools/render-utils.d.ts.map +1 -0
- package/dist/core/tools/render-utils.js +65 -0
- package/dist/core/tools/render-utils.js.map +1 -0
- package/dist/core/tools/tool-definition-wrapper.d.ts +14 -0
- package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -0
- package/dist/core/tools/tool-definition-wrapper.js +34 -0
- package/dist/core/tools/tool-definition-wrapper.js.map +1 -0
- package/dist/core/tools/truncate.d.ts +70 -0
- package/dist/core/tools/truncate.d.ts.map +1 -0
- package/dist/core/tools/truncate.js +215 -0
- package/dist/core/tools/truncate.js.map +1 -0
- package/dist/core/tools/write.d.ts +26 -0
- package/dist/core/tools/write.d.ts.map +1 -0
- package/dist/core/tools/write.js +196 -0
- package/dist/core/tools/write.js.map +1 -0
- package/dist/core/trust-manager.d.ts +36 -0
- package/dist/core/trust-manager.d.ts.map +1 -0
- package/dist/core/trust-manager.js +201 -0
- package/dist/core/trust-manager.js.map +1 -0
- package/dist/hamr/extensions/context.d.ts +14 -0
- package/dist/hamr/extensions/context.d.ts.map +1 -0
- package/dist/hamr/extensions/context.js +106 -0
- package/dist/hamr/extensions/context.js.map +1 -0
- package/dist/hamr/extensions/index.d.ts +13 -0
- package/dist/hamr/extensions/index.d.ts.map +1 -0
- package/dist/hamr/extensions/index.js +25 -0
- package/dist/hamr/extensions/index.js.map +1 -0
- package/dist/hamr/extensions/memory.d.ts +67 -0
- package/dist/hamr/extensions/memory.d.ts.map +1 -0
- package/dist/hamr/extensions/memory.js +405 -0
- package/dist/hamr/extensions/memory.js.map +1 -0
- package/dist/hamr/extensions/providers.d.ts +8 -0
- package/dist/hamr/extensions/providers.d.ts.map +1 -0
- package/dist/hamr/extensions/providers.js +81 -0
- package/dist/hamr/extensions/providers.js.map +1 -0
- package/dist/hamr/extensions/read-loop-guard.d.ts +3 -0
- package/dist/hamr/extensions/read-loop-guard.d.ts.map +1 -0
- package/dist/hamr/extensions/read-loop-guard.js +26 -0
- package/dist/hamr/extensions/read-loop-guard.js.map +1 -0
- package/dist/hamr/extensions/subagents.d.ts +15 -0
- package/dist/hamr/extensions/subagents.d.ts.map +1 -0
- package/dist/hamr/extensions/subagents.js +264 -0
- package/dist/hamr/extensions/subagents.js.map +1 -0
- package/dist/hamr/handoff/HandoffManager.d.ts +46 -0
- package/dist/hamr/handoff/HandoffManager.d.ts.map +1 -0
- package/dist/hamr/handoff/HandoffManager.js +147 -0
- package/dist/hamr/handoff/HandoffManager.js.map +1 -0
- package/dist/hamr/helpers.d.ts +8 -0
- package/dist/hamr/helpers.d.ts.map +1 -0
- package/dist/hamr/helpers.js +35 -0
- package/dist/hamr/helpers.js.map +1 -0
- package/dist/hamr/memory/HolographicMemory.d.ts +138 -0
- package/dist/hamr/memory/HolographicMemory.d.ts.map +1 -0
- package/dist/hamr/memory/HolographicMemory.js +525 -0
- package/dist/hamr/memory/HolographicMemory.js.map +1 -0
- package/dist/hamr/memory/fts-marks.d.ts +2 -0
- package/dist/hamr/memory/fts-marks.d.ts.map +1 -0
- package/dist/hamr/memory/fts-marks.js +4 -0
- package/dist/hamr/memory/fts-marks.js.map +1 -0
- package/dist/hamr/memory.d.ts +16 -0
- package/dist/hamr/memory.d.ts.map +1 -0
- package/dist/hamr/memory.js +223 -0
- package/dist/hamr/memory.js.map +1 -0
- package/dist/hamr/persistent-editor.d.ts +3 -0
- package/dist/hamr/persistent-editor.d.ts.map +1 -0
- package/dist/hamr/persistent-editor.js +103 -0
- package/dist/hamr/persistent-editor.js.map +1 -0
- package/dist/hamr/providers/parsers/deepseek.d.ts +28 -0
- package/dist/hamr/providers/parsers/deepseek.d.ts.map +1 -0
- package/dist/hamr/providers/parsers/deepseek.js +150 -0
- package/dist/hamr/providers/parsers/deepseek.js.map +1 -0
- package/dist/hamr/providers/parsers/generic.d.ts +19 -0
- package/dist/hamr/providers/parsers/generic.d.ts.map +1 -0
- package/dist/hamr/providers/parsers/generic.js +263 -0
- package/dist/hamr/providers/parsers/generic.js.map +1 -0
- package/dist/hamr/providers/parsers/glm-step.d.ts +28 -0
- package/dist/hamr/providers/parsers/glm-step.d.ts.map +1 -0
- package/dist/hamr/providers/parsers/glm-step.js +289 -0
- package/dist/hamr/providers/parsers/glm-step.js.map +1 -0
- package/dist/hamr/providers/parsers/hermes.d.ts +21 -0
- package/dist/hamr/providers/parsers/hermes.d.ts.map +1 -0
- package/dist/hamr/providers/parsers/hermes.js +114 -0
- package/dist/hamr/providers/parsers/hermes.js.map +1 -0
- package/dist/hamr/providers/parsers/index.d.ts +15 -0
- package/dist/hamr/providers/parsers/index.d.ts.map +1 -0
- package/dist/hamr/providers/parsers/index.js +66 -0
- package/dist/hamr/providers/parsers/index.js.map +1 -0
- package/dist/hamr/providers/parsers/json-in-tags.d.ts +100 -0
- package/dist/hamr/providers/parsers/json-in-tags.d.ts.map +1 -0
- package/dist/hamr/providers/parsers/json-in-tags.js +395 -0
- package/dist/hamr/providers/parsers/json-in-tags.js.map +1 -0
- package/dist/hamr/providers/parsers/llama3-json.d.ts +24 -0
- package/dist/hamr/providers/parsers/llama3-json.d.ts.map +1 -0
- package/dist/hamr/providers/parsers/llama3-json.js +157 -0
- package/dist/hamr/providers/parsers/llama3-json.js.map +1 -0
- package/dist/hamr/providers/parsers/mistral.d.ts +22 -0
- package/dist/hamr/providers/parsers/mistral.d.ts.map +1 -0
- package/dist/hamr/providers/parsers/mistral.js +157 -0
- package/dist/hamr/providers/parsers/mistral.js.map +1 -0
- package/dist/hamr/providers/parsers/pythonic.d.ts +30 -0
- package/dist/hamr/providers/parsers/pythonic.d.ts.map +1 -0
- package/dist/hamr/providers/parsers/pythonic.js +243 -0
- package/dist/hamr/providers/parsers/pythonic.js.map +1 -0
- package/dist/hamr/providers/parsers/qwen3-xml.d.ts +19 -0
- package/dist/hamr/providers/parsers/qwen3-xml.d.ts.map +1 -0
- package/dist/hamr/providers/parsers/qwen3-xml.js +107 -0
- package/dist/hamr/providers/parsers/qwen3-xml.js.map +1 -0
- package/dist/hamr/providers/parsers/registry.d.ts +13 -0
- package/dist/hamr/providers/parsers/registry.d.ts.map +1 -0
- package/dist/hamr/providers/parsers/registry.js +51 -0
- package/dist/hamr/providers/parsers/registry.js.map +1 -0
- package/dist/hamr/providers/parsers/types.d.ts +83 -0
- package/dist/hamr/providers/parsers/types.d.ts.map +1 -0
- package/dist/hamr/providers/parsers/types.js +93 -0
- package/dist/hamr/providers/parsers/types.js.map +1 -0
- package/dist/hamr/providers/parsers/utils.d.ts +106 -0
- package/dist/hamr/providers/parsers/utils.d.ts.map +1 -0
- package/dist/hamr/providers/parsers/utils.js +477 -0
- package/dist/hamr/providers/parsers/utils.js.map +1 -0
- package/dist/hamr/providers/parsers/xlam.d.ts +23 -0
- package/dist/hamr/providers/parsers/xlam.d.ts.map +1 -0
- package/dist/hamr/providers/parsers/xlam.js +119 -0
- package/dist/hamr/providers/parsers/xlam.js.map +1 -0
- package/dist/hamr/providers/relay-provider.d.ts +34 -0
- package/dist/hamr/providers/relay-provider.d.ts.map +1 -0
- package/dist/hamr/providers/relay-provider.js +228 -0
- package/dist/hamr/providers/relay-provider.js.map +1 -0
- package/dist/hamr/providers/repair/json-repair.d.ts +30 -0
- package/dist/hamr/providers/repair/json-repair.d.ts.map +1 -0
- package/dist/hamr/providers/repair/json-repair.js +315 -0
- package/dist/hamr/providers/repair/json-repair.js.map +1 -0
- package/dist/hamr/providers/repair/reasoning-sanitizer.d.ts +28 -0
- package/dist/hamr/providers/repair/reasoning-sanitizer.d.ts.map +1 -0
- package/dist/hamr/providers/repair/reasoning-sanitizer.js +115 -0
- package/dist/hamr/providers/repair/reasoning-sanitizer.js.map +1 -0
- package/dist/hamr/providers/repair/xml-repair.d.ts +31 -0
- package/dist/hamr/providers/repair/xml-repair.d.ts.map +1 -0
- package/dist/hamr/providers/repair/xml-repair.js +295 -0
- package/dist/hamr/providers/repair/xml-repair.js.map +1 -0
- package/dist/hamr/providers/tool-calls.d.ts +7 -0
- package/dist/hamr/providers/tool-calls.d.ts.map +1 -0
- package/dist/hamr/providers/tool-calls.js +148 -0
- package/dist/hamr/providers/tool-calls.js.map +1 -0
- package/dist/hamr/providers/types.d.ts +17 -0
- package/dist/hamr/providers/types.d.ts.map +1 -0
- package/dist/hamr/providers/types.js +2 -0
- package/dist/hamr/providers/types.js.map +1 -0
- package/dist/hamr/repair.d.ts +8 -0
- package/dist/hamr/repair.d.ts.map +1 -0
- package/dist/hamr/repair.js +85 -0
- package/dist/hamr/repair.js.map +1 -0
- package/dist/hamr/shimmer.d.ts +2 -0
- package/dist/hamr/shimmer.d.ts.map +1 -0
- package/dist/hamr/shimmer.js +9 -0
- package/dist/hamr/shimmer.js.map +1 -0
- package/dist/hamr/startup-config.d.ts +78 -0
- package/dist/hamr/startup-config.d.ts.map +1 -0
- package/dist/hamr/startup-config.js +344 -0
- package/dist/hamr/startup-config.js.map +1 -0
- package/dist/hamr/store/sqlite-loader.d.ts +26 -0
- package/dist/hamr/store/sqlite-loader.d.ts.map +1 -0
- package/dist/hamr/store/sqlite-loader.js +36 -0
- package/dist/hamr/store/sqlite-loader.js.map +1 -0
- package/dist/index.d.ts +32 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +45 -0
- package/dist/index.js.map +1 -0
- package/dist/main.d.ts +12 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +739 -0
- package/dist/main.js.map +1 -0
- package/dist/migrations.d.ts +33 -0
- package/dist/migrations.d.ts.map +1 -0
- package/dist/migrations.js +281 -0
- package/dist/migrations.js.map +1 -0
- package/dist/modes/index.d.ts +9 -0
- package/dist/modes/index.d.ts.map +1 -0
- package/dist/modes/index.js +8 -0
- package/dist/modes/index.js.map +1 -0
- package/dist/modes/interactive/components/armin.d.ts +34 -0
- package/dist/modes/interactive/components/armin.d.ts.map +1 -0
- package/dist/modes/interactive/components/armin.js +329 -0
- package/dist/modes/interactive/components/armin.js.map +1 -0
- package/dist/modes/interactive/components/assistant-message.d.ts +28 -0
- package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/assistant-message.js +172 -0
- package/dist/modes/interactive/components/assistant-message.js.map +1 -0
- package/dist/modes/interactive/components/bash-execution.d.ts +35 -0
- package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -0
- package/dist/modes/interactive/components/bash-execution.js +171 -0
- package/dist/modes/interactive/components/bash-execution.js.map +1 -0
- package/dist/modes/interactive/components/bordered-loader.d.ts +16 -0
- package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -0
- package/dist/modes/interactive/components/bordered-loader.js +51 -0
- package/dist/modes/interactive/components/bordered-loader.js.map +1 -0
- package/dist/modes/interactive/components/branch-summary-message.d.ts +16 -0
- package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/branch-summary-message.js +42 -0
- package/dist/modes/interactive/components/branch-summary-message.js.map +1 -0
- package/dist/modes/interactive/components/compaction-summary-message.d.ts +16 -0
- package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/compaction-summary-message.js +43 -0
- package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -0
- package/dist/modes/interactive/components/config-selector.d.ts +71 -0
- package/dist/modes/interactive/components/config-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/config-selector.js +496 -0
- package/dist/modes/interactive/components/config-selector.js.map +1 -0
- package/dist/modes/interactive/components/countdown-timer.d.ts +14 -0
- package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -0
- package/dist/modes/interactive/components/countdown-timer.js +28 -0
- package/dist/modes/interactive/components/countdown-timer.js.map +1 -0
- package/dist/modes/interactive/components/custom-editor.d.ts +21 -0
- package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -0
- package/dist/modes/interactive/components/custom-editor.js +63 -0
- package/dist/modes/interactive/components/custom-editor.js.map +1 -0
- package/dist/modes/interactive/components/custom-message.d.ts +20 -0
- package/dist/modes/interactive/components/custom-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/custom-message.js +73 -0
- package/dist/modes/interactive/components/custom-message.js.map +1 -0
- package/dist/modes/interactive/components/daxnuts.d.ts +23 -0
- package/dist/modes/interactive/components/daxnuts.d.ts.map +1 -0
- package/dist/modes/interactive/components/daxnuts.js +138 -0
- package/dist/modes/interactive/components/daxnuts.js.map +1 -0
- package/dist/modes/interactive/components/diff.d.ts +24 -0
- package/dist/modes/interactive/components/diff.d.ts.map +1 -0
- package/dist/modes/interactive/components/diff.js +172 -0
- package/dist/modes/interactive/components/diff.js.map +1 -0
- package/dist/modes/interactive/components/dynamic-border.d.ts +15 -0
- package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -0
- package/dist/modes/interactive/components/dynamic-border.js +20 -0
- package/dist/modes/interactive/components/dynamic-border.js.map +1 -0
- package/dist/modes/interactive/components/extension-editor.d.ts +20 -0
- package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -0
- package/dist/modes/interactive/components/extension-editor.js +114 -0
- package/dist/modes/interactive/components/extension-editor.js.map +1 -0
- package/dist/modes/interactive/components/extension-input.d.ts +23 -0
- package/dist/modes/interactive/components/extension-input.d.ts.map +1 -0
- package/dist/modes/interactive/components/extension-input.js +55 -0
- package/dist/modes/interactive/components/extension-input.js.map +1 -0
- package/dist/modes/interactive/components/extension-selector.d.ts +26 -0
- package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/extension-selector.js +75 -0
- package/dist/modes/interactive/components/extension-selector.js.map +1 -0
- package/dist/modes/interactive/components/first-time-setup.d.ts +24 -0
- package/dist/modes/interactive/components/first-time-setup.d.ts.map +1 -0
- package/dist/modes/interactive/components/first-time-setup.js +104 -0
- package/dist/modes/interactive/components/first-time-setup.js.map +1 -0
- package/dist/modes/interactive/components/footer.d.ts +38 -0
- package/dist/modes/interactive/components/footer.d.ts.map +1 -0
- package/dist/modes/interactive/components/footer.js +314 -0
- package/dist/modes/interactive/components/footer.js.map +1 -0
- package/dist/modes/interactive/components/index.d.ts +34 -0
- package/dist/modes/interactive/components/index.d.ts.map +1 -0
- package/dist/modes/interactive/components/index.js +35 -0
- package/dist/modes/interactive/components/index.js.map +1 -0
- package/dist/modes/interactive/components/keybinding-hints.d.ts +13 -0
- package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -0
- package/dist/modes/interactive/components/keybinding-hints.js +36 -0
- package/dist/modes/interactive/components/keybinding-hints.js.map +1 -0
- package/dist/modes/interactive/components/login-dialog.d.ts +52 -0
- package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -0
- package/dist/modes/interactive/components/login-dialog.js +175 -0
- package/dist/modes/interactive/components/login-dialog.js.map +1 -0
- package/dist/modes/interactive/components/model-selector.d.ts +47 -0
- package/dist/modes/interactive/components/model-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/model-selector.js +268 -0
- package/dist/modes/interactive/components/model-selector.js.map +1 -0
- package/dist/modes/interactive/components/oauth-selector.d.ts +31 -0
- package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/oauth-selector.js +156 -0
- package/dist/modes/interactive/components/oauth-selector.js.map +1 -0
- package/dist/modes/interactive/components/scoped-models-selector.d.ts +42 -0
- package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/scoped-models-selector.js +286 -0
- package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -0
- package/dist/modes/interactive/components/session-selector-search.d.ts +23 -0
- package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -0
- package/dist/modes/interactive/components/session-selector-search.js +155 -0
- package/dist/modes/interactive/components/session-selector-search.js.map +1 -0
- package/dist/modes/interactive/components/session-selector.d.ts +95 -0
- package/dist/modes/interactive/components/session-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/session-selector.js +832 -0
- package/dist/modes/interactive/components/session-selector.js.map +1 -0
- package/dist/modes/interactive/components/settings-selector.d.ts +73 -0
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/settings-selector.js +410 -0
- package/dist/modes/interactive/components/settings-selector.js.map +1 -0
- package/dist/modes/interactive/components/show-images-selector.d.ts +10 -0
- package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/show-images-selector.js +38 -0
- package/dist/modes/interactive/components/show-images-selector.js.map +1 -0
- package/dist/modes/interactive/components/skill-invocation-message.d.ts +17 -0
- package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/skill-invocation-message.js +46 -0
- package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -0
- package/dist/modes/interactive/components/theme-selector.d.ts +11 -0
- package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/theme-selector.js +48 -0
- package/dist/modes/interactive/components/theme-selector.js.map +1 -0
- package/dist/modes/interactive/components/thinking-selector.d.ts +11 -0
- package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/thinking-selector.js +50 -0
- package/dist/modes/interactive/components/thinking-selector.js.map +1 -0
- package/dist/modes/interactive/components/tool-execution.d.ts +66 -0
- package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -0
- package/dist/modes/interactive/components/tool-execution.js +315 -0
- package/dist/modes/interactive/components/tool-execution.js.map +1 -0
- package/dist/modes/interactive/components/tree-selector.d.ts +89 -0
- package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/tree-selector.js +1186 -0
- package/dist/modes/interactive/components/tree-selector.js.map +1 -0
- package/dist/modes/interactive/components/trust-selector.d.ts +23 -0
- package/dist/modes/interactive/components/trust-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/trust-selector.js +85 -0
- package/dist/modes/interactive/components/trust-selector.js.map +1 -0
- package/dist/modes/interactive/components/user-message-selector.d.ts +30 -0
- package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/user-message-selector.js +111 -0
- package/dist/modes/interactive/components/user-message-selector.js.map +1 -0
- package/dist/modes/interactive/components/user-message.d.ts +15 -0
- package/dist/modes/interactive/components/user-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/user-message.js +61 -0
- package/dist/modes/interactive/components/user-message.js.map +1 -0
- package/dist/modes/interactive/components/visual-truncate.d.ts +24 -0
- package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -0
- package/dist/modes/interactive/components/visual-truncate.js +33 -0
- package/dist/modes/interactive/components/visual-truncate.js.map +1 -0
- package/dist/modes/interactive/interactive-mode.d.ts +416 -0
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-mode.js +4958 -0
- package/dist/modes/interactive/interactive-mode.js.map +1 -0
- package/dist/modes/interactive/interrupt-routing.d.ts +23 -0
- package/dist/modes/interactive/interrupt-routing.d.ts.map +1 -0
- package/dist/modes/interactive/interrupt-routing.js +10 -0
- package/dist/modes/interactive/interrupt-routing.js.map +1 -0
- package/dist/modes/interactive/theme/dark.json +112 -0
- package/dist/modes/interactive/theme/default.json +102 -0
- package/dist/modes/interactive/theme/hamr.json +121 -0
- package/dist/modes/interactive/theme/kawaii.json +120 -0
- package/dist/modes/interactive/theme/light.json +111 -0
- package/dist/modes/interactive/theme/pinkOut.json +116 -0
- package/dist/modes/interactive/theme/theme-schema.json +428 -0
- package/dist/modes/interactive/theme/theme.d.ts +196 -0
- package/dist/modes/interactive/theme/theme.d.ts.map +1 -0
- package/dist/modes/interactive/theme/theme.js +1461 -0
- package/dist/modes/interactive/theme/theme.js.map +1 -0
- package/dist/modes/print-mode.d.ts +28 -0
- package/dist/modes/print-mode.d.ts.map +1 -0
- package/dist/modes/print-mode.js +132 -0
- package/dist/modes/print-mode.js.map +1 -0
- package/dist/modes/rpc/jsonl.d.ts +17 -0
- package/dist/modes/rpc/jsonl.d.ts.map +1 -0
- package/dist/modes/rpc/jsonl.js +49 -0
- package/dist/modes/rpc/jsonl.js.map +1 -0
- package/dist/modes/rpc/rpc-client.d.ts +227 -0
- package/dist/modes/rpc/rpc-client.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-client.js +466 -0
- package/dist/modes/rpc/rpc-client.js.map +1 -0
- package/dist/modes/rpc/rpc-mode.d.ts +20 -0
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-mode.js +613 -0
- package/dist/modes/rpc/rpc-mode.js.map +1 -0
- package/dist/modes/rpc/rpc-types.d.ts +420 -0
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-types.js +8 -0
- package/dist/modes/rpc/rpc-types.js.map +1 -0
- package/dist/package-manager-cli.d.ts +8 -0
- package/dist/package-manager-cli.d.ts.map +1 -0
- package/dist/package-manager-cli.js +616 -0
- package/dist/package-manager-cli.js.map +1 -0
- package/dist/skills/frontend-design.md +22 -0
- package/dist/skills/using-hamr.md +38 -0
- package/dist/utils/ansi.d.ts +2 -0
- package/dist/utils/ansi.d.ts.map +1 -0
- package/dist/utils/ansi.js +52 -0
- package/dist/utils/ansi.js.map +1 -0
- package/dist/utils/changelog.d.ts +22 -0
- package/dist/utils/changelog.d.ts.map +1 -0
- package/dist/utils/changelog.js +165 -0
- package/dist/utils/changelog.js.map +1 -0
- package/dist/utils/child-process.d.ts +18 -0
- package/dist/utils/child-process.d.ts.map +1 -0
- package/dist/utils/child-process.js +104 -0
- package/dist/utils/child-process.js.map +1 -0
- package/dist/utils/clipboard-image.d.ts +11 -0
- package/dist/utils/clipboard-image.d.ts.map +1 -0
- package/dist/utils/clipboard-image.js +245 -0
- package/dist/utils/clipboard-image.js.map +1 -0
- package/dist/utils/clipboard-native.d.ts +10 -0
- package/dist/utils/clipboard-native.d.ts.map +1 -0
- package/dist/utils/clipboard-native.js +20 -0
- package/dist/utils/clipboard-native.js.map +1 -0
- package/dist/utils/clipboard.d.ts +2 -0
- package/dist/utils/clipboard.d.ts.map +1 -0
- package/dist/utils/clipboard.js +117 -0
- package/dist/utils/clipboard.js.map +1 -0
- package/dist/utils/deprecation.d.ts +4 -0
- package/dist/utils/deprecation.d.ts.map +1 -0
- package/dist/utils/deprecation.js +13 -0
- package/dist/utils/deprecation.js.map +1 -0
- package/dist/utils/exif-orientation.d.ts +5 -0
- package/dist/utils/exif-orientation.d.ts.map +1 -0
- package/dist/utils/exif-orientation.js +158 -0
- package/dist/utils/exif-orientation.js.map +1 -0
- package/dist/utils/frontmatter.d.ts +8 -0
- package/dist/utils/frontmatter.d.ts.map +1 -0
- package/dist/utils/frontmatter.js +26 -0
- package/dist/utils/frontmatter.js.map +1 -0
- package/dist/utils/fs-watch.d.ts +5 -0
- package/dist/utils/fs-watch.d.ts.map +1 -0
- package/dist/utils/fs-watch.js +25 -0
- package/dist/utils/fs-watch.js.map +1 -0
- package/dist/utils/git.d.ts +26 -0
- package/dist/utils/git.d.ts.map +1 -0
- package/dist/utils/git.js +195 -0
- package/dist/utils/git.js.map +1 -0
- package/dist/utils/hamr-user-agent.d.ts +2 -0
- package/dist/utils/hamr-user-agent.d.ts.map +1 -0
- package/dist/utils/hamr-user-agent.js +5 -0
- package/dist/utils/hamr-user-agent.js.map +1 -0
- package/dist/utils/html.d.ts +7 -0
- package/dist/utils/html.d.ts.map +1 -0
- package/dist/utils/html.js +40 -0
- package/dist/utils/html.js.map +1 -0
- package/dist/utils/image-convert.d.ts +9 -0
- package/dist/utils/image-convert.d.ts.map +1 -0
- package/dist/utils/image-convert.js +39 -0
- package/dist/utils/image-convert.js.map +1 -0
- package/dist/utils/image-resize-core.d.ts +30 -0
- package/dist/utils/image-resize-core.d.ts.map +1 -0
- package/dist/utils/image-resize-core.js +124 -0
- package/dist/utils/image-resize-core.js.map +1 -0
- package/dist/utils/image-resize-worker.d.ts +2 -0
- package/dist/utils/image-resize-worker.d.ts.map +1 -0
- package/dist/utils/image-resize-worker.js +31 -0
- package/dist/utils/image-resize-worker.js.map +1 -0
- package/dist/utils/image-resize.d.ts +16 -0
- package/dist/utils/image-resize.d.ts.map +1 -0
- package/dist/utils/image-resize.js +97 -0
- package/dist/utils/image-resize.js.map +1 -0
- package/dist/utils/json.d.ts +3 -0
- package/dist/utils/json.d.ts.map +1 -0
- package/dist/utils/json.js +7 -0
- package/dist/utils/json.js.map +1 -0
- package/dist/utils/mime.d.ts +3 -0
- package/dist/utils/mime.d.ts.map +1 -0
- package/dist/utils/mime.js +69 -0
- package/dist/utils/mime.js.map +1 -0
- package/dist/utils/open-browser.d.ts +9 -0
- package/dist/utils/open-browser.d.ts.map +1 -0
- package/dist/utils/open-browser.js +22 -0
- package/dist/utils/open-browser.js.map +1 -0
- package/dist/utils/paths.d.ts +31 -0
- package/dist/utils/paths.d.ts.map +1 -0
- package/dist/utils/paths.js +91 -0
- package/dist/utils/paths.js.map +1 -0
- package/dist/utils/photon.d.ts +21 -0
- package/dist/utils/photon.d.ts.map +1 -0
- package/dist/utils/photon.js +121 -0
- package/dist/utils/photon.js.map +1 -0
- package/dist/utils/shell.d.ts +30 -0
- package/dist/utils/shell.d.ts.map +1 -0
- package/dist/utils/shell.js +195 -0
- package/dist/utils/shell.js.map +1 -0
- package/dist/utils/sleep.d.ts +5 -0
- package/dist/utils/sleep.d.ts.map +1 -0
- package/dist/utils/sleep.js +17 -0
- package/dist/utils/sleep.js.map +1 -0
- package/dist/utils/syntax-highlight.d.ts +12 -0
- package/dist/utils/syntax-highlight.d.ts.map +1 -0
- package/dist/utils/syntax-highlight.js +118 -0
- package/dist/utils/syntax-highlight.js.map +1 -0
- package/dist/utils/tools-manager.d.ts +3 -0
- package/dist/utils/tools-manager.d.ts.map +1 -0
- package/dist/utils/tools-manager.js +328 -0
- package/dist/utils/tools-manager.js.map +1 -0
- package/dist/utils/version-check.d.ts +20 -0
- package/dist/utils/version-check.d.ts.map +1 -0
- package/dist/utils/version-check.js +92 -0
- package/dist/utils/version-check.js.map +1 -0
- package/dist/utils/windows-self-update.d.ts +3 -0
- package/dist/utils/windows-self-update.d.ts.map +1 -0
- package/dist/utils/windows-self-update.js +77 -0
- package/dist/utils/windows-self-update.js.map +1 -0
- package/docs/compaction.md +394 -0
- package/docs/containerization.md +111 -0
- package/docs/custom-provider.md +736 -0
- package/docs/development.md +71 -0
- package/docs/docs.json +156 -0
- package/docs/extensions.md +2662 -0
- package/docs/images/doom-extension.png +0 -0
- package/docs/images/exy.png +0 -0
- package/docs/images/interactive-mode.png +0 -0
- package/docs/images/tree-view.png +0 -0
- package/docs/index.md +82 -0
- package/docs/json.md +82 -0
- package/docs/keybindings.md +197 -0
- package/docs/models.md +492 -0
- package/docs/packages.md +228 -0
- package/docs/prompt-templates.md +95 -0
- package/docs/providers.md +274 -0
- package/docs/quickstart.md +165 -0
- package/docs/rpc.md +1408 -0
- package/docs/sdk.md +1142 -0
- package/docs/security.md +59 -0
- package/docs/session-format.md +412 -0
- package/docs/sessions.md +145 -0
- package/docs/settings.md +308 -0
- package/docs/shell-aliases.md +13 -0
- package/docs/skills.md +231 -0
- package/docs/terminal-setup.md +148 -0
- package/docs/termux.md +127 -0
- package/docs/themes.md +295 -0
- package/docs/tmux.md +63 -0
- package/docs/tui.md +927 -0
- package/docs/usage.md +305 -0
- package/docs/visual-parity-handoff.md +110 -0
- package/docs/windows.md +17 -0
- package/examples/README.md +25 -0
- package/examples/extensions/README.md +211 -0
- package/examples/extensions/auto-commit-on-exit.ts +49 -0
- package/examples/extensions/bash-spawn-hook.ts +30 -0
- package/examples/extensions/bookmark.ts +50 -0
- package/examples/extensions/border-status-editor.ts +150 -0
- package/examples/extensions/built-in-tool-renderer.ts +249 -0
- package/examples/extensions/claude-rules.ts +86 -0
- package/examples/extensions/commands.ts +72 -0
- package/examples/extensions/confirm-destructive.ts +59 -0
- package/examples/extensions/custom-compaction.ts +127 -0
- package/examples/extensions/custom-footer.ts +64 -0
- package/examples/extensions/custom-header.ts +73 -0
- package/examples/extensions/custom-provider-anthropic/index.ts +604 -0
- package/examples/extensions/custom-provider-anthropic/package-lock.json +24 -0
- package/examples/extensions/custom-provider-anthropic/package.json +19 -0
- package/examples/extensions/custom-provider-gitlab-duo/index.ts +400 -0
- package/examples/extensions/custom-provider-gitlab-duo/package.json +16 -0
- package/examples/extensions/custom-provider-gitlab-duo/test.ts +82 -0
- package/examples/extensions/dirty-repo-guard.ts +56 -0
- package/examples/extensions/doom-overlay/README.md +46 -0
- package/examples/extensions/doom-overlay/doom/build/doom.js +21 -0
- package/examples/extensions/doom-overlay/doom/build/doom.wasm +0 -0
- package/examples/extensions/doom-overlay/doom/build.sh +152 -0
- package/examples/extensions/doom-overlay/doom/doomgeneric_pi.c +72 -0
- package/examples/extensions/doom-overlay/doom-component.ts +132 -0
- package/examples/extensions/doom-overlay/doom-engine.ts +173 -0
- package/examples/extensions/doom-overlay/doom-keys.ts +104 -0
- package/examples/extensions/doom-overlay/index.ts +74 -0
- package/examples/extensions/doom-overlay/wad-finder.ts +51 -0
- package/examples/extensions/dynamic-resources/SKILL.md +8 -0
- package/examples/extensions/dynamic-resources/dynamic.json +79 -0
- package/examples/extensions/dynamic-resources/dynamic.md +5 -0
- package/examples/extensions/dynamic-resources/index.ts +15 -0
- package/examples/extensions/dynamic-tools.ts +74 -0
- package/examples/extensions/event-bus.ts +43 -0
- package/examples/extensions/file-trigger.ts +41 -0
- package/examples/extensions/git-checkpoint.ts +53 -0
- package/examples/extensions/git-merge-and-resolve.ts +115 -0
- package/examples/extensions/github-issue-autocomplete.ts +185 -0
- package/examples/extensions/gondolin/index.ts +531 -0
- package/examples/extensions/gondolin/package-lock.json +185 -0
- package/examples/extensions/gondolin/package.json +19 -0
- package/examples/extensions/hamr-browser/README.md +79 -0
- package/examples/extensions/hamr-browser/bun.lock +235 -0
- package/examples/extensions/hamr-browser/index.ts +264 -0
- package/examples/extensions/hamr-browser/package.json +25 -0
- package/examples/extensions/hamr-browser/skills/hamr-browser.md +25 -0
- package/examples/extensions/hamr-browser/src/browser-controller.ts +206 -0
- package/examples/extensions/hamr-browser/src/deps.ts +39 -0
- package/examples/extensions/hamr-browser/src/paths.ts +25 -0
- package/examples/extensions/hamr-browser/src/shims.d.ts +1 -0
- package/examples/extensions/hamr-browser/src/snapshot.ts +84 -0
- package/examples/extensions/hamr-browser/src/targeting.ts +79 -0
- package/examples/extensions/hamr-browser/test/deps.test.ts +23 -0
- package/examples/extensions/hamr-browser/test/paths.test.ts +25 -0
- package/examples/extensions/hamr-browser/test/targeting.test.ts +27 -0
- package/examples/extensions/hamr-browser/tsconfig.json +10 -0
- package/examples/extensions/handoff.ts +191 -0
- package/examples/extensions/hello.ts +26 -0
- package/examples/extensions/hidden-thinking-label.ts +53 -0
- package/examples/extensions/inline-bash.ts +94 -0
- package/examples/extensions/input-transform-streaming.ts +39 -0
- package/examples/extensions/input-transform.ts +43 -0
- package/examples/extensions/interactive-shell.ts +196 -0
- package/examples/extensions/mac-system-theme.ts +47 -0
- package/examples/extensions/message-renderer.ts +59 -0
- package/examples/extensions/minimal-mode.ts +426 -0
- package/examples/extensions/modal-editor.ts +85 -0
- package/examples/extensions/model-status.ts +31 -0
- package/examples/extensions/notify.ts +55 -0
- package/examples/extensions/overlay-qa-tests.ts +1450 -0
- package/examples/extensions/overlay-test.ts +153 -0
- package/examples/extensions/permission-gate.ts +34 -0
- package/examples/extensions/pirate.ts +47 -0
- package/examples/extensions/plan-mode/README.md +65 -0
- package/examples/extensions/plan-mode/index.ts +340 -0
- package/examples/extensions/plan-mode/utils.ts +168 -0
- package/examples/extensions/preset.ts +430 -0
- package/examples/extensions/project-trust.ts +64 -0
- package/examples/extensions/prompt-customizer.ts +97 -0
- package/examples/extensions/protected-paths.ts +30 -0
- package/examples/extensions/provider-payload.ts +18 -0
- package/examples/extensions/qna.ts +122 -0
- package/examples/extensions/question.ts +285 -0
- package/examples/extensions/questionnaire.ts +448 -0
- package/examples/extensions/rainbow-editor.ts +88 -0
- package/examples/extensions/read-loop-guard.ts +32 -0
- package/examples/extensions/reload-runtime.ts +37 -0
- package/examples/extensions/rpc-demo.ts +118 -0
- package/examples/extensions/sandbox/index.ts +321 -0
- package/examples/extensions/sandbox/package-lock.json +92 -0
- package/examples/extensions/sandbox/package.json +19 -0
- package/examples/extensions/send-user-message.ts +97 -0
- package/examples/extensions/session-name.ts +27 -0
- package/examples/extensions/shutdown-command.ts +63 -0
- package/examples/extensions/snake.ts +343 -0
- package/examples/extensions/space-invaders.ts +560 -0
- package/examples/extensions/ssh.ts +220 -0
- package/examples/extensions/status-line.ts +32 -0
- package/examples/extensions/structured-output.ts +65 -0
- package/examples/extensions/subagent/README.md +175 -0
- package/examples/extensions/subagent/agents/planner.md +37 -0
- package/examples/extensions/subagent/agents/reviewer.md +35 -0
- package/examples/extensions/subagent/agents/scout.md +50 -0
- package/examples/extensions/subagent/agents/worker.md +24 -0
- package/examples/extensions/subagent/agents.ts +126 -0
- package/examples/extensions/subagent/index.ts +1009 -0
- package/examples/extensions/subagent/prompts/implement-and-review.md +10 -0
- package/examples/extensions/subagent/prompts/implement.md +10 -0
- package/examples/extensions/subagent/prompts/scout-and-plan.md +9 -0
- package/examples/extensions/summarize.ts +206 -0
- package/examples/extensions/system-prompt-header.ts +17 -0
- package/examples/extensions/tic-tac-toe.ts +1008 -0
- package/examples/extensions/timed-confirm.ts +70 -0
- package/examples/extensions/titlebar-spinner.ts +58 -0
- package/examples/extensions/todo.ts +297 -0
- package/examples/extensions/tool-override.ts +144 -0
- package/examples/extensions/tools.ts +146 -0
- package/examples/extensions/trigger-compact.ts +50 -0
- package/examples/extensions/truncated-tool.ts +195 -0
- package/examples/extensions/widget-placement.ts +9 -0
- package/examples/extensions/with-deps/index.ts +32 -0
- package/examples/extensions/with-deps/package-lock.json +31 -0
- package/examples/extensions/with-deps/package.json +22 -0
- package/examples/extensions/working-indicator.ts +123 -0
- package/examples/extensions/working-message-test.ts +25 -0
- package/examples/rpc-extension-ui.ts +632 -0
- package/examples/sdk/01-minimal.ts +26 -0
- package/examples/sdk/02-custom-model.ts +53 -0
- package/examples/sdk/03-custom-prompt.ts +75 -0
- package/examples/sdk/04-skills.ts +55 -0
- package/examples/sdk/05-tools.ts +48 -0
- package/examples/sdk/06-extensions.ts +99 -0
- package/examples/sdk/07-context-files.ts +47 -0
- package/examples/sdk/08-prompt-templates.ts +51 -0
- package/examples/sdk/09-api-keys-and-oauth.ts +52 -0
- package/examples/sdk/10-settings.ts +53 -0
- package/examples/sdk/11-sessions.ts +52 -0
- package/examples/sdk/12-full-control.ts +77 -0
- package/examples/sdk/13-session-runtime.ts +67 -0
- package/examples/sdk/README.md +144 -0
- package/node_modules/@hamr/agent/dist/agent-loop.d.ts +24 -0
- package/node_modules/@hamr/agent/dist/agent-loop.d.ts.map +1 -0
- package/node_modules/@hamr/agent/dist/agent-loop.js +510 -0
- package/node_modules/@hamr/agent/dist/agent-loop.js.map +1 -0
- package/node_modules/@hamr/agent/dist/agent.d.ts +125 -0
- package/node_modules/@hamr/agent/dist/agent.d.ts.map +1 -0
- package/node_modules/@hamr/agent/dist/agent.js +378 -0
- package/node_modules/@hamr/agent/dist/agent.js.map +1 -0
- package/node_modules/@hamr/agent/dist/harness/agent-harness.d.ts +95 -0
- package/node_modules/@hamr/agent/dist/harness/agent-harness.d.ts.map +1 -0
- package/node_modules/@hamr/agent/dist/harness/agent-harness.js +950 -0
- package/node_modules/@hamr/agent/dist/harness/agent-harness.js.map +1 -0
- package/node_modules/@hamr/agent/dist/harness/compaction/branch-summarization.d.ts +53 -0
- package/node_modules/@hamr/agent/dist/harness/compaction/branch-summarization.d.ts.map +1 -0
- package/node_modules/@hamr/agent/dist/harness/compaction/branch-summarization.js +175 -0
- package/node_modules/@hamr/agent/dist/harness/compaction/branch-summarization.js.map +1 -0
- package/node_modules/@hamr/agent/dist/harness/compaction/compaction.d.ts +95 -0
- package/node_modules/@hamr/agent/dist/harness/compaction/compaction.d.ts.map +1 -0
- package/node_modules/@hamr/agent/dist/harness/compaction/compaction.js +528 -0
- package/node_modules/@hamr/agent/dist/harness/compaction/compaction.js.map +1 -0
- package/node_modules/@hamr/agent/dist/harness/compaction/utils.d.ts +25 -0
- package/node_modules/@hamr/agent/dist/harness/compaction/utils.d.ts.map +1 -0
- package/node_modules/@hamr/agent/dist/harness/compaction/utils.js +131 -0
- package/node_modules/@hamr/agent/dist/harness/compaction/utils.js.map +1 -0
- package/node_modules/@hamr/agent/dist/harness/env/nodejs.d.ts +51 -0
- package/node_modules/@hamr/agent/dist/harness/env/nodejs.d.ts.map +1 -0
- package/node_modules/@hamr/agent/dist/harness/env/nodejs.js +483 -0
- package/node_modules/@hamr/agent/dist/harness/env/nodejs.js.map +1 -0
- package/node_modules/@hamr/agent/dist/harness/messages.d.ts +51 -0
- package/node_modules/@hamr/agent/dist/harness/messages.d.ts.map +1 -0
- package/node_modules/@hamr/agent/dist/harness/messages.js +102 -0
- package/node_modules/@hamr/agent/dist/harness/messages.js.map +1 -0
- package/node_modules/@hamr/agent/dist/harness/prompt-templates.d.ts +48 -0
- package/node_modules/@hamr/agent/dist/harness/prompt-templates.d.ts.map +1 -0
- package/node_modules/@hamr/agent/dist/harness/prompt-templates.js +230 -0
- package/node_modules/@hamr/agent/dist/harness/prompt-templates.js.map +1 -0
- package/node_modules/@hamr/agent/dist/harness/session/jsonl-repo.d.ts +26 -0
- package/node_modules/@hamr/agent/dist/harness/session/jsonl-repo.d.ts.map +1 -0
- package/node_modules/@hamr/agent/dist/harness/session/jsonl-repo.js +95 -0
- package/node_modules/@hamr/agent/dist/harness/session/jsonl-repo.js.map +1 -0
- package/node_modules/@hamr/agent/dist/harness/session/jsonl-storage.d.ts +33 -0
- package/node_modules/@hamr/agent/dist/harness/session/jsonl-storage.d.ts.map +1 -0
- package/node_modules/@hamr/agent/dist/harness/session/jsonl-storage.js +224 -0
- package/node_modules/@hamr/agent/dist/harness/session/jsonl-storage.js.map +1 -0
- package/node_modules/@hamr/agent/dist/harness/session/memory-repo.d.ts +18 -0
- package/node_modules/@hamr/agent/dist/harness/session/memory-repo.d.ts.map +1 -0
- package/node_modules/@hamr/agent/dist/harness/session/memory-repo.js +44 -0
- package/node_modules/@hamr/agent/dist/harness/session/memory-repo.js.map +1 -0
- package/node_modules/@hamr/agent/dist/harness/session/memory-storage.d.ts +25 -0
- package/node_modules/@hamr/agent/dist/harness/session/memory-storage.d.ts.map +1 -0
- package/node_modules/@hamr/agent/dist/harness/session/memory-storage.js +109 -0
- package/node_modules/@hamr/agent/dist/harness/session/memory-storage.js.map +1 -0
- package/node_modules/@hamr/agent/dist/harness/session/repo-utils.d.ts +11 -0
- package/node_modules/@hamr/agent/dist/harness/session/repo-utils.d.ts.map +1 -0
- package/node_modules/@hamr/agent/dist/harness/session/repo-utils.js +39 -0
- package/node_modules/@hamr/agent/dist/harness/session/repo-utils.js.map +1 -0
- package/node_modules/@hamr/agent/dist/harness/session/session.d.ts +33 -0
- package/node_modules/@hamr/agent/dist/harness/session/session.d.ts.map +1 -0
- package/node_modules/@hamr/agent/dist/harness/session/session.js +209 -0
- package/node_modules/@hamr/agent/dist/harness/session/session.js.map +1 -0
- package/node_modules/@hamr/agent/dist/harness/session/uuid.d.ts +2 -0
- package/node_modules/@hamr/agent/dist/harness/session/uuid.d.ts.map +1 -0
- package/node_modules/@hamr/agent/dist/harness/session/uuid.js +50 -0
- package/node_modules/@hamr/agent/dist/harness/session/uuid.js.map +1 -0
- package/node_modules/@hamr/agent/dist/harness/skills.d.ts +44 -0
- package/node_modules/@hamr/agent/dist/harness/skills.d.ts.map +1 -0
- package/node_modules/@hamr/agent/dist/harness/skills.js +311 -0
- package/node_modules/@hamr/agent/dist/harness/skills.js.map +1 -0
- package/node_modules/@hamr/agent/dist/harness/system-prompt.d.ts +3 -0
- package/node_modules/@hamr/agent/dist/harness/system-prompt.d.ts.map +1 -0
- package/node_modules/@hamr/agent/dist/harness/system-prompt.js +30 -0
- package/node_modules/@hamr/agent/dist/harness/system-prompt.js.map +1 -0
- package/node_modules/@hamr/agent/dist/harness/types.d.ts +615 -0
- package/node_modules/@hamr/agent/dist/harness/types.d.ts.map +1 -0
- package/node_modules/@hamr/agent/dist/harness/types.js +81 -0
- package/node_modules/@hamr/agent/dist/harness/types.js.map +1 -0
- package/node_modules/@hamr/agent/dist/harness/utils/shell-output.d.ts +14 -0
- package/node_modules/@hamr/agent/dist/harness/utils/shell-output.d.ts.map +1 -0
- package/node_modules/@hamr/agent/dist/harness/utils/shell-output.js +126 -0
- package/node_modules/@hamr/agent/dist/harness/utils/shell-output.js.map +1 -0
- package/node_modules/@hamr/agent/dist/harness/utils/truncate.d.ts +70 -0
- package/node_modules/@hamr/agent/dist/harness/utils/truncate.d.ts.map +1 -0
- package/node_modules/@hamr/agent/dist/harness/utils/truncate.js +290 -0
- package/node_modules/@hamr/agent/dist/harness/utils/truncate.js.map +1 -0
- package/node_modules/@hamr/agent/dist/index.d.ts +20 -0
- package/node_modules/@hamr/agent/dist/index.d.ts.map +1 -0
- package/node_modules/@hamr/agent/dist/index.js +25 -0
- package/node_modules/@hamr/agent/dist/index.js.map +1 -0
- package/node_modules/@hamr/agent/dist/node.d.ts +3 -0
- package/node_modules/@hamr/agent/dist/node.d.ts.map +1 -0
- package/node_modules/@hamr/agent/dist/node.js +3 -0
- package/node_modules/@hamr/agent/dist/node.js.map +1 -0
- package/node_modules/@hamr/agent/dist/proxy.d.ts +69 -0
- package/node_modules/@hamr/agent/dist/proxy.d.ts.map +1 -0
- package/node_modules/@hamr/agent/dist/proxy.js +278 -0
- package/node_modules/@hamr/agent/dist/proxy.js.map +1 -0
- package/node_modules/@hamr/agent/dist/types.d.ts +405 -0
- package/node_modules/@hamr/agent/dist/types.d.ts.map +1 -0
- package/node_modules/@hamr/agent/dist/types.js +2 -0
- package/node_modules/@hamr/agent/dist/types.js.map +1 -0
- package/node_modules/@hamr/agent/package.json +51 -0
- package/node_modules/@hamr/ai/dist/api-registry.d.ts +20 -0
- package/node_modules/@hamr/ai/dist/api-registry.d.ts.map +1 -0
- package/node_modules/@hamr/ai/dist/api-registry.js +44 -0
- package/node_modules/@hamr/ai/dist/api-registry.js.map +1 -0
- package/node_modules/@hamr/ai/dist/bedrock-provider.d.ts +5 -0
- package/node_modules/@hamr/ai/dist/bedrock-provider.d.ts.map +1 -0
- package/node_modules/@hamr/ai/dist/bedrock-provider.js +6 -0
- package/node_modules/@hamr/ai/dist/bedrock-provider.js.map +1 -0
- package/node_modules/@hamr/ai/dist/cli.d.ts +3 -0
- package/node_modules/@hamr/ai/dist/cli.d.ts.map +1 -0
- package/node_modules/@hamr/ai/dist/cli.js +130 -0
- package/node_modules/@hamr/ai/dist/cli.js.map +1 -0
- package/node_modules/@hamr/ai/dist/env-api-keys.d.ts +20 -0
- package/node_modules/@hamr/ai/dist/env-api-keys.d.ts.map +1 -0
- package/node_modules/@hamr/ai/dist/env-api-keys.js +163 -0
- package/node_modules/@hamr/ai/dist/env-api-keys.js.map +1 -0
- package/node_modules/@hamr/ai/dist/image-models.d.ts +10 -0
- package/node_modules/@hamr/ai/dist/image-models.d.ts.map +1 -0
- package/node_modules/@hamr/ai/dist/image-models.generated.d.ts +515 -0
- package/node_modules/@hamr/ai/dist/image-models.generated.d.ts.map +1 -0
- package/node_modules/@hamr/ai/dist/image-models.generated.js +517 -0
- package/node_modules/@hamr/ai/dist/image-models.generated.js.map +1 -0
- package/node_modules/@hamr/ai/dist/image-models.js +23 -0
- package/node_modules/@hamr/ai/dist/image-models.js.map +1 -0
- package/node_modules/@hamr/ai/dist/images-api-registry.d.ts +14 -0
- package/node_modules/@hamr/ai/dist/images-api-registry.d.ts.map +1 -0
- package/node_modules/@hamr/ai/dist/images-api-registry.js +22 -0
- package/node_modules/@hamr/ai/dist/images-api-registry.js.map +1 -0
- package/node_modules/@hamr/ai/dist/images.d.ts +4 -0
- package/node_modules/@hamr/ai/dist/images.d.ts.map +1 -0
- package/node_modules/@hamr/ai/dist/images.js +14 -0
- package/node_modules/@hamr/ai/dist/images.js.map +1 -0
- package/node_modules/@hamr/ai/dist/index.d.ts +32 -0
- package/node_modules/@hamr/ai/dist/index.d.ts.map +1 -0
- package/node_modules/@hamr/ai/dist/index.js +20 -0
- package/node_modules/@hamr/ai/dist/index.js.map +1 -0
- package/node_modules/@hamr/ai/dist/models.d.ts +18 -0
- package/node_modules/@hamr/ai/dist/models.d.ts.map +1 -0
- package/node_modules/@hamr/ai/dist/models.generated.d.ts +18774 -0
- package/node_modules/@hamr/ai/dist/models.generated.d.ts.map +1 -0
- package/node_modules/@hamr/ai/dist/models.generated.js +17803 -0
- package/node_modules/@hamr/ai/dist/models.generated.js.map +1 -0
- package/node_modules/@hamr/ai/dist/models.js +74 -0
- package/node_modules/@hamr/ai/dist/models.js.map +1 -0
- package/node_modules/@hamr/ai/dist/oauth.d.ts +2 -0
- package/node_modules/@hamr/ai/dist/oauth.d.ts.map +1 -0
- package/node_modules/@hamr/ai/dist/oauth.js +2 -0
- package/node_modules/@hamr/ai/dist/oauth.js.map +1 -0
- package/node_modules/@hamr/ai/dist/providers/amazon-bedrock.d.ts +38 -0
- package/node_modules/@hamr/ai/dist/providers/amazon-bedrock.d.ts.map +1 -0
- package/node_modules/@hamr/ai/dist/providers/amazon-bedrock.js +860 -0
- package/node_modules/@hamr/ai/dist/providers/amazon-bedrock.js.map +1 -0
- package/node_modules/@hamr/ai/dist/providers/anthropic.d.ts +71 -0
- package/node_modules/@hamr/ai/dist/providers/anthropic.d.ts.map +1 -0
- package/node_modules/@hamr/ai/dist/providers/anthropic.js +966 -0
- package/node_modules/@hamr/ai/dist/providers/anthropic.js.map +1 -0
- package/node_modules/@hamr/ai/dist/providers/azure-openai-responses.d.ts +15 -0
- package/node_modules/@hamr/ai/dist/providers/azure-openai-responses.d.ts.map +1 -0
- package/node_modules/@hamr/ai/dist/providers/azure-openai-responses.js +225 -0
- package/node_modules/@hamr/ai/dist/providers/azure-openai-responses.js.map +1 -0
- package/node_modules/@hamr/ai/dist/providers/cloudflare.d.ts +13 -0
- package/node_modules/@hamr/ai/dist/providers/cloudflare.d.ts.map +1 -0
- package/node_modules/@hamr/ai/dist/providers/cloudflare.js +27 -0
- package/node_modules/@hamr/ai/dist/providers/cloudflare.js.map +1 -0
- package/node_modules/@hamr/ai/dist/providers/faux.d.ts +56 -0
- package/node_modules/@hamr/ai/dist/providers/faux.d.ts.map +1 -0
- package/node_modules/@hamr/ai/dist/providers/faux.js +368 -0
- package/node_modules/@hamr/ai/dist/providers/faux.js.map +1 -0
- package/node_modules/@hamr/ai/dist/providers/github-copilot-headers.d.ts +8 -0
- package/node_modules/@hamr/ai/dist/providers/github-copilot-headers.d.ts.map +1 -0
- package/node_modules/@hamr/ai/dist/providers/github-copilot-headers.js +29 -0
- package/node_modules/@hamr/ai/dist/providers/github-copilot-headers.js.map +1 -0
- package/node_modules/@hamr/ai/dist/providers/google-shared.d.ts +70 -0
- package/node_modules/@hamr/ai/dist/providers/google-shared.d.ts.map +1 -0
- package/node_modules/@hamr/ai/dist/providers/google-shared.js +329 -0
- package/node_modules/@hamr/ai/dist/providers/google-shared.js.map +1 -0
- package/node_modules/@hamr/ai/dist/providers/google-vertex.d.ts +15 -0
- package/node_modules/@hamr/ai/dist/providers/google-vertex.d.ts.map +1 -0
- package/node_modules/@hamr/ai/dist/providers/google-vertex.js +452 -0
- package/node_modules/@hamr/ai/dist/providers/google-vertex.js.map +1 -0
- package/node_modules/@hamr/ai/dist/providers/google.d.ts +13 -0
- package/node_modules/@hamr/ai/dist/providers/google.d.ts.map +1 -0
- package/node_modules/@hamr/ai/dist/providers/google.js +403 -0
- package/node_modules/@hamr/ai/dist/providers/google.js.map +1 -0
- package/node_modules/@hamr/ai/dist/providers/images/openrouter.d.ts +3 -0
- package/node_modules/@hamr/ai/dist/providers/images/openrouter.d.ts.map +1 -0
- package/node_modules/@hamr/ai/dist/providers/images/openrouter.js +128 -0
- package/node_modules/@hamr/ai/dist/providers/images/openrouter.js.map +1 -0
- package/node_modules/@hamr/ai/dist/providers/images/register-builtins.d.ts +4 -0
- package/node_modules/@hamr/ai/dist/providers/images/register-builtins.d.ts.map +1 -0
- package/node_modules/@hamr/ai/dist/providers/images/register-builtins.js +34 -0
- package/node_modules/@hamr/ai/dist/providers/images/register-builtins.js.map +1 -0
- package/node_modules/@hamr/ai/dist/providers/mistral.d.ts +25 -0
- package/node_modules/@hamr/ai/dist/providers/mistral.d.ts.map +1 -0
- package/node_modules/@hamr/ai/dist/providers/mistral.js +534 -0
- package/node_modules/@hamr/ai/dist/providers/mistral.js.map +1 -0
- package/node_modules/@hamr/ai/dist/providers/openai-codex-responses.d.ts +30 -0
- package/node_modules/@hamr/ai/dist/providers/openai-codex-responses.d.ts.map +1 -0
- package/node_modules/@hamr/ai/dist/providers/openai-codex-responses.js +1164 -0
- package/node_modules/@hamr/ai/dist/providers/openai-codex-responses.js.map +1 -0
- package/node_modules/@hamr/ai/dist/providers/openai-completions.d.ts +19 -0
- package/node_modules/@hamr/ai/dist/providers/openai-completions.d.ts.map +1 -0
- package/node_modules/@hamr/ai/dist/providers/openai-completions.js +1201 -0
- package/node_modules/@hamr/ai/dist/providers/openai-completions.js.map +1 -0
- package/node_modules/@hamr/ai/dist/providers/openai-prompt-cache.d.ts +3 -0
- package/node_modules/@hamr/ai/dist/providers/openai-prompt-cache.d.ts.map +1 -0
- package/node_modules/@hamr/ai/dist/providers/openai-prompt-cache.js +10 -0
- package/node_modules/@hamr/ai/dist/providers/openai-prompt-cache.js.map +1 -0
- package/node_modules/@hamr/ai/dist/providers/openai-responses-shared.d.ts +18 -0
- package/node_modules/@hamr/ai/dist/providers/openai-responses-shared.d.ts.map +1 -0
- package/node_modules/@hamr/ai/dist/providers/openai-responses-shared.js +494 -0
- package/node_modules/@hamr/ai/dist/providers/openai-responses-shared.js.map +1 -0
- package/node_modules/@hamr/ai/dist/providers/openai-responses.d.ts +13 -0
- package/node_modules/@hamr/ai/dist/providers/openai-responses.d.ts.map +1 -0
- package/node_modules/@hamr/ai/dist/providers/openai-responses.js +235 -0
- package/node_modules/@hamr/ai/dist/providers/openai-responses.js.map +1 -0
- package/node_modules/@hamr/ai/dist/providers/register-builtins.d.ts +35 -0
- package/node_modules/@hamr/ai/dist/providers/register-builtins.d.ts.map +1 -0
- package/node_modules/@hamr/ai/dist/providers/register-builtins.js +254 -0
- package/node_modules/@hamr/ai/dist/providers/register-builtins.js.map +1 -0
- package/node_modules/@hamr/ai/dist/providers/simple-options.d.ts +8 -0
- package/node_modules/@hamr/ai/dist/providers/simple-options.d.ts.map +1 -0
- package/node_modules/@hamr/ai/dist/providers/simple-options.js +43 -0
- package/node_modules/@hamr/ai/dist/providers/simple-options.js.map +1 -0
- package/node_modules/@hamr/ai/dist/providers/transform-messages.d.ts +8 -0
- package/node_modules/@hamr/ai/dist/providers/transform-messages.d.ts.map +1 -0
- package/node_modules/@hamr/ai/dist/providers/transform-messages.js +182 -0
- package/node_modules/@hamr/ai/dist/providers/transform-messages.js.map +1 -0
- package/node_modules/@hamr/ai/dist/session-resources.d.ts +4 -0
- package/node_modules/@hamr/ai/dist/session-resources.d.ts.map +1 -0
- package/node_modules/@hamr/ai/dist/session-resources.js +22 -0
- package/node_modules/@hamr/ai/dist/session-resources.js.map +1 -0
- package/node_modules/@hamr/ai/dist/stream.d.ts +8 -0
- package/node_modules/@hamr/ai/dist/stream.d.ts.map +1 -0
- package/node_modules/@hamr/ai/dist/stream.js +39 -0
- package/node_modules/@hamr/ai/dist/stream.js.map +1 -0
- package/node_modules/@hamr/ai/dist/types.d.ts +526 -0
- package/node_modules/@hamr/ai/dist/types.d.ts.map +1 -0
- package/node_modules/@hamr/ai/dist/types.js +2 -0
- package/node_modules/@hamr/ai/dist/types.js.map +1 -0
- package/node_modules/@hamr/ai/dist/utils/abort-signals.d.ts +6 -0
- package/node_modules/@hamr/ai/dist/utils/abort-signals.d.ts.map +1 -0
- package/node_modules/@hamr/ai/dist/utils/abort-signals.js +34 -0
- package/node_modules/@hamr/ai/dist/utils/abort-signals.js.map +1 -0
- package/node_modules/@hamr/ai/dist/utils/diagnostics.d.ts +19 -0
- package/node_modules/@hamr/ai/dist/utils/diagnostics.d.ts.map +1 -0
- package/node_modules/@hamr/ai/dist/utils/diagnostics.js +25 -0
- package/node_modules/@hamr/ai/dist/utils/diagnostics.js.map +1 -0
- package/node_modules/@hamr/ai/dist/utils/event-stream.d.ts +21 -0
- package/node_modules/@hamr/ai/dist/utils/event-stream.d.ts.map +1 -0
- package/node_modules/@hamr/ai/dist/utils/event-stream.js +77 -0
- package/node_modules/@hamr/ai/dist/utils/event-stream.js.map +1 -0
- package/node_modules/@hamr/ai/dist/utils/hash.d.ts +3 -0
- package/node_modules/@hamr/ai/dist/utils/hash.d.ts.map +1 -0
- package/node_modules/@hamr/ai/dist/utils/hash.js +14 -0
- package/node_modules/@hamr/ai/dist/utils/hash.js.map +1 -0
- package/node_modules/@hamr/ai/dist/utils/headers.d.ts +2 -0
- package/node_modules/@hamr/ai/dist/utils/headers.d.ts.map +1 -0
- package/node_modules/@hamr/ai/dist/utils/headers.js +8 -0
- package/node_modules/@hamr/ai/dist/utils/headers.js.map +1 -0
- package/node_modules/@hamr/ai/dist/utils/json-parse.d.ts +16 -0
- package/node_modules/@hamr/ai/dist/utils/json-parse.d.ts.map +1 -0
- package/node_modules/@hamr/ai/dist/utils/json-parse.js +113 -0
- package/node_modules/@hamr/ai/dist/utils/json-parse.js.map +1 -0
- package/node_modules/@hamr/ai/dist/utils/node-http-proxy.d.ts +4 -0
- package/node_modules/@hamr/ai/dist/utils/node-http-proxy.d.ts.map +1 -0
- package/node_modules/@hamr/ai/dist/utils/node-http-proxy.js +92 -0
- package/node_modules/@hamr/ai/dist/utils/node-http-proxy.js.map +1 -0
- package/node_modules/@hamr/ai/dist/utils/oauth/anthropic.d.ts +25 -0
- package/node_modules/@hamr/ai/dist/utils/oauth/anthropic.d.ts.map +1 -0
- package/node_modules/@hamr/ai/dist/utils/oauth/anthropic.js +336 -0
- package/node_modules/@hamr/ai/dist/utils/oauth/anthropic.js.map +1 -0
- package/node_modules/@hamr/ai/dist/utils/oauth/device-code.d.ts +21 -0
- package/node_modules/@hamr/ai/dist/utils/oauth/device-code.d.ts.map +1 -0
- package/node_modules/@hamr/ai/dist/utils/oauth/device-code.js +56 -0
- package/node_modules/@hamr/ai/dist/utils/oauth/device-code.js.map +1 -0
- package/node_modules/@hamr/ai/dist/utils/oauth/github-copilot.d.ts +30 -0
- package/node_modules/@hamr/ai/dist/utils/oauth/github-copilot.d.ts.map +1 -0
- package/node_modules/@hamr/ai/dist/utils/oauth/github-copilot.js +280 -0
- package/node_modules/@hamr/ai/dist/utils/oauth/github-copilot.js.map +1 -0
- package/node_modules/@hamr/ai/dist/utils/oauth/index.d.ts +58 -0
- package/node_modules/@hamr/ai/dist/utils/oauth/index.d.ts.map +1 -0
- package/node_modules/@hamr/ai/dist/utils/oauth/index.js +122 -0
- package/node_modules/@hamr/ai/dist/utils/oauth/index.js.map +1 -0
- package/node_modules/@hamr/ai/dist/utils/oauth/oauth-page.d.ts +3 -0
- package/node_modules/@hamr/ai/dist/utils/oauth/oauth-page.d.ts.map +1 -0
- package/node_modules/@hamr/ai/dist/utils/oauth/oauth-page.js +118 -0
- package/node_modules/@hamr/ai/dist/utils/oauth/oauth-page.js.map +1 -0
- package/node_modules/@hamr/ai/dist/utils/oauth/openai-codex.d.ts +43 -0
- package/node_modules/@hamr/ai/dist/utils/oauth/openai-codex.d.ts.map +1 -0
- package/node_modules/@hamr/ai/dist/utils/oauth/openai-codex.js +488 -0
- package/node_modules/@hamr/ai/dist/utils/oauth/openai-codex.js.map +1 -0
- package/node_modules/@hamr/ai/dist/utils/oauth/pkce.d.ts +13 -0
- package/node_modules/@hamr/ai/dist/utils/oauth/pkce.d.ts.map +1 -0
- package/node_modules/@hamr/ai/dist/utils/oauth/pkce.js +31 -0
- package/node_modules/@hamr/ai/dist/utils/oauth/pkce.js.map +1 -0
- package/node_modules/@hamr/ai/dist/utils/oauth/types.d.ts +64 -0
- package/node_modules/@hamr/ai/dist/utils/oauth/types.d.ts.map +1 -0
- package/node_modules/@hamr/ai/dist/utils/oauth/types.js +2 -0
- package/node_modules/@hamr/ai/dist/utils/oauth/types.js.map +1 -0
- package/node_modules/@hamr/ai/dist/utils/overflow.d.ts +57 -0
- package/node_modules/@hamr/ai/dist/utils/overflow.d.ts.map +1 -0
- package/node_modules/@hamr/ai/dist/utils/overflow.js +155 -0
- package/node_modules/@hamr/ai/dist/utils/overflow.js.map +1 -0
- package/node_modules/@hamr/ai/dist/utils/provider-env.d.ts +7 -0
- package/node_modules/@hamr/ai/dist/utils/provider-env.d.ts.map +1 -0
- package/node_modules/@hamr/ai/dist/utils/provider-env.js +44 -0
- package/node_modules/@hamr/ai/dist/utils/provider-env.js.map +1 -0
- package/node_modules/@hamr/ai/dist/utils/sanitize-unicode.d.ts +22 -0
- package/node_modules/@hamr/ai/dist/utils/sanitize-unicode.d.ts.map +1 -0
- package/node_modules/@hamr/ai/dist/utils/sanitize-unicode.js +26 -0
- package/node_modules/@hamr/ai/dist/utils/sanitize-unicode.js.map +1 -0
- package/node_modules/@hamr/ai/dist/utils/typebox-helpers.d.ts +17 -0
- package/node_modules/@hamr/ai/dist/utils/typebox-helpers.d.ts.map +1 -0
- package/node_modules/@hamr/ai/dist/utils/typebox-helpers.js +21 -0
- package/node_modules/@hamr/ai/dist/utils/typebox-helpers.js.map +1 -0
- package/node_modules/@hamr/ai/dist/utils/validation.d.ts +18 -0
- package/node_modules/@hamr/ai/dist/utils/validation.d.ts.map +1 -0
- package/node_modules/@hamr/ai/dist/utils/validation.js +281 -0
- package/node_modules/@hamr/ai/dist/utils/validation.js.map +1 -0
- package/node_modules/@hamr/ai/package.json +93 -0
- package/node_modules/@hamr/tui/dist/autocomplete.d.ts +56 -0
- package/node_modules/@hamr/tui/dist/autocomplete.d.ts.map +1 -0
- package/node_modules/@hamr/tui/dist/autocomplete.js +629 -0
- package/node_modules/@hamr/tui/dist/autocomplete.js.map +1 -0
- package/node_modules/@hamr/tui/dist/components/box.d.ts +23 -0
- package/node_modules/@hamr/tui/dist/components/box.d.ts.map +1 -0
- package/node_modules/@hamr/tui/dist/components/box.js +105 -0
- package/node_modules/@hamr/tui/dist/components/box.js.map +1 -0
- package/node_modules/@hamr/tui/dist/components/cancellable-loader.d.ts +22 -0
- package/node_modules/@hamr/tui/dist/components/cancellable-loader.d.ts.map +1 -0
- package/node_modules/@hamr/tui/dist/components/cancellable-loader.js +36 -0
- package/node_modules/@hamr/tui/dist/components/cancellable-loader.js.map +1 -0
- package/node_modules/@hamr/tui/dist/components/editor.d.ts +255 -0
- package/node_modules/@hamr/tui/dist/components/editor.d.ts.map +1 -0
- package/node_modules/@hamr/tui/dist/components/editor.js +1905 -0
- package/node_modules/@hamr/tui/dist/components/editor.js.map +1 -0
- package/node_modules/@hamr/tui/dist/components/image.d.ts +28 -0
- package/node_modules/@hamr/tui/dist/components/image.d.ts.map +1 -0
- package/node_modules/@hamr/tui/dist/components/image.js +81 -0
- package/node_modules/@hamr/tui/dist/components/image.js.map +1 -0
- package/node_modules/@hamr/tui/dist/components/input.d.ts +37 -0
- package/node_modules/@hamr/tui/dist/components/input.d.ts.map +1 -0
- package/node_modules/@hamr/tui/dist/components/input.js +378 -0
- package/node_modules/@hamr/tui/dist/components/input.js.map +1 -0
- package/node_modules/@hamr/tui/dist/components/loader.d.ts +31 -0
- package/node_modules/@hamr/tui/dist/components/loader.d.ts.map +1 -0
- package/node_modules/@hamr/tui/dist/components/loader.js +67 -0
- package/node_modules/@hamr/tui/dist/components/loader.js.map +1 -0
- package/node_modules/@hamr/tui/dist/components/markdown.d.ts +97 -0
- package/node_modules/@hamr/tui/dist/components/markdown.d.ts.map +1 -0
- package/node_modules/@hamr/tui/dist/components/markdown.js +643 -0
- package/node_modules/@hamr/tui/dist/components/markdown.js.map +1 -0
- package/node_modules/@hamr/tui/dist/components/select-list.d.ts +50 -0
- package/node_modules/@hamr/tui/dist/components/select-list.d.ts.map +1 -0
- package/node_modules/@hamr/tui/dist/components/select-list.js +154 -0
- package/node_modules/@hamr/tui/dist/components/select-list.js.map +1 -0
- package/node_modules/@hamr/tui/dist/components/settings-list.d.ts +53 -0
- package/node_modules/@hamr/tui/dist/components/settings-list.d.ts.map +1 -0
- package/node_modules/@hamr/tui/dist/components/settings-list.js +185 -0
- package/node_modules/@hamr/tui/dist/components/settings-list.js.map +1 -0
- package/node_modules/@hamr/tui/dist/components/spacer.d.ts +12 -0
- package/node_modules/@hamr/tui/dist/components/spacer.d.ts.map +1 -0
- package/node_modules/@hamr/tui/dist/components/spacer.js +22 -0
- package/node_modules/@hamr/tui/dist/components/spacer.js.map +1 -0
- package/node_modules/@hamr/tui/dist/components/text.d.ts +21 -0
- package/node_modules/@hamr/tui/dist/components/text.d.ts.map +1 -0
- package/node_modules/@hamr/tui/dist/components/text.js +97 -0
- package/node_modules/@hamr/tui/dist/components/text.js.map +1 -0
- package/node_modules/@hamr/tui/dist/components/truncated-text.d.ts +13 -0
- package/node_modules/@hamr/tui/dist/components/truncated-text.d.ts.map +1 -0
- package/node_modules/@hamr/tui/dist/components/truncated-text.js +48 -0
- package/node_modules/@hamr/tui/dist/components/truncated-text.js.map +1 -0
- package/node_modules/@hamr/tui/dist/editor-component.d.ts +39 -0
- package/node_modules/@hamr/tui/dist/editor-component.d.ts.map +1 -0
- package/node_modules/@hamr/tui/dist/editor-component.js +2 -0
- package/node_modules/@hamr/tui/dist/editor-component.js.map +1 -0
- package/node_modules/@hamr/tui/dist/fuzzy.d.ts +16 -0
- package/node_modules/@hamr/tui/dist/fuzzy.d.ts.map +1 -0
- package/node_modules/@hamr/tui/dist/fuzzy.js +110 -0
- package/node_modules/@hamr/tui/dist/fuzzy.js.map +1 -0
- package/node_modules/@hamr/tui/dist/index.d.ts +24 -0
- package/node_modules/@hamr/tui/dist/index.d.ts.map +1 -0
- package/node_modules/@hamr/tui/dist/index.js +34 -0
- package/node_modules/@hamr/tui/dist/index.js.map +1 -0
- package/node_modules/@hamr/tui/dist/keybindings.d.ts +193 -0
- package/node_modules/@hamr/tui/dist/keybindings.d.ts.map +1 -0
- package/node_modules/@hamr/tui/dist/keybindings.js +172 -0
- package/node_modules/@hamr/tui/dist/keybindings.js.map +1 -0
- package/node_modules/@hamr/tui/dist/keys.d.ts +184 -0
- package/node_modules/@hamr/tui/dist/keys.d.ts.map +1 -0
- package/node_modules/@hamr/tui/dist/keys.js +1168 -0
- package/node_modules/@hamr/tui/dist/keys.js.map +1 -0
- package/node_modules/@hamr/tui/dist/kill-ring.d.ts +28 -0
- package/node_modules/@hamr/tui/dist/kill-ring.d.ts.map +1 -0
- package/node_modules/@hamr/tui/dist/kill-ring.js +46 -0
- package/node_modules/@hamr/tui/dist/kill-ring.js.map +1 -0
- package/node_modules/@hamr/tui/dist/native-modifiers.d.ts +3 -0
- package/node_modules/@hamr/tui/dist/native-modifiers.d.ts.map +1 -0
- package/node_modules/@hamr/tui/dist/native-modifiers.js +53 -0
- package/node_modules/@hamr/tui/dist/native-modifiers.js.map +1 -0
- package/node_modules/@hamr/tui/dist/stdin-buffer.d.ts +50 -0
- package/node_modules/@hamr/tui/dist/stdin-buffer.d.ts.map +1 -0
- package/node_modules/@hamr/tui/dist/stdin-buffer.js +359 -0
- package/node_modules/@hamr/tui/dist/stdin-buffer.js.map +1 -0
- package/node_modules/@hamr/tui/dist/terminal-colors.d.ts +8 -0
- package/node_modules/@hamr/tui/dist/terminal-colors.d.ts.map +1 -0
- package/node_modules/@hamr/tui/dist/terminal-colors.js +51 -0
- package/node_modules/@hamr/tui/dist/terminal-colors.js.map +1 -0
- package/node_modules/@hamr/tui/dist/terminal-image.d.ts +90 -0
- package/node_modules/@hamr/tui/dist/terminal-image.d.ts.map +1 -0
- package/node_modules/@hamr/tui/dist/terminal-image.js +366 -0
- package/node_modules/@hamr/tui/dist/terminal-image.js.map +1 -0
- package/node_modules/@hamr/tui/dist/terminal.d.ts +110 -0
- package/node_modules/@hamr/tui/dist/terminal.d.ts.map +1 -0
- package/node_modules/@hamr/tui/dist/terminal.js +429 -0
- package/node_modules/@hamr/tui/dist/terminal.js.map +1 -0
- package/node_modules/@hamr/tui/dist/tui.d.ts +255 -0
- package/node_modules/@hamr/tui/dist/tui.d.ts.map +1 -0
- package/node_modules/@hamr/tui/dist/tui.js +1343 -0
- package/node_modules/@hamr/tui/dist/tui.js.map +1 -0
- package/node_modules/@hamr/tui/dist/undo-stack.d.ts +17 -0
- package/node_modules/@hamr/tui/dist/undo-stack.d.ts.map +1 -0
- package/node_modules/@hamr/tui/dist/undo-stack.js +27 -0
- package/node_modules/@hamr/tui/dist/undo-stack.js.map +1 -0
- package/node_modules/@hamr/tui/dist/utils.d.ts +85 -0
- package/node_modules/@hamr/tui/dist/utils.d.ts.map +1 -0
- package/node_modules/@hamr/tui/dist/utils.js +1062 -0
- package/node_modules/@hamr/tui/dist/utils.js.map +1 -0
- package/node_modules/@hamr/tui/dist/word-navigation.d.ts +25 -0
- package/node_modules/@hamr/tui/dist/word-navigation.d.ts.map +1 -0
- package/node_modules/@hamr/tui/dist/word-navigation.js +96 -0
- package/node_modules/@hamr/tui/dist/word-navigation.js.map +1 -0
- package/node_modules/@hamr/tui/package.json +42 -0
- package/node_modules/protobufjs/LICENSE +39 -0
- package/node_modules/protobufjs/README.md +727 -0
- package/node_modules/protobufjs/dist/light/protobuf.js +8041 -0
- package/node_modules/protobufjs/dist/light/protobuf.js.map +1 -0
- package/node_modules/protobufjs/dist/light/protobuf.min.js +8 -0
- package/node_modules/protobufjs/dist/light/protobuf.min.js.map +1 -0
- package/node_modules/protobufjs/dist/minimal/protobuf.js +2791 -0
- package/node_modules/protobufjs/dist/minimal/protobuf.js.map +1 -0
- package/node_modules/protobufjs/dist/minimal/protobuf.min.js +8 -0
- package/node_modules/protobufjs/dist/minimal/protobuf.min.js.map +1 -0
- package/node_modules/protobufjs/dist/protobuf.js +9865 -0
- package/node_modules/protobufjs/dist/protobuf.js.map +1 -0
- package/node_modules/protobufjs/dist/protobuf.min.js +8 -0
- package/node_modules/protobufjs/dist/protobuf.min.js.map +1 -0
- package/node_modules/protobufjs/ext/debug/README.md +4 -0
- package/node_modules/protobufjs/ext/debug/index.js +71 -0
- package/node_modules/protobufjs/ext/descriptor/README.md +72 -0
- package/node_modules/protobufjs/ext/descriptor/index.d.ts +195 -0
- package/node_modules/protobufjs/ext/descriptor/index.js +1186 -0
- package/node_modules/protobufjs/ext/descriptor/test.js +54 -0
- package/node_modules/protobufjs/google/LICENSE +27 -0
- package/node_modules/protobufjs/google/README.md +1 -0
- package/node_modules/protobufjs/google/api/annotations.json +83 -0
- package/node_modules/protobufjs/google/api/annotations.proto +11 -0
- package/node_modules/protobufjs/google/api/http.json +86 -0
- package/node_modules/protobufjs/google/api/http.proto +31 -0
- package/node_modules/protobufjs/google/protobuf/api.json +118 -0
- package/node_modules/protobufjs/google/protobuf/api.proto +34 -0
- package/node_modules/protobufjs/google/protobuf/descriptor.json +1382 -0
- package/node_modules/protobufjs/google/protobuf/descriptor.proto +535 -0
- package/node_modules/protobufjs/google/protobuf/source_context.json +20 -0
- package/node_modules/protobufjs/google/protobuf/source_context.proto +7 -0
- package/node_modules/protobufjs/google/protobuf/type.json +202 -0
- package/node_modules/protobufjs/google/protobuf/type.proto +89 -0
- package/node_modules/protobufjs/index.d.ts +2832 -0
- package/node_modules/protobufjs/index.js +4 -0
- package/node_modules/protobufjs/light.d.ts +2 -0
- package/node_modules/protobufjs/light.js +4 -0
- package/node_modules/protobufjs/minimal.d.ts +2 -0
- package/node_modules/protobufjs/minimal.js +4 -0
- package/node_modules/protobufjs/package.json +118 -0
- package/node_modules/protobufjs/scripts/postinstall.js +32 -0
- package/node_modules/protobufjs/src/common.js +399 -0
- package/node_modules/protobufjs/src/converter.js +318 -0
- package/node_modules/protobufjs/src/decoder.js +135 -0
- package/node_modules/protobufjs/src/encoder.js +103 -0
- package/node_modules/protobufjs/src/enum.js +226 -0
- package/node_modules/protobufjs/src/field.js +453 -0
- package/node_modules/protobufjs/src/index-light.js +104 -0
- package/node_modules/protobufjs/src/index-minimal.js +36 -0
- package/node_modules/protobufjs/src/index.js +12 -0
- package/node_modules/protobufjs/src/mapfield.js +126 -0
- package/node_modules/protobufjs/src/message.js +143 -0
- package/node_modules/protobufjs/src/method.js +160 -0
- package/node_modules/protobufjs/src/namespace.js +558 -0
- package/node_modules/protobufjs/src/object.js +382 -0
- package/node_modules/protobufjs/src/oneof.js +222 -0
- package/node_modules/protobufjs/src/parse.js +989 -0
- package/node_modules/protobufjs/src/reader.js +426 -0
- package/node_modules/protobufjs/src/reader_buffer.js +51 -0
- package/node_modules/protobufjs/src/root.js +412 -0
- package/node_modules/protobufjs/src/roots.js +18 -0
- package/node_modules/protobufjs/src/rpc/service.js +142 -0
- package/node_modules/protobufjs/src/rpc.js +36 -0
- package/node_modules/protobufjs/src/service.js +193 -0
- package/node_modules/protobufjs/src/tokenize.js +416 -0
- package/node_modules/protobufjs/src/type.js +632 -0
- package/node_modules/protobufjs/src/types.js +196 -0
- package/node_modules/protobufjs/src/typescript.jsdoc +15 -0
- package/node_modules/protobufjs/src/util/fs.js +11 -0
- package/node_modules/protobufjs/src/util/longbits.js +200 -0
- package/node_modules/protobufjs/src/util/minimal.js +491 -0
- package/node_modules/protobufjs/src/util/patterns.js +7 -0
- package/node_modules/protobufjs/src/util.js +230 -0
- package/node_modules/protobufjs/src/verifier.js +180 -0
- package/node_modules/protobufjs/src/wrappers.js +107 -0
- package/node_modules/protobufjs/src/writer.js +467 -0
- package/node_modules/protobufjs/src/writer_buffer.js +85 -0
- package/node_modules/protobufjs/tsconfig.json +8 -0
- package/package.json +91 -0
- package/skills/frontend-design.md +22 -0
- package/skills/using-hamr.md +38 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,314 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
## [0.4.0] - 2026-06-19
|
|
5
|
+
|
|
6
|
+
### Breaking
|
|
7
|
+
|
|
8
|
+
- **License: Apache 2.0 → MIT.** Relicensed under the MIT License. Added `NOTICE.md` with full third-party attribution for pi (Mario Zechner / `@earendil-works/pi`) and `sexy-tui-rs`. Added acknowledgments section to `README.md`.
|
|
9
|
+
- **Anthropic model IDs renamed: `frontier-*` → `claude-*`.** All Anthropic model identifiers, display names, and config keys have been renamed. `frontier-sonnet-4-20250514` → `claude-sonnet-4-6` / `claude-sonnet-4-5-20250929`, `frontier-3-5-haiku` → `claude-haiku-4-5`, `frontier-3-opus` → `claude-opus-4-7`. The `coreVisualProfile` value `"frontier"` is now `"claude"`. Pricing keys, provider presets, image-utils vision regex, and all tests are updated.
|
|
10
|
+
- **Orchestration: mutating plans always serialized.** Previously parallel mode was only downgraded to sequential when sub-task file scopes overlapped. Now any plan containing mutating tasks (non-`none` verification) is always serialized, since scope hints are advisory and cannot prevent race conditions on the shared working tree. Read-only recon plans keep their parallelism.
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- **`.env` auto-loading (`src/config/load-dotenv.ts`).** On startup, Hamr loads `~/.env`, `~/workspace/.env`, and `<cwd>/.env` into `process.env` (idempotent, existing vars never overwritten). Respects `HAMR_SKIP_DOTENV=1`. Parses shell-style `export KEY=VALUE` lines. Wired into both `cli.ts` and `bootstrap.ts` for early availability.
|
|
15
|
+
- **New Claude models.** Added `claude-sonnet-4-6`, `claude-haiku-4-5`, and `claude-opus-4-7` to default model configs with full capability descriptors (context window, thinking levels, vision support).
|
|
16
|
+
- **DeepSeek V4 Flash context window corrected to 1M.** Previously hardcoded at 128K in both provider presets and default model config.
|
|
17
|
+
- **3-tier model glyph system in TUI.** Each model family now carries a Nerd Font icon (Material Design Icons PUA codepoints), a Unicode geometric fallback, and an ASCII letter fallback. `terminalGlyph()` selects the appropriate tier based on `TerminalCaps`, preventing tofu boxes on terminals without patched fonts.
|
|
18
|
+
- **Explicit thinking-disable signals.** When `thinkingLevel` is `off`, the LLM client now sends explicit opt-out knobs (`thinking: { type: 'disabled' }`, `enable_thinking: false`, `chat_template_kwargs: { enable_thinking: false }`) rather than silence. It never sends `reasoning_effort: "none"` because strict providers reject it. Local chat templates (Qwen3, Cohere North/Command) default reasoning ON, so silence was not "off."
|
|
19
|
+
- **Synthetic tool results on abort/limit/hook-block.** When a turn is aborted, max tool calls are exceeded, or a `pre_tool_use` hook blocks execution, the session now appends a synthetic error tool result to the conversation. This preserves strict tool-call/result pairing and prevents desynchronization on recovery.
|
|
20
|
+
- **Turn ID tracking and proactive cancellation.** The TUI now assigns incrementing turn IDs and tracks `cancelledTurnId`. A 5-minute safety timeout auto-aborts stuck turns. Cancellation via Ctrl+C or Escape sets the cancelled turn ID without immediately resetting `processing`, so the in-flight turn can settle gracefully before re-enabling the editor.
|
|
21
|
+
- **Context bar scaling.** The context-usage bar width now scales with the context window (1 char per 25K tokens, min 20, max 60). Non-zero categories get at least 1 char so tiny usage doesn't disappear. Compact token format (e.g. `1.0M`) on narrow (<80 col) terminals.
|
|
22
|
+
- **Provider-agnostic loading events.** Cold-start loading indicators in the TUI are no longer restricted to the Relay provider — any provider that emits loading SSE events gets shown.
|
|
23
|
+
- **Pi-style assistant streaming on `sexy-tui-rs`.** Live model output now updates one assistant stream card containing thinking + visible text, instead of emitting separate accumulated thinking cards.
|
|
24
|
+
- **"Hamr" default theme.** First-time setup and fresh installs now default to the "hamr" theme. Terminal background detection is no longer used for theme selection; the detected appearance is shown for informational purposes only. `getDefaultTheme()` returns `"hamr"` instead of `"dark"`.
|
|
25
|
+
|
|
26
|
+
### Changed
|
|
27
|
+
|
|
28
|
+
- **TUI alternate screen defaults to off (primary buffer).** The `alternateScreen` default changed from `true` to `false` — the primary buffer gives users native terminal scrollback and text selection (select + shift-click). Set `alternateScreen = true` in `.hamr.toml` for the alternate-screen experience. SGR mouse tracking stays default off (opt-in via `enableMouse`).
|
|
29
|
+
- **TUI visible-width measurement delegates to native renderer.** `EventFeed.visibleWidth()` and `truncateLine()` now use `sexy-tui-rs`'s `visibleWidth` and `truncateToWidth` directly instead of a local heuristic. The old heuristic miscounted symbols like ⚠ → ℹ ✗ … (2 cols vs the renderer's 1), causing width-guard crashes and uneven card backgrounds. The mock was updated with matching test-only implementations.
|
|
30
|
+
- **TUI render budget: newest-first, oldest-drop.** When the line budget (5,000 lines) is exhausted, the oldest events are dropped instead of cutting off the newest messages. A warning banner is shown at the top of the feed with the count of hidden events.
|
|
31
|
+
- **TUI diff rendering fixes.** Unified-diff file headers (`--- a/file`, `+++ b/file`, `diff --git`, `index`) are now detected and rendered as muted preamble lines instead of being misrouted through the +/- gutter path (which incorrectly rendered them as removed/added content with bogus line numbers).
|
|
32
|
+
- **TUI crash recovery hardened.** Separate `uncaughtException` and `unhandledRejection` handlers clean up the terminal (raw escape sequence fallback if `terminal.stop()` throws) before exiting. Signal and resize handlers are properly unregistered on shutdown.
|
|
33
|
+
- **TUI render loop adapts to cmux mode.** The status-bar refresh interval is 250ms under cmux (vs 80ms normally) to reduce overhead on multiplexed connections.
|
|
34
|
+
- **Identical-read loop detection moved after result appending.** The check now runs after `appendToolResult()` so recovery requests preserve strict tool-call/result pairing.
|
|
35
|
+
- **Session store signals exit with correct codes.** `SIGINT` → `exit(130)`, `SIGTERM` → `exit(143)` (128 + signal number).
|
|
36
|
+
- **HolographicMemory caches empty suggested-terms arrays.** Previously `null` was cached for empty results, causing re-queries. Now empty arrays are cached to avoid redundant computation.
|
|
37
|
+
- **Chat command resolves provider name from effective config.** The status bar and model picker now use the resolved provider name from `effectiveSettingsConfig` rather than the metadata display name, ensuring provider renames are reflected everywhere.
|
|
38
|
+
- **TUI card right-padding for unshaded cards.** Cards without background shading now get right-side padding for visual parity with shaded cards.
|
|
39
|
+
- **`tool_result` artifact type handled in EventFeed.** Cards with `artifact.type === 'tool_result'` now render correctly alongside the existing `text` type, with combined summary/output display.
|
|
40
|
+
- **Session replay preserves streamed assistant state.** JSONL sessions now store assistant stream deltas so resume can reconstruct thinking/text blocks and model-visible history.
|
|
41
|
+
- **All themes switched to gapless card layout, no thought headings.** dark, hamr, kawaii, light, and pinkOut themes unified on `gaplessCards: true`, `showThoughtHeading: false`, and reduced heading/body/tool indentation. Trailing blank lines removed from all theme JSONs. `$schema` references changed from remote URLs to local `./theme-schema.json` for dark and light.
|
|
42
|
+
- **TUI: trailing spacer after every content block.** Dynamic borders, warnings, errors, changelog/version/hotkeys/debug-log displays, Armin/Daxnuts components, and login-dialog instructions/code now all end with a trailing `Spacer(1)` for consistent visual breathing room.
|
|
43
|
+
- **TUI: tool cards always respect cardPadY.** `ToolExecutionComponent` no longer returns `0` padding in gapless mode — it always uses `theme.cards.cardPadY`.
|
|
44
|
+
- **TUI: read tool render padding explicit.** Call and result `Text` components in the read tool definition use explicit `0` padding instead of reading `theme.cards.cardPadY`.
|
|
45
|
+
- **System prompt tightened.** Agent introduction reworded to "Diligent, laconic coding agent." Tool usage and rules text streamlined for brevity.
|
|
46
|
+
- **Skills prompt tightened.** The skills section now reads: "Use skills only when the user's task clearly requires one. Do not load skills for greetings or general chat."
|
|
47
|
+
|
|
48
|
+
### Fixed
|
|
49
|
+
|
|
50
|
+
- **TUI card surfaces unified with theme option.** Prompt, response, and tool cards now all respect `theme.cards.shadedSurfaces`, so tool calls can match the same card styling as messages when surfaces are enabled.
|
|
51
|
+
- **Tool-call cards now match message cards more closely.** `ToolExecutionComponent` now uses the same shaded card treatment as prompt/response cards, with self-rendered tool output flush to the card edge and branded headings retained.
|
|
52
|
+
- **`isVisionCapableModel` regex rewritten for Claude naming.** The Anthropic regex now matches `claude-*` patterns (`opus`, `sonnet`, `haiku`, `fable`, `mythos`) instead of the old `frontier-*` patterns.
|
|
53
|
+
- **Empty `command` field on verification events no longer crashes `classifyAgentEvent`.** Guard clauses added for `verification_started`, `verification_skipped`, and related events where `event.command` may be undefined.
|
|
54
|
+
- **`OrchestrationManager`: overlapping-scope check removed.** The `hasOverlappingFileScopes` guard was both insufficient (advisory hints only) and misleading. Replaced with the blanket rule: any mutating plan is sequential.
|
|
55
|
+
- **Thinking card accumulation fixed.** Streaming providers that send cumulative partials are normalized to true deltas; the TUI no longer maintains a separate append-only thinking buffer.
|
|
56
|
+
- **Read-only report loops bounded.** Report-back tasks now nudge after repeated inspection-only steps and stop instead of looping through broad `git diff`/`read` probes forever.
|
|
57
|
+
- **Abort accounting improved.** Interrupted turns now preserve best-effort step/tool counts instead of reporting zero work.
|
|
58
|
+
|
|
59
|
+
### Removed
|
|
60
|
+
|
|
61
|
+
- **Apache 2.0 license text.** Replaced with MIT license including pi/sexy-tui-rs attribution notice.
|
|
62
|
+
- **Legacy `frontier-*` model IDs.** All references removed from default models, provider presets, pricing tables, tests, docs, and regex patterns.
|
|
63
|
+
- **Deleted docs pages.** `AiCore.vue`, `CoreTranscriptHero.vue`, `RuntimePanel.vue`, `TerminalPreview.vue`, `runtime-core.ts`, `SUPER_EDITION_BRANCH.md`, `super-boundary.md`, `agent-loop-tui-crash-review.md`, and 5 files under `docs/superpowers/` (specs and implementation plans).
|
|
64
|
+
- **Built-in askr skill package.** `BUILTIN_SKILL_PACKAGES` in `main.ts` is now empty — askr skills are no longer auto-loaded on startup.
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
## [0.3.0]
|
|
68
|
+
|
|
69
|
+
### Breaking
|
|
70
|
+
|
|
71
|
+
- **Rebrand: synax → hamr.** All public-facing names, file paths, config keys, docs, scripts, and source identifiers have been renamed from `synax` to `hamr`. This includes `.synax.toml.example` → `.hamr.toml.example`, `benchmarks/synax-auto-research/` → `benchmarks/hamr-auto-research/`, `SynaxRuntime` → `HamrRuntime`, and all doc references. The package name and binary remain unchanged.
|
|
72
|
+
- **TUI rewrite.** The old TUI module (`src/tui/interactive-tui.ts`, `src/tui/autocomplete.ts`, `src/tui/input.ts`, `src/tui/key-handlers.ts`, `src/tui/model-palette.ts`, `src/tui/opentui-artifact-renderer.ts`, `src/tui/opentui-render-scheduler.ts`, `src/tui/text-utils.ts`, `src/tui/theme.ts`, `src/tui/token-stream.ts`, `src/tui/tui-constants.ts`) has been removed and replaced with a new architecture (`src/tui/bootstrap.ts`, `src/tui/hamr-tui.ts`, `src/tui/components/`, `src/tui/theme/`). Tests for the old TUI (`interactive-tui.test.ts`, `opentui-render-scheduler.test.ts`, `tui-usability.test.ts`) have been deleted.
|
|
73
|
+
|
|
74
|
+
### Added
|
|
75
|
+
|
|
76
|
+
- **Dynamic model discovery from `/v1/models`.** All providers now probe `/v1/models` on startup and replace static defaults with the server's authoritative model list.
|
|
77
|
+
- **Model-family prompt box coloring.** The editor border color is derived from the active model's family accent and brightened/dimmed by thinking level.
|
|
78
|
+
- **Automatic orchestration policy.** Cloud providers auto-dispatch parallel agents for decomposable tasks; local providers fall back to inline execution.
|
|
79
|
+
- **Model picker context window display.** Each model in the picker shows its context window size (e.g. `131K ctx`).
|
|
80
|
+
- **`paste_context_range` tool.** Slices a range from the last user message using line numbers, anchor text, or byte offsets and writes it to a temp file.
|
|
81
|
+
- **Image paste/drag support in TUI.** Pasting or dragging image files into the prompt encodes them as multimodal content blocks.
|
|
82
|
+
- **Multiple named themes.** 8 new TUI palettes: gruvbox, kanagawa, catppuccin, nord, rose-pine, tokyo-night, pink, and dracula.
|
|
83
|
+
- **Runtime environment context injected into skill messages.** Model now receives repo path, home directory, username, and platform.
|
|
84
|
+
- **Session resume rebuilds transcript from persisted event log.** Resumed sessions show prior conversation in the TUI feed.
|
|
85
|
+
|
|
86
|
+
### Changed
|
|
87
|
+
|
|
88
|
+
- **Toolchain: tsc → tsgo, eslint+prettier → biome, ts-jest → @swc/jest.** TypeScript 7 native Go compiler (`tsgo`) replaces `tsc` (~10× faster). Biome replaces ESLint and Prettier. SWC replaces ts-jest.
|
|
89
|
+
- **Brighter default theme.** Darkened backgrounds (`#15171a`), lightened foregrounds (`#e0e4eb`), more saturated accent colors. Purple is now the default accent.
|
|
90
|
+
- **Splash screen redesign.** Styled HAMR wordmark with model-palette accent colors, decorative box frame, tagline, and version line.
|
|
91
|
+
- **Thinking cards finalized as "Thought".** Retitled and dimmed on completion; total elapsed time shown once in the header.
|
|
92
|
+
- **Settings/resume overlay lines update in place.** No full tree rebuild on navigation within overlays.
|
|
93
|
+
- **CI/CD: deploy to Cloudflare Pages.** Docs deployment uses `cloudflare/wrangler-action`.
|
|
94
|
+
|
|
95
|
+
### Fixed
|
|
96
|
+
|
|
97
|
+
- **Thinking buffer leaked across turns.** Buffer now resets on `user_message` and `task_started` events.
|
|
98
|
+
- **Scroll viewport pinned to top instead of bottom.** Fixed inverted scroll offset math.
|
|
99
|
+
- **`?` key could not be typed into the prompt.** Global input listener no longer consumes `?`.
|
|
100
|
+
- **Splash erased on settings changes.** Settings pickers update splash inline when visible.
|
|
101
|
+
- **Orchestration `shouldOrchestrate` compared to wrong string.** Fixed `'orchestrated'` → `'orchestrate'`.
|
|
102
|
+
- **Session ID collision defenses.** Better error catching and prevention in `EventStore`, `SessionFactory`, and `generatePersistentSessionId`.
|
|
103
|
+
- **Robust bracketed paste handling.** Position-aware detection, keypress suppression during paste, multi-byte UTF-8 support.
|
|
104
|
+
- **Prompt box overflow with word-wrap height simulation.** Matches OpenTUI's `wrapMode: 'word'` behavior.
|
|
105
|
+
|
|
106
|
+
### Removed
|
|
107
|
+
|
|
108
|
+
- **Old TUI modules.** Deleted `src/tui/interactive-tui.ts`, `src/tui/autocomplete.ts`, `src/tui/input.ts`, `src/tui/key-handlers.ts`, `src/tui/model-palette.ts`, `src/tui/opentui-artifact-renderer.ts`, `src/tui/opentui-render-scheduler.ts`, `src/tui/text-utils.ts`, `src/tui/theme.ts`, `src/tui/token-stream.ts`, `src/tui/tui-constants.ts` and their tests.
|
|
109
|
+
- **Static model default for relay.** Replaced by probed model list at startup.
|
|
110
|
+
- **Per-line thinking duration counters.** Only total elapsed time shown in header.
|
|
111
|
+
- **Extra vertical padding around thinking cards.** Redundant with inter-class spacing.
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
## [0.3.0-beta]
|
|
115
|
+
|
|
116
|
+
### Breaking
|
|
117
|
+
|
|
118
|
+
- **Read results are now budgeted and truncated.** Previously "dogfooding mode" passed through all read output untruncated. Read results are now subject to a per-read token cap (with continuation guidance via `startLine`) and a per-turn cumulative cap, after which further reads are refused with a recoverable policy error. This keeps context from being swamped by large reads.
|
|
119
|
+
- **`maxToolCalls` and `maxModelSteps` are now enforced.** Previously both were set to `Number.MAX_SAFE_INTEGER` (effectively unlimited). Defaults are now `maxToolCalls=192`, `maxModelSteps=64`. Runaway loops now hit a hard stop with `budget_exhausted`.
|
|
120
|
+
- **Bash is now enabled by default.** Previously disabled-by-default. The docs and `[tools.bash]` behavior are updated accordingly. Disable via `[tools.bash] enabled = false`.
|
|
121
|
+
- **Per-turn read budget cap removed.** The cumulative per-turn token cap on read results (`maxTotalReadResultTokensPerTurn`) is now 0 (unlimited). The context window itself, compaction, and subagent handoff serve as the natural budget. Hard-capping reads mid-investigation was amputating the model: once exhausted, every read returned an error and the model could not gather any new information.
|
|
122
|
+
- **Identical-read loop detection is now a hard stop.** Previously the read handler injected soft nudges on repeated identical reads. Now `Session` tracks identical-read counts (keyed by path + line range) and terminates the turn with `tool_error` after 5 consecutive identical reads. Dogfooding mode (`HAMR_DOGFOOD`) disables the limit. Different line ranges on the same file are NOT treated as identical.
|
|
123
|
+
|
|
124
|
+
### Added
|
|
125
|
+
|
|
126
|
+
- **Dynamic model discovery from `/v1/models`.** All providers now probe `/v1/models` on startup and replace static defaults with the server's authoritative model list. The relay server's `RELAY_MODEL_MAP` is the single source of truth — add a model there and it appears in the TUI model picker on next launch. Server-provided `display_name`, `supports_thinking`, and `thinking_levels` fields are consumed directly. Falls back to static defaults on probe failure.
|
|
127
|
+
- **Model-family prompt box coloring.** The editor border color is derived from the active model's family accent (purple for Qwen, blue for DeepSeek, orange for Claude/Mistral, white for OpenAI/GLM/Kimi, etc.) and brightened/dimmed by thinking level. Higher thinking → more vivid prompt box.
|
|
128
|
+
- **Automatic orchestration policy.** Cloud providers auto-dispatch parallel agents for decomposable tasks. Local providers fall back to inline execution with a suggestion to use "use parallel agents" explicitly. Explicit delegation always honors the requested mode.
|
|
129
|
+
- **Model picker context window display.** Each model in the picker shows its context window size (e.g. `131K ctx`) alongside the display name.
|
|
130
|
+
|
|
131
|
+
### Changed
|
|
132
|
+
|
|
133
|
+
- **Toolchain: tsc → tsgo, eslint+prettier → biome, ts-jest → @swc/jest.** TypeScript 7 native Go compiler (`tsgo`) replaces `tsc` (~10× faster). Biome replaces ESLint and Prettier as a single unified linter/formatter. SWC replaces ts-jest for Jest transpilation.
|
|
134
|
+
- **Brighter default theme.** Darkened backgrounds (`#15171a`), lightened foregrounds (`#e0e4eb`), more saturated accent colors. Purple is now the default accent.
|
|
135
|
+
- **Prompt box colored by model family + thinking level.** The editor border uses the model's family color (detected from model name), brightened progressively as thinking level increases (off→30%, low→45%, medium→65%, high→85%, xhigh→100%).
|
|
136
|
+
- **Model accent colors expanded.** Claude/frontier/opus/sonnet/haiku/fable/mythos → dark orange. Mistral/devstral/codestral → light orange. DeepSeek → dark blue. Gemma → mid blue. Gemini → light blue. Qwen → purple. MiniMax → red. OpenAI/GLM/Kimi → white. Default → blue.
|
|
137
|
+
- **Splash persists until user prompt.** Internal events (thinking, status) and settings-change notes no longer hide the splash screen. The splash is only replaced when the user sends their first message.
|
|
138
|
+
- **Settings changes update splash inline.** Changing model or thinking level while the splash is visible updates it in place rather than adding a note card.
|
|
139
|
+
- **Thinking cards finalized as "Thought".** When thinking completes, the card retitles from "THINKING" to "THOUGHT" and dims. Total elapsed time is shown once in the header during live thinking.
|
|
140
|
+
- **Response headers use semantic colors.** Successful responses (`◇ RESPONSE`) are green, errors (`✗ Error`) are red.
|
|
141
|
+
- **Background shading removed from response cards.** Only prompt cards retain the shaded background. Responses, errors, notes, and commands render without the colored rectangle.
|
|
142
|
+
- **Scroll via Ctrl+N (down) and Ctrl+P (up).** Emacs-style keybindings for scrolling the feed.
|
|
143
|
+
- **ESC cancels the current turn.** Pressing Escape while the model is thinking cancels the turn (same as Ctrl+C). Falls through to overlay close when not processing.
|
|
144
|
+
- **Context bar uses 1000-based token formatting.** Previously showed `128K` for 131,072 tokens (binary KiB). Now shows `131K` using decimal kilo (matching model documentation).
|
|
145
|
+
- **DeepSeek V4 Pro context window corrected to 1M.** Previously hardcoded at 128K in both provider presets and default model config.
|
|
146
|
+
|
|
147
|
+
### Fixed
|
|
148
|
+
|
|
149
|
+
- **Thinking buffer leaked across turns.** Old reasoning content from prior turns was appended into new thinking cards. Buffer now resets on `user_message` and `task_started` events.
|
|
150
|
+
- **Scroll viewport pinned to top of feed instead of bottom.** The scroll offset math was inverted (`Math.min` instead of `Math.max - offset`), causing the feed to show the oldest content and the `↑ N more` indicator on every render.
|
|
151
|
+
- **`?` key could not be typed into the prompt.** The global input listener consumed `?` as a no-op. Now passes through to the editor.
|
|
152
|
+
- **Splash was erased on settings changes.** Adding a note event for model/thinking changes hid the splash. Settings pickers now check `feed.isEmpty()` and update splash info inline when visible.
|
|
153
|
+
- **`isBashLoopError` returned `boolean | undefined`.** The optional chaining `error?.includes(...)` was not null-coalesced, caught by tsgo's stricter type checking.
|
|
154
|
+
- **Chat test hoisting with SWC.** `jest.mock()` calls hoisted by SWC referenced a `const` declared after them, causing a `ReferenceError` on initialization. Fixed by using `jest.requireMock()` to obtain the mock reference.
|
|
155
|
+
|
|
156
|
+
### Removed
|
|
157
|
+
|
|
158
|
+
- **Static model default for relay.** The hardcoded Qwen GGUF entry in `DEFAULT_MODELS.relay` is now a minimal fallback replaced at startup by the probed model list.
|
|
159
|
+
- **Per-line thinking duration counters.** Each line of thinking content no longer shows an individual elapsed-time suffix. Only the total elapsed time is shown once in the header.
|
|
160
|
+
- **Extra vertical padding around thinking cards.** Blank-line before/after padding was redundant with the inter-class spacing divider.
|
|
161
|
+
- **Redundant scroll keybindings.** PageUp/PageDown/Ctrl+Up/Ctrl+Down/End removed in favor of the simpler Ctrl+N/Ctrl+P. Local models that mix prose and tool calls in one response are no longer treated as fatal errors. Unsafe prose is stripped and tool calls execute normally. The stored assistant message is replaced (not duplicated) to avoid breaking strict providers.
|
|
162
|
+
- **Truncation guard (`finish_reason=length`).** When a model response is cut off by the output token limit, tool calls from that response are NOT executed (arguments may be truncated). A continuation nudge is injected so the model can recover. Three consecutive truncations abort the turn as `model_error`.
|
|
163
|
+
- **Better argument name aliasing for local models.** `edit`/`replace_in_file` now accept `file`, `filePath`, `old_str`, `oldText`, `old_text`, `search`, `original`, `new_str`, `newText`, `new_text`, `replacement`, `replace`. `write`/`create_file` accept `file`, `filePath`, `text`, `contents`, `body`. This lets local models that use Python-style names self-correct without failing.
|
|
164
|
+
- **Actionable argument errors.** When a known tool receives wrong argument names, the error message lists the expected names so the model can self-correct on the next step.
|
|
165
|
+
- **True unified diffs in patch previews.** `createUnifiedDiff` now produces proper LCS-based line-level diffs with context lines (`@@ -a,b +c,d @@` headers), common prefix/suffix trimming, and elision of long unchanged runs. Falls back to whole-region replace for very large inputs. Previously all lines were dumped with `-`/`+` prefixes.
|
|
166
|
+
- **Sub-agent orchestration is opt-in.** Sub-agents are disabled by default (`config.subagents.enabled`). When disabled, the entire planner pipeline is skipped and tasks run inline — keeping the common single-agent path fast and cheap. Explicit in-task delegation requests ("use parallel sub-agents…") override the default.
|
|
167
|
+
- **Overlapping file-scope safety for parallel orchestration.** Forced-parallel mode is downgraded to sequential when sub-task file scopes overlap, preventing concurrent mutations from corrupting each other. Read-only plans (e.g. repo recon) keep their parallelism.
|
|
168
|
+
- **Informational task detection.** Tasks like "explain X" or "why does Y fail?" are detected as informational, relaxing the `files_changed` verification contract so the model isn't pushed into making spurious edits just to satisfy the contract.
|
|
169
|
+
- **Read cache invalidation on mutation.** After any successful `edit`, `write`, or `bash` call, the read cache is cleared so subsequent reads return fresh content — preventing stale-read→edit mismatch loops.
|
|
170
|
+
- **Repo overhead budget cap.** Repo overhead in budget estimation is capped at 40% of the effective context window, preventing large repos from over-triggering orchestration for small tasks.
|
|
171
|
+
- **System message role fix for local chat templates.** Mid-conversation system messages (orientation, memory index, compaction notes) are converted to `user` role with a `[system context]` prefix, preventing ChatML variants from dropping them or resetting the conversation.
|
|
172
|
+
- **TUI: tool result truncation with expand/collapse.** Long tool results (60+ lines) are truncated with an expand indicator (`▸ N more lines (Enter to expand)`). Pressing `Enter` on an empty prompt expands the most recent truncated card; `Ctrl+E` toggles all expandable cards; `e` (empty prompt) toggles the latest card.
|
|
173
|
+
- **TUI: Ctrl+C "press again to quit" hint.** First Ctrl+C shows the hint in the status bar; it clears after a timeout if no second Ctrl+C arrives.
|
|
174
|
+
- **TUI: autocomplete solid background.** The slash-autocomplete dropdown now has a solid surface background so the transcript doesn't bleed through.
|
|
175
|
+
- **TUI: settings overlay uses app background.** Settings screen rows use the app background color (not surface) so the overlay blends with the rest of the TUI instead of painting the terminal a solid grey block.
|
|
176
|
+
- **TUI: renderer theme alignment.** The renderer's clear color is aligned with the resolved palette, preventing a hardcoded dark background from clashing with light terminal themes (e.g. Ghostty light mode).
|
|
177
|
+
- **TUI: animation timer tracking.** Animation timers are tracked and cancelled on shutdown / re-render to prevent timer leaks.
|
|
178
|
+
- **TUI: `Ctrl+E` expand all.** Toggles all expandable tool result cards at once.
|
|
179
|
+
- **TUI: thinking cards always show full text.** Thinking blocks no longer collapse/expand — they're always fully visible and naturally scrollable.
|
|
180
|
+
- **TUI: resume picker restores sessions in-process.** Selecting `/resume` now loads only the chosen session's JSONL transcript, rebuilds model-visible user/assistant context behind the stable system/skill prefix for prompt-cache friendliness, and leaves the picker list backed by lightweight session-index metadata.
|
|
181
|
+
- **TUI: resume picker metadata.** The picker now renders message count, status, and model from the session index, and session search includes provider names.
|
|
182
|
+
- **TUI: splash screen redesign.** The splash screen now features a styled HAMR wordmark with model-palette accent colors, a decorative box frame, tagline, and version line. Layout adapts to narrow/medium/wide terminals and cycles the wordmark accent color with each animation frame. Metadata is presented in a two-column grid with provider and uptime.
|
|
183
|
+
- **TUI: markdown rendering in thinking blocks.** Thinking cards now render structural markdown: ATX headings, bold headings, unordered/ordered lists, code fences, and inline formatting (bold, italic, code, links). Uses muted thinking-block styling to maintain a distinct visual identity from assistant messages.
|
|
184
|
+
- **`paste_context_range` tool.** New tool for context materialization: slices a range from the last user message using line numbers, anchor text, or byte offsets and writes it to a temp file (with sha256 verification). Supports multibyte unicode correctly and records the operation in the ledger.
|
|
185
|
+
- **Model context window auto-probe for relay/custom providers.** New `probeModelContextWindow()` queries `/v1/models` and `/v1/model` endpoints to discover the actual context window from server metadata (`max_context_length`, `max_model_len`, etc.). Runs at startup for non-cloud providers and overrides the configured context window. 3-second timeout, best-effort.
|
|
186
|
+
- **Gemma 3/4 native tool call support.** Gemma 3 and 4 models now use the `gemma_native` parser, which forces OpenAI-native `role: 'tool'` / `tool_call_id` conventions instead of XML-wrapped `<tool_response>` user messages. Gemma's chat template understands this format natively.
|
|
187
|
+
- **Runtime environment context injected into skill messages.** The model now receives repo path, home directory, username, and platform at the top of the skill message block. This grounds tool-call paths in the real environment instead of hallucinating `/home/user` or random absolute paths.
|
|
188
|
+
- **Bash enabled for all run modes.** Bash is now available in every mode (not just `patch`/`verify`). Read-only questions routinely need `git status`, `git diff`, and `git log` — without bash the model had no way to answer them and looped on directory listings.
|
|
189
|
+
- **Invalid-arguments errors are now recoverable.** When the model sends wrong argument names, the error is treated as recoverable so the model can self-correct on the next step instead of terminating the turn.
|
|
190
|
+
- **Image paste/drag support in TUI.** Pasting or dragging image files (png, jpg, gif, webp, bmp) into the prompt detects them, shows a compact `[📷 path]` indicator, and encodes them as multimodal content blocks at submit time. Vision models receive them as proper `image_url` content alongside the text prompt.
|
|
191
|
+
- **Session resume rebuilds transcript from persisted event log.** When resuming a session, the TUI now rebuilds visible transcript cards from the full persisted event log (`readSessionEvents` → `semanticEventsFromSessionEvents`) instead of showing a blank feed. The model's conversation context is restored behind the system prefix as before; the transcript shows the prior conversation above the prompt.
|
|
192
|
+
- **Multiple named themes.** Added 8 new TUI palettes alongside the default mono theme: gruvbox, kanagawa, catppuccin, nord, rose-pine, tokyo-night, pink, and dracula. Each has its own semantic color mapping, background, surface, border, and text colors.
|
|
193
|
+
- **`wordWrapLines` utility.** New text utility for word-boundary-aware line wrapping that matches OpenTUI's `wrapMode: 'word'` behavior. Falls back to character-level breaks for unbreakable words exceeding the width.
|
|
194
|
+
- **`applyFeedOperations` helper.** Extracted from inline TUI code: applies an `IncrementalFeedModel` render plan (append/update/remove operations) to a ScrollBox container with correct card index offset accounting.
|
|
195
|
+
- **Jest HOME isolation for tests.** A new setup file (`src/__tests__/helpers/jest-home.ts`) redirects `HOME` to a per-run temp directory so test suites don't flood the developer's real session index with fake sessions.
|
|
196
|
+
|
|
197
|
+
### Changed
|
|
198
|
+
|
|
199
|
+
- **Thinking tags (`<think>`/`<thinking>`) are stripped from stored content.** Echoing thinking tags back into conversation history wastes context and degrades multi-step behavior (Qwen's own guidance recommends stripping). Reasoning is preserved in `reasoningContent` separately, which also powers the think-only fallback (bug #114).
|
|
200
|
+
- **`temperature` defaults to 0.2.** Previously `temperature` was only sent when explicitly configured. Now defaults to 0.2 for all requests.
|
|
201
|
+
- **`stream_options.include_usage` enabled.** Streaming requests now request usage data from providers that support it.
|
|
202
|
+
- **Non-streaming tool call fallback.** When a stream degrades to a non-streaming response, native `tool_calls` from the response are captured.
|
|
203
|
+
- **Better tool call delta indexing.** Delta fragments are indexed by `delta.index`, matched by `delta.id` (for providers that repeat ids), or appended to the most recent entry — fixing fragmented arguments across separate tool call entries.
|
|
204
|
+
- **Bash execution environment increased.** `maxBuffer` raised to 2MB (was 256KB), `timeout` raised to 120s (was 30s) — letting longer builds and tests complete.
|
|
205
|
+
- **Verification timeout increased.** Non-full verification profiles now get 60s timeout (was 30s).
|
|
206
|
+
- **Recon sub-tasks are read-only.** Repo recon sub-tasks now use `verification: { level: 'none' }` instead of `files_changed`.
|
|
207
|
+
- **"use agents" regex excludes "use the agents.md".** The `AGENTS.md` file reference no longer triggers sub-agent delegation.
|
|
208
|
+
- **Repo recon intent excludes mutation tasks.** Tasks containing mutation verbs (fix, change, edit, write, etc.) are no longer hijacked into repo recon mode.
|
|
209
|
+
- **Preflight budget guard uses assembled request.** Token estimation before model calls now uses the fully assembled request (with orientation, memory index) instead of raw conversation messages, producing accurate budget checks.
|
|
210
|
+
- **TUI: sticky scroll behavior.** The ScrollBox's built-in `_hasManualScroll` handles pause/recovery without disabling `stickyScroll` entirely — scrolling back to the bottom auto-resumes following.
|
|
211
|
+
- **TUI: thinking state reset.** Thinking state clears on `task_started` and `user_message` events, preventing thinking blocks from appending across turns.
|
|
212
|
+
- **TUI: autocomplete draft cleared on non-slash input.** Prevents deadlocked input submission after backspacing past `/`.
|
|
213
|
+
- **TUI: settings text input accepts all printable characters.** Model names, URLs, and API keys with `:`, `_`, `-`, uppercase, etc. now work correctly in the settings panel.
|
|
214
|
+
- **CI/CD: deploy to Cloudflare Pages.** Docs deployment in GitHub Actions now uses `cloudflare/wrangler-action` instead of GitHub Pages.
|
|
215
|
+
- **Remember: system prompt instructs model to verify changes, plan before acting, and read files before editing.** Three new directives added to the system prompt.
|
|
216
|
+
- **TUI: expand/collapse removed.** Tool result cards and thinking cards no longer truncate or toggle. All content is always fully visible. Thinking cards collapse to a one-line preview on finalization (retitled from "Stopped thinking" to "Thought"). Removed `ExpandedState`, `Enter`-on-empty toggle, `Ctrl+E` toggle-all, `Ctrl+O` toggle, and `e` key toggle. The ScrollBox naturally handles long content — manual expand/collapse was unnecessary overhead.
|
|
217
|
+
- **TUI: renderer background set to transparent.** The renderer creation-time background is now `'transparent'` instead of a hardcoded dark color, so the terminal's native background shows through regardless of theme.
|
|
218
|
+
- **TUI: splash screen redesigned with token-stream frames.** The splash card now uses the model's token-stream character set (staggered rows) instead of the deleted `ai-core` visualizer. Layout is responsive and narrow-friendly with a colored accent bar, model name (middle-ellipsized for long GGUF filenames), and a single metadata row whose segments drop right-to-left when the terminal is narrow.
|
|
219
|
+
- **Removed `src/tui/ai-core.ts` and `src/tui/core-visual-profile.ts`.** These splash visualizer modules have been replaced by the token-stream-based splash card in `opentui-artifact-renderer.ts`.
|
|
220
|
+
- **TUI: settings and resume overlay lines update in place.** Navigation within overlays no longer triggers a full tree rebuild — only the text content of each line node is updated. Backdrop rows now include solid-fill `Text` children so the transcript behind the overlay doesn't bleed through below the modal frame. Prompt input is blurred while overlays are open.
|
|
221
|
+
- **TUI: prompt cursor changed to block (non-blinking).** The input cursor style changed from `line`/blinking to `block`/non-blinking for better visibility.
|
|
222
|
+
- **TUI: slash info panel pre-wrapped.** Slash-command info lines are pre-wrapped to the terminal width before layout, so the physical row count exactly matches what `footerLayoutHeight` computes — preventing overlap with the input.
|
|
223
|
+
- **TUI: ScrollBox vertical scrollbar hidden.** With `stickyScroll` locked to the bottom, the scrollbar was just visual noise that painted block-char columns over the right edge of result cards.
|
|
224
|
+
- **TUI: prompt cards render at full text brightness.** The user's own prompt words now use `pal.text` instead of `pal.textMuted`, making them the easiest thing to spot when scanning a long transcript.
|
|
225
|
+
- **TUI: root layout always uses full mode.** The compact-startup vs. full layout distinction is removed — the root structure stays the same between splash and transcript, so transitions are handled incrementally by the feed model without a full tree destroy+rebuild.
|
|
226
|
+
- **TUI: resize updates dimensions in place.** Terminal resize now updates root node dimensions and recalculates layout without destroying the tree, avoiding the blank-frame flicker of a full rebuild.
|
|
227
|
+
- **TUI: context budget bar restyled.** The bar now uses smooth cap-free half-blocks (`▰` filled / `▱` empty) instead of `▐`...`▌` delimiters.
|
|
228
|
+
- **TUI: cost suffix simplified.** Footer cost now shows only cumulative session spend; per-token in/out pricing is removed to reduce footer clutter.
|
|
229
|
+
- **TUI: resume picker frame matches settings modal.** The resume picker now uses the same box-drawing characters (`┌─┐` / `│` / `└─┘`) as the settings overlay. Selected rows use `→` instead of `>`. Footer hint simplified.
|
|
230
|
+
- **TUI: thinking cards finalized and collapsed in place.** On `tool_started`, `assistant_message`, `model_step_started`, or `task_finished`, the live thinking card is finalized in place (collapsed to first line, retitled "Thought") and a new thinking card starts for the next burst. This keeps thinking blocks in true stream order without moving them.
|
|
231
|
+
- **TUI: session filtering skips zero-event sessions.** Sessions with no recorded events are excluded from the resume picker to avoid dead-end restores.
|
|
232
|
+
- **TUI: home path normalization in prompt input.** Absolute paths under `$HOME` are normalized to `~/` prefix so the model's tools accept them. Also applies to pasted/dragged text.
|
|
233
|
+
- **TUI: streaming delta dedup for cumulative providers.** Some servers re-send the full accumulated text in each SSE delta. The presentation reducer now tracks `lastDeltaContent`/`lastDeltaReasoning` and strips the previously-seen prefix, preventing doubled paragraphs. The thinking card path handles this independently for reasoning streams.
|
|
234
|
+
|
|
235
|
+
### Fixed
|
|
236
|
+
|
|
237
|
+
- **Read cache nudges no longer mutate cached objects.** Shallow copies prevent "already read" guidance from sticking to future cache hits.
|
|
238
|
+
- **Orchestration: `shouldOrchestrate` compares to `'orchestrate'` (not `'orchestrated'`).** Fixed a mismatch that caused orchestration to never be triggered by budget estimation.
|
|
239
|
+
- **Orchestration: `totalKB` used directly instead of formatting `Math.ceil(...)` as a string.** The plan prompt now contains a numeric value.
|
|
240
|
+
- **Recovery: `skipTaskPush` prevents duplicate user messages.** Recovery re-entry no longer pushes the task again — the recovery manager already injected a nudge.
|
|
241
|
+
- **TUI: `footerLayoutHeight` accounts for slash info lines.** Slash-command info panels no longer overlap with the input.
|
|
242
|
+
- **TUI: theme detection falls through on null.** When the terminal doesn't answer the OSC theme query, falls through to `COLORFGBG` instead of treating null as a concrete answer.
|
|
243
|
+
- **TUI: `rootLayoutModeSignature` drops `prompt.length` from compact detection.** Having text in the prompt no longer forces a full UI tree rebuild — only event count, settings, and slash info matter.
|
|
244
|
+
- **TUI: slash completion acceptance.** Slash-command completions are tagged separately from file/model completions, so pressing Enter on `/resume` or another slash command dispatches it instead of merely inserting text into the prompt.
|
|
245
|
+
- **TUI: resume picker search input.** Typing while the resume picker is open filters sessions, and backspace edits the picker search query.
|
|
246
|
+
- **TUI: resume picker rendering and navigation.** The picker now renders plain fixed-width rows without embedded ANSI escape codes, uses ASCII frame markers, accepts common arrow/enter/tab/escape key variants, and prevents picker keys from leaking into the prompt textarea.
|
|
247
|
+
- **TUI: unsupported `/mouse` removed from slash autocomplete.** The menu no longer advertises a command without a real dispatcher.
|
|
248
|
+
- **Session ID collision defenses.** `EventStore` uses `startsWith('SQLITE_CONSTRAINT')` to catch `SQLITE_CONSTRAINT_UNIQUE` from better-sqlite3; `createSession` detects existing sessions before creation and throws a collision error; `SessionFactory` re-throws collision errors from `createStoreSession` instead of silently swallowing them; `generatePersistentSessionId` adds millisecond precision to match store-level granularity.
|
|
249
|
+
- **Robust bracketed paste handling.** Position-aware bracket detection prevents false matches inside pasted text; keypress events (keybindings, autocomplete, submit) are suppressed during raw bracketed paste to avoid double-insertion and interference; multi-byte UTF-8 and emoji are captured via `key.sequence` for printable characters.
|
|
250
|
+
- **Reasoning content forwarded through report pipeline.** `reasoningContent` is now forwarded through `RunTaskReport` → `ChatTurnReport` so downstream consumers (session store, TUI, run log) can access it independently of `finalAnswer`.
|
|
251
|
+
- **Prompt box overflow with word-wrap height simulation.** Replaced character-level wrap calculation with word-wrap simulation matching OpenTUI's `wrapMode: 'word'` behavior; long unbreakable words are force-broken; footer gets `overflow: hidden` to clip bleed into adjacent regions.
|
|
252
|
+
- **Verification contract resolved from mode.** `startTurn()` now resolves the verification contract from the mode when not explicitly set (`patch` → `files_changed`, `verify` → `verification_passed`, others → `none`) instead of silently skipping the check when the contract is `null`.
|
|
253
|
+
- **Centralized cost formatting with adaptive precision.** `formatCost` and `formatPricePer1M` moved to `src/tui/telemetry.ts` as shared exports; `formatCost` uses 2dp for ≥$100, 4dp for ≥$0.0001, and up to 10dp for sub-cent values; `formatPricePer1M` strips trailing zeros; eliminates duplicated local implementations and the `$0.00` display for small but real API calls.
|
|
254
|
+
- **Corrected model context window sizes.** DeepSeek V4 Pro/Flash preset changed from 1M to 128K (the 1M figure was a copy-paste error); added per-model window overrides with `resolveContextWindow()` as the single source of truth; canonical values added for `deepseek-chat` (128K) and `deepseek-reasoner` (64K).
|
|
255
|
+
- **TUI: overlay desync guards.** The render loop now detects when an overlay should exist but its nodes are missing (or vice versa) and forces a tree rebuild. Previously resizing with an overlay open could leave orphaned overlay nodes permanently blanking the view.
|
|
256
|
+
- **TUI: prompt input blurred under overlay.** When settings or the resume picker is open, the prompt input is blurred and its cursor hidden so the terminal cursor doesn't blink behind the modal. Refocused when the overlay closes.
|
|
257
|
+
- **TUI: root height synced on terminal resize.** The root node's height is now kept in sync with `renderer.height` on every render cycle, fixing Yoga layout drift when the terminal is resized while an overlay is open.
|
|
258
|
+
- **TUI: card index offset for session header.** The session header card occupies the first ScrollBox slot, so event index N maps to child index N+1. Without this offset, updated cards (notably the streaming thinking card) were re-inserted one slot too early and drifted above the previous prompt or tool call.
|
|
259
|
+
- **TUI: autocomplete draft cleared after bracketed paste.** After a bracketed paste completes, the autocomplete draft is cleared so a pasted path starting with `/` doesn't lock the prompt into slash-autocomplete mode.
|
|
260
|
+
- **TUI: preinserted prompt card suppression.** When the TUI pre-inserts a prompt card for immediate feedback, the event sink's subsequent `user_message` event is suppressed to avoid a duplicate prompt card in the transcript.
|
|
261
|
+
- **TUI: thinking card delta handles cumulative reasoning servers.** Some servers send the full accumulated reasoning text in each SSE delta. The thinking card path now computes a true delta by comparing the previously-sanitized body to the current one, and strips the prefix of a previously-finalized block when a new thinking burst starts.
|
|
262
|
+
- **TUI: `isModelHistoryBoundary` corrected.** The duplicate-model-history detection now treats any non-`model` item as a boundary (not just `user` items), preventing dedup collisions across tool results and other non-model history entries.
|
|
263
|
+
|
|
264
|
+
## [0.3.0-alpha.5]
|
|
265
|
+
|
|
266
|
+
### Fixed
|
|
267
|
+
|
|
268
|
+
- **Missing `extractTextContent` import in test files.** \
|
|
269
|
+
Three test suites (`context-hardening`, `deterministic-compaction`, `skills`) were missing the `extractTextContent` import from `../llm/types`, causing compilation failures. Added the import to all affected test files.
|
|
270
|
+
|
|
271
|
+
## [0.3.0-alpha.4]
|
|
272
|
+
|
|
273
|
+
### Added
|
|
274
|
+
|
|
275
|
+
- **Vision model support: `view_image` injects image content blocks.**
|
|
276
|
+
When `view_image` succeeds, the tool result is now exposed as a proper `image_url` content block in the conversation so vision-capable models (GPT-4V, Claude, etc.) can "see" the image. The image payload is stripped from token estimation to avoid 10–100× inflation vs real vision-tile costs.
|
|
277
|
+
|
|
278
|
+
- **LLM client: auto-detect `max_tokens` vs `max_completion_tokens`.**
|
|
279
|
+
The client now sends both `max_tokens` and `max_completion_tokens` by default and auto-detects which parameter is accepted on 400 errors, caching the correct choice per client instance. Fixes compatibility with newer OpenAI reasoning models (o1, o3, etc.) that reject `max_tokens`.
|
|
280
|
+
|
|
281
|
+
- **Token estimation: strip base64 image payloads.**
|
|
282
|
+
Context budget serialization now replaces large base64 image data with compact `[image:<bytes>]` placeholders before counting tokens, preventing catastrophic token inflation when images are present in conversation history.
|
|
283
|
+
|
|
284
|
+
### Changed
|
|
285
|
+
|
|
286
|
+
- **Tool definition path descriptions** updated to clarify that paths may be absolute or relative (not repo-relative only).
|
|
287
|
+
- **`AgentMessage.content`** type widened from `string` to `ChatContent` to support multimodal content arrays.
|
|
288
|
+
|
|
289
|
+
## [0.3.0-alpha.3]
|
|
290
|
+
|
|
291
|
+
### Fixed
|
|
292
|
+
|
|
293
|
+
- **Config: fix invalid/undefined `thinking` values in `resolveActive` and `configFromParsed`.**
|
|
294
|
+
Malformed or missing thinking settings in hamr config files would cause crashes. Added safe fallbacks that default to off when the value is not a recognized string.
|
|
295
|
+
|
|
296
|
+
- **Prompt box: fix rendering issues and thinking block formatting.**
|
|
297
|
+
Multi-line prompt input now correctly handles the layout recalculation path without triggering full UI tree rebuilds, and thinking blocks render without visual glitches.
|
|
298
|
+
|
|
299
|
+
- **Fix `thinking` default in config.**
|
|
300
|
+
The `--thinking` CLI flag default is now properly wired through the config layer instead of being dropped.
|
|
301
|
+
|
|
302
|
+
## [0.3.0-alpha.2]
|
|
303
|
+
|
|
304
|
+
### Fixed
|
|
305
|
+
|
|
306
|
+
- **Reasoning sanitization: fix missing spaces when stripping `<think>` / `<thinking>` tags.**
|
|
307
|
+
Well-formed protocol XML tags (`<think>`, `<thinking>`, `<tool_call>`, `<invoke>`, `<function>`, `<parameter>`) were removed with an empty replacement string, which silently joined adjacent words when the tag was flush against surrounding text. Tags are now replaced with a space, preventing word-joining; duplicate whitespace is collapsed in a final cleanup pass. Affected three files: `stripToolCallMarkup` in the TUI display path, `sanitizeReasoning` in the tool-call repair path, and `assistantVisibleContent` in session formatting.
|
|
308
|
+
|
|
309
|
+
- **TUI prompt box: fix disappearing/overflow glitch on multi-line input.**
|
|
310
|
+
The prompt input height was included in `rootLayoutModeSignature`, causing a full UI tree rebuild every time the prompt wrapped to a new visual line. Removed `inputHeight` from the signature so height changes are handled in-place via the existing yoga layout recalculation path. Added `overflow: hidden` to the input frame box to prevent text overflow during the brief window before layout recalculation completes.
|
|
311
|
+
|
|
312
|
+
## [0.3.0-alpha.1]
|
|
313
|
+
|
|
314
|
+
Initial alpha release.
|
package/LICENSE
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Skaft (Hamr)
|
|
4
|
+
Copyright (c) Mario Zechner and the Pi contributors (original "Pi" project)
|
|
5
|
+
|
|
6
|
+
Hamr is a fork/port of the Pi coding agent. Portions of this software were
|
|
7
|
+
originally developed as part of the Pi project and are used here under the
|
|
8
|
+
terms of the MIT License. The original copyright notice is retained above as
|
|
9
|
+
required by that license.
|
|
10
|
+
|
|
11
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
12
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
13
|
+
in the Software without restriction, including without limitation the rights
|
|
14
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
15
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
16
|
+
furnished to do so, subject to the following conditions:
|
|
17
|
+
|
|
18
|
+
The above copyright notice and this permission notice shall be included in all
|
|
19
|
+
copies or substantial portions of the Software.
|
|
20
|
+
|
|
21
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
22
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
23
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
24
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
25
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
26
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
27
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
# hamr
|
|
2
|
+
|
|
3
|
+
Minimal terminal coding agent. Read, edit, bash, and write with any LLM.
|
|
4
|
+
|
|
5
|
+
## Install
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install -g @skaft/hamr
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Then run it inside a project:
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
hamr
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Set an API key before the first run, or use `/login` inside hamr for subscription providers:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
export ANTHROPIC_API_KEY=sk-ant-...
|
|
21
|
+
hamr
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Providers
|
|
25
|
+
|
|
26
|
+
hamr supports the following LLM providers out of the box:
|
|
27
|
+
|
|
28
|
+
| Provider | Config |
|
|
29
|
+
|---|---|
|
|
30
|
+
| Anthropic (Claude) | `ANTHROPIC_API_KEY` |
|
|
31
|
+
| OpenAI | `OPENAI_API_KEY` |
|
|
32
|
+
| Google Gemini | `GEMINI_API_KEY` |
|
|
33
|
+
| AWS Bedrock | `AWS_ACCESS_KEY_ID` + `AWS_SECRET_ACCESS_KEY` + `AWS_REGION` |
|
|
34
|
+
| Mistral | `MISTRAL_API_KEY` |
|
|
35
|
+
| Local (Ollama, LM Studio) | Set endpoint in `.hamr.toml` |
|
|
36
|
+
|
|
37
|
+
Switch provider and model on the fly with `--model` or the in-session model picker.
|
|
38
|
+
|
|
39
|
+
## Usage
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
hamr [task] Open interactive TUI (optionally with an initial task)
|
|
43
|
+
hamr run --task "..." Non-interactive one-shot task
|
|
44
|
+
hamr --model claude-sonnet-4-6
|
|
45
|
+
hamr --provider openai --model gpt-4o
|
|
46
|
+
hamr --session <id> Resume a saved session
|
|
47
|
+
hamr --continue Continue the most recent session
|
|
48
|
+
hamr --version
|
|
49
|
+
hamr --help
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Inside the TUI:
|
|
53
|
+
|
|
54
|
+
- Type a task and press Enter to submit
|
|
55
|
+
- `/help` — list available slash commands
|
|
56
|
+
- `/model` — switch provider or model
|
|
57
|
+
- `/login` — authenticate with a subscription provider
|
|
58
|
+
- `/plan` — enter plan mode for multi-step tasks
|
|
59
|
+
- Ctrl+C / Escape — cancel the current turn
|
|
60
|
+
|
|
61
|
+
## Configuration
|
|
62
|
+
|
|
63
|
+
hamr reads `.hamr.toml` from the project directory and `~/.config/hamr/settings.toml` for global defaults. Common settings:
|
|
64
|
+
|
|
65
|
+
```toml
|
|
66
|
+
[provider]
|
|
67
|
+
name = "anthropic"
|
|
68
|
+
model = "claude-sonnet-4-6"
|
|
69
|
+
|
|
70
|
+
[tui]
|
|
71
|
+
theme = "hamr" # hamr | dark | light | gruvbox | catppuccin | nord | …
|
|
72
|
+
alternateScreen = false # true for alternate screen (no native scrollback)
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Extensions
|
|
76
|
+
|
|
77
|
+
Extend hamr with TypeScript modules that add tools, slash commands, event hooks, or custom UI cards. Place extension files under `.hamr/extensions/` or reference them in `.hamr.toml`:
|
|
78
|
+
|
|
79
|
+
```toml
|
|
80
|
+
[extensions]
|
|
81
|
+
paths = ["./my-tools.ts"]
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
See [docs/extensions.md](docs/extensions.md) for the full extension API.
|
|
85
|
+
|
|
86
|
+
## Sessions
|
|
87
|
+
|
|
88
|
+
hamr persists every session as a JSONL file under `~/.hamr/sessions/`. Sessions can be resumed, branched, and exported to HTML. Use `hamr --session <id>` to resume by ID, or `hamr --continue` for the most recent.
|
|
89
|
+
|
|
90
|
+
## Acknowledgments
|
|
91
|
+
|
|
92
|
+
hamr builds on [pi](https://github.com/badlogic/lemmy) by Mario Zechner and the `sexy-tui-rs` renderer. See [NOTICE.md](NOTICE.md) for full attribution.
|
|
93
|
+
|
|
94
|
+
## License
|
|
95
|
+
|
|
96
|
+
MIT
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/bun/cli.ts"],"names":[],"mappings":""}
|
package/dist/bun/cli.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { APP_NAME } from "../config.js";
|
|
3
|
+
process.title = APP_NAME;
|
|
4
|
+
process.emitWarning = (() => { });
|
|
5
|
+
import { restoreSandboxEnv } from "./restore-sandbox-env.js";
|
|
6
|
+
restoreSandboxEnv();
|
|
7
|
+
await import("./register-bedrock.js");
|
|
8
|
+
await import("../cli.js");
|
|
9
|
+
//# sourceMappingURL=cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/bun/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAExC,OAAO,CAAC,KAAK,GAAG,QAAQ,CAAC;AACzB,OAAO,CAAC,WAAW,GAAG,CAAC,GAAG,EAAE,GAAE,CAAC,CAA+B,CAAC;AAE/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,iBAAiB,EAAE,CAAC;AAEpB,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;AACtC,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC","sourcesContent":["#!/usr/bin/env node\nimport { APP_NAME } from \"../config.ts\";\n\nprocess.title = APP_NAME;\nprocess.emitWarning = (() => {}) as typeof process.emitWarning;\n\nimport { restoreSandboxEnv } from \"./restore-sandbox-env.ts\";\n\nrestoreSandboxEnv();\n\nawait import(\"./register-bedrock.ts\");\nawait import(\"../cli.ts\");\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-bedrock.d.ts","sourceRoot":"","sources":["../../src/bun/register-bedrock.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-bedrock.js","sourceRoot":"","sources":["../../src/bun/register-bedrock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAElE,wBAAwB,CAAC,qBAAqB,CAAC,CAAC","sourcesContent":["import { setBedrockProviderModule } from \"@hamr/ai\";\nimport { bedrockProviderModule } from \"@hamr/ai/bedrock-provider\";\n\nsetBedrockProviderModule(bedrockProviderModule);\n"]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workaround for https://github.com/oven-sh/bun/issues/27802
|
|
3
|
+
*
|
|
4
|
+
* Bun compiled binaries have an empty `process.env` when running inside
|
|
5
|
+
* sandbox environments (e.g. nono on Linux/macOS). On Linux we can recover
|
|
6
|
+
* the environment from `/proc/self/environ`.
|
|
7
|
+
*
|
|
8
|
+
* Keep this in sync with getBunSandboxEnvValue() in
|
|
9
|
+
* packages/ai/src/utils/provider-env.ts. The ai package duplicates the lookup
|
|
10
|
+
* for direct consumers that do not go through this coding-agent entrypoint.
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Restore environment variables from `/proc/self/environ` when running
|
|
14
|
+
* inside a sandbox where Bun's `process.env` is empty.
|
|
15
|
+
*/
|
|
16
|
+
export declare function restoreSandboxEnv(): void;
|
|
17
|
+
//# sourceMappingURL=restore-sandbox-env.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"restore-sandbox-env.d.ts","sourceRoot":"","sources":["../../src/bun/restore-sandbox-env.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAiBxC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workaround for https://github.com/oven-sh/bun/issues/27802
|
|
3
|
+
*
|
|
4
|
+
* Bun compiled binaries have an empty `process.env` when running inside
|
|
5
|
+
* sandbox environments (e.g. nono on Linux/macOS). On Linux we can recover
|
|
6
|
+
* the environment from `/proc/self/environ`.
|
|
7
|
+
*
|
|
8
|
+
* Keep this in sync with getBunSandboxEnvValue() in
|
|
9
|
+
* packages/ai/src/utils/provider-env.ts. The ai package duplicates the lookup
|
|
10
|
+
* for direct consumers that do not go through this coding-agent entrypoint.
|
|
11
|
+
*/
|
|
12
|
+
import { readFileSync } from "node:fs";
|
|
13
|
+
/**
|
|
14
|
+
* Restore environment variables from `/proc/self/environ` when running
|
|
15
|
+
* inside a sandbox where Bun's `process.env` is empty.
|
|
16
|
+
*/
|
|
17
|
+
export function restoreSandboxEnv() {
|
|
18
|
+
if (!process.versions?.bun)
|
|
19
|
+
return;
|
|
20
|
+
// If process.env already has entries, nothing to fix.
|
|
21
|
+
if (Object.keys(process.env).length > 0)
|
|
22
|
+
return;
|
|
23
|
+
try {
|
|
24
|
+
const data = readFileSync("/proc/self/environ", "utf-8");
|
|
25
|
+
for (const entry of data.split("\0")) {
|
|
26
|
+
const idx = entry.indexOf("=");
|
|
27
|
+
if (idx > 0) {
|
|
28
|
+
process.env[entry.slice(0, idx)] = entry.slice(idx + 1);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
// /proc/self/environ may not be readable; ignore.
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=restore-sandbox-env.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"restore-sandbox-env.js","sourceRoot":"","sources":["../../src/bun/restore-sandbox-env.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC;;;GAGG;AACH,MAAM,UAAU,iBAAiB;IAChC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG;QAAE,OAAO;IAEnC,sDAAsD;IACtD,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO;IAEhD,IAAI,CAAC;QACJ,MAAM,IAAI,GAAG,YAAY,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC;QACzD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACtC,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC/B,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;gBACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;YACzD,CAAC;QACF,CAAC;IACF,CAAC;IAAC,MAAM,CAAC;QACR,kDAAkD;IACnD,CAAC;AACF,CAAC","sourcesContent":["/**\n * Workaround for https://github.com/oven-sh/bun/issues/27802\n *\n * Bun compiled binaries have an empty `process.env` when running inside\n * sandbox environments (e.g. nono on Linux/macOS). On Linux we can recover\n * the environment from `/proc/self/environ`.\n *\n * Keep this in sync with getBunSandboxEnvValue() in\n * packages/ai/src/utils/provider-env.ts. The ai package duplicates the lookup\n * for direct consumers that do not go through this coding-agent entrypoint.\n */\n\nimport { readFileSync } from \"node:fs\";\n\n/**\n * Restore environment variables from `/proc/self/environ` when running\n * inside a sandbox where Bun's `process.env` is empty.\n */\nexport function restoreSandboxEnv(): void {\n\tif (!process.versions?.bun) return;\n\n\t// If process.env already has entries, nothing to fix.\n\tif (Object.keys(process.env).length > 0) return;\n\n\ttry {\n\t\tconst data = readFileSync(\"/proc/self/environ\", \"utf-8\");\n\t\tfor (const entry of data.split(\"\\0\")) {\n\t\t\tconst idx = entry.indexOf(\"=\");\n\t\t\tif (idx > 0) {\n\t\t\t\tprocess.env[entry.slice(0, idx)] = entry.slice(idx + 1);\n\t\t\t}\n\t\t}\n\t} catch {\n\t\t// /proc/self/environ may not be readable; ignore.\n\t}\n}\n"]}
|