@iowarp/clio-coder 0.4.6 → 0.4.7

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 (657) hide show
  1. package/.claude-plugin/marketplace.json +283 -0
  2. package/CHANGELOG.md +50 -0
  3. package/CONTRIBUTING.md +102 -29
  4. package/NOTICE +8 -0
  5. package/README.md +37 -5
  6. package/dist/{acp-UVEVWSDL.js → acp-W3Y3TRHD.js} +12 -12
  7. package/dist/{agents-VWY37DTK.js → agents-J4ICNLQ3.js} +52 -52
  8. package/dist/assets/codewiki.json +1 -1
  9. package/dist/assets/tui-notices/get-east-asian-width-LICENSE +9 -0
  10. package/dist/assets/tui-notices/marked-LICENSE +44 -0
  11. package/dist/assets/tui-notices/pi-tui-LICENSE +21 -0
  12. package/dist/{auth-PCV2XQDV.js → auth-X2UJUMOC.js} +24 -24
  13. package/dist/{builtins-PD652MTK.js → builtins-XLXWWSRF.js} +6 -6
  14. package/dist/{chunk-DZK63TZJ.js → chunk-24S3DN22.js} +336 -612
  15. package/dist/{chunk-NTK3WTHM.js → chunk-24TOGHPO.js} +2 -2
  16. package/dist/{chunk-M6TAYK66.js → chunk-2O2LVQQK.js} +11 -4
  17. package/dist/{chunk-OQM5IVJY.js → chunk-34XHRVKG.js} +3 -3
  18. package/dist/{chunk-LY4N4TTL.js → chunk-3LXJOICS.js} +2 -2
  19. package/dist/{chunk-3BJGMT2D.js → chunk-3XE4NRLF.js} +1 -1
  20. package/dist/{chunk-N2OKBREN.js → chunk-4MFBBY2Z.js} +3 -3
  21. package/dist/{chunk-5VTJP36Q.js → chunk-4N2RZ4TO.js} +2 -2
  22. package/dist/{chunk-WNGF5AJX.js → chunk-4QKAITQT.js} +3 -3
  23. package/dist/chunk-4UHVS5T7.js +207 -0
  24. package/dist/{chunk-GLYBJ4RQ.js → chunk-5AJPUR72.js} +6 -6
  25. package/dist/{chunk-5CY4Q6QI.js → chunk-5EQO5NWP.js} +105 -3
  26. package/dist/{chunk-6HAO6X5B.js → chunk-65BGHOUR.js} +8 -5
  27. package/dist/{chunk-6VRRJT7L.js → chunk-6CA2BHOR.js} +2 -2
  28. package/dist/{chunk-HL26ADLH.js → chunk-6CB2IL4N.js} +2 -1
  29. package/dist/{chunk-E7RF4KBO.js → chunk-6LRLOJHQ.js} +3 -3
  30. package/dist/{chunk-HXHFDHB6.js → chunk-6TAATXXH.js} +6 -6
  31. package/dist/{chunk-P6M7RKMI.js → chunk-6YHPAAZR.js} +3 -3
  32. package/dist/{chunk-5QRX7SLS.js → chunk-7EEGBKV4.js} +7 -7
  33. package/dist/{chunk-BS4GAMUB.js → chunk-A67NR5AT.js} +2 -2
  34. package/dist/{chunk-WJIMKGD6.js → chunk-BAU36233.js} +8 -8
  35. package/dist/{chunk-PZN2LQY6.js → chunk-BO4XV5VX.js} +4 -4
  36. package/dist/{chunk-I2K2NCZQ.js → chunk-BQQ5MXUC.js} +6 -6
  37. package/dist/{chunk-X3BI7HTV.js → chunk-C3G5PNUO.js} +21 -21
  38. package/dist/{chunk-SRZOW5L2.js → chunk-C6GEXX4L.js} +1 -1
  39. package/dist/{chunk-6RYDAVQT.js → chunk-CE64C5K5.js} +219 -64
  40. package/dist/chunk-CP3HIR5H.js +2119 -0
  41. package/dist/{chunk-BBV5TKE6.js → chunk-CPXGJI2A.js} +2 -2
  42. package/dist/{chunk-IGLVVNEG.js → chunk-CULVKYTK.js} +4 -4
  43. package/dist/{chunk-DXLUVUD4.js → chunk-D2T66PDV.js} +5 -5
  44. package/dist/{chunk-NF3BK5WR.js → chunk-DACXIVVF.js} +5 -5
  45. package/dist/{chunk-IKRWLEDA.js → chunk-DLIYANB7.js} +20 -15
  46. package/dist/{chunk-RGZNQ5CT.js → chunk-DO7M3LSX.js} +9 -9
  47. package/dist/{chunk-2QPI3TR3.js → chunk-DVJL77SO.js} +2 -2
  48. package/dist/{chunk-ODUTYZIU.js → chunk-EUEXGXXR.js} +5 -5
  49. package/dist/{chunk-WKUYQBCG.js → chunk-EUZRMP4Y.js} +18 -16
  50. package/dist/{chunk-JMPL7NUB.js → chunk-G4LGUTOE.js} +4 -4
  51. package/dist/{chunk-CBSKDFWL.js → chunk-GEVQNST4.js} +2 -2
  52. package/dist/{chunk-NNWJYUNO.js → chunk-GFQ7P2UF.js} +7 -7
  53. package/dist/{chunk-SXQKNKRA.js → chunk-GI5RRMAH.js} +14 -14
  54. package/dist/{chunk-HPTJF6DG.js → chunk-GVZFCJHE.js} +336 -83
  55. package/dist/{chunk-ACCKVSHU.js → chunk-GXIWHXDB.js} +3 -3
  56. package/dist/{chunk-LUL5Z66S.js → chunk-HOX4YZ2K.js} +6 -5
  57. package/dist/chunk-HRAKUPIH.js +57 -0
  58. package/dist/{chunk-F5Z7EWMN.js → chunk-IJMW64DX.js} +50 -50
  59. package/dist/{chunk-QNWRHOMF.js → chunk-IMOD2YPV.js} +16 -9
  60. package/dist/{chunk-HZ2T2YED.js → chunk-IQCNVLO6.js} +28 -8
  61. package/dist/{chunk-HZFBVU5X.js → chunk-ISNCCX42.js} +8 -8
  62. package/dist/{chunk-7JSSKXG2.js → chunk-IZYTT3CD.js} +7 -3
  63. package/dist/chunk-KKEYGFX4.js +915 -0
  64. package/dist/{chunk-HHVJNVUJ.js → chunk-KS7ETA3P.js} +2 -2
  65. package/dist/{chunk-BLTEAUCB.js → chunk-L3Z5ANCV.js} +7 -7
  66. package/dist/{chunk-4VMV6OS6.js → chunk-LBFQMYS3.js} +2 -2
  67. package/dist/{chunk-URBGEOH3.js → chunk-M6Z2V6YU.js} +5 -5
  68. package/dist/{chunk-BT7HGDOX.js → chunk-MBJO5VNZ.js} +12 -12
  69. package/dist/chunk-MNQN3X6Y.js +595 -0
  70. package/dist/{chunk-3QKXHCGS.js → chunk-MZHXENL7.js} +5 -5
  71. package/dist/chunk-MZNWZUJM.js +1801 -0
  72. package/dist/{chunk-7YJWEF2L.js → chunk-N37QC5FV.js} +5 -5
  73. package/dist/{chunk-TJFDL26W.js → chunk-NCCQ6DVS.js} +7 -7
  74. package/dist/{chunk-P5JMBPDJ.js → chunk-NO7J45X6.js} +162 -47
  75. package/dist/chunk-OH3YYA3B.js +15 -0
  76. package/dist/{chunk-22PQ4TX4.js → chunk-P4DL2LM5.js} +16 -77
  77. package/dist/{chunk-LIN2K3EL.js → chunk-PFLOULP3.js} +4 -4
  78. package/dist/{chunk-QXFBABFJ.js → chunk-QKWL7SYE.js} +11 -11
  79. package/dist/chunk-RFCKPS2V.js +26 -0
  80. package/dist/{chunk-ZS43Y2FT.js → chunk-RTLNFZMD.js} +12 -4
  81. package/dist/{chunk-U7H5WRG5.js → chunk-RXFPB32E.js} +8 -6
  82. package/dist/{chunk-Q7NNUHQV.js → chunk-SEDI5K5B.js} +16 -16
  83. package/dist/{chunk-WV6TDAPN.js → chunk-SELG4SUR.js} +7 -7
  84. package/dist/{chunk-3WBALRQH.js → chunk-SER7RRAE.js} +27 -832
  85. package/dist/{chunk-K2HL3GBL.js → chunk-T4TY5GG3.js} +165 -15
  86. package/dist/chunk-T7QQBNLH.js +691 -0
  87. package/dist/{chunk-6OII3LOK.js → chunk-TLTGZTXI.js} +3 -3
  88. package/dist/chunk-TZ6UVP2H.js +637 -0
  89. package/dist/{chunk-3JLFK5MW.js → chunk-TZHN5ITX.js} +13 -41
  90. package/dist/{chunk-VANN3GDP.js → chunk-U3TPUXOQ.js} +399 -234
  91. package/dist/{chunk-VHMX7SXF.js → chunk-UA3W4FGC.js} +6 -6
  92. package/dist/{chunk-3O2ZAUGQ.js → chunk-UA6W4XFJ.js} +2 -2
  93. package/dist/chunk-UWD3JD5X.js +709 -0
  94. package/dist/chunk-V4ZKOKRB.js +13433 -0
  95. package/dist/{chunk-NC4KV7EL.js → chunk-VCRVEDUC.js} +5 -5
  96. package/dist/{chunk-4DU2TVI4.js → chunk-VMATUZB6.js} +12 -10
  97. package/dist/{chunk-J2FYEQ5L.js → chunk-VTYHHQ57.js} +2 -2
  98. package/dist/chunk-WB7POC6M.js +891 -0
  99. package/dist/{chunk-3HQVBIKD.js → chunk-WBVKKTUT.js} +2 -2
  100. package/dist/{chunk-EHOSNVVM.js → chunk-WLHX3MM5.js} +6 -2
  101. package/dist/{chunk-24T2YZ7A.js → chunk-WN552PKN.js} +553 -298
  102. package/dist/{chunk-4U4TKZFR.js → chunk-WT5TRMO4.js} +51 -26
  103. package/dist/{chunk-XWMSPJYN.js → chunk-WURGVOZJ.js} +56 -12
  104. package/dist/{chunk-7WUZEB2M.js → chunk-XR3XJN2M.js} +2 -2
  105. package/dist/chunk-XW2UZICE.js +372 -0
  106. package/dist/{chunk-2AKYFREM.js → chunk-XZ6UFQ52.js} +11 -11
  107. package/dist/chunk-Y3JU5RPK.js +8 -0
  108. package/dist/chunk-YKRJTYNP.js +1143 -0
  109. package/dist/{chunk-PWWSIB2A.js → chunk-ZGIGW4ZG.js} +5 -5
  110. package/dist/cli/index.js +34 -36
  111. package/dist/{clio-QQCMTUZE.js → clio-L2P7S2R2.js} +9 -9
  112. package/dist/{code-nav-GUPM6766.js → code-nav-B5LNX4KU.js} +25 -25
  113. package/dist/{components-TNIKXCBH.js → components-63MMQKUT.js} +6 -6
  114. package/dist/{config-IIM7YOD3.js → config-YXARKGTX.js} +70 -67
  115. package/dist/{configure-4ZM5HWJX.js → configure-LMVQJ46J.js} +47 -35
  116. package/dist/{context-OL5P3HEP.js → context-7HJEWTTP.js} +87 -44
  117. package/dist/{context-44BZLJ3J.js → context-XSZKKFBW.js} +14 -14
  118. package/dist/{context-AIDVQKMW.js → context-YG2LZDYZ.js} +60 -58
  119. package/dist/{context-clear-OQV76MYP.js → context-clear-AC5NXHM2.js} +57 -55
  120. package/dist/{context-index-HP2JFUWA.js → context-index-KKTPRV5G.js} +3 -3
  121. package/dist/{context-map-INTXD54D.js → context-map-T7ROR5D5.js} +4 -4
  122. package/dist/{context-working-set-ZUW3EGLS.js → context-working-set-F4Q4J3NS.js} +12 -10
  123. package/dist/{detail-UXPWRANG.js → detail-H73BEF2N.js} +58 -56
  124. package/dist/{dispatch-runner-P3ZW6G77.js → dispatch-runner-3RY5FSJC.js} +74 -72
  125. package/dist/{doctor-JJVGPZWT.js → doctor-EQYJOGUG.js} +44 -30
  126. package/dist/{eval-V2RTN3UH.js → eval-4P7O6CCE.js} +109 -46
  127. package/dist/{evidence-35PYWGSO.js → evidence-D6GUSYJW.js} +57 -55
  128. package/dist/{evidence-CIGGKI6J.js → evidence-O76QF7TZ.js} +62 -59
  129. package/dist/{evolve-33SM3NJP.js → evolve-H47BCETS.js} +58 -56
  130. package/dist/{extensions-YVRHX6ZI.js → extensions-NNL3ZOCU.js} +98 -20
  131. package/dist/{fleet-LFO7SIPC.js → fleet-KMNS6NOM.js} +106 -99
  132. package/dist/{fleet-commands-RLK72GU3.js → fleet-commands-DOWSYCBX.js} +14 -14
  133. package/dist/{fleet-decisions-3SBSCTCW.js → fleet-decisions-S3PTZV2D.js} +9 -9
  134. package/dist/{fleet-graph-JZIBCGMW.js → fleet-graph-F2DE2TME.js} +26 -24
  135. package/dist/{fleet-inspect-2L5YGGZJ.js → fleet-inspect-EN2Q6IVB.js} +60 -57
  136. package/dist/{fleet-preflight-QRSHIIDE.js → fleet-preflight-FRLETDD3.js} +3 -3
  137. package/dist/{fleet-validate-LIAVKDUU.js → fleet-validate-B2XDLS57.js} +28 -29
  138. package/dist/{fleet-verify-JIK3OQZR.js → fleet-verify-4JKUWGJ7.js} +57 -55
  139. package/dist/{fleet-view-IWHYGQKK.js → fleet-view-BHJFW26B.js} +60 -57
  140. package/dist/{init-NJEDOTQW.js → init-XAT5N5YM.js} +79 -74
  141. package/dist/interop-FVECHFKG.js +246 -0
  142. package/dist/{inventory-74UL7UHU.js → inventory-7KFQGLCV.js} +60 -57
  143. package/dist/library-NY2XOT75.js +492 -0
  144. package/dist/library-QAPAO23R.js +306 -0
  145. package/dist/library-import-5Y6MAS3R.js +183 -0
  146. package/dist/library-inventory-JT6HWITQ.js +56 -0
  147. package/dist/library-validation-EQUH25DC.js +42 -0
  148. package/dist/{memory-I76I5VUH.js → memory-DYVTTCP6.js} +58 -56
  149. package/dist/{models-D4YDIQZQ.js → models-MASFJ6Y2.js} +48 -36
  150. package/dist/{monitor-NKVD55HX.js → monitor-YMP4NXJJ.js} +64 -61
  151. package/dist/{orchestrator-I6OATVPK.js → orchestrator-AFQRRTEI.js} +3685 -1841
  152. package/dist/{panes-7BTYH3XQ.js → panes-D3Y2KFG5.js} +4 -4
  153. package/dist/{panes-WPOMEMRH.js → panes-NICTHQCV.js} +7 -7
  154. package/dist/{paths-J3KN7UAO.js → paths-PSFAUIGO.js} +5 -5
  155. package/dist/{preload-EJAWJEIO.js → preload-5Q7VXRFJ.js} +57 -55
  156. package/dist/{reset-4XMQKDNZ.js → reset-7NKZK7JN.js} +9 -9
  157. package/dist/{resources-TVYVXK3Q.js → resources-NILSIZAT.js} +94 -38
  158. package/dist/{run-OWQNNSJU.js → run-BPZGEBZV.js} +121 -105
  159. package/dist/{share-NPZZMUXG.js → share-EZ6ERBMH.js} +31 -28
  160. package/dist/skills-BTVVNYVM.js +100 -0
  161. package/dist/{skills-eval-J5TCKSJA.js → skills-eval-UY34MNK7.js} +110 -72
  162. package/dist/{skills-inventory-7II4DM57.js → skills-inventory-JDHSIA7I.js} +30 -25
  163. package/dist/{slash-commands-MDSDSWYF.js → slash-commands-K4FNQ2AT.js} +49 -46
  164. package/dist/{steer-S7D7IKPU.js → steer-2B3EQGFH.js} +4 -4
  165. package/dist/{support-5VAEC32W.js → support-L2SOL3IE.js} +7 -7
  166. package/dist/{targets-KILZEOCE.js → targets-44VKGFLN.js} +64 -58
  167. package/dist/{tasks-R6P6OV22.js → tasks-3KODKFU7.js} +12 -12
  168. package/dist/{terminal-lease-LZCG2KN3.js → terminal-lease-LXA7MMPO.js} +32 -19
  169. package/dist/{tools-6OCQ6SVB.js → tools-3UB7TEVR.js} +7 -7
  170. package/dist/{trace-JHLXWUMN.js → trace-TAMIU4OJ.js} +5 -4
  171. package/dist/{tui-primitives-RCY2HN7G.js → tui-primitives-A6MUW32V.js} +3 -2
  172. package/dist/{uninstall-FXYMFFRT.js → uninstall-QYVRPEM4.js} +9 -9
  173. package/dist/{upgrade-D2OZH6IQ.js → upgrade-7PMKM2JH.js} +15 -16
  174. package/dist/{usage-PIASNUS4.js → usage-6EQV7EQK.js} +70 -67
  175. package/dist/{verifiers-LTHUY2PX.js → verifiers-JLITWSHU.js} +15 -15
  176. package/dist/{verify-HYF7KBVE.js → verify-T7NAEVIG.js} +13 -13
  177. package/dist/{web-fetch-MQN4FH3X.js → web-fetch-W4TNW4Q7.js} +4 -4
  178. package/dist/{wiki-generate-RK7JQ5NP.js → wiki-generate-T2TJQJUA.js} +81 -76
  179. package/dist/{with-panes-OFTNAR4Y.js → with-panes-CHFC7HGI.js} +4 -4
  180. package/dist/worker/entry.js +283 -76
  181. package/docs/README.md +43 -0
  182. package/docs/architecture/architecture.md +8 -7
  183. package/docs/architecture/artifact-versions.md +3 -3
  184. package/docs/architecture/context-engine.md +35 -1
  185. package/docs/architecture/library.md +32 -0
  186. package/docs/architecture/middleware-and-components.md +1 -1
  187. package/docs/architecture/model-catalog.md +21 -1
  188. package/docs/architecture/pi-boundary.md +18 -0
  189. package/docs/architecture/prompt-envelope-and-tools.md +5 -5
  190. package/docs/architecture/safety-model.md +21 -2
  191. package/docs/architecture/session-lifecycle.md +12 -1
  192. package/docs/architecture/tui-design.md +108 -9
  193. package/docs/architecture/worker-context.md +106 -0
  194. package/docs/guide/authoring-plugins.md +160 -0
  195. package/docs/guide/built-in-agents.md +5 -5
  196. package/docs/guide/commands-and-modes.md +161 -56
  197. package/docs/guide/configuration-and-targets.md +1 -1
  198. package/docs/guide/configuration-reference.md +27 -34
  199. package/docs/guide/environment-variables.md +2 -2
  200. package/docs/guide/exit-codes-and-output.md +1 -1
  201. package/docs/guide/extensions-and-sharing.md +93 -53
  202. package/docs/guide/fleet-dispatch.md +31 -4
  203. package/docs/guide/glossary.md +1 -1
  204. package/docs/guide/harness-extensions.md +291 -0
  205. package/docs/guide/installation-and-lifecycle.md +9 -9
  206. package/docs/guide/interop.md +243 -0
  207. package/docs/guide/panes-and-files.md +3 -3
  208. package/docs/guide/plugins.md +80 -0
  209. package/docs/guide/resource-library.md +111 -45
  210. package/docs/guide/skills-marketplace.md +35 -72
  211. package/docs/guide/tool-usage.md +19 -7
  212. package/docs/guide/troubleshooting.md +1 -1
  213. package/docs/process/development-pipeline.md +14 -14
  214. package/docs/process/documentation-coverage.md +28 -1
  215. package/docs/process/documentation-guide.md +15 -7
  216. package/docs/process/eval-runner.md +8 -3
  217. package/docs/process/performance-methodology.md +1 -1
  218. package/docs/process/release-cut-checklist.md +4 -0
  219. package/docs/process/scientific-validation.md +23 -0
  220. package/evals/scalar-decision-machinery.ts +1 -1
  221. package/examples/extensions/README.md +67 -0
  222. package/examples/extensions/lab-status/clio-coder-extension.json +14 -0
  223. package/examples/extensions/lab-status/extension.mjs +68 -0
  224. package/examples/extensions/lab-status/jobs.synthetic.json +9 -0
  225. package/examples/extensions/measurements/clio-coder-extension.json +28 -0
  226. package/examples/extensions/measurements/summarize.cjs +23 -0
  227. package/library/README.md +109 -0
  228. package/library/_authoring/templates/agent/README.md +28 -0
  229. package/library/_authoring/templates/agent/agents/benchmark-scout.md +30 -0
  230. package/library/_authoring/templates/agent/plugin.json +23 -0
  231. package/library/_authoring/templates/fleet/README.md +29 -0
  232. package/library/_authoring/templates/fleet/fleets/pipeline-review.md +31 -0
  233. package/library/_authoring/templates/fleet/plugin.json +23 -0
  234. package/library/_authoring/templates/plugin/README.md +37 -0
  235. package/library/_authoring/templates/plugin/agents/data-curator.md +31 -0
  236. package/library/_authoring/templates/plugin/assets/curation-guide.md +22 -0
  237. package/library/_authoring/templates/plugin/plugin.json +42 -0
  238. package/library/_authoring/templates/plugin/prompts/inspect-dataset.md +15 -0
  239. package/library/_authoring/templates/plugin/skills/dataset-curation/SKILL.md +36 -0
  240. package/library/_authoring/templates/plugin/skills/dataset-curation/evals.md +17 -0
  241. package/library/_authoring/templates/prompt/README.md +28 -0
  242. package/library/_authoring/templates/prompt/plugin.json +23 -0
  243. package/library/_authoring/templates/prompt/prompts/paper-summary.md +26 -0
  244. package/library/_authoring/templates/skill/README.md +24 -0
  245. package/library/_authoring/templates/skill/SKILL.md +39 -0
  246. package/library/_authoring/templates/skill/evals.md +30 -0
  247. package/library/_authoring/templates/skill/plugin.json +23 -0
  248. package/library/agents/README.md +7 -0
  249. package/library/fleets/README.md +7 -0
  250. package/library/plugins/materio/README.md +137 -0
  251. package/library/plugins/materio/ai.iowarp.clio/agents/materio-lab-definer.md +208 -0
  252. package/library/plugins/materio/ai.iowarp.clio/agents/materio-literature-reviewer.md +308 -0
  253. package/library/plugins/materio/ai.iowarp.clio/agents/materio-research-explorer.md +249 -0
  254. package/library/plugins/materio/ai.iowarp.clio/agents/materio-task-executor.md +416 -0
  255. package/library/plugins/materio/ai.iowarp.clio/agents/materio-task-verifier.md +60 -0
  256. package/library/plugins/materio/ai.iowarp.clio/agents/materio-workflow-planner.md +238 -0
  257. package/library/plugins/materio/ai.iowarp.clio/fleets/materio-execute-task.md +50 -0
  258. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/add-task.md +66 -0
  259. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/archive-task.md +65 -0
  260. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/checkpoint.md +26 -0
  261. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/define-research-tasks.md +230 -0
  262. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/define-virtual-lab.md +181 -0
  263. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/execute-task.md +292 -0
  264. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/help.md +129 -0
  265. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/identify-research.md +206 -0
  266. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/literature-review.md +201 -0
  267. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/pause-research.md +12 -0
  268. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/progress.md +105 -0
  269. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/remove-task.md +63 -0
  270. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/resume-research.md +64 -0
  271. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/settings.md +16 -0
  272. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/status.md +92 -0
  273. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/upload-data.md +104 -0
  274. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/wtfp.md +145 -0
  275. package/library/plugins/materio/ai.iowarp.clio/references/execution.md +56 -0
  276. package/library/plugins/materio/ai.iowarp.portability/provenance.json +9 -0
  277. package/library/plugins/materio/assets/actions/add-task.md +86 -0
  278. package/library/plugins/materio/assets/actions/archive-task.md +84 -0
  279. package/library/plugins/materio/assets/actions/checkpoint.md +47 -0
  280. package/library/plugins/materio/assets/actions/define-research-tasks.md +228 -0
  281. package/library/plugins/materio/assets/actions/define-virtual-lab.md +179 -0
  282. package/library/plugins/materio/assets/actions/execute-task.md +290 -0
  283. package/library/plugins/materio/assets/actions/help.md +140 -0
  284. package/library/plugins/materio/assets/actions/identify-research.md +204 -0
  285. package/library/plugins/materio/assets/actions/literature-review.md +199 -0
  286. package/library/plugins/materio/assets/actions/pause-research.md +34 -0
  287. package/library/plugins/materio/assets/actions/progress.md +125 -0
  288. package/library/plugins/materio/assets/actions/remove-task.md +82 -0
  289. package/library/plugins/materio/assets/actions/resume-research.md +84 -0
  290. package/library/plugins/materio/assets/actions/settings.md +38 -0
  291. package/library/plugins/materio/assets/actions/status.md +112 -0
  292. package/library/plugins/materio/assets/actions/upload-data.md +123 -0
  293. package/library/plugins/materio/assets/actions/wtfp.md +179 -0
  294. package/library/plugins/materio/assets/references/research-domains.md +134 -0
  295. package/library/plugins/materio/assets/references/research-policy.md +77 -0
  296. package/library/plugins/materio/assets/references/traditional-workflows.md +146 -0
  297. package/library/plugins/materio/assets/scripts/check_physics.py +271 -0
  298. package/library/plugins/materio/assets/scripts/check_scripts.py +248 -0
  299. package/library/plugins/materio/assets/scripts/project_plugin.py +165 -0
  300. package/library/plugins/materio/assets/scripts/research_state.py +400 -0
  301. package/library/plugins/materio/assets/scripts/verify_citations.py +616 -0
  302. package/library/plugins/materio/assets/templates/RESEARCH.md +39 -0
  303. package/library/plugins/materio/assets/templates/VIRTUAL-LAB.md +120 -0
  304. package/library/plugins/materio/assets/templates/WORKFLOW.md +42 -0
  305. package/library/plugins/materio/assets/templates/config.json +5 -0
  306. package/library/plugins/materio/evals/scripts.yaml +29 -0
  307. package/library/plugins/materio/plugin.json +530 -0
  308. package/library/plugins/materio/skills/materio-lab-definer/SKILL.md +74 -0
  309. package/library/plugins/materio/skills/materio-literature-reviewer/SKILL.md +64 -0
  310. package/library/plugins/materio/skills/materio-research-explorer/SKILL.md +74 -0
  311. package/library/plugins/materio/skills/materio-task-executor/SKILL.md +214 -0
  312. package/library/plugins/materio/skills/materio-task-verifier/SKILL.md +46 -0
  313. package/library/plugins/materio/skills/materio-workflow-planner/SKILL.md +79 -0
  314. package/library/plugins/materio/tests/test_check_physics.py +139 -0
  315. package/library/plugins/materio/tests/test_check_scripts.py +140 -0
  316. package/library/plugins/materio/tests/test_research_state.py +291 -0
  317. package/library/plugins/materio/tests/test_verify_citations.py +337 -0
  318. package/library/prompts/README.md +7 -0
  319. package/library/registry.yaml +921 -0
  320. package/library/skills/README.md +120 -0
  321. package/{skills → library/skills}/coding/ast-grep/SKILL.md +1 -1
  322. package/{skills → library/skills}/coding/ast-grep/evals.md +1 -1
  323. package/library/skills/coding/ast-grep/plugin.json +23 -0
  324. package/{skills → library/skills}/coding/coding-standards/SKILL.md +1 -1
  325. package/{skills → library/skills}/coding/coding-standards/evals.md +1 -1
  326. package/library/skills/coding/coding-standards/plugin.json +23 -0
  327. package/{skills → library/skills}/coding/prototype/SKILL.md +1 -1
  328. package/{skills → library/skills}/coding/prototype/evals.md +1 -1
  329. package/library/skills/coding/prototype/plugin.json +23 -0
  330. package/{skills → library/skills}/coding/tdd/SKILL.md +1 -1
  331. package/{skills → library/skills}/coding/tdd/evals.md +1 -1
  332. package/library/skills/coding/tdd/plugin.json +23 -0
  333. package/{skills → library/skills}/context/context-handoff/SKILL.md +1 -1
  334. package/{skills → library/skills}/context/context-handoff/evals.md +1 -1
  335. package/library/skills/context/context-handoff/plugin.json +23 -0
  336. package/{skills → library/skills}/context/context-prime/SKILL.md +1 -1
  337. package/{skills → library/skills}/context/context-prime/evals.md +1 -1
  338. package/library/skills/context/context-prime/plugin.json +23 -0
  339. package/{skills → library/skills}/git/branch-closeout/SKILL.md +1 -1
  340. package/library/skills/git/branch-closeout/plugin.json +23 -0
  341. package/{skills → library/skills}/git/file-ticket/SKILL.md +1 -1
  342. package/library/skills/git/file-ticket/plugin.json +23 -0
  343. package/{skills → library/skills}/git/fix-issue/SKILL.md +1 -1
  344. package/library/skills/git/fix-issue/plugin.json +23 -0
  345. package/{skills → library/skills}/git/resolve-merge-conflicts/SKILL.md +1 -1
  346. package/{skills → library/skills}/git/resolve-merge-conflicts/evals.md +1 -1
  347. package/library/skills/git/resolve-merge-conflicts/plugin.json +23 -0
  348. package/{skills → library/skills}/git/ship/SKILL.md +1 -1
  349. package/library/skills/git/ship/plugin.json +23 -0
  350. package/{skills → library/skills}/git/worktree-create/SKILL.md +1 -1
  351. package/library/skills/git/worktree-create/plugin.json +23 -0
  352. package/{skills → library/skills}/git/worktree-merge/SKILL.md +1 -1
  353. package/library/skills/git/worktree-merge/plugin.json +23 -0
  354. package/{skills → library/skills}/meta/clio-coder-dev/SKILL.md +1 -1
  355. package/{skills → library/skills}/meta/clio-coder-dev/evals.md +1 -1
  356. package/library/skills/meta/clio-coder-dev/plugin.json +23 -0
  357. package/{skills → library/skills}/meta/clio-coder-test/SKILL.md +1 -1
  358. package/{skills → library/skills}/meta/clio-coder-test/evals.md +1 -1
  359. package/library/skills/meta/clio-coder-test/plugin.json +23 -0
  360. package/{skills → library/skills}/meta/credentials/SKILL.md +1 -1
  361. package/{skills → library/skills}/meta/credentials/evals.md +1 -1
  362. package/library/skills/meta/credentials/plugin.json +23 -0
  363. package/library/skills/meta/find-skills/SKILL.md +85 -0
  364. package/library/skills/meta/find-skills/evals.md +65 -0
  365. package/library/skills/meta/find-skills/plugin.json +23 -0
  366. package/{skills → library/skills}/meta/herdr/SKILL.md +1 -1
  367. package/{skills → library/skills}/meta/herdr/evals.md +1 -1
  368. package/library/skills/meta/herdr/plugin.json +23 -0
  369. package/{skills → library/skills}/meta/skill-craft/SKILL.md +23 -9
  370. package/{skills → library/skills}/meta/skill-craft/evals.md +11 -3
  371. package/library/skills/meta/skill-craft/plugin.json +23 -0
  372. package/{skills → library/skills}/planning/archify/SKILL.md +13 -13
  373. package/library/skills/planning/archify/plugin.json +23 -0
  374. package/{skills → library/skills}/planning/architecture/SKILL.md +1 -1
  375. package/{skills → library/skills}/planning/architecture/evals.md +1 -1
  376. package/library/skills/planning/architecture/plugin.json +23 -0
  377. package/{skills → library/skills}/planning/backlog/SKILL.md +1 -1
  378. package/{skills → library/skills}/planning/backlog/evals.md +1 -1
  379. package/library/skills/planning/backlog/plugin.json +23 -0
  380. package/{skills → library/skills}/planning/prd/SKILL.md +1 -1
  381. package/{skills → library/skills}/planning/prd/evals.md +1 -1
  382. package/library/skills/planning/prd/plugin.json +23 -0
  383. package/{skills → library/skills}/planning/product-intent/SKILL.md +1 -1
  384. package/{skills → library/skills}/planning/product-intent/evals.md +1 -1
  385. package/library/skills/planning/product-intent/plugin.json +23 -0
  386. package/{skills → library/skills}/planning/tech-spec/SKILL.md +1 -1
  387. package/{skills → library/skills}/planning/tech-spec/evals.md +1 -1
  388. package/library/skills/planning/tech-spec/plugin.json +23 -0
  389. package/{skills → library/skills}/registry.yaml +7 -7
  390. package/{skills → library/skills}/remote.yaml +1 -1
  391. package/{skills → library/skills}/research/arxiv-literature/SKILL.md +1 -1
  392. package/{skills → library/skills}/research/arxiv-literature/evals.md +1 -1
  393. package/library/skills/research/arxiv-literature/plugin.json +23 -0
  394. package/{skills → library/skills}/research/experiment-protocol/SKILL.md +1 -1
  395. package/{skills → library/skills}/research/experiment-protocol/evals.md +1 -1
  396. package/library/skills/research/experiment-protocol/plugin.json +23 -0
  397. package/{skills → library/skills}/research/scientific-debugging/SKILL.md +1 -1
  398. package/{skills → library/skills}/research/scientific-debugging/evals.md +1 -1
  399. package/library/skills/research/scientific-debugging/plugin.json +23 -0
  400. package/{skills → library/skills}/research/scientific-modernization/SKILL.md +1 -1
  401. package/{skills → library/skills}/research/scientific-modernization/evals.md +1 -1
  402. package/library/skills/research/scientific-modernization/plugin.json +23 -0
  403. package/{skills → library/skills}/skill-marketplace.json +37 -37
  404. package/{skills → library/skills}/workflow/cut-it/SKILL.md +1 -1
  405. package/{skills → library/skills}/workflow/cut-it/evals.md +1 -1
  406. package/library/skills/workflow/cut-it/plugin.json +23 -0
  407. package/{skills → library/skills}/workflow/design-council/SKILL.md +1 -1
  408. package/{skills → library/skills}/workflow/design-council/evals.md +1 -1
  409. package/library/skills/workflow/design-council/plugin.json +23 -0
  410. package/{skills → library/skills}/workflow/grill-me/SKILL.md +1 -1
  411. package/{skills → library/skills}/workflow/grill-me/evals.md +1 -1
  412. package/library/skills/workflow/grill-me/plugin.json +23 -0
  413. package/{skills → library/skills}/workflow/workflow-distiller/SKILL.md +14 -11
  414. package/{skills → library/skills}/workflow/workflow-distiller/evals.md +14 -6
  415. package/library/skills/workflow/workflow-distiller/plugin.json +23 -0
  416. package/package.json +12 -5
  417. package/src/cli/agents.ts +1 -1
  418. package/src/cli/config-inspect.ts +1 -1
  419. package/src/cli/configure.ts +2 -2
  420. package/src/cli/eval.ts +40 -6
  421. package/src/cli/extensions.ts +74 -8
  422. package/src/cli/fleet-preflight.ts +2 -0
  423. package/src/cli/fleet.ts +2 -0
  424. package/src/cli/index.ts +1 -3
  425. package/src/cli/interop-inspect.ts +61 -33
  426. package/src/cli/interop.ts +79 -9
  427. package/src/cli/library-import.ts +139 -0
  428. package/src/cli/library.ts +418 -120
  429. package/src/cli/run.ts +26 -9
  430. package/src/cli/skills-eval.ts +43 -6
  431. package/src/cli/skills-inventory.ts +6 -2
  432. package/src/cli/skills.ts +44 -491
  433. package/src/core/bus-events.ts +5 -0
  434. package/src/core/defaults.ts +1 -1
  435. package/src/core/recent-models.ts +2 -2
  436. package/src/core/session-routing.ts +3 -3
  437. package/src/core/state-file-lock.ts +1 -1
  438. package/src/core/tool-names.ts +5 -0
  439. package/src/domains/agents/extension.ts +42 -6
  440. package/src/domains/agents/fleet-commands.ts +92 -1
  441. package/src/domains/agents/fleet-contract.ts +87 -19
  442. package/src/domains/agents/recipe.ts +5 -4
  443. package/src/domains/agents/registry.ts +80 -24
  444. package/src/domains/config/keybindings.ts +155 -95
  445. package/src/domains/context/worker/contract.ts +91 -0
  446. package/src/domains/context/worker/pressure.ts +120 -0
  447. package/src/domains/context/worker/recall.ts +62 -0
  448. package/src/domains/context/worker/select.ts +164 -0
  449. package/src/domains/context/worker/snapshot.ts +35 -0
  450. package/src/domains/context/worker/store.ts +16 -0
  451. package/src/domains/context/working-set/replay/synthetic.ts +2 -1
  452. package/src/domains/dispatch/active-route-planner.ts +2 -0
  453. package/src/domains/dispatch/backoff.ts +1 -0
  454. package/src/domains/dispatch/code-step.ts +12 -2
  455. package/src/domains/dispatch/contract.ts +3 -0
  456. package/src/domains/dispatch/execution-plan.ts +2 -0
  457. package/src/domains/dispatch/extension.ts +109 -27
  458. package/src/domains/dispatch/fleet-plan.ts +10 -0
  459. package/src/domains/dispatch/fleet-run.ts +1 -0
  460. package/src/domains/dispatch/orphan-recovery.ts +1 -0
  461. package/src/domains/dispatch/receipt-integrity.ts +4 -0
  462. package/src/domains/dispatch/state.ts +1 -0
  463. package/src/domains/dispatch/types.ts +5 -0
  464. package/src/domains/dispatch/validation.ts +12 -0
  465. package/src/domains/dispatch/workspace-checkpoint.ts +1 -1
  466. package/src/domains/evidence/failure-attribution.ts +1 -0
  467. package/src/domains/evidence/trust-status.ts +22 -3
  468. package/src/domains/extensions/command-schema.ts +145 -0
  469. package/src/domains/extensions/command-tools.ts +15 -0
  470. package/src/domains/extensions/compatibility.ts +7 -0
  471. package/src/domains/extensions/contract.ts +0 -4
  472. package/src/domains/extensions/discovery.ts +69 -205
  473. package/src/domains/extensions/extension.ts +0 -4
  474. package/src/domains/extensions/index.ts +1 -5
  475. package/src/domains/extensions/manager.ts +1 -6
  476. package/src/domains/extensions/operator-commands.ts +29 -0
  477. package/src/domains/extensions/operator-runtime.ts +483 -0
  478. package/src/domains/extensions/public-api.ts +53 -0
  479. package/src/domains/extensions/runtime-child.mjs +114 -0
  480. package/src/domains/extensions/runtime-process.ts +306 -0
  481. package/src/domains/extensions/runtime-schema.ts +146 -0
  482. package/src/domains/extensions/{resources.ts → snapshot-access.ts} +1 -17
  483. package/src/domains/extensions/snapshot.ts +4 -32
  484. package/src/domains/extensions/state.ts +5 -83
  485. package/src/domains/extensions/types.ts +33 -34
  486. package/src/domains/interop/adopt.ts +546 -0
  487. package/src/domains/interop/detect.ts +50 -12
  488. package/src/domains/interop/foreign.ts +554 -0
  489. package/src/domains/interop/import.ts +277 -0
  490. package/src/domains/interop/index.ts +24 -0
  491. package/src/domains/interop/install.ts +6 -0
  492. package/src/domains/interop/inventory.ts +351 -0
  493. package/src/domains/interop/projection.ts +360 -0
  494. package/src/domains/interop/registry.ts +106 -3
  495. package/src/domains/interop/types.ts +51 -0
  496. package/src/domains/lifecycle/migrations/index.ts +0 -2
  497. package/src/domains/lifecycle/naming-resources.ts +1 -1
  498. package/src/domains/middleware/marketplace-offer.ts +1 -1
  499. package/src/domains/mux/contract.ts +1 -1
  500. package/src/domains/plugins/catalog.ts +204 -0
  501. package/src/domains/plugins/contract.ts +24 -0
  502. package/src/domains/plugins/discovery.ts +316 -0
  503. package/src/domains/plugins/extension.ts +40 -0
  504. package/src/domains/plugins/index.ts +77 -0
  505. package/src/domains/plugins/integrity.ts +6 -0
  506. package/src/domains/plugins/manifest.ts +3 -0
  507. package/src/domains/plugins/resources.ts +102 -0
  508. package/src/domains/plugins/state.ts +753 -0
  509. package/src/domains/plugins/types.ts +217 -0
  510. package/src/domains/prompts/extension.ts +9 -2
  511. package/src/domains/prompts/fragments/operating/skills.md +10 -10
  512. package/src/domains/resources/common-loader.ts +9 -6
  513. package/src/domains/resources/index.ts +67 -0
  514. package/src/domains/resources/library-actions.ts +836 -0
  515. package/src/domains/resources/library-evals.ts +38 -0
  516. package/src/domains/resources/library-inventory.ts +1048 -0
  517. package/src/domains/resources/library-types.ts +50 -0
  518. package/src/domains/resources/library-validation.ts +634 -0
  519. package/src/domains/resources/library.ts +437 -156
  520. package/src/domains/resources/package-references.ts +66 -0
  521. package/src/domains/resources/prompts/loader.ts +75 -41
  522. package/src/domains/resources/skills/install.ts +2 -2
  523. package/src/domains/resources/skills/loader.ts +77 -22
  524. package/src/domains/resources/skills/marketplace.ts +48 -57
  525. package/src/domains/resources/skills/promotion.ts +2 -2
  526. package/src/domains/resources/skills/provenance-pin.ts +17 -4
  527. package/src/domains/safety/action-classifier.ts +2 -2
  528. package/src/domains/safety/default-path-policy.ts +3 -1
  529. package/src/domains/safety/policy-engine.ts +1 -1
  530. package/src/domains/safety/protected-artifacts.ts +21 -5
  531. package/src/domains/safety/skill-authority.ts +5 -2
  532. package/src/domains/share/archive.ts +1 -1
  533. package/src/engine/apis/openai-completions.ts +52 -2
  534. package/src/engine/notices/pi-tui-LICENSE +21 -0
  535. package/src/engine/tui.ts +3 -0
  536. package/src/engine/worker-runtime.ts +58 -14
  537. package/src/engine/worker-tools.ts +5 -0
  538. package/src/entry/orchestrator.ts +26 -5
  539. package/src/entry/plugin-reload.ts +18 -0
  540. package/src/interactive/application-controller.ts +67 -21
  541. package/src/interactive/chat-loop.ts +32 -5
  542. package/src/interactive/chat-panel.ts +5 -1
  543. package/src/interactive/clio-editor.ts +53 -21
  544. package/src/interactive/command-output.ts +56 -1
  545. package/src/interactive/editor-submit.ts +65 -28
  546. package/src/interactive/fleet-run-preview.ts +2 -0
  547. package/src/interactive/follow-up-queue-panel.ts +3 -3
  548. package/src/interactive/footer/dashboard.ts +4 -1
  549. package/src/interactive/footer/notifications.ts +2 -2
  550. package/src/interactive/footer/widgets.ts +2 -2
  551. package/src/interactive/interactive-application.ts +209 -21
  552. package/src/interactive/interactive-input-runtime.ts +254 -7
  553. package/src/interactive/interactive-presentation.ts +41 -12
  554. package/src/interactive/interactive-slash-runtime.ts +37 -8
  555. package/src/interactive/keybinding-manager.ts +156 -79
  556. package/src/interactive/keyboard-owner.ts +37 -0
  557. package/src/interactive/leader-key.ts +49 -102
  558. package/src/interactive/leader-menu.ts +45 -0
  559. package/src/interactive/overlay-ask-user-lifecycle.ts +9 -1
  560. package/src/interactive/overlay-frame.ts +15 -0
  561. package/src/interactive/overlay-key-routing.ts +46 -47
  562. package/src/interactive/overlay-lifecycle.ts +30 -15
  563. package/src/interactive/overlay-resource-openers.ts +56 -46
  564. package/src/interactive/overlays/ask-user.ts +630 -556
  565. package/src/interactive/overlays/extension-panel.ts +70 -0
  566. package/src/interactive/overlays/extensions.ts +28 -5
  567. package/src/interactive/overlays/fleet-run-approval.ts +7 -3
  568. package/src/interactive/overlays/help-reference.ts +89 -40
  569. package/src/interactive/overlays/interop.ts +122 -3
  570. package/src/interactive/overlays/keybinding-detail.ts +2 -2
  571. package/src/interactive/overlays/library-lifecycle.ts +90 -0
  572. package/src/interactive/overlays/library-model.ts +574 -0
  573. package/src/interactive/overlays/library-review.ts +557 -0
  574. package/src/interactive/overlays/library-tabs.ts +3 -15
  575. package/src/interactive/overlays/library.ts +602 -0
  576. package/src/interactive/overlays/list-overlay.ts +218 -39
  577. package/src/interactive/overlays/model-selector.ts +28 -25
  578. package/src/interactive/overlays/session-selector.ts +9 -3
  579. package/src/interactive/overlays/settings.ts +25 -18
  580. package/src/interactive/overlays/tree-selector.ts +16 -11
  581. package/src/interactive/permission-hint.ts +13 -0
  582. package/src/interactive/permission-overlay.ts +77 -28
  583. package/src/interactive/prompt-source-label.ts +21 -0
  584. package/src/interactive/renderers/reference-card.ts +35 -0
  585. package/src/interactive/renderers/worker-entry.ts +35 -3
  586. package/src/interactive/slash-autocomplete.ts +99 -1
  587. package/src/interactive/slash-commands.ts +390 -67
  588. package/src/interactive/slash-spec.ts +0 -1
  589. package/src/interactive/terminal-lease.ts +44 -12
  590. package/src/interactive/turn-queues.ts +8 -7
  591. package/src/interactive/turn-runtime.ts +1 -1
  592. package/src/interactive/view/view-overlay.ts +19 -14
  593. package/src/interactive/welcome-dashboard.ts +525 -408
  594. package/src/tools/bootstrap.ts +8 -0
  595. package/src/tools/builtin-tool-catalog.ts +7 -2
  596. package/src/tools/context/index.ts +58 -5
  597. package/src/tools/context/library.ts +465 -0
  598. package/src/tools/context/surface.ts +20 -6
  599. package/src/tools/core-bootstrap.ts +3 -0
  600. package/src/tools/dispatch-admission.ts +24 -1
  601. package/src/tools/dispatch-arguments.ts +8 -0
  602. package/src/tools/dispatch-plan.ts +32 -0
  603. package/src/tools/dispatch-schema.ts +31 -1
  604. package/src/tools/dispatch-types.ts +3 -0
  605. package/src/tools/dispatch.ts +1 -1
  606. package/src/tools/harness-extensions.ts +169 -0
  607. package/src/tools/observation.ts +4 -0
  608. package/src/tools/policy.ts +7 -1
  609. package/src/tools/registry.ts +19 -1
  610. package/src/tools/worker-evidence.ts +5 -0
  611. package/src/worker/context-seed.ts +192 -0
  612. package/src/worker/entry.ts +1 -0
  613. package/src/worker/spec-contract.ts +8 -1
  614. package/dist/chunk-3UW3KU4A.js +0 -21
  615. package/dist/chunk-536HXRFE.js +0 -1257
  616. package/dist/chunk-B3MOMLJ4.js +0 -433
  617. package/dist/chunk-CXQ37WJH.js +0 -45
  618. package/dist/chunk-KTFSFCVN.js +0 -46
  619. package/dist/chunk-QCOV5DFY.js +0 -911
  620. package/dist/chunk-QRFXEO6Y.js +0 -17
  621. package/dist/chunk-VAHLPXPY.js +0 -399
  622. package/dist/interop-RVCAYECG.js +0 -115
  623. package/dist/library-CTKZA7K3.js +0 -226
  624. package/dist/skills-OXFEAWMT.js +0 -510
  625. package/skills/README.md +0 -418
  626. package/skills/meta/find-skills/SKILL.md +0 -78
  627. package/skills/meta/find-skills/evals.md +0 -47
  628. package/src/domains/extensions/resource-path.ts +0 -27
  629. package/src/domains/lifecycle/migrations/2026-09-01-extension-install-digests.ts +0 -27
  630. package/src/interactive/overlays/agents.ts +0 -70
  631. package/src/interactive/overlays/library-install-confirm.ts +0 -152
  632. package/src/interactive/overlays/prompts.ts +0 -89
  633. package/src/interactive/overlays/skills-hub.ts +0 -615
  634. /package/{skills → library/skills}/coding/ast-grep/references/rule_reference.md +0 -0
  635. /package/{skills → library/skills}/coding/prototype/references/LOGIC.md +0 -0
  636. /package/{skills → library/skills}/coding/prototype/references/UI.md +0 -0
  637. /package/{skills → library/skills}/coding/tdd/references/mocking.md +0 -0
  638. /package/{skills → library/skills}/coding/tdd/references/tests.md +0 -0
  639. /package/{skills → library/skills}/context/context-handoff/scripts/new-handoff.sh +0 -0
  640. /package/{skills → library/skills}/git/branch-closeout/evals.md +0 -0
  641. /package/{skills → library/skills}/git/branch-closeout/references/closeout-checklist.md +0 -0
  642. /package/{skills → library/skills}/git/file-ticket/assets/issue-template.md +0 -0
  643. /package/{skills → library/skills}/git/file-ticket/evals.md +0 -0
  644. /package/{skills → library/skills}/git/file-ticket/references/issue-discovery.md +0 -0
  645. /package/{skills → library/skills}/git/fix-issue/evals.md +0 -0
  646. /package/{skills → library/skills}/git/fix-issue/references/diagnosis-and-rca.md +0 -0
  647. /package/{skills → library/skills}/git/resolve-merge-conflicts/references/conflict-matrix.md +0 -0
  648. /package/{skills → library/skills}/git/ship/assets/pr-template.md +0 -0
  649. /package/{skills → library/skills}/git/ship/evals.md +0 -0
  650. /package/{skills → library/skills}/git/ship/references/remote-and-branch-policy.md +0 -0
  651. /package/{skills → library/skills}/git/worktree-create/evals.md +0 -0
  652. /package/{skills → library/skills}/git/worktree-create/references/worktree-setup.md +0 -0
  653. /package/{skills → library/skills}/git/worktree-merge/evals.md +0 -0
  654. /package/{skills → library/skills}/git/worktree-merge/references/merge-strategies.md +0 -0
  655. /package/{skills → library/skills}/meta/clio-coder-test/references/harness.md +0 -0
  656. /package/{skills → library/skills}/meta/clio-coder-test/references/test-map.md +0 -0
  657. /package/{skills → library/skills}/planning/archify/evals.md +0 -0
