@iowarp/clio-coder 0.4.1 → 0.4.3

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 (604) hide show
  1. package/CHANGELOG.md +127 -0
  2. package/CONTRIBUTING.md +142 -52
  3. package/README.md +434 -473
  4. package/SECURITY.md +2 -1
  5. package/dist/{acp-ZILU3AUO.js → acp-H2NGRPWO.js} +12 -12
  6. package/dist/{agents-HYWGBGQR.js → agents-TL5LLUQP.js} +56 -55
  7. package/dist/assets/codewiki.json +1 -1
  8. package/dist/{auth-N3QT7CBO.js → auth-E5SW4HMS.js} +23 -21
  9. package/dist/builtins-IA7V7FUC.js +22 -0
  10. package/dist/{chunk-7RY5VZPH.js → chunk-2APPQIER.js} +8 -8
  11. package/dist/{chunk-72GZI5EV.js → chunk-2JH2WHGE.js} +2 -2
  12. package/dist/{chunk-JA5QWE4Z.js → chunk-2UG5F4C5.js} +1973 -1664
  13. package/dist/{chunk-5YHDIDBP.js → chunk-2UH2KFUP.js} +2 -2
  14. package/dist/{chunk-CTJ4RNAA.js → chunk-2VIKGWFZ.js} +2 -2
  15. package/dist/{chunk-I66EAJFY.js → chunk-2WZ546HR.js} +267 -232
  16. package/dist/{chunk-GIZNH63R.js → chunk-35MSIRKH.js} +9 -4
  17. package/dist/chunk-3EBYEESD.js +314 -0
  18. package/dist/{chunk-J5LZHVIT.js → chunk-3M6DQK6S.js} +113 -35
  19. package/dist/{chunk-RKSR6VSF.js → chunk-4IUZQIJ3.js} +29 -1
  20. package/dist/{chunk-6FN3E6KX.js → chunk-4O6MANBS.js} +2 -2
  21. package/dist/chunk-4UVU7BJ5.js +39 -0
  22. package/dist/{chunk-VKRH2TCS.js → chunk-4WR7VSYB.js} +2 -2
  23. package/dist/{chunk-BBTJOK6Y.js → chunk-54CBCGIR.js} +5 -5
  24. package/dist/{chunk-AP73CFDC.js → chunk-5ICU3EUH.js} +2 -2
  25. package/dist/chunk-5MEZN6CB.js +1334 -0
  26. package/dist/{chunk-O42A54GG.js → chunk-5OIVVPHF.js} +2 -2
  27. package/dist/{chunk-ABLSQ6JX.js → chunk-64I3JVYM.js} +8 -2
  28. package/dist/{chunk-AFKWHWXF.js → chunk-6PTFB5VS.js} +39 -22
  29. package/dist/{chunk-VN3SHNBN.js → chunk-7DICMOS6.js} +2 -2
  30. package/dist/chunk-7DRAWPTZ.js +360 -0
  31. package/dist/chunk-7E7I3WLS.js +3762 -0
  32. package/dist/{chunk-BJGUKIG4.js → chunk-7ZYNNDKC.js} +7 -7
  33. package/dist/{chunk-XKA2ICR3.js → chunk-AF4YM7Z4.js} +652 -252
  34. package/dist/{chunk-GVQJ5CCZ.js → chunk-AX2THNSA.js} +12 -12
  35. package/dist/{chunk-IG7BCQBA.js → chunk-B4OAX3SI.js} +65 -3
  36. package/dist/{chunk-TD3PGPQA.js → chunk-B4VEBZKF.js} +3 -3
  37. package/dist/{chunk-74YWRRU5.js → chunk-BEPZRGGU.js} +10 -10
  38. package/dist/{chunk-FEFIFZTL.js → chunk-CE5AX47J.js} +2 -2
  39. package/dist/{chunk-UAPGZHYC.js → chunk-DWUOQKRU.js} +25 -11
  40. package/dist/{chunk-THYWACCR.js → chunk-E3TPLWFX.js} +3 -3
  41. package/dist/{chunk-7EPLI7VL.js → chunk-EKCHAPYA.js} +2 -2
  42. package/dist/{chunk-HLW2MRKE.js → chunk-F4EKGO4N.js} +3 -1
  43. package/dist/{chunk-PJJ6MY27.js → chunk-F5JHEYZM.js} +7 -7
  44. package/dist/{chunk-6CCS4G3W.js → chunk-FTMGRKEF.js} +3 -3
  45. package/dist/{chunk-SINK3QR6.js → chunk-G76U63X4.js} +17 -17
  46. package/dist/{chunk-EIMVLWB3.js → chunk-GHS5EBTQ.js} +64 -9
  47. package/dist/{chunk-QMXC4JB7.js → chunk-GI7YYQ3F.js} +187 -1419
  48. package/dist/{chunk-TZSKNMZG.js → chunk-GTUD2WMY.js} +2 -1
  49. package/dist/{chunk-6HMJX2VU.js → chunk-GWZNEVM2.js} +44 -12
  50. package/dist/chunk-GYV6VZOC.js +26 -0
  51. package/dist/{chunk-MQXIVJ35.js → chunk-HAXOFFRH.js} +5 -5
  52. package/dist/{chunk-UXN6JT4W.js → chunk-HEQY7ZFI.js} +3 -3
  53. package/dist/{chunk-7PWAODYW.js → chunk-I7XBWTYH.js} +2 -2
  54. package/dist/{chunk-GCSMB2KY.js → chunk-I7ZPNEJM.js} +145 -102
  55. package/dist/{chunk-WNP7O5WZ.js → chunk-ID64D7PE.js} +4 -4
  56. package/dist/{chunk-QTFGO774.js → chunk-IGLP3ODT.js} +29 -16
  57. package/dist/chunk-IJNZMHLA.js +101 -0
  58. package/dist/{chunk-BDPT6GTK.js → chunk-INY6HTFL.js} +7 -7
  59. package/dist/{chunk-PBP4B7XR.js → chunk-IUE3Y34X.js} +2 -2
  60. package/dist/{chunk-6NJQITNH.js → chunk-IWT4SF4R.js} +6 -3
  61. package/dist/{chunk-R23Z6K6I.js → chunk-JDAY6FIL.js} +19 -19
  62. package/dist/chunk-JEQ3XTHC.js +42 -0
  63. package/dist/{chunk-FSP7CMNU.js → chunk-JGRC33J2.js} +50 -4
  64. package/dist/{chunk-TVH4ONAM.js → chunk-JKKCYP3C.js} +10 -10
  65. package/dist/{chunk-HJWWJ6IL.js → chunk-JSC3U7TI.js} +16 -4
  66. package/dist/{chunk-C537JADH.js → chunk-KK4JZPBQ.js} +19 -141
  67. package/dist/{chunk-K6BF4U2H.js → chunk-KKOJXO6R.js} +62 -14
  68. package/dist/{chunk-IHXBNWMM.js → chunk-KXDSS5WJ.js} +7 -3
  69. package/dist/{chunk-6DWBAZ5U.js → chunk-L47TF46W.js} +5 -7
  70. package/dist/{chunk-HUAS7ITX.js → chunk-LDJG7DW3.js} +91 -42
  71. package/dist/{chunk-CDNVLKUX.js → chunk-LLDJM5XK.js} +13 -7
  72. package/dist/{chunk-YPI3QQCF.js → chunk-MCEPRMZW.js} +2 -4
  73. package/dist/{chunk-Y4CAGMM6.js → chunk-MNJGS2IN.js} +5 -6
  74. package/dist/{chunk-VKFQTNDV.js → chunk-MUW2BDDH.js} +4 -4
  75. package/dist/{chunk-E67WX76H.js → chunk-MWUZBSAQ.js} +104 -152
  76. package/dist/{chunk-OJTRZGR3.js → chunk-N2Z7HLVY.js} +21 -21
  77. package/dist/{chunk-TVHHYFHE.js → chunk-NEDJ26B5.js} +2 -2
  78. package/dist/{chunk-FYUN5KZ3.js → chunk-NIQJ66N4.js} +21 -21
  79. package/dist/{chunk-U2WB7TZS.js → chunk-NMJXSHBJ.js} +97 -85
  80. package/dist/{chunk-CWVRRIEI.js → chunk-NZMNUPZZ.js} +2 -2
  81. package/dist/{chunk-VEGN6WIQ.js → chunk-O5CVSAG5.js} +3 -3
  82. package/dist/{chunk-MOPSG2X7.js → chunk-OML5D5V5.js} +8 -8
  83. package/dist/{chunk-2VG7KLYV.js → chunk-PAJQJ7BS.js} +5816 -3255
  84. package/dist/{chunk-ZW55JB7N.js → chunk-PUVDKJ2Y.js} +2 -2
  85. package/dist/{chunk-BTGG6BG2.js → chunk-QWGDJJYJ.js} +158 -19
  86. package/dist/chunk-R6Q67RJH.js +134 -0
  87. package/dist/{chunk-ZJLUDYFY.js → chunk-RRNP2ANY.js} +6 -6
  88. package/dist/{chunk-PVAMAVBB.js → chunk-RSJ25QSL.js} +102 -2
  89. package/dist/{chunk-NLFAQR7Z.js → chunk-S66XZJOF.js} +3 -23
  90. package/dist/chunk-SKHCAU7K.js +385 -0
  91. package/dist/chunk-SZAA6XDG.js +30 -0
  92. package/dist/{chunk-J4HBWF6Y.js → chunk-TM6LQDI3.js} +131 -28
  93. package/dist/chunk-UOIZ7DA4.js +41 -0
  94. package/dist/{chunk-MA3H6DM5.js → chunk-UPZU6GE4.js} +25 -3
  95. package/dist/{chunk-BWW4HLO4.js → chunk-UXCU4E3T.js} +8 -6
  96. package/dist/{chunk-N5UK64DP.js → chunk-V2ANDPVT.js} +4 -4
  97. package/dist/{chunk-AK5XEFVZ.js → chunk-VA5FNYMT.js} +26 -13
  98. package/dist/{chunk-6VC4OV3Z.js → chunk-VIA6RFQZ.js} +3 -11
  99. package/dist/{chunk-ZAZB4JMW.js → chunk-VKPAQYEB.js} +27 -8
  100. package/dist/{chunk-QKIFBZKT.js → chunk-VW6DOEDG.js} +497 -81
  101. package/dist/{chunk-SCYB3HA4.js → chunk-W6RRQCPQ.js} +63 -19
  102. package/dist/{chunk-2NM363SV.js → chunk-WBKFA554.js} +10 -10
  103. package/dist/{chunk-R32CLGZ6.js → chunk-WCXUNS7U.js} +82 -21
  104. package/dist/{chunk-GPPB3JBE.js → chunk-WRBAGUNF.js} +3 -3
  105. package/dist/{chunk-IXJT6DCX.js → chunk-XIVNBFZS.js} +85 -30
  106. package/dist/{chunk-UEDMSP56.js → chunk-XPWWI35G.js} +417 -201
  107. package/dist/chunk-XRZT5WY5.js +47 -0
  108. package/dist/{chunk-3QSOM6PA.js → chunk-Y3CBHOR6.js} +2 -2
  109. package/dist/{chunk-VXMFAE2W.js → chunk-YPC6ZR5L.js} +19 -6
  110. package/dist/{chunk-AKB4GYDL.js → chunk-YQWYVTMC.js} +5 -5
  111. package/dist/{chunk-6I5ILFOF.js → chunk-ZA4VCIGV.js} +3 -3
  112. package/dist/{chunk-7OBGU7UB.js → chunk-ZDN3Y73Y.js} +12 -18
  113. package/dist/{chunk-3I5NY75V.js → chunk-ZWPRK62N.js} +8 -5
  114. package/dist/cli/index.js +41 -39
  115. package/dist/{clio-IT3G3VQH.js → clio-CMMK4KRR.js} +9 -9
  116. package/dist/{code-nav-RK6S7F6E.js → code-nav-MDZNQS33.js} +89 -21
  117. package/dist/{components-UBWCQSRW.js → components-UCUQ4QXW.js} +4 -4
  118. package/dist/{config-3QZRWZJF.js → config-SVM5P5YI.js} +131 -84
  119. package/dist/{configure-FL7Y3KJF.js → configure-LE3IK2TJ.js} +28 -26
  120. package/dist/{context-5HE7ODYK.js → context-2OHRKS42.js} +69 -64
  121. package/dist/{context-KYQFRVDC.js → context-E3VC7RX5.js} +15 -11
  122. package/dist/{context-XNHL75JV.js → context-VNCR7KAG.js} +93 -65
  123. package/dist/{context-clear-N545L53A.js → context-clear-BW4O37TG.js} +64 -60
  124. package/dist/context-map-COB37XXN.js +505 -0
  125. package/dist/{context-working-set-QHKXSV2F.js → context-working-set-VDS25HXZ.js} +19 -18
  126. package/dist/{dispatch-runner-RGIE5PCT.js → dispatch-runner-5AHT53RF.js} +93 -82
  127. package/dist/{docs-5NAF6AU7.js → docs-PD3EXDKU.js} +21 -20
  128. package/dist/{doctor-ZGPEGHIP.js → doctor-WNNVO6FY.js} +48 -47
  129. package/dist/{eval-GXLL44RD.js → eval-7G7SGAYO.js} +287 -115
  130. package/dist/{eval-inventory-HBWSWQOK.js → eval-inventory-Y6QRFOH5.js} +4 -4
  131. package/dist/{evidence-HWLBRH3Q.js → evidence-VD6736FQ.js} +67 -64
  132. package/dist/{evolve-FTZBMNVW.js → evolve-AL3NGVRL.js} +65 -62
  133. package/dist/{extensions-VHRBEID7.js → extensions-MOVJ32NM.js} +9 -7
  134. package/dist/{fleet-CKZHJWZJ.js → fleet-QZHUMAGI.js} +114 -111
  135. package/dist/{fleet-commands-EXDXBMV6.js → fleet-commands-BAYT5FJZ.js} +10 -10
  136. package/dist/{fleet-decisions-OTHB6KRL.js → fleet-decisions-IREVMRU4.js} +7 -6
  137. package/dist/{fleet-graph-YTEZUCUT.js → fleet-graph-YCTT3HTI.js} +22 -19
  138. package/dist/{fleet-inspect-SS6YMDCK.js → fleet-inspect-QVJTDAVB.js} +58 -55
  139. package/dist/{fleet-preflight-PBY4VYOM.js → fleet-preflight-25QAFPK4.js} +4 -4
  140. package/dist/{fleet-validate-KMEM5L3S.js → fleet-validate-5O57AAJ7.js} +26 -23
  141. package/dist/{fleet-verify-QD5M7E7Q.js → fleet-verify-CPH2W2T6.js} +59 -56
  142. package/dist/{fleet-view-WAMJYNDT.js → fleet-view-SWBR3VGQ.js} +58 -55
  143. package/dist/{init-5XQRBOFV.js → init-J477LKZH.js} +82 -79
  144. package/dist/{interop-34TVO25M.js → interop-3FCM6XLG.js} +11 -11
  145. package/dist/{library-3QY6KF57.js → library-QUQEIUG6.js} +30 -27
  146. package/dist/{memory-L4UTIIIW.js → memory-SGGSEP65.js} +67 -64
  147. package/dist/{models-ZVX3QOWE.js → models-HEKUAXXK.js} +53 -46
  148. package/dist/{monitor-CEKVSYTS.js → monitor-HKU57TYQ.js} +63 -60
  149. package/dist/{orchestrator-77BAP6BC.js → orchestrator-VDFAEFAI.js} +1831 -1057
  150. package/dist/{panes-7STHOAUJ.js → panes-DN2SSFOH.js} +5 -5
  151. package/dist/{panes-SHAUIRXY.js → panes-TALGNPZT.js} +29 -14
  152. package/dist/{paths-L7LGY6RN.js → paths-NBMFAIEZ.js} +5 -5
  153. package/dist/reset-EAJFFJVB.js +344 -0
  154. package/dist/{resources-74GKTLSF.js → resources-OVKSEFVE.js} +29 -20
  155. package/dist/{run-HBAUJNNZ.js → run-7DP7ZF2J.js} +120 -115
  156. package/dist/{share-G3APVLVP.js → share-WML67FT3.js} +32 -27
  157. package/dist/{skills-35HHUKCR.js → skills-SG662R2K.js} +41 -31
  158. package/dist/{skills-eval-QN4HSHDC.js → skills-eval-VVZEUU46.js} +78 -77
  159. package/dist/{skills-inventory-J357J34F.js → skills-inventory-I2E23GET.js} +23 -20
  160. package/dist/{slash-commands-JZZCQA32.js → slash-commands-S7MBJDQK.js} +40 -36
  161. package/dist/{steer-XAVHJM22.js → steer-2LQOMCPB.js} +3 -3
  162. package/dist/{support-U7QOWY26.js → support-CC2UJBJ6.js} +6 -6
  163. package/dist/{targets-DSM6CY3M.js → targets-4QC3HIEW.js} +54 -54
  164. package/dist/{terminal-lease-JOPFUVEM.js → terminal-lease-TUHIJ6Y2.js} +5 -5
  165. package/dist/{tools-MKNWVPBH.js → tools-TFGJICCU.js} +10 -10
  166. package/dist/{trace-ECQ7TIYZ.js → trace-FXMXUZUF.js} +55 -7
  167. package/dist/uninstall-5PEVOE5B.js +408 -0
  168. package/dist/upgrade-M4WXY6KN.js +303 -0
  169. package/dist/{usage-X52N3IDJ.js → usage-N7ZNVLEM.js} +151 -104
  170. package/dist/{verifiers-EJTVVSMA.js → verifiers-DJTP4XX6.js} +15 -15
  171. package/dist/{verify-YJL6XET2.js → verify-RWE4PPEK.js} +9 -9
  172. package/dist/{web-fetch-MPIFL3LL.js → web-fetch-MPARV2K7.js} +2 -2
  173. package/dist/{wiki-generate-4NDZTQ4B.js → wiki-generate-C7IQOXSP.js} +89 -86
  174. package/dist/{with-panes-OBOBFIIR.js → with-panes-4GCGSL7J.js} +53 -257
  175. package/dist/worker/entry.js +90 -74
  176. package/docs/README.md +176 -81
  177. package/docs/{acp.md → architecture/acp.md} +36 -20
  178. package/docs/{alcf-provider.md → architecture/alcf-provider.md} +8 -5
  179. package/docs/{architecture.md → architecture/architecture.md} +43 -22
  180. package/docs/{artifact-placement.md → architecture/artifact-placement.md} +27 -23
  181. package/docs/architecture/artifact-versions.md +90 -0
  182. package/docs/{capacity-and-scheduling.md → architecture/capacity-and-scheduling.md} +26 -13
  183. package/docs/{context-engine.md → architecture/context-engine.md} +29 -25
  184. package/docs/{context-working-set.md → architecture/context-working-set.md} +13 -10
  185. package/docs/{dispatch-architecture-rationale.md → architecture/dispatch-architecture-rationale.md} +12 -9
  186. package/docs/{dispatch-typed-intent.md → architecture/dispatch-typed-intent.md} +68 -46
  187. package/docs/{evidence-and-memory.md → architecture/evidence-and-memory.md} +23 -16
  188. package/docs/{middleware-and-components.md → architecture/middleware-and-components.md} +11 -5
  189. package/docs/{model-catalog.md → architecture/model-catalog.md} +61 -27
  190. package/docs/{observability.md → architecture/observability.md} +38 -14
  191. package/docs/{pi-boundary.md → architecture/pi-boundary.md} +24 -11
  192. package/docs/{prompt-envelope-and-tools.md → architecture/prompt-envelope-and-tools.md} +57 -20
  193. package/docs/{provider-adapter-cookbook.md → architecture/provider-adapter-cookbook.md} +99 -25
  194. package/docs/{safety-model.md → architecture/safety-model.md} +35 -20
  195. package/docs/{session-lifecycle.md → architecture/session-lifecycle.md} +8 -5
  196. package/docs/architecture/time-conventions.md +125 -0
  197. package/docs/{trace-store.md → architecture/trace-store.md} +13 -5
  198. package/docs/{tui-design.md → architecture/tui-design.md} +13 -13
  199. package/docs/{worker-dispatch-mechanics.md → architecture/worker-dispatch-mechanics.md} +27 -30
  200. package/docs/{built-in-agents.md → guide/built-in-agents.md} +65 -35
  201. package/docs/{commands-and-modes.md → guide/commands-and-modes.md} +66 -61
  202. package/docs/{configuration-and-targets.md → guide/configuration-and-targets.md} +323 -297
  203. package/docs/guide/configuration-reference.md +1163 -0
  204. package/docs/{environment-variables.md → guide/environment-variables.md} +33 -28
  205. package/docs/{exit-codes-and-output.md → guide/exit-codes-and-output.md} +6 -3
  206. package/docs/{extensions-and-sharing.md → guide/extensions-and-sharing.md} +41 -14
  207. package/docs/{fleet-dispatch.md → guide/fleet-dispatch.md} +39 -43
  208. package/docs/{glossary.md → guide/glossary.md} +14 -11
  209. package/docs/{installation-and-lifecycle.md → guide/installation-and-lifecycle.md} +81 -17
  210. package/docs/guide/panes-and-files.md +290 -0
  211. package/docs/{proactive-memory.md → guide/proactive-memory.md} +131 -107
  212. package/docs/{resource-library.md → guide/resource-library.md} +13 -4
  213. package/docs/{skills-marketplace.md → guide/skills-marketplace.md} +25 -3
  214. package/docs/{tool-usage.md → guide/tool-usage.md} +87 -23
  215. package/docs/{troubleshooting.md → guide/troubleshooting.md} +9 -4
  216. package/docs/{config-knobs-audit.md → history/config-knobs-audit.md} +11 -11
  217. package/docs/{release-cut-checklist.md → history/release-cut-checklist.md} +29 -2
  218. package/docs/process/development-pipeline.md +152 -0
  219. package/docs/process/documentation-coverage.md +100 -0
  220. package/docs/process/documentation-guide.md +187 -0
  221. package/docs/{eval-runner.md → process/eval-runner.md} +108 -53
  222. package/docs/{evals-internal.md → process/evals-internal.md} +10 -10
  223. package/docs/{evolution.md → process/evolution.md} +2 -2
  224. package/docs/{fleet-demo-runbook.md → process/fleet-demo-runbook.md} +11 -7
  225. package/docs/{git-commit-provenance.md → process/git-commit-provenance.md} +11 -4
  226. package/docs/{performance-methodology.md → process/performance-methodology.md} +87 -69
  227. package/docs/{scientific-validation.md → process/scientific-validation.md} +4 -4
  228. package/evals/README.md +2 -2
  229. package/evals/behavioral-model.yaml +3 -2
  230. package/package.json +10 -8
  231. package/skills/README.md +52 -41
  232. package/skills/coding/ast-grep/SKILL.md +102 -31
  233. package/skills/coding/ast-grep/evals.md +26 -0
  234. package/skills/coding/coding-standards/SKILL.md +41 -6
  235. package/skills/coding/coding-standards/evals.md +23 -0
  236. package/skills/coding/prototype/SKILL.md +88 -29
  237. package/skills/coding/prototype/evals.md +19 -0
  238. package/skills/coding/tdd/SKILL.md +81 -54
  239. package/skills/coding/tdd/evals.md +20 -0
  240. package/skills/context/context-handoff/SKILL.md +44 -3
  241. package/skills/context/context-handoff/evals.md +44 -0
  242. package/skills/context/context-prime/SKILL.md +46 -16
  243. package/skills/context/context-prime/evals.md +45 -0
  244. package/skills/git/branch-closeout/SKILL.md +132 -0
  245. package/skills/git/branch-closeout/evals.md +133 -0
  246. package/skills/git/branch-closeout/references/closeout-checklist.md +81 -0
  247. package/skills/git/file-ticket/SKILL.md +78 -64
  248. package/skills/git/file-ticket/assets/issue-template.md +22 -0
  249. package/skills/git/file-ticket/evals.md +31 -26
  250. package/skills/git/file-ticket/references/issue-discovery.md +49 -0
  251. package/skills/git/fix-issue/SKILL.md +88 -65
  252. package/skills/git/fix-issue/evals.md +35 -31
  253. package/skills/git/fix-issue/references/diagnosis-and-rca.md +46 -0
  254. package/skills/git/resolve-merge-conflicts/SKILL.md +101 -52
  255. package/skills/git/resolve-merge-conflicts/evals.md +52 -25
  256. package/skills/git/resolve-merge-conflicts/references/conflict-matrix.md +126 -0
  257. package/skills/git/ship/SKILL.md +103 -67
  258. package/skills/git/ship/assets/pr-template.md +21 -0
  259. package/skills/git/ship/evals.md +44 -28
  260. package/skills/git/ship/references/remote-and-branch-policy.md +62 -0
  261. package/skills/git/worktree-create/SKILL.md +80 -50
  262. package/skills/git/worktree-create/evals.md +40 -33
  263. package/skills/git/worktree-create/references/worktree-setup.md +62 -66
  264. package/skills/git/worktree-merge/SKILL.md +112 -65
  265. package/skills/git/worktree-merge/evals.md +42 -34
  266. package/skills/git/worktree-merge/references/merge-strategies.md +52 -0
  267. package/skills/meta/clio-coder-dev/SKILL.md +9 -5
  268. package/skills/meta/clio-coder-dev/evals.md +3 -2
  269. package/skills/meta/clio-coder-test/SKILL.md +102 -95
  270. package/skills/meta/clio-coder-test/evals.md +9 -4
  271. package/skills/meta/clio-coder-test/references/harness.md +100 -124
  272. package/skills/meta/clio-coder-test/references/test-map.md +77 -50
  273. package/skills/meta/credentials/SKILL.md +2 -2
  274. package/skills/meta/find-skills/SKILL.md +2 -2
  275. package/skills/meta/herdr/SKILL.md +2 -2
  276. package/skills/meta/skill-craft/SKILL.md +22 -16
  277. package/skills/planning/archify/SKILL.md +196 -0
  278. package/skills/planning/archify/evals.md +65 -0
  279. package/skills/planning/architecture/SKILL.md +62 -13
  280. package/skills/planning/architecture/evals.md +65 -0
  281. package/skills/planning/backlog/SKILL.md +131 -15
  282. package/skills/planning/backlog/evals.md +142 -0
  283. package/skills/planning/prd/SKILL.md +47 -7
  284. package/skills/planning/prd/evals.md +54 -0
  285. package/skills/planning/product-intent/SKILL.md +58 -3
  286. package/skills/planning/product-intent/evals.md +70 -0
  287. package/skills/planning/tech-spec/SKILL.md +54 -3
  288. package/skills/planning/tech-spec/evals.md +73 -0
  289. package/skills/registry.yaml +70 -62
  290. package/skills/remote.yaml +13 -0
  291. package/skills/research/arxiv-literature/SKILL.md +77 -19
  292. package/skills/research/arxiv-literature/evals.md +50 -0
  293. package/skills/research/experiment-protocol/SKILL.md +21 -2
  294. package/skills/research/experiment-protocol/evals.md +23 -0
  295. package/skills/research/scientific-debugging/SKILL.md +24 -2
  296. package/skills/research/scientific-debugging/evals.md +18 -0
  297. package/skills/research/scientific-modernization/SKILL.md +27 -2
  298. package/skills/research/scientific-modernization/evals.md +27 -0
  299. package/skills/skill-marketplace.json +97 -62
  300. package/skills/workflow/cut-it/SKILL.md +66 -6
  301. package/skills/workflow/cut-it/evals.md +101 -0
  302. package/skills/workflow/design-council/SKILL.md +118 -28
  303. package/skills/workflow/design-council/evals.md +161 -0
  304. package/skills/workflow/grill-me/SKILL.md +87 -11
  305. package/skills/workflow/grill-me/evals.md +153 -0
  306. package/skills/workflow/workflow-distiller/SKILL.md +77 -18
  307. package/skills/workflow/workflow-distiller/evals.md +118 -0
  308. package/src/cli/args.ts +2 -2
  309. package/src/cli/bootstrap-generate.ts +1 -1
  310. package/src/cli/config-inspect.ts +65 -12
  311. package/src/cli/configure-interop.ts +105 -13
  312. package/src/cli/configure-oauth.ts +57 -0
  313. package/src/cli/configure-onboarding.ts +980 -0
  314. package/src/cli/configure-target.ts +594 -0
  315. package/src/cli/configure.ts +1082 -532
  316. package/src/cli/context-map.ts +114 -0
  317. package/src/cli/context.ts +4 -0
  318. package/src/cli/docs.ts +22 -14
  319. package/src/cli/doctor-naming.ts +5 -5
  320. package/src/cli/doctor-toolchain.ts +3 -3
  321. package/src/cli/eval.ts +1 -2
  322. package/src/cli/extensions.ts +2 -1
  323. package/src/cli/fleet.ts +1 -1
  324. package/src/cli/index.ts +3 -1
  325. package/src/cli/internal-dispatch.ts +3 -4
  326. package/src/cli/lifecycle-presenter.ts +436 -0
  327. package/src/cli/models.ts +10 -2
  328. package/src/cli/modes/print.ts +5 -1
  329. package/src/cli/panes.ts +19 -5
  330. package/src/cli/reset.ts +228 -106
  331. package/src/cli/run.ts +9 -4
  332. package/src/cli/select.ts +664 -0
  333. package/src/cli/share.ts +5 -1
  334. package/src/cli/skills-eval.ts +3 -3
  335. package/src/cli/skills.ts +9 -2
  336. package/src/cli/targets.ts +5 -6
  337. package/src/cli/trace.ts +55 -4
  338. package/src/cli/uninstall.ts +233 -165
  339. package/src/cli/upgrade.ts +204 -149
  340. package/src/cli/usage.ts +86 -27
  341. package/src/cli/validate-model.ts +3 -3
  342. package/src/cli/wiki-generate.ts +1 -1
  343. package/src/core/artifact-paths.ts +1 -1
  344. package/src/core/bash-exec.ts +131 -86
  345. package/src/core/bus-events.ts +51 -6
  346. package/src/core/config.ts +61 -1
  347. package/src/core/defaults.ts +7 -4
  348. package/src/core/dispatch-outcome.ts +16 -0
  349. package/src/core/external-diagnostic.ts +44 -0
  350. package/src/core/gateway-routing.ts +157 -0
  351. package/src/core/guardrails.ts +10 -49
  352. package/src/core/prompt-hint.ts +9 -0
  353. package/src/core/safe-exec.ts +17 -2
  354. package/src/core/skill-activation.ts +89 -2
  355. package/src/domains/agents/builtins/architect.md +2 -3
  356. package/src/domains/agents/builtins/coder.md +3 -2
  357. package/src/domains/agents/builtins/debugger.md +2 -2
  358. package/src/domains/agents/builtins/documenter.md +2 -2
  359. package/src/domains/agents/builtins/git-master.md +1 -1
  360. package/src/domains/agents/builtins/oracle.md +1 -1
  361. package/src/domains/agents/builtins/provenance.md +1 -1
  362. package/src/domains/agents/builtins/researcher.md +1 -1
  363. package/src/domains/agents/builtins/scout.md +1 -1
  364. package/src/domains/agents/builtins/tester.md +2 -2
  365. package/src/domains/agents/builtins/verifier.md +2 -2
  366. package/src/domains/agents/builtins/wiki-writer.md +1 -1
  367. package/src/domains/agents/builtins/world-knowledge.md +31 -0
  368. package/src/domains/agents/catalog.ts +13 -15
  369. package/src/domains/agents/contract.ts +2 -0
  370. package/src/domains/agents/extension.ts +23 -1
  371. package/src/domains/agents/result-contract.ts +70 -0
  372. package/src/domains/config/keybindings.ts +8 -0
  373. package/src/domains/context/extension.ts +0 -3
  374. package/src/domains/context/wiki/map-seed.ts +589 -0
  375. package/src/domains/context/wiki/plan.ts +2 -2
  376. package/src/domains/context/working-set/path-index.ts +1 -0
  377. package/src/domains/dispatch/admission.ts +29 -0
  378. package/src/domains/dispatch/agent-candidates.ts +10 -0
  379. package/src/domains/dispatch/budget-envelope.ts +86 -1
  380. package/src/domains/dispatch/capability-match.ts +11 -0
  381. package/src/domains/dispatch/capacity-lease.ts +17 -0
  382. package/src/domains/dispatch/contract.ts +11 -1
  383. package/src/domains/dispatch/extension.ts +237 -49
  384. package/src/domains/dispatch/host-verification.ts +435 -39
  385. package/src/domains/dispatch/intent-requirements.ts +10 -0
  386. package/src/domains/dispatch/intent.ts +18 -1
  387. package/src/domains/dispatch/path-scope.ts +235 -24
  388. package/src/domains/dispatch/run-event-journal.ts +4 -15
  389. package/src/domains/dispatch/state.ts +2 -3
  390. package/src/domains/dispatch/transport.ts +45 -21
  391. package/src/domains/dispatch/types.ts +58 -3
  392. package/src/domains/dispatch/worker-model-metadata.ts +38 -0
  393. package/src/domains/eval/artifacts/store.ts +5 -0
  394. package/src/domains/eval/metrics/call-ledger-stream.ts +34 -11
  395. package/src/domains/eval/metrics/token-stream.ts +201 -31
  396. package/src/domains/eval/metrics/tracked.ts +40 -4
  397. package/src/domains/eval/runners/clio-run.ts +5 -2
  398. package/src/domains/eval/schema/suite.ts +28 -0
  399. package/src/domains/eval/schema/verdict.ts +2 -2
  400. package/src/domains/eval/store.ts +8 -1
  401. package/src/domains/eval/suites/resolve.ts +13 -1
  402. package/src/domains/eval/suites/run.ts +24 -3
  403. package/src/domains/evidence/trust-status.ts +10 -1
  404. package/src/domains/extensions/contract.ts +15 -1
  405. package/src/domains/extensions/discovery.ts +238 -41
  406. package/src/domains/extensions/extension.ts +105 -6
  407. package/src/domains/extensions/index.ts +24 -0
  408. package/src/domains/extensions/integrity.ts +189 -0
  409. package/src/domains/extensions/manager.ts +17 -1
  410. package/src/domains/extensions/resource-path.ts +27 -0
  411. package/src/domains/extensions/resources.ts +18 -38
  412. package/src/domains/extensions/snapshot-store.ts +39 -0
  413. package/src/domains/extensions/snapshot.ts +180 -0
  414. package/src/domains/extensions/state.ts +385 -57
  415. package/src/domains/extensions/types.ts +118 -1
  416. package/src/domains/interop/registry.ts +6 -2
  417. package/src/domains/interop/types.ts +4 -0
  418. package/src/domains/lifecycle/migrations/2026-09-01-extension-install-digests.ts +27 -0
  419. package/src/domains/lifecycle/migrations/index.ts +6 -0
  420. package/src/domains/lifecycle/naming-resources.ts +19 -4
  421. package/src/domains/lifecycle/naming-yazi.ts +10 -5
  422. package/src/domains/memory/task-memory-policy.ts +70 -26
  423. package/src/domains/memory/task-memory-telemetry.ts +1 -0
  424. package/src/domains/middleware/contract.ts +26 -0
  425. package/src/domains/middleware/extension.ts +24 -24
  426. package/src/domains/middleware/hook-receipts.ts +27 -4
  427. package/src/domains/middleware/hooks-io.ts +65 -32
  428. package/src/domains/middleware/hooks.ts +64 -0
  429. package/src/domains/middleware/index.ts +28 -5
  430. package/src/domains/middleware/marketplace-offer.ts +3 -35
  431. package/src/domains/middleware/memory-intervention.ts +127 -32
  432. package/src/domains/middleware/memory-step-endpoint.ts +3 -2
  433. package/src/domains/middleware/registrations.ts +326 -0
  434. package/src/domains/middleware/runtime.ts +28 -0
  435. package/src/domains/middleware/skills-reminder.ts +31 -2
  436. package/src/domains/middleware/snapshot.ts +20 -7
  437. package/src/domains/mux/contract.ts +38 -0
  438. package/src/domains/mux/detect.ts +6 -13
  439. package/src/domains/mux/index.ts +1 -1
  440. package/src/domains/mux/operations.ts +44 -5
  441. package/src/domains/mux/yazi/assets/yazi.toml +2 -2
  442. package/src/domains/mux/yazi/session.ts +53 -4
  443. package/src/domains/mux/yazi/theme.ts +117 -17
  444. package/src/domains/observability/compaction-usage.ts +118 -0
  445. package/src/domains/observability/contract.ts +10 -11
  446. package/src/domains/observability/cost.ts +1 -1
  447. package/src/domains/observability/extension.ts +17 -4
  448. package/src/domains/observability/out-of-turn-usage.ts +52 -21
  449. package/src/domains/observability/projection.ts +14 -90
  450. package/src/domains/observability/trace-store.ts +43 -7
  451. package/src/domains/prompts/compiler.ts +73 -53
  452. package/src/domains/prompts/contract.ts +15 -3
  453. package/src/domains/prompts/extension.ts +97 -9
  454. package/src/domains/prompts/fragments/identity/clio-worker.md +1 -3
  455. package/src/domains/prompts/fragments/identity/clio.md +6 -12
  456. package/src/domains/prompts/fragments/identity/docs-routing.md +1 -2
  457. package/src/domains/prompts/fragments/identity/self-awareness.md +3 -11
  458. package/src/domains/prompts/fragments/operating/contract.md +7 -15
  459. package/src/domains/prompts/fragments/operating/delegation.md +32 -34
  460. package/src/domains/prompts/fragments/operating/skills.md +10 -24
  461. package/src/domains/prompts/fragments/operating/worker.md +1 -8
  462. package/src/domains/providers/contract.ts +4 -1
  463. package/src/domains/providers/extension.ts +40 -9
  464. package/src/domains/providers/index.ts +1 -1
  465. package/src/domains/providers/model-capabilities.ts +9 -0
  466. package/src/domains/providers/model-discovery.ts +2 -0
  467. package/src/domains/providers/model-runtime-capabilities.ts +99 -25
  468. package/src/domains/providers/models/local-models/clio-coder-local-coding-targets.yaml +699 -114
  469. package/src/domains/providers/runtime-resolution.ts +31 -0
  470. package/src/domains/providers/runtimes/antigravity/antigravity-code.ts +225 -45
  471. package/src/domains/providers/runtimes/common/lmstudio-http.ts +6 -2
  472. package/src/domains/providers/runtimes/common/local-synth.ts +2 -0
  473. package/src/domains/providers/runtimes/common/probe-helpers.ts +7 -2
  474. package/src/domains/providers/runtimes/local-native/llamacpp.ts +9 -1
  475. package/src/domains/providers/runtimes/protocol/litellm.ts +119 -29
  476. package/src/domains/providers/support.ts +11 -5
  477. package/src/domains/providers/target-model-cache.ts +25 -2
  478. package/src/domains/providers/types/capability-flags.ts +2 -0
  479. package/src/domains/providers/types/cost-provenance.ts +19 -0
  480. package/src/domains/providers/types/local-model-quirks.ts +85 -37
  481. package/src/domains/providers/types/runtime-descriptor.ts +20 -1
  482. package/src/domains/providers/types/target-descriptor.ts +19 -0
  483. package/src/domains/resources/index.ts +3 -0
  484. package/src/domains/resources/skills/install.ts +72 -7
  485. package/src/domains/resources/skills/loader.ts +23 -19
  486. package/src/domains/resources/skills/marketplace.ts +63 -11
  487. package/src/domains/safety/autonomy.ts +15 -0
  488. package/src/domains/safety/call-target.ts +1 -1
  489. package/src/domains/safety/index.ts +1 -0
  490. package/src/domains/safety/loop-detector.ts +7 -4
  491. package/src/domains/safety/path-policy.ts +1 -1
  492. package/src/domains/safety/policy-engine.ts +34 -11
  493. package/src/domains/safety/protected-artifacts.ts +191 -88
  494. package/src/domains/safety/run-effects.ts +2 -22
  495. package/src/domains/safety/skill-authority.ts +55 -0
  496. package/src/domains/session/compaction/compact.ts +72 -22
  497. package/src/domains/session/entries.ts +6 -0
  498. package/src/domains/session/task-board.ts +10 -9
  499. package/src/domains/session/usage.ts +3 -3
  500. package/src/domains/share/archive.ts +164 -7
  501. package/src/engine/acp/server.ts +62 -9
  502. package/src/engine/agent.ts +13 -3
  503. package/src/engine/ai.ts +26 -8
  504. package/src/engine/antigravity/subprocess-runtime.ts +386 -120
  505. package/src/engine/api-registry.ts +3 -0
  506. package/src/engine/apis/llamacpp-residency.ts +3 -4
  507. package/src/engine/apis/lmstudio.ts +3 -3
  508. package/src/engine/apis/ollama-native.ts +6 -6
  509. package/src/engine/apis/openai-completions.ts +145 -39
  510. package/src/engine/apis/output-budget.ts +8 -18
  511. package/src/engine/apis/residency.ts +8 -27
  512. package/src/engine/external-subprocess.ts +114 -6
  513. package/src/engine/gemma-channel-filter.ts +19 -0
  514. package/src/engine/loop-guard.ts +92 -12
  515. package/src/engine/worker-runtime.ts +40 -11
  516. package/src/engine/worker-tools.ts +3 -1
  517. package/src/entry/background-model-metadata.ts +18 -0
  518. package/src/entry/compaction-prompt.ts +57 -0
  519. package/src/entry/extension-hook-sources.ts +28 -0
  520. package/src/entry/extension-reload.ts +309 -0
  521. package/src/entry/orchestrator.ts +464 -251
  522. package/src/entry/task-memory-lifecycle.ts +35 -0
  523. package/src/interactive/application-controller.ts +2 -1
  524. package/src/interactive/bus-notices.ts +8 -1
  525. package/src/interactive/chat-loop-messages.ts +16 -17
  526. package/src/interactive/chat-loop.ts +75 -3
  527. package/src/interactive/chat-panel.ts +36 -13
  528. package/src/interactive/chat-renderer.ts +72 -7
  529. package/src/interactive/cost-overlay.ts +26 -2
  530. package/src/interactive/dispatch-board.ts +6 -11
  531. package/src/interactive/footer/widgets.ts +13 -0
  532. package/src/interactive/interactive-application.ts +39 -4
  533. package/src/interactive/interactive-input-runtime.ts +4 -0
  534. package/src/interactive/interactive-presentation.ts +2 -2
  535. package/src/interactive/interactive-slash-runtime.ts +4 -1
  536. package/src/interactive/overlays/extensions.ts +9 -1
  537. package/src/interactive/overlays/help-reference.ts +13 -0
  538. package/src/interactive/overlays/settings.ts +27 -16
  539. package/src/interactive/panes-runtime.ts +111 -35
  540. package/src/interactive/prompt-cache-identity.ts +88 -0
  541. package/src/interactive/renderers/worker-entry.ts +32 -0
  542. package/src/interactive/slash-commands.ts +153 -20
  543. package/src/interactive/stream-pacing-policy.ts +0 -23
  544. package/src/interactive/theme/labels.ts +19 -13
  545. package/src/interactive/turn-context.ts +39 -20
  546. package/src/interactive/turn-recovery.ts +8 -0
  547. package/src/interactive/turn-runtime.ts +27 -11
  548. package/src/interactive/turn-state.ts +7 -0
  549. package/src/interactive/worker-receipts.ts +1 -0
  550. package/src/interactive/worker-stream.ts +6 -1
  551. package/src/interactive/yazi-bridge.ts +60 -6
  552. package/src/tools/agent-tools.ts +30 -1
  553. package/src/tools/artifact.ts +2 -2
  554. package/src/tools/ask-user.ts +3 -3
  555. package/src/tools/bash.ts +1 -1
  556. package/src/tools/bootstrap.ts +4 -0
  557. package/src/tools/builtin-tool-catalog.ts +52 -22
  558. package/src/tools/codewiki/code-nav-surface.ts +6 -0
  559. package/src/tools/codewiki/code-nav.ts +99 -13
  560. package/src/tools/context/docs-engine.ts +20 -7
  561. package/src/tools/context/index.ts +59 -21
  562. package/src/tools/core-bootstrap.ts +28 -6
  563. package/src/tools/credential-present.ts +1 -2
  564. package/src/tools/dispatch-arguments.ts +6 -1
  565. package/src/tools/dispatch-event-text.ts +10 -0
  566. package/src/tools/dispatch-plan.ts +49 -4
  567. package/src/tools/dispatch-run-events.ts +1 -1
  568. package/src/tools/dispatch-runner.ts +12 -0
  569. package/src/tools/dispatch-schema.ts +338 -0
  570. package/src/tools/dispatch-types.ts +3 -0
  571. package/src/tools/dispatch.ts +9 -254
  572. package/src/tools/ledger.ts +3 -5
  573. package/src/tools/monitor-surface.ts +5 -13
  574. package/src/tools/observation.ts +4 -5
  575. package/src/tools/panes-surface.ts +4 -11
  576. package/src/tools/panes.ts +4 -2
  577. package/src/tools/policy.ts +15 -2
  578. package/src/tools/read.ts +5 -6
  579. package/src/tools/registry.ts +41 -12
  580. package/src/tools/result-shaping.ts +18 -14
  581. package/src/tools/steer-surface.ts +1 -1
  582. package/src/tools/tasks.ts +1 -1
  583. package/src/tools/truncate.ts +6 -5
  584. package/src/tools/verify/surface.ts +6 -12
  585. package/src/tools/web-fetch-surface.ts +1 -3
  586. package/src/tools/worker-evidence.ts +3 -1
  587. package/src/worker/spec-contract.ts +4 -0
  588. package/dist/builtins-UJLMOVOV.js +0 -17
  589. package/dist/chunk-5QIAJV2D.js +0 -48
  590. package/dist/chunk-JZWT5J3Y.js +0 -814
  591. package/dist/chunk-K7VKOLQQ.js +0 -15
  592. package/dist/chunk-PMZCIOCJ.js +0 -25
  593. package/dist/chunk-SUW5DORT.js +0 -819
  594. package/dist/chunk-UOV2BYIW.js +0 -107
  595. package/dist/chunk-WR6U3OVP.js +0 -45
  596. package/dist/chunk-Y45G3AXC.js +0 -1558
  597. package/dist/reset-EOLM7GVE.js +0 -230
  598. package/dist/uninstall-N34PCTGJ.js +0 -331
  599. package/dist/upgrade-H7TOM7YL.js +0 -323
  600. package/docs/artifact-versions.md +0 -67
  601. package/docs/development-pipeline.md +0 -121
  602. package/docs/documentation-coverage.md +0 -46
  603. package/docs/documentation-guide.md +0 -167
  604. package/docs/time-conventions.md +0 -101
