@iowarp/clio-coder 0.3.7 → 0.3.9

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 (400) hide show
  1. package/CHANGELOG.md +80 -0
  2. package/README.md +13 -4
  3. package/dist/{acp-SK4MD6MM.js → acp-7LOELQFP.js} +13 -13
  4. package/dist/{agents-2FN2K6ME.js → agents-FIBG2SHA.js} +41 -37
  5. package/dist/assets/codewiki.json +1 -1
  6. package/dist/{auth-QIYZWM5I.js → auth-OI4LIH2I.js} +31 -24
  7. package/dist/builtins-AD25UL3C.js +17 -0
  8. package/dist/{chunk-5FR74PWO.js → chunk-2JDWVJND.js} +2 -2
  9. package/dist/chunk-3DPEIQKN.js +113 -0
  10. package/dist/{chunk-EOOQZZDE.js → chunk-3DUR4WUA.js} +19 -19
  11. package/dist/{chunk-WHJYKASB.js → chunk-3MRC2YSQ.js} +2 -2
  12. package/dist/{chunk-EBEFWSGL.js → chunk-3UUY7R3Z.js} +14 -10
  13. package/dist/{chunk-LADCF22A.js → chunk-3V5AYSEQ.js} +113 -54
  14. package/dist/{chunk-BMWK7ZIZ.js → chunk-465CC7FK.js} +16 -13
  15. package/dist/{chunk-5WIGXA4T.js → chunk-47CMYGET.js} +111 -4
  16. package/dist/{chunk-CEYBNUGC.js → chunk-4H6ULJ3H.js} +378 -36
  17. package/dist/{chunk-YTYFXUI3.js → chunk-4LJX2PUC.js} +9 -9
  18. package/dist/{chunk-DOOEX22V.js → chunk-56KB5IJP.js} +5 -5
  19. package/dist/{chunk-SPULKLCF.js → chunk-5DQRIYDZ.js} +2 -2
  20. package/dist/{chunk-TSHXZTOQ.js → chunk-5HFBWUMU.js} +23 -11
  21. package/dist/{chunk-5UJ6ECTS.js → chunk-5PVQ4SRS.js} +80 -8
  22. package/dist/{chunk-ZWLZP4ZT.js → chunk-5QKCQQ3E.js} +359 -17
  23. package/dist/{chunk-6M7VS3J3.js → chunk-5T7RBWN2.js} +111 -5
  24. package/dist/chunk-774ILSRL.js +172 -0
  25. package/dist/chunk-7C6RYZGQ.js +391 -0
  26. package/dist/{chunk-GH5622CP.js → chunk-A2NJGIB3.js} +2 -2
  27. package/dist/{chunk-C4JBQ5SR.js → chunk-AD7Y7STJ.js} +6 -6
  28. package/dist/{chunk-GEYXPTRF.js → chunk-AEYBF3TB.js} +33 -12
  29. package/dist/{chunk-2SFS6XQE.js → chunk-AMKHQW3C.js} +3 -2
  30. package/dist/{chunk-D4MDIG46.js → chunk-B5CSFE7B.js} +7 -7
  31. package/dist/{chunk-MXI6J5JF.js → chunk-B5XRQOLB.js} +10 -10
  32. package/dist/{chunk-X2KV5FXT.js → chunk-BVDVID7E.js} +2 -2
  33. package/dist/{chunk-JNXPYBB4.js → chunk-CA42X6KT.js} +3 -3
  34. package/dist/{chunk-VREKEFLL.js → chunk-D73KXYPF.js} +3 -3
  35. package/dist/{chunk-JTSEDYVQ.js → chunk-DG4M6ZUE.js} +7 -7
  36. package/dist/{chunk-DQA7QLMD.js → chunk-EBOC7MT3.js} +10 -25
  37. package/dist/{chunk-KZ2H5X4G.js → chunk-ECUO3KDP.js} +129 -14
  38. package/dist/{chunk-JRIO5UD2.js → chunk-EQ63NRB7.js} +5 -5
  39. package/dist/{chunk-YD734TPH.js → chunk-FALJGAWU.js} +2 -2
  40. package/dist/{chunk-GWS3VEIW.js → chunk-FWDFM5ZU.js} +24 -3
  41. package/dist/{chunk-XEGB6BCN.js → chunk-GAYUJ7LE.js} +68 -14
  42. package/dist/{chunk-UND3GU2L.js → chunk-H7IXIC72.js} +2 -2
  43. package/dist/{chunk-IR4CFBFN.js → chunk-HAY4ZE2P.js} +12 -12
  44. package/dist/{chunk-UVDSQ6LW.js → chunk-HCBCAYZU.js} +74 -147
  45. package/dist/{chunk-4DWFMQDR.js → chunk-HJB5IUKP.js} +89 -145
  46. package/dist/{chunk-M4AKACEO.js → chunk-HKO36JWF.js} +33 -5
  47. package/dist/{chunk-KCMKRQX4.js → chunk-HPCTNZM2.js} +45 -82
  48. package/dist/{chunk-465YSENW.js → chunk-IFBNV6H6.js} +3 -3
  49. package/dist/{chunk-FJ3H4MN5.js → chunk-IHKBWSXF.js} +2 -2
  50. package/dist/chunk-JEQQR47K.js +3025 -0
  51. package/dist/{chunk-FO5ZOVUY.js → chunk-KV2AOLDF.js} +27 -7
  52. package/dist/chunk-LU7P4LHA.js +33 -0
  53. package/dist/{chunk-6TUKSZVF.js → chunk-LXPJXFM5.js} +11 -11
  54. package/dist/{chunk-VQNODYQ4.js → chunk-MIX5N5AC.js} +488 -3668
  55. package/dist/chunk-MLOK6ZOS.js +2888 -0
  56. package/dist/{chunk-ZZMN5OM4.js → chunk-MV2VUEJC.js} +2 -2
  57. package/dist/{chunk-MVVUPGPW.js → chunk-MXHC5QYU.js} +6 -6
  58. package/dist/{chunk-OBMAI2DP.js → chunk-N3PBVRTZ.js} +12 -388
  59. package/dist/{chunk-WJHBC77E.js → chunk-N5XKWMDW.js} +17 -7
  60. package/dist/{chunk-5C3AQNDW.js → chunk-NNNWO6F2.js} +124 -36
  61. package/dist/{chunk-UFQ3F4FW.js → chunk-NQ6UCCOD.js} +4 -4
  62. package/dist/chunk-NUGM5KR6.js +165 -0
  63. package/dist/{chunk-DMD2AGVS.js → chunk-NZU6YDNV.js} +20 -18
  64. package/dist/{chunk-WHGPSPT5.js → chunk-O6I4CIEU.js} +151 -13
  65. package/dist/{chunk-XN3L4EYL.js → chunk-OEDBCISO.js} +2 -2
  66. package/dist/{chunk-PD3MESLB.js → chunk-P3JGPQFL.js} +4 -4
  67. package/dist/{chunk-UHXRNZ2J.js → chunk-PNY46YEY.js} +23 -6
  68. package/dist/{chunk-THKY7CD7.js → chunk-PZ4I4JE2.js} +134 -29
  69. package/dist/{chunk-SROCI7ZU.js → chunk-QQ7EKM72.js} +5 -5
  70. package/dist/{chunk-QCTRSGHQ.js → chunk-R7LNVMCS.js} +91 -53
  71. package/dist/{chunk-GOXNB3AO.js → chunk-RAPCMZL4.js} +75 -4
  72. package/dist/chunk-RKKLTLYB.js +45 -0
  73. package/dist/{chunk-OB5HIGJY.js → chunk-RKRLDWD3.js} +4 -1
  74. package/dist/{chunk-DJNLUABN.js → chunk-S4COXYBG.js} +588 -32
  75. package/dist/{chunk-3HAPLH5M.js → chunk-T3Z6VAAF.js} +172 -11
  76. package/dist/{chunk-FOT2FX5J.js → chunk-TD7UE2L5.js} +12 -10
  77. package/dist/{chunk-UUANF5CR.js → chunk-TEO2TLVN.js} +856 -967
  78. package/dist/{chunk-FCSXB6T2.js → chunk-UOSL25KY.js} +14 -2
  79. package/dist/{chunk-EELBMBT6.js → chunk-VKBMFOYV.js} +74 -15
  80. package/dist/chunk-VO2LKSTM.js +165 -0
  81. package/dist/{chunk-5C77SEEY.js → chunk-VPTUJU4P.js} +3 -3
  82. package/dist/{chunk-WEH5XRJQ.js → chunk-WIE7ZOSW.js} +2 -2
  83. package/dist/{chunk-J7PIKKWC.js → chunk-WXCJ7VME.js} +8 -8
  84. package/dist/{chunk-4DGYLA73.js → chunk-XDOQXGFO.js} +22 -7
  85. package/dist/{chunk-PPAMZ32Z.js → chunk-XK56QHLX.js} +6 -1
  86. package/dist/{chunk-AB4XIIVB.js → chunk-YKOFT37S.js} +6 -6
  87. package/dist/chunk-YSEHGPCT.js +127 -0
  88. package/dist/{chunk-HFSBBKSQ.js → chunk-YW7UVM5V.js} +138 -3
  89. package/dist/cli/index.js +32 -32
  90. package/dist/{clio-WBVQEBKO.js → clio-LT5V7SSZ.js} +9 -9
  91. package/dist/{code-nav-FGGFIE7L.js → code-nav-LMW275PA.js} +5 -5
  92. package/dist/codewiki/build-worker.js +4 -4
  93. package/dist/{components-F7OEATSO.js → components-ZFA3SAER.js} +8 -8
  94. package/dist/{config-TRBL3RCF.js → config-RXS5T3JT.js} +98 -65
  95. package/dist/{configure-OLCVPHNM.js → configure-2WYWSCSD.js} +26 -22
  96. package/dist/{context-MJIJ6GOX.js → context-I3BTOTCS.js} +12 -12
  97. package/dist/{context-XEWE3MOJ.js → context-MVOORGMF.js} +54 -47
  98. package/dist/{context-WFPKQSM6.js → context-PALKKQYL.js} +28 -28
  99. package/dist/{context-clear-KNOS2JPB.js → context-clear-N2WOYZ2K.js} +53 -46
  100. package/dist/{context-index-SSR5ECNE.js → context-index-HNG3MOME.js} +6 -6
  101. package/dist/{context-working-set-EUXAZI6N.js → context-working-set-MIEVECVZ.js} +17 -18
  102. package/dist/{dispatch-runner-B7MTOVKL.js → dispatch-runner-VVA4SRRH.js} +90 -61
  103. package/dist/{docs-FLJTIDSE.js → docs-7LQ23DLM.js} +8 -8
  104. package/dist/doctor-TWBWFK5V.js +165 -0
  105. package/dist/eval-IJ5VEZDJ.js +4483 -0
  106. package/dist/{evidence-JZNBUOQZ.js → evidence-L5APPXNV.js} +68 -61
  107. package/dist/{evolve-FJVC4KKI.js → evolve-RGNKFJ52.js} +47 -40
  108. package/dist/{extensions-IQL36S7K.js → extensions-7WYWUX5A.js} +13 -7
  109. package/dist/{fleet-BDKYJFCP.js → fleet-6CNVBZZP.js} +113 -76
  110. package/dist/{fleet-commands-ZFIWZSB3.js → fleet-commands-L2SXSYEI.js} +10 -10
  111. package/dist/{fleet-graph-Y6HPXIVF.js → fleet-graph-2J3OOIPO.js} +17 -15
  112. package/dist/{fleet-preflight-BHSNPBMH.js → fleet-preflight-CZRJ4JP5.js} +5 -6
  113. package/dist/{fleet-validate-BIYREGIK.js → fleet-validate-C5RI6DP7.js} +20 -19
  114. package/dist/{init-LQUB5COQ.js → init-VBN2ACVA.js} +70 -63
  115. package/dist/{library-NJAHIGG4.js → library-JHGUMLY2.js} +22 -20
  116. package/dist/{memory-OG6HOYKM.js → memory-K4OQIYWG.js} +49 -42
  117. package/dist/{models-5ZG5XY7J.js → models-2NCZUWDD.js} +35 -29
  118. package/dist/{monitor-TJ7AMTGB.js → monitor-MMVTJABD.js} +64 -45
  119. package/dist/{orchestrator-WZYB54DM.js → orchestrator-ZKBPCHW6.js} +1971 -520
  120. package/dist/{paths-XUC7GS6E.js → paths-DBXMZMDU.js} +5 -5
  121. package/dist/registry-LG64LTF4.js +11 -0
  122. package/dist/{reset-PXQT45IY.js → reset-DD5JGOY3.js} +11 -11
  123. package/dist/{run-FQ74YF62.js → run-QEGNX7FL.js} +89 -83
  124. package/dist/{share-FW7SVCL3.js → share-JKD3BQMW.js} +20 -18
  125. package/dist/{skills-7E7IRB3R.js → skills-LMQIKDOZ.js} +23 -21
  126. package/dist/{skills-eval-LI75W6OK.js → skills-eval-I7X2774U.js} +59 -52
  127. package/dist/{steer-GGWFUJUD.js → steer-CF5TDANS.js} +3 -3
  128. package/dist/support-I7LOJLIF.js +38 -0
  129. package/dist/{targets-4CIFKCTW.js → targets-RUSR6B5Z.js} +77 -42
  130. package/dist/{terminal-lease-WUZY7ZV5.js → terminal-lease-QYVORFR4.js} +6 -4
  131. package/dist/{trace-PNCASAXC.js → trace-ODOQIVIW.js} +61 -6
  132. package/dist/{uninstall-7FV7IP4E.js → uninstall-ZJF5H5ZN.js} +8 -8
  133. package/dist/{upgrade-K2HVIVMQ.js → upgrade-XANW3FXB.js} +29 -26
  134. package/dist/{usage-GTZELZQX.js → usage-4H7ZRXQT.js} +110 -61
  135. package/dist/{verifiers-RLAHT27O.js → verifiers-UZXNBZEB.js} +13 -13
  136. package/dist/{verify-BX3BRKH5.js → verify-BVKWTNDL.js} +9 -9
  137. package/dist/{wiki-generate-ASIFASCN.js → wiki-generate-MY7WV2QI.js} +76 -69
  138. package/dist/worker/entry.js +69 -66
  139. package/docs/alcf-provider.md +1 -1
  140. package/docs/architecture.md +1 -1
  141. package/docs/artifact-versions.md +11 -5
  142. package/docs/built-in-agents.md +1 -1
  143. package/docs/capacity-and-scheduling.md +23 -2
  144. package/docs/commands-and-modes.md +2 -2
  145. package/docs/configuration-and-targets.md +37 -5
  146. package/docs/context-engine.md +63 -4
  147. package/docs/documentation-coverage.md +3 -3
  148. package/docs/documentation-guide.md +1 -1
  149. package/docs/environment-variables.md +2 -0
  150. package/docs/eval-runner.md +262 -11
  151. package/docs/evals-internal.md +72 -2
  152. package/docs/evidence-and-memory.md +77 -12
  153. package/docs/evolution.md +1 -1
  154. package/docs/extensions-and-sharing.md +3 -1
  155. package/docs/fleet-dispatch.md +34 -9
  156. package/docs/glossary.md +21 -1
  157. package/docs/installation-and-lifecycle.md +1 -1
  158. package/docs/middleware-and-components.md +1 -1
  159. package/docs/model-catalog.md +1 -1
  160. package/docs/observability.md +54 -3
  161. package/docs/proactive-memory.md +127 -14
  162. package/docs/prompt-envelope-and-tools.md +22 -2
  163. package/docs/provider-adapter-cookbook.md +1 -1
  164. package/docs/release-cut-checklist.md +60 -41
  165. package/docs/safety-model.md +1 -1
  166. package/docs/scientific-validation.md +1 -1
  167. package/docs/skills-marketplace.md +1 -1
  168. package/docs/tool-usage.md +1 -1
  169. package/docs/trace-store.md +1 -1
  170. package/docs/troubleshooting.md +87 -0
  171. package/docs/tui-design.md +1 -1
  172. package/docs/worker-dispatch-mechanics.md +1 -1
  173. package/package.json +2 -2
  174. package/src/cli/agents.ts +1 -1
  175. package/src/cli/argv.ts +5 -0
  176. package/src/cli/config-inspect.ts +33 -6
  177. package/src/cli/config.ts +1 -1
  178. package/src/cli/configure.ts +107 -23
  179. package/src/cli/doctor-state-size.ts +82 -0
  180. package/src/cli/doctor.ts +7 -1
  181. package/src/cli/eval.ts +80 -16
  182. package/src/cli/evidence.ts +30 -25
  183. package/src/cli/extensions.ts +5 -1
  184. package/src/cli/fleet-preflight.ts +2 -12
  185. package/src/cli/fleet.ts +32 -3
  186. package/src/cli/shared.ts +1 -0
  187. package/src/cli/targets.ts +45 -11
  188. package/src/cli/trace.ts +63 -4
  189. package/src/cli/usage.ts +63 -14
  190. package/src/cli/validate-model.ts +60 -5
  191. package/src/core/bus-events.ts +54 -1
  192. package/src/core/cache-telemetry.ts +42 -0
  193. package/src/core/commit-attribution.ts +4 -4
  194. package/src/core/config.ts +18 -0
  195. package/src/core/defaults.ts +36 -6
  196. package/src/core/endpoint-key.ts +27 -0
  197. package/src/core/path-boundary.ts +100 -0
  198. package/src/core/residency-target-key.ts +25 -0
  199. package/src/core/response-schema.ts +36 -2
  200. package/src/domains/agents/extension.ts +2 -11
  201. package/src/domains/agents/fleet-contract.ts +30 -12
  202. package/src/domains/agents/recipe.ts +7 -1
  203. package/src/domains/agents/registry.ts +73 -5
  204. package/src/domains/agents/result-contract.ts +128 -17
  205. package/src/domains/agents/write-boundary.ts +15 -50
  206. package/src/domains/config/classify.ts +3 -0
  207. package/src/domains/context/codewiki/coordinator.ts +12 -4
  208. package/src/domains/context/project-rules.ts +51 -1
  209. package/src/domains/dispatch/admission.ts +40 -3
  210. package/src/domains/dispatch/assignment-reconcile.ts +22 -5
  211. package/src/domains/dispatch/assignment-store.ts +151 -14
  212. package/src/domains/dispatch/capacity-lease.ts +98 -9
  213. package/src/domains/dispatch/contract.ts +26 -1
  214. package/src/domains/dispatch/delegation-plan.ts +2 -5
  215. package/src/domains/dispatch/execution-plan.ts +44 -4
  216. package/src/domains/dispatch/execution-role.ts +9 -1
  217. package/src/domains/dispatch/extension.ts +309 -96
  218. package/src/domains/dispatch/fleet-run.ts +78 -4
  219. package/src/domains/dispatch/gate-role-prompts.ts +38 -0
  220. package/src/domains/dispatch/heartbeat.ts +32 -8
  221. package/src/domains/dispatch/index.ts +6 -1
  222. package/src/domains/dispatch/intent-requirements.ts +40 -0
  223. package/src/domains/dispatch/intent.ts +84 -8
  224. package/src/domains/dispatch/orphan-recovery.ts +5 -0
  225. package/src/domains/dispatch/path-scope.ts +370 -0
  226. package/src/domains/dispatch/receipt-integrity.ts +2 -1
  227. package/src/domains/dispatch/reservation-store.ts +116 -8
  228. package/src/domains/dispatch/state.ts +4 -0
  229. package/src/domains/dispatch/types.ts +14 -7
  230. package/src/domains/dispatch/validation.ts +6 -3
  231. package/src/domains/dispatch/worker-spawn.ts +25 -11
  232. package/src/domains/dispatch/write-boundary-enforcer.ts +62 -0
  233. package/src/domains/dispatch/write-boundary.ts +262 -22
  234. package/src/domains/eval/artifacts/store.ts +62 -0
  235. package/src/domains/eval/compare/behavioral.ts +224 -0
  236. package/src/domains/eval/compare/compare.ts +355 -2
  237. package/src/domains/eval/compare/envelope.ts +128 -0
  238. package/src/domains/eval/compare/gates.ts +24 -6
  239. package/src/domains/eval/compare/thresholds.ts +30 -3
  240. package/src/domains/eval/execution-provenance.ts +240 -0
  241. package/src/domains/eval/metrics/aggregate.ts +136 -0
  242. package/src/domains/eval/metrics/call-ledger-stream.ts +112 -0
  243. package/src/domains/eval/metrics/evidence.ts +79 -2
  244. package/src/domains/eval/metrics/tracked.ts +413 -0
  245. package/src/domains/eval/provenance.ts +117 -0
  246. package/src/domains/eval/reports/comparison.ts +128 -0
  247. package/src/domains/eval/reports/junit.ts +17 -3
  248. package/src/domains/eval/reports/markdown.ts +3 -3
  249. package/src/domains/eval/reports/text.ts +14 -0
  250. package/src/domains/eval/run-compare.ts +20 -0
  251. package/src/domains/eval/runners/clio-run.ts +139 -2
  252. package/src/domains/eval/runners/external-command.ts +28 -3
  253. package/src/domains/eval/schema/adapter.ts +111 -0
  254. package/src/domains/eval/schema/artifact.ts +20 -0
  255. package/src/domains/eval/schema/behavioral-metrics.ts +204 -0
  256. package/src/domains/eval/schema/behavioral.ts +520 -0
  257. package/src/domains/eval/schema/execution-envelope.ts +194 -0
  258. package/src/domains/eval/schema/serving.ts +74 -0
  259. package/src/domains/eval/schema/suite.ts +38 -8
  260. package/src/domains/eval/schema/validate.ts +58 -3
  261. package/src/domains/eval/schema/verdict.ts +237 -0
  262. package/src/domains/eval/suites/resolve.ts +2 -0
  263. package/src/domains/eval/suites/run.ts +264 -33
  264. package/src/domains/eval/verifiers/command.ts +2 -1
  265. package/src/domains/eval/workspaces/temp-copy.ts +145 -13
  266. package/src/domains/evidence/build.ts +68 -21
  267. package/src/domains/evidence/eval.ts +2 -12
  268. package/src/domains/evidence/findings-markdown.ts +33 -0
  269. package/src/domains/evidence/index.ts +21 -0
  270. package/src/domains/evidence/provenance.ts +46 -11
  271. package/src/domains/evidence/run-trust.ts +7 -113
  272. package/src/domains/evidence/trust-projection.ts +274 -0
  273. package/src/domains/evidence/trust-status.ts +145 -17
  274. package/src/domains/evidence/types.ts +4 -0
  275. package/src/domains/extensions/compatibility.ts +285 -0
  276. package/src/domains/extensions/discovery.ts +126 -4
  277. package/src/domains/extensions/resources.ts +21 -9
  278. package/src/domains/extensions/state.ts +18 -5
  279. package/src/domains/extensions/types.ts +6 -1
  280. package/src/domains/lifecycle/doctor.ts +209 -2
  281. package/src/domains/memory/index.ts +14 -0
  282. package/src/domains/memory/task-bank-promotion.ts +64 -0
  283. package/src/domains/memory/task-memory-policy.ts +77 -8
  284. package/src/domains/memory/task-memory-spend.ts +131 -0
  285. package/src/domains/memory/task-memory-status.ts +7 -0
  286. package/src/domains/memory/task-memory-telemetry.ts +2 -0
  287. package/src/domains/middleware/index.ts +1 -0
  288. package/src/domains/middleware/memory-intervention.ts +69 -5
  289. package/src/domains/middleware/memory-step-endpoint.ts +71 -0
  290. package/src/domains/observability/background-memory-usage.ts +140 -0
  291. package/src/domains/observability/cost.ts +1 -1
  292. package/src/domains/observability/index.ts +7 -0
  293. package/src/domains/observability/out-of-turn-usage.ts +51 -2
  294. package/src/domains/observability/trace-store.ts +192 -2
  295. package/src/domains/prompts/compiler.ts +100 -13
  296. package/src/domains/prompts/contract.ts +3 -5
  297. package/src/domains/providers/endpoint-capacity.ts +96 -0
  298. package/src/domains/providers/extension.ts +30 -2
  299. package/src/domains/providers/index.ts +10 -0
  300. package/src/domains/providers/models/local-models/clio-local-coding-targets.yaml +243 -1
  301. package/src/domains/providers/runtime-resolution.ts +8 -1
  302. package/src/domains/providers/runtimes/common/probe-helpers.ts +31 -9
  303. package/src/domains/providers/runtimes/local-native/llamacpp-anthropic.ts +1 -1
  304. package/src/domains/providers/runtimes/local-native/llamacpp-completion.ts +1 -1
  305. package/src/domains/providers/runtimes/local-native/llamacpp-embed.ts +1 -1
  306. package/src/domains/providers/runtimes/local-native/llamacpp-rerank.ts +1 -1
  307. package/src/domains/providers/runtimes/local-native/llamacpp.ts +4 -1
  308. package/src/domains/providers/runtimes/local-native/lmstudio.ts +4 -1
  309. package/src/domains/providers/runtimes/local-native/ollama-native.ts +6 -1
  310. package/src/domains/providers/types/capability-flags.ts +2 -0
  311. package/src/domains/providers/types/target-descriptor.ts +2 -0
  312. package/src/domains/resources/common-loader.ts +3 -0
  313. package/src/domains/resources/prompts/loader.ts +184 -17
  314. package/src/domains/safety/call-target.ts +52 -0
  315. package/src/domains/safety/policy-engine.ts +5 -5
  316. package/src/domains/safety/run-effects.ts +96 -2
  317. package/src/domains/safety/scope.ts +7 -12
  318. package/src/domains/session/context-accounting.ts +52 -1
  319. package/src/domains/session/context-ledger.ts +37 -13
  320. package/src/domains/session/index.ts +6 -0
  321. package/src/domains/session/prompt-cache.ts +140 -0
  322. package/src/domains/session/prompt-manifest.ts +42 -0
  323. package/src/engine/acp/adapter.ts +18 -3
  324. package/src/engine/acp/server.ts +4 -1
  325. package/src/engine/ai.ts +35 -0
  326. package/src/engine/apis/llamacpp-residency.ts +55 -3
  327. package/src/engine/apis/lmstudio.ts +25 -5
  328. package/src/engine/apis/ollama-native.ts +2 -1
  329. package/src/engine/apis/openai-completions.ts +80 -17
  330. package/src/engine/apis/residency-lock.ts +3 -1
  331. package/src/engine/apis/residency.ts +34 -1
  332. package/src/engine/prompt-templates.ts +18 -1
  333. package/src/engine/provider-payload.ts +29 -1
  334. package/src/engine/worker-runtime.ts +6 -3
  335. package/src/entry/orchestrator.ts +176 -30
  336. package/src/interactive/chat-loop-messages.ts +26 -7
  337. package/src/interactive/chat-loop.ts +318 -41
  338. package/src/interactive/chat-panel.ts +62 -8
  339. package/src/interactive/clio-editor.ts +45 -8
  340. package/src/interactive/context-activity.ts +5 -1
  341. package/src/interactive/context-meter.ts +1 -1
  342. package/src/interactive/context-overlay.ts +40 -10
  343. package/src/interactive/cost-overlay.ts +64 -6
  344. package/src/interactive/dispatch-board.ts +127 -5
  345. package/src/interactive/fleet-run-preview.ts +41 -15
  346. package/src/interactive/handoff-round.ts +41 -2
  347. package/src/interactive/interactive-application.ts +24 -1
  348. package/src/interactive/interactive-event-projection.ts +14 -0
  349. package/src/interactive/interactive-input-runtime.ts +8 -0
  350. package/src/interactive/interactive-presentation.ts +4 -0
  351. package/src/interactive/interactive-shell.ts +20 -17
  352. package/src/interactive/interactive-slash-runtime.ts +27 -4
  353. package/src/interactive/memory-overlay.ts +8 -0
  354. package/src/interactive/mutation-preview.ts +295 -0
  355. package/src/interactive/overlay-general-openers.ts +16 -0
  356. package/src/interactive/overlay-key-routing.ts +38 -0
  357. package/src/interactive/overlay-lifecycle.ts +38 -5
  358. package/src/interactive/overlay-permission-lifecycle.ts +22 -2
  359. package/src/interactive/overlay-session-lifecycle.ts +73 -9
  360. package/src/interactive/overlays/ask-user.ts +91 -19
  361. package/src/interactive/overlays/help-reference.ts +4 -0
  362. package/src/interactive/overlays/prompts.ts +11 -1
  363. package/src/interactive/overlays/settings.ts +176 -48
  364. package/src/interactive/permission-hint.ts +34 -2
  365. package/src/interactive/permission-overlay.ts +159 -9
  366. package/src/interactive/prewarm.ts +197 -0
  367. package/src/interactive/render-trace.ts +162 -15
  368. package/src/interactive/renderers/tool-execution.ts +4 -0
  369. package/src/interactive/side-question.ts +58 -1
  370. package/src/interactive/slash-commands.ts +7 -2
  371. package/src/interactive/status/controller.ts +11 -0
  372. package/src/interactive/status/state-machine.ts +54 -2
  373. package/src/interactive/status/types.ts +7 -0
  374. package/src/interactive/terminal-lease.ts +2 -0
  375. package/src/interactive/turn-context.ts +299 -31
  376. package/src/interactive/turn-persistence.ts +14 -4
  377. package/src/interactive/turn-prewarm.ts +364 -0
  378. package/src/interactive/turn-queues.ts +7 -4
  379. package/src/interactive/turn-runtime.ts +8 -1
  380. package/src/interactive/turn-state.ts +23 -0
  381. package/src/interactive/view/artifacts.ts +42 -9
  382. package/src/interactive/view/view-overlay.ts +43 -6
  383. package/src/interactive/worker-receipts.ts +14 -2
  384. package/src/interactive/worker-stream.ts +8 -0
  385. package/src/tools/ask-user.ts +43 -2
  386. package/src/tools/dispatch-admission.ts +12 -13
  387. package/src/tools/dispatch-arguments.ts +27 -0
  388. package/src/tools/dispatch-plan.ts +46 -9
  389. package/src/tools/dispatch-runner.ts +48 -13
  390. package/src/tools/dispatch-scout.ts +1 -1
  391. package/src/tools/monitor.ts +13 -0
  392. package/src/tools/registry.ts +16 -0
  393. package/src/tools/worker-evidence.ts +19 -13
  394. package/src/worker/spec-contract.ts +2 -1
  395. package/dist/chunk-AOCYTWAV.js +0 -449
  396. package/dist/chunk-HWUFFB6L.js +0 -83
  397. package/dist/chunk-R346GLFC.js +0 -31
  398. package/dist/chunk-ZGH7FGS5.js +0 -1079
  399. package/dist/doctor-RN4YKO2X.js +0 -87
  400. package/dist/eval-RUBJVSNQ.js +0 -2557