@@ -0,0 +1,74 @@
1
+ ---
2
+ name: materio-research-explorer
3
+ description: "Synthesize candidate materials-science questions and write researcher-confirmed identity."
4
+ ---
5
+
6
+ For a new materials research direction, interview the domain, phenomenon, processing conditions, hypothesis, scope exclusions, resources, and timeline. Present three calibrated candidate questions, then write the selected identity and decisions under .research/ using the linked template. Preserve existing research state. Use the research state helper to initialize missing config.
7
+
8
+ Read the [shared research policy](../../assets/references/research-policy.md) for
9
+ state, provenance, execution boundaries, and advisory validation.
10
+
11
+ Read the linked references when needed. Resolve links from this skill directory.
12
+ If acting as a worker, return questions to the orchestrator; when acting as the
13
+ interactive assistant, collect the researcher answers directly using the host's
14
+ conversation facility.
15
+
16
+ - [research-domains.md](../../assets/references/research-domains.md)
17
+ - [RESEARCH.md](../../assets/templates/RESEARCH.md)
18
+ - [config.json](../../assets/templates/config.json)
19
+
20
+ ## What Makes a Good Research Prompt
21
+
22
+ A good research prompt is:
23
+ - **Specific**: Names specific material, property, condition, or phenomenon
24
+ - **Answerable**: Can be confirmed or refuted by an achievable experiment or calculation
25
+ - **Novel**: Not already fully answered in the literature (this comes from literature-review, but initial framing matters)
26
+ - **Scoped**: Has clear in/out boundaries so the researcher knows when they're done
27
+
28
+ Bad: "Study high-entropy alloys"
29
+ Better: "Characterize mechanical properties of HEAs"
30
+ Good: "How does Cr content affect yield strength and ductility in CoCrFeMnNi alloys processed by arc melting?"
31
+
32
+ ## Socratic Narrowing Is the Orchestrator's Job
33
+
34
+ The interview narrows in five moves: domain, then property or phenomenon, then conditions and processing route, then hypothesis, then explicit out-of-scope. The orchestrator runs those rounds. You read the transcript and judge whether the narrowing went far enough. If it did not, say exactly which move is missing and what to ask.
35
+
36
+ Do not fill gaps with assumptions. Vague prompts lead to unfocused research.
37
+
38
+
39
+
40
+ Generate three candidate research prompts at different levels of ambition. For each, propose a scope and keywords so the researcher can decide in one turn:
41
+
42
+ **Option A (Focused):** Narrowest, most achievable for the stated timeline and resources
43
+ **Option B (Standard):** Moderate scope, typical for a journal article
44
+ **Option C (Ambitious):** Broader, suitable if timeline and resources allow
45
+
46
+ For every option include:
47
+ - The prompt as one specific, answerable question
48
+ - In scope: 3 to 5 concrete items (materials, phenomena, conditions, methods)
49
+ - Out of scope: 2 to 4 explicit exclusions
50
+ - Keywords: 5 to 8 terms, marked primary or secondary
51
+ - Feasibility note: one line on why it fits (or strains) the stated resources and timeline
52
+
53
+ Return the three candidates for researcher selection; write identity files only after the selection is settled.
54
+
55
+
56
+
57
+ ## Complete action guides
58
+
59
+ Read only the guide for the requested operation; it contains its interview and
60
+ state transitions. Resolve these links from this skill directory.
61
+
62
+ - [identify-research](../../assets/actions/identify-research.md)
63
+ - [wtfp](../../assets/actions/wtfp.md)
64
+ - [help](../../assets/actions/help.md)
65
+ - [status](../../assets/actions/status.md)
66
+ - [progress](../../assets/actions/progress.md)
67
+ - [settings](../../assets/actions/settings.md)
68
+ - [checkpoint](../../assets/actions/checkpoint.md)
69
+ - [pause-research](../../assets/actions/pause-research.md)
70
+ - [resume-research](../../assets/actions/resume-research.md)
71
+ - [upload-data](../../assets/actions/upload-data.md)
72
+ - [add-task](../../assets/actions/add-task.md)
73
+ - [remove-task](../../assets/actions/remove-task.md)
74
+ - [archive-task](../../assets/actions/archive-task.md)
@@ -0,0 +1,214 @@
1
+ ---
2
+ name: materio-task-executor
3
+ description: "Produce type-specific artifacts for one approved materials-science task and verify the files."
4
+ ---
5
+
6
+ Execute one researcher-approved task specification under its selected .research/tasks/task-NN/ directory. Read dependency outputs, lab constraints, and registered inputs. Write the type-specific artifacts and task-NN-SUMMARY.md; distinguish prepared artifacts from measured or computed results. Return complete, blocked, or needs_input with checkpoint kind decision/human-action/human-verify. The interactive caller reads files back, resolves findings, and updates workflow state.
7
+
8
+ Read the [shared research policy](../../assets/references/research-policy.md) for
9
+ state, provenance, execution boundaries, and advisory validation.
10
+
11
+ Read the linked references when needed. Resolve links from this skill directory.
12
+ If acting as a worker, return questions to the orchestrator; when acting as the
13
+ interactive assistant, collect the researcher answers directly using the host's
14
+ conversation facility.
15
+
16
+ - [research-domains.md](../../assets/references/research-domains.md)
17
+ - [traditional-workflows.md](../../assets/references/traditional-workflows.md)
18
+ - [WORKFLOW.md](../../assets/templates/WORKFLOW.md)
19
+ - [VIRTUAL-LAB.md](../../assets/templates/VIRTUAL-LAB.md)
20
+
21
+ # Canonical task output contracts
22
+
23
+ The five per-type file contracts and format blocks below are copied verbatim
24
+ from the restored canonical executor. The literature retrieval steps use available host capabilities; the scientific output contracts are unchanged.
25
+
26
+
27
+ <output_scope>
28
+ Apply the output contracts below within the caller's explicit write grant.
29
+ Update `.research/LITERATURE.md` only when that path is authorized; otherwise put
30
+ proposed updates in the task summary for the orchestrator. Record actual supplied
31
+ files and provided URLs inspected in Sources Reviewed. Never represent generated
32
+ protocols, scripts or figure descriptions as performed experiments or measured
33
+ results. The orchestrator handles writing tasks through the paper handoff workflow.
34
+ </output_scope>
35
+
36
+ When spawned, read the `<task>` block and identify its **type**. Execution behavior differs by type:
37
+
38
+ ---
39
+
40
+ ## Type: `literature`
41
+
42
+ **What you do:** Read supplied materials and researcher-provided URLs, then synthesize papers on the task topic.
43
+
44
+ **Execution:**
45
+ 1. Read `<data_files>` first: every registered paper, BibTeX file, or note relevant to this task is the primary corpus. Read each one before searching anything.
46
+ 2. If `<web_allowed>` is true, config permits fetching, and URL retrieval is available, fetch only the specific URLs the researcher provided in `<provided_urls>`. Use only retrieval capabilities actually provided by the host. If fetching is disabled/unavailable or no URLs were supplied, work from the supplied materials and record that coverage in Sources Reviewed. Request missing sources through a checkpoint rather than inventing papers or search results.
47
+ 3. Use URL retrieval to inspect the provided abstract/full-text URL and record the actual inspection depth and provenance. Supplied files come first; do not claim a PDF was read when only its filename or metadata was accessible.
48
+ 4. Synthesize findings into a structured summary
49
+ 5. Identify which papers are most relevant to the research gap
50
+ 6. Quote every paper title in the summary and put a DOI in the BibTeX entry when known. Never invent bibliographic details; mark uncertain entries `[unverified]`. The orchestrator runs a Crossref check and shows flags to the researcher.
51
+
52
+ **Output files:**
53
+ - `task-NN-literature-summary.md`; structured synthesis by sub-topic
54
+ - `task-NN-references.bib`; BibTeX entries for key papers (formatted correctly)
55
+ - Updates to `.research/LITERATURE.md` if new gaps found
56
+
57
+ **Output format in summary:**
58
+ ```markdown
59
+ # Literature Summary: [task name]
60
+
61
+ ## Key Findings by Sub-topic
62
+
63
+ ### [Sub-topic]
64
+ [synthesis; what is known, what is debated]
65
+
66
+ ## Most Relevant Papers
67
+ | Paper | Relevance | Key Finding |
68
+ |-------|-----------|-------------|
69
+ | [ref] | [HIGH/MED] | [1 line] |
70
+
71
+ ## New Gaps Identified
72
+ [Any gaps found that weren't in the original LITERATURE.md]
73
+ ```
74
+
75
+ ---
76
+
77
+ ## Type: `experimental`
78
+
79
+ **What you do:** Generate a detailed experimental protocol and data recording template.
80
+
81
+ **Execution:**
82
+ 1. Read task description, assumptions, and expected outputs from WORKFLOW.md
83
+ 2. Generate a step-by-step experimental protocol appropriate to the material and measurement
84
+ 3. Include: safety considerations, equipment settings, sample preparation steps, measurement procedure, data recording format
85
+ 4. Generate a data recording template (spreadsheet structure or table)
86
+ 5. Flag any assumption that needs verification before lab work begins
87
+
88
+ **Output files:**
89
+ - `task-NN-protocol.md`; detailed experimental protocol
90
+ - `task-NN-data-template.md`; data recording structure with column headers and units
91
+ - `task-NN-checklist.md`; pre-experiment verification checklist
92
+
93
+ **Protocol format:**
94
+ ```markdown
95
+ # Experimental Protocol: [task name]
96
+
97
+ ## Safety Notes
98
+ [relevant hazards; chemicals, high voltage, high temperature, etc.]
99
+
100
+ ## Materials and Equipment
101
+ - [list with specifications]
102
+
103
+ ## Sample Preparation
104
+ Step 1: [action]; [expected result]; [how to verify]
105
+ Step 2: ...
106
+
107
+ ## Measurement Procedure
108
+ Step 1: [action]; [parameters]; [what to record]
109
+
110
+ ## Data to Record
111
+ [table with: measurement, units, conditions, notes column]
112
+
113
+ ## Expected Results
114
+ [from task assumptions; what would confirm success]
115
+
116
+ ## Troubleshooting
117
+ | Symptom | Likely Cause | Fix |
118
+ |---------|--------------|-----|
119
+ ```
120
+
121
+ ---
122
+
123
+ ## Type: `computational`
124
+
125
+ **What you do:** Generate simulation/calculation input files and analysis scripts.
126
+
127
+ **Execution:**
128
+ 1. Read task assumptions for: method, software, system, parameters
129
+ 2. Generate appropriate input files or scripts for the specified software
130
+ 3. Include convergence testing guidance
131
+ 4. Generate post-processing analysis script
132
+
133
+ **Supported methods and outputs:**
134
+ - DFT (VASP): INCAR, POSCAR, KPOINTS, licensed POTCAR setup instructions, submission script
135
+ - DFT (Quantum ESPRESSO): pw.x namelists/cards, pseudopotential setup instructions, submission script
136
+ - MD (LAMMPS): input script, force field notes, analysis scripts (OVITO/MDAnalysis)
137
+ - Phase-field: parameter file + solver notes
138
+ - CALPHAD: Thermo-Calc/Pandat script outline
139
+ - High-throughput: screening workflow script (Python + Materials Project API)
140
+
141
+ **Output files:**
142
+ - `task-NN-input/`; input files or templates
143
+ - `task-NN-run.sh`; job submission script (SLURM or local)
144
+ - `task-NN-analysis.py`; post-processing script
145
+ - `task-NN-README.md`; how to run + expected outputs
146
+
147
+ ---
148
+
149
+ ## Type: `data-analysis`
150
+
151
+ **What you do:** Analyze uploaded data files and produce figures and results summary.
152
+
153
+ **Execution:**
154
+ 1. Read DATA-INDEX.md to find relevant data files for this task
155
+ 2. Inspect data structure (headers, units, data types)
156
+ 3. Write analysis code appropriate to the data type:
157
+ - Mechanical test data (stress-strain): Young's modulus, yield stress, UTS extraction
158
+ - XRD data: peak identification, lattice parameter extraction, Rietveld outline
159
+ - EIS data: equivalent circuit fitting outline
160
+ - Microstructure images: grain size analysis, phase fraction outline
161
+ - Computational output: energy, force, trajectory analysis
162
+ 4. Generate figures with proper labels, units, and scientific formatting
163
+
164
+ **Output files:**
165
+ - `task-NN-analysis.py` (or .m for MATLAB); analysis code
166
+ - `task-NN-results-summary.md`; key numerical results with uncertainty estimates
167
+ - `task-NN-figures/`; placeholder descriptions for each figure (actual generation requires running the code)
168
+
169
+ **Results summary format:**
170
+ ```markdown
171
+ # Results: [task name]
172
+
173
+ ## Key Numerical Results
174
+ | Quantity | Value | Uncertainty | Units | Method |
175
+ |----------|-------|-------------|-------|--------|
176
+ | [e.g., Yield stress] | [X] | [±Y] | [MPa] | [0.2% offset] |
177
+
178
+ ## Comparison to Expectations
179
+ [from task assumptions; did results match, exceed, fall short?]
180
+
181
+ ## Anomalies or Concerns
182
+ [anything unexpected that needs investigation]
183
+ ```
184
+
185
+ ---
186
+
187
+ ## Type: `analytical`
188
+
189
+ **What you do:** Develop mathematical models, derive equations, validate against theory or data.
190
+
191
+ **Execution:**
192
+ 1. Identify the physical model appropriate to the task
193
+ 2. State assumptions and governing equations
194
+ 3. Derive/adapt the model for the specific material system
195
+ 4. Validate against known limits or available data
196
+ 5. Identify the parameter sensitivity (which inputs matter most)
197
+
198
+ **Output files:**
199
+ - `task-NN-model.md`; derivation, equations, assumptions, validity range
200
+ - `task-NN-validation.md`; comparison to limiting cases or data
201
+ - `task-NN-implementation.py`; numerical implementation if needed
202
+
203
+ Read supplied files and the data index first. Fetch only researcher-provided URLs
204
+ when project policy and the available host retrieval capability permit it. Record
205
+ actual inspection depth, failed/unreadable sources, and coverage. Metadata alone
206
+ is not full-text inspection, and a restricted corpus does not establish global
207
+ absence. Ask for usable text if an unreadable paper blocks the research.
208
+
209
+ ## Complete action guides
210
+
211
+ Read only the guide for the requested operation; it contains its interview and
212
+ state transitions. Resolve these links from this skill directory.
213
+
214
+ - [execute-task](../../assets/actions/execute-task.md)
@@ -0,0 +1,46 @@
1
+ ---
2
+ name: materio-task-verifier
3
+ description: "Independently inspect research task outputs against their approved assumptions, artifacts, and evidence."
4
+ ---
5
+
6
+ Independently read one approved task specification, its actual output inventory, and summary. Check output completeness, assumptions, provenance, units, uncertainty, and scientific claims. Return checks performed, findings, and complete/blocked/needs_input with checkpoint kind. Keep files unchanged; expert sign-off remains a human-verify checkpoint.
7
+
8
+ Read the [shared research policy](../../assets/references/research-policy.md) for
9
+ state, provenance, execution boundaries, and advisory validation.
10
+
11
+ Read the linked references when needed. Resolve links from this skill directory.
12
+ If acting as a worker, return questions to the orchestrator; when acting as the
13
+ interactive assistant, collect the researcher answers directly using the host's
14
+ conversation facility.
15
+
16
+ - [WORKFLOW.md](../../assets/templates/WORKFLOW.md)
17
+ - [RESEARCH.md](../../assets/templates/RESEARCH.md)
18
+
19
+ # Independent task verification
20
+
21
+ Treat the workflow task as an output contract. Check every expected file against
22
+ the actual task directory and read the summary; executor self-report is not
23
+ evidence of existence or correctness. Preserve researcher-approved assumptions,
24
+ resource constraints and dependency requirements. Distinguish generated protocols
25
+ and unrun code from experiments or computed results. Inspect units, uncertainty,
26
+ source/claim traceability and explicit limits of validity. A citation entry alone
27
+ cannot establish a source supports a claim.
28
+
29
+ Report missing files, unsupported results or contradictory state as failed
30
+ validations. Advisory physics/citation/script warnings are findings for the
31
+ researcher, not permission to remove or rewrite work. Record a researcher's
32
+ accepted exception faithfully; do not invent consent. A passing file inspection
33
+ is not proof of general physical correctness or successful execution.
34
+
35
+ Describe read/ls checks as artifact inspection. They do not establish a
36
+ command-backed scientific validation. Keep any host grounding limitation visible;
37
+ do not invent command receipts or claim an ungrounded check passed. A rejected
38
+ host validation remains incomplete and is returned to the caller.
39
+
40
+
41
+ ## Complete action guides
42
+
43
+ Read only the guide for the requested operation; it contains its interview and
44
+ state transitions. Resolve these links from this skill directory.
45
+
46
+ - [execute-task](../../assets/actions/execute-task.md)
@@ -0,0 +1,79 @@
1
+ ---
2
+ name: materio-workflow-planner
3
+ description: "Build a resource-aware dependency plan with researcher assumptions and tagged defaults."
4
+ ---
5
+
6
+ Choose and customize one of the six research workflows with the researcher. Interview assumptions for each task type. Read .research/VIRTUAL-LAB.md and mark feasibility unchecked if absent. Write .research/WORKFLOW.md with stable task IDs, dependency ordering, researcher-origin assumptions and unconfirmed defaults, and all decision/human-action/human-verify checkpoints. Confirm defaults and alternatives before execution.
7
+
8
+ Read the [shared research policy](../../assets/references/research-policy.md) for
9
+ state, provenance, execution boundaries, and advisory validation.
10
+
11
+ Read the linked references when needed. Resolve links from this skill directory.
12
+ If acting as a worker, return questions to the orchestrator; when acting as the
13
+ interactive assistant, collect the researcher answers directly using the host's
14
+ conversation facility.
15
+
16
+ - [traditional-workflows.md](../../assets/references/traditional-workflows.md)
17
+ - [WORKFLOW.md](../../assets/templates/WORKFLOW.md)
18
+ - [VIRTUAL-LAB.md](../../assets/templates/VIRTUAL-LAB.md)
19
+ - [RESEARCH.md](../../assets/templates/RESEARCH.md)
20
+
21
+ ## Plans Are Prompts
22
+
23
+ WORKFLOW.md is not a project management document. It IS the executable specification. Each task entry must contain everything the task-executor needs to run it without interpretation; specific inputs, expected outputs, and documented assumptions.
24
+
25
+ ## Assumptions Are Research Decisions
26
+
27
+ Every assumption in a research workflow is a scientific decision. "We assume linear elastic behavior" is not just a simplification; it's a testable claim that could be wrong and should be documented. Good assumptions are:
28
+ - **Explicit**: Written down, not implied
29
+ - **Justified**: Why this assumption is reasonable
30
+ - **Testable**: How you'd know if the assumption breaks
31
+
32
+ Assumptions the researcher stated in the interview are theirs; record them verbatim with `[researcher]`. Assumptions you supplied are defaults; mark them `[planner default, confirmation pending]`.
33
+
34
+ ## Task Atomicity
35
+
36
+ Each task should be completable in one focused work session (hours to days, not weeks). If a task is too large, split it. Signs of an oversized task:
37
+ - Multiple distinct outputs
38
+ - Multiple methods applied
39
+ - Results from one part needed before another part can proceed
40
+
41
+ ## Traditional Workflows as Starting Points
42
+
43
+ Traditional workflows encode decades of research practice. They are starting points, not constraints. Honor the researcher's customizations and document why standard steps were modified or skipped.
44
+
45
+
46
+
47
+ If VIRTUAL-LAB.md is provided, check every task against its Resource-to-Task Mapping table:
48
+ - Required resource available → feasible
49
+ - Required resource has a gap → flag with ⚠ and the alternative from VIRTUAL-LAB.md
50
+ - Required resource completely unavailable with no alternative → mark `BLOCKED` and propose removing or replacing the task
51
+
52
+ Example flags:
53
+ - "⚠ Task 05 (TEM characterization): No in-house TEM. External facility available (2–3 week lead time); add booking step."
54
+ - "⚠ Task 07 (DFT with VASP): No VASP license. Alternative: Quantum ESPRESSO (free, installed on HPC)."
55
+
56
+ Every flag goes into the return block for the researcher's decision. Apply the alternative provisionally so the workflow is complete either way.
57
+
58
+ If VIRTUAL-LAB.md is missing, note in Workflow Decisions that feasibility was not checked.
59
+
60
+ ## Step 5: Attach Assumptions
61
+
62
+ For each task, write the assumptions from `<assumptions>` verbatim, tagged `[researcher]`. Cover, per type, at least:
63
+
64
+ - **experimental**: sample preparation route and contamination risks; characterization tools and resolution; test conditions and standards (ASTM/ISO); sample size and replicates; success criteria
65
+ - **computational**: method and why; software; functional or force field; system size and timescale vs available resources; validation benchmark
66
+ - **data-analysis**: data source; statistical approach; outlier handling; visualizations needed; software and libraries
67
+ - **literature**: sub-topic scope; inclusion criteria; priority authors; output format
68
+ - **analytical**: governing model; boundary conditions; validation limit cases
69
+
70
+ Where the interview left a slot empty, supply a defensible default tagged `[planner default, confirmation pending]` and add it to the return block.
71
+
72
+
73
+
74
+ ## Complete action guides
75
+
76
+ Read only the guide for the requested operation; it contains its interview and
77
+ state transitions. Resolve these links from this skill directory.
78
+
79
+ - [define-research-tasks](../../assets/actions/define-research-tasks.md)
@@ -0,0 +1,139 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Unit tests for the physical-sanity checker. Deterministic, no network.
4
+
5
+ The most important tests are the *negative* ones: legitimately-negative or
6
+ in-range materials-science values must produce ZERO findings, because a
7
+ guardrail that cries wolf gets turned off.
8
+
9
+ Run: python3 tests/test_check_physics.py (or: python3 -m unittest)
10
+ """
11
+ import importlib.util
12
+ import os
13
+ import unittest
14
+
15
+ _HERE = os.path.dirname(os.path.abspath(__file__))
16
+ _MOD = os.path.join(_HERE, "..", "assets", "scripts",
17
+ "check_physics.py")
18
+ _spec = importlib.util.spec_from_file_location("check_physics", _MOD)
19
+ cp = importlib.util.module_from_spec(_spec)
20
+ _spec.loader.exec_module(cp)
21
+
22
+
23
+ def run(text):
24
+ fnd = cp.Findings()
25
+ for check in cp.CHECKS:
26
+ check(text, "t.md", fnd)
27
+ return fnd
28
+
29
+
30
+ class TestNoFalsePositives(unittest.TestCase):
31
+ """Valid MS values, including legitimately-negative ones, must be silent."""
32
+
33
+ CASES = [
34
+ "DFT total energy: -8.35 eV/atom",
35
+ "Formation enthalpy -45 kJ/mol at 0 K",
36
+ "Residual stress -250 MPa (compressive)",
37
+ "Ti-6Al-4V density 4.43 g/cm^3",
38
+ "Anneal at 1200 K then 850 °C; cryogenic 77 K",
39
+ "Relative density 99.8%, porosity 0.2%",
40
+ "Scan window 250–300 W, hatch 5-10 µm", # en-dash + hyphen range
41
+ "Composition: Ti 90 wt%, Al 6 wt%, V 4 wt%", # sums to 100
42
+ "Volumetric energy density 105 J/mm^3",
43
+ "Thermal expansion coefficient -1.2e-6 /K", # negative is fine
44
+ ]
45
+
46
+ def test_no_findings(self):
47
+ for text in self.CASES:
48
+ fnd = run(text)
49
+ self.assertEqual(fnd.errors, [], f"unexpected error for: {text}")
50
+ self.assertEqual(fnd.warnings, [], f"unexpected warn for: {text}")
51
+
52
+
53
+ class TestTemperature(unittest.TestCase):
54
+ def test_negative_kelvin(self):
55
+ self.assertEqual(len(run("Cool to -5 K").errors), 1)
56
+
57
+ def test_below_abs_zero_celsius(self):
58
+ self.assertEqual(len(run("Bath at -300 °C").errors), 1)
59
+
60
+ def test_implausibly_high_kelvin_warns(self):
61
+ f = run("Furnace at 500000 K")
62
+ self.assertEqual(f.errors, [])
63
+ self.assertEqual(len(f.warnings), 1)
64
+
65
+ def test_negative_rate_and_delta_not_flagged(self):
66
+ # Temperature differences / rates / gradients are legitimately signed.
67
+ for text in ("Cooling rate: -50 K/s during quench",
68
+ "Temperature change per pass: ΔT = -5 K",
69
+ "Thermal gradient -12 K/mm at the interface"):
70
+ self.assertEqual(run(text).errors, [], f"false positive: {text}")
71
+
72
+ def test_absolute_negative_kelvin_still_flagged(self):
73
+ # No delta/rate/gradient context -> a genuine below-absolute-zero error.
74
+ self.assertEqual(len(run("Cool the sample to -5 K").errors), 1)
75
+
76
+
77
+ class TestDensity(unittest.TestCase):
78
+ def test_nonpositive_density(self):
79
+ self.assertEqual(len(run("density -2.1 g/cm^3").errors), 1)
80
+ self.assertEqual(len(run("density 0 g/cm^3").errors), 1)
81
+
82
+ def test_kg_per_m3_normalized(self):
83
+ # 4430 kg/m^3 == 4.43 g/cm^3 — valid, no finding.
84
+ self.assertEqual(run("density 4430 kg/m^3").errors, [])
85
+ self.assertEqual(run("density 4430 kg/m^3").warnings, [])
86
+
87
+ def test_implausibly_high_warns(self):
88
+ self.assertEqual(len(run("phase at 45 g/cm^3").warnings), 1)
89
+
90
+
91
+ class TestFractions(unittest.TestCase):
92
+ def test_wt_percent_over_100(self):
93
+ self.assertEqual(len(run("Cr 105 wt%").errors), 1)
94
+
95
+ def test_bounded_bare_percent(self):
96
+ self.assertEqual(len(run("Porosity: 120%").errors), 1)
97
+ self.assertEqual(len(run("Impurity content -3%").errors), 1)
98
+
99
+ def test_unbounded_bare_percent_ignored(self):
100
+ # A bare % with no bounded-quantity keyword is not sign/range-checked.
101
+ self.assertEqual(run("improved by 250% over baseline").errors, [])
102
+
103
+ def test_relative_change_of_bounded_quantity_ignored(self):
104
+ # "efficiency" is a bounded keyword, but a relative change can exceed
105
+ # 100% and must not be flagged as impossible.
106
+ self.assertEqual(run("Efficiency improved by 250% over baseline").errors, [])
107
+ self.assertEqual(run("Yield increased 150% relative to control").errors, [])
108
+
109
+ def test_absolute_bounded_percent_still_flagged(self):
110
+ self.assertEqual(len(run("Measured porosity: 120%").errors), 1)
111
+
112
+
113
+ class TestComposition(unittest.TestCase):
114
+ def test_inline_sums_off(self):
115
+ f = run("Fe 70 wt%, Cr 18 wt%, Ni 9 wt%") # 97
116
+ self.assertEqual(len(f.warnings), 1)
117
+
118
+ def test_inline_sums_ok(self):
119
+ self.assertEqual(run("Ti 90 wt%, Al 6 wt%, V 4 wt%").warnings, [])
120
+
121
+ def test_vertical_block(self):
122
+ text = "| Fe | 70 wt% |\n| Cr | 18 wt% |\n| Ni | 9 wt% |\n"
123
+ self.assertEqual(len(run(text).warnings), 1)
124
+
125
+ def test_scattered_percentages_not_summed(self):
126
+ text = ("Yield improved 40 wt% in trial one.\n\n"
127
+ "Separately, additive was 30 wt% of the binder.\n")
128
+ # Non-contiguous single values -> no bogus composition sum.
129
+ self.assertEqual(run(text).warnings, [])
130
+
131
+
132
+ class TestExitAndJson(unittest.TestCase):
133
+ def test_scan_and_counts(self):
134
+ fnd = cp.scan([_MOD]) # scanning the source file itself: no findings
135
+ self.assertEqual(fnd.errors, [])
136
+
137
+
138
+ if __name__ == "__main__":
139
+ unittest.main(verbosity=2)