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 @@
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Main entry point for the coding agent CLI.\n *\n * This file handles CLI argument parsing and translates them into\n * createAgentSession() options. The SDK does the heavy lifting.\n */\n\nimport { type AssistantMessage, type ImageContent, supportsXhigh } from \"@mariozechner/pi-ai\";\nimport type { AgentMessage } from \"@mariozechner/pi-agent-core\";\nimport chalk from \"chalk\";\nimport { writeFileSync } from \"node:fs\";\nimport { resolve } from \"node:path\";\nimport { createInterface } from \"readline\";\nimport { type Args, parseArgs, printHelp } from \"./cli/args.js\";\nimport { selectConfig } from \"./cli/config-selector.js\";\nimport { processFileArguments } from \"./cli/file-processor.js\";\nimport { listModels } from \"./cli/list-models.js\";\nimport { selectSession } from \"./cli/session-picker.js\";\nimport {\n\tAPP_NAME,\n\tCONFIG_DIR_NAME,\n\tENV_OFFLINE,\n\tENV_SESSION_TRACE,\n\tENV_SESSION_TRACE_DIR,\n\tENV_SKIP_VERSION_CHECK,\n\tgetAgentDir,\n\tgetModelsPath,\n\tgetSessionTracePath,\n\tisSessionTraceEnabled,\n\tisTruthyEnvFlag,\n\tVERSION,\n} from \"./config.js\";\nimport { AuthStorage } from \"./core/auth-storage.js\";\nimport { exportFromFile } from \"./core/export-html/index.js\";\nimport type { LoadExtensionsResult } from \"./core/extensions/index.js\";\nimport { KeybindingsManager } from \"./core/keybindings.js\";\nimport { ModelRegistry } from \"./core/model-registry.js\";\nimport { resolveCliModel, resolveModelScope, type ScopedModel } from \"./core/model-resolver.js\";\nimport {\n\tgetMcpCommandHelp,\n\tgetMergedServerByName,\n\tloadMergedMcpConfig,\n\tMcpRuntime,\n\tparseMcpAddCommand,\n\tparseMcpTargetCommand,\n} from \"./core/mcp/index.js\";\nimport { DefaultPackageManager } from \"./core/package-manager.js\";\nimport { DefaultResourceLoader } from \"./core/resource-loader.js\";\nimport { type CreateAgentSessionOptions, createAgentSession } from \"./core/sdk.js\";\nimport { getProfileNames, isValidProfileName } from \"./core/agent-profiles.js\";\nimport { SessionManager } from \"./core/session-manager.js\";\nimport { SettingsManager } from \"./core/settings-manager.js\";\nimport { printTimings, time } from \"./core/timings.js\";\nimport { allTools } from \"./core/tools/index.js\";\nimport { runMigrations, showDeprecationWarnings } from \"./migrations.js\";\nimport { InteractiveMode, runPrintMode, runRpcMode } from \"./modes/index.js\";\nimport { initTheme, stopThemeWatcher } from \"./modes/interactive/theme/theme.js\";\nimport {\n\tbuildIosmAgentVerificationPrompt,\n\tbuildIosmGuideAuthoringPrompt,\n\tbuildIosmPriorityChecklist,\n\tcreateMetricSnapshot,\n\textractAssistantText,\n\tformatMetricSnapshot,\n\tgetIosmGuidePath,\n\tinitIosmWorkspace,\n\tinspectIosmCycle,\n\tlistIosmCycles,\n\tplanIosmCycle,\n\treadIosmCycleReport,\n\trecordIosmCycleHistory,\n\tnormalizeIosmGuideMarkdown,\n\twriteIosmGuideDocument,\n\ttype IosmInitResult,\n\ttype IosmMetricSnapshot,\n} from \"./iosm/index.js\";\n\n/**\n * Read all content from piped stdin.\n * Returns undefined if stdin is a TTY (interactive terminal).\n */\nasync function readPipedStdin(): Promise<string | undefined> {\n\t// If stdin is a TTY, we're running interactively - don't read stdin\n\tif (process.stdin.isTTY) {\n\t\treturn undefined;\n\t}\n\n\treturn new Promise((resolve) => {\n\t\tlet data = \"\";\n\t\tprocess.stdin.setEncoding(\"utf8\");\n\t\tprocess.stdin.on(\"data\", (chunk) => {\n\t\t\tdata += chunk;\n\t\t});\n\t\tprocess.stdin.on(\"end\", () => {\n\t\t\tresolve(data.trim() || undefined);\n\t\t});\n\t\tprocess.stdin.resume();\n\t});\n}\n\nfunction reportSettingsErrors(settingsManager: SettingsManager, context: string): void {\n\tconst errors = settingsManager.drainErrors();\n\tfor (const { scope, error } of errors) {\n\t\tconsole.error(chalk.yellow(`Warning (${context}, ${scope} settings): ${error.message}`));\n\t\tif (error.stack) {\n\t\t\tconsole.error(chalk.dim(error.stack));\n\t\t}\n\t}\n}\n\ntype PackageCommand = \"install\" | \"remove\" | \"update\" | \"list\";\n\ninterface PackageCommandOptions {\n\tcommand: PackageCommand;\n\tsource?: string;\n\tlocal: boolean;\n\thelp: boolean;\n\tinvalidOption?: string;\n}\n\ninterface IosmInitCommandOptions {\n\ttargetDir?: string;\n\tforce: boolean;\n\tagentVerify: boolean;\n\thelp: boolean;\n\tinvalidOption?: string;\n\textraArg?: string;\n}\n\nfunction applySessionTraceCliOverrides(args: string[]): void {\n\tlet sessionTraceEnabled = false;\n\tlet sessionTraceDir: string | undefined;\n\n\tfor (let index = 0; index < args.length; index++) {\n\t\tconst arg = args[index];\n\t\tif (arg === \"--session-trace\") {\n\t\t\tsessionTraceEnabled = true;\n\t\t\tcontinue;\n\t\t}\n\t\tif (arg === \"--session-trace-dir\" && index + 1 < args.length) {\n\t\t\tsessionTraceDir = resolve(args[index + 1]);\n\t\t\tindex += 1;\n\t\t}\n\t}\n\n\tif (sessionTraceEnabled) {\n\t\tprocess.env[ENV_SESSION_TRACE] = \"1\";\n\t\tprocess.env.PI_SESSION_TRACE = \"1\";\n\t}\n\n\tif (sessionTraceDir) {\n\t\tprocess.env[ENV_SESSION_TRACE_DIR] = sessionTraceDir;\n\t\tprocess.env.PI_SESSION_TRACE_DIR = sessionTraceDir;\n\t}\n}\n\ntype IosmCycleCommand =\n\t| { kind: \"help\" }\n\t| { kind: \"list\" }\n\t| { kind: \"plan\"; goals: string[]; force: boolean; cycleId?: string }\n\t| { kind: \"report\"; cycleId?: string }\n\t| { kind: \"status\"; cycleId?: string };\n\nfunction getPackageCommandUsage(command: PackageCommand): string {\n\tswitch (command) {\n\t\tcase \"install\":\n\t\t\treturn `${APP_NAME} install <source> [-l]`;\n\t\tcase \"remove\":\n\t\t\treturn `${APP_NAME} remove <source> [-l]`;\n\t\tcase \"update\":\n\t\t\treturn `${APP_NAME} update [source]`;\n\t\tcase \"list\":\n\t\t\treturn `${APP_NAME} list`;\n\t}\n}\n\nfunction printPackageCommandHelp(command: PackageCommand): void {\n\tswitch (command) {\n\t\tcase \"install\":\n\t\t\tconsole.log(`${chalk.bold(\"Usage:\")}\n ${getPackageCommandUsage(\"install\")}\n\nInstall a package and add it to settings.\n\nOptions:\n -l, --local Install project-locally (${CONFIG_DIR_NAME}/settings.json)\n\nExamples:\n ${APP_NAME} install npm:@foo/bar\n ${APP_NAME} install git:github.com/user/repo\n ${APP_NAME} install git:git@github.com:user/repo\n ${APP_NAME} install https://github.com/user/repo\n ${APP_NAME} install ssh://git@github.com/user/repo\n ${APP_NAME} install ./local/path\n`);\n\t\t\treturn;\n\n\t\tcase \"remove\":\n\t\t\tconsole.log(`${chalk.bold(\"Usage:\")}\n ${getPackageCommandUsage(\"remove\")}\n\nRemove a package and its source from settings.\n\nOptions:\n -l, --local Remove from project settings (${CONFIG_DIR_NAME}/settings.json)\n\nExample:\n ${APP_NAME} remove npm:@foo/bar\n`);\n\t\t\treturn;\n\n\t\tcase \"update\":\n\t\t\tconsole.log(`${chalk.bold(\"Usage:\")}\n ${getPackageCommandUsage(\"update\")}\n\nUpdate installed packages.\nIf <source> is provided, only that package is updated.\n`);\n\t\t\treturn;\n\n\t\tcase \"list\":\n\t\t\tconsole.log(`${chalk.bold(\"Usage:\")}\n ${getPackageCommandUsage(\"list\")}\n\nList installed packages from user and project settings.\n`);\n\t\t\treturn;\n\t}\n}\n\nfunction parsePackageCommand(args: string[]): PackageCommandOptions | undefined {\n\tconst [command, ...rest] = args;\n\tif (command !== \"install\" && command !== \"remove\" && command !== \"update\" && command !== \"list\") {\n\t\treturn undefined;\n\t}\n\n\tlet local = false;\n\tlet help = false;\n\tlet invalidOption: string | undefined;\n\tlet source: string | undefined;\n\n\tfor (const arg of rest) {\n\t\tif (arg === \"-h\" || arg === \"--help\") {\n\t\t\thelp = true;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (arg === \"-l\" || arg === \"--local\") {\n\t\t\tif (command === \"install\" || command === \"remove\") {\n\t\t\t\tlocal = true;\n\t\t\t} else {\n\t\t\t\tinvalidOption = invalidOption ?? arg;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (arg.startsWith(\"-\")) {\n\t\t\tinvalidOption = invalidOption ?? arg;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!source) {\n\t\t\tsource = arg;\n\t\t}\n\t}\n\n\treturn { command, source, local, help, invalidOption };\n}\n\nasync function handlePackageCommand(args: string[]): Promise<boolean> {\n\tconst options = parsePackageCommand(args);\n\tif (!options) {\n\t\treturn false;\n\t}\n\n\tif (options.help) {\n\t\tprintPackageCommandHelp(options.command);\n\t\treturn true;\n\t}\n\n\tif (options.invalidOption) {\n\t\tconsole.error(chalk.red(`Unknown option ${options.invalidOption} for \"${options.command}\".`));\n\t\tconsole.error(chalk.dim(`Use \"${APP_NAME} --help\" or \"${getPackageCommandUsage(options.command)}\".`));\n\t\tprocess.exitCode = 1;\n\t\treturn true;\n\t}\n\n\tconst source = options.source;\n\tif ((options.command === \"install\" || options.command === \"remove\") && !source) {\n\t\tconsole.error(chalk.red(`Missing ${options.command} source.`));\n\t\tconsole.error(chalk.dim(`Usage: ${getPackageCommandUsage(options.command)}`));\n\t\tprocess.exitCode = 1;\n\t\treturn true;\n\t}\n\n\tconst cwd = process.cwd();\n\tconst agentDir = getAgentDir();\n\tconst settingsManager = SettingsManager.create(cwd, agentDir);\n\treportSettingsErrors(settingsManager, \"package command\");\n\tconst packageManager = new DefaultPackageManager({ cwd, agentDir, settingsManager });\n\n\tpackageManager.setProgressCallback((event) => {\n\t\tif (event.type === \"start\") {\n\t\t\tprocess.stdout.write(chalk.dim(`${event.message}\\n`));\n\t\t}\n\t});\n\n\ttry {\n\t\tswitch (options.command) {\n\t\t\tcase \"install\":\n\t\t\t\tawait packageManager.install(source!, { local: options.local });\n\t\t\t\tpackageManager.addSourceToSettings(source!, { local: options.local });\n\t\t\t\tconsole.log(chalk.green(`Installed ${source}`));\n\t\t\t\treturn true;\n\n\t\t\tcase \"remove\": {\n\t\t\t\tawait packageManager.remove(source!, { local: options.local });\n\t\t\t\tconst removed = packageManager.removeSourceFromSettings(source!, { local: options.local });\n\t\t\t\tif (!removed) {\n\t\t\t\t\tconsole.error(chalk.red(`No matching package found for ${source}`));\n\t\t\t\t\tprocess.exitCode = 1;\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tconsole.log(chalk.green(`Removed ${source}`));\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tcase \"list\": {\n\t\t\t\tconst globalSettings = settingsManager.getGlobalSettings();\n\t\t\t\tconst projectSettings = settingsManager.getProjectSettings();\n\t\t\t\tconst globalPackages = globalSettings.packages ?? [];\n\t\t\t\tconst projectPackages = projectSettings.packages ?? [];\n\n\t\t\t\tif (globalPackages.length === 0 && projectPackages.length === 0) {\n\t\t\t\t\tconsole.log(chalk.dim(\"No packages installed.\"));\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tconst formatPackage = (pkg: (typeof globalPackages)[number], scope: \"user\" | \"project\") => {\n\t\t\t\t\tconst source = typeof pkg === \"string\" ? pkg : pkg.source;\n\t\t\t\t\tconst filtered = typeof pkg === \"object\";\n\t\t\t\t\tconst display = filtered ? `${source} (filtered)` : source;\n\t\t\t\t\tconsole.log(` ${display}`);\n\t\t\t\t\tconst path = packageManager.getInstalledPath(source, scope);\n\t\t\t\t\tif (path) {\n\t\t\t\t\t\tconsole.log(chalk.dim(` ${path}`));\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tif (globalPackages.length > 0) {\n\t\t\t\t\tconsole.log(chalk.bold(\"User packages:\"));\n\t\t\t\t\tfor (const pkg of globalPackages) {\n\t\t\t\t\t\tformatPackage(pkg, \"user\");\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (projectPackages.length > 0) {\n\t\t\t\t\tif (globalPackages.length > 0) console.log();\n\t\t\t\t\tconsole.log(chalk.bold(\"Project packages:\"));\n\t\t\t\t\tfor (const pkg of projectPackages) {\n\t\t\t\t\t\tformatPackage(pkg, \"project\");\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tcase \"update\":\n\t\t\t\tawait packageManager.update(source);\n\t\t\t\tif (source) {\n\t\t\t\t\tconsole.log(chalk.green(`Updated ${source}`));\n\t\t\t\t} else {\n\t\t\t\t\tconsole.log(chalk.green(\"Updated packages\"));\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t}\n\t} catch (error: unknown) {\n\t\tconst message = error instanceof Error ? error.message : \"Unknown package command error\";\n\t\tconsole.error(chalk.red(`Error: ${message}`));\n\t\tprocess.exitCode = 1;\n\t\treturn true;\n\t}\n}\n\ninterface IosmInitAgentVerificationResult {\n\tcompleted: boolean;\n\tskippedReason?: string;\n\terror?: string;\n\tcurrent?: IosmMetricSnapshot;\n\thistoryPath?: string;\n\ttracePath?: string;\n\tguidePath?: string;\n\ttoolCalls?: number;\n}\n\nfunction getLastAssistantMessage(sessionMessages: readonly AgentMessage[]): AssistantMessage | undefined {\n\tfor (let index = sessionMessages.length - 1; index >= 0; index--) {\n\t\tconst message = sessionMessages[index];\n\t\tif (message.role === \"assistant\") {\n\t\t\treturn message as AssistantMessage;\n\t\t}\n\t}\n\treturn undefined;\n}\n\nasync function runIosmInitAgentVerification(\n\ttargetDir: string,\n\tresult: IosmInitResult,\n): Promise<IosmInitAgentVerificationResult> {\n\tif (!result.cycle) {\n\t\treturn {\n\t\t\tcompleted: false,\n\t\t\tskippedReason: \"No cycle scaffold was available for verification.\",\n\t\t};\n\t}\n\n\tconst cycleId = result.cycle.cycleId;\n\t// Always enable full trace for this one-shot verifier session.\n\tprocess.env[ENV_SESSION_TRACE] = \"1\";\n\tprocess.env.PI_SESSION_TRACE = \"1\";\n\n\tconst agentDir = getAgentDir();\n\tconst settingsManager = SettingsManager.create(targetDir, agentDir);\n\treportSettingsErrors(settingsManager, \"iosm init verify\");\n\tconst authStorage = AuthStorage.create();\n\tconst modelRegistry = new ModelRegistry(authStorage, getModelsPath());\n\tconst resourceLoader = new DefaultResourceLoader({\n\t\tcwd: targetDir,\n\t\tagentDir,\n\t\tsettingsManager,\n\t\tcontextProfile: \"iosm\",\n\t\tnoExtensions: true,\n\t});\n\tawait resourceLoader.reload();\n\n\tconst { session, modelFallbackMessage } = await createAgentSession({\n\t\tcwd: targetDir,\n\t\tsessionManager: SessionManager.inMemory(),\n\t\tsettingsManager,\n\t\tauthStorage,\n\t\tmodelRegistry,\n\t\tresourceLoader,\n\t});\n\tlet toolExecutions = 0;\n\tconst unsubscribe = session.subscribe((event) => {\n\t\tif (event.type !== \"tool_execution_start\") {\n\t\t\treturn;\n\t\t}\n\t\ttoolExecutions += 1;\n\t\tif (event.toolName === \"bash\") {\n\t\t\tconst commandRaw =\n\t\t\t\tevent.args && typeof event.args === \"object\" && \"command\" in event.args\n\t\t\t\t\t? String((event.args as { command?: unknown }).command ?? \"\")\n\t\t\t\t\t: \"\";\n\t\t\tconst preview = commandRaw.replace(/\\s+/g, \" \").trim().slice(0, 68);\n\t\t\tconsole.log(\n\t\t\t\tchalk.dim(\n\t\t\t\t\t`verify> bash #${toolExecutions}${preview ? ` ${preview}${commandRaw.length > 68 ? \"...\" : \"\"}` : \"\"}`,\n\t\t\t\t),\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\t\tconsole.log(chalk.dim(`verify> ${event.toolName} #${toolExecutions}`));\n\t});\n\n\ttry {\n\t\tif (!session.model) {\n\t\t\treturn {\n\t\t\t\tcompleted: false,\n\t\t\t\tskippedReason:\n\t\t\t\t\tmodelFallbackMessage ??\n\t\t\t\t\t\"No model available for agent verification. Configure /login or an API key, then re-run init.\",\n\t\t\t};\n\t\t}\n\n\t\tconst verificationPrompt = buildIosmAgentVerificationPrompt(result);\n\t\tconst timeoutMs = 180_000;\n\t\tconst startedAt = Date.now();\n\t\tconst heartbeatMs = 10_000;\n\t\tlet timeoutHandle: ReturnType<typeof setTimeout> | undefined;\n\t\tlet heartbeatHandle: ReturnType<typeof setInterval> | undefined;\n\t\ttry {\n\t\t\tconsole.log(chalk.dim(\"verify> waiting for model response...\"));\n\t\t\theartbeatHandle = setInterval(() => {\n\t\t\t\tconst elapsedSec = Math.round((Date.now() - startedAt) / 1000);\n\t\t\t\tif (toolExecutions === 0) {\n\t\t\t\t\tconsole.log(chalk.dim(`verify> waiting for model response... ${elapsedSec}s`));\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconsole.log(chalk.dim(`verify> running... ${elapsedSec}s, tool calls=${toolExecutions}`));\n\t\t\t}, heartbeatMs);\n\t\t\tawait Promise.race([\n\t\t\t\tsession.prompt(verificationPrompt, {\n\t\t\t\t\texpandPromptTemplates: false,\n\t\t\t\t\tskipIosmAutopilot: true,\n\t\t\t\t\tsource: \"interactive\",\n\t\t\t\t}),\n\t\t\t\tnew Promise<never>((_resolve, reject) => {\n\t\t\t\t\ttimeoutHandle = setTimeout(() => {\n\t\t\t\t\t\treject(new Error(`Verifier timeout after ${Math.round(timeoutMs / 1000)}s.`));\n\t\t\t\t\t}, timeoutMs);\n\t\t\t\t}),\n\t\t\t]);\n\t\t} finally {\n\t\t\tif (timeoutHandle) {\n\t\t\t\tclearTimeout(timeoutHandle);\n\t\t\t}\n\t\t\tif (heartbeatHandle) {\n\t\t\t\tclearInterval(heartbeatHandle);\n\t\t\t}\n\t\t}\n\n\t\tconst lastAssistant = getLastAssistantMessage(session.state.messages);\n\t\tif (\n\t\t\tlastAssistant &&\n\t\t\t(lastAssistant.stopReason === \"error\" || lastAssistant.stopReason === \"aborted\")\n\t\t) {\n\t\t\treturn {\n\t\t\t\tcompleted: false,\n\t\t\t\terror: lastAssistant.errorMessage ?? `Verifier finished with ${lastAssistant.stopReason}.`,\n\t\t\t\ttracePath:\n\t\t\t\t\tsession.sessionTracePath ??\n\t\t\t\t\t(isSessionTraceEnabled() ? getSessionTracePath(session.sessionManager.getSessionId()) : undefined),\n\t\t\t};\n\t\t}\n\n\t\tlet authoredGuide: string | undefined;\n\t\ttry {\n\t\t\tconsole.log(chalk.dim(\"verify> authoring IOSM.md from repository evidence...\"));\n\t\t\tawait session.prompt(buildIosmGuideAuthoringPrompt(result), {\n\t\t\t\texpandPromptTemplates: false,\n\t\t\t\tskipIosmAutopilot: true,\n\t\t\t\tsource: \"interactive\",\n\t\t\t});\n\t\t\tconst guideAssistant = getLastAssistantMessage(session.state.messages);\n\t\t\tconst guideText = extractAssistantText(guideAssistant);\n\t\t\tconst normalizedGuide = normalizeIosmGuideMarkdown(guideText);\n\t\t\tif (normalizedGuide.trim().length > 0) {\n\t\t\t\tauthoredGuide = normalizedGuide;\n\t\t\t}\n\t\t} catch {\n\t\t\tconsole.log(chalk.dim(\"verify> IOSM.md authoring failed; using structured fallback\"));\n\t\t}\n\n\t\tlet current: IosmMetricSnapshot | undefined;\n\t\tlet guidePath: string | undefined;\n\t\ttry {\n\t\t\tconst report = readIosmCycleReport(targetDir, cycleId);\n\t\t\tcurrent = createMetricSnapshot(report);\n\t\t\tif (authoredGuide) {\n\t\t\t\tguidePath = getIosmGuidePath(targetDir);\n\t\t\t\twriteFileSync(guidePath, authoredGuide, \"utf8\");\n\t\t\t} else {\n\t\t\t\tguidePath = writeIosmGuideDocument(\n\t\t\t\t\t{\n\t\t\t\t\t\trootDir: targetDir,\n\t\t\t\t\t\tcycleId,\n\t\t\t\t\t\tassessmentSource: \"verified\",\n\t\t\t\t\t\tmetrics: report.metrics,\n\t\t\t\t\t\tiosmIndex: report.iosm_index,\n\t\t\t\t\t\tdecisionConfidence: report.decision_confidence,\n\t\t\t\t\t\tgoals: report.goals,\n\t\t\t\t\t\tfilesAnalyzed: result.analysis.files_analyzed,\n\t\t\t\t\t\tsourceFileCount: result.analysis.source_file_count,\n\t\t\t\t\t\ttestFileCount: result.analysis.test_file_count,\n\t\t\t\t\t\tdocFileCount: result.analysis.doc_file_count,\n\t\t\t\t\t},\n\t\t\t\t\ttrue,\n\t\t\t\t).path;\n\t\t\t}\n\t\t} catch {\n\t\t\tcurrent = undefined;\n\t\t\tguidePath = undefined;\n\t\t}\n\n\t\tlet historyPath: string | undefined;\n\t\ttry {\n\t\t\tconst history = recordIosmCycleHistory(targetDir, cycleId);\n\t\t\thistoryPath = history.historyPath;\n\t\t} catch {\n\t\t\thistoryPath = undefined;\n\t\t}\n\n\t\t\treturn {\n\t\t\t\tcompleted: true,\n\t\t\t\tcurrent,\n\t\t\t\thistoryPath,\n\t\t\t\tguidePath,\n\t\t\t\ttoolCalls: toolExecutions,\n\t\t\t\ttracePath:\n\t\t\t\t\tsession.sessionTracePath ??\n\t\t\t\t\t(isSessionTraceEnabled() ? getSessionTracePath(session.sessionManager.getSessionId()) : undefined),\n\t\t\t};\n\t} catch (error: unknown) {\n\t\treturn {\n\t\t\tcompleted: false,\n\t\t\terror: error instanceof Error ? error.message : String(error),\n\t\t};\n\t} finally {\n\t\tunsubscribe();\n\t\tsession.dispose();\n\t}\n}\n\nfunction printIosmInitHelp(): void {\n\tconsole.log(`${chalk.bold(\"Usage:\")}\n ${APP_NAME} init [path] [--force] [--no-agent-verify]\n\nInitialize IOSM workspace, analyze the project, run verification, and maintain IOSM.md playbook/checklist.\n\nOptions:\n -f, --force Overwrite scaffold files if they already exist\n --agent-verify Force post-init agent verification (default)\n --no-agent-verify Skip post-init agent verification and keep static baseline only\n\nExamples:\n ${APP_NAME} init\n ${APP_NAME} init .\n ${APP_NAME} init ../service-a --force\n ${APP_NAME} init --no-agent-verify\n`);\n}\n\nfunction parseIosmInitCommand(args: string[]): IosmInitCommandOptions | undefined {\n\tconst [command, ...rest] = args;\n\tif (command !== \"init\") {\n\t\treturn undefined;\n\t}\n\n\tlet targetDir: string | undefined;\n\tlet force = false;\n\tlet agentVerify = true;\n\tlet help = false;\n\tlet invalidOption: string | undefined;\n\tlet extraArg: string | undefined;\n\n\tfor (const arg of rest) {\n\t\tif (arg === \"-h\" || arg === \"--help\") {\n\t\t\thelp = true;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (arg === \"-f\" || arg === \"--force\") {\n\t\t\tforce = true;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (arg === \"--agent-verify\") {\n\t\t\tagentVerify = true;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (arg === \"--no-agent-verify\" || arg === \"--static-only\") {\n\t\t\tagentVerify = false;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (arg.startsWith(\"-\")) {\n\t\t\tinvalidOption = invalidOption ?? arg;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!targetDir) {\n\t\t\ttargetDir = arg;\n\t\t\tcontinue;\n\t\t}\n\n\t\textraArg = extraArg ?? arg;\n\t}\n\n\treturn { targetDir, force, agentVerify, help, invalidOption, extraArg };\n}\n\nasync function handleIosmInitCommand(args: string[]): Promise<boolean> {\n\tconst options = parseIosmInitCommand(args);\n\tif (!options) {\n\t\treturn false;\n\t}\n\n\tif (options.help) {\n\t\tprintIosmInitHelp();\n\t\treturn true;\n\t}\n\n\tif (options.invalidOption) {\n\t\tconsole.error(chalk.red(`Unknown option ${options.invalidOption} for \"init\".`));\n\t\tconsole.error(chalk.dim(`Use \"${APP_NAME} init --help\".`));\n\t\tprocess.exitCode = 1;\n\t\treturn true;\n\t}\n\n\tif (options.extraArg) {\n\t\tconsole.error(chalk.red(`Unexpected argument \"${options.extraArg}\" for \"init\".`));\n\t\tconsole.error(chalk.dim(`Use \"${APP_NAME} init --help\".`));\n\t\tprocess.exitCode = 1;\n\t\treturn true;\n\t}\n\n\tconst targetDir = resolve(options.targetDir ?? process.cwd());\n\tconst result = await initIosmWorkspace({ cwd: targetDir, force: options.force });\n\n\tconsole.log(chalk.green(`Initialized IOSM workspace at ${result.rootDir}`));\n\tconsole.log(\n\t\tchalk.dim(\n\t\t\t`Analyzed ${result.analysis.files_analyzed} files (${result.analysis.source_file_count} source, ${result.analysis.test_file_count} tests, ${result.analysis.doc_file_count} docs)`,\n\t\t),\n\t);\n\tif (options.agentVerify) {\n\t\tconsole.log(chalk.dim(\"Initial heuristic baseline captured (internal).\"));\n\t} else {\n\t\tconsole.log(\n\t\t\tchalk.dim(\n\t\t\t\t`Heuristic metrics (verification skipped): ${Object.entries(result.analysis.metrics)\n\t\t\t\t\t.map(([metric, value]) => `${metric}=${value === null ? \"n/a\" : value.toFixed(3)}`)\n\t\t\t\t\t.join(\", \")}`,\n\t\t\t),\n\t\t);\n\t}\n\tconsole.log(chalk.dim(`Goals: ${result.analysis.goals.join(\" | \")}`));\n\n\tif (result.cycle) {\n\t\tconst cycleLine = result.cycle.reusedExistingCycle\n\t\t\t? `Using existing cycle ${result.cycle.cycleId}`\n\t\t\t: `Seeded cycle ${result.cycle.cycleId}`;\n\t\tconsole.log(chalk.dim(cycleLine));\n\t}\n\n\tlet verification: IosmInitAgentVerificationResult | undefined;\n\tif (options.agentVerify) {\n\t\tconsole.log(chalk.dim(\"\\nRunning post-init agent verification pass...\"));\n\t\tverification = await runIosmInitAgentVerification(targetDir, result);\n\n\t\tif (verification.completed) {\n\t\t\tconsole.log(chalk.green(\"Agent verification completed.\"));\n\t\t\tif (verification.current) {\n\t\t\t\tconsole.log(chalk.dim(`Current IOSM snapshot: ${formatMetricSnapshot(verification.current)}`));\n\t\t\t}\n\t\t\tif (verification.historyPath) {\n\t\t\t\tconsole.log(chalk.dim(`Metrics history updated: ${verification.historyPath}`));\n\t\t\t}\n\t\t\tif (verification.guidePath) {\n\t\t\t\tconsole.log(chalk.dim(`Playbook updated: ${verification.guidePath}`));\n\t\t\t}\n\t\t\tif (verification.toolCalls !== undefined) {\n\t\t\t\tconsole.log(chalk.dim(`Verifier activity: ${verification.toolCalls} tool calls`));\n\t\t\t}\n\t\t\tif (verification.tracePath) {\n\t\t\t\tconsole.log(chalk.dim(`Session trace: ${verification.tracePath}`));\n\t\t\t}\n\t\t} else if (verification.skippedReason) {\n\t\t\tconsole.log(chalk.yellow(`Agent verification skipped: ${verification.skippedReason}`));\n\t\t} else if (verification.error) {\n\t\t\tconsole.log(chalk.red(`Agent verification failed: ${verification.error}`));\n\t\t}\n\t}\n\n\tlet currentSnapshot: IosmMetricSnapshot | undefined = verification?.current;\n\tif (!currentSnapshot && result.cycle) {\n\t\ttry {\n\t\t\tcurrentSnapshot = createMetricSnapshot(readIosmCycleReport(targetDir, result.cycle.cycleId));\n\t\t} catch {\n\t\t\tcurrentSnapshot = undefined;\n\t\t}\n\t}\n\tcurrentSnapshot ??= {\n\t\tmetrics: result.analysis.metrics,\n\t\tiosm_index: null,\n\t\tdecision_confidence: null,\n\t};\n\tconst checklist = buildIosmPriorityChecklist(currentSnapshot.metrics, 3);\n\tconst guidePath = verification?.guidePath ?? getIosmGuidePath(result.rootDir);\n\tconsole.log(chalk.bold(\"\\nInit report:\"));\n\tconsole.log(` project: ${result.rootDir}`);\n\tconsole.log(\n\t\t` metrics: ${formatMetricSnapshot(currentSnapshot)}`,\n\t);\n\tconsole.log(\" top priorities:\");\n\tfor (const [index, item] of checklist.entries()) {\n\t\tconsole.log(` ${index + 1}. ${item.title} (${item.value === null ? \"n/a\" : item.value.toFixed(3)}) -> ${item.action}`);\n\t}\n\tconsole.log(\" key files:\");\n\tconsole.log(` playbook: ${guidePath}`);\n\tconsole.log(` iosm config: ${result.rootDir}/iosm.yaml`);\n\tif (result.cycle) {\n\t\tconsole.log(` cycle report: ${result.cycle.reportPath}`);\n\t\tconsole.log(` baseline report: ${result.cycle.baselineReportPath}`);\n\t}\n\n\tif (result.created.length > 0) {\n\t\tconsole.log(chalk.bold(\"\\nCreated:\"));\n\t\tfor (const filePath of result.created) {\n\t\t\tconsole.log(` ${filePath}`);\n\t\t}\n\t}\n\tif (result.overwritten.length > 0) {\n\t\tconsole.log(chalk.bold(\"\\nOverwritten:\"));\n\t\tfor (const filePath of result.overwritten) {\n\t\t\tconsole.log(` ${filePath}`);\n\t\t}\n\t}\n\tif (result.skipped.length > 0) {\n\t\tconsole.log(chalk.bold(\"\\nSkipped:\"));\n\t\tfor (const filePath of result.skipped) {\n\t\t\tconsole.log(` ${filePath}`);\n\t\t}\n\t}\n\n\treturn true;\n}\n\nfunction printIosmCycleHelp(): void {\n\tconsole.log(`${chalk.bold(\"Usage:\")}\n ${APP_NAME} cycle list\n ${APP_NAME} cycle plan [--id <cycle-id>] [--force] <goal...>\n ${APP_NAME} cycle report [cycle-id]\n ${APP_NAME} cycle status [cycle-id]\n\nSubcommands:\n list List known IOSM cycles\n plan Create a new cycle scaffold with baseline, hypotheses, and report templates\n report Print a synchronized cycle report as JSON (latest by default)\n status Show a human-readable completeness and gate summary for a cycle\n\nExamples:\n ${APP_NAME} cycle list\n ${APP_NAME} cycle plan \"reduce checkout latency\" \"remove redundant admin API\"\n ${APP_NAME} cycle plan --id iosm-2026-03-06-001 --force \"stabilize worker retries\"\n ${APP_NAME} cycle report\n ${APP_NAME} cycle report iosm-2026-03-06-001\n ${APP_NAME} cycle status\n`);\n}\n\nfunction parseIosmCycleCommand(args: string[]): IosmCycleCommand | undefined {\n\tconst [command, subcommand, ...rest] = args;\n\tif (command !== \"cycle\") {\n\t\treturn undefined;\n\t}\n\n\tif (!subcommand || subcommand === \"-h\" || subcommand === \"--help\") {\n\t\treturn { kind: \"help\" };\n\t}\n\n\tif (subcommand === \"list\") {\n\t\tif (rest.some((arg) => arg === \"-h\" || arg === \"--help\")) {\n\t\t\treturn { kind: \"help\" };\n\t\t}\n\t\tif (rest.length > 0) {\n\t\t\tthrow new Error(`Unexpected arguments for \"cycle list\": ${rest.join(\" \")}`);\n\t\t}\n\t\treturn { kind: \"list\" };\n\t}\n\n\tif (subcommand === \"plan\") {\n\t\tlet force = false;\n\t\tlet cycleId: string | undefined;\n\t\tconst goals: string[] = [];\n\n\t\tfor (let index = 0; index < rest.length; index++) {\n\t\t\tconst arg = rest[index];\n\t\t\tif (arg === \"-h\" || arg === \"--help\") {\n\t\t\t\treturn { kind: \"help\" };\n\t\t\t}\n\t\t\tif (arg === \"-f\" || arg === \"--force\") {\n\t\t\t\tforce = true;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (arg === \"--id\") {\n\t\t\t\tif (index + 1 >= rest.length) {\n\t\t\t\t\tthrow new Error('Missing value for \"--id\".');\n\t\t\t\t}\n\t\t\t\tcycleId = rest[index + 1];\n\t\t\t\tindex += 1;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (arg.startsWith(\"-\")) {\n\t\t\t\tthrow new Error(`Unknown option for \"cycle plan\": ${arg}`);\n\t\t\t}\n\t\t\tgoals.push(arg);\n\t\t}\n\n\t\treturn { kind: \"plan\", goals, force, cycleId };\n\t}\n\n\tif (subcommand === \"report\") {\n\t\tlet cycleId: string | undefined;\n\t\tfor (let index = 0; index < rest.length; index++) {\n\t\t\tconst arg = rest[index];\n\t\t\tif (arg === \"-h\" || arg === \"--help\") {\n\t\t\t\treturn { kind: \"help\" };\n\t\t\t}\n\t\t\tif (arg.startsWith(\"-\")) {\n\t\t\t\tthrow new Error(`Unknown option for \"cycle report\": ${arg}`);\n\t\t\t}\n\t\t\tif (!cycleId) {\n\t\t\t\tcycleId = arg;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tthrow new Error(`Unexpected argument for \"cycle report\": ${arg}`);\n\t\t}\n\n\t\treturn { kind: \"report\", cycleId };\n\t}\n\n\tif (subcommand === \"status\") {\n\t\tlet cycleId: string | undefined;\n\t\tfor (let index = 0; index < rest.length; index++) {\n\t\t\tconst arg = rest[index];\n\t\t\tif (arg === \"-h\" || arg === \"--help\") {\n\t\t\t\treturn { kind: \"help\" };\n\t\t\t}\n\t\t\tif (arg.startsWith(\"-\")) {\n\t\t\t\tthrow new Error(`Unknown option for \"cycle status\": ${arg}`);\n\t\t\t}\n\t\t\tif (!cycleId) {\n\t\t\t\tcycleId = arg;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tthrow new Error(`Unexpected argument for \"cycle status\": ${arg}`);\n\t\t}\n\n\t\treturn { kind: \"status\", cycleId };\n\t}\n\n\tthrow new Error(`Unknown cycle subcommand: ${subcommand}`);\n}\n\nfunction printIosmCycleStatus(cycleId: string, status: ReturnType<typeof inspectIosmCycle>): void {\n\tconsole.log(`${chalk.bold(\"Cycle:\")} ${cycleId}`);\n\tconsole.log(`${chalk.bold(\"Status:\")} ${status.status}`);\n\tconsole.log(`${chalk.bold(\"Decision:\")} ${status.decision}`);\n\tconsole.log(`${chalk.bold(\"Report:\")} ${status.reportPath}`);\n\tconsole.log(`${chalk.bold(\"Capacity:\")} ${status.capacityPass ? \"pass\" : \"fail\"}`);\n\tconsole.log(\n\t\t`${chalk.bold(\"Guardrails:\")} ${\n\t\t\tstatus.guardrailsPass === null ? \"pending\" : status.guardrailsPass ? \"pass\" : \"fail\"\n\t\t}`,\n\t);\n\tconsole.log(`${chalk.bold(\"Report Complete:\")} ${status.reportComplete ? \"yes\" : \"no\"}`);\n\tconsole.log(`${chalk.bold(\"Learning Closed:\")} ${status.learningClosed ? \"yes\" : \"no\"}`);\n\tconsole.log(`${chalk.bold(\"History Recorded:\")} ${status.historyRecorded ? \"yes\" : \"no\"}`);\n\n\tif (status.blockingIssues.length > 0) {\n\t\tconsole.log(chalk.bold(\"\\nBlocking Issues:\"));\n\t\tfor (const issue of status.blockingIssues) {\n\t\t\tconsole.log(` - ${issue}`);\n\t\t}\n\t}\n\n\tif (status.warnings.length > 0) {\n\t\tconsole.log(chalk.bold(\"\\nWarnings:\"));\n\t\tfor (const warning of status.warnings) {\n\t\t\tconsole.log(` - ${warning}`);\n\t\t}\n\t}\n}\n\nasync function handleIosmCycleCommand(args: string[]): Promise<boolean> {\n\tlet command: IosmCycleCommand | undefined;\n\ttry {\n\t\tcommand = parseIosmCycleCommand(args);\n\t} catch (error: unknown) {\n\t\tconst message = error instanceof Error ? error.message : \"Invalid cycle command\";\n\t\tconsole.error(chalk.red(message));\n\t\tconsole.error(chalk.dim(`Use \"${APP_NAME} cycle --help\".`));\n\t\tprocess.exitCode = 1;\n\t\treturn true;\n\t}\n\n\tif (!command) {\n\t\treturn false;\n\t}\n\n\tif (command.kind === \"help\") {\n\t\tprintIosmCycleHelp();\n\t\treturn true;\n\t}\n\n\ttry {\n\t\tswitch (command.kind) {\n\t\t\tcase \"list\": {\n\t\t\t\tconst cycles = listIosmCycles();\n\t\t\t\tif (cycles.length === 0) {\n\t\t\t\t\tconsole.log(chalk.dim(\"No IOSM cycles found.\"));\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tfor (const cycle of cycles) {\n\t\t\t\t\tconst goals = cycle.goals.length > 0 ? cycle.goals.join(\"; \") : \"no goals recorded\";\n\t\t\t\t\tconsole.log(`${cycle.cycleId} ${cycle.status} ${cycle.decision}`);\n\t\t\t\t\tconsole.log(chalk.dim(` ${goals}`));\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tcase \"plan\": {\n\t\t\t\tconst planned = planIosmCycle({\n\t\t\t\t\tgoals: command.goals,\n\t\t\t\t\tforce: command.force,\n\t\t\t\t\tcycleId: command.cycleId,\n\t\t\t\t});\n\t\t\t\tconsole.log(chalk.green(`Planned IOSM cycle ${planned.cycleId}`));\n\t\t\t\tconsole.log(` ${planned.cycleDir}`);\n\t\t\t\tconsole.log(chalk.dim(` baseline: ${planned.baselineReportPath}`));\n\t\t\t\tconsole.log(chalk.dim(` hypotheses: ${planned.hypothesesPath}`));\n\t\t\t\tconsole.log(chalk.dim(` report: ${planned.reportPath}`));\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tcase \"report\": {\n\t\t\t\tconst report = readIosmCycleReport(process.cwd(), command.cycleId);\n\t\t\t\tconsole.log(JSON.stringify(report, null, 2));\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tcase \"status\": {\n\t\t\t\tconst status = inspectIosmCycle(process.cwd(), command.cycleId);\n\t\t\t\tprintIosmCycleStatus(status.cycleId, status);\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tdefault:\n\t\t\t\treturn false;\n\t\t}\n\t} catch (error: unknown) {\n\t\tconst message = error instanceof Error ? error.message : \"Cycle command failed\";\n\t\tconsole.error(chalk.red(`Error: ${message}`));\n\t\tprocess.exitCode = 1;\n\t\treturn true;\n\t}\n}\n\nasync function prepareInitialMessage(\n\tparsed: Args,\n\tautoResizeImages: boolean,\n): Promise<{\n\tinitialMessage?: string;\n\tinitialImages?: ImageContent[];\n}> {\n\tif (parsed.fileArgs.length === 0) {\n\t\treturn {};\n\t}\n\n\tconst { text, images } = await processFileArguments(parsed.fileArgs, { autoResizeImages });\n\n\tlet initialMessage: string;\n\tif (parsed.messages.length > 0) {\n\t\tinitialMessage = text + parsed.messages[0];\n\t\tparsed.messages.shift();\n\t} else {\n\t\tinitialMessage = text;\n\t}\n\n\treturn {\n\t\tinitialMessage,\n\t\tinitialImages: images.length > 0 ? images : undefined,\n\t};\n}\n\n/** Result from resolving a session argument */\ntype ResolvedSession =\n\t| { type: \"path\"; path: string } // Direct file path\n\t| { type: \"local\"; path: string } // Found in current project\n\t| { type: \"global\"; path: string; cwd: string } // Found in different project\n\t| { type: \"not_found\"; arg: string }; // Not found anywhere\n\n/**\n * Resolve a session argument to a file path.\n * If it looks like a path, use as-is. Otherwise try to match as session ID prefix.\n */\nasync function resolveSessionPath(sessionArg: string, cwd: string, sessionDir?: string): Promise<ResolvedSession> {\n\t// If it looks like a file path, use as-is\n\tif (sessionArg.includes(\"/\") || sessionArg.includes(\"\\\\\") || sessionArg.endsWith(\".jsonl\")) {\n\t\treturn { type: \"path\", path: sessionArg };\n\t}\n\n\t// Try to match as session ID in current project first\n\tconst localSessions = await SessionManager.list(cwd, sessionDir);\n\tconst localMatches = localSessions.filter((s) => s.id.startsWith(sessionArg));\n\n\tif (localMatches.length >= 1) {\n\t\treturn { type: \"local\", path: localMatches[0].path };\n\t}\n\n\t// Try global search across all projects\n\tconst allSessions = await SessionManager.listAll();\n\tconst globalMatches = allSessions.filter((s) => s.id.startsWith(sessionArg));\n\n\tif (globalMatches.length >= 1) {\n\t\tconst match = globalMatches[0];\n\t\treturn { type: \"global\", path: match.path, cwd: match.cwd };\n\t}\n\n\t// Not found anywhere\n\treturn { type: \"not_found\", arg: sessionArg };\n}\n\n/** Prompt user for yes/no confirmation */\nasync function promptConfirm(message: string): Promise<boolean> {\n\treturn new Promise((resolve) => {\n\t\tconst rl = createInterface({\n\t\t\tinput: process.stdin,\n\t\t\toutput: process.stdout,\n\t\t});\n\t\trl.question(`${message} [y/N] `, (answer) => {\n\t\t\trl.close();\n\t\t\tresolve(answer.toLowerCase() === \"y\" || answer.toLowerCase() === \"yes\");\n\t\t});\n\t});\n}\n\nasync function createSessionManager(parsed: Args, cwd: string): Promise<SessionManager | undefined> {\n\tif (parsed.noSession) {\n\t\treturn SessionManager.inMemory();\n\t}\n\tif (parsed.session) {\n\t\tconst resolved = await resolveSessionPath(parsed.session, cwd, parsed.sessionDir);\n\n\t\tswitch (resolved.type) {\n\t\t\tcase \"path\":\n\t\t\tcase \"local\":\n\t\t\t\treturn SessionManager.open(resolved.path, parsed.sessionDir);\n\n\t\t\tcase \"global\": {\n\t\t\t\t// Session found in different project - ask user if they want to fork\n\t\t\t\tconsole.log(chalk.yellow(`Session found in different project: ${resolved.cwd}`));\n\t\t\t\tconst shouldFork = await promptConfirm(\"Fork this session into current directory?\");\n\t\t\t\tif (!shouldFork) {\n\t\t\t\t\tconsole.log(chalk.dim(\"Aborted.\"));\n\t\t\t\t\tprocess.exit(0);\n\t\t\t\t}\n\t\t\t\treturn SessionManager.forkFrom(resolved.path, cwd, parsed.sessionDir);\n\t\t\t}\n\n\t\t\tcase \"not_found\":\n\t\t\t\tconsole.error(chalk.red(`No session found matching '${resolved.arg}'`));\n\t\t\t\tprocess.exit(1);\n\t\t}\n\t}\n\tif (parsed.continue) {\n\t\treturn SessionManager.continueRecent(cwd, parsed.sessionDir);\n\t}\n\t// --resume is handled separately (needs picker UI)\n\t// If --session-dir provided without --continue/--resume, create new session there\n\tif (parsed.sessionDir) {\n\t\treturn SessionManager.create(cwd, parsed.sessionDir);\n\t}\n\t// Default case (new session) returns undefined, SDK will create one\n\treturn undefined;\n}\n\nfunction buildSessionOptions(\n\tparsed: Args,\n\tscopedModels: ScopedModel[],\n\tsessionManager: SessionManager | undefined,\n\tmodelRegistry: ModelRegistry,\n): { options: CreateAgentSessionOptions; cliThinkingFromModel: boolean } {\n\tconst options: CreateAgentSessionOptions = {};\n\tlet cliThinkingFromModel = false;\n\n\tif (sessionManager) {\n\t\toptions.sessionManager = sessionManager;\n\t}\n\n\t// Model from CLI\n\t// - supports --provider <name> --model <pattern>\n\t// - supports --model <provider>/<pattern>\n\tif (parsed.model) {\n\t\tconst resolved = resolveCliModel({\n\t\t\tcliProvider: parsed.provider,\n\t\t\tcliModel: parsed.model,\n\t\t\tmodelRegistry,\n\t\t});\n\t\tif (resolved.warning) {\n\t\t\tconsole.warn(chalk.yellow(`Warning: ${resolved.warning}`));\n\t\t}\n\t\tif (resolved.error) {\n\t\t\tconsole.error(chalk.red(resolved.error));\n\t\t\tprocess.exit(1);\n\t\t}\n\t\tif (resolved.model) {\n\t\t\toptions.model = resolved.model;\n\t\t\t// Allow \"--model <pattern>:<thinking>\" as a shorthand.\n\t\t\t// Explicit --thinking still takes precedence (applied later).\n\t\t\tif (!parsed.thinking && resolved.thinkingLevel) {\n\t\t\t\toptions.thinkingLevel = resolved.thinkingLevel;\n\t\t\t\tcliThinkingFromModel = true;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Thinking level from CLI (takes precedence over scoped model thinking levels set above)\n\tif (parsed.thinking) {\n\t\toptions.thinkingLevel = parsed.thinking;\n\t}\n\n\t// Scoped models for Ctrl+P cycling\n\t// Keep thinking level undefined when not explicitly set in the model pattern.\n\t// Undefined means \"inherit current session thinking level\" during cycling.\n\tif (scopedModels.length > 0) {\n\t\toptions.scopedModels = scopedModels.map((sm) => ({\n\t\t\tmodel: sm.model,\n\t\t\tthinkingLevel: sm.thinkingLevel,\n\t\t}));\n\t}\n\n\t// API key from CLI - set in authStorage\n\t// (handled by caller before createAgentSession)\n\n\t// Tools\n\tif (parsed.noTools) {\n\t\t// --no-tools: start with no built-in tools\n\t\t// --tools can still add specific ones back\n\t\tif (parsed.tools && parsed.tools.length > 0) {\n\t\t\toptions.tools = parsed.tools.map((name) => allTools[name]);\n\t\t} else {\n\t\t\toptions.tools = [];\n\t\t}\n\t} else if (parsed.tools) {\n\t\toptions.tools = parsed.tools.map((name) => allTools[name]);\n\t}\n\n\t// Agent profile: --profile overrides tool set and thinking level\n\t// --plan is shorthand for --profile plan\n\tif (parsed.plan && !parsed.profile) {\n\t\toptions.profile = \"plan\";\n\t} else if (parsed.profile) {\n\t\tif (!isValidProfileName(parsed.profile)) {\n\t\t\tconsole.error(\n\t\t\t\tchalk.yellow(\n\t\t\t\t\t`Warning: Unknown profile \"${parsed.profile}\". Valid profiles: ${getProfileNames().join(\", \")}`,\n\t\t\t\t),\n\t\t\t);\n\t\t} else {\n\t\t\toptions.profile = parsed.profile;\n\t\t}\n\t}\n\n\treturn { options, cliThinkingFromModel };\n}\n\nasync function handleConfigCommand(args: string[]): Promise<boolean> {\n\tif (args[0] !== \"config\") {\n\t\treturn false;\n\t}\n\n\tconst cwd = process.cwd();\n\tconst agentDir = getAgentDir();\n\tconst settingsManager = SettingsManager.create(cwd, agentDir);\n\treportSettingsErrors(settingsManager, \"config command\");\n\tconst packageManager = new DefaultPackageManager({ cwd, agentDir, settingsManager });\n\n\tconst resolvedPaths = await packageManager.resolve();\n\n\tawait selectConfig({\n\t\tresolvedPaths,\n\t\tsettingsManager,\n\t\tcwd,\n\t\tagentDir,\n\t});\n\n\tprocess.exit(0);\n}\n\nfunction printMcpConfigWarnings(errors: string[]): void {\n\tfor (const error of errors) {\n\t\tconsole.error(chalk.yellow(`Warning: ${error}`));\n\t}\n}\n\nfunction formatMcpServerLine(server: ReturnType<typeof loadMergedMcpConfig>[\"servers\"][number]): string {\n\tconst state = server.enabled ? \"enabled\" : \"disabled\";\n\tconst endpoint =\n\t\tserver.transport === \"stdio\"\n\t\t\t? `${server.command ?? \"(missing command)\"}${server.args.length > 0 ? ` ${server.args.join(\" \")}` : \"\"}`\n\t\t\t: server.url ?? \"(missing url)\";\n\treturn `${chalk.bold(server.name)} (${server.scope}, ${server.transport}, ${state})\\n ${chalk.dim(endpoint)}`;\n}\n\nasync function handleMcpCommand(args: string[]): Promise<boolean> {\n\tif (args[0] !== \"mcp\") {\n\t\treturn false;\n\t}\n\n\tconst cwd = process.cwd();\n\tconst agentDir = getAgentDir();\n\tconst subcommand = args[1] ?? \"list\";\n\tconst rest = args.slice(2);\n\tconst printHelp = () => console.log(getMcpCommandHelp(`${APP_NAME} mcp`));\n\n\tif (subcommand === \"help\" || subcommand === \"-h\" || subcommand === \"--help\") {\n\t\tprintHelp();\n\t\treturn true;\n\t}\n\n\tif (subcommand === \"list\") {\n\t\tconst merged = loadMergedMcpConfig(cwd, agentDir);\n\t\tprintMcpConfigWarnings(merged.errors);\n\t\tif (merged.servers.length === 0) {\n\t\t\tconsole.log(chalk.dim(\"No MCP servers configured. Use `iosm mcp add ...`.\"));\n\t\t\treturn true;\n\t\t}\n\t\tfor (const server of merged.servers) {\n\t\t\tconsole.log(formatMcpServerLine(server));\n\t\t}\n\t\treturn true;\n\t}\n\n\tif (subcommand === \"get\") {\n\t\tconst parsed = parseMcpTargetCommand(rest, \"all\");\n\t\tif (!parsed.ok) {\n\t\t\tif (\"help\" in parsed) {\n\t\t\t\tprintHelp();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tconsole.error(chalk.red(parsed.error));\n\t\t\tprocess.exitCode = 1;\n\t\t\treturn true;\n\t\t}\n\n\t\tconst server = getMergedServerByName(parsed.value.name, cwd, agentDir);\n\t\tif (!server) {\n\t\t\tconsole.error(chalk.red(`MCP server \"${parsed.value.name}\" not found.`));\n\t\t\tprocess.exitCode = 1;\n\t\t\treturn true;\n\t\t}\n\n\t\tconsole.log(JSON.stringify(server, null, 2));\n\t\treturn true;\n\t}\n\n\tconst runtime = new McpRuntime({\n\t\tcwd,\n\t\tagentDir,\n\t\tclientName: APP_NAME,\n\t\tclientVersion: VERSION,\n\t});\n\n\ttry {\n\t\tif (subcommand === \"add\") {\n\t\t\tconst parsed = parseMcpAddCommand(rest);\n\t\t\tif (!parsed.ok) {\n\t\t\t\tif (\"help\" in parsed) {\n\t\t\t\t\tprintHelp();\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tconsole.error(chalk.red(parsed.error));\n\t\t\t\tprocess.exitCode = 1;\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tconst path = await runtime.addServer(parsed.value.name, parsed.value.scope, parsed.value.config);\n\t\t\tconst status = runtime.getServer(parsed.value.name);\n\t\t\tconsole.log(chalk.green(`Added MCP server \"${parsed.value.name}\" to ${parsed.value.scope} scope.`));\n\t\t\tconsole.log(chalk.dim(`Config: ${path}`));\n\t\t\tif (status?.state === \"connected\") {\n\t\t\t\tconsole.log(chalk.dim(`Connected: ${status.toolCount} tool(s)`));\n\t\t\t} else if (status?.state === \"error\") {\n\t\t\t\tconsole.log(chalk.yellow(`Connection warning: ${status.error ?? \"unknown error\"}`));\n\t\t\t}\n\t\t\tprintMcpConfigWarnings(runtime.getErrors());\n\t\t\treturn true;\n\t\t}\n\n\t\tif (subcommand === \"remove\") {\n\t\t\tconst parsed = parseMcpTargetCommand(rest, \"all\");\n\t\t\tif (!parsed.ok) {\n\t\t\t\tif (\"help\" in parsed) {\n\t\t\t\t\tprintHelp();\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tconsole.error(chalk.red(parsed.error));\n\t\t\t\tprocess.exitCode = 1;\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tconst removed = await runtime.removeServer(parsed.value.name, parsed.value.scope);\n\t\t\tif (removed.length === 0) {\n\t\t\t\tconsole.error(chalk.red(`MCP server \"${parsed.value.name}\" not found.`));\n\t\t\t\tprocess.exitCode = 1;\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tconsole.log(chalk.green(`Removed MCP server \"${parsed.value.name}\" from ${removed.join(\", \")} scope.`));\n\t\t\tprintMcpConfigWarnings(runtime.getErrors());\n\t\t\treturn true;\n\t\t}\n\n\t\tif (subcommand === \"enable\" || subcommand === \"disable\") {\n\t\t\tconst parsed = parseMcpTargetCommand(rest, \"all\");\n\t\t\tif (!parsed.ok) {\n\t\t\t\tif (\"help\" in parsed) {\n\t\t\t\t\tprintHelp();\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tconsole.error(chalk.red(parsed.error));\n\t\t\t\tprocess.exitCode = 1;\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tconst enabled = subcommand === \"enable\";\n\t\t\tlet updatedScope: \"project\" | \"user\" | undefined;\n\t\t\tif (parsed.value.scope === \"all\") {\n\t\t\t\tupdatedScope =\n\t\t\t\t\t(await runtime.setServerEnabled(parsed.value.name, enabled, \"project\")) ??\n\t\t\t\t\t(await runtime.setServerEnabled(parsed.value.name, enabled, \"user\"));\n\t\t\t} else {\n\t\t\t\tupdatedScope = await runtime.setServerEnabled(parsed.value.name, enabled, parsed.value.scope);\n\t\t\t}\n\n\t\t\tif (!updatedScope) {\n\t\t\t\tconsole.error(chalk.red(`MCP server \"${parsed.value.name}\" not found.`));\n\t\t\t\tprocess.exitCode = 1;\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tconsole.log(chalk.green(`${enabled ? \"Enabled\" : \"Disabled\"} MCP server \"${parsed.value.name}\" (${updatedScope}).`));\n\t\t\tprintMcpConfigWarnings(runtime.getErrors());\n\t\t\treturn true;\n\t\t}\n\n\t\tif (subcommand === \"tools\") {\n\t\t\tawait runtime.refresh();\n\t\t\tprintMcpConfigWarnings(runtime.getErrors());\n\t\t\tconst serverName = rest[0];\n\t\t\tconst statuses = runtime.getServers();\n\t\t\tconst targets = serverName ? statuses.filter((server) => server.name === serverName) : statuses;\n\t\t\tif (targets.length === 0) {\n\t\t\t\tconsole.error(chalk.red(serverName ? `MCP server \"${serverName}\" not found.` : \"No MCP servers configured.\"));\n\t\t\t\tprocess.exitCode = 1;\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tfor (const server of targets) {\n\t\t\t\tconsole.log(chalk.bold(`${server.name} (${server.state})`));\n\t\t\t\tif (server.state !== \"connected\") {\n\t\t\t\t\tconsole.log(chalk.dim(` ${server.error ?? \"not connected\"}`));\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (server.tools.length === 0) {\n\t\t\t\t\tconsole.log(chalk.dim(\" No tools exposed.\"));\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tfor (const tool of server.tools) {\n\t\t\t\t\tconst aliasSuffix = tool.name === tool.exposedName ? \"\" : ` -> ${tool.exposedName}`;\n\t\t\t\t\tconsole.log(` - ${tool.name}${aliasSuffix}`);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\n\t\tif (subcommand === \"test\") {\n\t\t\tconst parsed = parseMcpTargetCommand(rest, \"all\");\n\t\t\tif (!parsed.ok) {\n\t\t\t\tif (\"help\" in parsed) {\n\t\t\t\t\tprintHelp();\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tconsole.error(chalk.red(parsed.error));\n\t\t\t\tprocess.exitCode = 1;\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tawait runtime.refresh();\n\t\t\tprintMcpConfigWarnings(runtime.getErrors());\n\t\t\tconst status = runtime.getServer(parsed.value.name);\n\t\t\tif (!status) {\n\t\t\t\tconsole.error(chalk.red(`MCP server \"${parsed.value.name}\" not found.`));\n\t\t\t\tprocess.exitCode = 1;\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif (status.state !== \"connected\") {\n\t\t\t\tconsole.error(chalk.red(`MCP server \"${parsed.value.name}\" failed: ${status.error ?? \"unknown error\"}`));\n\t\t\t\tprocess.exitCode = 1;\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tconsole.log(chalk.green(`MCP server \"${parsed.value.name}\" is connected (${status.toolCount} tool(s)).`));\n\t\t\treturn true;\n\t\t}\n\n\t\tconsole.error(chalk.red(`Unknown MCP subcommand \"${subcommand}\".`));\n\t\tprintHelp();\n\t\tprocess.exitCode = 1;\n\t\treturn true;\n\t} finally {\n\t\tawait runtime.dispose();\n\t}\n}\n\nexport async function main(args: string[]) {\n\tapplySessionTraceCliOverrides(args);\n\n\tconst offlineMode = args.includes(\"--offline\") || isTruthyEnvFlag(process.env[ENV_OFFLINE]) || isTruthyEnvFlag(process.env.PI_OFFLINE);\n\tif (offlineMode) {\n\t\tprocess.env[ENV_OFFLINE] = \"1\";\n\t\tprocess.env[ENV_SKIP_VERSION_CHECK] = \"1\";\n\t\tprocess.env.PI_OFFLINE = \"1\";\n\t\tprocess.env.PI_SKIP_VERSION_CHECK = \"1\";\n\t}\n\n\tif (await handleIosmInitCommand(args)) {\n\t\treturn;\n\t}\n\n\tif (await handleIosmCycleCommand(args)) {\n\t\treturn;\n\t}\n\n\tif (await handlePackageCommand(args)) {\n\t\treturn;\n\t}\n\n\tif (await handleMcpCommand(args)) {\n\t\treturn;\n\t}\n\n\tif (await handleConfigCommand(args)) {\n\t\treturn;\n\t}\n\n\t// Run migrations (pass cwd for project-local migrations)\n\tconst { migratedAuthProviders: migratedProviders, deprecationWarnings } = runMigrations(process.cwd());\n\n\t// First pass: parse args to get --extension paths\n\tconst firstPass = parseArgs(args);\n\tconst firstPassProfile = firstPass.profile ?? (firstPass.plan ? \"plan\" : \"full\");\n\tconst contextProfile = firstPassProfile.toLowerCase() === \"iosm\" ? \"iosm\" : \"standard\";\n\n\t// Early load extensions to discover their CLI flags\n\tconst cwd = process.cwd();\n\tconst agentDir = getAgentDir();\n\tconst settingsManager = SettingsManager.create(cwd, agentDir);\n\treportSettingsErrors(settingsManager, \"startup\");\n\tconst authStorage = AuthStorage.create();\n\tconst modelRegistry = new ModelRegistry(authStorage, getModelsPath());\n\n\tconst resourceLoader = new DefaultResourceLoader({\n\t\tcwd,\n\t\tagentDir,\n\t\tsettingsManager,\n\t\tcontextProfile,\n\t\tadditionalExtensionPaths: firstPass.extensions,\n\t\tadditionalSkillPaths: firstPass.skills,\n\t\tadditionalPromptTemplatePaths: firstPass.promptTemplates,\n\t\tadditionalThemePaths: firstPass.themes,\n\t\tnoExtensions: firstPass.noExtensions,\n\t\tnoSkills: firstPass.noSkills,\n\t\tnoPromptTemplates: firstPass.noPromptTemplates,\n\t\tnoThemes: firstPass.noThemes,\n\t\tsystemPrompt: firstPass.systemPrompt,\n\t\tappendSystemPrompt: firstPass.appendSystemPrompt,\n\t});\n\tawait resourceLoader.reload();\n\ttime(\"resourceLoader.reload\");\n\n\tconst extensionsResult: LoadExtensionsResult = resourceLoader.getExtensions();\n\tfor (const { path, error } of extensionsResult.errors) {\n\t\tconsole.error(chalk.red(`Failed to load extension \"${path}\": ${error}`));\n\t}\n\n\t// Apply pending provider registrations from extensions immediately\n\t// so they're available for model resolution before AgentSession is created\n\tfor (const { name, config } of extensionsResult.runtime.pendingProviderRegistrations) {\n\t\tmodelRegistry.registerProvider(name, config);\n\t}\n\textensionsResult.runtime.pendingProviderRegistrations = [];\n\n\tconst extensionFlags = new Map<string, { type: \"boolean\" | \"string\" }>();\n\tfor (const ext of extensionsResult.extensions) {\n\t\tfor (const [name, flag] of ext.flags) {\n\t\t\textensionFlags.set(name, { type: flag.type });\n\t\t}\n\t}\n\n\t// Second pass: parse args with extension flags\n\tconst parsed = parseArgs(args, extensionFlags);\n\n\t// Pass flag values to extensions via runtime\n\tfor (const [name, value] of parsed.unknownFlags) {\n\t\textensionsResult.runtime.flagValues.set(name, value);\n\t}\n\n\tif (parsed.version) {\n\t\tconsole.log(VERSION);\n\t\tprocess.exit(0);\n\t}\n\n\tif (parsed.help) {\n\t\tprintHelp();\n\t\tprocess.exit(0);\n\t}\n\n\tif (parsed.listModels !== undefined) {\n\t\tconst searchPattern = typeof parsed.listModels === \"string\" ? parsed.listModels : undefined;\n\t\tawait listModels(modelRegistry, searchPattern);\n\t\tprocess.exit(0);\n\t}\n\n\t// Read piped stdin content (if any) - skip for RPC mode which uses stdin for JSON-RPC\n\tif (parsed.mode !== \"rpc\") {\n\t\tconst stdinContent = await readPipedStdin();\n\t\tif (stdinContent !== undefined) {\n\t\t\t// Force print mode since interactive mode requires a TTY for keyboard input\n\t\t\tparsed.print = true;\n\t\t\t// Prepend stdin content to messages\n\t\t\tparsed.messages.unshift(stdinContent);\n\t\t}\n\t}\n\n\tif (parsed.export) {\n\t\tlet result: string;\n\t\ttry {\n\t\t\tconst outputPath = parsed.messages.length > 0 ? parsed.messages[0] : undefined;\n\t\t\tresult = await exportFromFile(parsed.export, outputPath);\n\t\t} catch (error: unknown) {\n\t\t\tconst message = error instanceof Error ? error.message : \"Failed to export session\";\n\t\t\tconsole.error(chalk.red(`Error: ${message}`));\n\t\t\tprocess.exit(1);\n\t\t}\n\t\tconsole.log(`Exported to: ${result}`);\n\t\tprocess.exit(0);\n\t}\n\n\tif (parsed.mode === \"rpc\" && parsed.fileArgs.length > 0) {\n\t\tconsole.error(chalk.red(\"Error: @file arguments are not supported in RPC mode\"));\n\t\tprocess.exit(1);\n\t}\n\n\tconst { initialMessage, initialImages } = await prepareInitialMessage(parsed, settingsManager.getImageAutoResize());\n\tconst isInteractive = !parsed.print && parsed.mode === undefined;\n\tconst mode = parsed.mode || \"text\";\n\tinitTheme(settingsManager.getTheme(), isInteractive);\n\n\t// Show deprecation warnings in interactive mode\n\tif (isInteractive && deprecationWarnings.length > 0) {\n\t\tawait showDeprecationWarnings(deprecationWarnings);\n\t}\n\n\tlet scopedModels: ScopedModel[] = [];\n\tconst modelPatterns = parsed.models ?? settingsManager.getEnabledModels();\n\tif (modelPatterns && modelPatterns.length > 0) {\n\t\tscopedModels = await resolveModelScope(modelPatterns, modelRegistry);\n\t}\n\n\t// Create session manager based on CLI flags\n\tlet sessionManager = await createSessionManager(parsed, cwd);\n\n\t// Handle --resume: show session picker\n\tif (parsed.resume) {\n\t\t// Initialize keybindings so session picker respects user config\n\t\tKeybindingsManager.create();\n\n\t\tconst selectedPath = await selectSession(\n\t\t\t(onProgress) => SessionManager.list(cwd, parsed.sessionDir, onProgress),\n\t\t\tSessionManager.listAll,\n\t\t);\n\t\tif (!selectedPath) {\n\t\t\tconsole.log(chalk.dim(\"No session selected\"));\n\t\t\tstopThemeWatcher();\n\t\t\tprocess.exit(0);\n\t\t}\n\t\tsessionManager = SessionManager.open(selectedPath);\n\t}\n\n\tconst { options: sessionOptions, cliThinkingFromModel } = buildSessionOptions(\n\t\tparsed,\n\t\tscopedModels,\n\t\tsessionManager,\n\t\tmodelRegistry,\n\t);\n\tsessionOptions.authStorage = authStorage;\n\tsessionOptions.modelRegistry = modelRegistry;\n\tsessionOptions.resourceLoader = resourceLoader;\n\tsessionOptions.enableAskUserTool = isInteractive || mode === \"rpc\";\n\n\t// Handle CLI --api-key as runtime override (not persisted)\n\tif (parsed.apiKey) {\n\t\tif (!sessionOptions.model) {\n\t\t\tconsole.error(\n\t\t\t\tchalk.red(\"--api-key requires a model to be specified via --model (optionally with --provider)\"),\n\t\t\t);\n\t\t\tprocess.exit(1);\n\t\t}\n\t\tauthStorage.setRuntimeApiKey(sessionOptions.model.provider, parsed.apiKey);\n\t}\n\n\tlet mcpRuntime: McpRuntime | undefined;\n\ttry {\n\t\tmcpRuntime = new McpRuntime({\n\t\t\tcwd,\n\t\t\tagentDir,\n\t\t\tclientName: APP_NAME,\n\t\t\tclientVersion: VERSION,\n\t\t});\n\t\tawait mcpRuntime.refresh();\n\t\tprintMcpConfigWarnings(mcpRuntime.getErrors());\n\t\tconst mcpTools = mcpRuntime.getToolDefinitions();\n\t\tif (mcpTools.length > 0) {\n\t\t\tsessionOptions.customTools = [...(sessionOptions.customTools ?? []), ...mcpTools];\n\t\t}\n\n\t\tconst { session, modelFallbackMessage } = await createAgentSession(sessionOptions);\n\n\t\tif (!isInteractive && !session.model) {\n\t\t\tconsole.error(chalk.red(\"No model selected.\"));\n\t\t\tconsole.error(chalk.yellow(\"\\nSelect one explicitly:\"));\n\t\t\tconsole.error(` ${APP_NAME} --provider <provider> --model <model-id> ...`);\n\t\t\tconsole.error(` ${APP_NAME} --model <provider/model-id> ...`);\n\t\t\tconsole.error(chalk.yellow(\"\\nFor interactive mode, launch and choose with /model.\"));\n\t\t\tconsole.error(chalk.dim(`Configured models file: ${getModelsPath()}`));\n\t\t\tprocess.exit(1);\n\t\t}\n\n\t\t// Clamp thinking level to model capabilities for CLI-provided thinking levels.\n\t\t// This covers both --thinking <level> and --model <pattern>:<thinking>.\n\t\tconst cliThinkingOverride = parsed.thinking !== undefined || cliThinkingFromModel;\n\t\tif (session.model && cliThinkingOverride) {\n\t\t\tlet effectiveThinking = session.thinkingLevel;\n\t\t\tif (!session.model.reasoning) {\n\t\t\t\teffectiveThinking = \"off\";\n\t\t\t} else if (effectiveThinking === \"xhigh\" && !supportsXhigh(session.model)) {\n\t\t\t\teffectiveThinking = \"high\";\n\t\t\t}\n\t\t\tif (effectiveThinking !== session.thinkingLevel) {\n\t\t\t\tsession.setThinkingLevel(effectiveThinking);\n\t\t\t}\n\t\t}\n\n\t\tif (mode === \"rpc\") {\n\t\t\tawait runRpcMode(session);\n\t\t} else if (isInteractive) {\n\t\t\tif (scopedModels.length > 0 && (parsed.verbose || !settingsManager.getQuietStartup())) {\n\t\t\t\tconst modelList = scopedModels\n\t\t\t\t\t.map((sm) => {\n\t\t\t\t\t\tconst thinkingStr = sm.thinkingLevel ? `:${sm.thinkingLevel}` : \"\";\n\t\t\t\t\t\treturn `${sm.model.id}${thinkingStr}`;\n\t\t\t\t\t})\n\t\t\t\t\t.join(\", \");\n\t\t\t\tconsole.log(chalk.dim(`Model scope: ${modelList} ${chalk.gray(\"(Ctrl+P to cycle)\")}`));\n\t\t\t}\n\n\t\t\tprintTimings();\n\t\t\tconst mode = new InteractiveMode(session, {\n\t\t\t\tmigratedProviders,\n\t\t\t\tmodelFallbackMessage,\n\t\t\t\tinitialMessage,\n\t\t\t\tinitialImages,\n\t\t\t\tinitialMessages: parsed.messages,\n\t\t\t\tverbose: parsed.verbose,\n\t\t\t\tplanMode: parsed.plan,\n\t\t\t\tprofile: sessionOptions.profile,\n\t\t\t\tmcpRuntime,\n\t\t\t});\n\t\t\tawait mode.run();\n\t\t} else {\n\t\t\tawait runPrintMode(session, {\n\t\t\t\tmode,\n\t\t\t\tmessages: parsed.messages,\n\t\t\t\tinitialMessage,\n\t\t\t\tinitialImages,\n\t\t\t});\n\t\t\tstopThemeWatcher();\n\t\t\tif (process.stdout.writableLength > 0) {\n\t\t\t\tawait new Promise<void>((resolve) => process.stdout.once(\"drain\", resolve));\n\t\t\t}\n\t\t}\n\t} finally {\n\t\tawait mcpRuntime?.dispose();\n\t}\n}\n"]}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * One-time migrations that run on startup.
3
+ */
4
+ /**
5
+ * Migrate legacy oauth.json and settings.json apiKeys to auth.json.
6
+ *
7
+ * @returns Array of provider names that were migrated
8
+ */
9
+ export declare function migrateAuthToAuthJson(): string[];
10
+ /**
11
+ * Migrate sessions from ~/.iosm/agent/*.jsonl to proper session directories.
12
+ *
13
+ * Bug in v0.30.0: Sessions were saved to ~/.iosm/agent/ instead of
14
+ * ~/.iosm/agent/sessions/<encoded-cwd>/. This migration moves them
15
+ * to the correct location based on the cwd in their session header.
16
+ *
17
+ * See historical issue in the original upstream project (session path migration bug).
18
+ */
19
+ export declare function migrateSessionsFromAgentRoot(): void;
20
+ /**
21
+ * Print deprecation warnings and wait for keypress.
22
+ */
23
+ export declare function showDeprecationWarnings(warnings: string[]): Promise<void>;
24
+ /**
25
+ * Run all migrations. Called once on startup.
26
+ *
27
+ * @returns Object with migration results and deprecation warnings
28
+ */
29
+ export declare function runMigrations(cwd?: string): {
30
+ migratedAuthProviders: string[];
31
+ deprecationWarnings: string[];
32
+ };
33
+ //# sourceMappingURL=migrations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../src/migrations.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,EAAE,CAoDhD;AAED;;;;;;;;GAQG;AACH,wBAAgB,4BAA4B,IAAI,IAAI,CA+CnD;AA8HD;;GAEG;AACH,wBAAsB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAqB/E;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,GAAE,MAAsB,GAAG;IAC3D,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,mBAAmB,EAAE,MAAM,EAAE,CAAC;CAC9B,CAMA"}
@@ -0,0 +1,261 @@
1
+ /**
2
+ * One-time migrations that run on startup.
3
+ */
4
+ import chalk from "chalk";
5
+ import { existsSync, mkdirSync, readdirSync, readFileSync, renameSync, rmSync, writeFileSync } from "fs";
6
+ import { dirname, join } from "path";
7
+ import { CHANGELOG_URL, CONFIG_DIR_NAME, REPOSITORY_URL, getAgentDir, getBinDir } from "./config.js";
8
+ const MIGRATION_GUIDE_URL = CHANGELOG_URL ? `${CHANGELOG_URL}#extensions-migration` : "CHANGELOG.md#extensions-migration";
9
+ const EXTENSIONS_DOC_URL = REPOSITORY_URL ? `${REPOSITORY_URL}/blob/main/docs/extensions.md` : "docs/extensions.md";
10
+ /**
11
+ * Migrate legacy oauth.json and settings.json apiKeys to auth.json.
12
+ *
13
+ * @returns Array of provider names that were migrated
14
+ */
15
+ export function migrateAuthToAuthJson() {
16
+ const agentDir = getAgentDir();
17
+ const authPath = join(agentDir, "auth.json");
18
+ const oauthPath = join(agentDir, "oauth.json");
19
+ const settingsPath = join(agentDir, "settings.json");
20
+ // Skip if auth.json already exists
21
+ if (existsSync(authPath))
22
+ return [];
23
+ const migrated = {};
24
+ const providers = [];
25
+ // Migrate oauth.json
26
+ if (existsSync(oauthPath)) {
27
+ try {
28
+ const oauth = JSON.parse(readFileSync(oauthPath, "utf-8"));
29
+ for (const [provider, cred] of Object.entries(oauth)) {
30
+ migrated[provider] = { type: "oauth", ...cred };
31
+ providers.push(provider);
32
+ }
33
+ renameSync(oauthPath, `${oauthPath}.migrated`);
34
+ }
35
+ catch {
36
+ // Skip on error
37
+ }
38
+ }
39
+ // Migrate settings.json apiKeys
40
+ if (existsSync(settingsPath)) {
41
+ try {
42
+ const content = readFileSync(settingsPath, "utf-8");
43
+ const settings = JSON.parse(content);
44
+ if (settings.apiKeys && typeof settings.apiKeys === "object") {
45
+ for (const [provider, key] of Object.entries(settings.apiKeys)) {
46
+ if (!migrated[provider] && typeof key === "string") {
47
+ migrated[provider] = { type: "api_key", key };
48
+ providers.push(provider);
49
+ }
50
+ }
51
+ delete settings.apiKeys;
52
+ writeFileSync(settingsPath, JSON.stringify(settings, null, 2));
53
+ }
54
+ }
55
+ catch {
56
+ // Skip on error
57
+ }
58
+ }
59
+ if (Object.keys(migrated).length > 0) {
60
+ mkdirSync(dirname(authPath), { recursive: true });
61
+ writeFileSync(authPath, JSON.stringify(migrated, null, 2), { mode: 0o600 });
62
+ }
63
+ return providers;
64
+ }
65
+ /**
66
+ * Migrate sessions from ~/.iosm/agent/*.jsonl to proper session directories.
67
+ *
68
+ * Bug in v0.30.0: Sessions were saved to ~/.iosm/agent/ instead of
69
+ * ~/.iosm/agent/sessions/<encoded-cwd>/. This migration moves them
70
+ * to the correct location based on the cwd in their session header.
71
+ *
72
+ * See historical issue in the original upstream project (session path migration bug).
73
+ */
74
+ export function migrateSessionsFromAgentRoot() {
75
+ const agentDir = getAgentDir();
76
+ // Find all .jsonl files directly in agentDir (not in subdirectories)
77
+ let files;
78
+ try {
79
+ files = readdirSync(agentDir)
80
+ .filter((f) => f.endsWith(".jsonl"))
81
+ .map((f) => join(agentDir, f));
82
+ }
83
+ catch {
84
+ return;
85
+ }
86
+ if (files.length === 0)
87
+ return;
88
+ for (const file of files) {
89
+ try {
90
+ // Read first line to get session header
91
+ const content = readFileSync(file, "utf8");
92
+ const firstLine = content.split("\n")[0];
93
+ if (!firstLine?.trim())
94
+ continue;
95
+ const header = JSON.parse(firstLine);
96
+ if (header.type !== "session" || !header.cwd)
97
+ continue;
98
+ const cwd = header.cwd;
99
+ // Compute the correct session directory (same encoding as session-manager.ts)
100
+ const safePath = `--${cwd.replace(/^[/\\]/, "").replace(/[/\\:]/g, "-")}--`;
101
+ const correctDir = join(agentDir, "sessions", safePath);
102
+ // Create directory if needed
103
+ if (!existsSync(correctDir)) {
104
+ mkdirSync(correctDir, { recursive: true });
105
+ }
106
+ // Move the file
107
+ const fileName = file.split("/").pop() || file.split("\\").pop();
108
+ const newPath = join(correctDir, fileName);
109
+ if (existsSync(newPath))
110
+ continue; // Skip if target exists
111
+ renameSync(file, newPath);
112
+ }
113
+ catch {
114
+ // Skip files that can't be migrated
115
+ }
116
+ }
117
+ }
118
+ /**
119
+ * Migrate commands/ to prompts/ if needed.
120
+ * Works for both regular directories and symlinks.
121
+ */
122
+ function migrateCommandsToPrompts(baseDir, label) {
123
+ const commandsDir = join(baseDir, "commands");
124
+ const promptsDir = join(baseDir, "prompts");
125
+ if (existsSync(commandsDir) && !existsSync(promptsDir)) {
126
+ try {
127
+ renameSync(commandsDir, promptsDir);
128
+ console.log(chalk.green(`Migrated ${label} commands/ → prompts/`));
129
+ return true;
130
+ }
131
+ catch (err) {
132
+ console.log(chalk.yellow(`Warning: Could not migrate ${label} commands/ to prompts/: ${err instanceof Error ? err.message : err}`));
133
+ }
134
+ }
135
+ return false;
136
+ }
137
+ /**
138
+ * Move fd/rg binaries from tools/ to bin/ if they exist.
139
+ */
140
+ function migrateToolsToBin() {
141
+ const agentDir = getAgentDir();
142
+ const toolsDir = join(agentDir, "tools");
143
+ const binDir = getBinDir();
144
+ if (!existsSync(toolsDir))
145
+ return;
146
+ const binaries = ["fd", "rg", "fd.exe", "rg.exe"];
147
+ let movedAny = false;
148
+ for (const bin of binaries) {
149
+ const oldPath = join(toolsDir, bin);
150
+ const newPath = join(binDir, bin);
151
+ if (existsSync(oldPath)) {
152
+ if (!existsSync(binDir)) {
153
+ mkdirSync(binDir, { recursive: true });
154
+ }
155
+ if (!existsSync(newPath)) {
156
+ try {
157
+ renameSync(oldPath, newPath);
158
+ movedAny = true;
159
+ }
160
+ catch {
161
+ // Ignore errors
162
+ }
163
+ }
164
+ else {
165
+ // Target exists, just delete the old one
166
+ try {
167
+ rmSync?.(oldPath, { force: true });
168
+ }
169
+ catch {
170
+ // Ignore
171
+ }
172
+ }
173
+ }
174
+ }
175
+ if (movedAny) {
176
+ console.log(chalk.green(`Migrated managed binaries tools/ → bin/`));
177
+ }
178
+ }
179
+ /**
180
+ * Check for deprecated hooks/ and tools/ directories.
181
+ * Note: tools/ may contain fd/rg binaries extracted by iosm, so only warn if it has other files.
182
+ */
183
+ function checkDeprecatedExtensionDirs(baseDir, label) {
184
+ const hooksDir = join(baseDir, "hooks");
185
+ const toolsDir = join(baseDir, "tools");
186
+ const warnings = [];
187
+ if (existsSync(hooksDir)) {
188
+ warnings.push(`${label} hooks/ directory found. Hooks have been renamed to extensions.`);
189
+ }
190
+ if (existsSync(toolsDir)) {
191
+ // Check if tools/ contains anything other than fd/rg (which are auto-extracted binaries)
192
+ try {
193
+ const entries = readdirSync(toolsDir);
194
+ const customTools = entries.filter((e) => {
195
+ const lower = e.toLowerCase();
196
+ return (lower !== "fd" && lower !== "rg" && lower !== "fd.exe" && lower !== "rg.exe" && !e.startsWith(".") // Ignore .DS_Store and other hidden files
197
+ );
198
+ });
199
+ if (customTools.length > 0) {
200
+ warnings.push(`${label} tools/ directory contains custom tools. Custom tools have been merged into extensions.`);
201
+ }
202
+ }
203
+ catch {
204
+ // Ignore read errors
205
+ }
206
+ }
207
+ return warnings;
208
+ }
209
+ /**
210
+ * Run extension system migrations (commands→prompts) and collect warnings about deprecated directories.
211
+ */
212
+ function migrateExtensionSystem(cwd) {
213
+ const agentDir = getAgentDir();
214
+ const projectDir = join(cwd, CONFIG_DIR_NAME);
215
+ // Migrate commands/ to prompts/
216
+ migrateCommandsToPrompts(agentDir, "Global");
217
+ migrateCommandsToPrompts(projectDir, "Project");
218
+ // Check for deprecated directories
219
+ const warnings = [
220
+ ...checkDeprecatedExtensionDirs(agentDir, "Global"),
221
+ ...checkDeprecatedExtensionDirs(projectDir, "Project"),
222
+ ];
223
+ return warnings;
224
+ }
225
+ /**
226
+ * Print deprecation warnings and wait for keypress.
227
+ */
228
+ export async function showDeprecationWarnings(warnings) {
229
+ if (warnings.length === 0)
230
+ return;
231
+ for (const warning of warnings) {
232
+ console.log(chalk.yellow(`Warning: ${warning}`));
233
+ }
234
+ console.log(chalk.yellow(`\nMove your extensions to the extensions/ directory.`));
235
+ console.log(chalk.yellow(`Migration guide: ${MIGRATION_GUIDE_URL}`));
236
+ console.log(chalk.yellow(`Documentation: ${EXTENSIONS_DOC_URL}`));
237
+ console.log(chalk.dim(`\nPress any key to continue...`));
238
+ await new Promise((resolve) => {
239
+ process.stdin.setRawMode?.(true);
240
+ process.stdin.resume();
241
+ process.stdin.once("data", () => {
242
+ process.stdin.setRawMode?.(false);
243
+ process.stdin.pause();
244
+ resolve();
245
+ });
246
+ });
247
+ console.log();
248
+ }
249
+ /**
250
+ * Run all migrations. Called once on startup.
251
+ *
252
+ * @returns Object with migration results and deprecation warnings
253
+ */
254
+ export function runMigrations(cwd = process.cwd()) {
255
+ const migratedAuthProviders = migrateAuthToAuthJson();
256
+ migrateSessionsFromAgentRoot();
257
+ migrateToolsToBin();
258
+ const deprecationWarnings = migrateExtensionSystem(cwd);
259
+ return { migratedAuthProviders, deprecationWarnings };
260
+ }
261
+ //# sourceMappingURL=migrations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrations.js","sourceRoot":"","sources":["../src/migrations.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * One-time migrations that run on startup.\n */\n\nimport chalk from \"chalk\";\nimport { existsSync, mkdirSync, readdirSync, readFileSync, renameSync, rmSync, writeFileSync } from \"fs\";\nimport { dirname, join } from \"path\";\nimport { CHANGELOG_URL, CONFIG_DIR_NAME, REPOSITORY_URL, getAgentDir, getBinDir } from \"./config.js\";\n\nconst MIGRATION_GUIDE_URL = CHANGELOG_URL ? `${CHANGELOG_URL}#extensions-migration` : \"CHANGELOG.md#extensions-migration\";\nconst EXTENSIONS_DOC_URL = REPOSITORY_URL ? `${REPOSITORY_URL}/blob/main/docs/extensions.md` : \"docs/extensions.md\";\n\n/**\n * Migrate legacy oauth.json and settings.json apiKeys to auth.json.\n *\n * @returns Array of provider names that were migrated\n */\nexport function migrateAuthToAuthJson(): string[] {\n\tconst agentDir = getAgentDir();\n\tconst authPath = join(agentDir, \"auth.json\");\n\tconst oauthPath = join(agentDir, \"oauth.json\");\n\tconst settingsPath = join(agentDir, \"settings.json\");\n\n\t// Skip if auth.json already exists\n\tif (existsSync(authPath)) return [];\n\n\tconst migrated: Record<string, unknown> = {};\n\tconst providers: string[] = [];\n\n\t// Migrate oauth.json\n\tif (existsSync(oauthPath)) {\n\t\ttry {\n\t\t\tconst oauth = JSON.parse(readFileSync(oauthPath, \"utf-8\"));\n\t\t\tfor (const [provider, cred] of Object.entries(oauth)) {\n\t\t\t\tmigrated[provider] = { type: \"oauth\", ...(cred as object) };\n\t\t\t\tproviders.push(provider);\n\t\t\t}\n\t\t\trenameSync(oauthPath, `${oauthPath}.migrated`);\n\t\t} catch {\n\t\t\t// Skip on error\n\t\t}\n\t}\n\n\t// Migrate settings.json apiKeys\n\tif (existsSync(settingsPath)) {\n\t\ttry {\n\t\t\tconst content = readFileSync(settingsPath, \"utf-8\");\n\t\t\tconst settings = JSON.parse(content);\n\t\t\tif (settings.apiKeys && typeof settings.apiKeys === \"object\") {\n\t\t\t\tfor (const [provider, key] of Object.entries(settings.apiKeys)) {\n\t\t\t\t\tif (!migrated[provider] && typeof key === \"string\") {\n\t\t\t\t\t\tmigrated[provider] = { type: \"api_key\", key };\n\t\t\t\t\t\tproviders.push(provider);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tdelete settings.apiKeys;\n\t\t\t\twriteFileSync(settingsPath, JSON.stringify(settings, null, 2));\n\t\t\t}\n\t\t} catch {\n\t\t\t// Skip on error\n\t\t}\n\t}\n\n\tif (Object.keys(migrated).length > 0) {\n\t\tmkdirSync(dirname(authPath), { recursive: true });\n\t\twriteFileSync(authPath, JSON.stringify(migrated, null, 2), { mode: 0o600 });\n\t}\n\n\treturn providers;\n}\n\n/**\n * Migrate sessions from ~/.iosm/agent/*.jsonl to proper session directories.\n *\n * Bug in v0.30.0: Sessions were saved to ~/.iosm/agent/ instead of\n * ~/.iosm/agent/sessions/<encoded-cwd>/. This migration moves them\n * to the correct location based on the cwd in their session header.\n *\n * See historical issue in the original upstream project (session path migration bug).\n */\nexport function migrateSessionsFromAgentRoot(): void {\n\tconst agentDir = getAgentDir();\n\n\t// Find all .jsonl files directly in agentDir (not in subdirectories)\n\tlet files: string[];\n\ttry {\n\t\tfiles = readdirSync(agentDir)\n\t\t\t.filter((f) => f.endsWith(\".jsonl\"))\n\t\t\t.map((f) => join(agentDir, f));\n\t} catch {\n\t\treturn;\n\t}\n\n\tif (files.length === 0) return;\n\n\tfor (const file of files) {\n\t\ttry {\n\t\t\t// Read first line to get session header\n\t\t\tconst content = readFileSync(file, \"utf8\");\n\t\t\tconst firstLine = content.split(\"\\n\")[0];\n\t\t\tif (!firstLine?.trim()) continue;\n\n\t\t\tconst header = JSON.parse(firstLine);\n\t\t\tif (header.type !== \"session\" || !header.cwd) continue;\n\n\t\t\tconst cwd: string = header.cwd;\n\n\t\t\t// Compute the correct session directory (same encoding as session-manager.ts)\n\t\t\tconst safePath = `--${cwd.replace(/^[/\\\\]/, \"\").replace(/[/\\\\:]/g, \"-\")}--`;\n\t\t\tconst correctDir = join(agentDir, \"sessions\", safePath);\n\n\t\t\t// Create directory if needed\n\t\t\tif (!existsSync(correctDir)) {\n\t\t\t\tmkdirSync(correctDir, { recursive: true });\n\t\t\t}\n\n\t\t\t// Move the file\n\t\t\tconst fileName = file.split(\"/\").pop() || file.split(\"\\\\\").pop();\n\t\t\tconst newPath = join(correctDir, fileName!);\n\n\t\t\tif (existsSync(newPath)) continue; // Skip if target exists\n\n\t\t\trenameSync(file, newPath);\n\t\t} catch {\n\t\t\t// Skip files that can't be migrated\n\t\t}\n\t}\n}\n\n/**\n * Migrate commands/ to prompts/ if needed.\n * Works for both regular directories and symlinks.\n */\nfunction migrateCommandsToPrompts(baseDir: string, label: string): boolean {\n\tconst commandsDir = join(baseDir, \"commands\");\n\tconst promptsDir = join(baseDir, \"prompts\");\n\n\tif (existsSync(commandsDir) && !existsSync(promptsDir)) {\n\t\ttry {\n\t\t\trenameSync(commandsDir, promptsDir);\n\t\t\tconsole.log(chalk.green(`Migrated ${label} commands/ → prompts/`));\n\t\t\treturn true;\n\t\t} catch (err) {\n\t\t\tconsole.log(\n\t\t\t\tchalk.yellow(\n\t\t\t\t\t`Warning: Could not migrate ${label} commands/ to prompts/: ${err instanceof Error ? err.message : err}`,\n\t\t\t\t),\n\t\t\t);\n\t\t}\n\t}\n\treturn false;\n}\n\n/**\n * Move fd/rg binaries from tools/ to bin/ if they exist.\n */\nfunction migrateToolsToBin(): void {\n\tconst agentDir = getAgentDir();\n\tconst toolsDir = join(agentDir, \"tools\");\n\tconst binDir = getBinDir();\n\n\tif (!existsSync(toolsDir)) return;\n\n\tconst binaries = [\"fd\", \"rg\", \"fd.exe\", \"rg.exe\"];\n\tlet movedAny = false;\n\n\tfor (const bin of binaries) {\n\t\tconst oldPath = join(toolsDir, bin);\n\t\tconst newPath = join(binDir, bin);\n\n\t\tif (existsSync(oldPath)) {\n\t\t\tif (!existsSync(binDir)) {\n\t\t\t\tmkdirSync(binDir, { recursive: true });\n\t\t\t}\n\t\t\tif (!existsSync(newPath)) {\n\t\t\t\ttry {\n\t\t\t\t\trenameSync(oldPath, newPath);\n\t\t\t\t\tmovedAny = true;\n\t\t\t\t} catch {\n\t\t\t\t\t// Ignore errors\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Target exists, just delete the old one\n\t\t\t\ttry {\n\t\t\t\t\trmSync?.(oldPath, { force: true });\n\t\t\t\t} catch {\n\t\t\t\t\t// Ignore\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif (movedAny) {\n\t\tconsole.log(chalk.green(`Migrated managed binaries tools/ → bin/`));\n\t}\n}\n\n/**\n * Check for deprecated hooks/ and tools/ directories.\n * Note: tools/ may contain fd/rg binaries extracted by iosm, so only warn if it has other files.\n */\nfunction checkDeprecatedExtensionDirs(baseDir: string, label: string): string[] {\n\tconst hooksDir = join(baseDir, \"hooks\");\n\tconst toolsDir = join(baseDir, \"tools\");\n\tconst warnings: string[] = [];\n\n\tif (existsSync(hooksDir)) {\n\t\twarnings.push(`${label} hooks/ directory found. Hooks have been renamed to extensions.`);\n\t}\n\n\tif (existsSync(toolsDir)) {\n\t\t// Check if tools/ contains anything other than fd/rg (which are auto-extracted binaries)\n\t\ttry {\n\t\t\tconst entries = readdirSync(toolsDir);\n\t\t\tconst customTools = entries.filter((e) => {\n\t\t\t\tconst lower = e.toLowerCase();\n\t\t\t\treturn (\n\t\t\t\t\tlower !== \"fd\" && lower !== \"rg\" && lower !== \"fd.exe\" && lower !== \"rg.exe\" && !e.startsWith(\".\") // Ignore .DS_Store and other hidden files\n\t\t\t\t);\n\t\t\t});\n\t\t\tif (customTools.length > 0) {\n\t\t\t\twarnings.push(\n\t\t\t\t\t`${label} tools/ directory contains custom tools. Custom tools have been merged into extensions.`,\n\t\t\t\t);\n\t\t\t}\n\t\t} catch {\n\t\t\t// Ignore read errors\n\t\t}\n\t}\n\n\treturn warnings;\n}\n\n/**\n * Run extension system migrations (commands→prompts) and collect warnings about deprecated directories.\n */\nfunction migrateExtensionSystem(cwd: string): string[] {\n\tconst agentDir = getAgentDir();\n\tconst projectDir = join(cwd, CONFIG_DIR_NAME);\n\n\t// Migrate commands/ to prompts/\n\tmigrateCommandsToPrompts(agentDir, \"Global\");\n\tmigrateCommandsToPrompts(projectDir, \"Project\");\n\n\t// Check for deprecated directories\n\tconst warnings = [\n\t\t...checkDeprecatedExtensionDirs(agentDir, \"Global\"),\n\t\t...checkDeprecatedExtensionDirs(projectDir, \"Project\"),\n\t];\n\n\treturn warnings;\n}\n\n/**\n * Print deprecation warnings and wait for keypress.\n */\nexport async function showDeprecationWarnings(warnings: string[]): Promise<void> {\n\tif (warnings.length === 0) return;\n\n\tfor (const warning of warnings) {\n\t\tconsole.log(chalk.yellow(`Warning: ${warning}`));\n\t}\n\tconsole.log(chalk.yellow(`\\nMove your extensions to the extensions/ directory.`));\n\tconsole.log(chalk.yellow(`Migration guide: ${MIGRATION_GUIDE_URL}`));\n\tconsole.log(chalk.yellow(`Documentation: ${EXTENSIONS_DOC_URL}`));\n\tconsole.log(chalk.dim(`\\nPress any key to continue...`));\n\n\tawait new Promise<void>((resolve) => {\n\t\tprocess.stdin.setRawMode?.(true);\n\t\tprocess.stdin.resume();\n\t\tprocess.stdin.once(\"data\", () => {\n\t\t\tprocess.stdin.setRawMode?.(false);\n\t\t\tprocess.stdin.pause();\n\t\t\tresolve();\n\t\t});\n\t});\n\tconsole.log();\n}\n\n/**\n * Run all migrations. Called once on startup.\n *\n * @returns Object with migration results and deprecation warnings\n */\nexport function runMigrations(cwd: string = process.cwd()): {\n\tmigratedAuthProviders: string[];\n\tdeprecationWarnings: string[];\n} {\n\tconst migratedAuthProviders = migrateAuthToAuthJson();\n\tmigrateSessionsFromAgentRoot();\n\tmigrateToolsToBin();\n\tconst deprecationWarnings = migrateExtensionSystem(cwd);\n\treturn { migratedAuthProviders, deprecationWarnings };\n}\n"]}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Run modes for the coding agent.
3
+ */
4
+ export { InteractiveMode, type InteractiveModeOptions } from "./interactive/interactive-mode.js";
5
+ export { type PrintModeOptions, runPrintMode } from "./print-mode.js";
6
+ export { type ModelInfo, RpcClient, type RpcClientOptions, type RpcEventListener } from "./rpc/rpc-client.js";
7
+ export { runRpcMode } from "./rpc/rpc-mode.js";
8
+ export type { RpcCommand, RpcResponse, RpcSessionState } from "./rpc/rpc-types.js";
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/modes/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,KAAK,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AACjG,OAAO,EAAE,KAAK,gBAAgB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAE,KAAK,SAAS,EAAE,SAAS,EAAE,KAAK,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC9G,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC"}