@@ -0,0 +1,111 @@
1
+ import { createHash } from "node:crypto";
2
+ import type { EvalArtifactResultV4 } from "./artifact.js";
3
+ import {
4
+ assertEvalBehaviorReferencesVerdictV1,
5
+ type EvalBehaviorFactSourceV1,
6
+ type EvalBehaviorJudgeFactV1,
7
+ type EvalBehaviorScenarioV1,
8
+ type EvalBehaviorVerdictV1,
9
+ judgeEvalBehaviorV1,
10
+ } from "./behavioral.js";
11
+ import {
12
+ EVAL_VERDICT_SCHEMA_V1,
13
+ type EvalTrackedMetricsV1,
14
+ type EvalVerdictEnvelopeV1,
15
+ parseEvalVerdictEnvelopeV1,
16
+ } from "./verdict.js";
17
+
18
+ type AdaptableSuiteResult = Pick<
19
+ EvalArtifactResultV4,
20
+ "assignmentId" | "terminalReceiptDigest" | "taskId" | "repeatIndex" | "pass" | "failureClass" | "metrics"
21
+ >;
22
+
23
+ /** Adapt one Suite v2 matrix result into the versioned verdict carried by Artifact v4. */
24
+ export function adaptSuiteV2ResultToVerdictV1(
25
+ result: AdaptableSuiteResult,
26
+ trackedMetrics: EvalTrackedMetricsV1,
27
+ ): EvalVerdictEnvelopeV1 {
28
+ // The suite runner owns the one final pass decision. In particular, a
29
+ // declared grader failure changes `pass` without pretending the runner or
30
+ // its invariants broke; every other failed result is a machinery failure.
31
+ const machinery = result.pass || result.failureClass === "grader_failed" ? "ok" : "infrastructure_failure";
32
+ const outcome = result.pass ? "pass" : "fail";
33
+ const graderExitCode = result.metrics["task.exitCode"];
34
+ return parseEvalVerdictEnvelopeV1({
35
+ schema: EVAL_VERDICT_SCHEMA_V1,
36
+ scenarioId: result.taskId,
37
+ trialIndex: result.repeatIndex,
38
+ outcome,
39
+ machinery,
40
+ reason: result.pass ? null : (result.failureClass ?? "result_failed"),
41
+ trackedMetrics,
42
+ behavioral: null,
43
+ evidence: {
44
+ assignmentId: result.assignmentId,
45
+ terminalReceiptDigest: result.terminalReceiptDigest,
46
+ graderExitCode: typeof graderExitCode === "number" && Number.isInteger(graderExitCode) ? graderExitCode : null,
47
+ },
48
+ });
49
+ }
50
+
51
+ /** Adapt Suite v2 metrics into deterministic, bounded facts for a behavioral scenario. */
52
+ export function adaptSuiteV2ResultToBehaviorV1(
53
+ result: AdaptableSuiteResult,
54
+ verdict: EvalVerdictEnvelopeV1,
55
+ scenario: EvalBehaviorScenarioV1,
56
+ ): EvalBehaviorVerdictV1 {
57
+ const requestedFacts = new Set(
58
+ [...scenario.expectedBehavior, ...scenario.forbiddenBehavior].map(
59
+ (rule) => `${rule.fact.source}\u0000${rule.fact.key}`,
60
+ ),
61
+ );
62
+ const observedSources = new Set<EvalBehaviorFactSourceV1>();
63
+ const facts = Object.entries(result.metrics).flatMap(([key, value]) => {
64
+ if (value === null) return [];
65
+ const source = metricFactSource(key);
66
+ observedSources.add(source);
67
+ if (!requestedFacts.has(`${source}\u0000${key}`)) return [];
68
+ const serialized = JSON.stringify({ source, key, value });
69
+ const digest = createHash("sha256").update(serialized, "utf8").digest("hex");
70
+ const fact: EvalBehaviorJudgeFactV1 = {
71
+ id: `metric-${digest.slice(0, 16)}`,
72
+ source,
73
+ key,
74
+ value,
75
+ evidence: { locator: `artifact.metrics.${key}`, digest, excerpt: serialized.slice(0, 1_000) },
76
+ };
77
+ return [fact];
78
+ });
79
+ const allSources: EvalBehaviorFactSourceV1[] = ["transcript", "tool", "receipt", "grader"];
80
+ const unavailableSources = allSources.filter(
81
+ (source) => !observedSources.has(source) || (source === "tool" && scenario.execution.toolTarget === "none"),
82
+ );
83
+ const behavior = judgeEvalBehaviorV1(scenario, verdict, {
84
+ facts,
85
+ unavailableSources,
86
+ infrastructureFailure: verdict.machinery === "infrastructure_failure",
87
+ });
88
+ assertEvalBehaviorReferencesVerdictV1(behavior, verdict);
89
+ return behavior;
90
+ }
91
+
92
+ function metricFactSource(key: string): EvalBehaviorFactSourceV1 {
93
+ if (key.startsWith("tools.")) return "tool";
94
+ if (
95
+ key.startsWith("task.") ||
96
+ key.startsWith("claims.") ||
97
+ key.startsWith("completion.") ||
98
+ key === "result.pass" ||
99
+ key === "verifier.exitCode"
100
+ )
101
+ return "grader";
102
+ if (
103
+ key.startsWith("receipt.") ||
104
+ key.startsWith("evidence.") ||
105
+ key.startsWith("boundary.") ||
106
+ key.startsWith("loop.") ||
107
+ key.startsWith("cost.")
108
+ )
109
+ return "receipt";
110
+ return "transcript";
111
+ }
@@ -1,4 +1,10 @@
1
+ import type { EvalScenarioAggregateV1 } from "../metrics/aggregate.js";
1
2
  import type { EvalClioProvenance, EvalEnvironmentProvenance } from "../types.js";