@@ -1,7 +1,7 @@
1
1
  import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
2
  import {
3
3
  compileExecutionPlan
4
- } from "./chunk-THYWACCR.js";
4
+ } from "./chunk-E3TPLWFX.js";
5
5
  import {
6
6
  deriveExecutionRole
7
7
  } from "./chunk-H7IXIC72.js";
@@ -94,4 +94,4 @@ function compileScoutTransition(input) {
94
94
  export {
95
95
  compileScoutTransition
96
96
  };
97
- //# sourceMappingURL=chunk-5YHDIDBP.js.map
97
+ //# sourceMappingURL=chunk-2UH2KFUP.js.map
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-RKKLTLYB.js";
5
5
  import {
6
6
  enabledExtensionResourceRoots
7
- } from "./chunk-SUW5DORT.js";
7
+ } from "./chunk-7DRAWPTZ.js";
8
8
  import {
9
9
  PATH_BOUNDARY_MAX_ENTRIES,
10
10
  normalizePathBoundary,
@@ -5073,4 +5073,4 @@ export {
5073
5073
  listFleetContracts,
5074
5074
  renderFleetPrompt
5075
5075
  };
5076
- //# sourceMappingURL=chunk-CTJ4RNAA.js.map
5076
+ //# sourceMappingURL=chunk-2VIKGWFZ.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
  ceilChars
4
- } from "./chunk-CWVRRIEI.js";
4
+ } from "./chunk-NZMNUPZZ.js";
5
5
  import {
6
6
  clioStateDir
7
7
  } from "./chunk-BYP5D4HI.js";
