meetsoma 0.1.6 → 0.3.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 +46 -0
- package/README.md +74 -22
- package/bin/gum +0 -0
- package/dist/bun/cli.d.ts +3 -0
- package/dist/bun/cli.d.ts.map +1 -0
- package/dist/bun/cli.js +7 -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/cli/args.d.ts +49 -0
- package/dist/cli/args.d.ts.map +1 -0
- package/dist/cli/args.js +304 -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 +83 -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 +92 -0
- package/dist/cli/list-models.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.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +601 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +68 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +203 -0
- package/dist/config.js.map +1 -0
- package/dist/core/agent-session-runtime.d.ts +134 -0
- package/dist/core/agent-session-runtime.d.ts.map +1 -0
- package/dist/core/agent-session-runtime.js +264 -0
- package/dist/core/agent-session-runtime.js.map +1 -0
- package/dist/core/agent-session.d.ts +585 -0
- package/dist/core/agent-session.d.ts.map +1 -0
- package/dist/core/agent-session.js +2497 -0
- package/dist/core/agent-session.js.map +1 -0
- package/dist/core/auth-storage.d.ts +132 -0
- package/dist/core/auth-storage.d.ts.map +1 -0
- package/dist/core/auth-storage.js +422 -0
- package/dist/core/auth-storage.js.map +1 -0
- package/dist/core/bash-executor.d.ts +46 -0
- package/dist/core/bash-executor.d.ts.map +1 -0
- package/dist/core/bash-executor.js +113 -0
- package/dist/core/bash-executor.js.map +1 -0
- package/dist/core/compaction/branch-summarization.d.ts +88 -0
- package/dist/core/compaction/branch-summarization.d.ts.map +1 -0
- package/dist/core/compaction/branch-summarization.js +243 -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 +613 -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/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 +224 -0
- package/dist/core/export-html/index.js.map +1 -0
- package/dist/core/export-html/template.css +1001 -0
- package/dist/core/export-html/template.html +55 -0
- package/dist/core/export-html/template.js +1690 -0
- package/dist/core/export-html/tool-renderer.d.ts +40 -0
- package/dist/core/export-html/tool-renderer.d.ts.map +1 -0
- package/dist/core/export-html/tool-renderer.js +95 -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 +6 -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 +25 -0
- package/dist/core/extensions/loader.d.ts.map +1 -0
- package/dist/core/extensions/loader.js +436 -0
- package/dist/core/extensions/loader.js.map +1 -0
- package/dist/core/extensions/runner.d.ts +148 -0
- package/dist/core/extensions/runner.d.ts.map +1 -0
- package/dist/core/extensions/runner.js +700 -0
- package/dist/core/extensions/runner.js.map +1 -0
- package/dist/core/extensions/types.d.ts +1076 -0
- package/dist/core/extensions/types.d.ts.map +1 -0
- package/dist/core/extensions/types.js +35 -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 +48 -0
- package/dist/core/footer-data-provider.d.ts.map +1 -0
- package/dist/core/footer-data-provider.js +314 -0
- package/dist/core/footer-data-provider.js.map +1 -0
- package/dist/core/index.d.ts +11 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +11 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/keybindings.d.ts +285 -0
- package/dist/core/keybindings.d.ts.map +1 -0
- package/dist/core/keybindings.js +251 -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 +132 -0
- package/dist/core/model-registry.d.ts.map +1 -0
- package/dist/core/model-registry.js +583 -0
- package/dist/core/model-registry.js.map +1 -0
- package/dist/core/model-resolver.d.ts +110 -0
- package/dist/core/model-resolver.d.ts.map +1 -0
- package/dist/core/model-resolver.js +486 -0
- package/dist/core/model-resolver.js.map +1 -0
- package/dist/core/output-guard.d.ts +6 -0
- package/dist/core/output-guard.d.ts.map +1 -0
- package/dist/core/output-guard.js +59 -0
- package/dist/core/output-guard.js.map +1 -0
- package/dist/core/package-manager.d.ts +172 -0
- package/dist/core/package-manager.d.ts.map +1 -0
- package/dist/core/package-manager.js +1783 -0
- package/dist/core/package-manager.js.map +1 -0
- package/dist/core/prompt-templates.d.ts +51 -0
- package/dist/core/prompt-templates.d.ts.map +1 -0
- package/dist/core/prompt-templates.js +249 -0
- package/dist/core/prompt-templates.js.map +1 -0
- package/dist/core/resolve-config-value.d.ts +23 -0
- package/dist/core/resolve-config-value.d.ts.map +1 -0
- package/dist/core/resolve-config-value.js +126 -0
- package/dist/core/resolve-config-value.js.map +1 -0
- package/dist/core/resource-loader.d.ts +185 -0
- package/dist/core/resource-loader.d.ts.map +1 -0
- package/dist/core/resource-loader.js +698 -0
- package/dist/core/resource-loader.js.map +1 -0
- package/dist/core/sdk.d.ts +93 -0
- package/dist/core/sdk.d.ts.map +1 -0
- package/dist/core/sdk.js +236 -0
- package/dist/core/sdk.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 +1104 -0
- package/dist/core/session-manager.js.map +1 -0
- package/dist/core/settings-manager.d.ts +237 -0
- package/dist/core/settings-manager.d.ts.map +1 -0
- package/dist/core/settings-manager.js +702 -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 +409 -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 +23 -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 +116 -0
- package/dist/core/system-prompt.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 +73 -0
- package/dist/core/tools/bash.d.ts.map +1 -0
- package/dist/core/tools/bash.js +342 -0
- package/dist/core/tools/bash.js.map +1 -0
- package/dist/core/tools/edit-diff.d.ts +85 -0
- package/dist/core/tools/edit-diff.d.ts.map +1 -0
- package/dist/core/tools/edit-diff.js +337 -0
- package/dist/core/tools/edit-diff.js.map +1 -0
- package/dist/core/tools/edit.d.ts +53 -0
- package/dist/core/tools/edit.d.ts.map +1 -0
- package/dist/core/tools/edit.js +196 -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 +37 -0
- package/dist/core/tools/file-mutation-queue.js.map +1 -0
- package/dist/core/tools/find.d.ts +46 -0
- package/dist/core/tools/find.d.ts.map +1 -0
- package/dist/core/tools/find.js +258 -0
- package/dist/core/tools/find.js.map +1 -0
- package/dist/core/tools/grep.d.ts +56 -0
- package/dist/core/tools/grep.d.ts.map +1 -0
- package/dist/core/tools/grep.js +293 -0
- package/dist/core/tools/grep.js.map +1 -0
- package/dist/core/tools/index.d.ts +115 -0
- package/dist/core/tools/index.d.ts.map +1 -0
- package/dist/core/tools/index.js +86 -0
- package/dist/core/tools/index.js.map +1 -0
- package/dist/core/tools/ls.d.ts +46 -0
- package/dist/core/tools/ls.d.ts.map +1 -0
- package/dist/core/tools/ls.js +172 -0
- package/dist/core/tools/ls.js.map +1 -0
- package/dist/core/tools/path-utils.d.ts +8 -0
- package/dist/core/tools/path-utils.d.ts.map +1 -0
- package/dist/core/tools/path-utils.js +81 -0
- package/dist/core/tools/path-utils.js.map +1 -0
- package/dist/core/tools/read.d.ts +46 -0
- package/dist/core/tools/read.d.ts.map +1 -0
- package/dist/core/tools/read.js +225 -0
- package/dist/core/tools/read.js.map +1 -0
- package/dist/core/tools/render-utils.d.ts +21 -0
- package/dist/core/tools/render-utils.d.ts.map +1 -0
- package/dist/core/tools/render-utils.js +49 -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 +32 -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 +205 -0
- package/dist/core/tools/truncate.js.map +1 -0
- package/dist/core/tools/write.d.ts +35 -0
- package/dist/core/tools/write.d.ts.map +1 -0
- package/dist/core/tools/write.js +216 -0
- package/dist/core/tools/write.js.map +1 -0
- package/dist/index.d.ts +28 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +43 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/config.js +22 -0
- package/dist/lib/detect.js +94 -0
- package/dist/lib/display.js +182 -0
- package/dist/main.d.ts +8 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +806 -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 +261 -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 +333 -0
- package/dist/modes/interactive/components/armin.js.map +1 -0
- package/dist/modes/interactive/components/assistant-message.d.ts +18 -0
- package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/assistant-message.js +107 -0
- package/dist/modes/interactive/components/assistant-message.js.map +1 -0
- package/dist/modes/interactive/components/bash-execution.d.ts +34 -0
- package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -0
- package/dist/modes/interactive/components/bash-execution.js +175 -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 +44 -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 +45 -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 +479 -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 +33 -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 +70 -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 +79 -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 +140 -0
- package/dist/modes/interactive/components/daxnuts.js.map +1 -0
- package/dist/modes/interactive/components/diff.d.ts +12 -0
- package/dist/modes/interactive/components/diff.d.ts.map +1 -0
- package/dist/modes/interactive/components/diff.js +133 -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 +21 -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 +111 -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 +61 -0
- package/dist/modes/interactive/components/extension-input.js.map +1 -0
- package/dist/modes/interactive/components/extension-selector.d.ts +24 -0
- package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/extension-selector.js +78 -0
- package/dist/modes/interactive/components/extension-selector.js.map +1 -0
- package/dist/modes/interactive/components/footer.d.ts +27 -0
- package/dist/modes/interactive/components/footer.d.ts.map +1 -0
- package/dist/modes/interactive/components/footer.js +201 -0
- package/dist/modes/interactive/components/footer.js.map +1 -0
- package/dist/modes/interactive/components/index.d.ts +32 -0
- package/dist/modes/interactive/components/index.d.ts.map +1 -0
- package/dist/modes/interactive/components/index.js +33 -0
- package/dist/modes/interactive/components/index.js.map +1 -0
- package/dist/modes/interactive/components/keybinding-hints.d.ts +8 -0
- package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -0
- package/dist/modes/interactive/components/keybinding-hints.js +22 -0
- package/dist/modes/interactive/components/keybinding-hints.js.map +1 -0
- package/dist/modes/interactive/components/login-dialog.d.ts +42 -0
- package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -0
- package/dist/modes/interactive/components/login-dialog.js +145 -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 +275 -0
- package/dist/modes/interactive/components/model-selector.js.map +1 -0
- package/dist/modes/interactive/components/oauth-selector.d.ts +19 -0
- package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/oauth-selector.js +97 -0
- package/dist/modes/interactive/components/oauth-selector.js.map +1 -0
- package/dist/modes/interactive/components/scoped-models-selector.d.ts +49 -0
- package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/scoped-models-selector.js +275 -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 +848 -0
- package/dist/modes/interactive/components/session-selector.js.map +1 -0
- package/dist/modes/interactive/components/settings-selector.d.ts +58 -0
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/settings-selector.js +301 -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 +39 -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 +47 -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 +50 -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 +51 -0
- package/dist/modes/interactive/components/thinking-selector.js.map +1 -0
- package/dist/modes/interactive/components/tool-execution.d.ts +58 -0
- package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -0
- package/dist/modes/interactive/components/tool-execution.js +274 -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 +1084 -0
- package/dist/modes/interactive/components/tree-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 +113 -0
- package/dist/modes/interactive/components/user-message-selector.js.map +1 -0
- package/dist/modes/interactive/components/user-message.d.ts +9 -0
- package/dist/modes/interactive/components/user-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/user-message.js +28 -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 +318 -0
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-mode.js +3907 -0
- package/dist/modes/interactive/interactive-mode.js.map +1 -0
- package/dist/modes/interactive/theme/dark.json +85 -0
- package/dist/modes/interactive/theme/light.json +84 -0
- package/dist/modes/interactive/theme/theme-schema.json +335 -0
- package/dist/modes/interactive/theme/theme.d.ts +81 -0
- package/dist/modes/interactive/theme/theme.d.ts.map +1 -0
- package/dist/modes/interactive/theme/theme.js +970 -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 +108 -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 +217 -0
- package/dist/modes/rpc/rpc-client.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-client.js +401 -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 +542 -0
- package/dist/modes/rpc/rpc-mode.js.map +1 -0
- package/dist/modes/rpc/rpc-types.d.ts +408 -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/thin-cli.js +282 -699
- package/dist/utils/changelog.d.ts +21 -0
- package/dist/utils/changelog.d.ts.map +1 -0
- package/dist/utils/changelog.js +87 -0
- package/dist/utils/changelog.js.map +1 -0
- package/dist/utils/child-process.d.ts +11 -0
- package/dist/utils/child-process.d.ts.map +1 -0
- package/dist/utils/child-process.js +78 -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 +8 -0
- package/dist/utils/clipboard-native.d.ts.map +1 -0
- package/dist/utils/clipboard-native.js +14 -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 +78 -0
- package/dist/utils/clipboard.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/git.d.ts +26 -0
- package/dist/utils/git.d.ts.map +1 -0
- package/dist/utils/git.js +163 -0
- package/dist/utils/git.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.d.ts +36 -0
- package/dist/utils/image-resize.d.ts.map +1 -0
- package/dist/utils/image-resize.js +137 -0
- package/dist/utils/image-resize.js.map +1 -0
- package/dist/utils/mime.d.ts +2 -0
- package/dist/utils/mime.d.ts.map +1 -0
- package/dist/utils/mime.js +26 -0
- package/dist/utils/mime.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 +26 -0
- package/dist/utils/shell.d.ts.map +1 -0
- package/dist/utils/shell.js +186 -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/tools-manager.d.ts +3 -0
- package/dist/utils/tools-manager.d.ts.map +1 -0
- package/dist/utils/tools-manager.js +252 -0
- package/dist/utils/tools-manager.js.map +1 -0
- package/dist/welcome/about.js +50 -0
- package/dist/welcome/auth.js +126 -0
- package/dist/welcome/intro.js +90 -0
- package/dist/welcome/qa.js +131 -0
- package/package.json +90 -43
- package/scripts/install-gum.sh +141 -0
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,52 @@ All notable changes to Soma (`meetsoma` on npm).
|
|
|
4
4
|
|
|
5
5
|
Format follows [Keep a Changelog](https://keepachangelog.com/). Versioning follows [Semantic Versioning](https://semver.org/).
|
|
6
6
|
|
|
7
|
+
## [0.3.1] — 2026-04-10
|
|
8
|
+
|
|
9
|
+
Re-release of 0.3.0 (npm doesn't allow republish of unpublished versions).
|
|
10
|
+
|
|
11
|
+
## [0.3.0] — 2026-04-10
|
|
12
|
+
|
|
13
|
+
Corresponds to Soma agent v0.9.0+.
|
|
14
|
+
|
|
15
|
+
### Added
|
|
16
|
+
- **Script discovery**: `soma <name>` routes to `soma-<name>.sh` scripts via chain (bundled → project → global)
|
|
17
|
+
- `soma code`, `soma verify`, `soma refactor` work from any project with scripts installed
|
|
18
|
+
- `soma --help scripts` lists all discovered scripts with descriptions
|
|
19
|
+
|
|
20
|
+
### Changed
|
|
21
|
+
- Extracted `lib/` and `welcome/` modules from thin-cli.js (1650→902 lines)
|
|
22
|
+
- Removed stale agent copies — CLI is a pure thin wrapper now
|
|
23
|
+
|
|
24
|
+
### Fixed
|
|
25
|
+
- **CORE_DIR respects `SOMA_CODING_AGENT_DIR`** — thin-cli.js and cli.js no longer hardcode `~/.soma/agent`. Sandbox testing and env overrides now work correctly.
|
|
26
|
+
|
|
27
|
+
## [0.2.0] — 2026-04-02
|
|
28
|
+
|
|
29
|
+
Corresponds to Soma agent v0.8.0.
|
|
30
|
+
|
|
31
|
+
### New
|
|
32
|
+
|
|
33
|
+
- **`soma doctor`** — check project health, auto-fix stale settings/body/protocols, run migrations.
|
|
34
|
+
- **`soma status` / `soma health`** — quick project health check (renamed from old `soma doctor`).
|
|
35
|
+
- **`soma --version`** — shows both agent and CLI versions.
|
|
36
|
+
- **`soma --help`** — delegates to core agent for full help output.
|
|
37
|
+
- **`--scan` / `--all` flags** — doctor multi-project support (delegates to core).
|
|
38
|
+
|
|
39
|
+
### Changed
|
|
40
|
+
|
|
41
|
+
- **CLI routing overhaul** — doctor/status/health/update/version all route through thin-cli properly.
|
|
42
|
+
- **Stale protocol detection** — doctor identifies outdated bundled protocols and offers to update them.
|
|
43
|
+
- **Version-aware pending file** — `_doctor-pending.md` injected on boot when migration is available.
|
|
44
|
+
|
|
45
|
+
### Fixed
|
|
46
|
+
|
|
47
|
+
- **Help header** — shows "CLI v0.2.0" instead of bare version number.
|
|
48
|
+
- **Orphaned `showStatus()`** — removed dead code from thin-cli.
|
|
49
|
+
- **Placeholder text** — replaced thin-cli stubs with real output.
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
7
53
|
## [0.1.4] — 2026-03-28
|
|
8
54
|
|
|
9
55
|
Corresponds to Soma agent v0.6.5.
|
package/README.md
CHANGED
|
@@ -25,36 +25,83 @@ An AI coding agent that grows with you. Identity, protocols, and muscle memory
|
|
|
25
25
|
|
|
26
26
|
Most agents forget everything between sessions. Soma doesn't.
|
|
27
27
|
|
|
28
|
-
##
|
|
29
|
-
|
|
30
|
-
On first run, you'll meet the personality engine — no AI, just sentence templates. It introduces Soma and lets you ask questions before committing. Press Enter to install.
|
|
28
|
+
## Install
|
|
31
29
|
|
|
30
|
+
```bash
|
|
31
|
+
npm install -g meetsoma
|
|
32
32
|
```
|
|
33
|
-
σ
|
|
34
33
|
|
|
35
|
-
|
|
34
|
+
This installs the Soma CLI — a thin bootstrap layer. On first run, it downloads the full agent runtime (~50MB) from GitHub.
|
|
35
|
+
|
|
36
|
+
### What Happens
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
npm install -g meetsoma ← installs CLI only (~50KB)
|
|
40
|
+
soma ← first run: downloads agent runtime
|
|
41
|
+
soma ← every run after: starts a session
|
|
42
|
+
```
|
|
36
43
|
|
|
37
|
-
|
|
44
|
+
**Requirements:** Node.js ≥ 20, git, an API key (Anthropic, Google, OpenAI, or [OpenRouter free tier](https://openrouter.ai)).
|
|
38
45
|
|
|
39
|
-
|
|
46
|
+
## First Run
|
|
40
47
|
|
|
41
|
-
|
|
42
|
-
|
|
48
|
+
```bash
|
|
49
|
+
cd your-project
|
|
50
|
+
soma
|
|
43
51
|
```
|
|
44
52
|
|
|
45
|
-
|
|
53
|
+
Soma detects your project (language, framework, package manager, monorepo signals), creates `.soma/`, and writes its own identity. By session two, it remembers.
|
|
46
54
|
|
|
47
55
|
## Commands
|
|
48
56
|
|
|
57
|
+
### CLI (from your shell)
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
soma # fresh session
|
|
61
|
+
soma inhale # resume from last session's preload
|
|
62
|
+
soma -c # continue last session (full history)
|
|
63
|
+
soma -r # pick a session to resume
|
|
64
|
+
soma focus <keyword> # prime for a topic
|
|
65
|
+
soma map <name> # boot with a workflow MAP
|
|
66
|
+
|
|
67
|
+
soma doctor # project health + migration check
|
|
68
|
+
soma status # infrastructure health check
|
|
69
|
+
soma --version # show agent + CLI versions
|
|
70
|
+
soma --help # full command reference
|
|
71
|
+
soma --help scripts # list installed scripts
|
|
72
|
+
soma --help commands # all CLI + TUI commands
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### Session (inside the TUI)
|
|
76
|
+
|
|
77
|
+
```
|
|
78
|
+
/exhale save state + write preload for next session
|
|
79
|
+
/breathe save + rotate into fresh session
|
|
80
|
+
/inhale check preload status
|
|
81
|
+
/rest disable keepalive + exhale
|
|
82
|
+
/pin <name> keep a muscle/protocol hot
|
|
83
|
+
/kill <name> drop to cold
|
|
84
|
+
/hub install install from the community hub
|
|
85
|
+
/soma doctor run migration analysis
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## Two Versions
|
|
89
|
+
|
|
90
|
+
Soma has two independently-versioned layers:
|
|
91
|
+
|
|
92
|
+
```
|
|
93
|
+
σ Soma v0.9.0 ← agent version (the runtime — features, protocols, templates)
|
|
94
|
+
CLI v0.2.0 ← CLI version (this npm package — install flow, delegation)
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
The **agent version** is what matters for features. The **CLI version** is the bootstrap.
|
|
98
|
+
|
|
99
|
+
### Updating
|
|
100
|
+
|
|
49
101
|
```bash
|
|
50
|
-
soma
|
|
51
|
-
|
|
52
|
-
soma
|
|
53
|
-
soma --map <name> # load a workflow
|
|
54
|
-
|
|
55
|
-
soma init # install the runtime
|
|
56
|
-
soma doctor # check health
|
|
57
|
-
soma update # check for updates
|
|
102
|
+
soma init # update the agent runtime
|
|
103
|
+
npm install -g meetsoma # update the CLI (rare)
|
|
104
|
+
soma doctor # check if project .soma/ needs migration
|
|
58
105
|
```
|
|
59
106
|
|
|
60
107
|
## The Five Ideas
|
|
@@ -69,11 +116,16 @@ soma update # check for updates
|
|
|
69
116
|
|
|
70
117
|
**Heat** — attention management. Used things stay. Unused things cool.
|
|
71
118
|
|
|
72
|
-
##
|
|
119
|
+
## How It Works
|
|
120
|
+
|
|
121
|
+
```
|
|
122
|
+
~/.soma/agent/ ← global runtime (git clone, updated via soma init)
|
|
123
|
+
your-project/.soma/ ← per-project memory (identity, protocols, sessions)
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
The CLI delegates to the runtime. The runtime loads your project's `.soma/`, resolves the identity chain (project → parent → global), and boots the agent with your accumulated context.
|
|
73
127
|
|
|
74
|
-
-
|
|
75
|
-
- git
|
|
76
|
-
- API key (Anthropic, Google, or OpenAI)
|
|
128
|
+
On boot, Soma silently adds any missing settings or protocols from newer versions (Tier 1 auto-fix). Bigger migrations are handled by `/soma doctor` inside the TUI.
|
|
77
129
|
|
|
78
130
|
---
|
|
79
131
|
|
package/bin/gum
ADDED
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/bun/cli.ts"],"names":[],"mappings":"","sourcesContent":["#!/usr/bin/env node\nprocess.title = \"pi\";\nprocess.emitWarning = (() => {}) as typeof process.emitWarning;\n\nawait import(\"./register-bedrock.js\");\nawait import(\"../cli.js\");\n"]}
|
package/dist/bun/cli.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/bun/cli.ts"],"names":[],"mappings":";AACA,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;AACrB,OAAO,CAAC,WAAW,GAAG,CAAC,GAAG,EAAE,CAAC,EAAC,CAAC,CAA+B,CAAC;AAE/D,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;AACtC,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC","sourcesContent":["#!/usr/bin/env node\nprocess.title = \"pi\";\nprocess.emitWarning = (() => {}) as typeof process.emitWarning;\n\nawait import(\"./register-bedrock.js\");\nawait import(\"../cli.js\");\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-bedrock.d.ts","sourceRoot":"","sources":["../../src/bun/register-bedrock.ts"],"names":[],"mappings":"","sourcesContent":["import { setBedrockProviderModule } from \"@mariozechner/pi-ai\";\nimport { bedrockProviderModule } from \"@mariozechner/pi-ai/bedrock-provider\";\n\nsetBedrockProviderModule(bedrockProviderModule);\n"]}
|
|
@@ -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,qBAAqB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAE7E,wBAAwB,CAAC,qBAAqB,CAAC,CAAC","sourcesContent":["import { setBedrockProviderModule } from \"@mariozechner/pi-ai\";\nimport { bedrockProviderModule } from \"@mariozechner/pi-ai/bedrock-provider\";\n\nsetBedrockProviderModule(bedrockProviderModule);\n"]}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI argument parsing and help display
|
|
3
|
+
*/
|
|
4
|
+
import type { ThinkingLevel } from "@mariozechner/pi-agent-core";
|
|
5
|
+
import { type ToolName } from "../core/tools/index.js";
|
|
6
|
+
export type Mode = "text" | "json" | "rpc";
|
|
7
|
+
export interface Args {
|
|
8
|
+
provider?: string;
|
|
9
|
+
model?: string;
|
|
10
|
+
apiKey?: string;
|
|
11
|
+
systemPrompt?: string;
|
|
12
|
+
appendSystemPrompt?: string;
|
|
13
|
+
thinking?: ThinkingLevel;
|
|
14
|
+
continue?: boolean;
|
|
15
|
+
resume?: boolean;
|
|
16
|
+
help?: boolean;
|
|
17
|
+
version?: boolean;
|
|
18
|
+
mode?: Mode;
|
|
19
|
+
noSession?: boolean;
|
|
20
|
+
session?: string;
|
|
21
|
+
fork?: string;
|
|
22
|
+
sessionDir?: string;
|
|
23
|
+
models?: string[];
|
|
24
|
+
tools?: ToolName[];
|
|
25
|
+
noTools?: boolean;
|
|
26
|
+
extensions?: string[];
|
|
27
|
+
noExtensions?: boolean;
|
|
28
|
+
print?: boolean;
|
|
29
|
+
export?: string;
|
|
30
|
+
noSkills?: boolean;
|
|
31
|
+
skills?: string[];
|
|
32
|
+
promptTemplates?: string[];
|
|
33
|
+
noPromptTemplates?: boolean;
|
|
34
|
+
themes?: string[];
|
|
35
|
+
noThemes?: boolean;
|
|
36
|
+
listModels?: string | true;
|
|
37
|
+
offline?: boolean;
|
|
38
|
+
verbose?: boolean;
|
|
39
|
+
messages: string[];
|
|
40
|
+
fileArgs: string[];
|
|
41
|
+
/** Unknown flags (potentially extension flags) - map of flag name to value */
|
|
42
|
+
unknownFlags: Map<string, boolean | string>;
|
|
43
|
+
}
|
|
44
|
+
export declare function isValidThinkingLevel(level: string): level is ThinkingLevel;
|
|
45
|
+
export declare function parseArgs(args: string[], extensionFlags?: Map<string, {
|
|
46
|
+
type: "boolean" | "string";
|
|
47
|
+
}>): Args;
|
|
48
|
+
export declare function printHelp(): void;
|
|
49
|
+
//# sourceMappingURL=args.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAGjE,OAAO,EAAY,KAAK,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAEjE,MAAM,MAAM,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;AAE3C,MAAM,WAAW,IAAI;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,8EAA8E;IAC9E,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC,CAAC;CAC5C;AAID,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,aAAa,CAE1E;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,SAAS,GAAG,QAAQ,CAAA;CAAE,CAAC,GAAG,IAAI,CA4H5G;AAED,wBAAgB,SAAS,IAAI,IAAI,CA2IhC","sourcesContent":["/**\n * CLI argument parsing and help display\n */\n\nimport type { ThinkingLevel } from \"@mariozechner/pi-agent-core\";\nimport chalk from \"chalk\";\nimport { APP_NAME, CONFIG_DIR_NAME, ENV_AGENT_DIR } from \"../config.js\";\nimport { allTools, type ToolName } from \"../core/tools/index.js\";\n\nexport type Mode = \"text\" | \"json\" | \"rpc\";\n\nexport interface Args {\n\tprovider?: string;\n\tmodel?: string;\n\tapiKey?: string;\n\tsystemPrompt?: string;\n\tappendSystemPrompt?: string;\n\tthinking?: ThinkingLevel;\n\tcontinue?: boolean;\n\tresume?: boolean;\n\thelp?: boolean;\n\tversion?: boolean;\n\tmode?: Mode;\n\tnoSession?: boolean;\n\tsession?: string;\n\tfork?: string;\n\tsessionDir?: string;\n\tmodels?: string[];\n\ttools?: ToolName[];\n\tnoTools?: boolean;\n\textensions?: string[];\n\tnoExtensions?: boolean;\n\tprint?: boolean;\n\texport?: string;\n\tnoSkills?: boolean;\n\tskills?: string[];\n\tpromptTemplates?: string[];\n\tnoPromptTemplates?: boolean;\n\tthemes?: string[];\n\tnoThemes?: boolean;\n\tlistModels?: string | true;\n\toffline?: boolean;\n\tverbose?: boolean;\n\tmessages: string[];\n\tfileArgs: string[];\n\t/** Unknown flags (potentially extension flags) - map of flag name to value */\n\tunknownFlags: Map<string, boolean | string>;\n}\n\nconst VALID_THINKING_LEVELS = [\"off\", \"minimal\", \"low\", \"medium\", \"high\", \"xhigh\"] as const;\n\nexport function isValidThinkingLevel(level: string): level is ThinkingLevel {\n\treturn VALID_THINKING_LEVELS.includes(level as ThinkingLevel);\n}\n\nexport function parseArgs(args: string[], extensionFlags?: Map<string, { type: \"boolean\" | \"string\" }>): Args {\n\tconst result: Args = {\n\t\tmessages: [],\n\t\tfileArgs: [],\n\t\tunknownFlags: new Map(),\n\t};\n\n\tfor (let i = 0; i < args.length; i++) {\n\t\tconst arg = args[i];\n\n\t\tif (arg === \"--help\" || arg === \"-h\") {\n\t\t\tresult.help = true;\n\t\t} else if (arg === \"--version\" || arg === \"-v\") {\n\t\t\tresult.version = true;\n\t\t} else if (arg === \"--mode\" && i + 1 < args.length) {\n\t\t\tconst mode = args[++i];\n\t\t\tif (mode === \"text\" || mode === \"json\" || mode === \"rpc\") {\n\t\t\t\tresult.mode = mode;\n\t\t\t}\n\t\t} else if (arg === \"--continue\" || arg === \"-c\") {\n\t\t\tresult.continue = true;\n\t\t} else if (arg === \"--resume\" || arg === \"-r\") {\n\t\t\tresult.resume = true;\n\t\t} else if (arg === \"--provider\" && i + 1 < args.length) {\n\t\t\tresult.provider = args[++i];\n\t\t} else if (arg === \"--model\" && i + 1 < args.length) {\n\t\t\tresult.model = args[++i];\n\t\t} else if (arg === \"--api-key\" && i + 1 < args.length) {\n\t\t\tresult.apiKey = args[++i];\n\t\t} else if (arg === \"--system-prompt\" && i + 1 < args.length) {\n\t\t\tresult.systemPrompt = args[++i];\n\t\t} else if (arg === \"--append-system-prompt\" && i + 1 < args.length) {\n\t\t\tresult.appendSystemPrompt = args[++i];\n\t\t} else if (arg === \"--no-session\") {\n\t\t\tresult.noSession = true;\n\t\t} else if (arg === \"--session\" && i + 1 < args.length) {\n\t\t\tresult.session = args[++i];\n\t\t} else if (arg === \"--fork\" && i + 1 < args.length) {\n\t\t\tresult.fork = args[++i];\n\t\t} else if (arg === \"--session-dir\" && i + 1 < args.length) {\n\t\t\tresult.sessionDir = args[++i];\n\t\t} else if (arg === \"--models\" && i + 1 < args.length) {\n\t\t\tresult.models = args[++i].split(\",\").map((s) => s.trim());\n\t\t} else if (arg === \"--no-tools\") {\n\t\t\tresult.noTools = true;\n\t\t} else if (arg === \"--tools\" && i + 1 < args.length) {\n\t\t\tconst toolNames = args[++i].split(\",\").map((s) => s.trim());\n\t\t\tconst validTools: ToolName[] = [];\n\t\t\tfor (const name of toolNames) {\n\t\t\t\tif (name in allTools) {\n\t\t\t\t\tvalidTools.push(name as ToolName);\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error(\n\t\t\t\t\t\tchalk.yellow(`Warning: Unknown tool \"${name}\". Valid tools: ${Object.keys(allTools).join(\", \")}`),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t\tresult.tools = validTools;\n\t\t} else if (arg === \"--thinking\" && i + 1 < args.length) {\n\t\t\tconst level = args[++i];\n\t\t\tif (isValidThinkingLevel(level)) {\n\t\t\t\tresult.thinking = level;\n\t\t\t} else {\n\t\t\t\tconsole.error(\n\t\t\t\t\tchalk.yellow(\n\t\t\t\t\t\t`Warning: Invalid thinking level \"${level}\". Valid values: ${VALID_THINKING_LEVELS.join(\", \")}`,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t}\n\t\t} else if (arg === \"--print\" || arg === \"-p\") {\n\t\t\tresult.print = true;\n\t\t} else if (arg === \"--export\" && i + 1 < args.length) {\n\t\t\tresult.export = args[++i];\n\t\t} else if ((arg === \"--extension\" || arg === \"-e\") && i + 1 < args.length) {\n\t\t\tresult.extensions = result.extensions ?? [];\n\t\t\tresult.extensions.push(args[++i]);\n\t\t} else if (arg === \"--no-extensions\" || arg === \"-ne\") {\n\t\t\tresult.noExtensions = true;\n\t\t} else if (arg === \"--skill\" && i + 1 < args.length) {\n\t\t\tresult.skills = result.skills ?? [];\n\t\t\tresult.skills.push(args[++i]);\n\t\t} else if (arg === \"--prompt-template\" && i + 1 < args.length) {\n\t\t\tresult.promptTemplates = result.promptTemplates ?? [];\n\t\t\tresult.promptTemplates.push(args[++i]);\n\t\t} else if (arg === \"--theme\" && i + 1 < args.length) {\n\t\t\tresult.themes = result.themes ?? [];\n\t\t\tresult.themes.push(args[++i]);\n\t\t} else if (arg === \"--no-skills\" || arg === \"-ns\") {\n\t\t\tresult.noSkills = true;\n\t\t} else if (arg === \"--no-prompt-templates\" || arg === \"-np\") {\n\t\t\tresult.noPromptTemplates = true;\n\t\t} else if (arg === \"--no-themes\") {\n\t\t\tresult.noThemes = true;\n\t\t} else if (arg === \"--list-models\") {\n\t\t\t// Check if next arg is a search pattern (not a flag or file arg)\n\t\t\tif (i + 1 < args.length && !args[i + 1].startsWith(\"-\") && !args[i + 1].startsWith(\"@\")) {\n\t\t\t\tresult.listModels = args[++i];\n\t\t\t} else {\n\t\t\t\tresult.listModels = true;\n\t\t\t}\n\t\t} else if (arg === \"--verbose\") {\n\t\t\tresult.verbose = true;\n\t\t} else if (arg === \"--offline\") {\n\t\t\tresult.offline = true;\n\t\t} else if (arg.startsWith(\"@\")) {\n\t\t\tresult.fileArgs.push(arg.slice(1)); // Remove @ prefix\n\t\t} else if (arg.startsWith(\"--\") && extensionFlags) {\n\t\t\t// Check if it's an extension-registered flag\n\t\t\tconst flagName = arg.slice(2);\n\t\t\tconst extFlag = extensionFlags.get(flagName);\n\t\t\tif (extFlag) {\n\t\t\t\tif (extFlag.type === \"boolean\") {\n\t\t\t\t\tresult.unknownFlags.set(flagName, true);\n\t\t\t\t} else if (extFlag.type === \"string\" && i + 1 < args.length) {\n\t\t\t\t\tresult.unknownFlags.set(flagName, args[++i]);\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Unknown flags without extensionFlags are silently ignored (first pass)\n\t\t} else if (!arg.startsWith(\"-\")) {\n\t\t\tresult.messages.push(arg);\n\t\t}\n\t}\n\n\treturn result;\n}\n\nexport function printHelp(): void {\n\tconsole.log(`${chalk.bold(APP_NAME)} - AI coding assistant with read, bash, edit, write tools\n\n${chalk.bold(\"Usage:\")}\n ${APP_NAME} [options] [@files...] [messages...]\n\n${chalk.bold(\"Commands:\")}\n ${APP_NAME} install <source> [-l] Install extension source and add to settings\n ${APP_NAME} remove <source> [-l] Remove extension source from settings\n ${APP_NAME} uninstall <source> [-l] Alias for remove\n ${APP_NAME} update [source] Update installed extensions (skips pinned sources)\n ${APP_NAME} list List installed extensions from settings\n ${APP_NAME} config Open TUI to enable/disable package resources\n ${APP_NAME} <command> --help Show help for install/remove/uninstall/update/list\n\n${chalk.bold(\"Options:\")}\n --provider <name> Provider name (default: google)\n --model <pattern> Model pattern or ID (supports \"provider/id\" and optional \":<thinking>\")\n --api-key <key> API key (defaults to env vars)\n --system-prompt <text> System prompt (default: coding assistant prompt)\n --append-system-prompt <text> Append text or file contents to the system prompt\n --mode <mode> Output mode: text (default), json, or rpc\n --print, -p Non-interactive mode: process prompt and exit\n --continue, -c Continue previous session\n --resume, -r Select a session to resume\n --session <path> Use specific session file\n --fork <path> Fork specific session file or partial UUID into a new session\n --session-dir <dir> Directory for session storage and lookup\n --no-session Don't save session (ephemeral)\n --models <patterns> Comma-separated model patterns for Ctrl+P cycling\n Supports globs (anthropic/*, *sonnet*) and fuzzy matching\n --no-tools Disable all built-in tools\n --tools <tools> Comma-separated list of tools to enable (default: read,bash,edit,write)\n Available: read, bash, edit, write, grep, find, ls\n --thinking <level> Set thinking level: off, minimal, low, medium, high, xhigh\n --extension, -e <path> Load an extension file (can be used multiple times)\n --no-extensions, -ne Disable extension discovery (explicit -e paths still work)\n --skill <path> Load a skill file or directory (can be used multiple times)\n --no-skills, -ns Disable skills discovery and loading\n --prompt-template <path> Load a prompt template file or directory (can be used multiple times)\n --no-prompt-templates, -np Disable prompt template discovery and loading\n --theme <path> Load a theme file or directory (can be used multiple times)\n --no-themes Disable theme discovery and loading\n --export <file> Export session file to HTML and exit\n --list-models [search] List available models (with optional fuzzy search)\n --verbose Force verbose startup (overrides quietStartup setting)\n --offline Disable startup network operations (same as PI_OFFLINE=1)\n --help, -h Show this help\n --version, -v Show version number\n\nExtensions can register additional flags (e.g., --plan from plan-mode extension).\n\n${chalk.bold(\"Examples:\")}\n # Interactive mode\n ${APP_NAME}\n\n # Interactive mode with initial prompt\n ${APP_NAME} \"List all .ts files in src/\"\n\n # Include files in initial message\n ${APP_NAME} @prompt.md @image.png \"What color is the sky?\"\n\n # Non-interactive mode (process and exit)\n ${APP_NAME} -p \"List all .ts files in src/\"\n\n # Multiple messages (interactive)\n ${APP_NAME} \"Read package.json\" \"What dependencies do we have?\"\n\n # Continue previous session\n ${APP_NAME} --continue \"What did we discuss?\"\n\n # Use different model\n ${APP_NAME} --provider openai --model gpt-4o-mini \"Help me refactor this code\"\n\n # Use model with provider prefix (no --provider needed)\n ${APP_NAME} --model openai/gpt-4o \"Help me refactor this code\"\n\n # Use model with thinking level shorthand\n ${APP_NAME} --model sonnet:high \"Solve this complex problem\"\n\n # Limit model cycling to specific models\n ${APP_NAME} --models claude-sonnet,claude-haiku,gpt-4o\n\n # Limit to a specific provider with glob pattern\n ${APP_NAME} --models \"github-copilot/*\"\n\n # Cycle models with fixed thinking levels\n ${APP_NAME} --models sonnet:high,haiku:low\n\n # Start with a specific thinking level\n ${APP_NAME} --thinking high \"Solve this complex problem\"\n\n # Read-only mode (no file modifications possible)\n ${APP_NAME} --tools read,grep,find,ls -p \"Review the code in src/\"\n\n # Export a session file to HTML\n ${APP_NAME} --export ~/${CONFIG_DIR_NAME}/agent/sessions/--path--/session.jsonl\n ${APP_NAME} --export session.jsonl output.html\n\n${chalk.bold(\"Environment Variables:\")}\n ANTHROPIC_API_KEY - Anthropic Claude API key\n ANTHROPIC_OAUTH_TOKEN - Anthropic OAuth token (alternative to API key)\n OPENAI_API_KEY - OpenAI GPT API key\n AZURE_OPENAI_API_KEY - Azure OpenAI API key\n AZURE_OPENAI_BASE_URL - Azure OpenAI base URL (https://{resource}.openai.azure.com/openai/v1)\n AZURE_OPENAI_RESOURCE_NAME - Azure OpenAI resource name (alternative to base URL)\n AZURE_OPENAI_API_VERSION - Azure OpenAI API version (default: v1)\n AZURE_OPENAI_DEPLOYMENT_NAME_MAP - Azure OpenAI model=deployment map (comma-separated)\n GEMINI_API_KEY - Google Gemini API key\n GROQ_API_KEY - Groq API key\n CEREBRAS_API_KEY - Cerebras API key\n XAI_API_KEY - xAI Grok API key\n OPENROUTER_API_KEY - OpenRouter API key\n AI_GATEWAY_API_KEY - Vercel AI Gateway API key\n ZAI_API_KEY - ZAI API key\n MISTRAL_API_KEY - Mistral API key\n MINIMAX_API_KEY - MiniMax API key\n OPENCODE_API_KEY - OpenCode Zen/OpenCode Go API key\n KIMI_API_KEY - Kimi For Coding API key\n AWS_PROFILE - AWS profile for Amazon Bedrock\n AWS_ACCESS_KEY_ID - AWS access key for Amazon Bedrock\n AWS_SECRET_ACCESS_KEY - AWS secret key for Amazon Bedrock\n AWS_BEARER_TOKEN_BEDROCK - Bedrock API key (bearer token)\n AWS_REGION - AWS region for Amazon Bedrock (e.g., us-east-1)\n ${ENV_AGENT_DIR.padEnd(32)} - Session storage directory (default: ~/${CONFIG_DIR_NAME}/agent)\n PI_PACKAGE_DIR - Override package directory (for Nix/Guix store paths)\n PI_OFFLINE - Disable startup network operations when set to 1/true/yes\n PI_SHARE_VIEWER_URL - Base URL for /share command (default: https://pi.dev/session/)\n PI_AI_ANTIGRAVITY_VERSION - Override Antigravity User-Agent version (e.g., 1.23.0)\n\n${chalk.bold(\"Available Tools (default: read, bash, edit, write):\")}\n read - Read file contents\n bash - Execute bash commands\n edit - Edit files with find/replace\n write - Write files (creates/overwrites)\n grep - Search file contents (read-only, off by default)\n find - Find files by glob pattern (read-only, off by default)\n ls - List directory contents (read-only, off by default)\n`);\n}\n"]}
|
package/dist/cli/args.js
ADDED
|
@@ -0,0 +1,304 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI argument parsing and help display
|
|
3
|
+
*/
|
|
4
|
+
import chalk from "chalk";
|
|
5
|
+
import { APP_NAME, CONFIG_DIR_NAME, ENV_AGENT_DIR } from "../config.js";
|
|
6
|
+
import { allTools } from "../core/tools/index.js";
|
|
7
|
+
const VALID_THINKING_LEVELS = ["off", "minimal", "low", "medium", "high", "xhigh"];
|
|
8
|
+
export function isValidThinkingLevel(level) {
|
|
9
|
+
return VALID_THINKING_LEVELS.includes(level);
|
|
10
|
+
}
|
|
11
|
+
export function parseArgs(args, extensionFlags) {
|
|
12
|
+
const result = {
|
|
13
|
+
messages: [],
|
|
14
|
+
fileArgs: [],
|
|
15
|
+
unknownFlags: new Map(),
|
|
16
|
+
};
|
|
17
|
+
for (let i = 0; i < args.length; i++) {
|
|
18
|
+
const arg = args[i];
|
|
19
|
+
if (arg === "--help" || arg === "-h") {
|
|
20
|
+
result.help = true;
|
|
21
|
+
}
|
|
22
|
+
else if (arg === "--version" || arg === "-v") {
|
|
23
|
+
result.version = true;
|
|
24
|
+
}
|
|
25
|
+
else if (arg === "--mode" && i + 1 < args.length) {
|
|
26
|
+
const mode = args[++i];
|
|
27
|
+
if (mode === "text" || mode === "json" || mode === "rpc") {
|
|
28
|
+
result.mode = mode;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
else if (arg === "--continue" || arg === "-c") {
|
|
32
|
+
result.continue = true;
|
|
33
|
+
}
|
|
34
|
+
else if (arg === "--resume" || arg === "-r") {
|
|
35
|
+
result.resume = true;
|
|
36
|
+
}
|
|
37
|
+
else if (arg === "--provider" && i + 1 < args.length) {
|
|
38
|
+
result.provider = args[++i];
|
|
39
|
+
}
|
|
40
|
+
else if (arg === "--model" && i + 1 < args.length) {
|
|
41
|
+
result.model = args[++i];
|
|
42
|
+
}
|
|
43
|
+
else if (arg === "--api-key" && i + 1 < args.length) {
|
|
44
|
+
result.apiKey = args[++i];
|
|
45
|
+
}
|
|
46
|
+
else if (arg === "--system-prompt" && i + 1 < args.length) {
|
|
47
|
+
result.systemPrompt = args[++i];
|
|
48
|
+
}
|
|
49
|
+
else if (arg === "--append-system-prompt" && i + 1 < args.length) {
|
|
50
|
+
result.appendSystemPrompt = args[++i];
|
|
51
|
+
}
|
|
52
|
+
else if (arg === "--no-session") {
|
|
53
|
+
result.noSession = true;
|
|
54
|
+
}
|
|
55
|
+
else if (arg === "--session" && i + 1 < args.length) {
|
|
56
|
+
result.session = args[++i];
|
|
57
|
+
}
|
|
58
|
+
else if (arg === "--fork" && i + 1 < args.length) {
|
|
59
|
+
result.fork = args[++i];
|
|
60
|
+
}
|
|
61
|
+
else if (arg === "--session-dir" && i + 1 < args.length) {
|
|
62
|
+
result.sessionDir = args[++i];
|
|
63
|
+
}
|
|
64
|
+
else if (arg === "--models" && i + 1 < args.length) {
|
|
65
|
+
result.models = args[++i].split(",").map((s) => s.trim());
|
|
66
|
+
}
|
|
67
|
+
else if (arg === "--no-tools") {
|
|
68
|
+
result.noTools = true;
|
|
69
|
+
}
|
|
70
|
+
else if (arg === "--tools" && i + 1 < args.length) {
|
|
71
|
+
const toolNames = args[++i].split(",").map((s) => s.trim());
|
|
72
|
+
const validTools = [];
|
|
73
|
+
for (const name of toolNames) {
|
|
74
|
+
if (name in allTools) {
|
|
75
|
+
validTools.push(name);
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
console.error(chalk.yellow(`Warning: Unknown tool "${name}". Valid tools: ${Object.keys(allTools).join(", ")}`));
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
result.tools = validTools;
|
|
82
|
+
}
|
|
83
|
+
else if (arg === "--thinking" && i + 1 < args.length) {
|
|
84
|
+
const level = args[++i];
|
|
85
|
+
if (isValidThinkingLevel(level)) {
|
|
86
|
+
result.thinking = level;
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
console.error(chalk.yellow(`Warning: Invalid thinking level "${level}". Valid values: ${VALID_THINKING_LEVELS.join(", ")}`));
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
else if (arg === "--print" || arg === "-p") {
|
|
93
|
+
result.print = true;
|
|
94
|
+
}
|
|
95
|
+
else if (arg === "--export" && i + 1 < args.length) {
|
|
96
|
+
result.export = args[++i];
|
|
97
|
+
}
|
|
98
|
+
else if ((arg === "--extension" || arg === "-e") && i + 1 < args.length) {
|
|
99
|
+
result.extensions = result.extensions ?? [];
|
|
100
|
+
result.extensions.push(args[++i]);
|
|
101
|
+
}
|
|
102
|
+
else if (arg === "--no-extensions" || arg === "-ne") {
|
|
103
|
+
result.noExtensions = true;
|
|
104
|
+
}
|
|
105
|
+
else if (arg === "--skill" && i + 1 < args.length) {
|
|
106
|
+
result.skills = result.skills ?? [];
|
|
107
|
+
result.skills.push(args[++i]);
|
|
108
|
+
}
|
|
109
|
+
else if (arg === "--prompt-template" && i + 1 < args.length) {
|
|
110
|
+
result.promptTemplates = result.promptTemplates ?? [];
|
|
111
|
+
result.promptTemplates.push(args[++i]);
|
|
112
|
+
}
|
|
113
|
+
else if (arg === "--theme" && i + 1 < args.length) {
|
|
114
|
+
result.themes = result.themes ?? [];
|
|
115
|
+
result.themes.push(args[++i]);
|
|
116
|
+
}
|
|
117
|
+
else if (arg === "--no-skills" || arg === "-ns") {
|
|
118
|
+
result.noSkills = true;
|
|
119
|
+
}
|
|
120
|
+
else if (arg === "--no-prompt-templates" || arg === "-np") {
|
|
121
|
+
result.noPromptTemplates = true;
|
|
122
|
+
}
|
|
123
|
+
else if (arg === "--no-themes") {
|
|
124
|
+
result.noThemes = true;
|
|
125
|
+
}
|
|
126
|
+
else if (arg === "--list-models") {
|
|
127
|
+
// Check if next arg is a search pattern (not a flag or file arg)
|
|
128
|
+
if (i + 1 < args.length && !args[i + 1].startsWith("-") && !args[i + 1].startsWith("@")) {
|
|
129
|
+
result.listModels = args[++i];
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
result.listModels = true;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
else if (arg === "--verbose") {
|
|
136
|
+
result.verbose = true;
|
|
137
|
+
}
|
|
138
|
+
else if (arg === "--offline") {
|
|
139
|
+
result.offline = true;
|
|
140
|
+
}
|
|
141
|
+
else if (arg.startsWith("@")) {
|
|
142
|
+
result.fileArgs.push(arg.slice(1)); // Remove @ prefix
|
|
143
|
+
}
|
|
144
|
+
else if (arg.startsWith("--") && extensionFlags) {
|
|
145
|
+
// Check if it's an extension-registered flag
|
|
146
|
+
const flagName = arg.slice(2);
|
|
147
|
+
const extFlag = extensionFlags.get(flagName);
|
|
148
|
+
if (extFlag) {
|
|
149
|
+
if (extFlag.type === "boolean") {
|
|
150
|
+
result.unknownFlags.set(flagName, true);
|
|
151
|
+
}
|
|
152
|
+
else if (extFlag.type === "string" && i + 1 < args.length) {
|
|
153
|
+
result.unknownFlags.set(flagName, args[++i]);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
// Unknown flags without extensionFlags are silently ignored (first pass)
|
|
157
|
+
}
|
|
158
|
+
else if (!arg.startsWith("-")) {
|
|
159
|
+
result.messages.push(arg);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
return result;
|
|
163
|
+
}
|
|
164
|
+
export function printHelp() {
|
|
165
|
+
console.log(`${chalk.bold(APP_NAME)} - AI coding assistant with read, bash, edit, write tools
|
|
166
|
+
|
|
167
|
+
${chalk.bold("Usage:")}
|
|
168
|
+
${APP_NAME} [options] [@files...] [messages...]
|
|
169
|
+
|
|
170
|
+
${chalk.bold("Commands:")}
|
|
171
|
+
${APP_NAME} install <source> [-l] Install extension source and add to settings
|
|
172
|
+
${APP_NAME} remove <source> [-l] Remove extension source from settings
|
|
173
|
+
${APP_NAME} uninstall <source> [-l] Alias for remove
|
|
174
|
+
${APP_NAME} update [source] Update installed extensions (skips pinned sources)
|
|
175
|
+
${APP_NAME} list List installed extensions from settings
|
|
176
|
+
${APP_NAME} config Open TUI to enable/disable package resources
|
|
177
|
+
${APP_NAME} <command> --help Show help for install/remove/uninstall/update/list
|
|
178
|
+
|
|
179
|
+
${chalk.bold("Options:")}
|
|
180
|
+
--provider <name> Provider name (default: google)
|
|
181
|
+
--model <pattern> Model pattern or ID (supports "provider/id" and optional ":<thinking>")
|
|
182
|
+
--api-key <key> API key (defaults to env vars)
|
|
183
|
+
--system-prompt <text> System prompt (default: coding assistant prompt)
|
|
184
|
+
--append-system-prompt <text> Append text or file contents to the system prompt
|
|
185
|
+
--mode <mode> Output mode: text (default), json, or rpc
|
|
186
|
+
--print, -p Non-interactive mode: process prompt and exit
|
|
187
|
+
--continue, -c Continue previous session
|
|
188
|
+
--resume, -r Select a session to resume
|
|
189
|
+
--session <path> Use specific session file
|
|
190
|
+
--fork <path> Fork specific session file or partial UUID into a new session
|
|
191
|
+
--session-dir <dir> Directory for session storage and lookup
|
|
192
|
+
--no-session Don't save session (ephemeral)
|
|
193
|
+
--models <patterns> Comma-separated model patterns for Ctrl+P cycling
|
|
194
|
+
Supports globs (anthropic/*, *sonnet*) and fuzzy matching
|
|
195
|
+
--no-tools Disable all built-in tools
|
|
196
|
+
--tools <tools> Comma-separated list of tools to enable (default: read,bash,edit,write)
|
|
197
|
+
Available: read, bash, edit, write, grep, find, ls
|
|
198
|
+
--thinking <level> Set thinking level: off, minimal, low, medium, high, xhigh
|
|
199
|
+
--extension, -e <path> Load an extension file (can be used multiple times)
|
|
200
|
+
--no-extensions, -ne Disable extension discovery (explicit -e paths still work)
|
|
201
|
+
--skill <path> Load a skill file or directory (can be used multiple times)
|
|
202
|
+
--no-skills, -ns Disable skills discovery and loading
|
|
203
|
+
--prompt-template <path> Load a prompt template file or directory (can be used multiple times)
|
|
204
|
+
--no-prompt-templates, -np Disable prompt template discovery and loading
|
|
205
|
+
--theme <path> Load a theme file or directory (can be used multiple times)
|
|
206
|
+
--no-themes Disable theme discovery and loading
|
|
207
|
+
--export <file> Export session file to HTML and exit
|
|
208
|
+
--list-models [search] List available models (with optional fuzzy search)
|
|
209
|
+
--verbose Force verbose startup (overrides quietStartup setting)
|
|
210
|
+
--offline Disable startup network operations (same as PI_OFFLINE=1)
|
|
211
|
+
--help, -h Show this help
|
|
212
|
+
--version, -v Show version number
|
|
213
|
+
|
|
214
|
+
Extensions can register additional flags (e.g., --plan from plan-mode extension).
|
|
215
|
+
|
|
216
|
+
${chalk.bold("Examples:")}
|
|
217
|
+
# Interactive mode
|
|
218
|
+
${APP_NAME}
|
|
219
|
+
|
|
220
|
+
# Interactive mode with initial prompt
|
|
221
|
+
${APP_NAME} "List all .ts files in src/"
|
|
222
|
+
|
|
223
|
+
# Include files in initial message
|
|
224
|
+
${APP_NAME} @prompt.md @image.png "What color is the sky?"
|
|
225
|
+
|
|
226
|
+
# Non-interactive mode (process and exit)
|
|
227
|
+
${APP_NAME} -p "List all .ts files in src/"
|
|
228
|
+
|
|
229
|
+
# Multiple messages (interactive)
|
|
230
|
+
${APP_NAME} "Read package.json" "What dependencies do we have?"
|
|
231
|
+
|
|
232
|
+
# Continue previous session
|
|
233
|
+
${APP_NAME} --continue "What did we discuss?"
|
|
234
|
+
|
|
235
|
+
# Use different model
|
|
236
|
+
${APP_NAME} --provider openai --model gpt-4o-mini "Help me refactor this code"
|
|
237
|
+
|
|
238
|
+
# Use model with provider prefix (no --provider needed)
|
|
239
|
+
${APP_NAME} --model openai/gpt-4o "Help me refactor this code"
|
|
240
|
+
|
|
241
|
+
# Use model with thinking level shorthand
|
|
242
|
+
${APP_NAME} --model sonnet:high "Solve this complex problem"
|
|
243
|
+
|
|
244
|
+
# Limit model cycling to specific models
|
|
245
|
+
${APP_NAME} --models claude-sonnet,claude-haiku,gpt-4o
|
|
246
|
+
|
|
247
|
+
# Limit to a specific provider with glob pattern
|
|
248
|
+
${APP_NAME} --models "github-copilot/*"
|
|
249
|
+
|
|
250
|
+
# Cycle models with fixed thinking levels
|
|
251
|
+
${APP_NAME} --models sonnet:high,haiku:low
|
|
252
|
+
|
|
253
|
+
# Start with a specific thinking level
|
|
254
|
+
${APP_NAME} --thinking high "Solve this complex problem"
|
|
255
|
+
|
|
256
|
+
# Read-only mode (no file modifications possible)
|
|
257
|
+
${APP_NAME} --tools read,grep,find,ls -p "Review the code in src/"
|
|
258
|
+
|
|
259
|
+
# Export a session file to HTML
|
|
260
|
+
${APP_NAME} --export ~/${CONFIG_DIR_NAME}/agent/sessions/--path--/session.jsonl
|
|
261
|
+
${APP_NAME} --export session.jsonl output.html
|
|
262
|
+
|
|
263
|
+
${chalk.bold("Environment Variables:")}
|
|
264
|
+
ANTHROPIC_API_KEY - Anthropic Claude API key
|
|
265
|
+
ANTHROPIC_OAUTH_TOKEN - Anthropic OAuth token (alternative to API key)
|
|
266
|
+
OPENAI_API_KEY - OpenAI GPT API key
|
|
267
|
+
AZURE_OPENAI_API_KEY - Azure OpenAI API key
|
|
268
|
+
AZURE_OPENAI_BASE_URL - Azure OpenAI base URL (https://{resource}.openai.azure.com/openai/v1)
|
|
269
|
+
AZURE_OPENAI_RESOURCE_NAME - Azure OpenAI resource name (alternative to base URL)
|
|
270
|
+
AZURE_OPENAI_API_VERSION - Azure OpenAI API version (default: v1)
|
|
271
|
+
AZURE_OPENAI_DEPLOYMENT_NAME_MAP - Azure OpenAI model=deployment map (comma-separated)
|
|
272
|
+
GEMINI_API_KEY - Google Gemini API key
|
|
273
|
+
GROQ_API_KEY - Groq API key
|
|
274
|
+
CEREBRAS_API_KEY - Cerebras API key
|
|
275
|
+
XAI_API_KEY - xAI Grok API key
|
|
276
|
+
OPENROUTER_API_KEY - OpenRouter API key
|
|
277
|
+
AI_GATEWAY_API_KEY - Vercel AI Gateway API key
|
|
278
|
+
ZAI_API_KEY - ZAI API key
|
|
279
|
+
MISTRAL_API_KEY - Mistral API key
|
|
280
|
+
MINIMAX_API_KEY - MiniMax API key
|
|
281
|
+
OPENCODE_API_KEY - OpenCode Zen/OpenCode Go API key
|
|
282
|
+
KIMI_API_KEY - Kimi For Coding API key
|
|
283
|
+
AWS_PROFILE - AWS profile for Amazon Bedrock
|
|
284
|
+
AWS_ACCESS_KEY_ID - AWS access key for Amazon Bedrock
|
|
285
|
+
AWS_SECRET_ACCESS_KEY - AWS secret key for Amazon Bedrock
|
|
286
|
+
AWS_BEARER_TOKEN_BEDROCK - Bedrock API key (bearer token)
|
|
287
|
+
AWS_REGION - AWS region for Amazon Bedrock (e.g., us-east-1)
|
|
288
|
+
${ENV_AGENT_DIR.padEnd(32)} - Session storage directory (default: ~/${CONFIG_DIR_NAME}/agent)
|
|
289
|
+
PI_PACKAGE_DIR - Override package directory (for Nix/Guix store paths)
|
|
290
|
+
PI_OFFLINE - Disable startup network operations when set to 1/true/yes
|
|
291
|
+
PI_SHARE_VIEWER_URL - Base URL for /share command (default: https://pi.dev/session/)
|
|
292
|
+
PI_AI_ANTIGRAVITY_VERSION - Override Antigravity User-Agent version (e.g., 1.23.0)
|
|
293
|
+
|
|
294
|
+
${chalk.bold("Available Tools (default: read, bash, edit, write):")}
|
|
295
|
+
read - Read file contents
|
|
296
|
+
bash - Execute bash commands
|
|
297
|
+
edit - Edit files with find/replace
|
|
298
|
+
write - Write files (creates/overwrites)
|
|
299
|
+
grep - Search file contents (read-only, off by default)
|
|
300
|
+
find - Find files by glob pattern (read-only, off by default)
|
|
301
|
+
ls - List directory contents (read-only, off by default)
|
|
302
|
+
`);
|
|
303
|
+
}
|
|
304
|
+
//# sourceMappingURL=args.js.map
|