iosm-cli 0.1.0
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 +55 -0
- package/LICENSE +21 -0
- package/README.md +650 -0
- package/dist/cli/args.d.ts +54 -0
- package/dist/cli/args.d.ts.map +1 -0
- package/dist/cli/args.js +331 -0
- package/dist/cli/args.js.map +1 -0
- package/dist/cli/config-selector.d.ts +14 -0
- package/dist/cli/config-selector.d.ts.map +1 -0
- package/dist/cli/config-selector.js +31 -0
- package/dist/cli/config-selector.js.map +1 -0
- package/dist/cli/file-processor.d.ts +15 -0
- package/dist/cli/file-processor.d.ts.map +1 -0
- package/dist/cli/file-processor.js +79 -0
- package/dist/cli/file-processor.js.map +1 -0
- package/dist/cli/list-models.d.ts +9 -0
- package/dist/cli/list-models.d.ts.map +1 -0
- package/dist/cli/list-models.js +92 -0
- package/dist/cli/list-models.js.map +1 -0
- package/dist/cli/session-picker.d.ts +9 -0
- package/dist/cli/session-picker.d.ts.map +1 -0
- package/dist/cli/session-picker.js +34 -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 +15 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +88 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +262 -0
- package/dist/config.js.map +1 -0
- package/dist/core/agent-profiles.d.ts +29 -0
- package/dist/core/agent-profiles.d.ts.map +1 -0
- package/dist/core/agent-profiles.js +86 -0
- package/dist/core/agent-profiles.js.map +1 -0
- package/dist/core/agent-session.d.ts +688 -0
- package/dist/core/agent-session.d.ts.map +1 -0
- package/dist/core/agent-session.js +3112 -0
- package/dist/core/agent-session.js.map +1 -0
- package/dist/core/agent-teams.d.ts +41 -0
- package/dist/core/agent-teams.d.ts.map +1 -0
- package/dist/core/agent-teams.js +90 -0
- package/dist/core/agent-teams.js.map +1 -0
- package/dist/core/ask-user-tool.d.ts +22 -0
- package/dist/core/ask-user-tool.d.ts.map +1 -0
- package/dist/core/ask-user-tool.js +115 -0
- package/dist/core/ask-user-tool.js.map +1 -0
- package/dist/core/auth-storage.d.ts +133 -0
- package/dist/core/auth-storage.d.ts.map +1 -0
- package/dist/core/auth-storage.js +391 -0
- package/dist/core/auth-storage.js.map +1 -0
- package/dist/core/bash-executor.d.ts +49 -0
- package/dist/core/bash-executor.d.ts.map +1 -0
- package/dist/core/bash-executor.js +213 -0
- package/dist/core/bash-executor.js.map +1 -0
- package/dist/core/compaction/branch-summarization.d.ts +86 -0
- package/dist/core/compaction/branch-summarization.d.ts.map +1 -0
- package/dist/core/compaction/branch-summarization.js +242 -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 +610 -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 +35 -0
- package/dist/core/compaction/utils.d.ts.map +1 -0
- package/dist/core/compaction/utils.js +138 -0
- package/dist/core/compaction/utils.js.map +1 -0
- package/dist/core/defaults.d.ts +3 -0
- package/dist/core/defaults.d.ts.map +1 -0
- package/dist/core/defaults.js +2 -0
- package/dist/core/defaults.js.map +1 -0
- package/dist/core/diagnostics.d.ts +15 -0
- package/dist/core/diagnostics.d.ts.map +1 -0
- package/dist/core/diagnostics.js +2 -0
- package/dist/core/diagnostics.js.map +1 -0
- package/dist/core/event-bus.d.ts +9 -0
- package/dist/core/event-bus.d.ts.map +1 -0
- package/dist/core/event-bus.js +25 -0
- package/dist/core/event-bus.js.map +1 -0
- package/dist/core/exec.d.ts +29 -0
- package/dist/core/exec.d.ts.map +1 -0
- package/dist/core/exec.js +71 -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 +34 -0
- package/dist/core/export-html/index.d.ts.map +1 -0
- package/dist/core/export-html/index.js +222 -0
- package/dist/core/export-html/index.js.map +1 -0
- package/dist/core/export-html/template.css +971 -0
- package/dist/core/export-html/template.html +54 -0
- package/dist/core/export-html/template.js +1590 -0
- package/dist/core/export-html/tool-renderer.d.ts +35 -0
- package/dist/core/export-html/tool-renderer.d.ts.map +1 -0
- package/dist/core/export-html/tool-renderer.js +63 -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 +11 -0
- package/dist/core/extensions/index.d.ts.map +1 -0
- package/dist/core/extensions/index.js +9 -0
- package/dist/core/extensions/index.js.map +1 -0
- package/dist/core/extensions/loader.d.ts +25 -0
- package/dist/core/extensions/loader.d.ts.map +1 -0
- package/dist/core/extensions/loader.js +447 -0
- package/dist/core/extensions/loader.js.map +1 -0
- package/dist/core/extensions/runner.d.ts +146 -0
- package/dist/core/extensions/runner.d.ts.map +1 -0
- package/dist/core/extensions/runner.js +652 -0
- package/dist/core/extensions/runner.js.map +1 -0
- package/dist/core/extensions/types.d.ts +1074 -0
- package/dist/core/extensions/types.d.ts.map +1 -0
- package/dist/core/extensions/types.js +35 -0
- package/dist/core/extensions/types.js.map +1 -0
- package/dist/core/extensions/wrapper.d.ts +27 -0
- package/dist/core/extensions/wrapper.d.ts.map +1 -0
- package/dist/core/extensions/wrapper.js +102 -0
- package/dist/core/extensions/wrapper.js.map +1 -0
- package/dist/core/footer-data-provider.d.ts +32 -0
- package/dist/core/footer-data-provider.d.ts.map +1 -0
- package/dist/core/footer-data-provider.js +134 -0
- package/dist/core/footer-data-provider.js.map +1 -0
- package/dist/core/hooks.d.ts +53 -0
- package/dist/core/hooks.d.ts.map +1 -0
- package/dist/core/hooks.js +332 -0
- package/dist/core/hooks.js.map +1 -0
- package/dist/core/index.d.ts +9 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +9 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/keybindings.d.ts +55 -0
- package/dist/core/keybindings.d.ts.map +1 -0
- package/dist/core/keybindings.js +157 -0
- package/dist/core/keybindings.js.map +1 -0
- package/dist/core/mcp/cli.d.ts +27 -0
- package/dist/core/mcp/cli.d.ts.map +1 -0
- package/dist/core/mcp/cli.js +275 -0
- package/dist/core/mcp/cli.js.map +1 -0
- package/dist/core/mcp/config.d.ts +11 -0
- package/dist/core/mcp/config.d.ts.map +1 -0
- package/dist/core/mcp/config.js +310 -0
- package/dist/core/mcp/config.js.map +1 -0
- package/dist/core/mcp/index.d.ts +5 -0
- package/dist/core/mcp/index.d.ts.map +1 -0
- package/dist/core/mcp/index.js +4 -0
- package/dist/core/mcp/index.js.map +1 -0
- package/dist/core/mcp/runtime.d.ts +42 -0
- package/dist/core/mcp/runtime.d.ts.map +1 -0
- package/dist/core/mcp/runtime.js +387 -0
- package/dist/core/mcp/runtime.js.map +1 -0
- package/dist/core/mcp/types.d.ts +76 -0
- package/dist/core/mcp/types.d.ts.map +1 -0
- package/dist/core/mcp/types.js +2 -0
- package/dist/core/mcp/types.js.map +1 -0
- package/dist/core/memory.d.ts +27 -0
- package/dist/core/memory.d.ts.map +1 -0
- package/dist/core/memory.js +203 -0
- package/dist/core/memory.js.map +1 -0
- package/dist/core/messages.d.ts +84 -0
- package/dist/core/messages.d.ts.map +1 -0
- package/dist/core/messages.js +141 -0
- package/dist/core/messages.js.map +1 -0
- package/dist/core/model-registry.d.ts +115 -0
- package/dist/core/model-registry.d.ts.map +1 -0
- package/dist/core/model-registry.js +549 -0
- package/dist/core/model-registry.js.map +1 -0
- package/dist/core/model-resolver.d.ts +104 -0
- package/dist/core/model-resolver.d.ts.map +1 -0
- package/dist/core/model-resolver.js +448 -0
- package/dist/core/model-resolver.js.map +1 -0
- package/dist/core/package-manager.d.ts +156 -0
- package/dist/core/package-manager.d.ts.map +1 -0
- package/dist/core/package-manager.js +1465 -0
- package/dist/core/package-manager.js.map +1 -0
- package/dist/core/parallel-task-agent.d.ts +19 -0
- package/dist/core/parallel-task-agent.d.ts.map +1 -0
- package/dist/core/parallel-task-agent.js +482 -0
- package/dist/core/parallel-task-agent.js.map +1 -0
- package/dist/core/prompt-templates.d.ts +50 -0
- package/dist/core/prompt-templates.d.ts.map +1 -0
- package/dist/core/prompt-templates.js +251 -0
- package/dist/core/prompt-templates.js.map +1 -0
- package/dist/core/qwen-cli-provider.d.ts +10 -0
- package/dist/core/qwen-cli-provider.d.ts.map +1 -0
- package/dist/core/qwen-cli-provider.js +271 -0
- package/dist/core/qwen-cli-provider.js.map +1 -0
- package/dist/core/resolve-config-value.d.ts +17 -0
- package/dist/core/resolve-config-value.d.ts.map +1 -0
- package/dist/core/resolve-config-value.js +60 -0
- package/dist/core/resolve-config-value.js.map +1 -0
- package/dist/core/resource-loader.d.ts +195 -0
- package/dist/core/resource-loader.d.ts.map +1 -0
- package/dist/core/resource-loader.js +820 -0
- package/dist/core/resource-loader.js.map +1 -0
- package/dist/core/sdk.d.ts +106 -0
- package/dist/core/sdk.d.ts.map +1 -0
- package/dist/core/sdk.js +460 -0
- package/dist/core/sdk.js.map +1 -0
- package/dist/core/session-manager.d.ts +323 -0
- package/dist/core/session-manager.d.ts.map +1 -0
- package/dist/core/session-manager.js +1094 -0
- package/dist/core/session-manager.js.map +1 -0
- package/dist/core/settings-manager.d.ts +243 -0
- package/dist/core/settings-manager.d.ts.map +1 -0
- package/dist/core/settings-manager.js +691 -0
- package/dist/core/settings-manager.js.map +1 -0
- package/dist/core/skills.d.ts +58 -0
- package/dist/core/skills.d.ts.map +1 -0
- package/dist/core/skills.js +364 -0
- package/dist/core/skills.js.map +1 -0
- package/dist/core/slash-commands.d.ts +15 -0
- package/dist/core/slash-commands.d.ts.map +1 -0
- package/dist/core/slash-commands.js +64 -0
- package/dist/core/slash-commands.js.map +1 -0
- package/dist/core/subagent-runs.d.ts +16 -0
- package/dist/core/subagent-runs.d.ts.map +1 -0
- package/dist/core/subagent-runs.js +70 -0
- package/dist/core/subagent-runs.js.map +1 -0
- package/dist/core/subagents.d.ts +45 -0
- package/dist/core/subagents.d.ts.map +1 -0
- package/dist/core/subagents.js +467 -0
- package/dist/core/subagents.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 +196 -0
- package/dist/core/system-prompt.js.map +1 -0
- package/dist/core/task-plan.d.ts +32 -0
- package/dist/core/task-plan.d.ts.map +1 -0
- package/dist/core/task-plan.js +155 -0
- package/dist/core/task-plan.js.map +1 -0
- package/dist/core/timings.d.ts +7 -0
- package/dist/core/timings.d.ts.map +1 -0
- package/dist/core/timings.js +26 -0
- package/dist/core/timings.js.map +1 -0
- package/dist/core/tools/bash.d.ts +58 -0
- package/dist/core/tools/bash.d.ts.map +1 -0
- package/dist/core/tools/bash.js +275 -0
- package/dist/core/tools/bash.js.map +1 -0
- package/dist/core/tools/edit-diff.d.ts +63 -0
- package/dist/core/tools/edit-diff.d.ts.map +1 -0
- package/dist/core/tools/edit-diff.js +243 -0
- package/dist/core/tools/edit-diff.js.map +1 -0
- package/dist/core/tools/edit.d.ts +42 -0
- package/dist/core/tools/edit.d.ts.map +1 -0
- package/dist/core/tools/edit.js +158 -0
- package/dist/core/tools/edit.js.map +1 -0
- package/dist/core/tools/find.d.ts +39 -0
- package/dist/core/tools/find.d.ts.map +1 -0
- package/dist/core/tools/find.js +219 -0
- package/dist/core/tools/find.js.map +1 -0
- package/dist/core/tools/grep.d.ts +45 -0
- package/dist/core/tools/grep.d.ts.map +1 -0
- package/dist/core/tools/grep.js +254 -0
- package/dist/core/tools/grep.js.map +1 -0
- package/dist/core/tools/ignore-filter.d.ts +5 -0
- package/dist/core/tools/ignore-filter.d.ts.map +1 -0
- package/dist/core/tools/ignore-filter.js +97 -0
- package/dist/core/tools/ignore-filter.js.map +1 -0
- package/dist/core/tools/index.d.ts +97 -0
- package/dist/core/tools/index.d.ts.map +1 -0
- package/dist/core/tools/index.js +78 -0
- package/dist/core/tools/index.js.map +1 -0
- package/dist/core/tools/ls.d.ts +46 -0
- package/dist/core/tools/ls.d.ts.map +1 -0
- package/dist/core/tools/ls.js +136 -0
- package/dist/core/tools/ls.js.map +1 -0
- package/dist/core/tools/path-utils.d.ts +8 -0
- package/dist/core/tools/path-utils.d.ts.map +1 -0
- package/dist/core/tools/path-utils.js +81 -0
- package/dist/core/tools/path-utils.js.map +1 -0
- package/dist/core/tools/permissions.d.ts +8 -0
- package/dist/core/tools/permissions.d.ts.map +1 -0
- package/dist/core/tools/permissions.js +2 -0
- package/dist/core/tools/permissions.js.map +1 -0
- package/dist/core/tools/read.d.ts +39 -0
- package/dist/core/tools/read.d.ts.map +1 -0
- package/dist/core/tools/read.js +166 -0
- package/dist/core/tools/read.js.map +1 -0
- package/dist/core/tools/task.d.ts +109 -0
- package/dist/core/tools/task.d.ts.map +1 -0
- package/dist/core/tools/task.js +1065 -0
- package/dist/core/tools/task.js.map +1 -0
- package/dist/core/tools/todo.d.ts +42 -0
- package/dist/core/tools/todo.d.ts.map +1 -0
- package/dist/core/tools/todo.js +159 -0
- package/dist/core/tools/todo.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 +32 -0
- package/dist/core/tools/write.d.ts.map +1 -0
- package/dist/core/tools/write.js +90 -0
- package/dist/core/tools/write.js.map +1 -0
- package/dist/index.d.ts +30 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +45 -0
- package/dist/index.js.map +1 -0
- package/dist/iosm/agent-verification.d.ts +16 -0
- package/dist/iosm/agent-verification.d.ts.map +1 -0
- package/dist/iosm/agent-verification.js +138 -0
- package/dist/iosm/agent-verification.js.map +1 -0
- package/dist/iosm/automation.d.ts +40 -0
- package/dist/iosm/automation.d.ts.map +1 -0
- package/dist/iosm/automation.js +76 -0
- package/dist/iosm/automation.js.map +1 -0
- package/dist/iosm/config.d.ts +151 -0
- package/dist/iosm/config.d.ts.map +1 -0
- package/dist/iosm/config.js +323 -0
- package/dist/iosm/config.js.map +1 -0
- package/dist/iosm/context-loader.d.ts +12 -0
- package/dist/iosm/context-loader.d.ts.map +1 -0
- package/dist/iosm/context-loader.js +50 -0
- package/dist/iosm/context-loader.js.map +1 -0
- package/dist/iosm/cycle.d.ts +51 -0
- package/dist/iosm/cycle.d.ts.map +1 -0
- package/dist/iosm/cycle.js +861 -0
- package/dist/iosm/cycle.js.map +1 -0
- package/dist/iosm/guide.d.ts +31 -0
- package/dist/iosm/guide.d.ts.map +1 -0
- package/dist/iosm/guide.js +101 -0
- package/dist/iosm/guide.js.map +1 -0
- package/dist/iosm/index.d.ts +12 -0
- package/dist/iosm/index.d.ts.map +1 -0
- package/dist/iosm/index.js +11 -0
- package/dist/iosm/index.js.map +1 -0
- package/dist/iosm/init.d.ts +58 -0
- package/dist/iosm/init.d.ts.map +1 -0
- package/dist/iosm/init.js +1221 -0
- package/dist/iosm/init.js.map +1 -0
- package/dist/iosm/metrics.d.ts +23 -0
- package/dist/iosm/metrics.d.ts.map +1 -0
- package/dist/iosm/metrics.js +336 -0
- package/dist/iosm/metrics.js.map +1 -0
- package/dist/iosm/paths.d.ts +24 -0
- package/dist/iosm/paths.d.ts.map +1 -0
- package/dist/iosm/paths.js +77 -0
- package/dist/iosm/paths.js.map +1 -0
- package/dist/iosm/runtime-context.d.ts +20 -0
- package/dist/iosm/runtime-context.d.ts.map +1 -0
- package/dist/iosm/runtime-context.js +170 -0
- package/dist/iosm/runtime-context.js.map +1 -0
- package/dist/iosm/types.d.ts +151 -0
- package/dist/iosm/types.d.ts.map +1 -0
- package/dist/iosm/types.js +3 -0
- package/dist/iosm/types.js.map +1 -0
- package/dist/main.d.ts +8 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +1478 -0
- package/dist/main.js.map +1 -0
- package/dist/migrations.d.ts +33 -0
- package/dist/migrations.d.ts.map +1 -0
- package/dist/migrations.js +261 -0
- package/dist/migrations.js.map +1 -0
- package/dist/modes/index.d.ts +9 -0
- package/dist/modes/index.d.ts.map +1 -0
- package/dist/modes/index.js +8 -0
- package/dist/modes/index.js.map +1 -0
- package/dist/modes/interactive/components/armin.d.ts +34 -0
- package/dist/modes/interactive/components/armin.d.ts.map +1 -0
- package/dist/modes/interactive/components/armin.js +329 -0
- package/dist/modes/interactive/components/armin.js.map +1 -0
- package/dist/modes/interactive/components/ascii-logo.d.ts +11 -0
- package/dist/modes/interactive/components/ascii-logo.d.ts.map +1 -0
- package/dist/modes/interactive/components/ascii-logo.js +25 -0
- package/dist/modes/interactive/components/ascii-logo.js.map +1 -0
- package/dist/modes/interactive/components/assistant-message.d.ts +16 -0
- package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/assistant-message.js +92 -0
- package/dist/modes/interactive/components/assistant-message.js.map +1 -0
- package/dist/modes/interactive/components/bash-execution.d.ts +36 -0
- package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -0
- package/dist/modes/interactive/components/bash-execution.js +170 -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 +48 -0
- package/dist/modes/interactive/components/bordered-loader.js.map +1 -0
- package/dist/modes/interactive/components/branch-summary-message.d.ts +16 -0
- package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/branch-summary-message.js +42 -0
- package/dist/modes/interactive/components/branch-summary-message.js.map +1 -0
- package/dist/modes/interactive/components/compaction-summary-message.d.ts +16 -0
- package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/compaction-summary-message.js +43 -0
- package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -0
- package/dist/modes/interactive/components/config-selector.d.ts +71 -0
- package/dist/modes/interactive/components/config-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/config-selector.js +470 -0
- package/dist/modes/interactive/components/config-selector.js.map +1 -0
- package/dist/modes/interactive/components/countdown-timer.d.ts +14 -0
- package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -0
- package/dist/modes/interactive/components/countdown-timer.js +28 -0
- package/dist/modes/interactive/components/countdown-timer.js.map +1 -0
- package/dist/modes/interactive/components/custom-editor.d.ts +21 -0
- package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -0
- package/dist/modes/interactive/components/custom-editor.js +63 -0
- package/dist/modes/interactive/components/custom-editor.js.map +1 -0
- package/dist/modes/interactive/components/custom-message.d.ts +20 -0
- package/dist/modes/interactive/components/custom-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/custom-message.js +74 -0
- package/dist/modes/interactive/components/custom-message.js.map +1 -0
- package/dist/modes/interactive/components/daxnuts.d.ts +23 -0
- package/dist/modes/interactive/components/daxnuts.d.ts.map +1 -0
- package/dist/modes/interactive/components/daxnuts.js +138 -0
- package/dist/modes/interactive/components/daxnuts.js.map +1 -0
- package/dist/modes/interactive/components/decrypt-loader.d.ts +25 -0
- package/dist/modes/interactive/components/decrypt-loader.d.ts.map +1 -0
- package/dist/modes/interactive/components/decrypt-loader.js +102 -0
- package/dist/modes/interactive/components/decrypt-loader.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 +20 -0
- package/dist/modes/interactive/components/dynamic-border.js.map +1 -0
- package/dist/modes/interactive/components/extension-editor.d.ts +20 -0
- package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -0
- package/dist/modes/interactive/components/extension-editor.js +105 -0
- package/dist/modes/interactive/components/extension-editor.js.map +1 -0
- package/dist/modes/interactive/components/extension-input.d.ts +23 -0
- package/dist/modes/interactive/components/extension-input.d.ts.map +1 -0
- package/dist/modes/interactive/components/extension-input.js +55 -0
- package/dist/modes/interactive/components/extension-input.js.map +1 -0
- package/dist/modes/interactive/components/extension-selector.d.ts +24 -0
- package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/extension-selector.js +71 -0
- package/dist/modes/interactive/components/extension-selector.js.map +1 -0
- package/dist/modes/interactive/components/footer.d.ts +39 -0
- package/dist/modes/interactive/components/footer.d.ts.map +1 -0
- package/dist/modes/interactive/components/footer.js +285 -0
- package/dist/modes/interactive/components/footer.js.map +1 -0
- package/dist/modes/interactive/components/index.d.ts +33 -0
- package/dist/modes/interactive/components/index.d.ts.map +1 -0
- package/dist/modes/interactive/components/index.js +34 -0
- package/dist/modes/interactive/components/index.js.map +1 -0
- package/dist/modes/interactive/components/keybinding-hints.d.ts +50 -0
- package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -0
- package/dist/modes/interactive/components/keybinding-hints.js +85 -0
- package/dist/modes/interactive/components/keybinding-hints.js.map +1 -0
- package/dist/modes/interactive/components/login-dialog.d.ts +42 -0
- package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -0
- package/dist/modes/interactive/components/login-dialog.js +139 -0
- package/dist/modes/interactive/components/login-dialog.js.map +1 -0
- package/dist/modes/interactive/components/mcp-selector.d.ts +31 -0
- package/dist/modes/interactive/components/mcp-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/mcp-selector.js +171 -0
- package/dist/modes/interactive/components/mcp-selector.js.map +1 -0
- package/dist/modes/interactive/components/model-selector.d.ts +51 -0
- package/dist/modes/interactive/components/model-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/model-selector.js +292 -0
- package/dist/modes/interactive/components/model-selector.js.map +1 -0
- package/dist/modes/interactive/components/oauth-selector.d.ts +19 -0
- package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/oauth-selector.js +134 -0
- package/dist/modes/interactive/components/oauth-selector.js.map +1 -0
- package/dist/modes/interactive/components/scoped-models-selector.d.ts +49 -0
- package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/scoped-models-selector.js +271 -0
- package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -0
- package/dist/modes/interactive/components/session-selector-search.d.ts +23 -0
- package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -0
- package/dist/modes/interactive/components/session-selector-search.js +155 -0
- package/dist/modes/interactive/components/session-selector-search.js.map +1 -0
- package/dist/modes/interactive/components/session-selector.d.ts +95 -0
- package/dist/modes/interactive/components/session-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/session-selector.js +839 -0
- package/dist/modes/interactive/components/session-selector.js.map +1 -0
- package/dist/modes/interactive/components/settings-selector.d.ts +60 -0
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/settings-selector.js +311 -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 +34 -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 +45 -0
- package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -0
- package/dist/modes/interactive/components/subagent-message.d.ts +91 -0
- package/dist/modes/interactive/components/subagent-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/subagent-message.js +306 -0
- package/dist/modes/interactive/components/subagent-message.js.map +1 -0
- package/dist/modes/interactive/components/task-plan-message.d.ts +12 -0
- package/dist/modes/interactive/components/task-plan-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/task-plan-message.js +61 -0
- package/dist/modes/interactive/components/task-plan-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 +44 -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 +46 -0
- package/dist/modes/interactive/components/thinking-selector.js.map +1 -0
- package/dist/modes/interactive/components/tool-execution.d.ts +78 -0
- package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -0
- package/dist/modes/interactive/components/tool-execution.js +880 -0
- package/dist/modes/interactive/components/tool-execution.js.map +1 -0
- package/dist/modes/interactive/components/tree-selector.d.ts +70 -0
- package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/tree-selector.js +921 -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 +110 -0
- package/dist/modes/interactive/components/user-message-selector.js.map +1 -0
- package/dist/modes/interactive/components/user-message.d.ts +9 -0
- package/dist/modes/interactive/components/user-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/user-message.js +27 -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 +453 -0
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-mode.js +8669 -0
- package/dist/modes/interactive/interactive-mode.js.map +1 -0
- package/dist/modes/interactive/theme/dark.json +85 -0
- package/dist/modes/interactive/theme/light.json +84 -0
- package/dist/modes/interactive/theme/theme-schema.json +335 -0
- package/dist/modes/interactive/theme/theme.d.ts +78 -0
- package/dist/modes/interactive/theme/theme.d.ts.map +1 -0
- package/dist/modes/interactive/theme/theme.js +944 -0
- package/dist/modes/interactive/theme/theme.js.map +1 -0
- package/dist/modes/print-mode.d.ts +28 -0
- package/dist/modes/print-mode.d.ts.map +1 -0
- package/dist/modes/print-mode.js +101 -0
- package/dist/modes/print-mode.js.map +1 -0
- package/dist/modes/rpc/rpc-client.d.ts +217 -0
- package/dist/modes/rpc/rpc-client.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-client.js +404 -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 +580 -0
- package/dist/modes/rpc/rpc-mode.js.map +1 -0
- package/dist/modes/rpc/rpc-types.d.ts +409 -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/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/clipboard-image.d.ts +11 -0
- package/dist/utils/clipboard-image.d.ts.map +1 -0
- package/dist/utils/clipboard-image.js +162 -0
- package/dist/utils/clipboard-image.js.map +1 -0
- package/dist/utils/clipboard-native.d.ts +7 -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 +67 -0
- package/dist/utils/clipboard.js.map +1 -0
- package/dist/utils/frontmatter.d.ts +8 -0
- package/dist/utils/frontmatter.d.ts.map +1 -0
- package/dist/utils/frontmatter.js +26 -0
- package/dist/utils/frontmatter.js.map +1 -0
- package/dist/utils/git.d.ts +26 -0
- package/dist/utils/git.d.ts.map +1 -0
- package/dist/utils/git.js +163 -0
- package/dist/utils/git.js.map +1 -0
- package/dist/utils/image-convert.d.ts +9 -0
- package/dist/utils/image-convert.d.ts.map +1 -0
- package/dist/utils/image-convert.js +35 -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 +181 -0
- package/dist/utils/image-resize.js.map +1 -0
- package/dist/utils/mime.d.ts +2 -0
- package/dist/utils/mime.d.ts.map +1 -0
- package/dist/utils/mime.js +26 -0
- package/dist/utils/mime.js.map +1 -0
- package/dist/utils/photon.d.ts +21 -0
- package/dist/utils/photon.d.ts.map +1 -0
- package/dist/utils/photon.js +121 -0
- package/dist/utils/photon.js.map +1 -0
- package/dist/utils/shell.d.ts +26 -0
- package/dist/utils/shell.d.ts.map +1 -0
- package/dist/utils/shell.js +186 -0
- package/dist/utils/shell.js.map +1 -0
- package/dist/utils/sleep.d.ts +5 -0
- package/dist/utils/sleep.d.ts.map +1 -0
- package/dist/utils/sleep.js +17 -0
- package/dist/utils/sleep.js.map +1 -0
- package/dist/utils/tools-manager.d.ts +3 -0
- package/dist/utils/tools-manager.d.ts.map +1 -0
- package/dist/utils/tools-manager.js +251 -0
- package/dist/utils/tools-manager.js.map +1 -0
- package/docs/README.md +32 -0
- package/docs/cli-reference.md +342 -0
- package/docs/configuration.md +301 -0
- package/docs/development-and-testing.md +295 -0
- package/docs/extensions-packages-themes.md +415 -0
- package/docs/getting-started.md +246 -0
- package/docs/interactive-mode.md +272 -0
- package/docs/iosm-init-and-cycles.md +355 -0
- package/docs/orchestration-and-subagents.md +273 -0
- package/docs/rpc-json-sdk.md +353 -0
- package/docs/sessions-traces-export.md +260 -0
- package/examples/README.md +120 -0
- package/examples/extensions/README.md +306 -0
- package/examples/extensions/antigravity-image-gen.ts +415 -0
- package/examples/extensions/auto-commit-on-exit.ts +49 -0
- package/examples/extensions/bash-spawn-hook.ts +30 -0
- package/examples/extensions/bookmark.ts +50 -0
- package/examples/extensions/built-in-tool-renderer.ts +246 -0
- package/examples/extensions/claude-rules.ts +86 -0
- package/examples/extensions/commands.ts +72 -0
- package/examples/extensions/confirm-destructive.ts +59 -0
- package/examples/extensions/custom-compaction.ts +114 -0
- package/examples/extensions/custom-footer.ts +64 -0
- package/examples/extensions/custom-header.ts +73 -0
- package/examples/extensions/custom-provider-anthropic/index.ts +604 -0
- package/examples/extensions/custom-provider-anthropic/package-lock.json +24 -0
- package/examples/extensions/custom-provider-anthropic/package.json +19 -0
- package/examples/extensions/custom-provider-gitlab-duo/index.ts +349 -0
- package/examples/extensions/custom-provider-gitlab-duo/package.json +16 -0
- package/examples/extensions/custom-provider-gitlab-duo/test.ts +82 -0
- package/examples/extensions/custom-provider-qwen-cli/index.ts +345 -0
- package/examples/extensions/custom-provider-qwen-cli/package.json +16 -0
- package/examples/extensions/dirty-repo-guard.ts +56 -0
- package/examples/extensions/doom-overlay/README.md +46 -0
- package/examples/extensions/doom-overlay/doom/build/doom.js +21 -0
- package/examples/extensions/doom-overlay/doom/build/doom.wasm +0 -0
- package/examples/extensions/doom-overlay/doom/build.sh +152 -0
- package/examples/extensions/doom-overlay/doom/doomgeneric_pi.c +72 -0
- package/examples/extensions/doom-overlay/doom-component.ts +132 -0
- package/examples/extensions/doom-overlay/doom-engine.ts +173 -0
- package/examples/extensions/doom-overlay/doom-keys.ts +104 -0
- package/examples/extensions/doom-overlay/index.ts +74 -0
- package/examples/extensions/doom-overlay/wad-finder.ts +51 -0
- package/examples/extensions/dynamic-resources/SKILL.md +8 -0
- package/examples/extensions/dynamic-resources/dynamic.json +79 -0
- package/examples/extensions/dynamic-resources/dynamic.md +5 -0
- package/examples/extensions/dynamic-resources/index.ts +15 -0
- package/examples/extensions/dynamic-tools.ts +74 -0
- package/examples/extensions/event-bus.ts +43 -0
- package/examples/extensions/file-trigger.ts +41 -0
- package/examples/extensions/git-checkpoint.ts +53 -0
- package/examples/extensions/handoff.ts +150 -0
- package/examples/extensions/hello.ts +25 -0
- package/examples/extensions/inline-bash.ts +94 -0
- package/examples/extensions/input-transform.ts +43 -0
- package/examples/extensions/interactive-shell.ts +196 -0
- package/examples/extensions/mac-system-theme.ts +47 -0
- package/examples/extensions/message-renderer.ts +59 -0
- package/examples/extensions/minimal-mode.ts +426 -0
- package/examples/extensions/modal-editor.ts +85 -0
- package/examples/extensions/model-status.ts +31 -0
- package/examples/extensions/notify.ts +55 -0
- package/examples/extensions/overlay-qa-tests.ts +881 -0
- package/examples/extensions/overlay-test.ts +150 -0
- package/examples/extensions/permission-gate.ts +34 -0
- package/examples/extensions/pirate.ts +47 -0
- package/examples/extensions/plan-mode/README.md +65 -0
- package/examples/extensions/plan-mode/index.ts +340 -0
- package/examples/extensions/plan-mode/utils.ts +168 -0
- package/examples/extensions/preset.ts +398 -0
- package/examples/extensions/protected-paths.ts +30 -0
- package/examples/extensions/qna.ts +119 -0
- package/examples/extensions/question.ts +264 -0
- package/examples/extensions/questionnaire.ts +427 -0
- package/examples/extensions/rainbow-editor.ts +88 -0
- package/examples/extensions/reload-runtime.ts +37 -0
- package/examples/extensions/rpc-demo.ts +124 -0
- package/examples/extensions/sandbox/index.ts +318 -0
- package/examples/extensions/sandbox/package-lock.json +92 -0
- package/examples/extensions/sandbox/package.json +19 -0
- package/examples/extensions/send-user-message.ts +97 -0
- package/examples/extensions/session-name.ts +27 -0
- package/examples/extensions/shutdown-command.ts +63 -0
- package/examples/extensions/snake.ts +343 -0
- package/examples/extensions/space-invaders.ts +560 -0
- package/examples/extensions/ssh.ts +220 -0
- package/examples/extensions/status-line.ts +40 -0
- package/examples/extensions/subagent/README.md +172 -0
- package/examples/extensions/subagent/agents/planner.md +37 -0
- package/examples/extensions/subagent/agents/reviewer.md +35 -0
- package/examples/extensions/subagent/agents/scout.md +50 -0
- package/examples/extensions/subagent/agents/worker.md +24 -0
- package/examples/extensions/subagent/agents.ts +126 -0
- package/examples/extensions/subagent/index.ts +964 -0
- package/examples/extensions/subagent/prompts/implement-and-review.md +10 -0
- package/examples/extensions/subagent/prompts/implement.md +10 -0
- package/examples/extensions/subagent/prompts/scout-and-plan.md +9 -0
- package/examples/extensions/summarize.ts +195 -0
- package/examples/extensions/system-prompt-header.ts +17 -0
- package/examples/extensions/timed-confirm.ts +70 -0
- package/examples/extensions/titlebar-spinner.ts +58 -0
- package/examples/extensions/todo.ts +299 -0
- package/examples/extensions/tool-override.ts +143 -0
- package/examples/extensions/tools.ts +146 -0
- package/examples/extensions/trigger-compact.ts +40 -0
- package/examples/extensions/truncated-tool.ts +192 -0
- package/examples/extensions/widget-placement.ts +17 -0
- package/examples/extensions/with-deps/index.ts +36 -0
- package/examples/extensions/with-deps/package-lock.json +31 -0
- package/examples/extensions/with-deps/package.json +22 -0
- package/examples/rpc-extension-ui.ts +632 -0
- package/examples/sdk/01-minimal.ts +22 -0
- package/examples/sdk/02-custom-model.ts +49 -0
- package/examples/sdk/03-custom-prompt.ts +55 -0
- package/examples/sdk/04-skills.ts +46 -0
- package/examples/sdk/05-tools.ts +56 -0
- package/examples/sdk/06-extensions.ts +88 -0
- package/examples/sdk/07-context-files.ts +40 -0
- package/examples/sdk/08-prompt-templates.ts +47 -0
- package/examples/sdk/09-api-keys-and-oauth.ts +48 -0
- package/examples/sdk/10-settings.ts +51 -0
- package/examples/sdk/11-sessions.ts +48 -0
- package/examples/sdk/12-full-control.ts +82 -0
- package/examples/sdk/README.md +337 -0
- package/examples/tsconfig.json +3 -0
- package/package.json +107 -0
|
@@ -0,0 +1,415 @@
|
|
|
1
|
+
# Extensions, Packages, Skills, Themes
|
|
2
|
+
|
|
3
|
+
`iosm-cli` has a rich customization system supporting extensions (TypeScript modules), skills (Markdown workflows), prompt templates, themes, and package distribution.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Extensions
|
|
8
|
+
|
|
9
|
+
Extensions are TypeScript modules that can register tools, commands, lifecycle hooks, UI components, and provider integrations.
|
|
10
|
+
|
|
11
|
+
### Loading Extensions
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
# Via CLI flag (repeatable)
|
|
15
|
+
iosm -e ./my-extension.ts
|
|
16
|
+
iosm -e ./gate.ts -e ./logger.ts
|
|
17
|
+
|
|
18
|
+
# Disable all auto-discovered extensions
|
|
19
|
+
iosm --no-extensions
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### Auto-Discovery Directories
|
|
23
|
+
|
|
24
|
+
| Location | Scope |
|
|
25
|
+
|----------|-------|
|
|
26
|
+
| `~/.iosm/agent/extensions/` | Global (all projects) |
|
|
27
|
+
| `.iosm/extensions/` | Project-local |
|
|
28
|
+
|
|
29
|
+
Extensions are auto-loaded from these directories. Use `/reload` in interactive mode to hot-reload after changes.
|
|
30
|
+
|
|
31
|
+
### Writing an Extension
|
|
32
|
+
|
|
33
|
+
```typescript
|
|
34
|
+
import type { ExtensionAPI } from "iosm-cli";
|
|
35
|
+
import { Type } from "@sinclair/typebox";
|
|
36
|
+
|
|
37
|
+
export default function (pi: ExtensionAPI) {
|
|
38
|
+
// Everything goes here: tools, commands, hooks, UI
|
|
39
|
+
}
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### Registering Custom Tools
|
|
43
|
+
|
|
44
|
+
```typescript
|
|
45
|
+
export default function (pi: ExtensionAPI) {
|
|
46
|
+
pi.registerTool({
|
|
47
|
+
name: "weather",
|
|
48
|
+
label: "Weather",
|
|
49
|
+
description: "Get current weather for a city",
|
|
50
|
+
parameters: Type.Object({
|
|
51
|
+
city: Type.String({ description: "City name" }),
|
|
52
|
+
}),
|
|
53
|
+
async execute(toolCallId, params, onUpdate, ctx, signal) {
|
|
54
|
+
const data = await fetch(`https://api.example.com/weather?city=${params.city}`);
|
|
55
|
+
const json = await data.json();
|
|
56
|
+
return {
|
|
57
|
+
content: [{ type: "text", text: `Weather in ${params.city}: ${json.temp}°C` }],
|
|
58
|
+
details: { raw: json }, // Persisted in session for fork support
|
|
59
|
+
};
|
|
60
|
+
},
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
> **Note**: Use `StringEnum` instead of `Type.Union` for string enum parameters (required for Google API compatibility):
|
|
66
|
+
> ```typescript
|
|
67
|
+
> import { StringEnum } from "@mariozechner/pi-ai";
|
|
68
|
+
> action: StringEnum(["add", "remove", "list"] as const)
|
|
69
|
+
> ```
|
|
70
|
+
|
|
71
|
+
### Registering Commands
|
|
72
|
+
|
|
73
|
+
```typescript
|
|
74
|
+
export default function (pi: ExtensionAPI) {
|
|
75
|
+
pi.registerCommand("deploy", {
|
|
76
|
+
description: "Deploy to staging environment",
|
|
77
|
+
handler: async (args, ctx) => {
|
|
78
|
+
ctx.ui.notify("Starting deployment...", "info");
|
|
79
|
+
// Execute deployment logic
|
|
80
|
+
const result = await ctx.exec("npm", ["run", "deploy:staging"]);
|
|
81
|
+
ctx.ui.notify(
|
|
82
|
+
result.exitCode === 0 ? "Deployment successful!" : "Deployment failed!",
|
|
83
|
+
result.exitCode === 0 ? "info" : "error"
|
|
84
|
+
);
|
|
85
|
+
},
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### Lifecycle Hooks
|
|
91
|
+
|
|
92
|
+
| Hook | Trigger |
|
|
93
|
+
|------|---------|
|
|
94
|
+
| `session_start` | When a session begins or is resumed |
|
|
95
|
+
| `before_agent_start` | Before the agent processes a message |
|
|
96
|
+
| `tool_call` | Before a tool executes (can block/modify) |
|
|
97
|
+
| `tool_result` | After a tool returns results |
|
|
98
|
+
| `turn_start` | When a new conversation turn begins |
|
|
99
|
+
| `turn_end` | When a conversation turn ends |
|
|
100
|
+
| `agent_end` | When the agent finishes responding |
|
|
101
|
+
| `model_select` | When the model is changed |
|
|
102
|
+
| `input` | When user input is received |
|
|
103
|
+
|
|
104
|
+
```typescript
|
|
105
|
+
export default function (pi: ExtensionAPI) {
|
|
106
|
+
// Block dangerous commands
|
|
107
|
+
pi.on("tool_call", async (event, ctx) => {
|
|
108
|
+
if (event.toolName === "bash") {
|
|
109
|
+
const cmd = event.input.command || "";
|
|
110
|
+
if (cmd.includes("rm -rf /")) {
|
|
111
|
+
return { block: true, reason: "Blocked: dangerous command" };
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
// Log all tool usage
|
|
117
|
+
pi.on("tool_result", async (event, ctx) => {
|
|
118
|
+
console.log(`Tool: ${event.toolName}, Duration: ${event.duration}ms`);
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
// Modify system prompt dynamically
|
|
122
|
+
pi.on("before_agent_start", async (event, ctx) => {
|
|
123
|
+
event.systemPromptAppend = "\n\nAlways explain your reasoning step by step.";
|
|
124
|
+
});
|
|
125
|
+
|
|
126
|
+
// React to session start
|
|
127
|
+
pi.on("session_start", async (event, ctx) => {
|
|
128
|
+
// Reconstruct state from previous tool results
|
|
129
|
+
for (const entry of ctx.sessionManager.getBranch()) {
|
|
130
|
+
if (entry.type === "message" && entry.message.toolName === "weather") {
|
|
131
|
+
// Rebuild internal state from persisted details
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
### UI Extensions
|
|
139
|
+
|
|
140
|
+
```typescript
|
|
141
|
+
export default function (pi: ExtensionAPI) {
|
|
142
|
+
// Custom footer
|
|
143
|
+
pi.on("turn_end", async (event, ctx) => {
|
|
144
|
+
ctx.ui.setFooter("left", `Tokens: ${event.usage?.totalTokens || 0}`);
|
|
145
|
+
});
|
|
146
|
+
|
|
147
|
+
// Custom status
|
|
148
|
+
pi.on("turn_start", async (event, ctx) => {
|
|
149
|
+
ctx.ui.setStatus("Thinking...", "info");
|
|
150
|
+
});
|
|
151
|
+
|
|
152
|
+
// Interactive confirmation
|
|
153
|
+
pi.on("tool_call", async (event, ctx) => {
|
|
154
|
+
if (event.toolName === "write") {
|
|
155
|
+
const ok = await ctx.ui.confirm(
|
|
156
|
+
"Write Confirmation",
|
|
157
|
+
`Allow write to ${event.input.file_path}?`
|
|
158
|
+
);
|
|
159
|
+
if (!ok) return { block: true, reason: "User denied" };
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
|
|
163
|
+
// Selection dialog
|
|
164
|
+
pi.registerCommand("pick-model", {
|
|
165
|
+
description: "Pick a model from a list",
|
|
166
|
+
handler: async (args, ctx) => {
|
|
167
|
+
const choice = await ctx.ui.select("Select Model", [
|
|
168
|
+
{ label: "Claude Sonnet", value: "sonnet" },
|
|
169
|
+
{ label: "GPT-4o", value: "gpt-4o" },
|
|
170
|
+
{ label: "Gemini Pro", value: "gemini-pro" },
|
|
171
|
+
]);
|
|
172
|
+
if (choice) {
|
|
173
|
+
ctx.ui.notify(`Selected: ${choice}`, "info");
|
|
174
|
+
}
|
|
175
|
+
},
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
### State Persistence Pattern
|
|
181
|
+
|
|
182
|
+
Store state in tool result `details` for proper session forking support:
|
|
183
|
+
|
|
184
|
+
```typescript
|
|
185
|
+
let todos: string[] = [];
|
|
186
|
+
|
|
187
|
+
pi.registerTool({
|
|
188
|
+
name: "todo",
|
|
189
|
+
label: "Todo List",
|
|
190
|
+
description: "Manage a todo list",
|
|
191
|
+
parameters: Type.Object({
|
|
192
|
+
action: StringEnum(["add", "list", "remove"] as const),
|
|
193
|
+
item: Type.Optional(Type.String()),
|
|
194
|
+
}),
|
|
195
|
+
async execute(toolCallId, params) {
|
|
196
|
+
if (params.action === "add" && params.item) {
|
|
197
|
+
todos.push(params.item);
|
|
198
|
+
}
|
|
199
|
+
// State is persisted in details for fork support
|
|
200
|
+
return {
|
|
201
|
+
content: [{ type: "text", text: todos.join("\n") }],
|
|
202
|
+
details: { todos: [...todos] },
|
|
203
|
+
};
|
|
204
|
+
},
|
|
205
|
+
});
|
|
206
|
+
|
|
207
|
+
// Reconstruct state on session resume/fork
|
|
208
|
+
pi.on("session_start", async (_event, ctx) => {
|
|
209
|
+
todos = [];
|
|
210
|
+
for (const entry of ctx.sessionManager.getBranch()) {
|
|
211
|
+
if (entry.type === "message" && entry.message.toolName === "todo") {
|
|
212
|
+
todos = entry.message.details?.todos || [];
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
});
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
### 66 Extension Examples
|
|
219
|
+
|
|
220
|
+
See [examples/extensions/](../examples/extensions/) for a comprehensive library including:
|
|
221
|
+
|
|
222
|
+
| Category | Examples |
|
|
223
|
+
|----------|---------|
|
|
224
|
+
| **Safety** | Permission gates, protected paths, destructive action confirmation |
|
|
225
|
+
| **Tools** | Todo lists, SSH delegation, image generation, dynamic tool registration |
|
|
226
|
+
| **UI** | Custom footers/headers, overlays (including DOOM!), modal editors, notifications |
|
|
227
|
+
| **Git** | Checkpoint stashing, auto-commit on exit |
|
|
228
|
+
| **System** | macOS theme sync, file watchers, interactive shell |
|
|
229
|
+
| **Providers** | Custom Anthropic, GitLab Duo, Qwen CLI |
|
|
230
|
+
| **Session** | Named sessions, bookmarks, context handoff |
|
|
231
|
+
|
|
232
|
+
---
|
|
233
|
+
|
|
234
|
+
## Skills
|
|
235
|
+
|
|
236
|
+
Skills are Markdown-based workflow modules that provide structured instructions to the agent.
|
|
237
|
+
|
|
238
|
+
### Structure
|
|
239
|
+
|
|
240
|
+
Each skill is a `SKILL.md` file with YAML frontmatter:
|
|
241
|
+
|
|
242
|
+
```markdown
|
|
243
|
+
---
|
|
244
|
+
name: deploy-workflow
|
|
245
|
+
description: Steps to deploy the application to production
|
|
246
|
+
---
|
|
247
|
+
|
|
248
|
+
## Deployment Steps
|
|
249
|
+
|
|
250
|
+
1. Run the test suite: `npm test`
|
|
251
|
+
2. Build production assets: `npm run build`
|
|
252
|
+
3. Deploy to staging: `npm run deploy:staging`
|
|
253
|
+
4. Run smoke tests against staging
|
|
254
|
+
5. If all pass, deploy to production: `npm run deploy:prod`
|
|
255
|
+
6. Monitor error rates for 30 minutes
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
### Discovery Directories
|
|
259
|
+
|
|
260
|
+
| Location | Scope |
|
|
261
|
+
|----------|-------|
|
|
262
|
+
| `~/.iosm/agent/skills/` | Global |
|
|
263
|
+
| `.iosm/skills/` | Project-local |
|
|
264
|
+
| `.claude/skills/` | Compatibility |
|
|
265
|
+
| `.opencode/skills/` | Compatibility |
|
|
266
|
+
|
|
267
|
+
### CLI Flags
|
|
268
|
+
|
|
269
|
+
```bash
|
|
270
|
+
# Load specific skill
|
|
271
|
+
iosm --skill ./my-workflow.md
|
|
272
|
+
|
|
273
|
+
# Disable auto-discovery
|
|
274
|
+
iosm --no-skills
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
---
|
|
278
|
+
|
|
279
|
+
## Prompt Templates
|
|
280
|
+
|
|
281
|
+
Prompt templates are reusable Markdown snippets invoked as slash commands.
|
|
282
|
+
|
|
283
|
+
### Structure
|
|
284
|
+
|
|
285
|
+
Create files in the prompts directory:
|
|
286
|
+
|
|
287
|
+
```markdown
|
|
288
|
+
<!-- ~/.iosm/agent/prompts/code-review.md -->
|
|
289
|
+
---
|
|
290
|
+
name: code-review
|
|
291
|
+
description: Thorough code review template
|
|
292
|
+
---
|
|
293
|
+
|
|
294
|
+
Please review the following code for:
|
|
295
|
+
1. Security vulnerabilities
|
|
296
|
+
2. Performance issues
|
|
297
|
+
3. Code style and readability
|
|
298
|
+
4. Error handling completeness
|
|
299
|
+
5. Test coverage gaps
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
### Discovery Directories
|
|
303
|
+
|
|
304
|
+
| Location | Scope |
|
|
305
|
+
|----------|-------|
|
|
306
|
+
| `~/.iosm/agent/prompts/*.md` | Global |
|
|
307
|
+
| `.iosm/prompts/*.md` | Project-local |
|
|
308
|
+
|
|
309
|
+
### Usage
|
|
310
|
+
|
|
311
|
+
```bash
|
|
312
|
+
# In interactive mode
|
|
313
|
+
/code-review src/auth.ts
|
|
314
|
+
```
|
|
315
|
+
|
|
316
|
+
### CLI Flags
|
|
317
|
+
|
|
318
|
+
```bash
|
|
319
|
+
iosm --prompt-template ./my-template.md
|
|
320
|
+
iosm --no-prompt-templates
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
---
|
|
324
|
+
|
|
325
|
+
## Themes
|
|
326
|
+
|
|
327
|
+
Theme files customize the TUI (Terminal User Interface) appearance.
|
|
328
|
+
|
|
329
|
+
### Structure
|
|
330
|
+
|
|
331
|
+
Themes are JSON files:
|
|
332
|
+
|
|
333
|
+
```json
|
|
334
|
+
{
|
|
335
|
+
"name": "dark-ocean",
|
|
336
|
+
"colors": {
|
|
337
|
+
"primary": "#0ea5e9",
|
|
338
|
+
"secondary": "#6366f1",
|
|
339
|
+
"success": "#22c55e",
|
|
340
|
+
"warning": "#f59e0b",
|
|
341
|
+
"error": "#ef4444",
|
|
342
|
+
"background": "#0f172a",
|
|
343
|
+
"foreground": "#e2e8f0"
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
### Discovery Directories
|
|
349
|
+
|
|
350
|
+
| Location | Scope |
|
|
351
|
+
|----------|-------|
|
|
352
|
+
| Built-in themes | Default |
|
|
353
|
+
| `~/.iosm/agent/themes/*.json` | Global |
|
|
354
|
+
| `.iosm/themes/*.json` | Project-local |
|
|
355
|
+
|
|
356
|
+
### CLI Flags
|
|
357
|
+
|
|
358
|
+
```bash
|
|
359
|
+
iosm --theme ./my-theme.json
|
|
360
|
+
iosm --no-themes
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
---
|
|
364
|
+
|
|
365
|
+
## Package Management
|
|
366
|
+
|
|
367
|
+
Distribute and install extensions, skills, themes, and prompts as packages.
|
|
368
|
+
|
|
369
|
+
### Commands
|
|
370
|
+
|
|
371
|
+
```bash
|
|
372
|
+
iosm install <source> [-l|--local] # Install a package
|
|
373
|
+
iosm remove <source> [-l|--local] # Remove a package
|
|
374
|
+
iosm update [source] # Update package(s)
|
|
375
|
+
iosm list # List installed packages
|
|
376
|
+
```
|
|
377
|
+
|
|
378
|
+
### Source Formats
|
|
379
|
+
|
|
380
|
+
| Format | Example |
|
|
381
|
+
|--------|---------|
|
|
382
|
+
| **npm** | `npm:@my-org/iosm-tools@1.0.0` |
|
|
383
|
+
| **git** | `git:github.com/user/repo@main` |
|
|
384
|
+
| **HTTPS** | `https://github.com/user/repo.git` |
|
|
385
|
+
| **SSH** | `ssh://git@github.com/user/repo.git` |
|
|
386
|
+
| **Local** | `./local-path`, `/absolute/path` |
|
|
387
|
+
|
|
388
|
+
### Project vs Global Install
|
|
389
|
+
|
|
390
|
+
```bash
|
|
391
|
+
# Global (available in all projects)
|
|
392
|
+
iosm install npm:@my-org/security-tools
|
|
393
|
+
|
|
394
|
+
# Project-local (only this project)
|
|
395
|
+
iosm install npm:@my-org/security-tools --local
|
|
396
|
+
```
|
|
397
|
+
|
|
398
|
+
### Package Manifest
|
|
399
|
+
|
|
400
|
+
Packages should include a manifest in `package.json`:
|
|
401
|
+
|
|
402
|
+
```json
|
|
403
|
+
{
|
|
404
|
+
"name": "@my-org/iosm-security-tools",
|
|
405
|
+
"version": "1.0.0",
|
|
406
|
+
"iosm": {
|
|
407
|
+
"extensions": ["./extensions"],
|
|
408
|
+
"skills": ["./skills"],
|
|
409
|
+
"prompts": ["./prompts"],
|
|
410
|
+
"themes": ["./themes"]
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
```
|
|
414
|
+
|
|
415
|
+
This tells `iosm-cli` which resources to load from the package.
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
# Getting Started
|
|
2
|
+
|
|
3
|
+
Welcome to `iosm-cli` — an AI-powered engineering agent with the IOSM (Improve → Optimize → Shrink → Modularize) methodology built in.
|
|
4
|
+
|
|
5
|
+
## Requirements
|
|
6
|
+
|
|
7
|
+
- **Node.js** `>=20.6.0` (check with `node --version`)
|
|
8
|
+
- **npm** (bundled with Node.js)
|
|
9
|
+
- At least one LLM provider API key
|
|
10
|
+
|
|
11
|
+
## Installation
|
|
12
|
+
|
|
13
|
+
### Option 1: Global Install (recommended)
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
npm install -g iosm-cli
|
|
17
|
+
iosm --version
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
### Option 2: Run Without Installing
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
npx iosm-cli --version
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
### Option 3: Build from Source
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
git clone https://github.com/rokoss21/iosm-cli.git
|
|
30
|
+
cd iosm-cli
|
|
31
|
+
npm install
|
|
32
|
+
npm run build
|
|
33
|
+
npm link # Makes `iosm` available globally
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Provider Setup
|
|
37
|
+
|
|
38
|
+
You need at least one LLM provider. Set the API key as an environment variable:
|
|
39
|
+
|
|
40
|
+
### Anthropic (Claude)
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
export ANTHROPIC_API_KEY="sk-ant-api03-..."
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### OpenAI
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
export OPENAI_API_KEY="sk-..."
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### Google Gemini
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
export GEMINI_API_KEY="AI..."
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### Other Providers
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
export GROQ_API_KEY="gsk_..."
|
|
62
|
+
export XAI_API_KEY="xai-..."
|
|
63
|
+
export OPENROUTER_API_KEY="sk-or-..."
|
|
64
|
+
export MISTRAL_API_KEY="..."
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
You can also use `/login` in interactive mode for OAuth providers (including free Qwen OAuth) and OpenRouter API key setup:
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
iosm
|
|
71
|
+
# Inside interactive mode:
|
|
72
|
+
/login
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
> **Tip**: Add your API key exports to `~/.zshrc` or `~/.bashrc` so they persist across sessions.
|
|
76
|
+
|
|
77
|
+
## First Run
|
|
78
|
+
|
|
79
|
+
### Interactive Mode
|
|
80
|
+
|
|
81
|
+
Start the agent in interactive mode:
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
iosm
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
You'll see a prompt where you can type messages. The agent has access to your filesystem and shell tools.
|
|
88
|
+
|
|
89
|
+
**Useful first commands inside the agent:**
|
|
90
|
+
|
|
91
|
+
| Command | What it does |
|
|
92
|
+
|---------|-------------|
|
|
93
|
+
| `/model` | Pick or change the active model |
|
|
94
|
+
| `/login` | Authenticate with OAuth providers (including Qwen) or add OpenRouter API key |
|
|
95
|
+
| `/init` | Bootstrap IOSM artifacts for the current project |
|
|
96
|
+
| `/agents` | View available custom/system agents |
|
|
97
|
+
| `/settings` | View and modify settings |
|
|
98
|
+
| `/hotkeys` | View keyboard shortcuts |
|
|
99
|
+
|
|
100
|
+
### Example First Interaction
|
|
101
|
+
|
|
102
|
+
```
|
|
103
|
+
You: Review the project structure and summarize the architecture
|
|
104
|
+
|
|
105
|
+
Agent: I'll analyze the project structure for you.
|
|
106
|
+
|
|
107
|
+
[Tool: ls] Listing directory...
|
|
108
|
+
[Tool: read] Reading key files...
|
|
109
|
+
|
|
110
|
+
Based on my analysis, here's the project architecture:
|
|
111
|
+
...
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### One-Shot Usage
|
|
115
|
+
|
|
116
|
+
Run a single prompt without entering interactive mode:
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
# Quick code review
|
|
120
|
+
iosm -p "Review src/ and list the top 5 refactoring opportunities"
|
|
121
|
+
|
|
122
|
+
# Read-only audit
|
|
123
|
+
iosm --tools read,grep,find,ls -p "Audit src/ for dead code"
|
|
124
|
+
|
|
125
|
+
# With a specific model
|
|
126
|
+
iosm --model openai/gpt-4o -p "Explain the auth module"
|
|
127
|
+
|
|
128
|
+
# With file attachments
|
|
129
|
+
iosm @README.md @src/main.ts -p "How does the CLI entry point work?"
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
## Initialize IOSM Workspace
|
|
133
|
+
|
|
134
|
+
If you want to use the IOSM methodology for systematic improvement:
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
# Bootstrap in current project
|
|
138
|
+
iosm init
|
|
139
|
+
|
|
140
|
+
# Bootstrap in a specific path
|
|
141
|
+
iosm init ../service-a
|
|
142
|
+
|
|
143
|
+
# Force re-initialization
|
|
144
|
+
iosm init --force
|
|
145
|
+
|
|
146
|
+
# Skip post-init agent verification
|
|
147
|
+
iosm init --no-agent-verify
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
This creates:
|
|
151
|
+
|
|
152
|
+
- `iosm.yaml` — methodology configuration (thresholds, weights, policies)
|
|
153
|
+
- `IOSM.md` — operator/agent playbook
|
|
154
|
+
- `.iosm/` — workspace with cycle artifacts, metrics history, decision log
|
|
155
|
+
|
|
156
|
+
## Typical Daily Workflow
|
|
157
|
+
|
|
158
|
+
```bash
|
|
159
|
+
# 1. Open your project and start the agent
|
|
160
|
+
cd my-project
|
|
161
|
+
iosm
|
|
162
|
+
|
|
163
|
+
# 2. Initialize IOSM (first time only)
|
|
164
|
+
/init
|
|
165
|
+
|
|
166
|
+
# 3. Plan improvement cycles
|
|
167
|
+
/cycle-plan reduce checkout latency
|
|
168
|
+
|
|
169
|
+
# 4. Work on tasks via natural language
|
|
170
|
+
# "Implement the cache optimization from hypothesis hyp-latency-001"
|
|
171
|
+
|
|
172
|
+
# 5. Check cycle progress
|
|
173
|
+
/cycle-status
|
|
174
|
+
|
|
175
|
+
# 6. Export or share your session
|
|
176
|
+
/export
|
|
177
|
+
/share
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
## Choosing a Model
|
|
181
|
+
|
|
182
|
+
Select a model at startup or switch during a session:
|
|
183
|
+
|
|
184
|
+
```bash
|
|
185
|
+
# At startup
|
|
186
|
+
iosm --model sonnet # Claude Sonnet
|
|
187
|
+
iosm --model openai/gpt-4o # GPT-4o
|
|
188
|
+
iosm --model gemini-2.5-pro # Gemini Pro
|
|
189
|
+
iosm --model sonnet:high # With high thinking level
|
|
190
|
+
|
|
191
|
+
# Model rotation (cycles through models)
|
|
192
|
+
iosm --models "sonnet,gpt-4o,gemini-2.5-pro"
|
|
193
|
+
|
|
194
|
+
# During interactive session
|
|
195
|
+
/model # Opens model selector
|
|
196
|
+
Ctrl+P # Next model in rotation
|
|
197
|
+
Shift+Ctrl+P # Previous model
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
## Troubleshooting
|
|
201
|
+
|
|
202
|
+
### "No model available"
|
|
203
|
+
|
|
204
|
+
Ensure you have at least one valid API key:
|
|
205
|
+
|
|
206
|
+
```bash
|
|
207
|
+
echo $ANTHROPIC_API_KEY # Should show your key
|
|
208
|
+
echo $OPENAI_API_KEY
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
### "Permission denied" when running tools
|
|
212
|
+
|
|
213
|
+
The agent respects tool permissions. Use `/permissions` or `/yolo on` to adjust:
|
|
214
|
+
|
|
215
|
+
```bash
|
|
216
|
+
/permissions # View current permissions
|
|
217
|
+
/yolo on # Enable auto-approve for tool calls
|
|
218
|
+
/yolo off # Disable auto-approve
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
### Network issues
|
|
222
|
+
|
|
223
|
+
Run in offline mode to skip startup network operations:
|
|
224
|
+
|
|
225
|
+
```bash
|
|
226
|
+
iosm --offline
|
|
227
|
+
# or
|
|
228
|
+
IOSM_OFFLINE=1 iosm
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
### Session recovery
|
|
232
|
+
|
|
233
|
+
If a session was interrupted:
|
|
234
|
+
|
|
235
|
+
```bash
|
|
236
|
+
iosm --continue # Continue the last session
|
|
237
|
+
iosm --resume # Pick from recent sessions
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
## Next Steps
|
|
241
|
+
|
|
242
|
+
- [CLI Reference](./cli-reference.md) — Complete flag documentation
|
|
243
|
+
- [Interactive Mode](./interactive-mode.md) — All slash commands and keybindings
|
|
244
|
+
- [IOSM Init & Cycles](./iosm-init-and-cycles.md) — IOSM methodology guide
|
|
245
|
+
- [Extensions](./extensions-packages-themes.md) — Build custom tools and integrations
|
|
246
|
+
- [Configuration](./configuration.md) — Settings, env vars, profiles
|