@iowarp/clio-coder 0.4.2 → 0.4.4

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 (523) hide show
  1. package/CHANGELOG.md +98 -0
  2. package/CONTRIBUTING.md +86 -19
  3. package/README.md +35 -6
  4. package/dist/{acp-TMDQZDIG.js → acp-WNAYYF4F.js} +12 -13
  5. package/dist/{agents-5N5NG3XG.js → agents-3OKXHLOI.js} +60 -57
  6. package/dist/assets/codewiki.json +1 -1
  7. package/dist/{auth-Z5CCBXKQ.js → auth-VKNNMGPU.js} +21 -19
  8. package/dist/{builtins-K6TNDT24.js → builtins-WGALA46I.js} +9 -4
  9. package/dist/{chunk-XE3PCIXH.js → chunk-23L32XTI.js} +12 -9
  10. package/dist/{chunk-I64IFBLB.js → chunk-25QBEXRS.js} +18 -11
  11. package/dist/{chunk-CDNVLKUX.js → chunk-26QSH3EJ.js} +13 -7
  12. package/dist/{chunk-QQLGQY2A.js → chunk-2ASED4PZ.js} +22 -22
  13. package/dist/{chunk-MCEPRMZW.js → chunk-2CU2H6KE.js} +2 -2
  14. package/dist/chunk-2DSOYNFC.js +108 -0
  15. package/dist/{chunk-72GZI5EV.js → chunk-2JH2WHGE.js} +2 -2
  16. package/dist/{chunk-I66EAJFY.js → chunk-2WZ546HR.js} +267 -232
  17. package/dist/{chunk-O3YUNJZ2.js → chunk-2ZSONWVL.js} +82 -25
  18. package/dist/{chunk-2NHR3NAY.js → chunk-36CT5VVL.js} +331 -42
  19. package/dist/{chunk-2X4RYJTJ.js → chunk-3GY4F45V.js} +3 -3
  20. package/dist/{chunk-ZW55JB7N.js → chunk-3ODX73FK.js} +4 -6
  21. package/dist/{chunk-PBP4B7XR.js → chunk-3UNOLWNZ.js} +3 -3
  22. package/dist/{chunk-4JDLP6ZS.js → chunk-3UUXNFEX.js} +14 -10
  23. package/dist/{chunk-RKSR6VSF.js → chunk-4IUZQIJ3.js} +29 -1
  24. package/dist/{chunk-ZW4HH5JJ.js → chunk-4M6Z5QVF.js} +6 -6
  25. package/dist/{chunk-K6BSR66V.js → chunk-4NSRCOYP.js} +4 -1
  26. package/dist/{chunk-M2DAX4F6.js → chunk-4WR7VSYB.js} +2 -2
  27. package/dist/{chunk-FSP7CMNU.js → chunk-54X7T7DK.js} +61 -6
  28. package/dist/{chunk-54ODD65L.js → chunk-5636DCO5.js} +4 -4
  29. package/dist/chunk-57XXR6DR.js +3763 -0
  30. package/dist/{chunk-3KIPBMUA.js → chunk-5ICU3EUH.js} +2 -2
  31. package/dist/{chunk-77QIVUZB.js → chunk-5MEZN6CB.js} +4 -4
  32. package/dist/{chunk-O42A54GG.js → chunk-5OIVVPHF.js} +2 -2
  33. package/dist/{chunk-YJISEZKC.js → chunk-5TUB6SLS.js} +6 -6
  34. package/dist/{chunk-IMXMHHMQ.js → chunk-6OSVSQL5.js} +341 -57
  35. package/dist/{chunk-Q4XWMHX6.js → chunk-6PAZTBPA.js} +14 -2
  36. package/dist/{chunk-FVDGR2ZL.js → chunk-6Q3CYFD3.js} +112 -39
  37. package/dist/{chunk-IDNA72AH.js → chunk-6QOTUPRG.js} +155 -36
  38. package/dist/{chunk-X7IARSHT.js → chunk-6UINWWS6.js} +16 -10
  39. package/dist/{chunk-CYZW7JHJ.js → chunk-72YIHOZQ.js} +9 -9
  40. package/dist/{chunk-IKSLQ4XV.js → chunk-75W7L2E2.js} +752 -861
  41. package/dist/{chunk-CRFOIAX3.js → chunk-7UGL4MB5.js} +6 -6
  42. package/dist/{chunk-HIICAHCJ.js → chunk-AUPNRN7C.js} +2 -2
  43. package/dist/{chunk-7BHIY2MW.js → chunk-BJVFZO5U.js} +8 -50
  44. package/dist/{chunk-B74PXLU7.js → chunk-CUSRQKPU.js} +65 -3
  45. package/dist/chunk-DQOVN6KV.js +386 -0
  46. package/dist/{chunk-E7GT7O5N.js → chunk-DT3LWJOB.js} +7 -4
  47. package/dist/chunk-DXKJURES.js +671 -0
  48. package/dist/{chunk-JBCS7CRR.js → chunk-EL24TAU4.js} +10 -10
  49. package/dist/{chunk-TPEQIQIE.js → chunk-ELWDPP3Y.js} +8 -8
  50. package/dist/{chunk-NDINPTJ4.js → chunk-ELZVTCGV.js} +5 -4
  51. package/dist/chunk-EXLD33WO.js +381 -0
  52. package/dist/chunk-FEAXX7B6.js +101 -0
  53. package/dist/{chunk-RLYRBIYQ.js → chunk-FFUPXJC4.js} +90 -331
  54. package/dist/{chunk-5PFYMY2V.js → chunk-FTMGRKEF.js} +2 -2
  55. package/dist/{chunk-34BHNEE3.js → chunk-GHS5EBTQ.js} +58 -7
  56. package/dist/{chunk-DYHAXKHD.js → chunk-GWZNEVM2.js} +12 -8
  57. package/dist/chunk-GX5WYQO4.js +59 -0
  58. package/dist/chunk-GYV6VZOC.js +26 -0
  59. package/dist/{chunk-MQXIVJ35.js → chunk-HAXOFFRH.js} +5 -5
  60. package/dist/chunk-I2DWJ4GM.js +390 -0
  61. package/dist/{chunk-TXOTCRLG.js → chunk-I5FWO7L5.js} +5 -5
  62. package/dist/{chunk-WNP7O5WZ.js → chunk-ID64D7PE.js} +4 -4
  63. package/dist/{chunk-XQRY4DTA.js → chunk-IGLP3ODT.js} +10 -10
  64. package/dist/chunk-IRXAATOX.js +539 -0
  65. package/dist/chunk-IXIY2H4R.js +44 -0
  66. package/dist/{chunk-SSEYRH53.js → chunk-IZXGRF7P.js} +92 -147
  67. package/dist/{chunk-5TSRNF4G.js → chunk-JCI2ROMZ.js} +164 -6
  68. package/dist/{chunk-JWJGP5DQ.js → chunk-JEIYHLOR.js} +7 -7
  69. package/dist/{chunk-F2I26BDK.js → chunk-JQLNNIKT.js} +4 -4
  70. package/dist/{chunk-BYMNWQ7O.js → chunk-JSD46VO2.js} +315 -63
  71. package/dist/{chunk-AK5XEFVZ.js → chunk-JT2RFCC5.js} +64 -14
  72. package/dist/{chunk-MCMZMDAC.js → chunk-K6T2ZAMZ.js} +168 -6
  73. package/dist/{chunk-PGF63K6I.js → chunk-KFV5L5SK.js} +73 -4
  74. package/dist/{chunk-IHXBNWMM.js → chunk-KXDSS5WJ.js} +7 -3
  75. package/dist/{chunk-PJX3WQUQ.js → chunk-LLXSDWXS.js} +3 -3
  76. package/dist/{chunk-DZAW46HP.js → chunk-LTIKRKFL.js} +3 -3
  77. package/dist/{chunk-DZEK6CJN.js → chunk-N56KALIC.js} +21 -21
  78. package/dist/{chunk-B7HM5Z7T.js → chunk-NAI6ZFCY.js} +9 -5
  79. package/dist/{chunk-I66ZTYNP.js → chunk-NRO2BJRH.js} +2656 -2213
  80. package/dist/{chunk-ZGNYYXQ6.js → chunk-NXIMQY5W.js} +3 -3
  81. package/dist/{chunk-IKOZFYBN.js → chunk-NXYCB2VD.js} +149 -106
  82. package/dist/{chunk-CWVRRIEI.js → chunk-NZMNUPZZ.js} +2 -2
  83. package/dist/{chunk-462T4EGZ.js → chunk-O5CVSAG5.js} +2 -2
  84. package/dist/chunk-ODGTEFFI.js +50 -0
  85. package/dist/{chunk-3F7VUY77.js → chunk-OEJSLEPW.js} +2 -2
  86. package/dist/{chunk-KKOJXO6R.js → chunk-OMQNJVKW.js} +4 -2
  87. package/dist/{chunk-5KW52TEP.js → chunk-Q4WO54TA.js} +132 -77
  88. package/dist/{chunk-W6NIE6OW.js → chunk-QUFRYSWI.js} +13 -7
  89. package/dist/{chunk-42FMPA75.js → chunk-QZWQA4DE.js} +2 -2
  90. package/dist/chunk-R6Q67RJH.js +134 -0
  91. package/dist/{chunk-W4YEMFBX.js → chunk-RAY4OVGZ.js} +3 -3
  92. package/dist/{chunk-ZNT2M6TG.js → chunk-RQCKCSRL.js} +17 -17
  93. package/dist/{chunk-LJID3DYZ.js → chunk-RXTN6AKH.js} +3 -3
  94. package/dist/{chunk-P75RZCJW.js → chunk-RZDWV63N.js} +3 -3
  95. package/dist/{chunk-UH632ZYL.js → chunk-S6PYF2XF.js} +2 -2
  96. package/dist/{chunk-HJWWJ6IL.js → chunk-TOIVGRUX.js} +17 -5
  97. package/dist/{chunk-HLAFFSEK.js → chunk-TQAHXW6Y.js} +2 -2
  98. package/dist/{chunk-JIEGK6UF.js → chunk-U6TMQNSI.js} +48 -4
  99. package/dist/{chunk-2HFQNRV3.js → chunk-UEPWCCTY.js} +12 -12
  100. package/dist/chunk-UOIZ7DA4.js +41 -0
  101. package/dist/{chunk-UH347SHR.js → chunk-USR47QNF.js} +11 -11
  102. package/dist/{chunk-AZ4WMN4W.js → chunk-V6HJFQZE.js} +2 -2
  103. package/dist/chunk-V76WTFTW.js +318 -0
  104. package/dist/{chunk-NMJXSHBJ.js → chunk-W54I7H25.js} +2 -2
  105. package/dist/{chunk-KPXDY6QF.js → chunk-XRZT5WY5.js} +2 -2
  106. package/dist/{chunk-UBRFI4HS.js → chunk-XULDXHTN.js} +142 -50
  107. package/dist/chunk-XXYSBZIQ.js +283 -0
  108. package/dist/{chunk-HKMD33FO.js → chunk-Y55JBDO5.js} +405 -122
  109. package/dist/{chunk-XOXV5GKE.js → chunk-YD5GIKET.js} +17 -8
  110. package/dist/{chunk-XGDPUNND.js → chunk-YECAMM3D.js} +2 -2
  111. package/dist/{chunk-BO7Y52RY.js → chunk-YNFKXPEC.js} +7 -7
  112. package/dist/{chunk-VXMFAE2W.js → chunk-YPC6ZR5L.js} +19 -6
  113. package/dist/{chunk-M2WXEHER.js → chunk-ZA4VCIGV.js} +2 -2
  114. package/dist/cli/index.js +42 -40
  115. package/dist/{clio-7VB377CC.js → clio-QLICPCF5.js} +7 -7
  116. package/dist/{code-nav-YVLCYA7V.js → code-nav-IJR2DBPR.js} +9 -9
  117. package/dist/{components-UBWCQSRW.js → components-2TGAI2RC.js} +5 -6
  118. package/dist/{config-4HVOS65E.js → config-IUA6OYNS.js} +88 -81
  119. package/dist/{configure-PIWO7B24.js → configure-VEPX4NMX.js} +26 -25
  120. package/dist/{context-KQYIWPWT.js → context-2DKHWH2T.js} +60 -45
  121. package/dist/{context-IYEHL3WQ.js → context-4MPR7WKB.js} +78 -69
  122. package/dist/{context-N6ZE3LGJ.js → context-BOYF5EJM.js} +15 -11
  123. package/dist/{context-clear-G4OGZJDS.js → context-clear-S4ZJCQUX.js} +73 -65
  124. package/dist/context-map-COB37XXN.js +505 -0
  125. package/dist/{context-working-set-BWLF6LJP.js → context-working-set-3I3FYX6Y.js} +18 -17
  126. package/dist/detail-A7JAVSIG.js +98 -0
  127. package/dist/{dispatch-runner-2QQAITS3.js → dispatch-runner-RJ5I2F2O.js} +99 -75
  128. package/dist/{docs-PD3EXDKU.js → docs-SPOV3BAN.js} +3 -5
  129. package/dist/{doctor-LHBD36VU.js → doctor-DKICC2SN.js} +71 -48
  130. package/dist/{eval-C45FYRJ6.js → eval-OQOQUDHK.js} +308 -146
  131. package/dist/{eval-inventory-6DEJPLBF.js → eval-inventory-Y6QRFOH5.js} +4 -4
  132. package/dist/{evidence-6SHONYAF.js → evidence-4DQ25GUQ.js} +79 -175
  133. package/dist/evidence-4F5USFKH.js +208 -0
  134. package/dist/{evolve-KRKMV72X.js → evolve-GSS52E5J.js} +71 -67
  135. package/dist/{extensions-KPZ2UHBB.js → extensions-G7MFLYHT.js} +8 -9
  136. package/dist/{fleet-IVTCKDHT.js → fleet-Q37YHHAQ.js} +126 -118
  137. package/dist/{fleet-commands-EDWL3IT7.js → fleet-commands-G7E4N7SM.js} +16 -13
  138. package/dist/{fleet-decisions-YP3YEFGK.js → fleet-decisions-O7M6QBA2.js} +9 -8
  139. package/dist/{fleet-graph-ZFWKHY2M.js → fleet-graph-TOUBW6OW.js} +21 -20
  140. package/dist/{fleet-inspect-FVUNCBML.js → fleet-inspect-SW33JJNI.js} +65 -60
  141. package/dist/{fleet-preflight-UN5XED4R.js → fleet-preflight-CV2655TW.js} +4 -5
  142. package/dist/{fleet-validate-XOWC4HSX.js → fleet-validate-KESZX2YH.js} +25 -24
  143. package/dist/{fleet-verify-UN3SODEL.js → fleet-verify-UQPMTVE3.js} +66 -61
  144. package/dist/{fleet-view-TWHJKCN6.js → fleet-view-MN2VG4MR.js} +65 -60
  145. package/dist/{init-T2QORQ3Y.js → init-PXEXQSBF.js} +90 -82
  146. package/dist/{interop-IN5I2A66.js → interop-ZG5T62U3.js} +12 -13
  147. package/dist/inventory-C26CFDRR.js +101 -0
  148. package/dist/{library-LSCATDLZ.js → library-B2W4N74O.js} +29 -29
  149. package/dist/{memory-HYOKAGGJ.js → memory-YCANYS5A.js} +73 -69
  150. package/dist/{models-2GPMFYCM.js → models-GERTU3YI.js} +51 -47
  151. package/dist/{monitor-E4ASVUJH.js → monitor-CPNIUULB.js} +74 -67
  152. package/dist/{orchestrator-DDMPR3PY.js → orchestrator-J4BSH4WQ.js} +1288 -1606
  153. package/dist/{panes-E3RUXOW5.js → panes-BOHAEGYC.js} +4 -4
  154. package/dist/{panes-IXKLOKA2.js → panes-NXSLDQZ2.js} +10 -11
  155. package/dist/{paths-L7LGY6RN.js → paths-VSUWNC22.js} +6 -7
  156. package/dist/reset-TNWTB5LU.js +343 -0
  157. package/dist/{resources-OTRSN34L.js → resources-4PXNMD5G.js} +29 -22
  158. package/dist/{run-5DEYH5QK.js → run-D6XJ34CN.js} +132 -132
  159. package/dist/{share-IHWTLO3M.js → share-2NWMJJEE.js} +27 -27
  160. package/dist/{skills-IYMXMKW4.js → skills-KR7WON5G.js} +40 -33
  161. package/dist/{skills-eval-DROHSJAR.js → skills-eval-O2ZNOLDS.js} +81 -77
  162. package/dist/{skills-inventory-D7X4L4ZX.js → skills-inventory-ZZOUBK7O.js} +23 -22
  163. package/dist/{slash-commands-QBM7UZ3B.js → slash-commands-ZXPJD64J.js} +47 -37
  164. package/dist/{steer-Z5DO23FJ.js → steer-XA25PSCS.js} +4 -4
  165. package/dist/{support-U7QOWY26.js → support-7EMVWYG2.js} +6 -6
  166. package/dist/{targets-P2FUC4IL.js → targets-OMH2XCSN.js} +50 -49
  167. package/dist/tasks-IPAGMEIX.js +36 -0
  168. package/dist/{terminal-lease-YREJ3JX2.js → terminal-lease-C2J3JYRE.js} +4 -4
  169. package/dist/{tools-5B7RO6MV.js → tools-EFFEAIDP.js} +8 -9
  170. package/dist/{trace-YMGMUM6A.js → trace-FXMXUZUF.js} +7 -7
  171. package/dist/uninstall-HALS6BLF.js +407 -0
  172. package/dist/upgrade-MS72RJEP.js +306 -0
  173. package/dist/{usage-ME5MPXGX.js → usage-NHG6MCJM.js} +162 -108
  174. package/dist/{verifiers-BVZ7IWOO.js → verifiers-7AUNVXDY.js} +155 -22
  175. package/dist/{verify-5K7ZKQFC.js → verify-FWYGPKMR.js} +14 -12
  176. package/dist/{web-fetch-MPARV2K7.js → web-fetch-V4FKSDAV.js} +4 -4
  177. package/dist/{wiki-generate-F5W5QTYY.js → wiki-generate-743CIGJW.js} +99 -90
  178. package/dist/{with-panes-BYOJCLAM.js → with-panes-BDQEWBRT.js} +10 -10
  179. package/dist/worker/entry.js +72 -68
  180. package/docs/README.md +3 -2
  181. package/docs/architecture/acp.md +17 -0
  182. package/docs/architecture/artifact-placement.md +1 -0
  183. package/docs/architecture/artifact-versions.md +2 -2
  184. package/docs/architecture/context-engine.md +4 -0
  185. package/docs/architecture/dispatch-typed-intent.md +1 -1
  186. package/docs/architecture/evidence-and-memory.md +1 -1
  187. package/docs/architecture/middleware-and-components.md +1 -1
  188. package/docs/architecture/model-catalog.md +21 -10
  189. package/docs/architecture/observability.md +19 -2
  190. package/docs/architecture/prompt-envelope-and-tools.md +17 -5
  191. package/docs/architecture/provider-adapter-cookbook.md +63 -0
  192. package/docs/architecture/safety-model.md +25 -22
  193. package/docs/architecture/tui-design.md +1 -1
  194. package/docs/guide/built-in-agents.md +25 -11
  195. package/docs/guide/commands-and-modes.md +18 -3
  196. package/docs/guide/configuration-and-targets.md +100 -10
  197. package/docs/guide/configuration-reference.md +17 -7
  198. package/docs/guide/environment-variables.md +4 -2
  199. package/docs/guide/installation-and-lifecycle.md +37 -4
  200. package/docs/guide/proactive-memory.md +66 -55
  201. package/docs/guide/skills-marketplace.md +18 -0
  202. package/docs/guide/tool-usage.md +78 -3
  203. package/docs/history/config-knobs-audit.md +2 -2
  204. package/docs/process/development-pipeline.md +40 -2
  205. package/docs/process/eval-runner.md +67 -3
  206. package/docs/process/git-commit-provenance.md +15 -0
  207. package/docs/process/release-cut-checklist.md +207 -0
  208. package/docs/process/scientific-validation.md +18 -17
  209. package/evals/behavioral-machinery-support.ts +1 -0
  210. package/evals/behavioral-machinery.yaml +1 -1
  211. package/evals/behavioral-model.yaml +3 -2
  212. package/package.json +2 -2
  213. package/skills/README.md +7 -5
  214. package/skills/coding/ast-grep/SKILL.md +101 -30
  215. package/skills/coding/ast-grep/evals.md +26 -0
  216. package/skills/coding/coding-standards/SKILL.md +47 -2
  217. package/skills/coding/coding-standards/evals.md +23 -0
  218. package/skills/coding/prototype/SKILL.md +87 -28
  219. package/skills/coding/prototype/evals.md +19 -0
  220. package/skills/coding/tdd/SKILL.md +80 -53
  221. package/skills/coding/tdd/evals.md +20 -0
  222. package/skills/context/context-handoff/SKILL.md +43 -2
  223. package/skills/context/context-handoff/evals.md +44 -0
  224. package/skills/context/context-prime/SKILL.md +45 -15
  225. package/skills/context/context-prime/evals.md +45 -0
  226. package/skills/git/branch-closeout/SKILL.md +132 -0
  227. package/skills/git/branch-closeout/evals.md +133 -0
  228. package/skills/git/branch-closeout/references/closeout-checklist.md +81 -0
  229. package/skills/git/file-ticket/SKILL.md +77 -63
  230. package/skills/git/file-ticket/assets/issue-template.md +22 -0
  231. package/skills/git/file-ticket/evals.md +31 -26
  232. package/skills/git/file-ticket/references/issue-discovery.md +49 -0
  233. package/skills/git/fix-issue/SKILL.md +87 -64
  234. package/skills/git/fix-issue/evals.md +35 -31
  235. package/skills/git/fix-issue/references/diagnosis-and-rca.md +46 -0
  236. package/skills/git/resolve-merge-conflicts/SKILL.md +100 -51
  237. package/skills/git/resolve-merge-conflicts/evals.md +52 -25
  238. package/skills/git/resolve-merge-conflicts/references/conflict-matrix.md +126 -0
  239. package/skills/git/ship/SKILL.md +103 -67
  240. package/skills/git/ship/assets/pr-template.md +21 -0
  241. package/skills/git/ship/evals.md +44 -28
  242. package/skills/git/ship/references/remote-and-branch-policy.md +62 -0
  243. package/skills/git/worktree-create/SKILL.md +80 -50
  244. package/skills/git/worktree-create/evals.md +40 -33
  245. package/skills/git/worktree-create/references/worktree-setup.md +62 -66
  246. package/skills/git/worktree-merge/SKILL.md +112 -65
  247. package/skills/git/worktree-merge/evals.md +42 -34
  248. package/skills/git/worktree-merge/references/merge-strategies.md +52 -0
  249. package/skills/planning/archify/SKILL.md +196 -0
  250. package/skills/planning/archify/evals.md +65 -0
  251. package/skills/planning/architecture/SKILL.md +61 -12
  252. package/skills/planning/architecture/evals.md +65 -0
  253. package/skills/planning/backlog/SKILL.md +130 -14
  254. package/skills/planning/backlog/evals.md +142 -0
  255. package/skills/planning/prd/SKILL.md +47 -6
  256. package/skills/planning/prd/evals.md +54 -0
  257. package/skills/planning/product-intent/SKILL.md +57 -2
  258. package/skills/planning/product-intent/evals.md +70 -0
  259. package/skills/planning/tech-spec/SKILL.md +53 -2
  260. package/skills/planning/tech-spec/evals.md +73 -0
  261. package/skills/registry.yaml +58 -50
  262. package/skills/remote.yaml +13 -0
  263. package/skills/research/arxiv-literature/SKILL.md +76 -18
  264. package/skills/research/arxiv-literature/evals.md +50 -0
  265. package/skills/research/experiment-protocol/SKILL.md +20 -1
  266. package/skills/research/experiment-protocol/evals.md +23 -0
  267. package/skills/research/scientific-debugging/SKILL.md +24 -1
  268. package/skills/research/scientific-debugging/evals.md +18 -0
  269. package/skills/research/scientific-modernization/SKILL.md +26 -1
  270. package/skills/research/scientific-modernization/evals.md +27 -0
  271. package/skills/skill-marketplace.json +63 -28
  272. package/skills/workflow/cut-it/SKILL.md +64 -5
  273. package/skills/workflow/cut-it/evals.md +101 -0
  274. package/skills/workflow/design-council/SKILL.md +112 -27
  275. package/skills/workflow/design-council/evals.md +161 -0
  276. package/skills/workflow/grill-me/SKILL.md +85 -10
  277. package/skills/workflow/grill-me/evals.md +153 -0
  278. package/skills/workflow/workflow-distiller/SKILL.md +76 -17
  279. package/skills/workflow/workflow-distiller/evals.md +118 -0
  280. package/src/cli/args.ts +0 -8
  281. package/src/cli/configure-interop.ts +105 -13
  282. package/src/cli/configure-oauth.ts +57 -0
  283. package/src/cli/configure-onboarding.ts +980 -0
  284. package/src/cli/configure-target.ts +594 -0
  285. package/src/cli/configure.ts +1084 -529
  286. package/src/cli/context-map.ts +114 -0
  287. package/src/cli/context.ts +4 -0
  288. package/src/cli/doctor-state-size.ts +1 -12
  289. package/src/cli/doctor-validation-contract.ts +28 -0
  290. package/src/cli/doctor.ts +5 -0
  291. package/src/cli/evidence-detail.ts +1 -75
  292. package/src/cli/evidence-inventory.ts +1 -167
  293. package/src/cli/index.ts +3 -0
  294. package/src/cli/lifecycle-presenter.ts +436 -0
  295. package/src/cli/models.ts +10 -2
  296. package/src/cli/modes/print.ts +5 -1
  297. package/src/cli/reset.ts +228 -106
  298. package/src/cli/run.ts +7 -4
  299. package/src/cli/select.ts +664 -0
  300. package/src/cli/skills.ts +9 -2
  301. package/src/cli/targets.ts +3 -0
  302. package/src/cli/tasks.ts +84 -0
  303. package/src/cli/uninstall.ts +233 -165
  304. package/src/cli/upgrade.ts +210 -150
  305. package/src/cli/usage.ts +92 -27
  306. package/src/cli/validate-model.ts +3 -3
  307. package/src/cli/verifiers.ts +147 -1
  308. package/src/cli/wiki-generate.ts +1 -0
  309. package/src/core/commit-attribution.ts +41 -1
  310. package/src/core/config.ts +56 -0
  311. package/src/core/external-diagnostic.ts +44 -0
  312. package/src/core/gateway-routing.ts +157 -0
  313. package/src/core/git-commit-attribution.ts +46 -3
  314. package/src/core/run-overrides.ts +0 -5
  315. package/src/core/safe-exec.ts +17 -2
  316. package/src/core/skill-activation.ts +92 -2
  317. package/src/core/tool-names.ts +5 -2
  318. package/src/domains/agents/builtins/architect.md +1 -1
  319. package/src/domains/agents/builtins/coder.md +1 -1
  320. package/src/domains/agents/builtins/documenter.md +1 -1
  321. package/src/domains/agents/builtins/git-master.md +1 -1
  322. package/src/domains/agents/builtins/provenance.md +7 -7
  323. package/src/domains/agents/builtins/tester.md +1 -1
  324. package/src/domains/agents/builtins/verifier.md +2 -2
  325. package/src/domains/agents/builtins/wiki-writer.md +4 -3
  326. package/src/domains/agents/builtins/world-knowledge.md +31 -0
  327. package/src/domains/agents/catalog.ts +1 -1
  328. package/src/domains/agents/result-contract.ts +70 -0
  329. package/src/domains/context/extension.ts +31 -7
  330. package/src/domains/context/refresh.ts +3 -0
  331. package/src/domains/context/wiki/frontmatter.ts +5 -2
  332. package/src/domains/context/wiki/generate.ts +6 -0
  333. package/src/domains/context/wiki/map-seed.ts +589 -0
  334. package/src/domains/context/wiki/plan.ts +2 -2
  335. package/src/domains/context/wiki/prompts.ts +43 -0
  336. package/src/domains/dispatch/active-route-planner.ts +4 -0
  337. package/src/domains/dispatch/admission.ts +29 -0
  338. package/src/domains/dispatch/agent-candidates.ts +10 -0
  339. package/src/domains/dispatch/budget-envelope.ts +86 -1
  340. package/src/domains/dispatch/capability-match.ts +1 -0
  341. package/src/domains/dispatch/capacity-lease.ts +17 -0
  342. package/src/domains/dispatch/code-step.ts +11 -4
  343. package/src/domains/dispatch/contract.ts +42 -8
  344. package/src/domains/dispatch/execution-scheduler.ts +2 -0
  345. package/src/domains/dispatch/extension.ts +184 -56
  346. package/src/domains/dispatch/fleet-commit-attribution.ts +5 -0
  347. package/src/domains/dispatch/fleet-run.ts +1 -0
  348. package/src/domains/dispatch/host-verification.ts +114 -13
  349. package/src/domains/dispatch/intent.ts +28 -18
  350. package/src/domains/dispatch/orphan-recovery.ts +2 -0
  351. package/src/domains/dispatch/receipt-integrity.ts +4 -0
  352. package/src/domains/dispatch/reservation-store.ts +5 -3
  353. package/src/domains/dispatch/state.ts +15 -2
  354. package/src/domains/dispatch/types.ts +20 -2
  355. package/src/domains/dispatch/worker-model-metadata.ts +38 -0
  356. package/src/domains/eval/metrics/call-ledger-stream.ts +34 -11
  357. package/src/domains/eval/metrics/token-stream.ts +201 -31
  358. package/src/domains/eval/metrics/tracked.ts +40 -4
  359. package/src/domains/eval/runners/clio-run.ts +17 -11
  360. package/src/domains/eval/runners/context-index.ts +2 -7
  361. package/src/domains/eval/runners/context-init.ts +3 -6
  362. package/src/domains/eval/runners/external-command.ts +29 -11
  363. package/src/domains/eval/schema/suite.ts +28 -0
  364. package/src/domains/eval/schema/verdict.ts +2 -2
  365. package/src/domains/eval/suites/resolve.ts +13 -1
  366. package/src/domains/eval/suites/run.ts +24 -3
  367. package/src/domains/evidence/build.ts +102 -15
  368. package/src/domains/evidence/detail.ts +69 -0
  369. package/src/domains/evidence/eval.ts +13 -1
  370. package/src/domains/evidence/finish-contract-map.ts +5 -1
  371. package/src/domains/evidence/inventory.ts +167 -0
  372. package/src/domains/evidence/store.ts +16 -0
  373. package/src/domains/evidence/types.ts +12 -0
  374. package/src/domains/extensions/resources.ts +7 -0
  375. package/src/domains/interop/registry.ts +6 -2
  376. package/src/domains/interop/types.ts +4 -0
  377. package/src/domains/lifecycle/migrations/index.ts +4 -0
  378. package/src/domains/memory/task-memory-policy.ts +70 -26
  379. package/src/domains/memory/task-memory-telemetry.ts +1 -0
  380. package/src/domains/middleware/index.ts +0 -1
  381. package/src/domains/middleware/marketplace-offer.ts +22 -35
  382. package/src/domains/middleware/memory-intervention.ts +127 -32
  383. package/src/domains/middleware/memory-step-endpoint.ts +3 -2
  384. package/src/domains/middleware/runtime.ts +7 -3
  385. package/src/domains/middleware/skills-reminder.ts +31 -2
  386. package/src/domains/mux/detect.ts +3 -6
  387. package/src/domains/observability/accountability.ts +15 -1
  388. package/src/domains/observability/compaction-usage.ts +118 -0
  389. package/src/domains/observability/contract.ts +52 -7
  390. package/src/domains/observability/cost.ts +1 -1
  391. package/src/domains/observability/evidence-index.ts +10 -0
  392. package/src/domains/observability/extension.ts +15 -6
  393. package/src/domains/observability/out-of-turn-usage.ts +52 -21
  394. package/src/domains/observability/projection.ts +394 -45
  395. package/src/{interactive → domains/observability}/worker-progress.ts +3 -3
  396. package/src/domains/prompts/fragments/operating/contract.md +2 -0
  397. package/src/domains/prompts/fragments/wiki/page.md +8 -0
  398. package/src/domains/providers/contract.ts +4 -1
  399. package/src/domains/providers/extension.ts +40 -9
  400. package/src/domains/providers/model-capabilities.ts +9 -0
  401. package/src/domains/providers/model-discovery.ts +3 -4
  402. package/src/domains/providers/model-runtime-capabilities.ts +15 -5
  403. package/src/domains/providers/models/local-models/clio-coder-local-coding-targets.yaml +48 -26
  404. package/src/domains/providers/runtimes/antigravity/antigravity-code.ts +225 -45
  405. package/src/domains/providers/runtimes/claude/claude-code.ts +9 -0
  406. package/src/domains/providers/runtimes/common/lmstudio-http.ts +6 -2
  407. package/src/domains/providers/runtimes/common/local-synth.ts +2 -0
  408. package/src/domains/providers/runtimes/protocol/litellm.ts +119 -29
  409. package/src/domains/providers/support.ts +11 -5
  410. package/src/domains/providers/target-model-cache.ts +25 -2
  411. package/src/domains/providers/types/capability-flags.ts +2 -0
  412. package/src/domains/providers/types/runtime-descriptor.ts +20 -1
  413. package/src/domains/providers/types/target-descriptor.ts +19 -0
  414. package/src/domains/resources/index.ts +3 -0
  415. package/src/domains/resources/skills/install.ts +72 -7
  416. package/src/domains/resources/skills/loader.ts +7 -0
  417. package/src/domains/resources/skills/marketplace.ts +63 -11
  418. package/src/domains/safety/action-classifier.ts +7 -0
  419. package/src/domains/safety/autonomy.ts +15 -0
  420. package/src/domains/safety/default-path-policy.ts +2 -0
  421. package/src/domains/safety/finish-contract-registration.ts +29 -14
  422. package/src/domains/safety/finish-contract.ts +252 -40
  423. package/src/domains/safety/index.ts +21 -1
  424. package/src/domains/safety/path-policy.ts +1 -1
  425. package/src/domains/safety/policy-engine.ts +60 -17
  426. package/src/domains/safety/protected-artifacts.ts +191 -88
  427. package/src/domains/safety/rigor.ts +53 -39
  428. package/src/domains/safety/run-effects.ts +2 -22
  429. package/src/domains/safety/skill-authority.ts +55 -0
  430. package/src/domains/safety/validation-contract.ts +388 -0
  431. package/src/domains/session/archive-readers.ts +10 -1
  432. package/src/domains/session/compaction/compact.ts +72 -22
  433. package/src/domains/session/decision-board.ts +101 -2
  434. package/src/domains/session/entries.ts +50 -7
  435. package/src/domains/session/extension.ts +4 -4
  436. package/src/domains/session/handoff.ts +2 -1
  437. package/src/domains/session/manager.ts +2 -3
  438. package/src/domains/session/task-board.ts +14 -1
  439. package/src/domains/session/tree/fork.ts +1 -2
  440. package/src/domains/session/tree/navigator.ts +1 -1
  441. package/src/domains/session/usage.ts +3 -3
  442. package/src/domains/user-tasks/acceptance.ts +56 -0
  443. package/src/domains/user-tasks/active-acceptance.ts +40 -0
  444. package/src/domains/user-tasks/store.ts +34 -3
  445. package/src/engine/acp/adapter.ts +24 -6
  446. package/src/engine/acp/server.ts +21 -4
  447. package/src/engine/acp/transport.ts +53 -8
  448. package/src/engine/acp/types.ts +4 -0
  449. package/src/engine/agent.ts +13 -3
  450. package/src/engine/ai.ts +26 -8
  451. package/src/engine/antigravity/subprocess-runtime.ts +386 -120
  452. package/src/engine/api-registry.ts +3 -0
  453. package/src/engine/apis/ollama-native.ts +15 -0
  454. package/src/engine/apis/openai-completions.ts +117 -14
  455. package/src/engine/claude/subprocess-runtime.ts +107 -60
  456. package/src/engine/external-subprocess.ts +122 -6
  457. package/src/entry/background-model-metadata.ts +18 -0
  458. package/src/entry/compaction-prompt.ts +57 -0
  459. package/src/entry/orchestrator.ts +416 -218
  460. package/src/entry/task-memory-lifecycle.ts +35 -0
  461. package/src/interactive/chat-loop-messages.ts +13 -4
  462. package/src/interactive/chat-loop.ts +65 -2
  463. package/src/interactive/chat-renderer.ts +1 -0
  464. package/src/interactive/cost-overlay.ts +26 -2
  465. package/src/interactive/dispatch-board.ts +46 -717
  466. package/src/interactive/fleet-run-preview.ts +2 -1
  467. package/src/interactive/interactive-application.ts +3 -2
  468. package/src/interactive/interactive-presentation.ts +55 -12
  469. package/src/interactive/interactive-slash-runtime.ts +4 -2
  470. package/src/interactive/oracle.ts +5 -2
  471. package/src/interactive/overlays/fleet-run-approval.ts +3 -2
  472. package/src/interactive/overlays/message-picker.ts +2 -2
  473. package/src/interactive/overlays/settings.ts +2 -2
  474. package/src/interactive/overlays/tree-selector.ts +2 -2
  475. package/src/interactive/renderers/branch-summary.ts +1 -1
  476. package/src/interactive/renderers/worker-entry.ts +32 -0
  477. package/src/interactive/slash-autocomplete.ts +4 -6
  478. package/src/interactive/slash-commands.ts +49 -45
  479. package/src/interactive/slash-spec.ts +28 -0
  480. package/src/interactive/theme/labels.ts +19 -13
  481. package/src/interactive/turn-context.ts +9 -5
  482. package/src/interactive/turn-recovery.ts +8 -0
  483. package/src/interactive/turn-runtime.ts +27 -11
  484. package/src/interactive/turn-state.ts +7 -0
  485. package/src/interactive/view/artifacts.ts +2 -0
  486. package/src/interactive/worker-receipts.ts +1 -0
  487. package/src/interactive/worker-stream.ts +13 -4
  488. package/src/tools/bootstrap.ts +4 -0
  489. package/src/tools/builtin-tool-catalog.ts +31 -0
  490. package/src/tools/compete-worktrees.ts +7 -1
  491. package/src/tools/context/index.ts +30 -9
  492. package/src/tools/core-bootstrap.ts +16 -0
  493. package/src/tools/decide.ts +136 -0
  494. package/src/tools/dispatch-admission.ts +21 -0
  495. package/src/tools/dispatch-arguments.ts +1 -0
  496. package/src/tools/dispatch-event-text.ts +10 -0
  497. package/src/tools/dispatch-plan.ts +6 -2
  498. package/src/tools/dispatch-runner.ts +27 -1
  499. package/src/tools/dispatch-types.ts +6 -0
  500. package/src/tools/evidence.ts +96 -0
  501. package/src/tools/limitation.ts +76 -0
  502. package/src/tools/policy.ts +9 -0
  503. package/src/tools/presentation.ts +3 -0
  504. package/src/tools/registry.ts +11 -5
  505. package/src/tools/result-shaping.ts +17 -5
  506. package/src/tools/task-worktree.ts +13 -3
  507. package/src/tools/tasks.ts +10 -1
  508. package/src/tools/verify/authoring.ts +170 -83
  509. package/src/tools/verify/catalog.ts +122 -5
  510. package/src/tools/verify/index.ts +2 -1
  511. package/src/tools/verify/numeric.ts +298 -0
  512. package/src/tools/verify/perf.ts +143 -0
  513. package/src/tools/verify/scripts.ts +229 -2
  514. package/src/tools/worker-evidence.ts +3 -1
  515. package/src/worker/spec-contract.ts +4 -0
  516. package/dist/chunk-2Z2IKEXI.js +0 -1554
  517. package/dist/chunk-RVG5JXAL.js +0 -41
  518. package/dist/chunk-T56WDKA5.js +0 -183
  519. package/dist/chunk-VN3SHNBN.js +0 -313
  520. package/dist/chunk-VPKWYKEY.js +0 -169
  521. package/dist/reset-OAQP3W4O.js +0 -230
  522. package/dist/uninstall-N34PCTGJ.js +0 -331
  523. package/dist/upgrade-PXK3S2YM.js +0 -325