@@ -179,211 +179,6 @@ function compareForSnapshot(left, right) {
179
179
  return byCreated !== 0 ? byCreated : left.id.localeCompare(right.id);
180
180
  }
181
181
 
182
- // src/domains/memory/task-memory-telemetry.ts
183
- init_esm_shims();
184
- import { appendFileSync, mkdirSync, renameSync, statSync } from "node:fs";
185
- import { join } from "node:path";
186
- var TASK_MEMORY_TELEMETRY_VERSION = 2;
187
- var TASK_MEMORY_TELEMETRY_MAX_BYTES = 1024 * 1024;
188
- var TASK_MEMORY_TELEMETRY_FILE = "steps.jsonl";
189
- function createTaskMemoryTelemetrySink(options = {}) {
190
- const now = options.now ?? (() => /* @__PURE__ */ new Date());
191
- return {
192
- record(step) {
193
- try {
194
- const logDir = options.logDir ?? join(clioStateDir(), "memory");
195
- const record = taskMemoryTelemetryRecord(step, now());
196
- mkdirSync(logDir, { recursive: true });
197
- const path = join(logDir, TASK_MEMORY_TELEMETRY_FILE);
198
- try {
199
- if (statSync(path).size > TASK_MEMORY_TELEMETRY_MAX_BYTES) renameSync(path, `${path}.1`);
200
- } catch {
201
- }
202
- appendFileSync(path, `${JSON.stringify(record)}
203
- `);
204
- } catch {
205
- }
206
- }
207
- };
208
- }
209
- function taskMemoryTelemetryRecord(step, at) {
210
- const input = nonNegativeInteger(step.inputTokens);
211
- const output = nonNegativeInteger(step.outputTokens);
212
- return {
213
- version: TASK_MEMORY_TELEMETRY_VERSION,
214
- at: at.toISOString(),
215
- triggerReasons: [...new Set(step.triggerReasons)],
216
- tier: step.tier,
217
- bankDelta: step.bankDelta,
218
- decision: step.decision,
219
- reason: step.reason,
220
- bankOperations: nonNegativeInteger(step.bankOperations),
221
- droppedOperations: nonNegativeInteger(step.droppedOperations),
222
- citedEntries: nonNegativeInteger(step.citedEntries),
223
- tokenCost: { input, output, total: input + output },
224
- latencyMs: nonNegativeFinite(step.latencyMs)
225
- };
226
- }
227
- function taskMemoryBankDelta(before, after) {
228
- return {
229
- status: entryDelta(before.status === null ? [] : [before.status], after.status === null ? [] : [after.status]),
230
- knowledge: entryDelta(before.knowledge, after.knowledge),
231
- procedural: entryDelta(before.procedural, after.procedural)
232
- };
233
- }
234
- function parseTaskMemoryTelemetryRecord(value) {
235
- if (!isRecord(value) || !hasExactKeys(value, TELEMETRY_KEYS)) return null;
236
- if (value.version !== TASK_MEMORY_TELEMETRY_VERSION || !validIsoTimestamp(value.at)) return null;
237
- if (!validTriggerReasons(value.triggerReasons) || !isTier(value.tier) || !isDecision(value.decision)) return null;
238
- if (!isReason(value.reason) || !isNonNegativeInteger(value.citedEntries)) return null;
239
- if (!isNonNegativeInteger(value.bankOperations) || !isNonNegativeInteger(value.droppedOperations)) return null;
240
- const bankDelta = parseBankDelta(value.bankDelta);
241
- const tokenCost = parseTokenCost(value.tokenCost);
242
- if (bankDelta === null || tokenCost === null || !isNonNegativeFinite(value.latencyMs)) return null;
243
- return {
244
- version: TASK_MEMORY_TELEMETRY_VERSION,
245
- at: value.at,
246
- triggerReasons: value.triggerReasons,
247
- tier: value.tier,
248
- bankDelta,
249
- decision: value.decision,
250
- reason: value.reason,
251
- bankOperations: value.bankOperations,
252
- droppedOperations: value.droppedOperations,
253
- citedEntries: value.citedEntries,
254
- tokenCost,
255
- latencyMs: value.latencyMs
256
- };
257
- }
258
- var TELEMETRY_KEYS = [
259
- "version",
260
- "at",
261
- "triggerReasons",
262
- "tier",
263
- "bankDelta",
264
- "decision",
265
- "reason",
266
- "bankOperations",
267
- "droppedOperations",
268
- "citedEntries",
269
- "tokenCost",
270
- "latencyMs"
271
- ];
272
- var DELTA_KEYS = ["status", "knowledge", "procedural"];
273
- var CLASS_DELTA_KEYS = ["added", "updated", "deleted"];
274
- var TOKEN_KEYS = ["input", "output", "total"];
275
- var TRIGGERS = /* @__PURE__ */ new Set([
276
- "interval",
277
- "tool_error_streak",
278
- "loop_signal",
279
- "repeated_failure",
280
- "turn_end",
281
- "post_compaction",
282
- "manual"
283
- ]);
284
- var DECISIONS = /* @__PURE__ */ new Set([
285
- "silent",
286
- "injected",
287
- "gated",
288
- "timeout",
289
- "malformed",
290
- "dropped"
291
- ]);
292
- var REASONS = /* @__PURE__ */ new Set([
293
- "intervened",
294
- "model_silent",
295
- "duplicate_reminder",
296
- "suppressed",
297
- "uncited",
298
- "over_budget",
299
- "unparseable",
300
- "all_operations_invalid",
301
- "deadline",
302
- "timed_out",
303
- "endpoint_busy",
304
- "client_error",
305
- "no_client",
306
- "no_consumer",
307
- "step_in_flight",
308
- "llm_timeout_backoff",
309
- "no_repeated_failure",
310
- "bank_empty"
311
- ]);
312
- function entryDelta(before, after) {
313
- const old = new Map(before.map((entry) => [entry.id, entry]));
314
- const next = new Map(after.map((entry) => [entry.id, entry]));
315
- let added = 0;
316
- let updated = 0;
317
- let deleted = 0;
318
- for (const [id, entry] of next) {
319
- const previous = old.get(id);
320
- if (previous === void 0) added += 1;
321
- else if (!sameEntry(previous, entry)) updated += 1;
322
- }
323
- for (const id of old.keys()) {
324
- if (!next.has(id)) deleted += 1;
325
- }
326
- return { added, updated, deleted };
327
- }
328
- function sameEntry(left, right) {
329
- return left.content === right.content && left.createdAt === right.createdAt;
330
- }
331
- function parseBankDelta(value) {
332
- if (!isRecord(value) || !hasExactKeys(value, DELTA_KEYS)) return null;
333
- const status = parseClassDelta(value.status);
334
- const knowledge = parseClassDelta(value.knowledge);
335
- const procedural = parseClassDelta(value.procedural);
336
- return status === null || knowledge === null || procedural === null ? null : { status, knowledge, procedural };
337
- }
338
- function parseClassDelta(value) {
339
- if (!isRecord(value) || !hasExactKeys(value, CLASS_DELTA_KEYS)) return null;
340
- return isNonNegativeInteger(value.added) && isNonNegativeInteger(value.updated) && isNonNegativeInteger(value.deleted) ? { added: value.added, updated: value.updated, deleted: value.deleted } : null;
341
- }
342
- function parseTokenCost(value) {
343
- if (!isRecord(value) || !hasExactKeys(value, TOKEN_KEYS)) return null;
344
- if (!isNonNegativeInteger(value.input) || !isNonNegativeInteger(value.output) || !isNonNegativeInteger(value.total))
345
- return null;
346
- if (value.total !== value.input + value.output) return null;
347
- return { input: value.input, output: value.output, total: value.total };
348
- }
349
- function validTriggerReasons(value) {
350
- return Array.isArray(value) && value.length > 0 && value.length <= 3 && new Set(value).size === value.length && value.every((item) => typeof item === "string" && TRIGGERS.has(item));
351
- }
352
- function isTier(value) {
353
- return value === "rules" || value === "llm";
354
- }
355
- function isDecision(value) {
356
- return typeof value === "string" && DECISIONS.has(value);
357
- }
358
- function isReason(value) {
359
- return typeof value === "string" && REASONS.has(value);
360
- }
361
- function validIsoTimestamp(value) {
362
- if (typeof value !== "string" || value.length > 40) return false;
363
- const timestamp = Date.parse(value);
364
- return Number.isFinite(timestamp) && new Date(timestamp).toISOString() === value;
365
- }
366
- function isRecord(value) {
367
- return typeof value === "object" && value !== null && !Array.isArray(value);
368
- }
369
- function hasExactKeys(value, keys) {
370
- const actual = Object.keys(value).sort();
371
- const expected = [...keys].sort();
372
- return actual.length === expected.length && actual.every((key, index) => key === expected[index]);
373
- }
374
- function isNonNegativeInteger(value) {
375
- return typeof value === "number" && Number.isSafeInteger(value) && value >= 0;
376
- }
377
- function nonNegativeInteger(value) {
378
- return Number.isSafeInteger(value) && value >= 0 ? value : 0;
379
- }
380
- function isNonNegativeFinite(value) {
381
- return typeof value === "number" && Number.isFinite(value) && value >= 0;
382
- }
383
- function nonNegativeFinite(value) {
384
- return Number.isFinite(value) && value >= 0 ? value : 0;
385
- }
386
-
387
182
  // src/domains/memory/task-memory-policy.ts
