@eminent337/aery 0.67.68 → 0.74.2
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 +418 -5
- package/README.md +67 -37
- 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 +13 -0
- package/dist/bun/restore-sandbox-env.d.ts.map +1 -0
- package/dist/bun/restore-sandbox-env.js +32 -0
- package/dist/bun/restore-sandbox-env.js.map +1 -0
- package/dist/cli/args.d.ts +53 -0
- package/dist/cli/args.d.ts.map +1 -0
- package/dist/cli/args.js +341 -0
- package/dist/cli/args.js.map +1 -0
- package/dist/cli/capabilities.d.ts +61 -0
- package/dist/cli/capabilities.d.ts.map +1 -0
- package/dist/cli/capabilities.js +155 -0
- package/dist/cli/capabilities.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/doctor.d.ts +32 -0
- package/dist/cli/doctor.d.ts.map +1 -0
- package/dist/cli/doctor.js +133 -0
- package/dist/cli/doctor.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 +98 -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 +20 -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 +399 -0
- package/dist/config.js.map +1 -0
- package/dist/core/agent-session-runtime.d.ts +117 -0
- package/dist/core/agent-session-runtime.d.ts.map +1 -0
- package/dist/core/agent-session-runtime.js +300 -0
- package/dist/core/agent-session-runtime.js.map +1 -0
- package/dist/core/agent-session-services.d.ts +86 -0
- package/dist/core/agent-session-services.d.ts.map +1 -0
- package/dist/core/agent-session-services.js +117 -0
- package/dist/core/agent-session-services.js.map +1 -0
- package/dist/core/agent-session.d.ts +595 -0
- package/dist/core/agent-session.d.ts.map +1 -0
- package/dist/core/agent-session.js +2521 -0
- package/dist/core/agent-session.js.map +1 -0
- package/dist/core/auth-guidance.d.ts +6 -0
- package/dist/core/auth-guidance.d.ts.map +1 -0
- package/dist/core/auth-guidance.js +32 -0
- package/dist/core/auth-guidance.js.map +1 -0
- package/dist/core/auth-storage.d.ts +141 -0
- package/dist/core/auth-storage.d.ts.map +1 -0
- package/dist/core/auth-storage.js +441 -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 +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 +615 -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/custom-openai-compatible.d.ts +14 -0
- package/dist/core/custom-openai-compatible.d.ts.map +1 -0
- package/dist/core/custom-openai-compatible.js +128 -0
- package/dist/core/custom-openai-compatible.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 +1066 -0
- package/dist/core/export-html/template.html +55 -0
- package/dist/core/export-html/template.js +1834 -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 +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 +24 -0
- package/dist/core/extensions/loader.d.ts.map +1 -0
- package/dist/core/extensions/loader.js +488 -0
- package/dist/core/extensions/loader.js.map +1 -0
- package/dist/core/extensions/runner.d.ts +159 -0
- package/dist/core/extensions/runner.d.ts.map +1 -0
- package/dist/core/extensions/runner.js +824 -0
- package/dist/core/extensions/runner.js.map +1 -0
- package/dist/core/extensions/types.d.ts +1173 -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 +52 -0
- package/dist/core/footer-data-provider.d.ts.map +1 -0
- package/dist/core/footer-data-provider.js +310 -0
- package/dist/core/footer-data-provider.js.map +1 -0
- package/dist/core/index.d.ts +12 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +12 -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 +295 -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 +150 -0
- package/dist/core/model-registry.d.ts.map +1 -0
- package/dist/core/model-registry.js +728 -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 +495 -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 +198 -0
- package/dist/core/package-manager.d.ts.map +1 -0
- package/dist/core/package-manager.js +1975 -0
- package/dist/core/package-manager.js.map +1 -0
- package/dist/core/prompt-templates.d.ts +52 -0
- package/dist/core/prompt-templates.d.ts.map +1 -0
- package/dist/core/prompt-templates.js +250 -0
- package/dist/core/prompt-templates.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 +33 -0
- package/dist/core/provider-display-names.js.map +1 -0
- package/dist/core/provider-setup-check.d.ts +14 -0
- package/dist/core/provider-setup-check.d.ts.map +1 -0
- package/dist/core/provider-setup-check.js +22 -0
- package/dist/core/provider-setup-check.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 +194 -0
- package/dist/core/resource-loader.d.ts.map +1 -0
- package/dist/core/resource-loader.js +727 -0
- package/dist/core/resource-loader.js.map +1 -0
- package/dist/core/sdk.d.ts +107 -0
- package/dist/core/sdk.d.ts.map +1 -0
- package/dist/core/sdk.js +282 -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 +38 -0
- package/dist/core/session-cwd.js.map +1 -0
- package/dist/core/session-manager.d.ts +333 -0
- package/dist/core/session-manager.d.ts.map +1 -0
- package/dist/core/session-manager.js +1109 -0
- package/dist/core/session-manager.js.map +1 -0
- package/dist/core/settings-manager.d.ts +261 -0
- package/dist/core/settings-manager.d.ts.map +1 -0
- package/dist/core/settings-manager.js +782 -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 +404 -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 +25 -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 +120 -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 +335 -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 +338 -0
- package/dist/core/tools/edit-diff.js.map +1 -0
- package/dist/core/tools/edit.d.ts +49 -0
- package/dist/core/tools/edit.d.ts.map +1 -0
- package/dist/core/tools/edit.js +324 -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 +35 -0
- package/dist/core/tools/find.d.ts.map +1 -0
- package/dist/core/tools/find.js +298 -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 +304 -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 +169 -0
- package/dist/core/tools/ls.js.map +1 -0
- package/dist/core/tools/output-accumulator.d.ts +50 -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 +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 +35 -0
- package/dist/core/tools/read.d.ts.map +1 -0
- package/dist/core/tools/read.js +289 -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 +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 +205 -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 +213 -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 +41 -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 +583 -0
- package/dist/main.js.map +1 -0
- package/dist/migrations.d.ts +61 -0
- package/dist/migrations.d.ts.map +1 -0
- package/dist/migrations.js +456 -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/assets/clankolas.png +0 -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 +20 -0
- package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/assistant-message.js +121 -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 +54 -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 +503 -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/earendil-announcement.d.ts +5 -0
- package/dist/modes/interactive/components/earendil-announcement.d.ts.map +1 -0
- package/dist/modes/interactive/components/earendil-announcement.js +40 -0
- package/dist/modes/interactive/components/earendil-announcement.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 +26 -0
- package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/extension-selector.js +83 -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 +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 +46 -0
- package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -0
- package/dist/modes/interactive/components/login-dialog.js +160 -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 +278 -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 +165 -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 +290 -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 +96 -0
- package/dist/modes/interactive/components/session-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/session-selector.js +861 -0
- package/dist/modes/interactive/components/session-selector.js.map +1 -0
- package/dist/modes/interactive/components/settings-selector.d.ts +67 -0
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/settings-selector.js +375 -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 +63 -0
- package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -0
- package/dist/modes/interactive/components/tool-execution.js +295 -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 +1093 -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 +114 -0
- package/dist/modes/interactive/components/user-message-selector.js.map +1 -0
- package/dist/modes/interactive/components/user-message.d.ts +10 -0
- package/dist/modes/interactive/components/user-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/user-message.js +29 -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 +369 -0
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-mode.js +4612 -0
- package/dist/modes/interactive/interactive-mode.js.map +1 -0
- package/dist/modes/interactive/theme/aery.json +84 -0
- package/dist/modes/interactive/theme/catppuccin-mocha.json +81 -0
- package/dist/modes/interactive/theme/dark.json +85 -0
- package/dist/modes/interactive/theme/dracula.json +81 -0
- package/dist/modes/interactive/theme/light.json +84 -0
- package/dist/modes/interactive/theme/nord.json +81 -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 +973 -0
- package/dist/modes/interactive/theme/theme.js.map +1 -0
- package/dist/modes/interactive/theme/tokyo-night.json +81 -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 +131 -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 +224 -0
- package/dist/modes/rpc/rpc-client.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-client.js +410 -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 +601 -0
- package/dist/modes/rpc/rpc-mode.js.map +1 -0
- package/dist/modes/rpc/rpc-types.d.ts +419 -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 +4 -0
- package/dist/package-manager-cli.d.ts.map +1 -0
- package/dist/package-manager-cli.js +460 -0
- package/dist/package-manager-cli.js.map +1 -0
- package/dist/utils/aery-user-agent.d.ts +2 -0
- package/dist/utils/aery-user-agent.d.ts.map +1 -0
- package/dist/utils/aery-user-agent.js +5 -0
- package/dist/utils/aery-user-agent.js.map +1 -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 +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 +12 -0
- package/dist/utils/child-process.d.ts.map +1 -0
- package/dist/utils/child-process.js +86 -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 +117 -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/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 +163 -0
- package/dist/utils/git.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.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 +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/paths.d.ts +16 -0
- package/dist/utils/paths.d.ts.map +1 -0
- package/dist/utils/paths.js +50 -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/pi-user-agent.d.ts +2 -0
- package/dist/utils/pi-user-agent.d.ts.map +1 -0
- package/dist/utils/pi-user-agent.js +5 -0
- package/dist/utils/pi-user-agent.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 +190 -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 +325 -0
- package/dist/utils/tools-manager.js.map +1 -0
- package/dist/utils/uuid.d.ts +2 -0
- package/dist/utils/uuid.d.ts.map +1 -0
- package/dist/utils/uuid.js +40 -0
- package/dist/utils/uuid.js.map +1 -0
- package/dist/utils/version-check.d.ts +14 -0
- package/dist/utils/version-check.d.ts.map +1 -0
- package/dist/utils/version-check.js +77 -0
- package/dist/utils/version-check.js.map +1 -0
- package/docs/compaction.md +17 -17
- package/docs/custom-provider.md +42 -33
- package/docs/development.md +4 -4
- package/docs/docs.json +148 -0
- package/docs/extensions.md +308 -80
- 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 +70 -0
- package/docs/json.md +4 -4
- package/docs/keybindings.md +2 -2
- package/docs/models.md +84 -5
- package/docs/packages.md +15 -10
- package/docs/prompt-templates.md +2 -2
- package/docs/providers.md +68 -20
- package/docs/quickstart.md +142 -0
- package/docs/rpc.md +6 -6
- package/docs/sdk.md +58 -78
- package/docs/{session.md → session-format.md} +8 -8
- package/docs/sessions.md +137 -0
- package/docs/settings.md +49 -17
- package/docs/shell-aliases.md +1 -1
- package/docs/skills.md +4 -4
- package/docs/terminal-setup.md +2 -2
- package/docs/termux.md +6 -6
- package/docs/themes.md +6 -6
- package/docs/tmux.md +0 -0
- package/docs/tui.md +22 -22
- package/docs/usage.md +277 -0
- package/docs/windows.md +1 -1
- package/examples/README.md +0 -0
- package/examples/extensions/README.md +6 -6
- package/examples/extensions/antigravity-image-gen.ts +18 -18
- package/examples/extensions/auto-commit-on-exit.ts +1 -1
- package/examples/extensions/bash-spawn-hook.ts +3 -3
- package/examples/extensions/bookmark.ts +1 -1
- package/examples/extensions/border-status-editor.ts +145 -0
- package/examples/extensions/built-in-tool-renderer.ts +3 -3
- package/examples/extensions/claude-rules.ts +2 -2
- package/examples/extensions/commands.ts +2 -2
- package/examples/extensions/confirm-destructive.ts +1 -1
- package/examples/extensions/custom-compaction.ts +3 -3
- package/examples/extensions/custom-footer.ts +3 -3
- package/examples/extensions/custom-header.ts +2 -2
- package/examples/extensions/custom-provider-anthropic/index.ts +2 -2
- package/examples/extensions/custom-provider-anthropic/package-lock.json +4 -4
- package/examples/extensions/custom-provider-anthropic/package.json +2 -2
- package/examples/extensions/custom-provider-gitlab-duo/index.ts +2 -2
- package/examples/extensions/custom-provider-gitlab-duo/package.json +2 -2
- package/examples/extensions/custom-provider-gitlab-duo/test.ts +1 -1
- package/examples/extensions/custom-provider-qwen-cli/index.ts +3 -3
- package/examples/extensions/custom-provider-qwen-cli/package.json +2 -2
- package/examples/extensions/dirty-repo-guard.ts +1 -1
- package/examples/extensions/doom-overlay/README.md +0 -0
- package/examples/extensions/doom-overlay/doom/build/doom.js +0 -0
- package/examples/extensions/doom-overlay/doom/doomgeneric_pi.c +0 -0
- package/examples/extensions/doom-overlay/doom-component.ts +2 -2
- package/examples/extensions/doom-overlay/doom-engine.ts +0 -0
- package/examples/extensions/doom-overlay/doom-keys.ts +1 -1
- package/examples/extensions/doom-overlay/index.ts +1 -1
- package/examples/extensions/doom-overlay/wad-finder.ts +0 -0
- package/examples/extensions/dynamic-resources/SKILL.md +0 -0
- package/examples/extensions/dynamic-resources/dynamic.json +1 -1
- package/examples/extensions/dynamic-resources/dynamic.md +0 -0
- package/examples/extensions/dynamic-resources/index.ts +1 -1
- package/examples/extensions/dynamic-tools.ts +3 -3
- package/examples/extensions/event-bus.ts +1 -1
- package/examples/extensions/file-trigger.ts +1 -1
- package/examples/extensions/git-checkpoint.ts +1 -1
- package/examples/extensions/github-issue-autocomplete.ts +185 -0
- package/examples/extensions/handoff.ts +52 -14
- package/examples/extensions/hello.ts +2 -2
- package/examples/extensions/hidden-thinking-label.ts +1 -1
- package/examples/extensions/inline-bash.ts +1 -1
- package/examples/extensions/input-transform.ts +1 -1
- package/examples/extensions/interactive-shell.ts +1 -1
- package/examples/extensions/mac-system-theme.ts +1 -1
- package/examples/extensions/message-renderer.ts +2 -2
- package/examples/extensions/minimal-mode.ts +3 -3
- package/examples/extensions/modal-editor.ts +2 -2
- package/examples/extensions/model-status.ts +1 -1
- package/examples/extensions/notify.ts +1 -1
- package/examples/extensions/overlay-qa-tests.ts +3 -3
- package/examples/extensions/overlay-test.ts +2 -2
- package/examples/extensions/permission-gate.ts +1 -1
- package/examples/extensions/pirate.ts +2 -2
- package/examples/extensions/plan-mode/README.md +0 -0
- package/examples/extensions/plan-mode/index.ts +4 -4
- package/examples/extensions/plan-mode/utils.ts +0 -0
- package/examples/extensions/preset.ts +15 -9
- package/examples/extensions/prompt-customizer.ts +97 -0
- package/examples/extensions/protected-paths.ts +1 -1
- package/examples/extensions/provider-payload.ts +2 -2
- package/examples/extensions/qna.ts +3 -3
- package/examples/extensions/question.ts +3 -3
- package/examples/extensions/questionnaire.ts +3 -3
- package/examples/extensions/rainbow-editor.ts +1 -1
- package/examples/extensions/reload-runtime.ts +2 -2
- package/examples/extensions/rpc-demo.ts +1 -1
- package/examples/extensions/sandbox/index.ts +8 -8
- package/examples/extensions/sandbox/package-lock.json +7 -7
- package/examples/extensions/sandbox/package.json +2 -2
- package/examples/extensions/send-user-message.ts +1 -1
- package/examples/extensions/session-name.ts +1 -1
- package/examples/extensions/shutdown-command.ts +2 -2
- package/examples/extensions/snake.ts +2 -2
- package/examples/extensions/space-invaders.ts +2 -2
- package/examples/extensions/ssh.ts +2 -2
- package/examples/extensions/status-line.ts +1 -1
- package/examples/extensions/stitch.ts +168 -0
- package/examples/extensions/structured-output.ts +65 -0
- package/examples/extensions/subagent/README.md +11 -11
- package/examples/extensions/subagent/agents/aery-agent.md +22 -0
- package/examples/extensions/subagent/agents/aery-ai.md +25 -0
- package/examples/extensions/subagent/agents/aery-core.md +19 -0
- package/examples/extensions/subagent/agents/aery-mom.md +25 -0
- package/examples/extensions/subagent/agents/aery-pods.md +24 -0
- package/examples/extensions/subagent/agents/aery-review.md +22 -0
- package/examples/extensions/subagent/agents/aery-tui.md +24 -0
- package/examples/extensions/subagent/agents/planner.md +0 -0
- package/examples/extensions/subagent/agents/reviewer.md +0 -0
- package/examples/extensions/subagent/agents/scout.md +0 -0
- package/examples/extensions/subagent/agents/worker.md +0 -0
- package/examples/extensions/subagent/agents.ts +2 -2
- package/examples/extensions/subagent/index.ts +9 -9
- package/examples/extensions/subagent/prompts/implement-and-review.md +0 -0
- package/examples/extensions/subagent/prompts/implement.md +0 -0
- package/examples/extensions/subagent/prompts/scout-and-plan.md +0 -0
- package/examples/extensions/summarize.ts +4 -4
- package/examples/extensions/system-prompt-header.ts +1 -1
- package/examples/extensions/tic-tac-toe.ts +4 -4
- package/examples/extensions/timed-confirm.ts +1 -1
- package/examples/extensions/titlebar-spinner.ts +1 -1
- package/examples/extensions/todo.ts +4 -4
- package/examples/extensions/tool-override.ts +3 -3
- package/examples/extensions/tools.ts +4 -4
- package/examples/extensions/trigger-compact.ts +1 -1
- package/examples/extensions/truncated-tool.ts +4 -4
- package/examples/extensions/widget-placement.ts +1 -1
- package/examples/extensions/with-deps/index.ts +2 -2
- package/examples/extensions/with-deps/package-lock.json +4 -4
- package/examples/extensions/with-deps/package.json +2 -2
- package/examples/extensions/working-indicator.ts +1 -1
- package/examples/extensions/working-message-test.ts +25 -0
- package/examples/rpc-extension-ui.ts +1 -1
- package/examples/sdk/01-minimal.ts +16 -12
- package/examples/sdk/02-custom-model.ts +14 -10
- package/examples/sdk/03-custom-prompt.ts +26 -18
- package/examples/sdk/04-skills.ts +4 -4
- package/examples/sdk/05-tools.ts +9 -5
- package/examples/sdk/06-extensions.ts +15 -11
- package/examples/sdk/07-context-files.ts +3 -3
- package/examples/sdk/08-prompt-templates.ts +4 -4
- package/examples/sdk/09-api-keys-and-oauth.ts +11 -7
- package/examples/sdk/10-settings.ts +5 -5
- package/examples/sdk/11-sessions.ts +5 -1
- package/examples/sdk/12-full-control.ts +13 -9
- package/examples/sdk/13-session-runtime.ts +1 -1
- package/examples/sdk/README.md +8 -11
- package/package.json +94 -101
- package/docs/tree.md +0 -233
package/dist/cli/args.js
ADDED
|
@@ -0,0 +1,341 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI argument parsing and help display
|
|
3
|
+
*/
|
|
4
|
+
import chalk from "chalk";
|
|
5
|
+
import { APP_NAME, CONFIG_DIR_NAME, ENV_AGENT_DIR, ENV_SESSION_DIR } from "../config.js";
|
|
6
|
+
const VALID_THINKING_LEVELS = ["off", "minimal", "low", "medium", "high", "xhigh"];
|
|
7
|
+
export function isValidThinkingLevel(level) {
|
|
8
|
+
return VALID_THINKING_LEVELS.includes(level);
|
|
9
|
+
}
|
|
10
|
+
export function parseArgs(args) {
|
|
11
|
+
const result = {
|
|
12
|
+
messages: [],
|
|
13
|
+
fileArgs: [],
|
|
14
|
+
unknownFlags: new Map(),
|
|
15
|
+
diagnostics: [],
|
|
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 = result.appendSystemPrompt ?? [];
|
|
51
|
+
result.appendSystemPrompt.push(args[++i]);
|
|
52
|
+
}
|
|
53
|
+
else if (arg === "--no-session") {
|
|
54
|
+
result.noSession = true;
|
|
55
|
+
}
|
|
56
|
+
else if (arg === "--session" && i + 1 < args.length) {
|
|
57
|
+
result.session = args[++i];
|
|
58
|
+
}
|
|
59
|
+
else if (arg === "--fork" && i + 1 < args.length) {
|
|
60
|
+
result.fork = args[++i];
|
|
61
|
+
}
|
|
62
|
+
else if (arg === "--session-dir" && i + 1 < args.length) {
|
|
63
|
+
result.sessionDir = args[++i];
|
|
64
|
+
}
|
|
65
|
+
else if (arg === "--models" && i + 1 < args.length) {
|
|
66
|
+
result.models = args[++i].split(",").map((s) => s.trim());
|
|
67
|
+
}
|
|
68
|
+
else if (arg === "--no-tools" || arg === "-nt") {
|
|
69
|
+
result.noTools = true;
|
|
70
|
+
}
|
|
71
|
+
else if (arg === "--no-builtin-tools" || arg === "-nbt") {
|
|
72
|
+
result.noBuiltinTools = true;
|
|
73
|
+
}
|
|
74
|
+
else if ((arg === "--tools" || arg === "-t") && i + 1 < args.length) {
|
|
75
|
+
result.tools = args[++i]
|
|
76
|
+
.split(",")
|
|
77
|
+
.map((s) => s.trim())
|
|
78
|
+
.filter((name) => name.length > 0);
|
|
79
|
+
}
|
|
80
|
+
else if (arg === "--thinking" && i + 1 < args.length) {
|
|
81
|
+
const level = args[++i];
|
|
82
|
+
if (isValidThinkingLevel(level)) {
|
|
83
|
+
result.thinking = level;
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
result.diagnostics.push({
|
|
87
|
+
type: "warning",
|
|
88
|
+
message: `Invalid thinking level "${level}". Valid values: ${VALID_THINKING_LEVELS.join(", ")}`,
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
else if (arg === "--print" || arg === "-p") {
|
|
93
|
+
result.print = true;
|
|
94
|
+
const next = args[i + 1];
|
|
95
|
+
if (next !== undefined && !next.startsWith("@") && (!next.startsWith("-") || next.startsWith("---"))) {
|
|
96
|
+
result.messages.push(next);
|
|
97
|
+
i++;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
else if (arg === "--export" && i + 1 < args.length) {
|
|
101
|
+
result.export = args[++i];
|
|
102
|
+
}
|
|
103
|
+
else if ((arg === "--extension" || arg === "-e") && i + 1 < args.length) {
|
|
104
|
+
result.extensions = result.extensions ?? [];
|
|
105
|
+
result.extensions.push(args[++i]);
|
|
106
|
+
}
|
|
107
|
+
else if (arg === "--no-extensions" || arg === "-ne") {
|
|
108
|
+
result.noExtensions = true;
|
|
109
|
+
}
|
|
110
|
+
else if (arg === "--skill" && i + 1 < args.length) {
|
|
111
|
+
result.skills = result.skills ?? [];
|
|
112
|
+
result.skills.push(args[++i]);
|
|
113
|
+
}
|
|
114
|
+
else if (arg === "--prompt-template" && i + 1 < args.length) {
|
|
115
|
+
result.promptTemplates = result.promptTemplates ?? [];
|
|
116
|
+
result.promptTemplates.push(args[++i]);
|
|
117
|
+
}
|
|
118
|
+
else if (arg === "--theme" && i + 1 < args.length) {
|
|
119
|
+
result.themes = result.themes ?? [];
|
|
120
|
+
result.themes.push(args[++i]);
|
|
121
|
+
}
|
|
122
|
+
else if (arg === "--no-skills" || arg === "-ns") {
|
|
123
|
+
result.noSkills = true;
|
|
124
|
+
}
|
|
125
|
+
else if (arg === "--no-prompt-templates" || arg === "-np") {
|
|
126
|
+
result.noPromptTemplates = true;
|
|
127
|
+
}
|
|
128
|
+
else if (arg === "--no-themes") {
|
|
129
|
+
result.noThemes = true;
|
|
130
|
+
}
|
|
131
|
+
else if (arg === "--no-context-files" || arg === "-nc") {
|
|
132
|
+
result.noContextFiles = true;
|
|
133
|
+
}
|
|
134
|
+
else if (arg === "--list-models") {
|
|
135
|
+
// Check if next arg is a search pattern (not a flag or file arg)
|
|
136
|
+
if (i + 1 < args.length && !args[i + 1].startsWith("-") && !args[i + 1].startsWith("@")) {
|
|
137
|
+
result.listModels = args[++i];
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
result.listModels = true;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
else if (arg === "--verbose") {
|
|
144
|
+
result.verbose = true;
|
|
145
|
+
}
|
|
146
|
+
else if (arg === "--offline") {
|
|
147
|
+
result.offline = true;
|
|
148
|
+
}
|
|
149
|
+
else if (arg.startsWith("@")) {
|
|
150
|
+
result.fileArgs.push(arg.slice(1)); // Remove @ prefix
|
|
151
|
+
}
|
|
152
|
+
else if (arg.startsWith("--")) {
|
|
153
|
+
const eqIndex = arg.indexOf("=");
|
|
154
|
+
if (eqIndex !== -1) {
|
|
155
|
+
result.unknownFlags.set(arg.slice(2, eqIndex), arg.slice(eqIndex + 1));
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
const flagName = arg.slice(2);
|
|
159
|
+
const next = args[i + 1];
|
|
160
|
+
if (next !== undefined && !next.startsWith("-") && !next.startsWith("@")) {
|
|
161
|
+
result.unknownFlags.set(flagName, next);
|
|
162
|
+
i++;
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
result.unknownFlags.set(flagName, true);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
else if (arg.startsWith("-") && !arg.startsWith("--")) {
|
|
170
|
+
result.diagnostics.push({ type: "error", message: `Unknown option: ${arg}` });
|
|
171
|
+
}
|
|
172
|
+
else if (!arg.startsWith("-")) {
|
|
173
|
+
result.messages.push(arg);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
return result;
|
|
177
|
+
}
|
|
178
|
+
export function printHelp(extensionFlags) {
|
|
179
|
+
const extensionFlagsText = extensionFlags && extensionFlags.length > 0
|
|
180
|
+
? `\n${chalk.bold("Extension CLI Flags:")}\n${extensionFlags
|
|
181
|
+
.map((flag) => {
|
|
182
|
+
const value = flag.type === "string" ? " <value>" : "";
|
|
183
|
+
const description = flag.description ?? `Registered by ${flag.extensionPath}`;
|
|
184
|
+
return ` --${flag.name}${value}`.padEnd(30) + description;
|
|
185
|
+
})
|
|
186
|
+
.join("\n")}\n`
|
|
187
|
+
: "";
|
|
188
|
+
console.log(`${chalk.bold(APP_NAME)} - AI coding assistant with read, bash, edit, write tools
|
|
189
|
+
|
|
190
|
+
${chalk.bold("Usage:")}
|
|
191
|
+
${APP_NAME} [options] [@files...] [messages...]
|
|
192
|
+
|
|
193
|
+
${chalk.bold("Commands:")}
|
|
194
|
+
${APP_NAME} install <source> [-l] Install extension source and add to settings
|
|
195
|
+
${APP_NAME} remove <source> [-l] Remove extension source from settings
|
|
196
|
+
${APP_NAME} uninstall <source> [-l] Alias for remove
|
|
197
|
+
${APP_NAME} update [source|self|pi] Update pi and installed extensions
|
|
198
|
+
${APP_NAME} list List installed extensions from settings
|
|
199
|
+
${APP_NAME} config Open TUI to enable/disable package resources
|
|
200
|
+
${APP_NAME} <command> --help Show help for install/remove/uninstall/update/list
|
|
201
|
+
|
|
202
|
+
${chalk.bold("Options:")}
|
|
203
|
+
--provider <name> Provider name (default: google)
|
|
204
|
+
--model <pattern> Model pattern or ID (supports "provider/id" and optional ":<thinking>")
|
|
205
|
+
--api-key <key> API key (defaults to env vars)
|
|
206
|
+
--system-prompt <text> System prompt (default: coding assistant prompt)
|
|
207
|
+
--append-system-prompt <text> Append text or file contents to the system prompt (can be used multiple times)
|
|
208
|
+
--mode <mode> Output mode: text (default), json, or rpc
|
|
209
|
+
--print, -p Non-interactive mode: process prompt and exit
|
|
210
|
+
--continue, -c Continue previous session
|
|
211
|
+
--resume, -r Select a session to resume
|
|
212
|
+
--session <path|id> Use specific session file or partial UUID
|
|
213
|
+
--fork <path|id> Fork specific session file or partial UUID into a new session
|
|
214
|
+
--session-dir <dir> Directory for session storage and lookup
|
|
215
|
+
--no-session Don't save session (ephemeral)
|
|
216
|
+
--models <patterns> Comma-separated model patterns for Ctrl+P cycling
|
|
217
|
+
Supports globs (anthropic/*, *sonnet*) and fuzzy matching
|
|
218
|
+
--no-tools, -nt Disable all tools by default (built-in and extension)
|
|
219
|
+
--no-builtin-tools, -nbt Disable built-in tools by default but keep extension/custom tools enabled
|
|
220
|
+
--tools, -t <tools> Comma-separated allowlist of tool names to enable
|
|
221
|
+
Applies to built-in, extension, and custom tools
|
|
222
|
+
--thinking <level> Set thinking level: off, minimal, low, medium, high, xhigh
|
|
223
|
+
--extension, -e <path> Load an extension file (can be used multiple times)
|
|
224
|
+
--no-extensions, -ne Disable extension discovery (explicit -e paths still work)
|
|
225
|
+
--skill <path> Load a skill file or directory (can be used multiple times)
|
|
226
|
+
--no-skills, -ns Disable skills discovery and loading
|
|
227
|
+
--prompt-template <path> Load a prompt template file or directory (can be used multiple times)
|
|
228
|
+
--no-prompt-templates, -np Disable prompt template discovery and loading
|
|
229
|
+
--theme <path> Load a theme file or directory (can be used multiple times)
|
|
230
|
+
--no-themes Disable theme discovery and loading
|
|
231
|
+
--no-context-files, -nc Disable AGENTS.md and CLAUDE.md discovery and loading
|
|
232
|
+
--export <file> Export session file to HTML and exit
|
|
233
|
+
--list-models [search] List available models (with optional fuzzy search)
|
|
234
|
+
--verbose Force verbose startup (overrides quietStartup setting)
|
|
235
|
+
--offline Disable startup network operations (same as AERY_OFFLINE=1)
|
|
236
|
+
--help, -h Show this help
|
|
237
|
+
--version, -v Show version number
|
|
238
|
+
|
|
239
|
+
Extensions can register additional flags (e.g., --plan from plan-mode extension).${extensionFlagsText}
|
|
240
|
+
|
|
241
|
+
${chalk.bold("Examples:")}
|
|
242
|
+
# Interactive mode
|
|
243
|
+
${APP_NAME}
|
|
244
|
+
|
|
245
|
+
# Interactive mode with initial prompt
|
|
246
|
+
${APP_NAME} "List all .ts files in src/"
|
|
247
|
+
|
|
248
|
+
# Include files in initial message
|
|
249
|
+
${APP_NAME} @prompt.md @image.png "What color is the sky?"
|
|
250
|
+
|
|
251
|
+
# Non-interactive mode (process and exit)
|
|
252
|
+
${APP_NAME} -p "List all .ts files in src/"
|
|
253
|
+
|
|
254
|
+
# Multiple messages (interactive)
|
|
255
|
+
${APP_NAME} "Read package.json" "What dependencies do we have?"
|
|
256
|
+
|
|
257
|
+
# Continue previous session
|
|
258
|
+
${APP_NAME} --continue "What did we discuss?"
|
|
259
|
+
|
|
260
|
+
# Use different model
|
|
261
|
+
${APP_NAME} --provider openai --model gpt-4o-mini "Help me refactor this code"
|
|
262
|
+
|
|
263
|
+
# Use model with provider prefix (no --provider needed)
|
|
264
|
+
${APP_NAME} --model openai/gpt-4o "Help me refactor this code"
|
|
265
|
+
|
|
266
|
+
# Use model with thinking level shorthand
|
|
267
|
+
${APP_NAME} --model sonnet:high "Solve this complex problem"
|
|
268
|
+
|
|
269
|
+
# Limit model cycling to specific models
|
|
270
|
+
${APP_NAME} --models claude-sonnet,claude-haiku,gpt-4o
|
|
271
|
+
|
|
272
|
+
# Limit to a specific provider with glob pattern
|
|
273
|
+
${APP_NAME} --models "github-copilot/*"
|
|
274
|
+
|
|
275
|
+
# Cycle models with fixed thinking levels
|
|
276
|
+
${APP_NAME} --models sonnet:high,haiku:low
|
|
277
|
+
|
|
278
|
+
# Start with a specific thinking level
|
|
279
|
+
${APP_NAME} --thinking high "Solve this complex problem"
|
|
280
|
+
|
|
281
|
+
# Read-only mode (no file modifications possible)
|
|
282
|
+
${APP_NAME} --tools read,grep,find,ls -p "Review the code in src/"
|
|
283
|
+
|
|
284
|
+
# Export a session file to HTML
|
|
285
|
+
${APP_NAME} --export ~/${CONFIG_DIR_NAME}/agent/sessions/--path--/session.jsonl
|
|
286
|
+
${APP_NAME} --export session.jsonl output.html
|
|
287
|
+
|
|
288
|
+
${chalk.bold("Environment Variables:")}
|
|
289
|
+
ANTHROPIC_API_KEY - Anthropic Claude API key
|
|
290
|
+
ANTHROPIC_OAUTH_TOKEN - Anthropic OAuth token (alternative to API key)
|
|
291
|
+
OPENAI_API_KEY - OpenAI GPT API key
|
|
292
|
+
AZURE_OPENAI_API_KEY - Azure OpenAI API key
|
|
293
|
+
AZURE_OPENAI_BASE_URL - Azure OpenAI/Cognitive Services base URL (e.g. https://{resource}.openai.azure.com)
|
|
294
|
+
AZURE_OPENAI_RESOURCE_NAME - Azure OpenAI resource name (alternative to base URL)
|
|
295
|
+
AZURE_OPENAI_AAERY_VERSION - Azure OpenAI API version (default: v1)
|
|
296
|
+
AZURE_OPENAI_DEPLOYMENT_NAME_MAP - Azure OpenAI model=deployment map (comma-separated)
|
|
297
|
+
DEEPSEEK_API_KEY - DeepSeek API key
|
|
298
|
+
GEMINI_API_KEY - Google Gemini API key
|
|
299
|
+
GROQ_API_KEY - Groq API key
|
|
300
|
+
CEREBRAS_API_KEY - Cerebras API key
|
|
301
|
+
XAI_API_KEY - xAI Grok API key
|
|
302
|
+
FIREWORKS_API_KEY - Fireworks API key
|
|
303
|
+
TOGETHER_API_KEY - Together AI API key
|
|
304
|
+
OPENROUTER_API_KEY - OpenRouter API key
|
|
305
|
+
AI_GATEWAY_API_KEY - Vercel AI Gateway API key
|
|
306
|
+
ZAI_API_KEY - ZAI API key
|
|
307
|
+
MISTRAL_API_KEY - Mistral API key
|
|
308
|
+
MINIMAX_API_KEY - MiniMax API key
|
|
309
|
+
MOONSHOT_API_KEY - Moonshot AI API key
|
|
310
|
+
OPENCODE_API_KEY - OpenCode Zen/OpenCode Go API key
|
|
311
|
+
KIMI_API_KEY - Kimi For Coding API key
|
|
312
|
+
CLOUDFLARE_API_KEY - Cloudflare API token (Workers AI and AI Gateway)
|
|
313
|
+
CLOUDFLARE_ACCOUNT_ID - Cloudflare account id (required for both)
|
|
314
|
+
CLOUDFLARE_GATEWAY_ID - Cloudflare AI Gateway slug (required for AI Gateway)
|
|
315
|
+
XIAOMI_API_KEY - Xiaomi MiMo API key (api.xiaomimimo.com billing)
|
|
316
|
+
XIAOMI_TOKEN_PLAN_CN_API_KEY - Xiaomi MiMo Token Plan API key (China region)
|
|
317
|
+
XIAOMI_TOKEN_PLAN_AMS_API_KEY - Xiaomi MiMo Token Plan API key (Amsterdam region)
|
|
318
|
+
XIAOMI_TOKEN_PLAN_SGP_API_KEY - Xiaomi MiMo Token Plan API key (Singapore region)
|
|
319
|
+
AWS_PROFILE - AWS profile for Amazon Bedrock
|
|
320
|
+
AWS_ACCESS_KEY_ID - AWS access key for Amazon Bedrock
|
|
321
|
+
AWS_SECRET_ACCESS_KEY - AWS secret key for Amazon Bedrock
|
|
322
|
+
AWS_BEARER_TOKEN_BEDROCK - Bedrock API key (bearer token)
|
|
323
|
+
AWS_REGION - AWS region for Amazon Bedrock (e.g., us-east-1)
|
|
324
|
+
${ENV_AGENT_DIR.padEnd(32)} - Config directory (default: ~/${CONFIG_DIR_NAME}/agent)
|
|
325
|
+
${ENV_SESSION_DIR.padEnd(32)} - Session storage directory (overridden by --session-dir)
|
|
326
|
+
AERY_PACKAGE_DIR - Override package directory (for Nix/Guix store paths)
|
|
327
|
+
AERY_OFFLINE - Disable startup network operations when set to 1/true/yes
|
|
328
|
+
AERY_TELEMETRY - Override install telemetry when set to 1/true/yes or 0/false/no
|
|
329
|
+
AERY_SHARE_VIEWER_URL - Base URL for /share command (default: https://eminent337.github.io/session/)
|
|
330
|
+
|
|
331
|
+
${chalk.bold("Built-in Tool Names:")}
|
|
332
|
+
read - Read file contents
|
|
333
|
+
bash - Execute bash commands
|
|
334
|
+
edit - Edit files with find/replace
|
|
335
|
+
write - Write files (creates/overwrites)
|
|
336
|
+
grep - Search file contents (read-only, off by default)
|
|
337
|
+
find - Find files by glob pattern (read-only, off by default)
|
|
338
|
+
ls - List directory contents (read-only, off by default)
|
|
339
|
+
`);
|
|
340
|
+
}
|
|
341
|
+
//# sourceMappingURL=args.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"args.js","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * CLI argument parsing and help display\n */\n\nimport type { ThinkingLevel } from \"@eminent337/aery-core\";\nimport chalk from \"chalk\";\nimport { APP_NAME, CONFIG_DIR_NAME, ENV_AGENT_DIR, ENV_SESSION_DIR } from \"../config.js\";\nimport type { ExtensionFlag } from \"../core/extensions/types.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?: string[];\n\tnoTools?: boolean;\n\tnoBuiltinTools?: 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\tnoContextFiles?: 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\tdiagnostics: Array<{ type: \"warning\" | \"error\"; message: 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[]): Args {\n\tconst result: Args = {\n\t\tmessages: [],\n\t\tfileArgs: [],\n\t\tunknownFlags: new Map(),\n\t\tdiagnostics: [],\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 = result.appendSystemPrompt ?? [];\n\t\t\tresult.appendSystemPrompt.push(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\" || arg === \"-nt\") {\n\t\t\tresult.noTools = true;\n\t\t} else if (arg === \"--no-builtin-tools\" || arg === \"-nbt\") {\n\t\t\tresult.noBuiltinTools = true;\n\t\t} else if ((arg === \"--tools\" || arg === \"-t\") && i + 1 < args.length) {\n\t\t\tresult.tools = args[++i]\n\t\t\t\t.split(\",\")\n\t\t\t\t.map((s) => s.trim())\n\t\t\t\t.filter((name) => name.length > 0);\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\tresult.diagnostics.push({\n\t\t\t\t\ttype: \"warning\",\n\t\t\t\t\tmessage: `Invalid thinking level \"${level}\". Valid values: ${VALID_THINKING_LEVELS.join(\", \")}`,\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\tconst next = args[i + 1];\n\t\t\tif (next !== undefined && !next.startsWith(\"@\") && (!next.startsWith(\"-\") || next.startsWith(\"---\"))) {\n\t\t\t\tresult.messages.push(next);\n\t\t\t\ti++;\n\t\t\t}\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 === \"--no-context-files\" || arg === \"-nc\") {\n\t\t\tresult.noContextFiles = 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(\"--\")) {\n\t\t\tconst eqIndex = arg.indexOf(\"=\");\n\t\t\tif (eqIndex !== -1) {\n\t\t\t\tresult.unknownFlags.set(arg.slice(2, eqIndex), arg.slice(eqIndex + 1));\n\t\t\t} else {\n\t\t\t\tconst flagName = arg.slice(2);\n\t\t\t\tconst next = args[i + 1];\n\t\t\t\tif (next !== undefined && !next.startsWith(\"-\") && !next.startsWith(\"@\")) {\n\t\t\t\t\tresult.unknownFlags.set(flagName, next);\n\t\t\t\t\ti++;\n\t\t\t\t} else {\n\t\t\t\t\tresult.unknownFlags.set(flagName, true);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (arg.startsWith(\"-\") && !arg.startsWith(\"--\")) {\n\t\t\tresult.diagnostics.push({ type: \"error\", message: `Unknown option: ${arg}` });\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(extensionFlags?: ExtensionFlag[]): void {\n\tconst extensionFlagsText =\n\t\textensionFlags && extensionFlags.length > 0\n\t\t\t? `\\n${chalk.bold(\"Extension CLI Flags:\")}\\n${extensionFlags\n\t\t\t\t\t.map((flag) => {\n\t\t\t\t\t\tconst value = flag.type === \"string\" ? \" <value>\" : \"\";\n\t\t\t\t\t\tconst description = flag.description ?? `Registered by ${flag.extensionPath}`;\n\t\t\t\t\t\treturn ` --${flag.name}${value}`.padEnd(30) + description;\n\t\t\t\t\t})\n\t\t\t\t\t.join(\"\\n\")}\\n`\n\t\t\t: \"\";\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|self|pi] Update pi and installed extensions\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 (can be used multiple times)\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|id> Use specific session file or partial UUID\n --fork <path|id> 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, -nt Disable all tools by default (built-in and extension)\n --no-builtin-tools, -nbt Disable built-in tools by default but keep extension/custom tools enabled\n --tools, -t <tools> Comma-separated allowlist of tool names to enable\n Applies to built-in, extension, and custom tools\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 --no-context-files, -nc Disable AGENTS.md and CLAUDE.md 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 AERY_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).${extensionFlagsText}\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/Cognitive Services base URL (e.g. https://{resource}.openai.azure.com)\n AZURE_OPENAI_RESOURCE_NAME - Azure OpenAI resource name (alternative to base URL)\n AZURE_OPENAI_AAERY_VERSION - Azure OpenAI API version (default: v1)\n AZURE_OPENAI_DEPLOYMENT_NAME_MAP - Azure OpenAI model=deployment map (comma-separated)\n DEEPSEEK_API_KEY - DeepSeek API key\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 FIREWORKS_API_KEY - Fireworks API key\n TOGETHER_API_KEY - Together AI 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 MOONSHOT_API_KEY - Moonshot AI API key\n OPENCODE_API_KEY - OpenCode Zen/OpenCode Go API key\n KIMI_API_KEY - Kimi For Coding API key\n CLOUDFLARE_API_KEY - Cloudflare API token (Workers AI and AI Gateway)\n CLOUDFLARE_ACCOUNT_ID - Cloudflare account id (required for both)\n CLOUDFLARE_GATEWAY_ID - Cloudflare AI Gateway slug (required for AI Gateway)\n XIAOMI_API_KEY - Xiaomi MiMo API key (api.xiaomimimo.com billing)\n XIAOMI_TOKEN_PLAN_CN_API_KEY - Xiaomi MiMo Token Plan API key (China region)\n XIAOMI_TOKEN_PLAN_AMS_API_KEY - Xiaomi MiMo Token Plan API key (Amsterdam region)\n XIAOMI_TOKEN_PLAN_SGP_API_KEY - Xiaomi MiMo Token Plan API key (Singapore region)\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)} - Config directory (default: ~/${CONFIG_DIR_NAME}/agent)\n ${ENV_SESSION_DIR.padEnd(32)} - Session storage directory (overridden by --session-dir)\n AERY_PACKAGE_DIR - Override package directory (for Nix/Guix store paths)\n AERY_OFFLINE - Disable startup network operations when set to 1/true/yes\n AERY_TELEMETRY - Override install telemetry when set to 1/true/yes or 0/false/no\n AERY_SHARE_VIEWER_URL - Base URL for /share command (default: https://eminent337.github.io/session/)\n\n${chalk.bold(\"Built-in Tool Names:\")}\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"]}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import type { AgentSession } from "../core/agent-session.js";
|
|
2
|
+
import type { AgentSessionServices } from "../core/agent-session-services.js";
|
|
3
|
+
export interface CapabilitiesReport {
|
|
4
|
+
version: string;
|
|
5
|
+
cwd: string;
|
|
6
|
+
currentModel?: {
|
|
7
|
+
provider: string;
|
|
8
|
+
id: string;
|
|
9
|
+
thinkingLevel: string;
|
|
10
|
+
supportsImages: boolean;
|
|
11
|
+
supportsThinking: boolean;
|
|
12
|
+
};
|
|
13
|
+
providers: {
|
|
14
|
+
total: number;
|
|
15
|
+
configured: string[];
|
|
16
|
+
};
|
|
17
|
+
models: {
|
|
18
|
+
total: number;
|
|
19
|
+
available: number;
|
|
20
|
+
};
|
|
21
|
+
tools: {
|
|
22
|
+
builtIn: string[];
|
|
23
|
+
active: string[];
|
|
24
|
+
registered: string[];
|
|
25
|
+
};
|
|
26
|
+
commands: {
|
|
27
|
+
builtIn: string[];
|
|
28
|
+
extension: string[];
|
|
29
|
+
prompt: string[];
|
|
30
|
+
skill: string[];
|
|
31
|
+
};
|
|
32
|
+
resources: {
|
|
33
|
+
extensions: number;
|
|
34
|
+
extensionNames: string[];
|
|
35
|
+
extensionErrors: number;
|
|
36
|
+
extensionLoadErrors: Array<{
|
|
37
|
+
path: string;
|
|
38
|
+
error: string;
|
|
39
|
+
}>;
|
|
40
|
+
skills: number;
|
|
41
|
+
prompts: number;
|
|
42
|
+
themes: number;
|
|
43
|
+
contextFiles: number;
|
|
44
|
+
};
|
|
45
|
+
session: {
|
|
46
|
+
persisted: boolean;
|
|
47
|
+
sessionId?: string;
|
|
48
|
+
messages: number;
|
|
49
|
+
toolCalls: number;
|
|
50
|
+
contextPercent?: number | null;
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
export interface CollectCapabilitiesOptions {
|
|
54
|
+
session: AgentSession;
|
|
55
|
+
services: AgentSessionServices;
|
|
56
|
+
version?: string;
|
|
57
|
+
}
|
|
58
|
+
export declare function collectCapabilitiesReport(options: CollectCapabilitiesOptions): CapabilitiesReport;
|
|
59
|
+
export declare function formatCapabilitiesReport(report: CapabilitiesReport): string;
|
|
60
|
+
export declare function runCapabilitiesCommand(args: string[], options: CollectCapabilitiesOptions): Promise<boolean>;
|
|
61
|
+
//# sourceMappingURL=capabilities.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../src/cli/capabilities.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAK9E,MAAM,WAAW,kBAAkB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,CAAC,EAAE;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,EAAE,EAAE,MAAM,CAAC;QACX,aAAa,EAAE,MAAM,CAAC;QACtB,cAAc,EAAE,OAAO,CAAC;QACxB,gBAAgB,EAAE,OAAO,CAAC;KAC1B,CAAC;IACF,SAAS,EAAE;QACV,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;IACF,MAAM,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,KAAK,EAAE;QACN,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,UAAU,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;IACF,QAAQ,EAAE;QACT,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,SAAS,EAAE,MAAM,EAAE,CAAC;QACpB,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,KAAK,EAAE,MAAM,EAAE,CAAC;KAChB,CAAC;IACF,SAAS,EAAE;QACV,UAAU,EAAE,MAAM,CAAC;QACnB,cAAc,EAAE,MAAM,EAAE,CAAC;QACzB,eAAe,EAAE,MAAM,CAAC;QACxB,mBAAmB,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC5D,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,OAAO,EAAE;QACR,SAAS,EAAE,OAAO,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC/B,CAAC;CACF;AAED,MAAM,WAAW,0BAA0B;IAC1C,OAAO,EAAE,YAAY,CAAC;IACtB,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB;AAoBD,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,0BAA0B,GAAG,kBAAkB,CAmEjG;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,kBAAkB,GAAG,MAAM,CAuE3E;AAED,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,0BAA0B,GAAG,OAAO,CAAC,OAAO,CAAC,CAYlH","sourcesContent":["import chalk from \"chalk\";\nimport { VERSION } from \"../config.js\";\nimport type { AgentSession } from \"../core/agent-session.js\";\nimport type { AgentSessionServices } from \"../core/agent-session-services.js\";\nimport { BUILTIN_SLASH_COMMANDS } from \"../core/slash-commands.js\";\n\nconst BUILT_IN_TOOL_NAMES = [\"read\", \"bash\", \"edit\", \"write\", \"grep\", \"find\", \"ls\"] as const;\n\nexport interface CapabilitiesReport {\n\tversion: string;\n\tcwd: string;\n\tcurrentModel?: {\n\t\tprovider: string;\n\t\tid: string;\n\t\tthinkingLevel: string;\n\t\tsupportsImages: boolean;\n\t\tsupportsThinking: boolean;\n\t};\n\tproviders: {\n\t\ttotal: number;\n\t\tconfigured: string[];\n\t};\n\tmodels: {\n\t\ttotal: number;\n\t\tavailable: number;\n\t};\n\ttools: {\n\t\tbuiltIn: string[];\n\t\tactive: string[];\n\t\tregistered: string[];\n\t};\n\tcommands: {\n\t\tbuiltIn: string[];\n\t\textension: string[];\n\t\tprompt: string[];\n\t\tskill: string[];\n\t};\n\tresources: {\n\t\textensions: number;\n\t\textensionNames: string[];\n\t\textensionErrors: number;\n\t\textensionLoadErrors: Array<{ path: string; error: string }>;\n\t\tskills: number;\n\t\tprompts: number;\n\t\tthemes: number;\n\t\tcontextFiles: number;\n\t};\n\tsession: {\n\t\tpersisted: boolean;\n\t\tsessionId?: string;\n\t\tmessages: number;\n\t\ttoolCalls: number;\n\t\tcontextPercent?: number | null;\n\t};\n}\n\nexport interface CollectCapabilitiesOptions {\n\tsession: AgentSession;\n\tservices: AgentSessionServices;\n\tversion?: string;\n}\n\nfunction formatList(values: string[]): string {\n\treturn values.length > 0 ? values.join(\", \") : \"none\";\n}\n\nfunction countLabel(count: number, singular: string, plural = `${singular}s`): string {\n\treturn `${count} ${count === 1 ? singular : plural}`;\n}\n\nfunction formatExtensionName(extensionPath: string): string {\n\tconst coreMarker = \"/core/\";\n\tconst coreIndex = extensionPath.lastIndexOf(coreMarker);\n\tconst raw =\n\t\tcoreIndex >= 0\n\t\t\t? extensionPath.slice(coreIndex + coreMarker.length)\n\t\t\t: (extensionPath.split(\"/\").pop() ?? extensionPath);\n\treturn raw.replace(/\\.ts$/, \"\");\n}\n\nexport function collectCapabilitiesReport(options: CollectCapabilitiesOptions): CapabilitiesReport {\n\tconst { session, services } = options;\n\tconst model = session.model;\n\tconst allModels = services.modelRegistry.getAll();\n\tconst availableModels = services.modelRegistry.getAvailable();\n\tconst providers = [...new Set(allModels.map((item) => item.provider))].sort();\n\tconst configuredProviders = providers\n\t\t.filter((provider) => services.modelRegistry.getProviderAuthStatus(provider).configured)\n\t\t.sort();\n\n\tconst extensionsResult = services.resourceLoader.getExtensions();\n\tconst extensionNames = extensionsResult.extensions.map((extension) => formatExtensionName(extension.path)).sort();\n\tconst extensionCommands = extensionsResult.extensions.flatMap((extension) => Array.from(extension.commands.keys()));\n\tconst extensionTools = extensionsResult.extensions.flatMap((extension) => Array.from(extension.tools.keys()));\n\tconst promptCommands = services.resourceLoader.getPrompts().prompts.map((prompt) => prompt.name);\n\tconst skillCommands = services.resourceLoader.getSkills().skills.map((skill) => `skill:${skill.name}`);\n\tconst stats = session.getSessionStats();\n\n\treturn {\n\t\tversion: options.version ?? VERSION,\n\t\tcwd: services.cwd,\n\t\tcurrentModel: model\n\t\t\t? {\n\t\t\t\t\tprovider: model.provider,\n\t\t\t\t\tid: model.id,\n\t\t\t\t\tthinkingLevel: session.thinkingLevel,\n\t\t\t\t\tsupportsImages: model.input.includes(\"image\"),\n\t\t\t\t\tsupportsThinking: !!model.reasoning,\n\t\t\t\t}\n\t\t\t: undefined,\n\t\tproviders: {\n\t\t\ttotal: providers.length,\n\t\t\tconfigured: configuredProviders,\n\t\t},\n\t\tmodels: {\n\t\t\ttotal: allModels.length,\n\t\t\tavailable: availableModels.length,\n\t\t},\n\t\ttools: {\n\t\t\tbuiltIn: Array.from(BUILT_IN_TOOL_NAMES),\n\t\t\tactive: session.getActiveToolNames(),\n\t\t\tregistered: [...new Set([...session.getAllTools().map((tool) => tool.name), ...extensionTools])].sort(),\n\t\t},\n\t\tcommands: {\n\t\t\tbuiltIn: BUILTIN_SLASH_COMMANDS.map((command) => command.name),\n\t\t\textension: [...new Set(extensionCommands)].sort(),\n\t\t\tprompt: [...new Set(promptCommands)].sort(),\n\t\t\tskill: [...new Set(skillCommands)].sort(),\n\t\t},\n\t\tresources: {\n\t\t\textensions: extensionsResult.extensions.length,\n\t\t\textensionNames,\n\t\t\textensionErrors: extensionsResult.errors.length,\n\t\t\textensionLoadErrors: extensionsResult.errors,\n\t\t\tskills: services.resourceLoader.getSkills().skills.length,\n\t\t\tprompts: services.resourceLoader.getPrompts().prompts.length,\n\t\t\tthemes: services.resourceLoader.getThemes().themes.length,\n\t\t\tcontextFiles: services.resourceLoader.getAgentsFiles().agentsFiles.length,\n\t\t},\n\t\tsession: {\n\t\t\tpersisted: stats.sessionFile !== undefined,\n\t\t\tsessionId: stats.sessionId,\n\t\t\tmessages: stats.totalMessages,\n\t\t\ttoolCalls: stats.toolCalls,\n\t\t\tcontextPercent: stats.contextUsage?.percent,\n\t\t},\n\t};\n}\n\nexport function formatCapabilitiesReport(report: CapabilitiesReport): string {\n\tconst lines: string[] = [];\n\tlines.push(chalk.bold(\"Aery Capabilities\"));\n\tlines.push(\"\");\n\tlines.push(chalk.bold(\"Runtime\"));\n\tlines.push(` version: ${report.version}`);\n\tlines.push(` cwd: ${report.cwd}`);\n\tif (report.currentModel) {\n\t\tconst model = report.currentModel;\n\t\tconst traits = [\n\t\t\tmodel.supportsImages ? \"images\" : \"text-only\",\n\t\t\tmodel.supportsThinking ? \"reasoning\" : \"no reasoning\",\n\t\t].join(\", \");\n\t\tlines.push(` current: ${model.provider}/${model.id}`);\n\t\tlines.push(` thinking: ${model.thinkingLevel}`);\n\t\tlines.push(` model traits: ${traits}`);\n\t} else {\n\t\tlines.push(\" current: no model selected\");\n\t}\n\n\tlines.push(\"\");\n\tlines.push(chalk.bold(\"Built-In Tools\"));\n\tlines.push(` available: ${formatList(report.tools.builtIn)}`);\n\tlines.push(` active: ${formatList(report.tools.active)}`);\n\tlines.push(` registered: ${formatList(report.tools.registered)}`);\n\n\tlines.push(\"\");\n\tlines.push(chalk.bold(\"Commands And Resources\"));\n\tlines.push(\n\t\t` commands: ${report.commands.builtIn.length} built-in, ${report.commands.extension.length} extension, ${report.commands.prompt.length} prompt, ${report.commands.skill.length} skill`,\n\t);\n\tlines.push(` built-in commands: ${formatList(report.commands.builtIn)}`);\n\tlines.push(\n\t\t` extensions: ${report.resources.extensions} loaded, ${report.resources.extensionErrors} ${report.resources.extensionErrors === 1 ? \"error\" : \"errors\"}`,\n\t);\n\tlines.push(` loaded extensions: ${formatList(report.resources.extensionNames)}`);\n\tfor (const error of report.resources.extensionLoadErrors) {\n\t\tlines.push(` extension error: ${error.path}: ${error.error}`);\n\t}\n\tlines.push(\n\t\t` resources: ${countLabel(report.resources.skills, \"skill\")}, ${countLabel(report.resources.prompts, \"prompt\")}, ${countLabel(report.resources.themes, \"theme\")}, ${countLabel(report.resources.contextFiles, \"context file\")}`,\n\t);\n\n\tlines.push(\"\");\n\tlines.push(chalk.bold(\"Models And Providers\"));\n\tlines.push(` providers: ${report.providers.total} known`);\n\tlines.push(` configured: ${formatList(report.providers.configured)}`);\n\tlines.push(` models: ${report.models.available} available of ${report.models.total} known`);\n\n\tlines.push(\"\");\n\tlines.push(chalk.bold(\"Session Intelligence\"));\n\tlines.push(\n\t\t` session: ${report.session.persisted ? \"persisted\" : \"ephemeral\"}${report.session.sessionId ? ` ${report.session.sessionId}` : \"\"}`,\n\t);\n\tlines.push(` messages: ${report.session.messages}`);\n\tlines.push(` tool calls: ${report.session.toolCalls}`);\n\tif (report.session.contextPercent !== undefined) {\n\t\tlines.push(\n\t\t\t` context: ${report.session.contextPercent === null ? \"unknown after compaction\" : `${report.session.contextPercent.toFixed(1)}%`}`,\n\t\t);\n\t}\n\tlines.push(\" supports: resume, fork, clone, tree navigation, import, export, share, compaction, branch summaries\");\n\n\tlines.push(\"\");\n\tlines.push(chalk.bold(\"Self-Extension\"));\n\tlines.push(\" dynamic tool registration: supported through the runtime tool API\");\n\tlines.push(\" tool authoring: supported with built-in read/write/edit/bash plus reloadable resources\");\n\tlines.push(\" subagent delegation: supported by the bundled subagent extension with isolated aery processes\");\n\tlines.push(\" automation modes: interactive, print, JSON, and RPC\");\n\n\treturn lines.join(\"\\n\");\n}\n\nexport async function runCapabilitiesCommand(args: string[], options: CollectCapabilitiesOptions): Promise<boolean> {\n\tif (args[0] !== \"capabilities\") {\n\t\treturn false;\n\t}\n\n\tconst report = collectCapabilitiesReport(options);\n\tif (args.includes(\"--json\")) {\n\t\tconsole.log(JSON.stringify(report, null, 2));\n\t} else {\n\t\tconsole.log(formatCapabilitiesReport(report));\n\t}\n\treturn true;\n}\n"]}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
import { VERSION } from "../config.js";
|
|
3
|
+
import { BUILTIN_SLASH_COMMANDS } from "../core/slash-commands.js";
|
|
4
|
+
const BUILT_IN_TOOL_NAMES = ["read", "bash", "edit", "write", "grep", "find", "ls"];
|
|
5
|
+
function formatList(values) {
|
|
6
|
+
return values.length > 0 ? values.join(", ") : "none";
|
|
7
|
+
}
|
|
8
|
+
function countLabel(count, singular, plural = `${singular}s`) {
|
|
9
|
+
return `${count} ${count === 1 ? singular : plural}`;
|
|
10
|
+
}
|
|
11
|
+
function formatExtensionName(extensionPath) {
|
|
12
|
+
const coreMarker = "/core/";
|
|
13
|
+
const coreIndex = extensionPath.lastIndexOf(coreMarker);
|
|
14
|
+
const raw = coreIndex >= 0
|
|
15
|
+
? extensionPath.slice(coreIndex + coreMarker.length)
|
|
16
|
+
: (extensionPath.split("/").pop() ?? extensionPath);
|
|
17
|
+
return raw.replace(/\.ts$/, "");
|
|
18
|
+
}
|
|
19
|
+
export function collectCapabilitiesReport(options) {
|
|
20
|
+
const { session, services } = options;
|
|
21
|
+
const model = session.model;
|
|
22
|
+
const allModels = services.modelRegistry.getAll();
|
|
23
|
+
const availableModels = services.modelRegistry.getAvailable();
|
|
24
|
+
const providers = [...new Set(allModels.map((item) => item.provider))].sort();
|
|
25
|
+
const configuredProviders = providers
|
|
26
|
+
.filter((provider) => services.modelRegistry.getProviderAuthStatus(provider).configured)
|
|
27
|
+
.sort();
|
|
28
|
+
const extensionsResult = services.resourceLoader.getExtensions();
|
|
29
|
+
const extensionNames = extensionsResult.extensions.map((extension) => formatExtensionName(extension.path)).sort();
|
|
30
|
+
const extensionCommands = extensionsResult.extensions.flatMap((extension) => Array.from(extension.commands.keys()));
|
|
31
|
+
const extensionTools = extensionsResult.extensions.flatMap((extension) => Array.from(extension.tools.keys()));
|
|
32
|
+
const promptCommands = services.resourceLoader.getPrompts().prompts.map((prompt) => prompt.name);
|
|
33
|
+
const skillCommands = services.resourceLoader.getSkills().skills.map((skill) => `skill:${skill.name}`);
|
|
34
|
+
const stats = session.getSessionStats();
|
|
35
|
+
return {
|
|
36
|
+
version: options.version ?? VERSION,
|
|
37
|
+
cwd: services.cwd,
|
|
38
|
+
currentModel: model
|
|
39
|
+
? {
|
|
40
|
+
provider: model.provider,
|
|
41
|
+
id: model.id,
|
|
42
|
+
thinkingLevel: session.thinkingLevel,
|
|
43
|
+
supportsImages: model.input.includes("image"),
|
|
44
|
+
supportsThinking: !!model.reasoning,
|
|
45
|
+
}
|
|
46
|
+
: undefined,
|
|
47
|
+
providers: {
|
|
48
|
+
total: providers.length,
|
|
49
|
+
configured: configuredProviders,
|
|
50
|
+
},
|
|
51
|
+
models: {
|
|
52
|
+
total: allModels.length,
|
|
53
|
+
available: availableModels.length,
|
|
54
|
+
},
|
|
55
|
+
tools: {
|
|
56
|
+
builtIn: Array.from(BUILT_IN_TOOL_NAMES),
|
|
57
|
+
active: session.getActiveToolNames(),
|
|
58
|
+
registered: [...new Set([...session.getAllTools().map((tool) => tool.name), ...extensionTools])].sort(),
|
|
59
|
+
},
|
|
60
|
+
commands: {
|
|
61
|
+
builtIn: BUILTIN_SLASH_COMMANDS.map((command) => command.name),
|
|
62
|
+
extension: [...new Set(extensionCommands)].sort(),
|
|
63
|
+
prompt: [...new Set(promptCommands)].sort(),
|
|
64
|
+
skill: [...new Set(skillCommands)].sort(),
|
|
65
|
+
},
|
|
66
|
+
resources: {
|
|
67
|
+
extensions: extensionsResult.extensions.length,
|
|
68
|
+
extensionNames,
|
|
69
|
+
extensionErrors: extensionsResult.errors.length,
|
|
70
|
+
extensionLoadErrors: extensionsResult.errors,
|
|
71
|
+
skills: services.resourceLoader.getSkills().skills.length,
|
|
72
|
+
prompts: services.resourceLoader.getPrompts().prompts.length,
|
|
73
|
+
themes: services.resourceLoader.getThemes().themes.length,
|
|
74
|
+
contextFiles: services.resourceLoader.getAgentsFiles().agentsFiles.length,
|
|
75
|
+
},
|
|
76
|
+
session: {
|
|
77
|
+
persisted: stats.sessionFile !== undefined,
|
|
78
|
+
sessionId: stats.sessionId,
|
|
79
|
+
messages: stats.totalMessages,
|
|
80
|
+
toolCalls: stats.toolCalls,
|
|
81
|
+
contextPercent: stats.contextUsage?.percent,
|
|
82
|
+
},
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
export function formatCapabilitiesReport(report) {
|
|
86
|
+
const lines = [];
|
|
87
|
+
lines.push(chalk.bold("Aery Capabilities"));
|
|
88
|
+
lines.push("");
|
|
89
|
+
lines.push(chalk.bold("Runtime"));
|
|
90
|
+
lines.push(` version: ${report.version}`);
|
|
91
|
+
lines.push(` cwd: ${report.cwd}`);
|
|
92
|
+
if (report.currentModel) {
|
|
93
|
+
const model = report.currentModel;
|
|
94
|
+
const traits = [
|
|
95
|
+
model.supportsImages ? "images" : "text-only",
|
|
96
|
+
model.supportsThinking ? "reasoning" : "no reasoning",
|
|
97
|
+
].join(", ");
|
|
98
|
+
lines.push(` current: ${model.provider}/${model.id}`);
|
|
99
|
+
lines.push(` thinking: ${model.thinkingLevel}`);
|
|
100
|
+
lines.push(` model traits: ${traits}`);
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
lines.push(" current: no model selected");
|
|
104
|
+
}
|
|
105
|
+
lines.push("");
|
|
106
|
+
lines.push(chalk.bold("Built-In Tools"));
|
|
107
|
+
lines.push(` available: ${formatList(report.tools.builtIn)}`);
|
|
108
|
+
lines.push(` active: ${formatList(report.tools.active)}`);
|
|
109
|
+
lines.push(` registered: ${formatList(report.tools.registered)}`);
|
|
110
|
+
lines.push("");
|
|
111
|
+
lines.push(chalk.bold("Commands And Resources"));
|
|
112
|
+
lines.push(` commands: ${report.commands.builtIn.length} built-in, ${report.commands.extension.length} extension, ${report.commands.prompt.length} prompt, ${report.commands.skill.length} skill`);
|
|
113
|
+
lines.push(` built-in commands: ${formatList(report.commands.builtIn)}`);
|
|
114
|
+
lines.push(` extensions: ${report.resources.extensions} loaded, ${report.resources.extensionErrors} ${report.resources.extensionErrors === 1 ? "error" : "errors"}`);
|
|
115
|
+
lines.push(` loaded extensions: ${formatList(report.resources.extensionNames)}`);
|
|
116
|
+
for (const error of report.resources.extensionLoadErrors) {
|
|
117
|
+
lines.push(` extension error: ${error.path}: ${error.error}`);
|
|
118
|
+
}
|
|
119
|
+
lines.push(` resources: ${countLabel(report.resources.skills, "skill")}, ${countLabel(report.resources.prompts, "prompt")}, ${countLabel(report.resources.themes, "theme")}, ${countLabel(report.resources.contextFiles, "context file")}`);
|
|
120
|
+
lines.push("");
|
|
121
|
+
lines.push(chalk.bold("Models And Providers"));
|
|
122
|
+
lines.push(` providers: ${report.providers.total} known`);
|
|
123
|
+
lines.push(` configured: ${formatList(report.providers.configured)}`);
|
|
124
|
+
lines.push(` models: ${report.models.available} available of ${report.models.total} known`);
|
|
125
|
+
lines.push("");
|
|
126
|
+
lines.push(chalk.bold("Session Intelligence"));
|
|
127
|
+
lines.push(` session: ${report.session.persisted ? "persisted" : "ephemeral"}${report.session.sessionId ? ` ${report.session.sessionId}` : ""}`);
|
|
128
|
+
lines.push(` messages: ${report.session.messages}`);
|
|
129
|
+
lines.push(` tool calls: ${report.session.toolCalls}`);
|
|
130
|
+
if (report.session.contextPercent !== undefined) {
|
|
131
|
+
lines.push(` context: ${report.session.contextPercent === null ? "unknown after compaction" : `${report.session.contextPercent.toFixed(1)}%`}`);
|
|
132
|
+
}
|
|
133
|
+
lines.push(" supports: resume, fork, clone, tree navigation, import, export, share, compaction, branch summaries");
|
|
134
|
+
lines.push("");
|
|
135
|
+
lines.push(chalk.bold("Self-Extension"));
|
|
136
|
+
lines.push(" dynamic tool registration: supported through the runtime tool API");
|
|
137
|
+
lines.push(" tool authoring: supported with built-in read/write/edit/bash plus reloadable resources");
|
|
138
|
+
lines.push(" subagent delegation: supported by the bundled subagent extension with isolated aery processes");
|
|
139
|
+
lines.push(" automation modes: interactive, print, JSON, and RPC");
|
|
140
|
+
return lines.join("\n");
|
|
141
|
+
}
|
|
142
|
+
export async function runCapabilitiesCommand(args, options) {
|
|
143
|
+
if (args[0] !== "capabilities") {
|
|
144
|
+
return false;
|
|
145
|
+
}
|
|
146
|
+
const report = collectCapabilitiesReport(options);
|
|
147
|
+
if (args.includes("--json")) {
|
|
148
|
+
console.log(JSON.stringify(report, null, 2));
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
console.log(formatCapabilitiesReport(report));
|
|
152
|
+
}
|
|
153
|
+
return true;
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=capabilities.js.map
|