@@ -4,7 +4,7 @@ import {
4
4
  settingsPath,
5
5
  validateSettings,
6
6
  withSettingsLock
7
- } from "./chunk-34BHNEE3.js";
7
+ } from "./chunk-GHS5EBTQ.js";
8
8
  import {
9
9
  require_dist
10
10
  } from "./chunk-APJ265NV.js";
@@ -305,4 +305,4 @@ export {
305
305
  migrateSettingsV1Document,
306
306
  settings_v2_default
307
307
  };
308
- //# sourceMappingURL=chunk-3KIPBMUA.js.map
308
+ //# sourceMappingURL=chunk-5ICU3EUH.js.map
@@ -5,12 +5,12 @@ import {
5
5
  import {
6
6
  require_dist
7
7
  } from "./chunk-APJ265NV.js";
8
- import {
9
- clioConfigDir
10
- } from "./chunk-BYP5D4HI.js";
11
8
  import {
12
9
  safeResourceWrite
13
10
  } from "./chunk-WEPFGWHJ.js";
11
+ import {
12
+ clioConfigDir
13
+ } from "./chunk-BYP5D4HI.js";
14
14
  import {
15
15
  __toESM,
16
16
  init_esm_shims
@@ -1331,4 +1331,4 @@ export {
1331
1331
  disableExtension,
1332
1332
  removeExtension
1333
1333
  };
1334
- //# sourceMappingURL=chunk-77QIVUZB.js.map
1334
+ //# sourceMappingURL=chunk-5MEZN6CB.js.map
@@ -2,7 +2,7 @@ import { createRequire as __clioCreateRequire } from "node:module"; const requir
2
2
  import {
3
3
  createEngineAi,
4
4
  getEngineSupportedThinkingLevels
5
- } from "./chunk-VXMFAE2W.js";
5
+ } from "./chunk-YPC6ZR5L.js";
6
6
  import {
7
7
  init_esm_shims
8
8
  } from "./chunk-3R73A4XB.js";
@@ -162,4 +162,4 @@ export {
162
162
  catalogThinkingLevelsForRuntime,
163
163
  synthesizeCatalogBackedModel
164
164
  };
165
- //# sourceMappingURL=chunk-O42A54GG.js.map
165
+ //# sourceMappingURL=chunk-5OIVVPHF.js.map
@@ -9,6 +9,11 @@ import {
9
9
  installedToolVersions,
10
10
  removeTool
11
11
  } from "./chunk-D4CJV46V.js";
12
+ import {
13
+ formatColumns,
14
+ printError,
15
+ printOk
16
+ } from "./chunk-JCI2ROMZ.js";
12
17
  import {
13
18
  describeFloorRejection,
14
19
  describeResolution,
@@ -20,11 +25,6 @@ import {
20
25
  PINNED_TOOLS,
21
26
  findPinnedTool
22
27
  } from "./chunk-QDC3K2U3.js";
23
- import {
24
- formatColumns,
25
- printError,
26
- printOk
27
- } from "./chunk-VPKWYKEY.js";
28
28
  import {
29
29
  init_esm_shims
30
30
  } from "./chunk-3R73A4XB.js";
@@ -299,4 +299,4 @@ function jsonShape(status) {
299
299
  export {
300
300
  runToolsCommand
301
301
  };
302
- //# sourceMappingURL=chunk-YJISEZKC.js.map
302
+ //# sourceMappingURL=chunk-5TUB6SLS.js.map
@@ -2,12 +2,15 @@ import { createRequire as __clioCreateRequire } from "node:module"; const requir
2
2
  import {
3
3
  THINKING_LEVELS
4
4
  } from "./chunk-UXCU4E3T.js";
5
+ import {
6
+ runCommandVector
7
+ } from "./chunk-TOIVGRUX.js";
5
8
  import {
6
9
  catalogThinkingLevelsForRuntime,
7
10
  listCatalogModelsForRuntime,
8
11
  mergeCapabilities,
9
12
  synthesizeCatalogBackedModel
10
- } from "./chunk-O42A54GG.js";
13
+ } from "./chunk-5OIVVPHF.js";
11
14
  import {
12
15
  init_esm_shims
13
16
  } from "./chunk-3R73A4XB.js";
@@ -17,47 +20,243 @@ init_esm_shims();
17
20
 
18
21
  // src/domains/providers/runtimes/antigravity/antigravity-code.ts
19
22
  init_esm_shims();
20
- var ANTIGRAVITY_AUTH_NOTICE = "Uses your existing Antigravity (`agy`) login. Clio stores no Antigravity credentials. agy runs its own agent harness as a subprocess; Clio maps autonomy levels onto its CLI flags but cannot mediate individual agy tool calls.";
23
+
24
+ // src/core/external-diagnostic.ts
25
+ init_esm_shims();
26
+ var REDACTED = "[redacted]";
27
+ function redactExternalDiagnostic(input) {
28
+ return input.replace(/\b(?:authorization|proxy-authorization)\s*:\s*[^\r\n]+/giu, `Authorization: ${REDACTED}`).replace(/\b(?:set-cookie|cookie)\s*:\s*[^\r\n]+/giu, `Cookie: ${REDACTED}`).replace(/\bbearer\s+[A-Za-z0-9._~+/-]+=*/giu, `Bearer ${REDACTED}`).replace(
29
+ /\b(?:api[_-]?key|access[_-]?token|refresh[_-]?token|token|secret|password)\s*[:=]\s*[^\s,;]+/giu,
30
+ (match) => {
31
+ const separator = match.includes(":") ? ":" : "=";
32
+ return `${match.slice(0, match.indexOf(separator)).trim()}${separator}${REDACTED}`;
33
+ }
34
+ ).replace(/\beyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\b/gu, REDACTED).replace(
35
+ /(?:~|\/[A-Za-z0-9._-]+(?:\/[A-Za-z0-9._-]+)*)\/\.(?:gemini\/antigravity-cli|antigravitycli)(?:\/[^\s]*)?/gu,
36
+ "[redacted credential path]"
37
+ ).replace(/https?:\/\/[^\s"'<>]+/giu, (url2) => {
38
+ try {
39
+ const parsed = new URL(url2);
40
+ if (/(?:auth|oauth|login|signin|callback)/iu.test(parsed.pathname)) return "[redacted authorization URL]";
41
+ parsed.username = "";
42
+ parsed.password = "";
43
+ parsed.search = "";
44
+ parsed.hash = "";
45
+ return parsed.toString();
46
+ } catch {
47
+ return REDACTED;
48
+ }
49
+ });
50
+ }
51
+ function boundedExternalDiagnostic(input, maxBytes = 8192) {
52
+ const redacted = redactExternalDiagnostic(input).trim();
53
+ const bytes = Buffer.from(redacted, "utf8");
54
+ if (bytes.byteLength <= maxBytes) return redacted;
55
+ return `${bytes.subarray(0, Math.max(0, maxBytes - 32)).toString("utf8")}
56
+ [diagnostic truncated]`;
57
+ }
58
+
59
+ // src/domains/providers/runtimes/antigravity/antigravity-code.ts
60
+ var ANTIGRAVITY_AUTH_NOTICE = "Experimental local delegation through your installed Antigravity (`agy`) CLI. Clio neither signs in nor stores or inspects Antigravity credentials. Run `agy` yourself and complete sign-in before probing this target.";
21
61
  var ANTIGRAVITY_MODELS = [
22
- "Gemini 3.5 Flash (High)",
23
- "Gemini 3.5 Flash (Medium)",
24
- "Gemini 3.5 Flash (Low)",
25
- "Gemini 3.1 Pro (High)",
26
- "Gemini 3.1 Pro (Low)",
27
- "Claude Sonnet 4.6 (Thinking)",
28
- "Claude Opus 4.6 (Thinking)",
29
- "GPT-OSS 120B (Medium)"
62
+ "gemini-3.8-flash-high",
63
+ "gemini-3.8-flash-medium",
64
+ "gemini-3.8-flash-low",
65
+ "gemini-3.1-pro-high",
66
+ "gemini-3.1-pro-low"
30
67
  ];
31
68
  var antigravityCapabilities = {
32
69
  chat: true,
33
- tools: true,
34
- toolCallFormat: "openai",
35
- reasoning: true,
36
- vision: true,
70
+ tools: false,
71
+ reasoning: false,
72
+ vision: false,
37
73
  audio: false,
38
74
  embeddings: false,
39
75
  rerank: false,
40
76
  fim: false,
41
- contextWindow: 1e6,
42
- maxTokens: 8192
77
+ contextWindow: 0,
78
+ maxTokens: 0
43
79
  };
80
+ var ANTIGRAVITY_MAX_CATALOG_BYTES = 1024 * 1024;
81
+ var ANTIGRAVITY_MAX_DISCOVERED_MODELS = 4096;
82
+ var MAX_MODEL_ID_CHARS = 1024;
83
+ var MAX_MODEL_LABEL_CHARS = 1024;
84
+ var AntigravityCatalogError = class extends Error {
85
+ kind;
86
+ constructor(kind, message) {
87
+ super(message);
88
+ this.name = "AntigravityCatalogError";
89
+ this.kind = kind;
90
+ }
91
+ };
92
+ function record(value) {
93
+ return typeof value === "object" && value !== null && !Array.isArray(value) ? value : null;
94
+ }
95
+ function parseAntigravityModelCatalogDetails(output) {
96
+ let decoded;
97
+ try {
98
+ decoded = JSON.parse(output);
99
+ } catch {
100
+ throw new AntigravityCatalogError(
101
+ "unsupported-feature",
102
+ "agy returned an unreadable model catalog; update the Antigravity CLI and retry"
103
+ );
104
+ }
105
+ const envelope = record(decoded);
106
+ const command = record(envelope?.command);
107
+ const data = record(command?.data);
108
+ if (envelope?.status !== "SUCCESS") {
109
+ const detail = boundedExternalDiagnostic(
110
+ typeof envelope?.error === "string" ? envelope.error : typeof command?.error === "string" ? command.error : "agy could not list models"
111
+ );
112
+ const kind = classifyAntigravityDiagnostic(detail);
113
+ throw new AntigravityCatalogError(kind, antigravityProbeMessage(kind, detail));
114
+ }
115
+ if (command?.name !== "models" || !Array.isArray(data?.models)) {
116
+ throw new AntigravityCatalogError(
117
+ "unsupported-feature",
118
+ "agy returned an unsupported model catalog; update the Antigravity CLI and retry"
119
+ );
120
+ }
121
+ if (data.models.length === 0) {
122
+ throw new AntigravityCatalogError(
123
+ "catalog-unavailable",
124
+ "agy returned no available models; run `agy` locally and verify the signed-in account has model access"
125
+ );
126
+ }
127
+ if (data.models.length > ANTIGRAVITY_MAX_DISCOVERED_MODELS) {
128
+ throw new AntigravityCatalogError(
129
+ "catalog-unavailable",
130
+ `agy returned more than ${ANTIGRAVITY_MAX_DISCOVERED_MODELS} models; the authoritative catalog was refused rather than truncated`
131
+ );
132
+ }
133
+ const models = [];
134
+ const labels = {};
135
+ const seen = /* @__PURE__ */ new Set();
136
+ for (const value of data.models) {
137
+ const model = record(value);
138
+ const id = typeof model?.id === "string" ? model.id.trim() : "";
139
+ const label = typeof model?.label === "string" ? model.label.trim() : "";
140
+ if (id.length === 0 || id.length > MAX_MODEL_ID_CHARS || /[\r\n\0]/u.test(id)) {
141
+ throw new AntigravityCatalogError("catalog-unavailable", "agy returned an invalid model identifier");
142
+ }
143
+ if (label.length === 0 || label.length > MAX_MODEL_LABEL_CHARS || /[\r\n\0]/u.test(label)) {
144
+ throw new AntigravityCatalogError("catalog-unavailable", `agy returned an invalid label for model '${id}'`);
145
+ }
146
+ if (seen.has(id)) {
147
+ if (labels[id] !== label) {
148
+ throw new AntigravityCatalogError(
149
+ "catalog-unavailable",
150
+ `agy returned conflicting labels for duplicate model '${id}'`
151
+ );
152
+ }
153
+ continue;
154
+ }
155
+ seen.add(id);
156
+ models.push(id);
157
+ labels[id] = label;
158
+ }
159
+ return { models, labels };
160
+ }
161
+ function classifyAntigravityDiagnostic(detail) {
162
+ if (/(?:enoent|not found|cannot find|could not start|spawn .*agy)/iu.test(detail)) return "missing";
163
+ if (/(?:sign[ -]?in|log[ -]?in|unauthori[sz]ed|authenticat|credential|account.*required)/iu.test(detail)) {
164
+ return "authentication";
165
+ }
166
+ if (/(?:unknown|unsupported|unrecognized|invalid) (?:option|argument|command)|output-format|models command/iu.test(detail)) {
167
+ return "unsupported-feature";
168
+ }
169
+ return "generic";
170
+ }
171
+ function antigravityProbeMessage(kind, detail) {
172
+ const safeDetail = boundedExternalDiagnostic(detail || "no diagnostic was provided");
173
+ switch (kind) {
174
+ case "missing":
175
+ return "Antigravity CLI is not installed or `agy` is not on PATH";
176
+ case "authentication":
177
+ return `Antigravity sign-in is required; run \`agy\` yourself and complete sign-in (${safeDetail})`;
178
+ case "unsupported-feature":
179
+ return `the installed Antigravity CLI does not expose the required structured model catalog; update \`agy\` (${safeDetail})`;
180
+ case "catalog-unavailable":
181
+ return safeDetail;
182
+ case "cancelled":
183
+ return "Antigravity model discovery was cancelled";
184
+ default:
185
+ return `Antigravity model discovery failed: ${safeDetail}`;
186
+ }
187
+ }
188
+ async function probeAntigravityModelCatalog(ctx, runner = runCommandVector) {
189
+ const result = await runner("agy", ["--output-format", "json", "models"], {
190
+ cwd: process.cwd(),
191
+ workspaceRoot: process.cwd(),
192
+ timeoutMs: Math.max(1, ctx.httpTimeoutMs),
193
+ maxOutputBytes: ANTIGRAVITY_MAX_CATALOG_BYTES,
194
+ ...ctx.signal ? { signal: ctx.signal } : {}
195
+ });
196
+ if (result.aborted || result.timedOut) {
197
+ return {
198
+ ok: false,
199
+ latencyMs: result.durationMs,
200
+ failureKind: "cancelled",
201
+ error: antigravityProbeMessage("cancelled", "")
202
+ };
203
+ }
204
+ if (result.outputCapped) {
205
+ return {
206
+ ok: false,
207
+ latencyMs: result.durationMs,
208
+ failureKind: "catalog-unavailable",
209
+ error: `agy model catalog exceeded ${ANTIGRAVITY_MAX_CATALOG_BYTES} bytes`
210
+ };
211
+ }
212
+ if (result.exitCode !== 0) {
213
+ const detail = boundedExternalDiagnostic(result.stderr || result.stdout || `agy exited ${String(result.exitCode)}`);
214
+ const kind = classifyAntigravityDiagnostic(detail);
215
+ return { ok: false, latencyMs: result.durationMs, failureKind: kind, error: antigravityProbeMessage(kind, detail) };
216
+ }
217
+ try {
218
+ const catalog = parseAntigravityModelCatalogDetails(result.stdout);
219
+ return {
220
+ ok: true,
221
+ latencyMs: result.durationMs,
222
+ models: catalog.models,
223
+ modelLabels: catalog.labels
224
+ };
225
+ } catch (cause) {
226
+ const kind = cause instanceof AntigravityCatalogError ? cause.kind : "generic";
227
+ const detail = cause instanceof Error ? cause.message : String(cause);
228
+ return { ok: false, latencyMs: result.durationMs, failureKind: kind, error: boundedExternalDiagnostic(detail) };
229
+ }
230
+ }
44
231
  var antigravityCodeRuntime = {
45
232
  id: "antigravity-code",
46
- displayName: "Antigravity CLI",
233
+ displayName: "Antigravity CLI \u2014 experimental local delegation",
47
234
  kind: "subprocess",
48
235
  tier: "subscription",
49
- // Reuses the existing `google-generative-ai` api family: the worker branches
50
- // to its own runner before any pi-ai inference, so this only needs to be a
51
- // valid, google-backed family. The runner is selected by runtime id, and the
52
- // plain-text parser is named by `outputParser`.
53
- apiFamily: "google-generative-ai",
236
+ apiFamily: "external-agent-subprocess",
54
237
  auth: "none",
55
238
  authNotice: ANTIGRAVITY_AUTH_NOTICE,
56
239
  knownModels: [...ANTIGRAVITY_MODELS],
57
240
  binaryName: "agy",
58
- headlessCommand: "agy --print",
59
- outputParser: "antigravity-print-text",
241
+ headlessCommand: "agy --input-format stream-json --output-format stream-json",
242
+ outputParser: "antigravity-stream-json",
60
243
  defaultCapabilities: antigravityCapabilities,
244
+ externalAgentLoop: {
245
+ tools: "externally-governed-unobserved",
246
+ network: "externally-governed-unobserved",
247
+ budget: "external-one-shot",
248
+ generatingRetry: "forbidden",
249
+ modelCatalog: "live-authoritative"
250
+ },
251
+ async probe(_target, ctx) {
252
+ try {
253
+ return await probeAntigravityModelCatalog(ctx);
254
+ } catch (cause) {
255
+ const detail = boundedExternalDiagnostic(cause instanceof Error ? cause.message : String(cause));
256
+ const kind = classifyAntigravityDiagnostic(detail);
257
+ return { ok: false, failureKind: kind, error: antigravityProbeMessage(kind, detail) };
258
+ }
259
+ },
61
260
  synthesizeModel(target, wireModelId, kb) {
62
261
  return synthesizeCatalogBackedModel({
63
262
  target,
@@ -65,9 +264,9 @@ var antigravityCodeRuntime = {
65
264
  kb,
66
265
  defaultCapabilities: antigravityCapabilities,
67
266
  runtimeId: "antigravity-code",
68
- api: "google-generative-ai",
69
- provider: "google",
70
- defaultBaseUrl: "antigravity://local"
267
+ api: "external-agent-subprocess",
268
+ provider: "antigravity",
269
+ defaultBaseUrl: "external-agent://antigravity/local"
71
270
  });
72
271
  }
73
272
  };
@@ -129,6 +328,15 @@ var claudeCodeRuntime = {
129
328
  headlessCommand: "claude -p --output-format stream-json",
130
329
  outputParser: "claude-code-stream-json",
131
330
  defaultCapabilities: claudeCodeCapabilities,
331
+ // The Claude CLI runs its own tool loop. Clio observes only the stream, so a
332
+ // declared per-tool budget is recorded as external-one-shot, never enforced.
333
+ externalAgentLoop: {
334
+ tools: "externally-governed-unobserved",
335
+ network: "externally-governed-unobserved",
336
+ budget: "external-one-shot",
337
+ generatingRetry: "allowed",
338
+ modelCatalog: "static"
339
+ },
132
340
  synthesizeModel(target, wireModelId, kb) {
133
341
  return synthesizeClaudeDelegatedModel({
134
342
  target,
@@ -577,7 +785,8 @@ function synthLocalModel(input) {
577
785
  ...target.gateway === true ? { gateway: true } : {},
578
786
  ...kb?.entry.family ? { family: kb.entry.family } : {},
579
787
  ...quirks ? { quirks } : {},
580
- ...target.lmstudio ? { lmstudio: target.lmstudio } : {}
788
+ ...target.lmstudio ? { lmstudio: target.lmstudio } : {},
789
+ ...target.litellm ? { litellm: target.litellm } : {}
581
790
  }
582
791
  };
583
792
  if (headers) model.headers = headers;
@@ -750,41 +959,41 @@ function isRecord2(value) {
750
959
  function positiveNumber(value) {
751
960
  return typeof value === "number" && Number.isFinite(value) && value > 0 ? value : void 0;
752
961
  }
753
- function firstPositiveNumber(record, keys) {
962
+ function firstPositiveNumber(record2, keys) {
754
963
  for (const key of keys) {
755
- const value = positiveNumber(record[key]);
964
+ const value = positiveNumber(record2[key]);
756
965
  if (value !== void 0) return value;
757
966
  }
758
967
  return void 0;
759
968
  }
760
- function capabilityListFlag(record, name) {
761
- const list = record.capabilities;
969
+ function capabilityListFlag(record2, name) {
970
+ const list = record2.capabilities;
762
971
  if (!Array.isArray(list)) return void 0;
763
972
  return list.some((entry) => entry === name) ? true : void 0;
764
973
  }
765
- function booleanFromAny(record, keys) {
974
+ function booleanFromAny(record2, keys) {
766
975
  for (const key of keys) {
767
- const value = record[key];
976
+ const value = record2[key];
768
977
  if (typeof value === "boolean") return value;
769
978
  }
770
979
  return void 0;
771
980
  }
772
- function nestedRecord(record, key) {
773
- const value = record[key];
981
+ function nestedRecord(record2, key) {
982
+ const value = record2[key];
774
983
  return isRecord2(value) ? value : null;
775
984
  }
776
- function firstString(record, keys) {
777
- if (!record) return void 0;
985
+ function firstString(record2, keys) {
986
+ if (!record2) return void 0;
778
987
  for (const key of keys) {
779
- const value = record[key];
988
+ const value = record2[key];
780
989
  if (typeof value === "string" && value.trim().length > 0) return value.trim();
781
990
  }
782
991
  return void 0;
783
992
  }
784
- function firstBoolean(record, keys) {
785
- if (!record) return void 0;
993
+ function firstBoolean(record2, keys) {
994
+ if (!record2) return void 0;
786
995
  for (const key of keys) {
787
- const value = record[key];
996
+ const value = record2[key];
788
997
  if (typeof value === "boolean") return value;
789
998
  }
790
999
  return void 0;
@@ -2678,8 +2887,8 @@ function lmStudioReasoningLevels(options) {
2678
2887
  return [...new Set(levels)];
2679
2888
  }
2680
2889
  function lmStudioReasoningEffort(level, options) {
2890
+ if (options?.includes("on") && options.includes("off")) return level === "off" ? "none" : void 0;
2681
2891
  if (level === "off") return "none";
2682
- if (options?.includes("on") && !options.includes("medium") && !options.includes("high")) return "low";
2683
2892
  if (level === "medium" && options?.includes("medium") !== false) return "medium";
2684
2893
  if ((level === "high" || level === "xhigh" || level === "max") && options?.includes("high") !== false) return "high";
2685
2894
  return "low";
@@ -3118,7 +3327,7 @@ var defaultCapabilities25 = {
3118
3327
  embeddings: false,
3119
3328
  rerank: false,
3120
3329
  fim: false,
3121
- structuredOutputs: "json-schema",
3330
+ structuredOutputs: "none",
3122
3331
  contextWindow: CLIO_MIN_CONTEXT_WINDOW,
3123
3332
  maxTokens: CLIO_MIN_MAX_OUTPUT_TOKENS
3124
3333
  };
@@ -3143,6 +3352,8 @@ function boolean(value) {
3143
3352
  }
3144
3353
  function capabilitiesFromLiteLLMModelInfo(info) {
3145
3354
  const caps = {};
3355
+ if (info.runtime === "lm-studio") caps.thinkingControlRuntime = "lmstudio";
3356
+ else if (info.runtime === "llama.cpp") caps.thinkingControlRuntime = "llamacpp";
3146
3357
  const contextWindow = positiveInteger(info.max_input_tokens) ?? positiveInteger(info.max_tokens);
3147
3358
  if (contextWindow !== void 0) caps.contextWindow = contextWindow;
3148
3359
  const maxTokens = positiveInteger(info.max_output_tokens);
@@ -3164,36 +3375,96 @@ function capabilitiesFromLiteLLMModelInfo(info) {
3164
3375
  caps.rerank = true;
3165
3376
  }
3166
3377
  if (info.mode === "chat") caps.chat = true;
3167
- if (boolean(info.supports_response_schema) === true) caps.structuredOutputs = "json-schema";
3378
+ const responseSchema = boolean(info.supports_response_schema);
3379
+ if (responseSchema !== void 0) caps.structuredOutputs = responseSchema ? "json-schema" : "none";
3168
3380
  return caps;
3169
3381
  }
3170
- var EMPTY_CATALOG = { models: [], modelCapabilities: {}, modelStates: {}, deployments: {} };
3382
+ var BOOLEAN_CAPABILITIES = [
3383
+ "chat",
3384
+ "tools",
3385
+ "reasoning",
3386
+ "vision",
3387
+ "audio",
3388
+ "embeddings",
3389
+ "rerank",
3390
+ "fim"
3391
+ ];
3392
+ function aggregateLiteLLMCapabilities(rows) {
3393
+ if (rows.length === 0) return {};
3394
+ const aggregate = {};
3395
+ for (const key of ["contextWindow", "maxTokens"]) {
3396
+ const values = rows.map((row) => row[key]);
3397
+ if (values.every((value) => typeof value === "number")) {
3398
+ aggregate[key] = Math.min(...values);
3399
+ }
3400
+ }
3401
+ for (const key of BOOLEAN_CAPABILITIES) {
3402
+ const values = rows.map((row) => row[key]);
3403
+ if (values.some((value) => value === false)) aggregate[key] = false;
3404
+ else if (values.every((value) => value === true)) aggregate[key] = true;
3405
+ }
3406
+ const controlRuntime = rows[0]?.thinkingControlRuntime;
3407
+ if (controlRuntime !== void 0 && rows.every((row) => row.thinkingControlRuntime === controlRuntime)) {
3408
+ aggregate.thinkingControlRuntime = controlRuntime;
3409
+ }
3410
+ const structuredOutputs = rows.map((row) => row.structuredOutputs);
3411
+ if (structuredOutputs.some((value) => value === "none")) aggregate.structuredOutputs = "none";
3412
+ else if (structuredOutputs.every((value) => value === "json-schema")) aggregate.structuredOutputs = "json-schema";
3413
+ return aggregate;
3414
+ }
3415
+ var EMPTY_CATALOG = {
3416
+ models: [],
3417
+ modelCapabilities: {},
3418
+ modelStates: {},
3419
+ deployments: {},
3420
+ authFailed: false
3421
+ };
3422
+ function isAuthError(leg) {
3423
+ return !leg.ok && /^HTTP 40[13]\b/u.test(leg.error ?? "");
3424
+ }
3171
3425
  async function fetchCatalog(base, ctx, headers) {
3172
3426
  const detailOpts = { url: `${base}/v1/model/info`, timeoutMs: ctx.httpTimeoutMs, headers };
3173
3427
  const detail = await (ctx.signal ? probeJson({ ...detailOpts, signal: ctx.signal }) : probeJson(detailOpts));
3174
3428
  if (detail.ok && Array.isArray(detail.data?.data)) {
3175
- const catalog = { models: [], modelCapabilities: {}, modelStates: {}, deployments: {} };
3429
+ const catalog = {
3430
+ models: [],
3431
+ modelCapabilities: {},
3432
+ modelStates: {},
3433
+ deployments: {},
3434
+ authFailed: false
3435
+ };
3436
+ const capabilityRows = {};
3176
3437
  for (const row of detail.data.data) {
3177
3438
  if (typeof row?.model_name !== "string" || row.model_name.length === 0) continue;
3178
3439
  const alias = row.model_name;
3179
- if (catalog.deployments[alias] !== void 0) continue;
3180
- catalog.models.push(alias);
3440
+ if (catalog.deployments[alias] === void 0) {
3441
+ catalog.models.push(alias);
3442
+ catalog.deployments[alias] = [];
3443
+ capabilityRows[alias] = [];
3444
+ }
3181
3445
  const caps = row.model_info ? capabilitiesFromLiteLLMModelInfo(row.model_info) : {};
3182
- if (Object.keys(caps).length > 0) catalog.modelCapabilities[alias] = caps;
3446
+ capabilityRows[alias]?.push(caps);
3183
3447
  const upstream = row.litellm_params?.model;
3184
3448
  const apiBase = row.litellm_params?.api_base;
3185
- catalog.deployments[alias] = {
3449
+ catalog.deployments[alias]?.push({
3186
3450
  model: typeof upstream === "string" ? upstream : alias,
3187
3451
  ...typeof apiBase === "string" ? { apiBase } : {}
3188
- };
3452
+ });
3453
+ }
3454
+ for (const alias of catalog.models) {
3455
+ const caps = aggregateLiteLLMCapabilities(capabilityRows[alias] ?? []);
3456
+ if (Object.keys(caps).length > 0) catalog.modelCapabilities[alias] = caps;
3189
3457
  }
3190
3458
  if (catalog.models.length > 0) return catalog;
3191
3459
  }
3460
+ const detailAuthFailed = isAuthError(detail);
3192
3461
  const listOpts = { url: `${base}/v1/models`, timeoutMs: ctx.httpTimeoutMs, headers };
3193
3462
  const list = await (ctx.signal ? probeJson({ ...listOpts, signal: ctx.signal }) : probeJson(listOpts));
3194
- if (!list.ok || !Array.isArray(list.data?.data)) return EMPTY_CATALOG;
3463
+ if (!list.ok || !Array.isArray(list.data?.data)) {
3464
+ return { ...EMPTY_CATALOG, authFailed: detailAuthFailed || isAuthError(list) };
3465
+ }
3195
3466
  const models = list.data.data.map((row) => typeof row?.id === "string" ? row.id : null).filter((id) => id !== null && id.length > 0);
3196
- return { models, modelCapabilities: {}, modelStates: {}, deployments: {} };
3467
+ return { models, modelCapabilities: {}, modelStates: {}, deployments: {}, authFailed: false };
3197
3468
  }
3198
3469
  var litellmRuntime = {
3199
3470
  id: "litellm",
@@ -3214,8 +3485,9 @@ var litellmRuntime = {
3214
3485
  if (catalog.models.length === 0) {
3215
3486
  const result2 = {
3216
3487
  ok: false,
3217
- error: "gateway is live but served no model catalog; check the target's API key"
3488
+ error: catalog.authFailed ? "gateway rejected the key" : "gateway is live but served no model catalog; check the target's API key"
3218
3489
  };
3490
+ if (catalog.authFailed) result2.authFailed = true;
3219
3491
  if (live.latencyMs !== void 0) result2.latencyMs = live.latencyMs;
3220
3492
  return result2;
3221
3493
  }
@@ -3235,7 +3507,18 @@ var litellmRuntime = {
3235
3507
  if (configured && !catalog.models.includes(configured)) {
3236
3508
  notes.push(`configured model '${configured}' is not in the gateway catalog`);
3237
3509
  }
3238
- const routed = Object.entries(catalog.deployments).map(([alias, deployment]) => `${alias}=${deployment.model}`).sort();
3510
+ const routeEntries = Object.entries(catalog.deployments);
3511
+ const physical = routeEntries.filter(([alias, deployments]) => {
3512
+ const slash = alias.indexOf("/");
3513
+ if (slash <= 0 || deployments.length !== 1) return false;
3514
+ const upstream = deployments[0]?.model.replace(/^openai\//u, "");
3515
+ return upstream === alias.slice(slash + 1);
3516
+ });
3517
+ if (physical.length > 0) notes.push(`physical routes: ${physical.length} node/model names map one-to-one`);
3518
+ const routed = routeEntries.filter(([alias]) => !physical.some(([physicalAlias]) => physicalAlias === alias)).map(([alias, deployments]) => {
3519
+ const models = [...new Set(deployments.map((deployment) => deployment.model))];
3520
+ return `${alias}=${models.join("|")}`;
3521
+ }).sort();
3239
3522
  if (routed.length > 0) notes.push(`routes: ${routed.join(", ")}`);
3240
3523
  if (notes.length > 0) result.notes = notes;
3241
3524
  return result;
@@ -3318,8 +3601,9 @@ export {
3318
3601
  lmStudioReasoningEffort,
3319
3602
  listLmStudioModels,
3320
3603
  greetLmStudio,
3604
+ boundedExternalDiagnostic,
3321
3605
  formatContextWindowSlots,
3322
3606
  BUILTIN_RUNTIMES,
3323
3607
  registerBuiltinRuntimes
3324
3608
  };
3325
- //# sourceMappingURL=chunk-IMXMHHMQ.js.map
3609
+ //# sourceMappingURL=chunk-6OSVSQL5.js.map
@@ -1,7 +1,7 @@
1
1
  import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
2
  import {
3
3
  isSessionEntry
4
- } from "./chunk-FSP7CMNU.js";
4
+ } from "./chunk-54X7T7DK.js";
5
5
  import {
6
6
  init_esm_shims
7
7
  } from "./chunk-3R73A4XB.js";
@@ -45,6 +45,7 @@ function boardStatus(tasks) {
45
45
  function toTaskLedgerEntryFields(board, now) {
46
46
  const evidence = [];
47
47
  const subgoals = board.tasks.map((task) => {
48
+ evidence.push(...(task.requiredValidationEvidence ?? []).map((item) => ({ ...item })));
48
49
  if (task.status === "completed" && task.evidence) {
49
50
  evidence.push({
50
51
  id: `${task.id}.evidence`,
@@ -139,6 +140,8 @@ function toEntryView(entry) {
139
140
  origin: goal.origin ?? "agent"
140
141
  };
141
142
  if (goal.userTaskId) task.userTaskId = goal.userTaskId;
143
+ const required = entry.requiredValidationEvidence.filter((item) => item.id.startsWith(`${goal.id}.acceptance.`));
144
+ if (required.length > 0) task.requiredValidationEvidence = required.map((item) => ({ ...item }));
142
145
  if (goal.description) task.reason = goal.description;
143
146
  const evidence = evidenceByTask.get(goal.id);
144
147
  if (evidence) task.evidence = evidence;
@@ -211,6 +214,15 @@ function applyMutation(board, mutation) {
211
214
  origin: "user",
212
215
  userTaskId: mutation.userTaskId
213
216
  };
217
+ if (mutation.verification && mutation.verification.length > 0) {
218
+ picked.requiredValidationEvidence = mutation.verification.map((item, index) => ({
219
+ id: `${picked.id}.acceptance.${index}`,
220
+ description: `Operator acceptance: ${item.check}`,
221
+ command: item.check,
222
+ status: "pending",
223
+ notes: `timeoutMs=${item.timeoutMs}`
224
+ }));
225
+ }
214
226
  return {
215
227
  board: {
216
228
  boardId: board?.boardId ?? "",
@@ -371,4 +383,4 @@ export {
371
383
  foldSessionTaskHistory,
372
384
  createTaskBoardStore
373
385
  };
374
- //# sourceMappingURL=chunk-Q4XWMHX6.js.map
386
+ //# sourceMappingURL=chunk-6PAZTBPA.js.map