388
183
  init_esm_shims();
389
184
 
@@ -431,6 +226,8 @@ function buildMemoryInterventionUserPrompt(input) {
431
226
  // src/domains/memory/task-memory-policy.ts
432
227
  var TASK_MEMORY_POLICY_MAX_OPERATIONS = 8;
433
228
  var TASK_MEMORY_POLICY_DEFAULT_TIMEOUT_MS = 6e4;
229
+ var TaskMemoryEndpointBusyError = class extends Error {
230
+ };
434
231
  var TASK_PROMPT_MAX_CHARS = 2e3;
435
232
  var TRAJECTORY_PROMPT_MAX_CHARS = 4e3;
436
233
  function renderTrajectory(trajectory) {
@@ -454,10 +251,31 @@ async function runTaskMemoryPolicy(bank, client, input) {
454
251
  const timeoutMs = positiveInteger2(input.timeoutMs, TASK_MEMORY_POLICY_DEFAULT_TIMEOUT_MS);
455
252
  const timeoutMarker = /* @__PURE__ */ Symbol("task-memory-timeout");
456
253
  let timer;
254
+ const cancelledMarker = /* @__PURE__ */ Symbol("task-memory-cancelled");
255
+ let cancel = () => {
256
+ };
257
+ const cancelled = new Promise((resolve) => {
258
+ cancel = () => {
259
+ controller.abort();
260
+ resolve(cancelledMarker);
261
+ };
262
+ });
263
+ input.signal?.addEventListener("abort", cancel, { once: true });
264
+ if (input.signal?.aborted) cancel();
457
265
  let userPrompt = "";
458
266
  let rawResponse = "";
459
267
  let clientError = null;
460
268
  let stepUsage = null;
269
+ let usageReported = false;
270
+ const reportUsage = (usage) => {
271
+ if (usageReported) return;
272
+ usageReported = true;
273
+ stepUsage = usage;
274
+ try {
275
+ input.onStepUsage?.(usage);
276
+ } catch {
277
+ }
278
+ };
461
279
  const settle = (decision, reason, parts = {}) => {
462
280
  const result = {
463
281
  decision,
@@ -465,27 +283,29 @@ async function runTaskMemoryPolicy(bank, client, input) {
465
283
  bankOperations: parts.bankOperations ?? 0,
466
284
  droppedOperations: parts.droppedOperations ?? 0,
467
285
  reminder: parts.reminder ?? null,
468
- inputTokens: parts.inputTokens ?? 0,
469
- outputTokens: parts.outputTokens ?? 0,
286
+ inputTokens: parts.inputTokens ?? stepUsage?.input ?? 0,
287
+ outputTokens: parts.outputTokens ?? stepUsage?.output ?? 0,
470
288
  usage: stepUsage
471
289
  };
472
290
  try {
473
- input.onEnvelope?.({
474
- systemPrompt: MEMORY_INTERVENTION_SYSTEM_PROMPT,
475
- userPrompt,
476
- response: rawResponse,
477
- decision,
478
- reason,
479
- bankOperations: result.bankOperations,
480
- droppedOperations: result.droppedOperations,
481
- reminder: result.reminder,
482
- error: clientError
483
- });
291
+ if (input.isCurrent?.() !== false)
292
+ input.onEnvelope?.({
293
+ systemPrompt: MEMORY_INTERVENTION_SYSTEM_PROMPT,
294
+ userPrompt,
295
+ response: rawResponse,
296
+ decision,
297
+ reason,
298
+ bankOperations: result.bankOperations,
299
+ droppedOperations: result.droppedOperations,
300
+ reminder: result.reminder,
301
+ error: clientError
302
+ });
484
303
  } catch {
485
304
  }
486
305
  return result;
487
306
  };
488
307
  try {
308
+ if (input.signal?.aborted || input.isCurrent?.() === false) return settle("silent", "scope_changed");
489
309
  userPrompt = buildMemoryInterventionUserPrompt({
490
310
  task: input.task.slice(0, TASK_PROMPT_MAX_CHARS),
491
311
  bank: bank.render(input.maxTokens),
@@ -495,23 +315,29 @@ async function runTaskMemoryPolicy(bank, client, input) {
495
315
  systemPrompt: MEMORY_INTERVENTION_SYSTEM_PROMPT,
496
316
  userPrompt,
497
317
  maxTokens: positiveInteger2(input.modelMaxTokens, input.maxTokens),
498
- signal: controller.signal
318
+ signal: controller.signal,
319
+ onUsage: reportUsage
320
+ }).then((response2) => {
321
+ if (response2.usage !== void 0) reportUsage(response2.usage);
322
+ return response2;
499
323
  });
500
324
  const timeout = new Promise((resolve) => {
501
325
  timer = setTimeout(() => resolve(timeoutMarker), timeoutMs);
502
326
  });
503
- const response = await Promise.race([completion, timeout]);
327
+ const response = await Promise.race([completion, timeout, cancelled]);
328
+ if (response === cancelledMarker) return settle("silent", "scope_changed");
504
329
  if (response === timeoutMarker) {
505
330
  controller.abort();
506
331
  void completion.catch(() => void 0);
507
332
  return settle("timeout", "deadline");
508
333
  }
509
334
  rawResponse = typeof response.text === "string" ? response.text : "";
510
- stepUsage = response.usage ?? null;
335
+ stepUsage = response.usage ?? stepUsage;
511
336
  const usage = {
512
- inputTokens: nonNegativeInteger2(response.inputTokens ?? stepUsage?.input),
513
- outputTokens: nonNegativeInteger2(response.outputTokens ?? stepUsage?.output)
337
+ inputTokens: nonNegativeInteger(response.inputTokens ?? stepUsage?.input),
338
+ outputTokens: nonNegativeInteger(response.outputTokens ?? stepUsage?.output)
514
339
  };
340
+ if (input.signal?.aborted || input.isCurrent?.() === false) return settle("silent", "scope_changed", usage);
515
341
  const read = readPolicyStep(rawResponse);
516
342
  if (!read.ok) return settle("malformed", read.reason, { ...usage, droppedOperations: read.dropped });
517
343
  const operations = resolveOperations(bank, read.step.operations);
@@ -531,11 +357,13 @@ async function runTaskMemoryPolicy(bank, client, input) {
531
357
  bank.recordInjection(citedIds);
532
358
  return settle("injected", "intervened", { ...counts, reminder });
533
359
  } catch (error) {
360
+ if (error instanceof TaskMemoryEndpointBusyError) return settle("silent", "endpoint_busy");
534
361
  clientError = errorMessage(error);
535
362
  if (isTimeoutError(error)) return settle("timeout", "timed_out");
536
363
  return settle("silent", "client_error");
537
364
  } finally {
538
365
  if (timer !== void 0) clearTimeout(timer);
366
+ input.signal?.removeEventListener("abort", cancel);
539
367
  }
540
368
  }
541
369
  var OPERATIONS_OPEN = "<operations>";
@@ -623,10 +451,10 @@ function readOperations(value) {
623
451
  const operations = [];
624
452
  let dropped = 0;
625
453
  for (const raw of value) {
626
- if (!isRecord2(raw) || typeof raw.op !== "string") return null;
454
+ if (!isRecord(raw) || typeof raw.op !== "string") return null;
627
455
  switch (raw.op) {
628
456
  case "update_status": {
629
- if (!hasExactKeys2(raw, ["op", "content"])) return null;
457
+ if (!hasExactKeys(raw, ["op", "content"])) return null;
630
458
  const content = boundedContent(raw.content);
631
459
  if (content === null) return null;
632
460
  operations.push({ op: raw.op, content });
@@ -634,7 +462,7 @@ function readOperations(value) {
634
462
  }
635
463
  case "save_knowledge":
636
464
  case "save_procedural": {
637
- if (!hasExactKeys2(raw, raw.id === void 0 ? ["op", "content"] : ["op", "content", "id"])) return null;
465
+ if (!hasExactKeys(raw, raw.id === void 0 ? ["op", "content"] : ["op", "content", "id"])) return null;
638
466
  const content = boundedContent(raw.content);
639
467
  if (content === null) return null;
640
468
  if (raw.id !== void 0 && !nonEmptyString(raw.id)) return null;
@@ -644,7 +472,7 @@ function readOperations(value) {
644
472
  break;
645
473
  }
646
474
  case "delete":
647
- if (!hasExactKeys2(raw, ["op", "id"]) || !nonEmptyString(raw.id)) return null;
475
+ if (!hasExactKeys(raw, ["op", "id"]) || !nonEmptyString(raw.id)) return null;
648
476
  operations.push({ op: raw.op, id: raw.id });
649
477
  break;
650
478
  default:
@@ -715,10 +543,10 @@ function boundedContent(value) {
715
543
  const normalized = value.replace(/\s+/gu, " ").trim();
716
544
  return normalized.length > 0 && normalized.length <= TASK_MEMORY_CONTENT_MAX_CHARS ? normalized : null;
717
545
  }
718
- function isRecord2(value) {
546
+ function isRecord(value) {
719
547
  return value !== null && typeof value === "object" && !Array.isArray(value);
720
548
  }
721
- function hasExactKeys2(record, expected) {
549
+ function hasExactKeys(record, expected) {
722
550
  const keys = Object.keys(record).sort();
723
551
  return keys.length === expected.length && [...expected].sort().every((key, index) => keys[index] === key);
724
552
  }
@@ -728,7 +556,7 @@ function nonEmptyString(value) {
728
556
  function positiveInteger2(value, fallback) {
729
557
  return value !== void 0 && Number.isInteger(value) && value > 0 ? value : fallback;
730
558
  }
731
- function nonNegativeInteger2(value) {
559
+ function nonNegativeInteger(value) {
732
560
  return value !== void 0 && Number.isInteger(value) && value >= 0 ? value : 0;
733
561
  }
734
562
  function isTimeoutError(error) {
@@ -742,16 +570,223 @@ function errorMessage(error) {
742
570
  return typeof error === "string" && error.length > 0 ? error : "an unknown client failure";
743
571
  }
744
572
 
573
+ // src/domains/memory/task-memory-telemetry.ts
574
+ init_esm_shims();
575
+ import { appendFileSync, mkdirSync, renameSync, statSync } from "node:fs";
576
+ import { join } from "node:path";
577
+ var TASK_MEMORY_TELEMETRY_VERSION = 2;
578
+ var TASK_MEMORY_TELEMETRY_MAX_BYTES = 1024 * 1024;
579
+ var TASK_MEMORY_TELEMETRY_FILE = "steps.jsonl";
580
+ function createTaskMemoryTelemetrySink(options = {}) {
581
+ const now = options.now ?? (() => /* @__PURE__ */ new Date());
582
+ return {
583
+ record(step) {
584
+ try {
585
+ const logDir = options.logDir ?? join(clioStateDir(), "memory");
586
+ const record = taskMemoryTelemetryRecord(step, now());
587
+ mkdirSync(logDir, { recursive: true });
588
+ const path = join(logDir, TASK_MEMORY_TELEMETRY_FILE);
589
+ try {
590
+ if (statSync(path).size > TASK_MEMORY_TELEMETRY_MAX_BYTES) renameSync(path, `${path}.1`);
591
+ } catch {
592
+ }
593
+ appendFileSync(path, `${JSON.stringify(record)}
594
+ `);
595
+ } catch {
596
+ }
597
+ }
598
+ };
599
+ }
600
+ function taskMemoryTelemetryRecord(step, at) {
601
+ const input = nonNegativeInteger2(step.inputTokens);
602
+ const output = nonNegativeInteger2(step.outputTokens);
603
+ return {
604
+ version: TASK_MEMORY_TELEMETRY_VERSION,
605
+ at: at.toISOString(),
606
+ triggerReasons: [...new Set(step.triggerReasons)],
607
+ tier: step.tier,
608
+ bankDelta: step.bankDelta,
609
+ decision: step.decision,
610
+ reason: step.reason,
611
+ bankOperations: nonNegativeInteger2(step.bankOperations),
612
+ droppedOperations: nonNegativeInteger2(step.droppedOperations),
613
+ citedEntries: nonNegativeInteger2(step.citedEntries),
614
+ tokenCost: { input, output, total: input + output },
615
+ latencyMs: nonNegativeFinite(step.latencyMs)
616
+ };
617
+ }
618
+ function taskMemoryBankDelta(before, after) {
619
+ return {
620
+ status: entryDelta(before.status === null ? [] : [before.status], after.status === null ? [] : [after.status]),
621
+ knowledge: entryDelta(before.knowledge, after.knowledge),
622
+ procedural: entryDelta(before.procedural, after.procedural)
623
+ };
624
+ }
625
+ function parseTaskMemoryTelemetryRecord(value) {
626
+ if (!isRecord2(value) || !hasExactKeys2(value, TELEMETRY_KEYS)) return null;
627
+ if (value.version !== TASK_MEMORY_TELEMETRY_VERSION || !validIsoTimestamp(value.at)) return null;
628
+ if (!validTriggerReasons(value.triggerReasons) || !isTier(value.tier) || !isDecision(value.decision)) return null;
629
+ if (!isReason(value.reason) || !isNonNegativeInteger(value.citedEntries)) return null;
630
+ if (!isNonNegativeInteger(value.bankOperations) || !isNonNegativeInteger(value.droppedOperations)) return null;
631
+ const bankDelta = parseBankDelta(value.bankDelta);
632
+ const tokenCost = parseTokenCost(value.tokenCost);
633
+ if (bankDelta === null || tokenCost === null || !isNonNegativeFinite(value.latencyMs)) return null;
634
+ return {
635
+ version: TASK_MEMORY_TELEMETRY_VERSION,
636
+ at: value.at,
637
+ triggerReasons: value.triggerReasons,
638
+ tier: value.tier,
639
+ bankDelta,
640
+ decision: value.decision,
641
+ reason: value.reason,
642
+ bankOperations: value.bankOperations,
643
+ droppedOperations: value.droppedOperations,
644
+ citedEntries: value.citedEntries,
645
+ tokenCost,
646
+ latencyMs: value.latencyMs
647
+ };
648
+ }
649
+ var TELEMETRY_KEYS = [
650
+ "version",
651
+ "at",
652
+ "triggerReasons",
653
+ "tier",
654
+ "bankDelta",
655
+ "decision",
656
+ "reason",
657
+ "bankOperations",
658
+ "droppedOperations",
659
+ "citedEntries",
660
+ "tokenCost",
661
+ "latencyMs"
662
+ ];
663
+ var DELTA_KEYS = ["status", "knowledge", "procedural"];
664
+ var CLASS_DELTA_KEYS = ["added", "updated", "deleted"];
665
+ var TOKEN_KEYS = ["input", "output", "total"];
666
+ var TRIGGERS = /* @__PURE__ */ new Set([
667
+ "interval",
668
+ "tool_error_streak",
669
+ "loop_signal",
670
+ "repeated_failure",
671
+ "turn_end",
672
+ "post_compaction",
673
+ "manual"
674
+ ]);
675
+ var DECISIONS = /* @__PURE__ */ new Set([
676
+ "silent",
677
+ "injected",
678
+ "gated",
679
+ "timeout",
680
+ "malformed",
681
+ "dropped"
682
+ ]);
683
+ var REASONS = /* @__PURE__ */ new Set([
684
+ "intervened",
685
+ "model_silent",
686
+ "duplicate_reminder",
687
+ "suppressed",
688
+ "uncited",
689
+ "over_budget",
690
+ "unparseable",
691
+ "all_operations_invalid",
692
+ "deadline",
693
+ "timed_out",
694
+ "endpoint_busy",
695
+ "client_error",
696
+ "no_client",
697
+ "no_consumer",
698
+ "step_in_flight",
699
+ "llm_timeout_backoff",
700
+ "no_repeated_failure",
701
+ "bank_empty",
702
+ "scope_changed"
703
+ ]);
704
+ function entryDelta(before, after) {
705
+ const old = new Map(before.map((entry) => [entry.id, entry]));
706
+ const next = new Map(after.map((entry) => [entry.id, entry]));
707
+ let added = 0;
708
+ let updated = 0;
709
+ let deleted = 0;
710
+ for (const [id, entry] of next) {
711
+ const previous = old.get(id);
712
+ if (previous === void 0) added += 1;
713
+ else if (!sameEntry(previous, entry)) updated += 1;
714
+ }
715
+ for (const id of old.keys()) {
716
+ if (!next.has(id)) deleted += 1;
717
+ }
718
+ return { added, updated, deleted };
719
+ }
720
+ function sameEntry(left, right) {
721
+ return left.content === right.content && left.createdAt === right.createdAt;
722
+ }
723
+ function parseBankDelta(value) {
724
+ if (!isRecord2(value) || !hasExactKeys2(value, DELTA_KEYS)) return null;
725
+ const status = parseClassDelta(value.status);
726
+ const knowledge = parseClassDelta(value.knowledge);
727
+ const procedural = parseClassDelta(value.procedural);
728
+ return status === null || knowledge === null || procedural === null ? null : { status, knowledge, procedural };
729
+ }
730
+ function parseClassDelta(value) {
731
+ if (!isRecord2(value) || !hasExactKeys2(value, CLASS_DELTA_KEYS)) return null;
732
+ return isNonNegativeInteger(value.added) && isNonNegativeInteger(value.updated) && isNonNegativeInteger(value.deleted) ? { added: value.added, updated: value.updated, deleted: value.deleted } : null;
733
+ }
734
+ function parseTokenCost(value) {
735
+ if (!isRecord2(value) || !hasExactKeys2(value, TOKEN_KEYS)) return null;
736
+ if (!isNonNegativeInteger(value.input) || !isNonNegativeInteger(value.output) || !isNonNegativeInteger(value.total))
737
+ return null;
738
+ if (value.total !== value.input + value.output) return null;
739
+ return { input: value.input, output: value.output, total: value.total };
740
+ }
741
+ function validTriggerReasons(value) {
742
+ return Array.isArray(value) && value.length > 0 && value.length <= 3 && new Set(value).size === value.length && value.every((item) => typeof item === "string" && TRIGGERS.has(item));
743
+ }
744
+ function isTier(value) {
745
+ return value === "rules" || value === "llm";
746
+ }
747
+ function isDecision(value) {
748
+ return typeof value === "string" && DECISIONS.has(value);
749
+ }
750
+ function isReason(value) {
751
+ return typeof value === "string" && REASONS.has(value);
752
+ }
753
+ function validIsoTimestamp(value) {
754
+ if (typeof value !== "string" || value.length > 40) return false;
755
+ const timestamp = Date.parse(value);
756
+ return Number.isFinite(timestamp) && new Date(timestamp).toISOString() === value;
757
+ }
758
+ function isRecord2(value) {
759
+ return typeof value === "object" && value !== null && !Array.isArray(value);
760
+ }
761
+ function hasExactKeys2(value, keys) {
762
+ const actual = Object.keys(value).sort();
763
+ const expected = [...keys].sort();
764
+ return actual.length === expected.length && actual.every((key, index) => key === expected[index]);
765
+ }
766
+ function isNonNegativeInteger(value) {
767
+ return typeof value === "number" && Number.isSafeInteger(value) && value >= 0;
768
+ }
769
+ function nonNegativeInteger2(value) {
770
+ return Number.isSafeInteger(value) && value >= 0 ? value : 0;
771
+ }
772
+ function isNonNegativeFinite(value) {
773
+ return typeof value === "number" && Number.isFinite(value) && value >= 0;
774
+ }
775
+ function nonNegativeFinite(value) {
776
+ return Number.isFinite(value) && value >= 0 ? value : 0;
777
+ }
778
+
745
779
  export {
746
780
  TASK_MEMORY_DEFAULT_KNOWLEDGE_CAP,
747
781
  TASK_MEMORY_DEFAULT_PROCEDURAL_CAP,
748
782
  TASK_MEMORY_CONTENT_MAX_CHARS,
749
783
  TaskMemoryBank,
750
784
  TASK_MEMORY_POLICY_DEFAULT_TIMEOUT_MS,
785
+ TaskMemoryEndpointBusyError,
751
786
  runTaskMemoryPolicy,
752
787
  TASK_MEMORY_TELEMETRY_FILE,
753
788
  createTaskMemoryTelemetrySink,
754
789
  taskMemoryBankDelta,
755
790
  parseTaskMemoryTelemetryRecord
756
791
  };
757
- //# sourceMappingURL=chunk-I66EAJFY.js.map
792
+ //# sourceMappingURL=chunk-2WZ546HR.js.map
@@ -7,10 +7,10 @@ import {
7
7
  init_esm_shims();
8
8
  var PANES_PRESETS = [
9
9
  {
10
- id: "yazi",
10
+ id: "files",
11
11
  /** Probed through the toolchain resolution ladder before the pane is split. */
12
12
  binary: "yazi",
13
- summary: "file manager rooted at the workspace",
13
+ summary: "file view rooted at the workspace; picks land in the composer",
14
14
  /** Printed verbatim when the probe finds nothing. */
15
15
  installHint: "clio-coder tools install yazi"
16
16
  },
@@ -31,10 +31,15 @@ var PANES_PRESET_IDS = PANES_PRESETS.map((preset) => preset.id);
31
31
  function isPanesPresetId(value) {
32
32
  return PANES_PRESETS.some((preset) => preset.id === value);
33
33
  }
34
+ var PANES_PRESET_ALIASES = { yazi: "files" };
35
+ function resolvePanesPresetId(value) {
36
+ if (isPanesPresetId(value)) return value;
37
+ return PANES_PRESET_ALIASES[value] ?? null;
38
+ }
34
39
 
35
40
  export {
36
41
  PANES_PRESETS,
37
42
  PANES_PRESET_IDS,
38
- isPanesPresetId
43
+ resolvePanesPresetId
39
44
  };
40
- //# sourceMappingURL=chunk-GIZNH63R.js.map
45
+ //# sourceMappingURL=chunk-35MSIRKH.js.map