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.
Files changed (729) hide show
  1. package/CHANGELOG.md +55 -0
  2. package/LICENSE +21 -0
  3. package/README.md +650 -0
  4. package/dist/cli/args.d.ts +54 -0
  5. package/dist/cli/args.d.ts.map +1 -0
  6. package/dist/cli/args.js +331 -0
  7. package/dist/cli/args.js.map +1 -0
  8. package/dist/cli/config-selector.d.ts +14 -0
  9. package/dist/cli/config-selector.d.ts.map +1 -0
  10. package/dist/cli/config-selector.js +31 -0
  11. package/dist/cli/config-selector.js.map +1 -0
  12. package/dist/cli/file-processor.d.ts +15 -0
  13. package/dist/cli/file-processor.d.ts.map +1 -0
  14. package/dist/cli/file-processor.js +79 -0
  15. package/dist/cli/file-processor.js.map +1 -0
  16. package/dist/cli/list-models.d.ts +9 -0
  17. package/dist/cli/list-models.d.ts.map +1 -0
  18. package/dist/cli/list-models.js +92 -0
  19. package/dist/cli/list-models.js.map +1 -0
  20. package/dist/cli/session-picker.d.ts +9 -0
  21. package/dist/cli/session-picker.d.ts.map +1 -0
  22. package/dist/cli/session-picker.js +34 -0
  23. package/dist/cli/session-picker.js.map +1 -0
  24. package/dist/cli.d.ts +3 -0
  25. package/dist/cli.d.ts.map +1 -0
  26. package/dist/cli.js +15 -0
  27. package/dist/cli.js.map +1 -0
  28. package/dist/config.d.ts +88 -0
  29. package/dist/config.d.ts.map +1 -0
  30. package/dist/config.js +262 -0
  31. package/dist/config.js.map +1 -0
  32. package/dist/core/agent-profiles.d.ts +29 -0
  33. package/dist/core/agent-profiles.d.ts.map +1 -0
  34. package/dist/core/agent-profiles.js +86 -0
  35. package/dist/core/agent-profiles.js.map +1 -0
  36. package/dist/core/agent-session.d.ts +688 -0
  37. package/dist/core/agent-session.d.ts.map +1 -0
  38. package/dist/core/agent-session.js +3112 -0
  39. package/dist/core/agent-session.js.map +1 -0
  40. package/dist/core/agent-teams.d.ts +41 -0
  41. package/dist/core/agent-teams.d.ts.map +1 -0
  42. package/dist/core/agent-teams.js +90 -0
  43. package/dist/core/agent-teams.js.map +1 -0
  44. package/dist/core/ask-user-tool.d.ts +22 -0
  45. package/dist/core/ask-user-tool.d.ts.map +1 -0
  46. package/dist/core/ask-user-tool.js +115 -0
  47. package/dist/core/ask-user-tool.js.map +1 -0
  48. package/dist/core/auth-storage.d.ts +133 -0
  49. package/dist/core/auth-storage.d.ts.map +1 -0
  50. package/dist/core/auth-storage.js +391 -0
  51. package/dist/core/auth-storage.js.map +1 -0
  52. package/dist/core/bash-executor.d.ts +49 -0
  53. package/dist/core/bash-executor.d.ts.map +1 -0
  54. package/dist/core/bash-executor.js +213 -0
  55. package/dist/core/bash-executor.js.map +1 -0
  56. package/dist/core/compaction/branch-summarization.d.ts +86 -0
  57. package/dist/core/compaction/branch-summarization.d.ts.map +1 -0
  58. package/dist/core/compaction/branch-summarization.js +242 -0
  59. package/dist/core/compaction/branch-summarization.js.map +1 -0
  60. package/dist/core/compaction/compaction.d.ts +121 -0
  61. package/dist/core/compaction/compaction.d.ts.map +1 -0
  62. package/dist/core/compaction/compaction.js +610 -0
  63. package/dist/core/compaction/compaction.js.map +1 -0
  64. package/dist/core/compaction/index.d.ts +7 -0
  65. package/dist/core/compaction/index.d.ts.map +1 -0
  66. package/dist/core/compaction/index.js +7 -0
  67. package/dist/core/compaction/index.js.map +1 -0
  68. package/dist/core/compaction/utils.d.ts +35 -0
  69. package/dist/core/compaction/utils.d.ts.map +1 -0
  70. package/dist/core/compaction/utils.js +138 -0
  71. package/dist/core/compaction/utils.js.map +1 -0
  72. package/dist/core/defaults.d.ts +3 -0
  73. package/dist/core/defaults.d.ts.map +1 -0
  74. package/dist/core/defaults.js +2 -0
  75. package/dist/core/defaults.js.map +1 -0
  76. package/dist/core/diagnostics.d.ts +15 -0
  77. package/dist/core/diagnostics.d.ts.map +1 -0
  78. package/dist/core/diagnostics.js +2 -0
  79. package/dist/core/diagnostics.js.map +1 -0
  80. package/dist/core/event-bus.d.ts +9 -0
  81. package/dist/core/event-bus.d.ts.map +1 -0
  82. package/dist/core/event-bus.js +25 -0
  83. package/dist/core/event-bus.js.map +1 -0
  84. package/dist/core/exec.d.ts +29 -0
  85. package/dist/core/exec.d.ts.map +1 -0
  86. package/dist/core/exec.js +71 -0
  87. package/dist/core/exec.js.map +1 -0
  88. package/dist/core/export-html/ansi-to-html.d.ts +22 -0
  89. package/dist/core/export-html/ansi-to-html.d.ts.map +1 -0
  90. package/dist/core/export-html/ansi-to-html.js +249 -0
  91. package/dist/core/export-html/ansi-to-html.js.map +1 -0
  92. package/dist/core/export-html/index.d.ts +34 -0
  93. package/dist/core/export-html/index.d.ts.map +1 -0
  94. package/dist/core/export-html/index.js +222 -0
  95. package/dist/core/export-html/index.js.map +1 -0
  96. package/dist/core/export-html/template.css +971 -0
  97. package/dist/core/export-html/template.html +54 -0
  98. package/dist/core/export-html/template.js +1590 -0
  99. package/dist/core/export-html/tool-renderer.d.ts +35 -0
  100. package/dist/core/export-html/tool-renderer.d.ts.map +1 -0
  101. package/dist/core/export-html/tool-renderer.js +63 -0
  102. package/dist/core/export-html/tool-renderer.js.map +1 -0
  103. package/dist/core/export-html/vendor/highlight.min.js +1213 -0
  104. package/dist/core/export-html/vendor/marked.min.js +6 -0
  105. package/dist/core/extensions/index.d.ts +11 -0
  106. package/dist/core/extensions/index.d.ts.map +1 -0
  107. package/dist/core/extensions/index.js +9 -0
  108. package/dist/core/extensions/index.js.map +1 -0
  109. package/dist/core/extensions/loader.d.ts +25 -0
  110. package/dist/core/extensions/loader.d.ts.map +1 -0
  111. package/dist/core/extensions/loader.js +447 -0
  112. package/dist/core/extensions/loader.js.map +1 -0
  113. package/dist/core/extensions/runner.d.ts +146 -0
  114. package/dist/core/extensions/runner.d.ts.map +1 -0
  115. package/dist/core/extensions/runner.js +652 -0
  116. package/dist/core/extensions/runner.js.map +1 -0
  117. package/dist/core/extensions/types.d.ts +1074 -0
  118. package/dist/core/extensions/types.d.ts.map +1 -0
  119. package/dist/core/extensions/types.js +35 -0
  120. package/dist/core/extensions/types.js.map +1 -0
  121. package/dist/core/extensions/wrapper.d.ts +27 -0
  122. package/dist/core/extensions/wrapper.d.ts.map +1 -0
  123. package/dist/core/extensions/wrapper.js +102 -0
  124. package/dist/core/extensions/wrapper.js.map +1 -0
  125. package/dist/core/footer-data-provider.d.ts +32 -0
  126. package/dist/core/footer-data-provider.d.ts.map +1 -0
  127. package/dist/core/footer-data-provider.js +134 -0
  128. package/dist/core/footer-data-provider.js.map +1 -0
  129. package/dist/core/hooks.d.ts +53 -0
  130. package/dist/core/hooks.d.ts.map +1 -0
  131. package/dist/core/hooks.js +332 -0
  132. package/dist/core/hooks.js.map +1 -0
  133. package/dist/core/index.d.ts +9 -0
  134. package/dist/core/index.d.ts.map +1 -0
  135. package/dist/core/index.js +9 -0
  136. package/dist/core/index.js.map +1 -0
  137. package/dist/core/keybindings.d.ts +55 -0
  138. package/dist/core/keybindings.d.ts.map +1 -0
  139. package/dist/core/keybindings.js +157 -0
  140. package/dist/core/keybindings.js.map +1 -0
  141. package/dist/core/mcp/cli.d.ts +27 -0
  142. package/dist/core/mcp/cli.d.ts.map +1 -0
  143. package/dist/core/mcp/cli.js +275 -0
  144. package/dist/core/mcp/cli.js.map +1 -0
  145. package/dist/core/mcp/config.d.ts +11 -0
  146. package/dist/core/mcp/config.d.ts.map +1 -0
  147. package/dist/core/mcp/config.js +310 -0
  148. package/dist/core/mcp/config.js.map +1 -0
  149. package/dist/core/mcp/index.d.ts +5 -0
  150. package/dist/core/mcp/index.d.ts.map +1 -0
  151. package/dist/core/mcp/index.js +4 -0
  152. package/dist/core/mcp/index.js.map +1 -0
  153. package/dist/core/mcp/runtime.d.ts +42 -0
  154. package/dist/core/mcp/runtime.d.ts.map +1 -0
  155. package/dist/core/mcp/runtime.js +387 -0
  156. package/dist/core/mcp/runtime.js.map +1 -0
  157. package/dist/core/mcp/types.d.ts +76 -0
  158. package/dist/core/mcp/types.d.ts.map +1 -0
  159. package/dist/core/mcp/types.js +2 -0
  160. package/dist/core/mcp/types.js.map +1 -0
  161. package/dist/core/memory.d.ts +27 -0
  162. package/dist/core/memory.d.ts.map +1 -0
  163. package/dist/core/memory.js +203 -0
  164. package/dist/core/memory.js.map +1 -0
  165. package/dist/core/messages.d.ts +84 -0
  166. package/dist/core/messages.d.ts.map +1 -0
  167. package/dist/core/messages.js +141 -0
  168. package/dist/core/messages.js.map +1 -0
  169. package/dist/core/model-registry.d.ts +115 -0
  170. package/dist/core/model-registry.d.ts.map +1 -0
  171. package/dist/core/model-registry.js +549 -0
  172. package/dist/core/model-registry.js.map +1 -0
  173. package/dist/core/model-resolver.d.ts +104 -0
  174. package/dist/core/model-resolver.d.ts.map +1 -0
  175. package/dist/core/model-resolver.js +448 -0
  176. package/dist/core/model-resolver.js.map +1 -0
  177. package/dist/core/package-manager.d.ts +156 -0
  178. package/dist/core/package-manager.d.ts.map +1 -0
  179. package/dist/core/package-manager.js +1465 -0
  180. package/dist/core/package-manager.js.map +1 -0
  181. package/dist/core/parallel-task-agent.d.ts +19 -0
  182. package/dist/core/parallel-task-agent.d.ts.map +1 -0
  183. package/dist/core/parallel-task-agent.js +482 -0
  184. package/dist/core/parallel-task-agent.js.map +1 -0
  185. package/dist/core/prompt-templates.d.ts +50 -0
  186. package/dist/core/prompt-templates.d.ts.map +1 -0
  187. package/dist/core/prompt-templates.js +251 -0
  188. package/dist/core/prompt-templates.js.map +1 -0
  189. package/dist/core/qwen-cli-provider.d.ts +10 -0
  190. package/dist/core/qwen-cli-provider.d.ts.map +1 -0
  191. package/dist/core/qwen-cli-provider.js +271 -0
  192. package/dist/core/qwen-cli-provider.js.map +1 -0
  193. package/dist/core/resolve-config-value.d.ts +17 -0
  194. package/dist/core/resolve-config-value.d.ts.map +1 -0
  195. package/dist/core/resolve-config-value.js +60 -0
  196. package/dist/core/resolve-config-value.js.map +1 -0
  197. package/dist/core/resource-loader.d.ts +195 -0
  198. package/dist/core/resource-loader.d.ts.map +1 -0
  199. package/dist/core/resource-loader.js +820 -0
  200. package/dist/core/resource-loader.js.map +1 -0
  201. package/dist/core/sdk.d.ts +106 -0
  202. package/dist/core/sdk.d.ts.map +1 -0
  203. package/dist/core/sdk.js +460 -0
  204. package/dist/core/sdk.js.map +1 -0
  205. package/dist/core/session-manager.d.ts +323 -0
  206. package/dist/core/session-manager.d.ts.map +1 -0
  207. package/dist/core/session-manager.js +1094 -0
  208. package/dist/core/session-manager.js.map +1 -0
  209. package/dist/core/settings-manager.d.ts +243 -0
  210. package/dist/core/settings-manager.d.ts.map +1 -0
  211. package/dist/core/settings-manager.js +691 -0
  212. package/dist/core/settings-manager.js.map +1 -0
  213. package/dist/core/skills.d.ts +58 -0
  214. package/dist/core/skills.d.ts.map +1 -0
  215. package/dist/core/skills.js +364 -0
  216. package/dist/core/skills.js.map +1 -0
  217. package/dist/core/slash-commands.d.ts +15 -0
  218. package/dist/core/slash-commands.d.ts.map +1 -0
  219. package/dist/core/slash-commands.js +64 -0
  220. package/dist/core/slash-commands.js.map +1 -0
  221. package/dist/core/subagent-runs.d.ts +16 -0
  222. package/dist/core/subagent-runs.d.ts.map +1 -0
  223. package/dist/core/subagent-runs.js +70 -0
  224. package/dist/core/subagent-runs.js.map +1 -0
  225. package/dist/core/subagents.d.ts +45 -0
  226. package/dist/core/subagents.d.ts.map +1 -0
  227. package/dist/core/subagents.js +467 -0
  228. package/dist/core/subagents.js.map +1 -0
  229. package/dist/core/system-prompt.d.ts +28 -0
  230. package/dist/core/system-prompt.d.ts.map +1 -0
  231. package/dist/core/system-prompt.js +196 -0
  232. package/dist/core/system-prompt.js.map +1 -0
  233. package/dist/core/task-plan.d.ts +32 -0
  234. package/dist/core/task-plan.d.ts.map +1 -0
  235. package/dist/core/task-plan.js +155 -0
  236. package/dist/core/task-plan.js.map +1 -0
  237. package/dist/core/timings.d.ts +7 -0
  238. package/dist/core/timings.d.ts.map +1 -0
  239. package/dist/core/timings.js +26 -0
  240. package/dist/core/timings.js.map +1 -0
  241. package/dist/core/tools/bash.d.ts +58 -0
  242. package/dist/core/tools/bash.d.ts.map +1 -0
  243. package/dist/core/tools/bash.js +275 -0
  244. package/dist/core/tools/bash.js.map +1 -0
  245. package/dist/core/tools/edit-diff.d.ts +63 -0
  246. package/dist/core/tools/edit-diff.d.ts.map +1 -0
  247. package/dist/core/tools/edit-diff.js +243 -0
  248. package/dist/core/tools/edit-diff.js.map +1 -0
  249. package/dist/core/tools/edit.d.ts +42 -0
  250. package/dist/core/tools/edit.d.ts.map +1 -0
  251. package/dist/core/tools/edit.js +158 -0
  252. package/dist/core/tools/edit.js.map +1 -0
  253. package/dist/core/tools/find.d.ts +39 -0
  254. package/dist/core/tools/find.d.ts.map +1 -0
  255. package/dist/core/tools/find.js +219 -0
  256. package/dist/core/tools/find.js.map +1 -0
  257. package/dist/core/tools/grep.d.ts +45 -0
  258. package/dist/core/tools/grep.d.ts.map +1 -0
  259. package/dist/core/tools/grep.js +254 -0
  260. package/dist/core/tools/grep.js.map +1 -0
  261. package/dist/core/tools/ignore-filter.d.ts +5 -0
  262. package/dist/core/tools/ignore-filter.d.ts.map +1 -0
  263. package/dist/core/tools/ignore-filter.js +97 -0
  264. package/dist/core/tools/ignore-filter.js.map +1 -0
  265. package/dist/core/tools/index.d.ts +97 -0
  266. package/dist/core/tools/index.d.ts.map +1 -0
  267. package/dist/core/tools/index.js +78 -0
  268. package/dist/core/tools/index.js.map +1 -0
  269. package/dist/core/tools/ls.d.ts +46 -0
  270. package/dist/core/tools/ls.d.ts.map +1 -0
  271. package/dist/core/tools/ls.js +136 -0
  272. package/dist/core/tools/ls.js.map +1 -0
  273. package/dist/core/tools/path-utils.d.ts +8 -0
  274. package/dist/core/tools/path-utils.d.ts.map +1 -0
  275. package/dist/core/tools/path-utils.js +81 -0
  276. package/dist/core/tools/path-utils.js.map +1 -0
  277. package/dist/core/tools/permissions.d.ts +8 -0
  278. package/dist/core/tools/permissions.d.ts.map +1 -0
  279. package/dist/core/tools/permissions.js +2 -0
  280. package/dist/core/tools/permissions.js.map +1 -0
  281. package/dist/core/tools/read.d.ts +39 -0
  282. package/dist/core/tools/read.d.ts.map +1 -0
  283. package/dist/core/tools/read.js +166 -0
  284. package/dist/core/tools/read.js.map +1 -0
  285. package/dist/core/tools/task.d.ts +109 -0
  286. package/dist/core/tools/task.d.ts.map +1 -0
  287. package/dist/core/tools/task.js +1065 -0
  288. package/dist/core/tools/task.js.map +1 -0
  289. package/dist/core/tools/todo.d.ts +42 -0
  290. package/dist/core/tools/todo.d.ts.map +1 -0
  291. package/dist/core/tools/todo.js +159 -0
  292. package/dist/core/tools/todo.js.map +1 -0
  293. package/dist/core/tools/truncate.d.ts +70 -0
  294. package/dist/core/tools/truncate.d.ts.map +1 -0
  295. package/dist/core/tools/truncate.js +205 -0
  296. package/dist/core/tools/truncate.js.map +1 -0
  297. package/dist/core/tools/write.d.ts +32 -0
  298. package/dist/core/tools/write.d.ts.map +1 -0
  299. package/dist/core/tools/write.js +90 -0
  300. package/dist/core/tools/write.js.map +1 -0
  301. package/dist/index.d.ts +30 -0
  302. package/dist/index.d.ts.map +1 -0
  303. package/dist/index.js +45 -0
  304. package/dist/index.js.map +1 -0
  305. package/dist/iosm/agent-verification.d.ts +16 -0
  306. package/dist/iosm/agent-verification.d.ts.map +1 -0
  307. package/dist/iosm/agent-verification.js +138 -0
  308. package/dist/iosm/agent-verification.js.map +1 -0
  309. package/dist/iosm/automation.d.ts +40 -0
  310. package/dist/iosm/automation.d.ts.map +1 -0
  311. package/dist/iosm/automation.js +76 -0
  312. package/dist/iosm/automation.js.map +1 -0
  313. package/dist/iosm/config.d.ts +151 -0
  314. package/dist/iosm/config.d.ts.map +1 -0
  315. package/dist/iosm/config.js +323 -0
  316. package/dist/iosm/config.js.map +1 -0
  317. package/dist/iosm/context-loader.d.ts +12 -0
  318. package/dist/iosm/context-loader.d.ts.map +1 -0
  319. package/dist/iosm/context-loader.js +50 -0
  320. package/dist/iosm/context-loader.js.map +1 -0
  321. package/dist/iosm/cycle.d.ts +51 -0
  322. package/dist/iosm/cycle.d.ts.map +1 -0
  323. package/dist/iosm/cycle.js +861 -0
  324. package/dist/iosm/cycle.js.map +1 -0
  325. package/dist/iosm/guide.d.ts +31 -0
  326. package/dist/iosm/guide.d.ts.map +1 -0
  327. package/dist/iosm/guide.js +101 -0
  328. package/dist/iosm/guide.js.map +1 -0
  329. package/dist/iosm/index.d.ts +12 -0
  330. package/dist/iosm/index.d.ts.map +1 -0
  331. package/dist/iosm/index.js +11 -0
  332. package/dist/iosm/index.js.map +1 -0
  333. package/dist/iosm/init.d.ts +58 -0
  334. package/dist/iosm/init.d.ts.map +1 -0
  335. package/dist/iosm/init.js +1221 -0
  336. package/dist/iosm/init.js.map +1 -0
  337. package/dist/iosm/metrics.d.ts +23 -0
  338. package/dist/iosm/metrics.d.ts.map +1 -0
  339. package/dist/iosm/metrics.js +336 -0
  340. package/dist/iosm/metrics.js.map +1 -0
  341. package/dist/iosm/paths.d.ts +24 -0
  342. package/dist/iosm/paths.d.ts.map +1 -0
  343. package/dist/iosm/paths.js +77 -0
  344. package/dist/iosm/paths.js.map +1 -0
  345. package/dist/iosm/runtime-context.d.ts +20 -0
  346. package/dist/iosm/runtime-context.d.ts.map +1 -0
  347. package/dist/iosm/runtime-context.js +170 -0
  348. package/dist/iosm/runtime-context.js.map +1 -0
  349. package/dist/iosm/types.d.ts +151 -0
  350. package/dist/iosm/types.d.ts.map +1 -0
  351. package/dist/iosm/types.js +3 -0
  352. package/dist/iosm/types.js.map +1 -0
  353. package/dist/main.d.ts +8 -0
  354. package/dist/main.d.ts.map +1 -0
  355. package/dist/main.js +1478 -0
  356. package/dist/main.js.map +1 -0
  357. package/dist/migrations.d.ts +33 -0
  358. package/dist/migrations.d.ts.map +1 -0
  359. package/dist/migrations.js +261 -0
  360. package/dist/migrations.js.map +1 -0
  361. package/dist/modes/index.d.ts +9 -0
  362. package/dist/modes/index.d.ts.map +1 -0
  363. package/dist/modes/index.js +8 -0
  364. package/dist/modes/index.js.map +1 -0
  365. package/dist/modes/interactive/components/armin.d.ts +34 -0
  366. package/dist/modes/interactive/components/armin.d.ts.map +1 -0
  367. package/dist/modes/interactive/components/armin.js +329 -0
  368. package/dist/modes/interactive/components/armin.js.map +1 -0
  369. package/dist/modes/interactive/components/ascii-logo.d.ts +11 -0
  370. package/dist/modes/interactive/components/ascii-logo.d.ts.map +1 -0
  371. package/dist/modes/interactive/components/ascii-logo.js +25 -0
  372. package/dist/modes/interactive/components/ascii-logo.js.map +1 -0
  373. package/dist/modes/interactive/components/assistant-message.d.ts +16 -0
  374. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -0
  375. package/dist/modes/interactive/components/assistant-message.js +92 -0
  376. package/dist/modes/interactive/components/assistant-message.js.map +1 -0
  377. package/dist/modes/interactive/components/bash-execution.d.ts +36 -0
  378. package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -0
  379. package/dist/modes/interactive/components/bash-execution.js +170 -0
  380. package/dist/modes/interactive/components/bash-execution.js.map +1 -0
  381. package/dist/modes/interactive/components/bordered-loader.d.ts +16 -0
  382. package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -0
  383. package/dist/modes/interactive/components/bordered-loader.js +48 -0
  384. package/dist/modes/interactive/components/bordered-loader.js.map +1 -0
  385. package/dist/modes/interactive/components/branch-summary-message.d.ts +16 -0
  386. package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -0
  387. package/dist/modes/interactive/components/branch-summary-message.js +42 -0
  388. package/dist/modes/interactive/components/branch-summary-message.js.map +1 -0
  389. package/dist/modes/interactive/components/compaction-summary-message.d.ts +16 -0
  390. package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -0
  391. package/dist/modes/interactive/components/compaction-summary-message.js +43 -0
  392. package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -0
  393. package/dist/modes/interactive/components/config-selector.d.ts +71 -0
  394. package/dist/modes/interactive/components/config-selector.d.ts.map +1 -0
  395. package/dist/modes/interactive/components/config-selector.js +470 -0
  396. package/dist/modes/interactive/components/config-selector.js.map +1 -0
  397. package/dist/modes/interactive/components/countdown-timer.d.ts +14 -0
  398. package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -0
  399. package/dist/modes/interactive/components/countdown-timer.js +28 -0
  400. package/dist/modes/interactive/components/countdown-timer.js.map +1 -0
  401. package/dist/modes/interactive/components/custom-editor.d.ts +21 -0
  402. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -0
  403. package/dist/modes/interactive/components/custom-editor.js +63 -0
  404. package/dist/modes/interactive/components/custom-editor.js.map +1 -0
  405. package/dist/modes/interactive/components/custom-message.d.ts +20 -0
  406. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -0
  407. package/dist/modes/interactive/components/custom-message.js +74 -0
  408. package/dist/modes/interactive/components/custom-message.js.map +1 -0
  409. package/dist/modes/interactive/components/daxnuts.d.ts +23 -0
  410. package/dist/modes/interactive/components/daxnuts.d.ts.map +1 -0
  411. package/dist/modes/interactive/components/daxnuts.js +138 -0
  412. package/dist/modes/interactive/components/daxnuts.js.map +1 -0
  413. package/dist/modes/interactive/components/decrypt-loader.d.ts +25 -0
  414. package/dist/modes/interactive/components/decrypt-loader.d.ts.map +1 -0
  415. package/dist/modes/interactive/components/decrypt-loader.js +102 -0
  416. package/dist/modes/interactive/components/decrypt-loader.js.map +1 -0
  417. package/dist/modes/interactive/components/diff.d.ts +12 -0
  418. package/dist/modes/interactive/components/diff.d.ts.map +1 -0
  419. package/dist/modes/interactive/components/diff.js +133 -0
  420. package/dist/modes/interactive/components/diff.js.map +1 -0
  421. package/dist/modes/interactive/components/dynamic-border.d.ts +15 -0
  422. package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -0
  423. package/dist/modes/interactive/components/dynamic-border.js +20 -0
  424. package/dist/modes/interactive/components/dynamic-border.js.map +1 -0
  425. package/dist/modes/interactive/components/extension-editor.d.ts +20 -0
  426. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -0
  427. package/dist/modes/interactive/components/extension-editor.js +105 -0
  428. package/dist/modes/interactive/components/extension-editor.js.map +1 -0
  429. package/dist/modes/interactive/components/extension-input.d.ts +23 -0
  430. package/dist/modes/interactive/components/extension-input.d.ts.map +1 -0
  431. package/dist/modes/interactive/components/extension-input.js +55 -0
  432. package/dist/modes/interactive/components/extension-input.js.map +1 -0
  433. package/dist/modes/interactive/components/extension-selector.d.ts +24 -0
  434. package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -0
  435. package/dist/modes/interactive/components/extension-selector.js +71 -0
  436. package/dist/modes/interactive/components/extension-selector.js.map +1 -0
  437. package/dist/modes/interactive/components/footer.d.ts +39 -0
  438. package/dist/modes/interactive/components/footer.d.ts.map +1 -0
  439. package/dist/modes/interactive/components/footer.js +285 -0
  440. package/dist/modes/interactive/components/footer.js.map +1 -0
  441. package/dist/modes/interactive/components/index.d.ts +33 -0
  442. package/dist/modes/interactive/components/index.d.ts.map +1 -0
  443. package/dist/modes/interactive/components/index.js +34 -0
  444. package/dist/modes/interactive/components/index.js.map +1 -0
  445. package/dist/modes/interactive/components/keybinding-hints.d.ts +50 -0
  446. package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -0
  447. package/dist/modes/interactive/components/keybinding-hints.js +85 -0
  448. package/dist/modes/interactive/components/keybinding-hints.js.map +1 -0
  449. package/dist/modes/interactive/components/login-dialog.d.ts +42 -0
  450. package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -0
  451. package/dist/modes/interactive/components/login-dialog.js +139 -0
  452. package/dist/modes/interactive/components/login-dialog.js.map +1 -0
  453. package/dist/modes/interactive/components/mcp-selector.d.ts +31 -0
  454. package/dist/modes/interactive/components/mcp-selector.d.ts.map +1 -0
  455. package/dist/modes/interactive/components/mcp-selector.js +171 -0
  456. package/dist/modes/interactive/components/mcp-selector.js.map +1 -0
  457. package/dist/modes/interactive/components/model-selector.d.ts +51 -0
  458. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -0
  459. package/dist/modes/interactive/components/model-selector.js +292 -0
  460. package/dist/modes/interactive/components/model-selector.js.map +1 -0
  461. package/dist/modes/interactive/components/oauth-selector.d.ts +19 -0
  462. package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -0
  463. package/dist/modes/interactive/components/oauth-selector.js +134 -0
  464. package/dist/modes/interactive/components/oauth-selector.js.map +1 -0
  465. package/dist/modes/interactive/components/scoped-models-selector.d.ts +49 -0
  466. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -0
  467. package/dist/modes/interactive/components/scoped-models-selector.js +271 -0
  468. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -0
  469. package/dist/modes/interactive/components/session-selector-search.d.ts +23 -0
  470. package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -0
  471. package/dist/modes/interactive/components/session-selector-search.js +155 -0
  472. package/dist/modes/interactive/components/session-selector-search.js.map +1 -0
  473. package/dist/modes/interactive/components/session-selector.d.ts +95 -0
  474. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -0
  475. package/dist/modes/interactive/components/session-selector.js +839 -0
  476. package/dist/modes/interactive/components/session-selector.js.map +1 -0
  477. package/dist/modes/interactive/components/settings-selector.d.ts +60 -0
  478. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -0
  479. package/dist/modes/interactive/components/settings-selector.js +311 -0
  480. package/dist/modes/interactive/components/settings-selector.js.map +1 -0
  481. package/dist/modes/interactive/components/show-images-selector.d.ts +10 -0
  482. package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -0
  483. package/dist/modes/interactive/components/show-images-selector.js +34 -0
  484. package/dist/modes/interactive/components/show-images-selector.js.map +1 -0
  485. package/dist/modes/interactive/components/skill-invocation-message.d.ts +17 -0
  486. package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -0
  487. package/dist/modes/interactive/components/skill-invocation-message.js +45 -0
  488. package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -0
  489. package/dist/modes/interactive/components/subagent-message.d.ts +91 -0
  490. package/dist/modes/interactive/components/subagent-message.d.ts.map +1 -0
  491. package/dist/modes/interactive/components/subagent-message.js +306 -0
  492. package/dist/modes/interactive/components/subagent-message.js.map +1 -0
  493. package/dist/modes/interactive/components/task-plan-message.d.ts +12 -0
  494. package/dist/modes/interactive/components/task-plan-message.d.ts.map +1 -0
  495. package/dist/modes/interactive/components/task-plan-message.js +61 -0
  496. package/dist/modes/interactive/components/task-plan-message.js.map +1 -0
  497. package/dist/modes/interactive/components/theme-selector.d.ts +11 -0
  498. package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -0
  499. package/dist/modes/interactive/components/theme-selector.js +44 -0
  500. package/dist/modes/interactive/components/theme-selector.js.map +1 -0
  501. package/dist/modes/interactive/components/thinking-selector.d.ts +11 -0
  502. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -0
  503. package/dist/modes/interactive/components/thinking-selector.js +46 -0
  504. package/dist/modes/interactive/components/thinking-selector.js.map +1 -0
  505. package/dist/modes/interactive/components/tool-execution.d.ts +78 -0
  506. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -0
  507. package/dist/modes/interactive/components/tool-execution.js +880 -0
  508. package/dist/modes/interactive/components/tool-execution.js.map +1 -0
  509. package/dist/modes/interactive/components/tree-selector.d.ts +70 -0
  510. package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -0
  511. package/dist/modes/interactive/components/tree-selector.js +921 -0
  512. package/dist/modes/interactive/components/tree-selector.js.map +1 -0
  513. package/dist/modes/interactive/components/user-message-selector.d.ts +30 -0
  514. package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -0
  515. package/dist/modes/interactive/components/user-message-selector.js +110 -0
  516. package/dist/modes/interactive/components/user-message-selector.js.map +1 -0
  517. package/dist/modes/interactive/components/user-message.d.ts +9 -0
  518. package/dist/modes/interactive/components/user-message.d.ts.map +1 -0
  519. package/dist/modes/interactive/components/user-message.js +27 -0
  520. package/dist/modes/interactive/components/user-message.js.map +1 -0
  521. package/dist/modes/interactive/components/visual-truncate.d.ts +24 -0
  522. package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -0
  523. package/dist/modes/interactive/components/visual-truncate.js +33 -0
  524. package/dist/modes/interactive/components/visual-truncate.js.map +1 -0
  525. package/dist/modes/interactive/interactive-mode.d.ts +453 -0
  526. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -0
  527. package/dist/modes/interactive/interactive-mode.js +8669 -0
  528. package/dist/modes/interactive/interactive-mode.js.map +1 -0
  529. package/dist/modes/interactive/theme/dark.json +85 -0
  530. package/dist/modes/interactive/theme/light.json +84 -0
  531. package/dist/modes/interactive/theme/theme-schema.json +335 -0
  532. package/dist/modes/interactive/theme/theme.d.ts +78 -0
  533. package/dist/modes/interactive/theme/theme.d.ts.map +1 -0
  534. package/dist/modes/interactive/theme/theme.js +944 -0
  535. package/dist/modes/interactive/theme/theme.js.map +1 -0
  536. package/dist/modes/print-mode.d.ts +28 -0
  537. package/dist/modes/print-mode.d.ts.map +1 -0
  538. package/dist/modes/print-mode.js +101 -0
  539. package/dist/modes/print-mode.js.map +1 -0
  540. package/dist/modes/rpc/rpc-client.d.ts +217 -0
  541. package/dist/modes/rpc/rpc-client.d.ts.map +1 -0
  542. package/dist/modes/rpc/rpc-client.js +404 -0
  543. package/dist/modes/rpc/rpc-client.js.map +1 -0
  544. package/dist/modes/rpc/rpc-mode.d.ts +20 -0
  545. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -0
  546. package/dist/modes/rpc/rpc-mode.js +580 -0
  547. package/dist/modes/rpc/rpc-mode.js.map +1 -0
  548. package/dist/modes/rpc/rpc-types.d.ts +409 -0
  549. package/dist/modes/rpc/rpc-types.d.ts.map +1 -0
  550. package/dist/modes/rpc/rpc-types.js +8 -0
  551. package/dist/modes/rpc/rpc-types.js.map +1 -0
  552. package/dist/utils/changelog.d.ts +21 -0
  553. package/dist/utils/changelog.d.ts.map +1 -0
  554. package/dist/utils/changelog.js +87 -0
  555. package/dist/utils/changelog.js.map +1 -0
  556. package/dist/utils/clipboard-image.d.ts +11 -0
  557. package/dist/utils/clipboard-image.d.ts.map +1 -0
  558. package/dist/utils/clipboard-image.js +162 -0
  559. package/dist/utils/clipboard-image.js.map +1 -0
  560. package/dist/utils/clipboard-native.d.ts +7 -0
  561. package/dist/utils/clipboard-native.d.ts.map +1 -0
  562. package/dist/utils/clipboard-native.js +14 -0
  563. package/dist/utils/clipboard-native.js.map +1 -0
  564. package/dist/utils/clipboard.d.ts +2 -0
  565. package/dist/utils/clipboard.d.ts.map +1 -0
  566. package/dist/utils/clipboard.js +67 -0
  567. package/dist/utils/clipboard.js.map +1 -0
  568. package/dist/utils/frontmatter.d.ts +8 -0
  569. package/dist/utils/frontmatter.d.ts.map +1 -0
  570. package/dist/utils/frontmatter.js +26 -0
  571. package/dist/utils/frontmatter.js.map +1 -0
  572. package/dist/utils/git.d.ts +26 -0
  573. package/dist/utils/git.d.ts.map +1 -0
  574. package/dist/utils/git.js +163 -0
  575. package/dist/utils/git.js.map +1 -0
  576. package/dist/utils/image-convert.d.ts +9 -0
  577. package/dist/utils/image-convert.d.ts.map +1 -0
  578. package/dist/utils/image-convert.js +35 -0
  579. package/dist/utils/image-convert.js.map +1 -0
  580. package/dist/utils/image-resize.d.ts +36 -0
  581. package/dist/utils/image-resize.d.ts.map +1 -0
  582. package/dist/utils/image-resize.js +181 -0
  583. package/dist/utils/image-resize.js.map +1 -0
  584. package/dist/utils/mime.d.ts +2 -0
  585. package/dist/utils/mime.d.ts.map +1 -0
  586. package/dist/utils/mime.js +26 -0
  587. package/dist/utils/mime.js.map +1 -0
  588. package/dist/utils/photon.d.ts +21 -0
  589. package/dist/utils/photon.d.ts.map +1 -0
  590. package/dist/utils/photon.js +121 -0
  591. package/dist/utils/photon.js.map +1 -0
  592. package/dist/utils/shell.d.ts +26 -0
  593. package/dist/utils/shell.d.ts.map +1 -0
  594. package/dist/utils/shell.js +186 -0
  595. package/dist/utils/shell.js.map +1 -0
  596. package/dist/utils/sleep.d.ts +5 -0
  597. package/dist/utils/sleep.d.ts.map +1 -0
  598. package/dist/utils/sleep.js +17 -0
  599. package/dist/utils/sleep.js.map +1 -0
  600. package/dist/utils/tools-manager.d.ts +3 -0
  601. package/dist/utils/tools-manager.d.ts.map +1 -0
  602. package/dist/utils/tools-manager.js +251 -0
  603. package/dist/utils/tools-manager.js.map +1 -0
  604. package/docs/README.md +32 -0
  605. package/docs/cli-reference.md +342 -0
  606. package/docs/configuration.md +301 -0
  607. package/docs/development-and-testing.md +295 -0
  608. package/docs/extensions-packages-themes.md +415 -0
  609. package/docs/getting-started.md +246 -0
  610. package/docs/interactive-mode.md +272 -0
  611. package/docs/iosm-init-and-cycles.md +355 -0
  612. package/docs/orchestration-and-subagents.md +273 -0
  613. package/docs/rpc-json-sdk.md +353 -0
  614. package/docs/sessions-traces-export.md +260 -0
  615. package/examples/README.md +120 -0
  616. package/examples/extensions/README.md +306 -0
  617. package/examples/extensions/antigravity-image-gen.ts +415 -0
  618. package/examples/extensions/auto-commit-on-exit.ts +49 -0
  619. package/examples/extensions/bash-spawn-hook.ts +30 -0
  620. package/examples/extensions/bookmark.ts +50 -0
  621. package/examples/extensions/built-in-tool-renderer.ts +246 -0
  622. package/examples/extensions/claude-rules.ts +86 -0
  623. package/examples/extensions/commands.ts +72 -0
  624. package/examples/extensions/confirm-destructive.ts +59 -0
  625. package/examples/extensions/custom-compaction.ts +114 -0
  626. package/examples/extensions/custom-footer.ts +64 -0
  627. package/examples/extensions/custom-header.ts +73 -0
  628. package/examples/extensions/custom-provider-anthropic/index.ts +604 -0
  629. package/examples/extensions/custom-provider-anthropic/package-lock.json +24 -0
  630. package/examples/extensions/custom-provider-anthropic/package.json +19 -0
  631. package/examples/extensions/custom-provider-gitlab-duo/index.ts +349 -0
  632. package/examples/extensions/custom-provider-gitlab-duo/package.json +16 -0
  633. package/examples/extensions/custom-provider-gitlab-duo/test.ts +82 -0
  634. package/examples/extensions/custom-provider-qwen-cli/index.ts +345 -0
  635. package/examples/extensions/custom-provider-qwen-cli/package.json +16 -0
  636. package/examples/extensions/dirty-repo-guard.ts +56 -0
  637. package/examples/extensions/doom-overlay/README.md +46 -0
  638. package/examples/extensions/doom-overlay/doom/build/doom.js +21 -0
  639. package/examples/extensions/doom-overlay/doom/build/doom.wasm +0 -0
  640. package/examples/extensions/doom-overlay/doom/build.sh +152 -0
  641. package/examples/extensions/doom-overlay/doom/doomgeneric_pi.c +72 -0
  642. package/examples/extensions/doom-overlay/doom-component.ts +132 -0
  643. package/examples/extensions/doom-overlay/doom-engine.ts +173 -0
  644. package/examples/extensions/doom-overlay/doom-keys.ts +104 -0
  645. package/examples/extensions/doom-overlay/index.ts +74 -0
  646. package/examples/extensions/doom-overlay/wad-finder.ts +51 -0
  647. package/examples/extensions/dynamic-resources/SKILL.md +8 -0
  648. package/examples/extensions/dynamic-resources/dynamic.json +79 -0
  649. package/examples/extensions/dynamic-resources/dynamic.md +5 -0
  650. package/examples/extensions/dynamic-resources/index.ts +15 -0
  651. package/examples/extensions/dynamic-tools.ts +74 -0
  652. package/examples/extensions/event-bus.ts +43 -0
  653. package/examples/extensions/file-trigger.ts +41 -0
  654. package/examples/extensions/git-checkpoint.ts +53 -0
  655. package/examples/extensions/handoff.ts +150 -0
  656. package/examples/extensions/hello.ts +25 -0
  657. package/examples/extensions/inline-bash.ts +94 -0
  658. package/examples/extensions/input-transform.ts +43 -0
  659. package/examples/extensions/interactive-shell.ts +196 -0
  660. package/examples/extensions/mac-system-theme.ts +47 -0
  661. package/examples/extensions/message-renderer.ts +59 -0
  662. package/examples/extensions/minimal-mode.ts +426 -0
  663. package/examples/extensions/modal-editor.ts +85 -0
  664. package/examples/extensions/model-status.ts +31 -0
  665. package/examples/extensions/notify.ts +55 -0
  666. package/examples/extensions/overlay-qa-tests.ts +881 -0
  667. package/examples/extensions/overlay-test.ts +150 -0
  668. package/examples/extensions/permission-gate.ts +34 -0
  669. package/examples/extensions/pirate.ts +47 -0
  670. package/examples/extensions/plan-mode/README.md +65 -0
  671. package/examples/extensions/plan-mode/index.ts +340 -0
  672. package/examples/extensions/plan-mode/utils.ts +168 -0
  673. package/examples/extensions/preset.ts +398 -0
  674. package/examples/extensions/protected-paths.ts +30 -0
  675. package/examples/extensions/qna.ts +119 -0
  676. package/examples/extensions/question.ts +264 -0
  677. package/examples/extensions/questionnaire.ts +427 -0
  678. package/examples/extensions/rainbow-editor.ts +88 -0
  679. package/examples/extensions/reload-runtime.ts +37 -0
  680. package/examples/extensions/rpc-demo.ts +124 -0
  681. package/examples/extensions/sandbox/index.ts +318 -0
  682. package/examples/extensions/sandbox/package-lock.json +92 -0
  683. package/examples/extensions/sandbox/package.json +19 -0
  684. package/examples/extensions/send-user-message.ts +97 -0
  685. package/examples/extensions/session-name.ts +27 -0
  686. package/examples/extensions/shutdown-command.ts +63 -0
  687. package/examples/extensions/snake.ts +343 -0
  688. package/examples/extensions/space-invaders.ts +560 -0
  689. package/examples/extensions/ssh.ts +220 -0
  690. package/examples/extensions/status-line.ts +40 -0
  691. package/examples/extensions/subagent/README.md +172 -0
  692. package/examples/extensions/subagent/agents/planner.md +37 -0
  693. package/examples/extensions/subagent/agents/reviewer.md +35 -0
  694. package/examples/extensions/subagent/agents/scout.md +50 -0
  695. package/examples/extensions/subagent/agents/worker.md +24 -0
  696. package/examples/extensions/subagent/agents.ts +126 -0
  697. package/examples/extensions/subagent/index.ts +964 -0
  698. package/examples/extensions/subagent/prompts/implement-and-review.md +10 -0
  699. package/examples/extensions/subagent/prompts/implement.md +10 -0
  700. package/examples/extensions/subagent/prompts/scout-and-plan.md +9 -0
  701. package/examples/extensions/summarize.ts +195 -0
  702. package/examples/extensions/system-prompt-header.ts +17 -0
  703. package/examples/extensions/timed-confirm.ts +70 -0
  704. package/examples/extensions/titlebar-spinner.ts +58 -0
  705. package/examples/extensions/todo.ts +299 -0
  706. package/examples/extensions/tool-override.ts +143 -0
  707. package/examples/extensions/tools.ts +146 -0
  708. package/examples/extensions/trigger-compact.ts +40 -0
  709. package/examples/extensions/truncated-tool.ts +192 -0
  710. package/examples/extensions/widget-placement.ts +17 -0
  711. package/examples/extensions/with-deps/index.ts +36 -0
  712. package/examples/extensions/with-deps/package-lock.json +31 -0
  713. package/examples/extensions/with-deps/package.json +22 -0
  714. package/examples/rpc-extension-ui.ts +632 -0
  715. package/examples/sdk/01-minimal.ts +22 -0
  716. package/examples/sdk/02-custom-model.ts +49 -0
  717. package/examples/sdk/03-custom-prompt.ts +55 -0
  718. package/examples/sdk/04-skills.ts +46 -0
  719. package/examples/sdk/05-tools.ts +56 -0
  720. package/examples/sdk/06-extensions.ts +88 -0
  721. package/examples/sdk/07-context-files.ts +40 -0
  722. package/examples/sdk/08-prompt-templates.ts +47 -0
  723. package/examples/sdk/09-api-keys-and-oauth.ts +48 -0
  724. package/examples/sdk/10-settings.ts +51 -0
  725. package/examples/sdk/11-sessions.ts +48 -0
  726. package/examples/sdk/12-full-control.ts +82 -0
  727. package/examples/sdk/README.md +337 -0
  728. package/examples/tsconfig.json +3 -0
  729. 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