3
+ import type { EvalBehaviorVerdictV1 } from "./behavioral.js";
4
+ import type { EvalBehaviorMetricsV1 } from "./behavioral-metrics.js";
5
+ import type { EvalExecutionEnvelopeV1, EvalExecutionMatrixDimensionV1 } from "./execution-envelope.js";
6
+ import type { EvalServingConfigurationV1 } from "./serving.js";
7
+ import type { EvalVerdictEnvelopeV1 } from "./verdict.js";
2
8
 
3
9
  export interface EvalTokenMetricsV4 {
4
10
  input: number;
@@ -45,6 +51,14 @@ export interface EvalArtifactResultV4 extends EvalArtifactAssignmentReference {
45
51
  failureClass: string | null;
46
52
  metrics: Record<string, number | string | boolean | null>;
47
53
  artifacts: Record<string, string | string[] | null>;
54
+ /** Additive Suite v2 adapter output. Current runners always populate it. */
55
+ verdict?: EvalVerdictEnvelopeV1;
56
+ /** Optional sibling document that references the unchanged verdict v1 identity. */
57
+ behavioral?: EvalBehaviorVerdictV1;
58
+ /** Additive, typed multi-metric projection for behavioral comparison. */
59
+ behavioralMetrics?: EvalBehaviorMetricsV1;
60
+ /** Exact prompt, route, policy, and project-context identity for a behavioral result. */
61
+ executionEnvelope?: EvalExecutionEnvelopeV1;
48
62
  }
49
63
 
50
64
  /** The only current eval artifact format. Routing accepts this version only. */
@@ -61,8 +75,14 @@ export interface EvalArtifactV4 {
61
75
  target: string;
62
76
  model: string | null;
63
77
  thinking: string | null;
78
+ /** Envelope fields intentionally varied by this matrix. */
79
+ dimensions?: EvalExecutionMatrixDimensionV1[];
64
80
  };
81
+ /** Exact serving facts used to decide whether two eval runs are comparable. */
82
+ servingConfiguration?: EvalServingConfigurationV1;
65
83
  summary: EvalArtifactSummaryV4;
84
+ /** Scenario reductions over the versioned per-trial verdicts. */
85
+ aggregates?: EvalScenarioAggregateV1[];
66
86
  results: EvalArtifactResultV4[];
67
87
  }
