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":"metrics.js","sourceRoot":"","sources":["../../src/iosm/metrics.ts"],"names":[],"mappings":"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","sourcesContent":["import type { IosmConfig, IosmConfigModel } from \"./config.js\";\nimport type {\n\tIosmEvidenceTier,\n\tIosmGuardrailViolation,\n\tIosmHypothesisCard,\n\tIosmMetric,\n\tIosmMetricRecord,\n} from \"./types.js\";\n\ntype RawMeasurements = Record<string, unknown>;\n\nexport const IOSM_METRICS: IosmMetric[] = [\"semantic\", \"logic\", \"performance\", \"simplicity\", \"modularity\", \"flow\"];\n\nexport function createMetricRecord<T>(createValue: (metric: IosmMetric) => T): IosmMetricRecord<T> {\n\treturn {\n\t\tsemantic: createValue(\"semantic\"),\n\t\tlogic: createValue(\"logic\"),\n\t\tperformance: createValue(\"performance\"),\n\t\tsimplicity: createValue(\"simplicity\"),\n\t\tmodularity: createValue(\"modularity\"),\n\t\tflow: createValue(\"flow\"),\n\t};\n}\n\nfunction round3(value: number): number {\n\treturn Math.round(value * 1000) / 1000;\n}\n\nexport function clamp01(value: number): number {\n\treturn Math.min(1, Math.max(0, value));\n}\n\nexport function normalizeHigherIsBetter(actual: number, target: number): number {\n\tif (target <= 0) {\n\t\treturn 1;\n\t}\n\treturn clamp01(actual / target);\n}\n\nexport function normalizeLowerIsBetter(actual: number, target: number): number {\n\tif (actual <= 0) {\n\t\treturn 1;\n\t}\n\tif (target <= 0) {\n\t\treturn 0;\n\t}\n\treturn clamp01(target / actual);\n}\n\nfunction readPath(source: unknown, ...segments: string[]): unknown {\n\tlet current: unknown = source;\n\tfor (const segment of segments) {\n\t\tif (!current || typeof current !== \"object\" || Array.isArray(current)) {\n\t\t\treturn undefined;\n\t\t}\n\t\tcurrent = (current as Record<string, unknown>)[segment];\n\t}\n\treturn current;\n}\n\nfunction readNumber(source: unknown, ...segments: string[]): number | undefined {\n\tconst value = readPath(source, ...segments);\n\treturn typeof value === \"number\" && Number.isFinite(value) ? value : undefined;\n}\n\nfunction readBoolean(source: unknown, ...segments: string[]): boolean | undefined {\n\tconst value = readPath(source, ...segments);\n\treturn typeof value === \"boolean\" ? value : undefined;\n}\n\nfunction measureSemantic(rawMeasurements: RawMeasurements, config: IosmConfigModel): number | null {\n\tconst glossaryCoverage =\n\t\treadNumber(rawMeasurements, \"glossary_coverage\") ??\n\t\treadNumber(rawMeasurements, \"semantic\", \"glossary_coverage\");\n\tconst namingConsistency =\n\t\treadNumber(rawMeasurements, \"naming_consistency\") ??\n\t\treadNumber(rawMeasurements, \"semantic\", \"naming_consistency\");\n\tconst ambiguityInverse =\n\t\treadNumber(rawMeasurements, \"ambiguity_inverse\") ??\n\t\treadNumber(rawMeasurements, \"semantic\", \"ambiguity_inverse\") ??\n\t\t(() => {\n\t\t\tconst ambiguityRatio =\n\t\t\t\treadNumber(rawMeasurements, \"ambiguity_ratio\") ??\n\t\t\t\treadNumber(rawMeasurements, \"semantic\", \"ambiguity_ratio\");\n\t\t\treturn ambiguityRatio === undefined ? undefined : 1 - ambiguityRatio;\n\t\t})();\n\n\tif (glossaryCoverage === undefined || namingConsistency === undefined || ambiguityInverse === undefined) {\n\t\treturn null;\n\t}\n\n\treturn round3(\n\t\t(normalizeHigherIsBetter(glossaryCoverage, config.metric_targets.semantic.glossary_coverage_min) +\n\t\t\tnormalizeHigherIsBetter(namingConsistency, config.metric_targets.semantic.naming_consistency_min) +\n\t\t\tclamp01(ambiguityInverse)) /\n\t\t\t3,\n\t);\n}\n\nfunction measureLogic(rawMeasurements: RawMeasurements, config: IosmConfigModel): number | null {\n\tconst invariantPassRate =\n\t\treadNumber(rawMeasurements, \"invariant_pass_rate\") ??\n\t\treadNumber(rawMeasurements, \"logic\", \"invariant_pass_rate\");\n\tif (invariantPassRate !== undefined) {\n\t\treturn round3(clamp01(invariantPassRate));\n\t}\n\n\tconst passedInvariants =\n\t\treadNumber(rawMeasurements, \"passed_invariants\") ??\n\t\treadNumber(rawMeasurements, \"logic\", \"passed_invariants\");\n\tconst totalInvariants =\n\t\treadNumber(rawMeasurements, \"total_invariants\") ??\n\t\treadNumber(rawMeasurements, \"logic\", \"total_invariants\");\n\tif (passedInvariants === undefined || totalInvariants === undefined) {\n\t\treturn null;\n\t}\n\n\tconst denominator = Math.max(totalInvariants, 1);\n\treturn round3(normalizeHigherIsBetter(passedInvariants / denominator, config.metric_targets.logic.invariant_pass_rate_min));\n}\n\nfunction measurePerformance(rawMeasurements: RawMeasurements, config: IosmConfigModel): number | null {\n\tconst latencyScore =\n\t\treadNumber(rawMeasurements, \"latency_score\") ??\n\t\treadNumber(rawMeasurements, \"performance\", \"latency_score\") ??\n\t\t(() => {\n\t\t\tconst p50 = readNumber(rawMeasurements, \"latency_ms\", \"p50\") ?? readNumber(rawMeasurements, \"performance\", \"latency_ms\", \"p50\");\n\t\t\tconst p95 = readNumber(rawMeasurements, \"latency_ms\", \"p95\") ?? readNumber(rawMeasurements, \"performance\", \"latency_ms\", \"p95\");\n\t\t\tconst p99 = readNumber(rawMeasurements, \"latency_ms\", \"p99\") ?? readNumber(rawMeasurements, \"performance\", \"latency_ms\", \"p99\");\n\t\t\tif (p50 === undefined || p95 === undefined || p99 === undefined) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tconst targets = config.metric_targets.performance.latency_ms;\n\t\t\treturn (\n\t\t\t\tnormalizeLowerIsBetter(p50, targets.p50_max) +\n\t\t\t\tnormalizeLowerIsBetter(p95, targets.p95_max) +\n\t\t\t\tnormalizeLowerIsBetter(p99, targets.p99_max)\n\t\t\t) / 3;\n\t\t})();\n\tconst reliabilityScore =\n\t\treadNumber(rawMeasurements, \"reliability_score\") ??\n\t\treadNumber(rawMeasurements, \"performance\", \"reliability_score\") ??\n\t\t(() => {\n\t\t\tconst respected =\n\t\t\t\treadBoolean(rawMeasurements, \"error_budget_respected\") ??\n\t\t\t\treadBoolean(rawMeasurements, \"performance\", \"error_budget_respected\");\n\t\t\treturn respected === undefined ? undefined : respected ? 1 : 0;\n\t\t})();\n\tconst resilienceScore =\n\t\treadNumber(rawMeasurements, \"resilience_score\") ??\n\t\treadNumber(rawMeasurements, \"performance\", \"resilience_score\") ??\n\t\treadNumber(rawMeasurements, \"chaos_pass_rate\") ??\n\t\treadNumber(rawMeasurements, \"performance\", \"chaos_pass_rate\");\n\n\tif (latencyScore === undefined || reliabilityScore === undefined || resilienceScore === undefined) {\n\t\treturn null;\n\t}\n\n\treturn round3(\n\t\t0.5 * clamp01(latencyScore) + 0.3 * clamp01(reliabilityScore) + 0.2 * clamp01(resilienceScore),\n\t);\n}\n\nfunction measureSimplicity(rawMeasurements: RawMeasurements, config: IosmConfigModel): number | null {\n\tconst apiSurfaceScore =\n\t\treadNumber(rawMeasurements, \"api_surface_score\") ??\n\t\treadNumber(rawMeasurements, \"simplicity\", \"api_surface_score\") ??\n\t\t(() => {\n\t\t\tconst reduction =\n\t\t\t\treadNumber(rawMeasurements, \"api_surface_reduction\") ??\n\t\t\t\treadNumber(rawMeasurements, \"simplicity\", \"api_surface_reduction\");\n\t\t\treturn reduction === undefined\n\t\t\t\t? undefined\n\t\t\t\t: normalizeHigherIsBetter(reduction, config.quality_gates.gate_S.api_surface_reduction_min);\n\t\t})();\n\tconst dependencyHygiene =\n\t\treadNumber(rawMeasurements, \"dependency_hygiene\") ??\n\t\treadNumber(rawMeasurements, \"simplicity\", \"dependency_hygiene\") ??\n\t\t(() => {\n\t\t\tconst unused =\n\t\t\t\treadNumber(rawMeasurements, \"unused_or_shadow_dependencies\") ??\n\t\t\t\treadNumber(rawMeasurements, \"simplicity\", \"unused_or_shadow_dependencies\");\n\t\t\tconst total =\n\t\t\t\treadNumber(rawMeasurements, \"total_dependencies\") ??\n\t\t\t\treadNumber(rawMeasurements, \"simplicity\", \"total_dependencies\");\n\t\t\tif (unused === undefined || total === undefined || total <= 0) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\treturn clamp01(1 - unused / total);\n\t\t})();\n\tconst onboardingScore =\n\t\treadNumber(rawMeasurements, \"onboarding_score\") ??\n\t\treadNumber(rawMeasurements, \"simplicity\", \"onboarding_score\") ??\n\t\t(() => {\n\t\t\tconst onboardingTime =\n\t\t\t\treadNumber(rawMeasurements, \"onboarding_time_minutes\") ??\n\t\t\t\treadNumber(rawMeasurements, \"simplicity\", \"onboarding_time_minutes\");\n\t\t\treturn onboardingTime === undefined\n\t\t\t\t? undefined\n\t\t\t\t: normalizeLowerIsBetter(onboardingTime, config.metric_targets.simplicity.onboarding_time_minutes_max);\n\t\t})();\n\n\tif (apiSurfaceScore === undefined || dependencyHygiene === undefined || onboardingScore === undefined) {\n\t\treturn null;\n\t}\n\n\treturn round3(\n\t\t0.4 * clamp01(apiSurfaceScore) + 0.3 * clamp01(dependencyHygiene) + 0.3 * clamp01(onboardingScore),\n\t);\n}\n\nfunction measureModularity(rawMeasurements: RawMeasurements, config: IosmConfigModel): number | null {\n\tconst couplingScore =\n\t\treadNumber(rawMeasurements, \"coupling_score\") ??\n\t\treadNumber(rawMeasurements, \"modularity\", \"coupling_score\") ??\n\t\t(() => {\n\t\t\tconst coupling =\n\t\t\t\treadNumber(rawMeasurements, \"coupling\") ?? readNumber(rawMeasurements, \"modularity\", \"coupling\");\n\t\t\treturn coupling === undefined ? undefined : normalizeLowerIsBetter(coupling, config.quality_gates.gate_M.coupling_max);\n\t\t})();\n\tconst cohesionScore =\n\t\treadNumber(rawMeasurements, \"cohesion_score\") ??\n\t\treadNumber(rawMeasurements, \"modularity\", \"cohesion_score\") ??\n\t\t(() => {\n\t\t\tconst cohesion =\n\t\t\t\treadNumber(rawMeasurements, \"cohesion\") ?? readNumber(rawMeasurements, \"modularity\", \"cohesion\");\n\t\t\treturn cohesion === undefined ? undefined : normalizeHigherIsBetter(cohesion, config.quality_gates.gate_M.cohesion_min);\n\t\t})();\n\tconst contractScore =\n\t\treadNumber(rawMeasurements, \"contract_score\") ??\n\t\treadNumber(rawMeasurements, \"modularity\", \"contract_score\") ??\n\t\t(() => {\n\t\t\tconst contractsPass =\n\t\t\t\treadBoolean(rawMeasurements, \"contracts_pass\") ??\n\t\t\t\treadBoolean(rawMeasurements, \"modularity\", \"contracts_pass\");\n\t\t\treturn contractsPass === undefined ? undefined : contractsPass ? 1 : 0;\n\t\t})();\n\tconst changeSurfaceScore =\n\t\treadNumber(rawMeasurements, \"change_surface_score\") ??\n\t\treadNumber(rawMeasurements, \"modularity\", \"change_surface_score\") ??\n\t\t(() => {\n\t\t\tconst changeSurface =\n\t\t\t\treadNumber(rawMeasurements, \"change_surface\") ??\n\t\t\t\treadNumber(rawMeasurements, \"modularity\", \"change_surface\");\n\t\t\treturn changeSurface === undefined\n\t\t\t\t? undefined\n\t\t\t\t: normalizeLowerIsBetter(changeSurface, config.metric_targets.modularity.change_surface_max);\n\t\t})();\n\n\tif (couplingScore === undefined || cohesionScore === undefined || contractScore === undefined || changeSurfaceScore === undefined) {\n\t\treturn null;\n\t}\n\n\treturn round3(\n\t\t0.35 * clamp01(couplingScore) +\n\t\t\t0.25 * clamp01(cohesionScore) +\n\t\t\t0.2 * clamp01(contractScore) +\n\t\t\t0.2 * clamp01(changeSurfaceScore),\n\t);\n}\n\nfunction measureFlow(rawMeasurements: RawMeasurements, config: IosmConfigModel): number | null {\n\tconst leadTimeScore =\n\t\treadNumber(rawMeasurements, \"lead_time_score\") ??\n\t\treadNumber(rawMeasurements, \"flow\", \"lead_time_score\") ??\n\t\t(() => {\n\t\t\tconst leadTime =\n\t\t\t\treadNumber(rawMeasurements, \"lead_time_hours\") ??\n\t\t\t\treadNumber(rawMeasurements, \"flow\", \"lead_time_hours\");\n\t\t\treturn leadTime === undefined ? undefined : normalizeLowerIsBetter(leadTime, config.metric_targets.flow.lead_time_hours_max);\n\t\t})();\n\tconst deployFrequencyScore =\n\t\treadNumber(rawMeasurements, \"deploy_frequency_score\") ??\n\t\treadNumber(rawMeasurements, \"flow\", \"deploy_frequency_score\") ??\n\t\t(() => {\n\t\t\tconst deployFrequency =\n\t\t\t\treadNumber(rawMeasurements, \"deploy_frequency_per_week\") ??\n\t\t\t\treadNumber(rawMeasurements, \"flow\", \"deploy_frequency_per_week\");\n\t\t\treturn deployFrequency === undefined\n\t\t\t\t? undefined\n\t\t\t\t: normalizeHigherIsBetter(deployFrequency, config.metric_targets.flow.deploy_frequency_per_week_min);\n\t\t})();\n\tconst changeFailureScore =\n\t\treadNumber(rawMeasurements, \"change_failure_score\") ??\n\t\treadNumber(rawMeasurements, \"flow\", \"change_failure_score\") ??\n\t\t(() => {\n\t\t\tconst changeFailureRate =\n\t\t\t\treadNumber(rawMeasurements, \"change_failure_rate\") ??\n\t\t\t\treadNumber(rawMeasurements, \"flow\", \"change_failure_rate\");\n\t\t\treturn changeFailureRate === undefined\n\t\t\t\t? undefined\n\t\t\t\t: normalizeLowerIsBetter(changeFailureRate, config.metric_targets.flow.change_failure_rate_max);\n\t\t})();\n\tconst reviewLatencyScore =\n\t\treadNumber(rawMeasurements, \"review_latency_score\") ??\n\t\treadNumber(rawMeasurements, \"flow\", \"review_latency_score\") ??\n\t\t(() => {\n\t\t\tconst reviewLatency =\n\t\t\t\treadNumber(rawMeasurements, \"review_latency_hours\") ??\n\t\t\t\treadNumber(rawMeasurements, \"flow\", \"review_latency_hours\");\n\t\t\treturn reviewLatency === undefined\n\t\t\t\t? undefined\n\t\t\t\t: normalizeLowerIsBetter(reviewLatency, config.metric_targets.flow.review_latency_hours_max);\n\t\t})();\n\n\tif (\n\t\tleadTimeScore === undefined ||\n\t\tdeployFrequencyScore === undefined ||\n\t\tchangeFailureScore === undefined ||\n\t\treviewLatencyScore === undefined\n\t) {\n\t\treturn null;\n\t}\n\n\treturn round3(\n\t\t0.35 * clamp01(leadTimeScore) +\n\t\t\t0.25 * clamp01(deployFrequencyScore) +\n\t\t\t0.25 * clamp01(changeFailureScore) +\n\t\t\t0.15 * clamp01(reviewLatencyScore),\n\t);\n}\n\nexport function calculateIosmMetricsFromRawMeasurements(\n\trawMeasurements: RawMeasurements,\n\tconfig: IosmConfig,\n): IosmMetricRecord<number | null> {\n\tconst model = config.iosm;\n\treturn {\n\t\tsemantic: measureSemantic(rawMeasurements, model),\n\t\tlogic: measureLogic(rawMeasurements, model),\n\t\tperformance: measurePerformance(rawMeasurements, model),\n\t\tsimplicity: measureSimplicity(rawMeasurements, model),\n\t\tmodularity: measureModularity(rawMeasurements, model),\n\t\tflow: measureFlow(rawMeasurements, model),\n\t};\n}\n\nexport function hasCompleteNumericMetricRecord(\n\trecord: IosmMetricRecord<number | null>,\n): record is IosmMetricRecord<number> {\n\treturn IOSM_METRICS.every((metric) => record[metric] !== null);\n}\n\nexport function hasCompleteTierMetricRecord(\n\trecord: IosmMetricRecord<IosmEvidenceTier | null>,\n): record is IosmMetricRecord<IosmEvidenceTier> {\n\treturn IOSM_METRICS.every((metric) => record[metric] !== null);\n}\n\nexport function calculateIosmIndex(\n\tmetrics: IosmMetricRecord<number | null>,\n\tweights: IosmMetricRecord<number>,\n): number | null {\n\tif (!hasCompleteNumericMetricRecord(metrics)) {\n\t\treturn null;\n\t}\n\n\treturn round3(\n\t\tweights.semantic * metrics.semantic +\n\t\t\tweights.logic * metrics.logic +\n\t\t\tweights.performance * metrics.performance +\n\t\t\tweights.simplicity * metrics.simplicity +\n\t\t\tweights.modularity * metrics.modularity +\n\t\t\tweights.flow * metrics.flow,\n\t);\n}\n\nexport function calculateDecisionConfidence(\n\tmetricConfidences: IosmMetricRecord<number | null>,\n\tweights: IosmMetricRecord<number>,\n): number | null {\n\tif (!hasCompleteNumericMetricRecord(metricConfidences)) {\n\t\treturn null;\n\t}\n\n\treturn round3(\n\t\tweights.semantic * metricConfidences.semantic +\n\t\t\tweights.logic * metricConfidences.logic +\n\t\t\tweights.performance * metricConfidences.performance +\n\t\t\tweights.simplicity * metricConfidences.simplicity +\n\t\t\tweights.modularity * metricConfidences.modularity +\n\t\t\tweights.flow * metricConfidences.flow,\n\t);\n}\n\nexport function mergeMetricValues(\n\tcurrent: IosmMetricRecord<number | null>,\n\tcomputed: IosmMetricRecord<number | null>,\n): IosmMetricRecord<number | null> {\n\treturn createMetricRecord((metric) => computed[metric] ?? current[metric]);\n}\n\nexport function buildCycleBudget(\n\tglobalBudget: IosmMetricRecord<number>,\n\thypotheses: IosmHypothesisCard[],\n): IosmMetricRecord<number> {\n\treturn createMetricRecord((metric) => {\n\t\tlet effectiveBudget = globalBudget[metric];\n\t\tfor (const hypothesis of hypotheses) {\n\t\t\tconst candidate = hypothesis.allowed_negative_delta[metric];\n\t\t\teffectiveBudget = Math.min(effectiveBudget, candidate);\n\t\t}\n\t\treturn round3(effectiveBudget);\n\t});\n}\n\nexport function calculateMetricDeltas(\n\tbeforeMetrics: IosmMetricRecord<number | null>,\n\tafterMetrics: IosmMetricRecord<number | null>,\n): IosmMetricRecord<number | null> {\n\treturn createMetricRecord((metric) => {\n\t\tconst beforeValue = beforeMetrics[metric];\n\t\tconst afterValue = afterMetrics[metric];\n\t\tif (beforeValue === null || afterValue === null) {\n\t\t\treturn null;\n\t\t}\n\t\treturn round3(afterValue - beforeValue);\n\t});\n}\n\nexport function assessDeclineCoverage(\n\tbeforeMetrics: IosmMetricRecord<number | null>,\n\tafterMetrics: IosmMetricRecord<number | null>,\n\thypotheses: IosmHypothesisCard[],\n\thasActiveBlockingWaiver: boolean,\n): IosmMetricRecord<boolean> {\n\treturn createMetricRecord((metric) => {\n\t\tconst beforeValue = beforeMetrics[metric];\n\t\tconst afterValue = afterMetrics[metric];\n\t\tif (beforeValue === null || afterValue === null) {\n\t\t\treturn false;\n\t\t}\n\t\tconst delta = afterValue - beforeValue;\n\t\tif (delta >= 0) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn (\n\t\t\thasActiveBlockingWaiver ||\n\t\t\thypotheses.some((hypothesis) => hypothesis.allowed_negative_delta[metric] > 0)\n\t\t);\n\t});\n}\n\nexport function validateGuardrails(\n\tbeforeMetrics: IosmMetricRecord<number | null>,\n\tafterMetrics: IosmMetricRecord<number | null>,\n\tbudgets: IosmMetricRecord<number>,\n): { pass: boolean | null; violations: IosmGuardrailViolation[] } {\n\tconst violations: IosmGuardrailViolation[] = [];\n\tfor (const metric of IOSM_METRICS) {\n\t\tconst beforeValue = beforeMetrics[metric];\n\t\tconst afterValue = afterMetrics[metric];\n\t\tif (beforeValue === null || afterValue === null) {\n\t\t\treturn { pass: null, violations: [] };\n\t\t}\n\n\t\tconst negativeDelta = round3(beforeValue - afterValue);\n\t\tif (negativeDelta > budgets[metric]) {\n\t\t\tviolations.push({\n\t\t\t\tmetric,\n\t\t\t\tnegative_delta: negativeDelta,\n\t\t\t\tbudget: budgets[metric],\n\t\t\t});\n\t\t}\n\t}\n\n\treturn {\n\t\tpass: violations.length === 0,\n\t\tviolations,\n\t};\n}\n"]}
@@ -0,0 +1,24 @@
1
+ import type { IosmPhase } from "./types.js";
2
+ /**
3
+ * Validate a cycle ID for use in path construction.
4
+ * Throws if the ID contains path-traversal characters or is otherwise unsafe.
5
+ */
6
+ export declare function assertValidCycleId(cycleId: string): void;
7
+ export declare function getIosmWorkspaceDir(cwd?: string): string;
8
+ export declare function getIosmConfigPath(cwd?: string): string;
9
+ export declare function getIosmGuidePath(cwd?: string): string;
10
+ export declare function getIosmBaselinesDir(cwd?: string): string;
11
+ export declare function getIosmCyclesDir(cwd?: string): string;
12
+ export declare function getIosmCycleDir(cycleId: string, cwd?: string): string;
13
+ export declare function getIosmBaselineReportPath(cycleId: string, cwd?: string): string;
14
+ export declare function getIosmHypothesesPath(cycleId: string, cwd?: string): string;
15
+ export declare function getIosmCycleReportPath(cycleId: string, cwd?: string): string;
16
+ export declare function getIosmPhaseReportsDir(cycleId: string, cwd?: string): string;
17
+ export declare function getIosmPhaseReportPath(cycleId: string, phase: IosmPhase, cwd?: string): string;
18
+ export declare function getIosmMetricsHistoryPath(cwd?: string): string;
19
+ export declare function getIosmWaiverRegisterPath(cwd?: string): string;
20
+ export declare function getIosmInvariantCatalogPath(cwd?: string): string;
21
+ export declare function getIosmContractCatalogPath(cwd?: string): string;
22
+ export declare function getIosmDecisionLogPath(cwd?: string): string;
23
+ export declare function getIosmPatternLibraryPath(cwd?: string): string;
24
+ //# sourceMappingURL=paths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/iosm/paths.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAK5C;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAMxD;AAYD,wBAAgB,mBAAmB,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,CAEvE;AAED,wBAAgB,iBAAiB,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,CAErE;AAED,wBAAgB,gBAAgB,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,CAEpE;AAED,wBAAgB,mBAAmB,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,CAEvE;AAED,wBAAgB,gBAAgB,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,CAEpE;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,GAAE,MAAsB,GAAG,MAAM,CAMpF;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,GAAE,MAAsB,GAAG,MAAM,CAE9F;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,GAAE,MAAsB,GAAG,MAAM,CAE1F;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,GAAE,MAAsB,GAAG,MAAM,CAE3F;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,GAAE,MAAsB,GAAG,MAAM,CAE3F;AAED,wBAAgB,sBAAsB,CACrC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,SAAS,EAChB,GAAG,GAAE,MAAsB,GACzB,MAAM,CAER;AAED,wBAAgB,yBAAyB,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,CAE7E;AAED,wBAAgB,yBAAyB,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,CAE7E;AAED,wBAAgB,2BAA2B,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,CAE/E;AAED,wBAAgB,0BAA0B,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,CAE9E;AAED,wBAAgB,sBAAsB,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,CAE1E;AAED,wBAAgB,yBAAyB,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,CAE7E"}
@@ -0,0 +1,77 @@
1
+ import { join, resolve } from "node:path";
2
+ /** Pattern for valid cycle IDs — prevents path traversal */
3
+ const CYCLE_ID_PATTERN = /^[a-zA-Z0-9_-]+$/;
4
+ /**
5
+ * Validate a cycle ID for use in path construction.
6
+ * Throws if the ID contains path-traversal characters or is otherwise unsafe.
7
+ */
8
+ export function assertValidCycleId(cycleId) {
9
+ if (!cycleId || !CYCLE_ID_PATTERN.test(cycleId)) {
10
+ throw new Error(`Invalid cycle ID "${cycleId}". Cycle IDs must contain only alphanumeric characters, hyphens, and underscores.`);
11
+ }
12
+ }
13
+ /**
14
+ * Validate that a resolved path stays within the expected base directory.
15
+ * Secondary guard against path traversal via symlinks or unusual path inputs.
16
+ */
17
+ function assertWithinDir(resolved, baseDir) {
18
+ if (!resolved.startsWith(baseDir + "/") && resolved !== baseDir) {
19
+ throw new Error(`Path traversal detected: "${resolved}" is outside "${baseDir}".`);
20
+ }
21
+ }
22
+ export function getIosmWorkspaceDir(cwd = process.cwd()) {
23
+ return join(cwd, ".iosm");
24
+ }
25
+ export function getIosmConfigPath(cwd = process.cwd()) {
26
+ return join(cwd, "iosm.yaml");
27
+ }
28
+ export function getIosmGuidePath(cwd = process.cwd()) {
29
+ return join(cwd, "IOSM.md");
30
+ }
31
+ export function getIosmBaselinesDir(cwd = process.cwd()) {
32
+ return join(getIosmWorkspaceDir(cwd), "baselines");
33
+ }
34
+ export function getIosmCyclesDir(cwd = process.cwd()) {
35
+ return join(getIosmWorkspaceDir(cwd), "cycles");
36
+ }
37
+ export function getIosmCycleDir(cycleId, cwd = process.cwd()) {
38
+ assertValidCycleId(cycleId);
39
+ const cyclesDir = getIosmCyclesDir(cwd);
40
+ const resolved = resolve(cyclesDir, cycleId);
41
+ assertWithinDir(resolved, cyclesDir);
42
+ return resolved;
43
+ }
44
+ export function getIosmBaselineReportPath(cycleId, cwd = process.cwd()) {
45
+ return join(getIosmCycleDir(cycleId, cwd), "baseline-report.json");
46
+ }
47
+ export function getIosmHypothesesPath(cycleId, cwd = process.cwd()) {
48
+ return join(getIosmCycleDir(cycleId, cwd), "hypotheses.json");
49
+ }
50
+ export function getIosmCycleReportPath(cycleId, cwd = process.cwd()) {
51
+ return join(getIosmCycleDir(cycleId, cwd), "cycle-report.json");
52
+ }
53
+ export function getIosmPhaseReportsDir(cycleId, cwd = process.cwd()) {
54
+ return join(getIosmCycleDir(cycleId, cwd), "phase-reports");
55
+ }
56
+ export function getIosmPhaseReportPath(cycleId, phase, cwd = process.cwd()) {
57
+ return join(getIosmPhaseReportsDir(cycleId, cwd), `${phase}.json`);
58
+ }
59
+ export function getIosmMetricsHistoryPath(cwd = process.cwd()) {
60
+ return join(getIosmWorkspaceDir(cwd), "metrics-history.jsonl");
61
+ }
62
+ export function getIosmWaiverRegisterPath(cwd = process.cwd()) {
63
+ return join(getIosmWorkspaceDir(cwd), "waivers.yaml");
64
+ }
65
+ export function getIosmInvariantCatalogPath(cwd = process.cwd()) {
66
+ return join(getIosmWorkspaceDir(cwd), "invariants.yaml");
67
+ }
68
+ export function getIosmContractCatalogPath(cwd = process.cwd()) {
69
+ return join(getIosmWorkspaceDir(cwd), "contracts.yaml");
70
+ }
71
+ export function getIosmDecisionLogPath(cwd = process.cwd()) {
72
+ return join(getIosmWorkspaceDir(cwd), "decision-log.md");
73
+ }
74
+ export function getIosmPatternLibraryPath(cwd = process.cwd()) {
75
+ return join(getIosmWorkspaceDir(cwd), "pattern-library.md");
76
+ }
77
+ //# sourceMappingURL=paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/iosm/paths.ts"],"names":[],"mappings":"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","sourcesContent":["import { join, resolve } from \"node:path\";\nimport type { IosmPhase } from \"./types.js\";\n\n/** Pattern for valid cycle IDs — prevents path traversal */\nconst CYCLE_ID_PATTERN = /^[a-zA-Z0-9_-]+$/;\n\n/**\n * Validate a cycle ID for use in path construction.\n * Throws if the ID contains path-traversal characters or is otherwise unsafe.\n */\nexport function assertValidCycleId(cycleId: string): void {\n\tif (!cycleId || !CYCLE_ID_PATTERN.test(cycleId)) {\n\t\tthrow new Error(\n\t\t\t`Invalid cycle ID \"${cycleId}\". Cycle IDs must contain only alphanumeric characters, hyphens, and underscores.`,\n\t\t);\n\t}\n}\n\n/**\n * Validate that a resolved path stays within the expected base directory.\n * Secondary guard against path traversal via symlinks or unusual path inputs.\n */\nfunction assertWithinDir(resolved: string, baseDir: string): void {\n\tif (!resolved.startsWith(baseDir + \"/\") && resolved !== baseDir) {\n\t\tthrow new Error(`Path traversal detected: \"${resolved}\" is outside \"${baseDir}\".`);\n\t}\n}\n\nexport function getIosmWorkspaceDir(cwd: string = process.cwd()): string {\n\treturn join(cwd, \".iosm\");\n}\n\nexport function getIosmConfigPath(cwd: string = process.cwd()): string {\n\treturn join(cwd, \"iosm.yaml\");\n}\n\nexport function getIosmGuidePath(cwd: string = process.cwd()): string {\n\treturn join(cwd, \"IOSM.md\");\n}\n\nexport function getIosmBaselinesDir(cwd: string = process.cwd()): string {\n\treturn join(getIosmWorkspaceDir(cwd), \"baselines\");\n}\n\nexport function getIosmCyclesDir(cwd: string = process.cwd()): string {\n\treturn join(getIosmWorkspaceDir(cwd), \"cycles\");\n}\n\nexport function getIosmCycleDir(cycleId: string, cwd: string = process.cwd()): string {\n\tassertValidCycleId(cycleId);\n\tconst cyclesDir = getIosmCyclesDir(cwd);\n\tconst resolved = resolve(cyclesDir, cycleId);\n\tassertWithinDir(resolved, cyclesDir);\n\treturn resolved;\n}\n\nexport function getIosmBaselineReportPath(cycleId: string, cwd: string = process.cwd()): string {\n\treturn join(getIosmCycleDir(cycleId, cwd), \"baseline-report.json\");\n}\n\nexport function getIosmHypothesesPath(cycleId: string, cwd: string = process.cwd()): string {\n\treturn join(getIosmCycleDir(cycleId, cwd), \"hypotheses.json\");\n}\n\nexport function getIosmCycleReportPath(cycleId: string, cwd: string = process.cwd()): string {\n\treturn join(getIosmCycleDir(cycleId, cwd), \"cycle-report.json\");\n}\n\nexport function getIosmPhaseReportsDir(cycleId: string, cwd: string = process.cwd()): string {\n\treturn join(getIosmCycleDir(cycleId, cwd), \"phase-reports\");\n}\n\nexport function getIosmPhaseReportPath(\n\tcycleId: string,\n\tphase: IosmPhase,\n\tcwd: string = process.cwd(),\n): string {\n\treturn join(getIosmPhaseReportsDir(cycleId, cwd), `${phase}.json`);\n}\n\nexport function getIosmMetricsHistoryPath(cwd: string = process.cwd()): string {\n\treturn join(getIosmWorkspaceDir(cwd), \"metrics-history.jsonl\");\n}\n\nexport function getIosmWaiverRegisterPath(cwd: string = process.cwd()): string {\n\treturn join(getIosmWorkspaceDir(cwd), \"waivers.yaml\");\n}\n\nexport function getIosmInvariantCatalogPath(cwd: string = process.cwd()): string {\n\treturn join(getIosmWorkspaceDir(cwd), \"invariants.yaml\");\n}\n\nexport function getIosmContractCatalogPath(cwd: string = process.cwd()): string {\n\treturn join(getIosmWorkspaceDir(cwd), \"contracts.yaml\");\n}\n\nexport function getIosmDecisionLogPath(cwd: string = process.cwd()): string {\n\treturn join(getIosmWorkspaceDir(cwd), \"decision-log.md\");\n}\n\nexport function getIosmPatternLibraryPath(cwd: string = process.cwd()): string {\n\treturn join(getIosmWorkspaceDir(cwd), \"pattern-library.md\");\n}\n"]}
@@ -0,0 +1,20 @@
1
+ export interface IosmRuntimeDirectiveInput {
2
+ userGoal: string;
3
+ cwd: string;
4
+ rootDir?: string;
5
+ playbookPath?: string;
6
+ shouldOrchestrate: boolean;
7
+ autoInitialized: boolean;
8
+ autoPlannedCycleId?: string;
9
+ activeCycleId?: string;
10
+ cycleStatusSummary?: string;
11
+ metricSnapshot?: string;
12
+ iosmIndex?: number | null;
13
+ decisionConfidence?: number | null;
14
+ runtimeError?: string;
15
+ }
16
+ export declare function isLikelyIosmOperationalPrompt(text: string): boolean;
17
+ export declare function normalizeIosmGoalFromPrompt(text: string): string;
18
+ export declare function buildIosmRuntimeDirective(input: IosmRuntimeDirectiveInput): string;
19
+ export declare function prepareIosmRuntimeContext(cwd: string, userInput: string): Promise<IosmRuntimeDirectiveInput>;
20
+ //# sourceMappingURL=runtime-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-context.d.ts","sourceRoot":"","sources":["../../src/iosm/runtime-context.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,yBAAyB;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,eAAe,EAAE,OAAO,CAAC;IACzB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAmCnE;AAgCD,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMhE;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,yBAAyB,GAAG,MAAM,CAmDlF;AAED,wBAAsB,yBAAyB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAuElH"}
@@ -0,0 +1,170 @@
1
+ import { existsSync } from "node:fs";
2
+ import { dirname, join, resolve } from "node:path";
3
+ import { inspectIosmCycle, listIosmCycles, planIosmCycle, readIosmCycleReport } from "./cycle.js";
4
+ import { findIosmRootDir } from "./config.js";
5
+ import { initIosmWorkspace } from "./init.js";
6
+ import { getIosmGuidePath } from "./paths.js";
7
+ export function isLikelyIosmOperationalPrompt(text) {
8
+ const normalized = text
9
+ .trim()
10
+ .toLowerCase()
11
+ .replace(/[!?.]+$/g, "");
12
+ if (!normalized) {
13
+ return false;
14
+ }
15
+ const lightweightMessages = new Set([
16
+ "hi",
17
+ "hello",
18
+ "hey",
19
+ "thanks",
20
+ "thank you",
21
+ "ok",
22
+ "okay",
23
+ "ага",
24
+ "да",
25
+ "нет",
26
+ "ок",
27
+ "понял",
28
+ "привет",
29
+ "здравствуйте",
30
+ "спасибо",
31
+ ]);
32
+ if (lightweightMessages.has(normalized)) {
33
+ return false;
34
+ }
35
+ const words = normalized.split(/\s+/).filter(Boolean);
36
+ if (words.length <= 1 && normalized.length < 12) {
37
+ return false;
38
+ }
39
+ return true;
40
+ }
41
+ function isLikelyProjectWorkspace(cwd) {
42
+ const markers = [
43
+ ".git",
44
+ "package.json",
45
+ "pyproject.toml",
46
+ "go.mod",
47
+ "Cargo.toml",
48
+ "pom.xml",
49
+ "build.gradle",
50
+ "Gemfile",
51
+ "requirements.txt",
52
+ "Makefile",
53
+ ];
54
+ return markers.some((marker) => existsSync(join(cwd, marker)));
55
+ }
56
+ function resolveAutoInitTargetDir(startDir) {
57
+ let currentDir = resolve(startDir);
58
+ for (;;) {
59
+ if (isLikelyProjectWorkspace(currentDir)) {
60
+ return currentDir;
61
+ }
62
+ const parentDir = dirname(currentDir);
63
+ if (parentDir === currentDir) {
64
+ return undefined;
65
+ }
66
+ currentDir = parentDir;
67
+ }
68
+ }
69
+ export function normalizeIosmGoalFromPrompt(text) {
70
+ const compact = text.replace(/\s+/g, " ").trim();
71
+ if (compact.length <= 220) {
72
+ return compact;
73
+ }
74
+ return `${compact.slice(0, 217).trimEnd()}...`;
75
+ }
76
+ export function buildIosmRuntimeDirective(input) {
77
+ const lines = [
78
+ "[IOSM runtime context for next turn]",
79
+ `cwd: ${input.cwd}`,
80
+ `iosm_root: ${input.rootDir ?? "none"}`,
81
+ `iosm_playbook: ${input.playbookPath ?? "none"}`,
82
+ `request_goal: ${input.userGoal}`,
83
+ `actionable_request: ${input.shouldOrchestrate ? "yes" : "no"}`,
84
+ `auto_initialized_this_turn: ${input.autoInitialized ? "yes" : "no"}`,
85
+ `active_cycle_id: ${input.activeCycleId ?? "none"}`,
86
+ `auto_planned_cycle_id: ${input.autoPlannedCycleId ?? "none"}`,
87
+ `cycle_status: ${input.cycleStatusSummary ?? "unknown"}`,
88
+ `cycle_metrics: ${input.metricSnapshot ?? "unknown"}`,
89
+ `iosm_index: ${input.iosmIndex === undefined || input.iosmIndex === null ? "n/a" : input.iosmIndex.toFixed(3)}`,
90
+ `decision_confidence: ${input.decisionConfidence === undefined || input.decisionConfidence === null
91
+ ? "n/a"
92
+ : input.decisionConfidence.toFixed(3)}`,
93
+ ];
94
+ if (input.runtimeError) {
95
+ lines.push(`runtime_error: ${input.runtimeError}`);
96
+ }
97
+ lines.push("MUST behavior:", "- The IOSM runtime data above is internal execution context. Do not surface it to the user unless they ask for IOSM specifics or it is needed to explain a decision or blocker.", "- Behave like a professional, direct engineering agent in user-facing replies.", "- For actionable engineering requests, use IOSM order internally: Improve -> Optimize -> Shrink -> Modularize.", "- Explain outcomes in normal engineering language: what you inspected, what you changed, what you verified, and any remaining risk or blocker.", "- Do not volunteer IOSM metrics, indices, confidence scores, phase names, or artifact details unless they are explicitly requested or materially relevant.", "- Mention IOSM artifacts only when they changed, affect the implementation, or the user asked about them.", "- Do not behave as a generic assistant: inspect project/code/artifacts first, then execute changes.", "- Read IOSM.md playbook first on actionable turns and keep its checklist synchronized.", "- If IOSM files were scaffolded, refine iosm.yaml, cycle scope, and hypotheses from the real project/task before deep implementation.", "- Keep IOSM artifacts synchronized with implementation changes (cycle report, hypotheses, phase reports, and metric/guardrail evidence placeholders).", "- Do not start with docs lookup unless explicitly requested or blocked.", "- Begin substantive work with a short execution plan, then carry it through without unnecessary back-and-forth.", "- Prefer targeted repository reads/searches over broad listings and keep tool output bounded.", "- After edits, run the smallest meaningful verification and report the exact check that passed or failed.", "- Do not declare completion without evidence; if verification was not possible, say so explicitly.");
98
+ if (!input.shouldOrchestrate) {
99
+ lines.push("- Current message is conversational/lightweight: answer normally and briefly; do not force IOSM framing or artifact churn.");
100
+ }
101
+ return lines.join("\n");
102
+ }
103
+ export async function prepareIosmRuntimeContext(cwd, userInput) {
104
+ const shouldOrchestrate = isLikelyIosmOperationalPrompt(userInput);
105
+ const userGoal = normalizeIosmGoalFromPrompt(userInput);
106
+ let rootDir = findIosmRootDir(cwd);
107
+ let playbookPath;
108
+ let autoInitialized = false;
109
+ let autoPlannedCycleId;
110
+ let activeCycleId;
111
+ let cycleStatusSummary;
112
+ let metricSnapshot;
113
+ let iosmIndex;
114
+ let decisionConfidence;
115
+ let runtimeError;
116
+ try {
117
+ if (!rootDir && shouldOrchestrate) {
118
+ const autoInitDir = resolveAutoInitTargetDir(cwd);
119
+ if (autoInitDir) {
120
+ const initResult = await initIosmWorkspace({ cwd: autoInitDir });
121
+ rootDir = initResult.rootDir;
122
+ autoInitialized = true;
123
+ }
124
+ }
125
+ if (rootDir) {
126
+ playbookPath = getIosmGuidePath(rootDir);
127
+ const cycles = listIosmCycles(rootDir);
128
+ if (cycles.length > 0) {
129
+ activeCycleId = cycles[0].cycleId;
130
+ }
131
+ if (shouldOrchestrate && (cycles.length === 0 || cycles[0].status !== "active")) {
132
+ const planned = planIosmCycle({
133
+ cwd: rootDir,
134
+ goals: [userGoal],
135
+ });
136
+ autoPlannedCycleId = planned.cycleId;
137
+ activeCycleId = planned.cycleId;
138
+ }
139
+ if (activeCycleId) {
140
+ const status = inspectIosmCycle(rootDir, activeCycleId);
141
+ cycleStatusSummary = `${status.status}; decision=${status.decision}; report_complete=${status.reportComplete ? "yes" : "no"}; blocking=${status.blockingIssues.length}; warnings=${status.warnings.length}`;
142
+ const report = readIosmCycleReport(rootDir, activeCycleId);
143
+ metricSnapshot = Object.entries(report.metrics)
144
+ .map(([metric, value]) => `${metric}=${value === null ? "n/a" : value.toFixed(3)}`)
145
+ .join(", ");
146
+ iosmIndex = report.iosm_index;
147
+ decisionConfidence = report.decision_confidence;
148
+ }
149
+ }
150
+ }
151
+ catch (error) {
152
+ runtimeError = error instanceof Error ? error.message : String(error);
153
+ }
154
+ return {
155
+ userGoal,
156
+ cwd,
157
+ rootDir,
158
+ playbookPath,
159
+ shouldOrchestrate,
160
+ autoInitialized,
161
+ autoPlannedCycleId,
162
+ activeCycleId,
163
+ cycleStatusSummary,
164
+ metricSnapshot,
165
+ iosmIndex,
166
+ decisionConfidence,
167
+ runtimeError,
168
+ };
169
+ }
170
+ //# sourceMappingURL=runtime-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-context.js","sourceRoot":"","sources":["../../src/iosm/runtime-context.ts"],"names":[],"mappings":"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","sourcesContent":["import { existsSync } from \"node:fs\";\nimport { dirname, join, resolve } from \"node:path\";\nimport { inspectIosmCycle, listIosmCycles, planIosmCycle, readIosmCycleReport } from \"./cycle.js\";\nimport { findIosmRootDir } from \"./config.js\";\nimport { initIosmWorkspace } from \"./init.js\";\nimport { getIosmGuidePath } from \"./paths.js\";\n\nexport interface IosmRuntimeDirectiveInput {\n\tuserGoal: string;\n\tcwd: string;\n\trootDir?: string;\n\tplaybookPath?: string;\n\tshouldOrchestrate: boolean;\n\tautoInitialized: boolean;\n\tautoPlannedCycleId?: string;\n\tactiveCycleId?: string;\n\tcycleStatusSummary?: string;\n\tmetricSnapshot?: string;\n\tiosmIndex?: number | null;\n\tdecisionConfidence?: number | null;\n\truntimeError?: string;\n}\n\nexport function isLikelyIosmOperationalPrompt(text: string): boolean {\n\tconst normalized = text\n\t\t.trim()\n\t\t.toLowerCase()\n\t\t.replace(/[!?.]+$/g, \"\");\n\tif (!normalized) {\n\t\treturn false;\n\t}\n\n\tconst lightweightMessages = new Set([\n\t\t\"hi\",\n\t\t\"hello\",\n\t\t\"hey\",\n\t\t\"thanks\",\n\t\t\"thank you\",\n\t\t\"ok\",\n\t\t\"okay\",\n\t\t\"ага\",\n\t\t\"да\",\n\t\t\"нет\",\n\t\t\"ок\",\n\t\t\"понял\",\n\t\t\"привет\",\n\t\t\"здравствуйте\",\n\t\t\"спасибо\",\n\t]);\n\tif (lightweightMessages.has(normalized)) {\n\t\treturn false;\n\t}\n\n\tconst words = normalized.split(/\\s+/).filter(Boolean);\n\tif (words.length <= 1 && normalized.length < 12) {\n\t\treturn false;\n\t}\n\treturn true;\n}\n\nfunction isLikelyProjectWorkspace(cwd: string): boolean {\n\tconst markers = [\n\t\t\".git\",\n\t\t\"package.json\",\n\t\t\"pyproject.toml\",\n\t\t\"go.mod\",\n\t\t\"Cargo.toml\",\n\t\t\"pom.xml\",\n\t\t\"build.gradle\",\n\t\t\"Gemfile\",\n\t\t\"requirements.txt\",\n\t\t\"Makefile\",\n\t];\n\treturn markers.some((marker) => existsSync(join(cwd, marker)));\n}\n\nfunction resolveAutoInitTargetDir(startDir: string): string | undefined {\n\tlet currentDir = resolve(startDir);\n\tfor (;;) {\n\t\tif (isLikelyProjectWorkspace(currentDir)) {\n\t\t\treturn currentDir;\n\t\t}\n\t\tconst parentDir = dirname(currentDir);\n\t\tif (parentDir === currentDir) {\n\t\t\treturn undefined;\n\t\t}\n\t\tcurrentDir = parentDir;\n\t}\n}\n\nexport function normalizeIosmGoalFromPrompt(text: string): string {\n\tconst compact = text.replace(/\\s+/g, \" \").trim();\n\tif (compact.length <= 220) {\n\t\treturn compact;\n\t}\n\treturn `${compact.slice(0, 217).trimEnd()}...`;\n}\n\nexport function buildIosmRuntimeDirective(input: IosmRuntimeDirectiveInput): string {\n\tconst lines: string[] = [\n\t\t\"[IOSM runtime context for next turn]\",\n\t\t`cwd: ${input.cwd}`,\n\t\t`iosm_root: ${input.rootDir ?? \"none\"}`,\n\t\t`iosm_playbook: ${input.playbookPath ?? \"none\"}`,\n\t\t`request_goal: ${input.userGoal}`,\n\t\t`actionable_request: ${input.shouldOrchestrate ? \"yes\" : \"no\"}`,\n\t\t`auto_initialized_this_turn: ${input.autoInitialized ? \"yes\" : \"no\"}`,\n\t\t`active_cycle_id: ${input.activeCycleId ?? \"none\"}`,\n\t\t`auto_planned_cycle_id: ${input.autoPlannedCycleId ?? \"none\"}`,\n\t\t`cycle_status: ${input.cycleStatusSummary ?? \"unknown\"}`,\n\t\t`cycle_metrics: ${input.metricSnapshot ?? \"unknown\"}`,\n\t\t`iosm_index: ${input.iosmIndex === undefined || input.iosmIndex === null ? \"n/a\" : input.iosmIndex.toFixed(3)}`,\n\t\t`decision_confidence: ${\n\t\t\tinput.decisionConfidence === undefined || input.decisionConfidence === null\n\t\t\t\t? \"n/a\"\n\t\t\t\t: input.decisionConfidence.toFixed(3)\n\t\t}`,\n\t];\n\n\tif (input.runtimeError) {\n\t\tlines.push(`runtime_error: ${input.runtimeError}`);\n\t}\n\n\tlines.push(\n\t\t\"MUST behavior:\",\n\t\t\"- The IOSM runtime data above is internal execution context. Do not surface it to the user unless they ask for IOSM specifics or it is needed to explain a decision or blocker.\",\n\t\t\"- Behave like a professional, direct engineering agent in user-facing replies.\",\n\t\t\"- For actionable engineering requests, use IOSM order internally: Improve -> Optimize -> Shrink -> Modularize.\",\n\t\t\"- Explain outcomes in normal engineering language: what you inspected, what you changed, what you verified, and any remaining risk or blocker.\",\n\t\t\"- Do not volunteer IOSM metrics, indices, confidence scores, phase names, or artifact details unless they are explicitly requested or materially relevant.\",\n\t\t\"- Mention IOSM artifacts only when they changed, affect the implementation, or the user asked about them.\",\n\t\t\"- Do not behave as a generic assistant: inspect project/code/artifacts first, then execute changes.\",\n\t\t\"- Read IOSM.md playbook first on actionable turns and keep its checklist synchronized.\",\n\t\t\"- If IOSM files were scaffolded, refine iosm.yaml, cycle scope, and hypotheses from the real project/task before deep implementation.\",\n\t\t\"- Keep IOSM artifacts synchronized with implementation changes (cycle report, hypotheses, phase reports, and metric/guardrail evidence placeholders).\",\n\t\t\"- Do not start with docs lookup unless explicitly requested or blocked.\",\n\t\t\"- Begin substantive work with a short execution plan, then carry it through without unnecessary back-and-forth.\",\n\t\t\"- Prefer targeted repository reads/searches over broad listings and keep tool output bounded.\",\n\t\t\"- After edits, run the smallest meaningful verification and report the exact check that passed or failed.\",\n\t\t\"- Do not declare completion without evidence; if verification was not possible, say so explicitly.\",\n\t);\n\n\tif (!input.shouldOrchestrate) {\n\t\tlines.push(\n\t\t\t\"- Current message is conversational/lightweight: answer normally and briefly; do not force IOSM framing or artifact churn.\",\n\t\t);\n\t}\n\n\treturn lines.join(\"\\n\");\n}\n\nexport async function prepareIosmRuntimeContext(cwd: string, userInput: string): Promise<IosmRuntimeDirectiveInput> {\n\tconst shouldOrchestrate = isLikelyIosmOperationalPrompt(userInput);\n\tconst userGoal = normalizeIosmGoalFromPrompt(userInput);\n\n\tlet rootDir = findIosmRootDir(cwd);\n\tlet playbookPath: string | undefined;\n\tlet autoInitialized = false;\n\tlet autoPlannedCycleId: string | undefined;\n\tlet activeCycleId: string | undefined;\n\tlet cycleStatusSummary: string | undefined;\n\tlet metricSnapshot: string | undefined;\n\tlet iosmIndex: number | null | undefined;\n\tlet decisionConfidence: number | null | undefined;\n\tlet runtimeError: string | undefined;\n\n\ttry {\n\t\tif (!rootDir && shouldOrchestrate) {\n\t\t\tconst autoInitDir = resolveAutoInitTargetDir(cwd);\n\t\t\tif (autoInitDir) {\n\t\t\t\tconst initResult = await initIosmWorkspace({ cwd: autoInitDir });\n\t\t\t\trootDir = initResult.rootDir;\n\t\t\t\tautoInitialized = true;\n\t\t\t}\n\t\t}\n\n\t\tif (rootDir) {\n\t\t\tplaybookPath = getIosmGuidePath(rootDir);\n\t\t\tconst cycles = listIosmCycles(rootDir);\n\t\t\tif (cycles.length > 0) {\n\t\t\t\tactiveCycleId = cycles[0].cycleId;\n\t\t\t}\n\n\t\t\tif (shouldOrchestrate && (cycles.length === 0 || cycles[0].status !== \"active\")) {\n\t\t\t\tconst planned = planIosmCycle({\n\t\t\t\t\tcwd: rootDir,\n\t\t\t\t\tgoals: [userGoal],\n\t\t\t\t});\n\t\t\t\tautoPlannedCycleId = planned.cycleId;\n\t\t\t\tactiveCycleId = planned.cycleId;\n\t\t\t}\n\n\t\t\tif (activeCycleId) {\n\t\t\t\tconst status = inspectIosmCycle(rootDir, activeCycleId);\n\t\t\t\tcycleStatusSummary = `${status.status}; decision=${status.decision}; report_complete=${status.reportComplete ? \"yes\" : \"no\"}; blocking=${status.blockingIssues.length}; warnings=${status.warnings.length}`;\n\t\t\t\tconst report = readIosmCycleReport(rootDir, activeCycleId);\n\t\t\t\tmetricSnapshot = Object.entries(report.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\tiosmIndex = report.iosm_index;\n\t\t\t\tdecisionConfidence = report.decision_confidence;\n\t\t\t}\n\t\t}\n\t} catch (error: unknown) {\n\t\truntimeError = error instanceof Error ? error.message : String(error);\n\t}\n\n\treturn {\n\t\tuserGoal,\n\t\tcwd,\n\t\trootDir,\n\t\tplaybookPath,\n\t\tshouldOrchestrate,\n\t\tautoInitialized,\n\t\tautoPlannedCycleId,\n\t\tactiveCycleId,\n\t\tcycleStatusSummary,\n\t\tmetricSnapshot,\n\t\tiosmIndex,\n\t\tdecisionConfidence,\n\t\truntimeError,\n\t};\n}\n"]}
@@ -0,0 +1,151 @@
1
+ export type IosmDecision = "CONTINUE" | "STOP" | "FAIL";
2
+ export type IosmPhase = "improve" | "optimize" | "shrink" | "modularize";
3
+ export type IosmMetric = "semantic" | "logic" | "performance" | "simplicity" | "modularity" | "flow";
4
+ export type IosmEvidenceTier = "A" | "B" | "C";
5
+ export type IosmMetricRecord<T> = Record<IosmMetric, T>;
6
+ /** Canonical ordered list of IOSM phases. */
7
+ export declare const IOSM_PHASES: readonly IosmPhase[];
8
+ export interface IosmCycleScope {
9
+ modules: string[];
10
+ services: string[];
11
+ domains: string[];
12
+ contracts: string[];
13
+ rationale: string;
14
+ }
15
+ export interface IosmCycleCapacityReport {
16
+ goal_count: number;
17
+ scope_size: number;
18
+ expected_change_surface: number;
19
+ pass: boolean;
20
+ }
21
+ export interface IosmHypothesisCard {
22
+ id: string;
23
+ goal_id: string;
24
+ owner: string;
25
+ statement: string;
26
+ expected_positive_delta: Partial<Record<IosmMetric, number>>;
27
+ allowed_negative_delta: IosmMetricRecord<number>;
28
+ expected_business_signal: {
29
+ metric: string;
30
+ direction: "up" | "down" | "stable";
31
+ };
32
+ validation: {
33
+ method: string;
34
+ window: string;
35
+ };
36
+ rollback_trigger: string[];
37
+ confidence: number;
38
+ }
39
+ export interface IosmHypothesisOutcome extends IosmHypothesisCard {
40
+ pass: boolean | null;
41
+ notes: string[];
42
+ }
43
+ export interface IosmPhaseReport {
44
+ phase: IosmPhase;
45
+ gate: string;
46
+ status: "pending" | "passed" | "failed" | "waived";
47
+ pass: boolean | null;
48
+ inputs: string[];
49
+ actions_taken: string[];
50
+ outputs: string[];
51
+ linked_hypotheses: string[];
52
+ gate_measurements: Record<string, unknown>;
53
+ }
54
+ export interface IosmPhasePointer {
55
+ path: string;
56
+ gate: string;
57
+ status: "pending" | "passed" | "failed" | "waived";
58
+ pass: boolean | null;
59
+ }
60
+ export interface IosmGateResult {
61
+ pass: boolean | null;
62
+ waived: boolean;
63
+ status: "pending" | "passed" | "failed" | "waived";
64
+ }
65
+ export interface IosmGuardrailViolation {
66
+ metric: IosmMetric;
67
+ negative_delta: number;
68
+ budget: number;
69
+ }
70
+ export interface IosmAutomationActor {
71
+ type: string;
72
+ role: string;
73
+ identity?: string;
74
+ provenance?: string;
75
+ }
76
+ export interface IosmApprovalStep {
77
+ action: string;
78
+ required: boolean;
79
+ approved_by?: string;
80
+ approved_at?: string;
81
+ notes?: string;
82
+ }
83
+ export interface IosmBaselineReport {
84
+ cycle_id: string;
85
+ captured_at: string;
86
+ system: string;
87
+ scope: string;
88
+ delivery_boundary: string;
89
+ cycle_scope: IosmCycleScope;
90
+ baseline_metrics: {
91
+ values: IosmMetricRecord<number | null>;
92
+ raw_measurements: Record<string, unknown>;
93
+ };
94
+ source_systems: string[];
95
+ }
96
+ export interface IosmMetricsHistoryEntry {
97
+ cycle_id: string;
98
+ recorded_at: string;
99
+ status: IosmCycleReport["status"];
100
+ metrics: IosmMetricRecord<number>;
101
+ metric_confidences: IosmMetricRecord<number>;
102
+ metric_tiers: IosmMetricRecord<IosmEvidenceTier>;
103
+ metric_deltas: IosmMetricRecord<number>;
104
+ decline_coverage: IosmMetricRecord<boolean>;
105
+ iosm_index: number;
106
+ decision_confidence: number;
107
+ has_blocking_failure: boolean;
108
+ has_guardrail_violation: boolean;
109
+ has_active_blocking_waiver: boolean;
110
+ incomplete: boolean;
111
+ }
112
+ export interface IosmCycleReport {
113
+ cycle_id: string;
114
+ status: "planned" | "active" | "completed" | "failed";
115
+ system: string;
116
+ scope: string;
117
+ criticality_profile: string;
118
+ delivery_boundary: string;
119
+ cycle_scope: IosmCycleScope;
120
+ cycle_capacity: IosmCycleCapacityReport;
121
+ window: string;
122
+ goals: string[];
123
+ hypotheses: IosmHypothesisOutcome[];
124
+ hypothesis_interactions: {
125
+ pass: boolean;
126
+ conflicts: Array<Record<string, unknown>>;
127
+ };
128
+ phase_reports: Record<IosmPhase, IosmPhasePointer>;
129
+ gates: Record<"gate_I" | "gate_O" | "gate_S" | "gate_M", IosmGateResult>;
130
+ metrics: IosmMetricRecord<number | null>;
131
+ metric_confidences: IosmMetricRecord<number | null>;
132
+ metric_tiers: IosmMetricRecord<IosmEvidenceTier | null>;
133
+ raw_measurements: Record<string, unknown>;
134
+ guardrails: {
135
+ pass: boolean | null;
136
+ effective_budget: IosmMetricRecord<number>;
137
+ violations: IosmGuardrailViolation[];
138
+ };
139
+ metric_deltas: IosmMetricRecord<number | null>;
140
+ decline_coverage: IosmMetricRecord<boolean>;
141
+ iosm_index: number | null;
142
+ decision_confidence: number | null;
143
+ waivers: Array<Record<string, unknown>>;
144
+ automation_actors: IosmAutomationActor[];
145
+ approval_path: IosmApprovalStep[];
146
+ anti_patterns: Array<Record<string, unknown>>;
147
+ learning_artifacts: string[];
148
+ incomplete: boolean;
149
+ decision: IosmDecision;
150
+ }
151
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/iosm/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;AACxD,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,GAAG,YAAY,CAAC;AACzE,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,OAAO,GAAG,aAAa,GAAG,YAAY,GAAG,YAAY,GAAG,MAAM,CAAC;AACrG,MAAM,MAAM,gBAAgB,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC/C,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;AAExD,6CAA6C;AAC7C,eAAO,MAAM,WAAW,EAAE,SAAS,SAAS,EAA6D,CAAC;AAE1G,MAAM,WAAW,cAAc;IAC9B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,uBAAuB;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,uBAAuB,EAAE,MAAM,CAAC;IAChC,IAAI,EAAE,OAAO,CAAC;CACd;AAED,MAAM,WAAW,kBAAkB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,uBAAuB,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;IAC7D,sBAAsB,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACjD,wBAAwB,EAAE;QACzB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAC;KACpC,CAAC;IACF,UAAU,EAAE;QACX,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;KACf,CAAC;IACF,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,qBAAsB,SAAQ,kBAAkB;IAChE,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC/B,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACnD,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC3C;AAED,MAAM,WAAW,gBAAgB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACnD,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC9B,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;CACnD;AAED,MAAM,WAAW,sBAAsB;IACtC,MAAM,EAAE,UAAU,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,cAAc,CAAC;IAC5B,gBAAgB,EAAE;QACjB,MAAM,EAAE,gBAAgB,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;QACxC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC1C,CAAC;IACF,cAAc,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,uBAAuB;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC;IAClC,OAAO,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAClC,kBAAkB,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC7C,YAAY,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;IACjD,aAAa,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACxC,gBAAgB,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,uBAAuB,EAAE,OAAO,CAAC;IACjC,0BAA0B,EAAE,OAAO,CAAC;IACpC,UAAU,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,CAAC;IACtD,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,cAAc,CAAC;IAC5B,cAAc,EAAE,uBAAuB,CAAC;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,EAAE,qBAAqB,EAAE,CAAC;IACpC,uBAAuB,EAAE;QACxB,IAAI,EAAE,OAAO,CAAC;QACd,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;KAC1C,CAAC;IACF,aAAa,EAAE,MAAM,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;IACnD,KAAK,EAAE,MAAM,CAAC,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,EAAE,cAAc,CAAC,CAAC;IACzE,OAAO,EAAE,gBAAgB,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACzC,kBAAkB,EAAE,gBAAgB,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACpD,YAAY,EAAE,gBAAgB,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;IACxD,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,UAAU,EAAE;QACX,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;QACrB,gBAAgB,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC3C,UAAU,EAAE,sBAAsB,EAAE,CAAC;KACrC,CAAC;IACF,aAAa,EAAE,gBAAgB,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC/C,gBAAgB,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC5C,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACxC,iBAAiB,EAAE,mBAAmB,EAAE,CAAC;IACzC,aAAa,EAAE,gBAAgB,EAAE,CAAC;IAClC,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC9C,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,YAAY,CAAC;CACvB"}
@@ -0,0 +1,3 @@
1
+ /** Canonical ordered list of IOSM phases. */
2
+ export const IOSM_PHASES = ["improve", "optimize", "shrink", "modularize"];
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/iosm/types.ts"],"names":[],"mappings":"AAMA,6CAA6C;AAC7C,MAAM,CAAC,MAAM,WAAW,GAAyB,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,CAAU,CAAC","sourcesContent":["export type IosmDecision = \"CONTINUE\" | \"STOP\" | \"FAIL\";\nexport type IosmPhase = \"improve\" | \"optimize\" | \"shrink\" | \"modularize\";\nexport type IosmMetric = \"semantic\" | \"logic\" | \"performance\" | \"simplicity\" | \"modularity\" | \"flow\";\nexport type IosmEvidenceTier = \"A\" | \"B\" | \"C\";\nexport type IosmMetricRecord<T> = Record<IosmMetric, T>;\n\n/** Canonical ordered list of IOSM phases. */\nexport const IOSM_PHASES: readonly IosmPhase[] = [\"improve\", \"optimize\", \"shrink\", \"modularize\"] as const;\n\nexport interface IosmCycleScope {\n\tmodules: string[];\n\tservices: string[];\n\tdomains: string[];\n\tcontracts: string[];\n\trationale: string;\n}\n\nexport interface IosmCycleCapacityReport {\n\tgoal_count: number;\n\tscope_size: number;\n\texpected_change_surface: number;\n\tpass: boolean;\n}\n\nexport interface IosmHypothesisCard {\n\tid: string;\n\tgoal_id: string;\n\towner: string;\n\tstatement: string;\n\texpected_positive_delta: Partial<Record<IosmMetric, number>>;\n\tallowed_negative_delta: IosmMetricRecord<number>;\n\texpected_business_signal: {\n\t\tmetric: string;\n\t\tdirection: \"up\" | \"down\" | \"stable\";\n\t};\n\tvalidation: {\n\t\tmethod: string;\n\t\twindow: string;\n\t};\n\trollback_trigger: string[];\n\tconfidence: number;\n}\n\nexport interface IosmHypothesisOutcome extends IosmHypothesisCard {\n\tpass: boolean | null;\n\tnotes: string[];\n}\n\nexport interface IosmPhaseReport {\n\tphase: IosmPhase;\n\tgate: string;\n\tstatus: \"pending\" | \"passed\" | \"failed\" | \"waived\";\n\tpass: boolean | null;\n\tinputs: string[];\n\tactions_taken: string[];\n\toutputs: string[];\n\tlinked_hypotheses: string[];\n\tgate_measurements: Record<string, unknown>;\n}\n\nexport interface IosmPhasePointer {\n\tpath: string;\n\tgate: string;\n\tstatus: \"pending\" | \"passed\" | \"failed\" | \"waived\";\n\tpass: boolean | null;\n}\n\nexport interface IosmGateResult {\n\tpass: boolean | null;\n\twaived: boolean;\n\tstatus: \"pending\" | \"passed\" | \"failed\" | \"waived\";\n}\n\nexport interface IosmGuardrailViolation {\n\tmetric: IosmMetric;\n\tnegative_delta: number;\n\tbudget: number;\n}\n\nexport interface IosmAutomationActor {\n\ttype: string;\n\trole: string;\n\tidentity?: string;\n\tprovenance?: string;\n}\n\nexport interface IosmApprovalStep {\n\taction: string;\n\trequired: boolean;\n\tapproved_by?: string;\n\tapproved_at?: string;\n\tnotes?: string;\n}\n\nexport interface IosmBaselineReport {\n\tcycle_id: string;\n\tcaptured_at: string;\n\tsystem: string;\n\tscope: string;\n\tdelivery_boundary: string;\n\tcycle_scope: IosmCycleScope;\n\tbaseline_metrics: {\n\t\tvalues: IosmMetricRecord<number | null>;\n\t\traw_measurements: Record<string, unknown>;\n\t};\n\tsource_systems: string[];\n}\n\nexport interface IosmMetricsHistoryEntry {\n\tcycle_id: string;\n\trecorded_at: string;\n\tstatus: IosmCycleReport[\"status\"];\n\tmetrics: IosmMetricRecord<number>;\n\tmetric_confidences: IosmMetricRecord<number>;\n\tmetric_tiers: IosmMetricRecord<IosmEvidenceTier>;\n\tmetric_deltas: IosmMetricRecord<number>;\n\tdecline_coverage: IosmMetricRecord<boolean>;\n\tiosm_index: number;\n\tdecision_confidence: number;\n\thas_blocking_failure: boolean;\n\thas_guardrail_violation: boolean;\n\thas_active_blocking_waiver: boolean;\n\tincomplete: boolean;\n}\n\nexport interface IosmCycleReport {\n\tcycle_id: string;\n\tstatus: \"planned\" | \"active\" | \"completed\" | \"failed\";\n\tsystem: string;\n\tscope: string;\n\tcriticality_profile: string;\n\tdelivery_boundary: string;\n\tcycle_scope: IosmCycleScope;\n\tcycle_capacity: IosmCycleCapacityReport;\n\twindow: string;\n\tgoals: string[];\n\thypotheses: IosmHypothesisOutcome[];\n\thypothesis_interactions: {\n\t\tpass: boolean;\n\t\tconflicts: Array<Record<string, unknown>>;\n\t};\n\tphase_reports: Record<IosmPhase, IosmPhasePointer>;\n\tgates: Record<\"gate_I\" | \"gate_O\" | \"gate_S\" | \"gate_M\", IosmGateResult>;\n\tmetrics: IosmMetricRecord<number | null>;\n\tmetric_confidences: IosmMetricRecord<number | null>;\n\tmetric_tiers: IosmMetricRecord<IosmEvidenceTier | null>;\n\traw_measurements: Record<string, unknown>;\n\tguardrails: {\n\t\tpass: boolean | null;\n\t\teffective_budget: IosmMetricRecord<number>;\n\t\tviolations: IosmGuardrailViolation[];\n\t};\n\tmetric_deltas: IosmMetricRecord<number | null>;\n\tdecline_coverage: IosmMetricRecord<boolean>;\n\tiosm_index: number | null;\n\tdecision_confidence: number | null;\n\twaivers: Array<Record<string, unknown>>;\n\tautomation_actors: IosmAutomationActor[];\n\tapproval_path: IosmApprovalStep[];\n\tanti_patterns: Array<Record<string, unknown>>;\n\tlearning_artifacts: string[];\n\tincomplete: boolean;\n\tdecision: IosmDecision;\n}\n"]}
package/dist/main.d.ts ADDED
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Main entry point for the coding agent CLI.
3
+ *
4
+ * This file handles CLI argument parsing and translates them into
5
+ * createAgentSession() options. The SDK does the heavy lifting.
6
+ */
7
+ export declare function main(args: string[]): Promise<void>;
8
+ //# sourceMappingURL=main.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA08CH,wBAAsB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,iBAwRxC"}