68
88
 
@@ -0,0 +1,204 @@
1
+ import type { EvalArtifactResultV4 } from "./artifact.js";
2
+ import type { EvalBehaviorCategoryV1, EvalBehaviorLabelV1 } from "./behavioral.js";
3
+
4
+ export const EVAL_BEHAVIOR_METRICS_SCHEMA_V1 = "clio.eval.behavior.metrics.v1" as const;
5
+
6
+ export const EVAL_BEHAVIOR_METRIC_DEFINITIONS_V1 = [
7
+ {
8
+ name: "correctness.taskSolved",
9
+ family: "correctness",
10
+ direction: "higher" as const,
11
+ hardGate: true,
12
+ source: "grader" as const,
13
+ },
14
+ {
15
+ name: "safety.violations",
16
+ family: "safety",
17
+ direction: "lower" as const,
18
+ hardGate: true,
19
+ source: "behavioral-label" as const,
20
+ },
21
+ {
22
+ name: "behavior.labelViolations",
23
+ family: "behavior",
24
+ direction: "lower" as const,
25
+ hardGate: false,
26
+ source: "behavioral-label" as const,
27
+ },
28
+ {
29
+ name: "efficiency.toolCalls",
30
+ family: "efficiency",
31
+ direction: "lower" as const,
32
+ hardGate: false,
33
+ source: "tool-event" as const,
34
+ },
35
+ {
36
+ name: "exploration.unnecessaryReads",
37
+ family: "exploration",
38
+ direction: "lower" as const,
39
+ hardGate: false,
40
+ source: "tool-event" as const,
41
+ },
42
+ {
43
+ name: "delegation.quality",
44
+ family: "delegation",
45
+ direction: "higher" as const,
46
+ hardGate: false,
47
+ source: "behavioral-label" as const,
48
+ },
49
+ {
50
+ name: "claims.unsupported",
51
+ family: "claims",
52
+ direction: "lower" as const,
53
+ hardGate: false,
54
+ source: "grader" as const,
55
+ },
56
+ {
57
+ name: "tokens.total",
58
+ family: "tokens",
59
+ direction: "lower" as const,
60
+ hardGate: false,
61
+ source: "runner" as const,
62
+ },
63
+ {
64
+ name: "latency.wallMs",
65
+ family: "latency",
66
+ direction: "lower" as const,
67
+ hardGate: false,
68
+ source: "runner" as const,
69
+ },
70
+ {
71
+ name: "cost.usd",
72
+ family: "cost",
73
+ direction: "lower" as const,
74
+ hardGate: false,
75
+ source: "receipt" as const,
76
+ },
77
+ ] as const;
78
+
79
+ export type EvalBehaviorMetricDefinitionV1 = (typeof EVAL_BEHAVIOR_METRIC_DEFINITIONS_V1)[number];
80
+ export type EvalBehaviorMetricNameV1 = EvalBehaviorMetricDefinitionV1["name"];
81
+ export type EvalBehaviorMetricFamilyV1 = EvalBehaviorMetricDefinitionV1["family"];
82
+ export type EvalBehaviorMetricDirectionV1 = "higher" | "lower";
83
+ export type EvalBehaviorMetricSourceV1 = "grader" | "behavioral-label" | "tool-event" | "runner" | "receipt";
84
+
85
+ export interface EvalBehaviorMetricObservationV1 {
86
+ value: number | null;
87
+ source: EvalBehaviorMetricSourceV1;
88
+ }
89
+
90
+ export interface EvalBehaviorMetricsV1 {
91
+ schema: typeof EVAL_BEHAVIOR_METRICS_SCHEMA_V1;
92
+ scenarioId: string;
93
+ role: string;
94
+ target: { id: string; model: string | null };
95
+ metrics: Record<EvalBehaviorMetricNameV1, EvalBehaviorMetricObservationV1>;
96
+ }
97
+
98
+ export function buildEvalBehaviorMetricsV1(
99
+ result: Pick<EvalArtifactResultV4, "taskId" | "target" | "metrics" | "behavioral">,
100
+ role: string,
101
+ ): EvalBehaviorMetricsV1 {
102
+ const label = (category: EvalBehaviorCategoryV1): EvalBehaviorLabelV1 | null =>
103
+ result.behavioral?.labels.find((entry) => entry.category === category)?.label ?? null;
104
+ const observedLabels = result.behavioral?.labels.filter(
105
+ (entry) => entry.label === "satisfied" || entry.label === "violated",
106
+ );
107
+ const values: Record<EvalBehaviorMetricNameV1, number | null> = {
108
+ "correctness.taskSolved": booleanMetric(result.metrics["task.solved"]),
109
+ "safety.violations": violationMetric(label("safety_comprehension")),
110
+ "behavior.labelViolations":
111
+ observedLabels === undefined || observedLabels.length !== result.behavioral?.labels.length
112
+ ? null
113
+ : observedLabels.filter((entry) => entry.label === "violated").length,
114
+ "efficiency.toolCalls": numberMetric(result.metrics["tools.totalCalls"]),
115
+ "exploration.unnecessaryReads": numberMetric(result.metrics["tools.read.outsideAllowed"]),
116
+ "delegation.quality": qualityMetric(label("delegation")),
117
+ "claims.unsupported": numberMetric(result.metrics["claims.unsupported"]),
118
+ "tokens.total": numberMetric(result.metrics["tokens.total"]),
119
+ "latency.wallMs": numberMetric(result.metrics["latency.wallMs"]),
120
+ "cost.usd": numberMetric(result.metrics["cost.usd"]),
121
+ };
122
+ const metrics = Object.fromEntries(
123
+ EVAL_BEHAVIOR_METRIC_DEFINITIONS_V1.map((definition) => [
124
+ definition.name,
125
+ { value: values[definition.name], source: definition.source },
126
+ ]),
127
+ ) as Record<EvalBehaviorMetricNameV1, EvalBehaviorMetricObservationV1>;
128
+ return {
129
+ schema: EVAL_BEHAVIOR_METRICS_SCHEMA_V1,
130
+ scenarioId: result.taskId,
131
+ role,
132
+ target: { id: result.target.id, model: result.target.model },
133
+ metrics,
134
+ };
135
+ }
136
+
137
+ export function parseEvalBehaviorMetricsV1(value: unknown, source = "behavioral metrics"): EvalBehaviorMetricsV1 {
138
+ const record = asRecord(value, source);
139
+ if (record.schema !== EVAL_BEHAVIOR_METRICS_SCHEMA_V1) {
140
+ throw new Error(`${source}.schema: expected ${EVAL_BEHAVIOR_METRICS_SCHEMA_V1}`);
141
+ }
142
+ const target = asRecord(record.target, `${source}.target`);
143
+ const rawMetrics = asRecord(record.metrics, `${source}.metrics`);
144
+ const expectedMetricNames = new Set(EVAL_BEHAVIOR_METRIC_DEFINITIONS_V1.map((definition) => definition.name));
145
+ for (const metricName of Object.keys(rawMetrics)) {
146
+ if (!expectedMetricNames.has(metricName as EvalBehaviorMetricNameV1)) {
147
+ throw new Error(`${source}.metrics.${metricName}: unknown behavioral metric`);
148
+ }
149
+ }
150
+ const metrics = Object.fromEntries(
151
+ EVAL_BEHAVIOR_METRIC_DEFINITIONS_V1.map((definition) => {
152
+ const observation = asRecord(rawMetrics[definition.name], `${source}.metrics.${definition.name}`);
153
+ const metricSource = observation.source;
154
+ if (metricSource !== definition.source) {
155
+ throw new Error(`${source}.metrics.${definition.name}.source: expected ${definition.source}`);
156
+ }
157
+ const metricValue = observation.value;
158
+ if (metricValue !== null && (typeof metricValue !== "number" || !Number.isFinite(metricValue))) {
159
+ throw new Error(`${source}.metrics.${definition.name}.value: expected finite number or null`);
160
+ }
161
+ return [definition.name, { value: metricValue, source: metricSource }];
162
+ }),
163
+ ) as Record<EvalBehaviorMetricNameV1, EvalBehaviorMetricObservationV1>;
164
+ return {
165
+ schema: EVAL_BEHAVIOR_METRICS_SCHEMA_V1,
166
+ scenarioId: readString(record.scenarioId, `${source}.scenarioId`),
167
+ role: readString(record.role, `${source}.role`),
168
+ target: {
169
+ id: readString(target.id, `${source}.target.id`),
170
+ model: target.model === null ? null : readString(target.model, `${source}.target.model`),
171
+ },
172
+ metrics,
173
+ };
174
+ }
175
+
176
+ function numberMetric(value: unknown): number | null {
177
+ return typeof value === "number" && Number.isFinite(value) ? value : null;
178
+ }
179
+
180
+ function booleanMetric(value: unknown): number | null {
181
+ return typeof value === "boolean" ? (value ? 1 : 0) : null;
182
+ }
183
+
184
+ function violationMetric(label: EvalBehaviorLabelV1 | null): number | null {
185
+ if (label === "violated") return 1;
186
+ if (label === "satisfied") return 0;
187
+ return null;
188
+ }
189
+
190
+ function qualityMetric(label: EvalBehaviorLabelV1 | null): number | null {
191
+ if (label === "satisfied") return 1;
192
+ if (label === "violated") return 0;
193
+ return null;
194
+ }
195
+
196
+ function asRecord(value: unknown, source: string): Record<string, unknown> {
197
+ if (typeof value === "object" && value !== null && !Array.isArray(value)) return value as Record<string, unknown>;
198
+ throw new Error(`${source}: expected object`);
199
+ }
200
+
201
+ function readString(value: unknown, source: string): string {
202
+ if (typeof value === "string" && value.length > 0) return value;
203
+ throw new Error(`${source}: expected non-empty string`);
204
+ }