@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.
- package/.claude-plugin/marketplace.json +283 -0
- package/CHANGELOG.md +50 -0
- package/CONTRIBUTING.md +102 -29
- package/NOTICE +8 -0
- package/README.md +37 -5
- package/dist/{acp-UVEVWSDL.js → acp-W3Y3TRHD.js} +12 -12
- package/dist/{agents-VWY37DTK.js → agents-J4ICNLQ3.js} +52 -52
- package/dist/assets/codewiki.json +1 -1
- package/dist/assets/tui-notices/get-east-asian-width-LICENSE +9 -0
- package/dist/assets/tui-notices/marked-LICENSE +44 -0
- package/dist/assets/tui-notices/pi-tui-LICENSE +21 -0
- package/dist/{auth-PCV2XQDV.js → auth-X2UJUMOC.js} +24 -24
- package/dist/{builtins-PD652MTK.js → builtins-XLXWWSRF.js} +6 -6
- package/dist/{chunk-DZK63TZJ.js → chunk-24S3DN22.js} +336 -612
- package/dist/{chunk-NTK3WTHM.js → chunk-24TOGHPO.js} +2 -2
- package/dist/{chunk-M6TAYK66.js → chunk-2O2LVQQK.js} +11 -4
- package/dist/{chunk-OQM5IVJY.js → chunk-34XHRVKG.js} +3 -3
- package/dist/{chunk-LY4N4TTL.js → chunk-3LXJOICS.js} +2 -2
- package/dist/{chunk-3BJGMT2D.js → chunk-3XE4NRLF.js} +1 -1
- package/dist/{chunk-N2OKBREN.js → chunk-4MFBBY2Z.js} +3 -3
- package/dist/{chunk-5VTJP36Q.js → chunk-4N2RZ4TO.js} +2 -2
- package/dist/{chunk-WNGF5AJX.js → chunk-4QKAITQT.js} +3 -3
- package/dist/chunk-4UHVS5T7.js +207 -0
- package/dist/{chunk-GLYBJ4RQ.js → chunk-5AJPUR72.js} +6 -6
- package/dist/{chunk-5CY4Q6QI.js → chunk-5EQO5NWP.js} +105 -3
- package/dist/{chunk-6HAO6X5B.js → chunk-65BGHOUR.js} +8 -5
- package/dist/{chunk-6VRRJT7L.js → chunk-6CA2BHOR.js} +2 -2
- package/dist/{chunk-HL26ADLH.js → chunk-6CB2IL4N.js} +2 -1
- package/dist/{chunk-E7RF4KBO.js → chunk-6LRLOJHQ.js} +3 -3
- package/dist/{chunk-HXHFDHB6.js → chunk-6TAATXXH.js} +6 -6
- package/dist/{chunk-P6M7RKMI.js → chunk-6YHPAAZR.js} +3 -3
- package/dist/{chunk-5QRX7SLS.js → chunk-7EEGBKV4.js} +7 -7
- package/dist/{chunk-BS4GAMUB.js → chunk-A67NR5AT.js} +2 -2
- package/dist/{chunk-WJIMKGD6.js → chunk-BAU36233.js} +8 -8
- package/dist/{chunk-PZN2LQY6.js → chunk-BO4XV5VX.js} +4 -4
- package/dist/{chunk-I2K2NCZQ.js → chunk-BQQ5MXUC.js} +6 -6
- package/dist/{chunk-X3BI7HTV.js → chunk-C3G5PNUO.js} +21 -21
- package/dist/{chunk-SRZOW5L2.js → chunk-C6GEXX4L.js} +1 -1
- package/dist/{chunk-6RYDAVQT.js → chunk-CE64C5K5.js} +219 -64
- package/dist/chunk-CP3HIR5H.js +2119 -0
- package/dist/{chunk-BBV5TKE6.js → chunk-CPXGJI2A.js} +2 -2
- package/dist/{chunk-IGLVVNEG.js → chunk-CULVKYTK.js} +4 -4
- package/dist/{chunk-DXLUVUD4.js → chunk-D2T66PDV.js} +5 -5
- package/dist/{chunk-NF3BK5WR.js → chunk-DACXIVVF.js} +5 -5
- package/dist/{chunk-IKRWLEDA.js → chunk-DLIYANB7.js} +20 -15
- package/dist/{chunk-RGZNQ5CT.js → chunk-DO7M3LSX.js} +9 -9
- package/dist/{chunk-2QPI3TR3.js → chunk-DVJL77SO.js} +2 -2
- package/dist/{chunk-ODUTYZIU.js → chunk-EUEXGXXR.js} +5 -5
- package/dist/{chunk-WKUYQBCG.js → chunk-EUZRMP4Y.js} +18 -16
- package/dist/{chunk-JMPL7NUB.js → chunk-G4LGUTOE.js} +4 -4
- package/dist/{chunk-CBSKDFWL.js → chunk-GEVQNST4.js} +2 -2
- package/dist/{chunk-NNWJYUNO.js → chunk-GFQ7P2UF.js} +7 -7
- package/dist/{chunk-SXQKNKRA.js → chunk-GI5RRMAH.js} +14 -14
- package/dist/{chunk-HPTJF6DG.js → chunk-GVZFCJHE.js} +336 -83
- package/dist/{chunk-ACCKVSHU.js → chunk-GXIWHXDB.js} +3 -3
- package/dist/{chunk-LUL5Z66S.js → chunk-HOX4YZ2K.js} +6 -5
- package/dist/chunk-HRAKUPIH.js +57 -0
- package/dist/{chunk-F5Z7EWMN.js → chunk-IJMW64DX.js} +50 -50
- package/dist/{chunk-QNWRHOMF.js → chunk-IMOD2YPV.js} +16 -9
- package/dist/{chunk-HZ2T2YED.js → chunk-IQCNVLO6.js} +28 -8
- package/dist/{chunk-HZFBVU5X.js → chunk-ISNCCX42.js} +8 -8
- package/dist/{chunk-7JSSKXG2.js → chunk-IZYTT3CD.js} +7 -3
- package/dist/chunk-KKEYGFX4.js +915 -0
- package/dist/{chunk-HHVJNVUJ.js → chunk-KS7ETA3P.js} +2 -2
- package/dist/{chunk-BLTEAUCB.js → chunk-L3Z5ANCV.js} +7 -7
- package/dist/{chunk-4VMV6OS6.js → chunk-LBFQMYS3.js} +2 -2
- package/dist/{chunk-URBGEOH3.js → chunk-M6Z2V6YU.js} +5 -5
- package/dist/{chunk-BT7HGDOX.js → chunk-MBJO5VNZ.js} +12 -12
- package/dist/chunk-MNQN3X6Y.js +595 -0
- package/dist/{chunk-3QKXHCGS.js → chunk-MZHXENL7.js} +5 -5
- package/dist/chunk-MZNWZUJM.js +1801 -0
- package/dist/{chunk-7YJWEF2L.js → chunk-N37QC5FV.js} +5 -5
- package/dist/{chunk-TJFDL26W.js → chunk-NCCQ6DVS.js} +7 -7
- package/dist/{chunk-P5JMBPDJ.js → chunk-NO7J45X6.js} +162 -47
- package/dist/chunk-OH3YYA3B.js +15 -0
- package/dist/{chunk-22PQ4TX4.js → chunk-P4DL2LM5.js} +16 -77
- package/dist/{chunk-LIN2K3EL.js → chunk-PFLOULP3.js} +4 -4
- package/dist/{chunk-QXFBABFJ.js → chunk-QKWL7SYE.js} +11 -11
- package/dist/chunk-RFCKPS2V.js +26 -0
- package/dist/{chunk-ZS43Y2FT.js → chunk-RTLNFZMD.js} +12 -4
- package/dist/{chunk-U7H5WRG5.js → chunk-RXFPB32E.js} +8 -6
- package/dist/{chunk-Q7NNUHQV.js → chunk-SEDI5K5B.js} +16 -16
- package/dist/{chunk-WV6TDAPN.js → chunk-SELG4SUR.js} +7 -7
- package/dist/{chunk-3WBALRQH.js → chunk-SER7RRAE.js} +27 -832
- package/dist/{chunk-K2HL3GBL.js → chunk-T4TY5GG3.js} +165 -15
- package/dist/chunk-T7QQBNLH.js +691 -0
- package/dist/{chunk-6OII3LOK.js → chunk-TLTGZTXI.js} +3 -3
- package/dist/chunk-TZ6UVP2H.js +637 -0
- package/dist/{chunk-3JLFK5MW.js → chunk-TZHN5ITX.js} +13 -41
- package/dist/{chunk-VANN3GDP.js → chunk-U3TPUXOQ.js} +399 -234
- package/dist/{chunk-VHMX7SXF.js → chunk-UA3W4FGC.js} +6 -6
- package/dist/{chunk-3O2ZAUGQ.js → chunk-UA6W4XFJ.js} +2 -2
- package/dist/chunk-UWD3JD5X.js +709 -0
- package/dist/chunk-V4ZKOKRB.js +13433 -0
- package/dist/{chunk-NC4KV7EL.js → chunk-VCRVEDUC.js} +5 -5
- package/dist/{chunk-4DU2TVI4.js → chunk-VMATUZB6.js} +12 -10
- package/dist/{chunk-J2FYEQ5L.js → chunk-VTYHHQ57.js} +2 -2
- package/dist/chunk-WB7POC6M.js +891 -0
- package/dist/{chunk-3HQVBIKD.js → chunk-WBVKKTUT.js} +2 -2
- package/dist/{chunk-EHOSNVVM.js → chunk-WLHX3MM5.js} +6 -2
- package/dist/{chunk-24T2YZ7A.js → chunk-WN552PKN.js} +553 -298
- package/dist/{chunk-4U4TKZFR.js → chunk-WT5TRMO4.js} +51 -26
- package/dist/{chunk-XWMSPJYN.js → chunk-WURGVOZJ.js} +56 -12
- package/dist/{chunk-7WUZEB2M.js → chunk-XR3XJN2M.js} +2 -2
- package/dist/chunk-XW2UZICE.js +372 -0
- package/dist/{chunk-2AKYFREM.js → chunk-XZ6UFQ52.js} +11 -11
- package/dist/chunk-Y3JU5RPK.js +8 -0
- package/dist/chunk-YKRJTYNP.js +1143 -0
- package/dist/{chunk-PWWSIB2A.js → chunk-ZGIGW4ZG.js} +5 -5
- package/dist/cli/index.js +34 -36
- package/dist/{clio-QQCMTUZE.js → clio-L2P7S2R2.js} +9 -9
- package/dist/{code-nav-GUPM6766.js → code-nav-B5LNX4KU.js} +25 -25
- package/dist/{components-TNIKXCBH.js → components-63MMQKUT.js} +6 -6
- package/dist/{config-IIM7YOD3.js → config-YXARKGTX.js} +70 -67
- package/dist/{configure-4ZM5HWJX.js → configure-LMVQJ46J.js} +47 -35
- package/dist/{context-OL5P3HEP.js → context-7HJEWTTP.js} +87 -44
- package/dist/{context-44BZLJ3J.js → context-XSZKKFBW.js} +14 -14
- package/dist/{context-AIDVQKMW.js → context-YG2LZDYZ.js} +60 -58
- package/dist/{context-clear-OQV76MYP.js → context-clear-AC5NXHM2.js} +57 -55
- package/dist/{context-index-HP2JFUWA.js → context-index-KKTPRV5G.js} +3 -3
- package/dist/{context-map-INTXD54D.js → context-map-T7ROR5D5.js} +4 -4
- package/dist/{context-working-set-ZUW3EGLS.js → context-working-set-F4Q4J3NS.js} +12 -10
- package/dist/{detail-UXPWRANG.js → detail-H73BEF2N.js} +58 -56
- package/dist/{dispatch-runner-P3ZW6G77.js → dispatch-runner-3RY5FSJC.js} +74 -72
- package/dist/{doctor-JJVGPZWT.js → doctor-EQYJOGUG.js} +44 -30
- package/dist/{eval-V2RTN3UH.js → eval-4P7O6CCE.js} +109 -46
- package/dist/{evidence-35PYWGSO.js → evidence-D6GUSYJW.js} +57 -55
- package/dist/{evidence-CIGGKI6J.js → evidence-O76QF7TZ.js} +62 -59
- package/dist/{evolve-33SM3NJP.js → evolve-H47BCETS.js} +58 -56
- package/dist/{extensions-YVRHX6ZI.js → extensions-NNL3ZOCU.js} +98 -20
- package/dist/{fleet-LFO7SIPC.js → fleet-KMNS6NOM.js} +106 -99
- package/dist/{fleet-commands-RLK72GU3.js → fleet-commands-DOWSYCBX.js} +14 -14
- package/dist/{fleet-decisions-3SBSCTCW.js → fleet-decisions-S3PTZV2D.js} +9 -9
- package/dist/{fleet-graph-JZIBCGMW.js → fleet-graph-F2DE2TME.js} +26 -24
- package/dist/{fleet-inspect-2L5YGGZJ.js → fleet-inspect-EN2Q6IVB.js} +60 -57
- package/dist/{fleet-preflight-QRSHIIDE.js → fleet-preflight-FRLETDD3.js} +3 -3
- package/dist/{fleet-validate-LIAVKDUU.js → fleet-validate-B2XDLS57.js} +28 -29
- package/dist/{fleet-verify-JIK3OQZR.js → fleet-verify-4JKUWGJ7.js} +57 -55
- package/dist/{fleet-view-IWHYGQKK.js → fleet-view-BHJFW26B.js} +60 -57
- package/dist/{init-NJEDOTQW.js → init-XAT5N5YM.js} +79 -74
- package/dist/interop-FVECHFKG.js +246 -0
- package/dist/{inventory-74UL7UHU.js → inventory-7KFQGLCV.js} +60 -57
- package/dist/library-NY2XOT75.js +492 -0
- package/dist/library-QAPAO23R.js +306 -0
- package/dist/library-import-5Y6MAS3R.js +183 -0
- package/dist/library-inventory-JT6HWITQ.js +56 -0
- package/dist/library-validation-EQUH25DC.js +42 -0
- package/dist/{memory-I76I5VUH.js → memory-DYVTTCP6.js} +58 -56
- package/dist/{models-D4YDIQZQ.js → models-MASFJ6Y2.js} +48 -36
- package/dist/{monitor-NKVD55HX.js → monitor-YMP4NXJJ.js} +64 -61
- package/dist/{orchestrator-I6OATVPK.js → orchestrator-AFQRRTEI.js} +3685 -1841
- package/dist/{panes-7BTYH3XQ.js → panes-D3Y2KFG5.js} +4 -4
- package/dist/{panes-WPOMEMRH.js → panes-NICTHQCV.js} +7 -7
- package/dist/{paths-J3KN7UAO.js → paths-PSFAUIGO.js} +5 -5
- package/dist/{preload-EJAWJEIO.js → preload-5Q7VXRFJ.js} +57 -55
- package/dist/{reset-4XMQKDNZ.js → reset-7NKZK7JN.js} +9 -9
- package/dist/{resources-TVYVXK3Q.js → resources-NILSIZAT.js} +94 -38
- package/dist/{run-OWQNNSJU.js → run-BPZGEBZV.js} +121 -105
- package/dist/{share-NPZZMUXG.js → share-EZ6ERBMH.js} +31 -28
- package/dist/skills-BTVVNYVM.js +100 -0
- package/dist/{skills-eval-J5TCKSJA.js → skills-eval-UY34MNK7.js} +110 -72
- package/dist/{skills-inventory-7II4DM57.js → skills-inventory-JDHSIA7I.js} +30 -25
- package/dist/{slash-commands-MDSDSWYF.js → slash-commands-K4FNQ2AT.js} +49 -46
- package/dist/{steer-S7D7IKPU.js → steer-2B3EQGFH.js} +4 -4
- package/dist/{support-5VAEC32W.js → support-L2SOL3IE.js} +7 -7
- package/dist/{targets-KILZEOCE.js → targets-44VKGFLN.js} +64 -58
- package/dist/{tasks-R6P6OV22.js → tasks-3KODKFU7.js} +12 -12
- package/dist/{terminal-lease-LZCG2KN3.js → terminal-lease-LXA7MMPO.js} +32 -19
- package/dist/{tools-6OCQ6SVB.js → tools-3UB7TEVR.js} +7 -7
- package/dist/{trace-JHLXWUMN.js → trace-TAMIU4OJ.js} +5 -4
- package/dist/{tui-primitives-RCY2HN7G.js → tui-primitives-A6MUW32V.js} +3 -2
- package/dist/{uninstall-FXYMFFRT.js → uninstall-QYVRPEM4.js} +9 -9
- package/dist/{upgrade-D2OZH6IQ.js → upgrade-7PMKM2JH.js} +15 -16
- package/dist/{usage-PIASNUS4.js → usage-6EQV7EQK.js} +70 -67
- package/dist/{verifiers-LTHUY2PX.js → verifiers-JLITWSHU.js} +15 -15
- package/dist/{verify-HYF7KBVE.js → verify-T7NAEVIG.js} +13 -13
- package/dist/{web-fetch-MQN4FH3X.js → web-fetch-W4TNW4Q7.js} +4 -4
- package/dist/{wiki-generate-RK7JQ5NP.js → wiki-generate-T2TJQJUA.js} +81 -76
- package/dist/{with-panes-OFTNAR4Y.js → with-panes-CHFC7HGI.js} +4 -4
- package/dist/worker/entry.js +283 -76
- package/docs/README.md +43 -0
- package/docs/architecture/architecture.md +8 -7
- package/docs/architecture/artifact-versions.md +3 -3
- package/docs/architecture/context-engine.md +35 -1
- package/docs/architecture/library.md +32 -0
- package/docs/architecture/middleware-and-components.md +1 -1
- package/docs/architecture/model-catalog.md +21 -1
- package/docs/architecture/pi-boundary.md +18 -0
- package/docs/architecture/prompt-envelope-and-tools.md +5 -5
- package/docs/architecture/safety-model.md +21 -2
- package/docs/architecture/session-lifecycle.md +12 -1
- package/docs/architecture/tui-design.md +108 -9
- package/docs/architecture/worker-context.md +106 -0
- package/docs/guide/authoring-plugins.md +160 -0
- package/docs/guide/built-in-agents.md +5 -5
- package/docs/guide/commands-and-modes.md +161 -56
- package/docs/guide/configuration-and-targets.md +1 -1
- package/docs/guide/configuration-reference.md +27 -34
- package/docs/guide/environment-variables.md +2 -2
- package/docs/guide/exit-codes-and-output.md +1 -1
- package/docs/guide/extensions-and-sharing.md +93 -53
- package/docs/guide/fleet-dispatch.md +31 -4
- package/docs/guide/glossary.md +1 -1
- package/docs/guide/harness-extensions.md +291 -0
- package/docs/guide/installation-and-lifecycle.md +9 -9
- package/docs/guide/interop.md +243 -0
- package/docs/guide/panes-and-files.md +3 -3
- package/docs/guide/plugins.md +80 -0
- package/docs/guide/resource-library.md +111 -45
- package/docs/guide/skills-marketplace.md +35 -72
- package/docs/guide/tool-usage.md +19 -7
- package/docs/guide/troubleshooting.md +1 -1
- package/docs/process/development-pipeline.md +14 -14
- package/docs/process/documentation-coverage.md +28 -1
- package/docs/process/documentation-guide.md +15 -7
- package/docs/process/eval-runner.md +8 -3
- package/docs/process/performance-methodology.md +1 -1
- package/docs/process/release-cut-checklist.md +4 -0
- package/docs/process/scientific-validation.md +23 -0
- package/evals/scalar-decision-machinery.ts +1 -1
- package/examples/extensions/README.md +67 -0
- package/examples/extensions/lab-status/clio-coder-extension.json +14 -0
- package/examples/extensions/lab-status/extension.mjs +68 -0
- package/examples/extensions/lab-status/jobs.synthetic.json +9 -0
- package/examples/extensions/measurements/clio-coder-extension.json +28 -0
- package/examples/extensions/measurements/summarize.cjs +23 -0
- package/library/README.md +109 -0
- package/library/_authoring/templates/agent/README.md +28 -0
- package/library/_authoring/templates/agent/agents/benchmark-scout.md +30 -0
- package/library/_authoring/templates/agent/plugin.json +23 -0
- package/library/_authoring/templates/fleet/README.md +29 -0
- package/library/_authoring/templates/fleet/fleets/pipeline-review.md +31 -0
- package/library/_authoring/templates/fleet/plugin.json +23 -0
- package/library/_authoring/templates/plugin/README.md +37 -0
- package/library/_authoring/templates/plugin/agents/data-curator.md +31 -0
- package/library/_authoring/templates/plugin/assets/curation-guide.md +22 -0
- package/library/_authoring/templates/plugin/plugin.json +42 -0
- package/library/_authoring/templates/plugin/prompts/inspect-dataset.md +15 -0
- package/library/_authoring/templates/plugin/skills/dataset-curation/SKILL.md +36 -0
- package/library/_authoring/templates/plugin/skills/dataset-curation/evals.md +17 -0
- package/library/_authoring/templates/prompt/README.md +28 -0
- package/library/_authoring/templates/prompt/plugin.json +23 -0
- package/library/_authoring/templates/prompt/prompts/paper-summary.md +26 -0
- package/library/_authoring/templates/skill/README.md +24 -0
- package/library/_authoring/templates/skill/SKILL.md +39 -0
- package/library/_authoring/templates/skill/evals.md +30 -0
- package/library/_authoring/templates/skill/plugin.json +23 -0
- package/library/agents/README.md +7 -0
- package/library/fleets/README.md +7 -0
- package/library/plugins/materio/README.md +137 -0
- package/library/plugins/materio/ai.iowarp.clio/agents/materio-lab-definer.md +208 -0
- package/library/plugins/materio/ai.iowarp.clio/agents/materio-literature-reviewer.md +308 -0
- package/library/plugins/materio/ai.iowarp.clio/agents/materio-research-explorer.md +249 -0
- package/library/plugins/materio/ai.iowarp.clio/agents/materio-task-executor.md +416 -0
- package/library/plugins/materio/ai.iowarp.clio/agents/materio-task-verifier.md +60 -0
- package/library/plugins/materio/ai.iowarp.clio/agents/materio-workflow-planner.md +238 -0
- package/library/plugins/materio/ai.iowarp.clio/fleets/materio-execute-task.md +50 -0
- package/library/plugins/materio/ai.iowarp.clio/prompts/materio/add-task.md +66 -0
- package/library/plugins/materio/ai.iowarp.clio/prompts/materio/archive-task.md +65 -0
- package/library/plugins/materio/ai.iowarp.clio/prompts/materio/checkpoint.md +26 -0
- package/library/plugins/materio/ai.iowarp.clio/prompts/materio/define-research-tasks.md +230 -0
- package/library/plugins/materio/ai.iowarp.clio/prompts/materio/define-virtual-lab.md +181 -0
- package/library/plugins/materio/ai.iowarp.clio/prompts/materio/execute-task.md +292 -0
- package/library/plugins/materio/ai.iowarp.clio/prompts/materio/help.md +129 -0
- package/library/plugins/materio/ai.iowarp.clio/prompts/materio/identify-research.md +206 -0
- package/library/plugins/materio/ai.iowarp.clio/prompts/materio/literature-review.md +201 -0
- package/library/plugins/materio/ai.iowarp.clio/prompts/materio/pause-research.md +12 -0
- package/library/plugins/materio/ai.iowarp.clio/prompts/materio/progress.md +105 -0
- package/library/plugins/materio/ai.iowarp.clio/prompts/materio/remove-task.md +63 -0
- package/library/plugins/materio/ai.iowarp.clio/prompts/materio/resume-research.md +64 -0
- package/library/plugins/materio/ai.iowarp.clio/prompts/materio/settings.md +16 -0
- package/library/plugins/materio/ai.iowarp.clio/prompts/materio/status.md +92 -0
- package/library/plugins/materio/ai.iowarp.clio/prompts/materio/upload-data.md +104 -0
- package/library/plugins/materio/ai.iowarp.clio/prompts/materio/wtfp.md +145 -0
- package/library/plugins/materio/ai.iowarp.clio/references/execution.md +56 -0
- package/library/plugins/materio/ai.iowarp.portability/provenance.json +9 -0
- package/library/plugins/materio/assets/actions/add-task.md +86 -0
- package/library/plugins/materio/assets/actions/archive-task.md +84 -0
- package/library/plugins/materio/assets/actions/checkpoint.md +47 -0
- package/library/plugins/materio/assets/actions/define-research-tasks.md +228 -0
- package/library/plugins/materio/assets/actions/define-virtual-lab.md +179 -0
- package/library/plugins/materio/assets/actions/execute-task.md +290 -0
- package/library/plugins/materio/assets/actions/help.md +140 -0
- package/library/plugins/materio/assets/actions/identify-research.md +204 -0
- package/library/plugins/materio/assets/actions/literature-review.md +199 -0
- package/library/plugins/materio/assets/actions/pause-research.md +34 -0
- package/library/plugins/materio/assets/actions/progress.md +125 -0
- package/library/plugins/materio/assets/actions/remove-task.md +82 -0
- package/library/plugins/materio/assets/actions/resume-research.md +84 -0
- package/library/plugins/materio/assets/actions/settings.md +38 -0
- package/library/plugins/materio/assets/actions/status.md +112 -0
- package/library/plugins/materio/assets/actions/upload-data.md +123 -0
- package/library/plugins/materio/assets/actions/wtfp.md +179 -0
- package/library/plugins/materio/assets/references/research-domains.md +134 -0
- package/library/plugins/materio/assets/references/research-policy.md +77 -0
- package/library/plugins/materio/assets/references/traditional-workflows.md +146 -0
- package/library/plugins/materio/assets/scripts/check_physics.py +271 -0
- package/library/plugins/materio/assets/scripts/check_scripts.py +248 -0
- package/library/plugins/materio/assets/scripts/project_plugin.py +165 -0
- package/library/plugins/materio/assets/scripts/research_state.py +400 -0
- package/library/plugins/materio/assets/scripts/verify_citations.py +616 -0
- package/library/plugins/materio/assets/templates/RESEARCH.md +39 -0
- package/library/plugins/materio/assets/templates/VIRTUAL-LAB.md +120 -0
- package/library/plugins/materio/assets/templates/WORKFLOW.md +42 -0
- package/library/plugins/materio/assets/templates/config.json +5 -0
- package/library/plugins/materio/evals/scripts.yaml +29 -0
- package/library/plugins/materio/plugin.json +530 -0
- package/library/plugins/materio/skills/materio-lab-definer/SKILL.md +74 -0
- package/library/plugins/materio/skills/materio-literature-reviewer/SKILL.md +64 -0
- package/library/plugins/materio/skills/materio-research-explorer/SKILL.md +74 -0
- package/library/plugins/materio/skills/materio-task-executor/SKILL.md +214 -0
- package/library/plugins/materio/skills/materio-task-verifier/SKILL.md +46 -0
- package/library/plugins/materio/skills/materio-workflow-planner/SKILL.md +79 -0
- package/library/plugins/materio/tests/test_check_physics.py +139 -0
- package/library/plugins/materio/tests/test_check_scripts.py +140 -0
- package/library/plugins/materio/tests/test_research_state.py +291 -0
- package/library/plugins/materio/tests/test_verify_citations.py +337 -0
- package/library/prompts/README.md +7 -0
- package/library/registry.yaml +921 -0
- package/library/skills/README.md +120 -0
- package/{skills → library/skills}/coding/ast-grep/SKILL.md +1 -1
- package/{skills → library/skills}/coding/ast-grep/evals.md +1 -1
- package/library/skills/coding/ast-grep/plugin.json +23 -0
- package/{skills → library/skills}/coding/coding-standards/SKILL.md +1 -1
- package/{skills → library/skills}/coding/coding-standards/evals.md +1 -1
- package/library/skills/coding/coding-standards/plugin.json +23 -0
- package/{skills → library/skills}/coding/prototype/SKILL.md +1 -1
- package/{skills → library/skills}/coding/prototype/evals.md +1 -1
- package/library/skills/coding/prototype/plugin.json +23 -0
- package/{skills → library/skills}/coding/tdd/SKILL.md +1 -1
- package/{skills → library/skills}/coding/tdd/evals.md +1 -1
- package/library/skills/coding/tdd/plugin.json +23 -0
- package/{skills → library/skills}/context/context-handoff/SKILL.md +1 -1
- package/{skills → library/skills}/context/context-handoff/evals.md +1 -1
- package/library/skills/context/context-handoff/plugin.json +23 -0
- package/{skills → library/skills}/context/context-prime/SKILL.md +1 -1
- package/{skills → library/skills}/context/context-prime/evals.md +1 -1
- package/library/skills/context/context-prime/plugin.json +23 -0
- package/{skills → library/skills}/git/branch-closeout/SKILL.md +1 -1
- package/library/skills/git/branch-closeout/plugin.json +23 -0
- package/{skills → library/skills}/git/file-ticket/SKILL.md +1 -1
- package/library/skills/git/file-ticket/plugin.json +23 -0
- package/{skills → library/skills}/git/fix-issue/SKILL.md +1 -1
- package/library/skills/git/fix-issue/plugin.json +23 -0
- package/{skills → library/skills}/git/resolve-merge-conflicts/SKILL.md +1 -1
- package/{skills → library/skills}/git/resolve-merge-conflicts/evals.md +1 -1
- package/library/skills/git/resolve-merge-conflicts/plugin.json +23 -0
- package/{skills → library/skills}/git/ship/SKILL.md +1 -1
- package/library/skills/git/ship/plugin.json +23 -0
- package/{skills → library/skills}/git/worktree-create/SKILL.md +1 -1
- package/library/skills/git/worktree-create/plugin.json +23 -0
- package/{skills → library/skills}/git/worktree-merge/SKILL.md +1 -1
- package/library/skills/git/worktree-merge/plugin.json +23 -0
- package/{skills → library/skills}/meta/clio-coder-dev/SKILL.md +1 -1
- package/{skills → library/skills}/meta/clio-coder-dev/evals.md +1 -1
- package/library/skills/meta/clio-coder-dev/plugin.json +23 -0
- package/{skills → library/skills}/meta/clio-coder-test/SKILL.md +1 -1
- package/{skills → library/skills}/meta/clio-coder-test/evals.md +1 -1
- package/library/skills/meta/clio-coder-test/plugin.json +23 -0
- package/{skills → library/skills}/meta/credentials/SKILL.md +1 -1
- package/{skills → library/skills}/meta/credentials/evals.md +1 -1
- package/library/skills/meta/credentials/plugin.json +23 -0
- package/library/skills/meta/find-skills/SKILL.md +85 -0
- package/library/skills/meta/find-skills/evals.md +65 -0
- package/library/skills/meta/find-skills/plugin.json +23 -0
- package/{skills → library/skills}/meta/herdr/SKILL.md +1 -1
- package/{skills → library/skills}/meta/herdr/evals.md +1 -1
- package/library/skills/meta/herdr/plugin.json +23 -0
- package/{skills → library/skills}/meta/skill-craft/SKILL.md +23 -9
- package/{skills → library/skills}/meta/skill-craft/evals.md +11 -3
- package/library/skills/meta/skill-craft/plugin.json +23 -0
- package/{skills → library/skills}/planning/archify/SKILL.md +13 -13
- package/library/skills/planning/archify/plugin.json +23 -0
- package/{skills → library/skills}/planning/architecture/SKILL.md +1 -1
- package/{skills → library/skills}/planning/architecture/evals.md +1 -1
- package/library/skills/planning/architecture/plugin.json +23 -0
- package/{skills → library/skills}/planning/backlog/SKILL.md +1 -1
- package/{skills → library/skills}/planning/backlog/evals.md +1 -1
- package/library/skills/planning/backlog/plugin.json +23 -0
- package/{skills → library/skills}/planning/prd/SKILL.md +1 -1
- package/{skills → library/skills}/planning/prd/evals.md +1 -1
- package/library/skills/planning/prd/plugin.json +23 -0
- package/{skills → library/skills}/planning/product-intent/SKILL.md +1 -1
- package/{skills → library/skills}/planning/product-intent/evals.md +1 -1
- package/library/skills/planning/product-intent/plugin.json +23 -0
- package/{skills → library/skills}/planning/tech-spec/SKILL.md +1 -1
- package/{skills → library/skills}/planning/tech-spec/evals.md +1 -1
- package/library/skills/planning/tech-spec/plugin.json +23 -0
- package/{skills → library/skills}/registry.yaml +7 -7
- package/{skills → library/skills}/remote.yaml +1 -1
- package/{skills → library/skills}/research/arxiv-literature/SKILL.md +1 -1
- package/{skills → library/skills}/research/arxiv-literature/evals.md +1 -1
- package/library/skills/research/arxiv-literature/plugin.json +23 -0
- package/{skills → library/skills}/research/experiment-protocol/SKILL.md +1 -1
- package/{skills → library/skills}/research/experiment-protocol/evals.md +1 -1
- package/library/skills/research/experiment-protocol/plugin.json +23 -0
- package/{skills → library/skills}/research/scientific-debugging/SKILL.md +1 -1
- package/{skills → library/skills}/research/scientific-debugging/evals.md +1 -1
- package/library/skills/research/scientific-debugging/plugin.json +23 -0
- package/{skills → library/skills}/research/scientific-modernization/SKILL.md +1 -1
- package/{skills → library/skills}/research/scientific-modernization/evals.md +1 -1
- package/library/skills/research/scientific-modernization/plugin.json +23 -0
- package/{skills → library/skills}/skill-marketplace.json +37 -37
- package/{skills → library/skills}/workflow/cut-it/SKILL.md +1 -1
- package/{skills → library/skills}/workflow/cut-it/evals.md +1 -1
- package/library/skills/workflow/cut-it/plugin.json +23 -0
- package/{skills → library/skills}/workflow/design-council/SKILL.md +1 -1
- package/{skills → library/skills}/workflow/design-council/evals.md +1 -1
- package/library/skills/workflow/design-council/plugin.json +23 -0
- package/{skills → library/skills}/workflow/grill-me/SKILL.md +1 -1
- package/{skills → library/skills}/workflow/grill-me/evals.md +1 -1
- package/library/skills/workflow/grill-me/plugin.json +23 -0
- package/{skills → library/skills}/workflow/workflow-distiller/SKILL.md +14 -11
- package/{skills → library/skills}/workflow/workflow-distiller/evals.md +14 -6
- package/library/skills/workflow/workflow-distiller/plugin.json +23 -0
- package/package.json +12 -5
- package/src/cli/agents.ts +1 -1
- package/src/cli/config-inspect.ts +1 -1
- package/src/cli/configure.ts +2 -2
- package/src/cli/eval.ts +40 -6
- package/src/cli/extensions.ts +74 -8
- package/src/cli/fleet-preflight.ts +2 -0
- package/src/cli/fleet.ts +2 -0
- package/src/cli/index.ts +1 -3
- package/src/cli/interop-inspect.ts +61 -33
- package/src/cli/interop.ts +79 -9
- package/src/cli/library-import.ts +139 -0
- package/src/cli/library.ts +418 -120
- package/src/cli/run.ts +26 -9
- package/src/cli/skills-eval.ts +43 -6
- package/src/cli/skills-inventory.ts +6 -2
- package/src/cli/skills.ts +44 -491
- package/src/core/bus-events.ts +5 -0
- package/src/core/defaults.ts +1 -1
- package/src/core/recent-models.ts +2 -2
- package/src/core/session-routing.ts +3 -3
- package/src/core/state-file-lock.ts +1 -1
- package/src/core/tool-names.ts +5 -0
- package/src/domains/agents/extension.ts +42 -6
- package/src/domains/agents/fleet-commands.ts +92 -1
- package/src/domains/agents/fleet-contract.ts +87 -19
- package/src/domains/agents/recipe.ts +5 -4
- package/src/domains/agents/registry.ts +80 -24
- package/src/domains/config/keybindings.ts +155 -95
- package/src/domains/context/worker/contract.ts +91 -0
- package/src/domains/context/worker/pressure.ts +120 -0
- package/src/domains/context/worker/recall.ts +62 -0
- package/src/domains/context/worker/select.ts +164 -0
- package/src/domains/context/worker/snapshot.ts +35 -0
- package/src/domains/context/worker/store.ts +16 -0
- package/src/domains/context/working-set/replay/synthetic.ts +2 -1
- package/src/domains/dispatch/active-route-planner.ts +2 -0
- package/src/domains/dispatch/backoff.ts +1 -0
- package/src/domains/dispatch/code-step.ts +12 -2
- package/src/domains/dispatch/contract.ts +3 -0
- package/src/domains/dispatch/execution-plan.ts +2 -0
- package/src/domains/dispatch/extension.ts +109 -27
- package/src/domains/dispatch/fleet-plan.ts +10 -0
- package/src/domains/dispatch/fleet-run.ts +1 -0
- package/src/domains/dispatch/orphan-recovery.ts +1 -0
- package/src/domains/dispatch/receipt-integrity.ts +4 -0
- package/src/domains/dispatch/state.ts +1 -0
- package/src/domains/dispatch/types.ts +5 -0
- package/src/domains/dispatch/validation.ts +12 -0
- package/src/domains/dispatch/workspace-checkpoint.ts +1 -1
- package/src/domains/evidence/failure-attribution.ts +1 -0
- package/src/domains/evidence/trust-status.ts +22 -3
- package/src/domains/extensions/command-schema.ts +145 -0
- package/src/domains/extensions/command-tools.ts +15 -0
- package/src/domains/extensions/compatibility.ts +7 -0
- package/src/domains/extensions/contract.ts +0 -4
- package/src/domains/extensions/discovery.ts +69 -205
- package/src/domains/extensions/extension.ts +0 -4
- package/src/domains/extensions/index.ts +1 -5
- package/src/domains/extensions/manager.ts +1 -6
- package/src/domains/extensions/operator-commands.ts +29 -0
- package/src/domains/extensions/operator-runtime.ts +483 -0
- package/src/domains/extensions/public-api.ts +53 -0
- package/src/domains/extensions/runtime-child.mjs +114 -0
- package/src/domains/extensions/runtime-process.ts +306 -0
- package/src/domains/extensions/runtime-schema.ts +146 -0
- package/src/domains/extensions/{resources.ts → snapshot-access.ts} +1 -17
- package/src/domains/extensions/snapshot.ts +4 -32
- package/src/domains/extensions/state.ts +5 -83
- package/src/domains/extensions/types.ts +33 -34
- package/src/domains/interop/adopt.ts +546 -0
- package/src/domains/interop/detect.ts +50 -12
- package/src/domains/interop/foreign.ts +554 -0
- package/src/domains/interop/import.ts +277 -0
- package/src/domains/interop/index.ts +24 -0
- package/src/domains/interop/install.ts +6 -0
- package/src/domains/interop/inventory.ts +351 -0
- package/src/domains/interop/projection.ts +360 -0
- package/src/domains/interop/registry.ts +106 -3
- package/src/domains/interop/types.ts +51 -0
- package/src/domains/lifecycle/migrations/index.ts +0 -2
- package/src/domains/lifecycle/naming-resources.ts +1 -1
- package/src/domains/middleware/marketplace-offer.ts +1 -1
- package/src/domains/mux/contract.ts +1 -1
- package/src/domains/plugins/catalog.ts +204 -0
- package/src/domains/plugins/contract.ts +24 -0
- package/src/domains/plugins/discovery.ts +316 -0
- package/src/domains/plugins/extension.ts +40 -0
- package/src/domains/plugins/index.ts +77 -0
- package/src/domains/plugins/integrity.ts +6 -0
- package/src/domains/plugins/manifest.ts +3 -0
- package/src/domains/plugins/resources.ts +102 -0
- package/src/domains/plugins/state.ts +753 -0
- package/src/domains/plugins/types.ts +217 -0
- package/src/domains/prompts/extension.ts +9 -2
- package/src/domains/prompts/fragments/operating/skills.md +10 -10
- package/src/domains/resources/common-loader.ts +9 -6
- package/src/domains/resources/index.ts +67 -0
- package/src/domains/resources/library-actions.ts +836 -0
- package/src/domains/resources/library-evals.ts +38 -0
- package/src/domains/resources/library-inventory.ts +1048 -0
- package/src/domains/resources/library-types.ts +50 -0
- package/src/domains/resources/library-validation.ts +634 -0
- package/src/domains/resources/library.ts +437 -156
- package/src/domains/resources/package-references.ts +66 -0
- package/src/domains/resources/prompts/loader.ts +75 -41
- package/src/domains/resources/skills/install.ts +2 -2
- package/src/domains/resources/skills/loader.ts +77 -22
- package/src/domains/resources/skills/marketplace.ts +48 -57
- package/src/domains/resources/skills/promotion.ts +2 -2
- package/src/domains/resources/skills/provenance-pin.ts +17 -4
- package/src/domains/safety/action-classifier.ts +2 -2
- package/src/domains/safety/default-path-policy.ts +3 -1
- package/src/domains/safety/policy-engine.ts +1 -1
- package/src/domains/safety/protected-artifacts.ts +21 -5
- package/src/domains/safety/skill-authority.ts +5 -2
- package/src/domains/share/archive.ts +1 -1
- package/src/engine/apis/openai-completions.ts +52 -2
- package/src/engine/notices/pi-tui-LICENSE +21 -0
- package/src/engine/tui.ts +3 -0
- package/src/engine/worker-runtime.ts +58 -14
- package/src/engine/worker-tools.ts +5 -0
- package/src/entry/orchestrator.ts +26 -5
- package/src/entry/plugin-reload.ts +18 -0
- package/src/interactive/application-controller.ts +67 -21
- package/src/interactive/chat-loop.ts +32 -5
- package/src/interactive/chat-panel.ts +5 -1
- package/src/interactive/clio-editor.ts +53 -21
- package/src/interactive/command-output.ts +56 -1
- package/src/interactive/editor-submit.ts +65 -28
- package/src/interactive/fleet-run-preview.ts +2 -0
- package/src/interactive/follow-up-queue-panel.ts +3 -3
- package/src/interactive/footer/dashboard.ts +4 -1
- package/src/interactive/footer/notifications.ts +2 -2
- package/src/interactive/footer/widgets.ts +2 -2
- package/src/interactive/interactive-application.ts +209 -21
- package/src/interactive/interactive-input-runtime.ts +254 -7
- package/src/interactive/interactive-presentation.ts +41 -12
- package/src/interactive/interactive-slash-runtime.ts +37 -8
- package/src/interactive/keybinding-manager.ts +156 -79
- package/src/interactive/keyboard-owner.ts +37 -0
- package/src/interactive/leader-key.ts +49 -102
- package/src/interactive/leader-menu.ts +45 -0
- package/src/interactive/overlay-ask-user-lifecycle.ts +9 -1
- package/src/interactive/overlay-frame.ts +15 -0
- package/src/interactive/overlay-key-routing.ts +46 -47
- package/src/interactive/overlay-lifecycle.ts +30 -15
- package/src/interactive/overlay-resource-openers.ts +56 -46
- package/src/interactive/overlays/ask-user.ts +630 -556
- package/src/interactive/overlays/extension-panel.ts +70 -0
- package/src/interactive/overlays/extensions.ts +28 -5
- package/src/interactive/overlays/fleet-run-approval.ts +7 -3
- package/src/interactive/overlays/help-reference.ts +89 -40
- package/src/interactive/overlays/interop.ts +122 -3
- package/src/interactive/overlays/keybinding-detail.ts +2 -2
- package/src/interactive/overlays/library-lifecycle.ts +90 -0
- package/src/interactive/overlays/library-model.ts +574 -0
- package/src/interactive/overlays/library-review.ts +557 -0
- package/src/interactive/overlays/library-tabs.ts +3 -15
- package/src/interactive/overlays/library.ts +602 -0
- package/src/interactive/overlays/list-overlay.ts +218 -39
- package/src/interactive/overlays/model-selector.ts +28 -25
- package/src/interactive/overlays/session-selector.ts +9 -3
- package/src/interactive/overlays/settings.ts +25 -18
- package/src/interactive/overlays/tree-selector.ts +16 -11
- package/src/interactive/permission-hint.ts +13 -0
- package/src/interactive/permission-overlay.ts +77 -28
- package/src/interactive/prompt-source-label.ts +21 -0
- package/src/interactive/renderers/reference-card.ts +35 -0
- package/src/interactive/renderers/worker-entry.ts +35 -3
- package/src/interactive/slash-autocomplete.ts +99 -1
- package/src/interactive/slash-commands.ts +390 -67
- package/src/interactive/slash-spec.ts +0 -1
- package/src/interactive/terminal-lease.ts +44 -12
- package/src/interactive/turn-queues.ts +8 -7
- package/src/interactive/turn-runtime.ts +1 -1
- package/src/interactive/view/view-overlay.ts +19 -14
- package/src/interactive/welcome-dashboard.ts +525 -408
- package/src/tools/bootstrap.ts +8 -0
- package/src/tools/builtin-tool-catalog.ts +7 -2
- package/src/tools/context/index.ts +58 -5
- package/src/tools/context/library.ts +465 -0
- package/src/tools/context/surface.ts +20 -6
- package/src/tools/core-bootstrap.ts +3 -0
- package/src/tools/dispatch-admission.ts +24 -1
- package/src/tools/dispatch-arguments.ts +8 -0
- package/src/tools/dispatch-plan.ts +32 -0
- package/src/tools/dispatch-schema.ts +31 -1
- package/src/tools/dispatch-types.ts +3 -0
- package/src/tools/dispatch.ts +1 -1
- package/src/tools/harness-extensions.ts +169 -0
- package/src/tools/observation.ts +4 -0
- package/src/tools/policy.ts +7 -1
- package/src/tools/registry.ts +19 -1
- package/src/tools/worker-evidence.ts +5 -0
- package/src/worker/context-seed.ts +192 -0
- package/src/worker/entry.ts +1 -0
- package/src/worker/spec-contract.ts +8 -1
- package/dist/chunk-3UW3KU4A.js +0 -21
- package/dist/chunk-536HXRFE.js +0 -1257
- package/dist/chunk-B3MOMLJ4.js +0 -433
- package/dist/chunk-CXQ37WJH.js +0 -45
- package/dist/chunk-KTFSFCVN.js +0 -46
- package/dist/chunk-QCOV5DFY.js +0 -911
- package/dist/chunk-QRFXEO6Y.js +0 -17
- package/dist/chunk-VAHLPXPY.js +0 -399
- package/dist/interop-RVCAYECG.js +0 -115
- package/dist/library-CTKZA7K3.js +0 -226
- package/dist/skills-OXFEAWMT.js +0 -510
- package/skills/README.md +0 -418
- package/skills/meta/find-skills/SKILL.md +0 -78
- package/skills/meta/find-skills/evals.md +0 -47
- package/src/domains/extensions/resource-path.ts +0 -27
- package/src/domains/lifecycle/migrations/2026-09-01-extension-install-digests.ts +0 -27
- package/src/interactive/overlays/agents.ts +0 -70
- package/src/interactive/overlays/library-install-confirm.ts +0 -152
- package/src/interactive/overlays/prompts.ts +0 -89
- package/src/interactive/overlays/skills-hub.ts +0 -615
- /package/{skills → library/skills}/coding/ast-grep/references/rule_reference.md +0 -0
- /package/{skills → library/skills}/coding/prototype/references/LOGIC.md +0 -0
- /package/{skills → library/skills}/coding/prototype/references/UI.md +0 -0
- /package/{skills → library/skills}/coding/tdd/references/mocking.md +0 -0
- /package/{skills → library/skills}/coding/tdd/references/tests.md +0 -0
- /package/{skills → library/skills}/context/context-handoff/scripts/new-handoff.sh +0 -0
- /package/{skills → library/skills}/git/branch-closeout/evals.md +0 -0
- /package/{skills → library/skills}/git/branch-closeout/references/closeout-checklist.md +0 -0
- /package/{skills → library/skills}/git/file-ticket/assets/issue-template.md +0 -0
- /package/{skills → library/skills}/git/file-ticket/evals.md +0 -0
- /package/{skills → library/skills}/git/file-ticket/references/issue-discovery.md +0 -0
- /package/{skills → library/skills}/git/fix-issue/evals.md +0 -0
- /package/{skills → library/skills}/git/fix-issue/references/diagnosis-and-rca.md +0 -0
- /package/{skills → library/skills}/git/resolve-merge-conflicts/references/conflict-matrix.md +0 -0
- /package/{skills → library/skills}/git/ship/assets/pr-template.md +0 -0
- /package/{skills → library/skills}/git/ship/evals.md +0 -0
- /package/{skills → library/skills}/git/ship/references/remote-and-branch-policy.md +0 -0
- /package/{skills → library/skills}/git/worktree-create/evals.md +0 -0
- /package/{skills → library/skills}/git/worktree-create/references/worktree-setup.md +0 -0
- /package/{skills → library/skills}/git/worktree-merge/evals.md +0 -0
- /package/{skills → library/skills}/git/worktree-merge/references/merge-strategies.md +0 -0
- /package/{skills → library/skills}/meta/clio-coder-test/references/harness.md +0 -0
- /package/{skills → library/skills}/meta/clio-coder-test/references/test-map.md +0 -0
- /package/{skills → library/skills}/planning/archify/evals.md +0 -0
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
# Harness extensions
|
|
2
|
+
|
|
3
|
+
> **Visual blueprint:** See the [visual reference](../html/harness_extensions_blueprint.html) in the source checkout.
|
|
4
|
+
|
|
5
|
+
Harness extensions add executable capabilities to Clio. Library recipes may also carry explicitly invoked workflow or evaluation scripts. Installing or browsing a recipe never registers harness tools, hooks, operator commands, or UI. A domain workflow that combines prompts, agents, skills, fleets, and reference files is a plugin, installed with `clio-coder library install <path>`.
|
|
6
|
+
|
|
7
|
+
An extension declares command tools in `clio-coder-extension.yaml`, `.yml`, or `.json`. Clio discovers and validates declarations without importing or executing package code. Tools become available in a new session after installation. Native workers can use a tool when their admitted recipe includes its qualified name; narrower profiles such as `minimal-local` exclude extension commands.
|
|
8
|
+
|
|
9
|
+
## Create a command tool
|
|
10
|
+
|
|
11
|
+
Create a directory containing this `clio-coder-extension.yaml`:
|
|
12
|
+
|
|
13
|
+
```yaml
|
|
14
|
+
id: local-analysis
|
|
15
|
+
name: Local Analysis
|
|
16
|
+
version: 1.0.0
|
|
17
|
+
description: Local analysis capabilities for Clio.
|
|
18
|
+
compatibility:
|
|
19
|
+
clio: ">=0.4.7"
|
|
20
|
+
capabilities:
|
|
21
|
+
tools:
|
|
22
|
+
- name: summarize
|
|
23
|
+
description: Return the count and sum of supplied measurements.
|
|
24
|
+
runtime: node
|
|
25
|
+
entrypoint: tools/summarize.cjs
|
|
26
|
+
timeoutMs: 10000
|
|
27
|
+
maxOutputBytes: 16384
|
|
28
|
+
inputSchema:
|
|
29
|
+
type: object
|
|
30
|
+
properties:
|
|
31
|
+
values:
|
|
32
|
+
type: array
|
|
33
|
+
items:
|
|
34
|
+
type: number
|
|
35
|
+
maxItems: 1000
|
|
36
|
+
required: [values]
|
|
37
|
+
additionalProperties: false
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Add `tools/summarize.cjs`:
|
|
41
|
+
|
|
42
|
+
```javascript
|
|
43
|
+
const { values } = JSON.parse(process.argv[2]);
|
|
44
|
+
console.log(JSON.stringify({
|
|
45
|
+
count: values.length,
|
|
46
|
+
sum: values.reduce((sum, value) => sum + value, 0),
|
|
47
|
+
}));
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Install the directory and start a new Clio session:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
clio-coder extensions install /path/to/local-analysis --user
|
|
54
|
+
clio-coder extensions list --all --json
|
|
55
|
+
clio-coder
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
The model can call `extension_local-analysis__summarize` with `{"values":[1,2,3]}`. A recipe requests that same qualified name in `tools.required` or `tools.optional`. Python tools use `runtime: python3` and read `json.loads(sys.argv[1])`; Clio launches Python with `-I` to isolate interpreter configuration.
|
|
59
|
+
|
|
60
|
+
## Command contract
|
|
61
|
+
|
|
62
|
+
Each tool declares `name`, `description`, `runtime`, `entrypoint`, and `inputSchema`. Supported runtimes are `node` and `python3`. Clio uses its current Node executable and resolves `python3` from the normal tool environment. Entrypoints are ordinary files inside the installed package; symlinks, hard links, absolute paths, and parent traversal are refused. Helper files remain covered by the full package digest.
|
|
63
|
+
|
|
64
|
+
Clio passes the validated JSON object as one argument and runs a fixed argument vector with no shell. The child runs in the workspace directory. Standard output must contain exactly one JSON value. Use standard error for diagnostics. Nonzero exits, invalid JSON, cancellation, timeout, and exceeded output limits return tool errors with execution metadata and package provenance.
|
|
65
|
+
|
|
66
|
+
Input is limited to 64 KiB. `timeoutMs` defaults to 120000 and is bounded at 300000. `maxOutputBytes` defaults to 600000 and is bounded at 1048576. Output limits include standard output and standard error together.
|
|
67
|
+
|
|
68
|
+
Schemas support `type`, `description`, `properties`, `required`, `additionalProperties`, `items`, scalar `enum`, `minimum`, `maximum`, `minLength`, `maxLength`, `minItems`, and `maxItems`. The root must be an object. Each object declares its properties and `additionalProperties: false`; array schemas declare `items`. References and executable schema keywords are refused. Clio validates each invocation against the schema before starting the child.
|
|
69
|
+
|
|
70
|
+
Qualified names use `extension_<id>__<name>` and must fit 64 characters. Package IDs use provider-safe lowercase letters, numbers, single underscores, and hyphens; local tool names start with a letter and use lowercase letters, numbers, and single underscores. Duplicate and colliding tool registrations are refused.
|
|
71
|
+
|
|
72
|
+
The manifest keys are `id`, `name`, `version`, `description`, `capabilities`, `compatibility`, and optional `runtime` (described below). A manifest naming `resources`, `prompts`, `skills`, `agents`, `fleets`, or `themes` is invalid, and the diagnostic points at `clio-coder library install <path>`. `capabilities` is optional: a package whose only contribution is a root `hooks.yaml` is a valid harness extension with no command tools.
|
|
73
|
+
|
|
74
|
+
## Admission and lifecycle
|
|
75
|
+
|
|
76
|
+
Every model-visible extension command tool is an execution action and runs sequentially. Packages cannot declare themselves read-only. The registry evaluates both the qualified capability call and its fixed executable command through Clio's existing safety policy, autonomy, approval, and middleware rules. Read-only autonomy blocks commands; workers with explicit write confinement cannot execute an unconfined extension command. Installation does not bypass command approval. The child receives Clio's normal allowlisted tool environment, which excludes provider credentials and interpreter injection variables.
|
|
77
|
+
|
|
78
|
+
Command tools are installed programs with the filesystem and network access of the invoking process. Entry containment and environment filtering do not create an operating-system sandbox. Install code you trust, as you would a local executable script.
|
|
79
|
+
|
|
80
|
+
The existing extension lifecycle applies:
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
clio-coder extensions disable local-analysis --user
|
|
84
|
+
clio-coder extensions enable local-analysis --user
|
|
85
|
+
clio-coder extensions install /path/to/new-local-analysis --user --force
|
|
86
|
+
clio-coder extensions remove local-analysis --user
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
Installation records and verifies the entire package tree. Each invocation rechecks the effective installed package, enabled state, canonical root, and digest. Disabling, removing, replacing, or modifying a package revokes existing tool calls. A disabled project installation also suppresses the user installation with the same ID.
|
|
90
|
+
|
|
91
|
+
## Extension reload: runtime capabilities, integrity verification, and frozen session tool schemas
|
|
92
|
+
|
|
93
|
+
Harness extensions distinguish reloadable runtime capabilities from frozen model tool definitions:
|
|
94
|
+
- **Reloading at idle (`/extensions reload`)**: Extension snapshots, hooks declared in `hooks.yaml`, and operator runtimes reload at idle when the session is not executing tools or commands. `/extensions reload` re-reads installed extension files and re-verifies tree integrity against `extensions/state.json`. Reload is **not unconditionally successful**: if an installed package file has been modified on disk without being properly reinstalled via `clio-coder extensions install`, it fails integrity checks and reports degraded runtime activation. Similarly, if the active process limit (up to 4 child processes) is exceeded or staging is interrupted by session activity, reload reports a failure or queues until idle.
|
|
95
|
+
- **Operator runtimes vs command tools**: An extension operator runtime (`api.handle(...)`, `api.on(...)`) requires a shipped Node `.mjs` entrypoint (`parseExtensionRuntime` in `src/domains/extensions/runtime-schema.ts`) and provides bounded status indicators and UI panels. Its `session_open` and `turn_end` events are passive observations, fundamentally distinct from effect-producing, blocking pre-tool/post-tool interceptors in `hooks.yaml`. Separately, harness command tools execute individual tool invocations under either `runtime: node` or `python3`.
|
|
96
|
+
- **Capabilities that require a new session**: Model-visible command-tool schemas are frozen when a session starts. Adding a new command tool, modifying its parameter schema, or removing a tool cannot alter an in-flight conversation or worker registry; restart Clio to pick up tool schema changes.
|
|
97
|
+
- **Recipe resources vs extensions**: Recipe resources (skills, prompts, agents, fleets) belong to the Library, not harness extensions, and are refreshed independently via `/library reload`. A new native worker constructs its own verified registry, and ordinary allowed-tool surfaces and worker attestation apply. External command-line worker runtimes do not gain Clio command tools.
|
|
98
|
+
|
|
99
|
+
## Operator commands, status, and panels
|
|
100
|
+
|
|
101
|
+
An optional `runtime` adds local code-backed slash commands and observations in
|
|
102
|
+
an interactive session. It uses a fresh disposable Node child per package.
|
|
103
|
+
Discovery, installation, validation and `extensions list` remain code-free.
|
|
104
|
+
Installing or enabling trusted runtime code makes it eligible to execute on the
|
|
105
|
+
next interactive startup or explicit extension reload. Module initialization,
|
|
106
|
+
commands and observations run with your user account's filesystem and network
|
|
107
|
+
authority, independently of model-tool autonomy. The API provides no tool,
|
|
108
|
+
provider, credential, model, worker or session mutation methods. This is
|
|
109
|
+
lifecycle isolation, not an operating-system sandbox.
|
|
110
|
+
|
|
111
|
+
```json
|
|
112
|
+
{
|
|
113
|
+
"id": "lab-status",
|
|
114
|
+
"name": "Local experiment status",
|
|
115
|
+
"version": "1.0.0",
|
|
116
|
+
"description": "Inspect local experiment records.",
|
|
117
|
+
"compatibility": { "clio": ">=0.4.7" },
|
|
118
|
+
"runtime": {
|
|
119
|
+
"api": 1,
|
|
120
|
+
"entrypoint": "extension.mjs",
|
|
121
|
+
"commands": [{ "name": "dashboard", "description": "Show local experiment status." }],
|
|
122
|
+
"events": ["session_open", "turn_end"],
|
|
123
|
+
"ui": ["status", "panel"]
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
Only `.mjs` entrypoints are supported. Ship JavaScript and contained assets;
|
|
129
|
+
author TypeScript with your own build if desired. Clio never installs
|
|
130
|
+
dependencies or runs package lifecycle scripts. Each runtime loads from a
|
|
131
|
+
private copy whose complete digest matches the reviewed installation. Contained
|
|
132
|
+
relative helpers and assets are copied and refreshed too. Mutable external
|
|
133
|
+
imports, native add-ons, detached subprocesses, remote state, and files written
|
|
134
|
+
by the extension are outside the reload guarantee.
|
|
135
|
+
|
|
136
|
+
The default export registers exactly the declared commands and observations.
|
|
137
|
+
Registration closes when the factory settles; it cannot add tools or new
|
|
138
|
+
commands later. Import author types with
|
|
139
|
+
`import type { ExtensionApi, ExtensionOutput } from '@iowarp/clio-coder/extensions'`.
|
|
140
|
+
This package export contains types only; Clio injects the implementation.
|
|
141
|
+
|
|
142
|
+
```javascript
|
|
143
|
+
/** @param {import('@iowarp/clio-coder/extensions').ExtensionApi} api */
|
|
144
|
+
export default function extension(api) {
|
|
145
|
+
api.handle("dashboard", (_args, context) => {
|
|
146
|
+
context.signal.throwIfAborted();
|
|
147
|
+
return {
|
|
148
|
+
text: "SYNTHETIC FIXTURE: 2 of 3 jobs completed",
|
|
149
|
+
status: { text: "SYNTHETIC: 2/3 completed", tone: "neutral" },
|
|
150
|
+
panel: {
|
|
151
|
+
title: "Synthetic experiment",
|
|
152
|
+
sections: [
|
|
153
|
+
{ kind: "metrics", items: [{ label: "Completed jobs", value: "2/3" }] },
|
|
154
|
+
{ kind: "text", text: "Demonstration data; no cluster jobs were submitted." }
|
|
155
|
+
]
|
|
156
|
+
}
|
|
157
|
+
};
|
|
158
|
+
});
|
|
159
|
+
api.on("session_open", () => ({ text: "", status: { text: "Synthetic fixture ready" } }));
|
|
160
|
+
api.on("turn_end", () => ({ text: "" }));
|
|
161
|
+
api.onDispose(() => { /* best-effort local cleanup */ });
|
|
162
|
+
}
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
Commands receive the unexpanded argument string and a context with `signal`,
|
|
166
|
+
`requestId`, and a read-only snapshot of `workspace`, `sessionId`, `generation`
|
|
167
|
+
and `mode`. No conversation body, tool arguments or credentials cross this
|
|
168
|
+
API. Results render locally for the operator and never start a model turn or
|
|
169
|
+
become a session transcript entry. The required `text` is also the headless
|
|
170
|
+
fallback; include the same useful findings and evidence qualifiers there.
|
|
171
|
+
|
|
172
|
+
`session_open` receives a `startup`, `reload`, or `session-change` reason.
|
|
173
|
+
`turn_end` receives `completed`, meaning the foreground turn settled, not that
|
|
174
|
+
its scientific or engineering objective passed validation. Observers are
|
|
175
|
+
asynchronous observations, distinct from effect-producing `hooks.yaml`.
|
|
176
|
+
Observers may return status, but cannot open a panel or steal focus. There is
|
|
177
|
+
one coalesced pending observation; a busy runtime skips observations. No timer
|
|
178
|
+
polling or arbitrary event bus subscription API is exposed. Runtime globals
|
|
179
|
+
reset on reload and on resume, fork, workspace change or branch switch.
|
|
180
|
+
|
|
181
|
+
UI is bounded data. A status is one string (160 characters) and an optional
|
|
182
|
+
`neutral`, `positive`, `warning`, or `error` tone; `status: null` clears it.
|
|
183
|
+
The footer displays a single additive line with host-assigned owner labels;
|
|
184
|
+
core activity, approval cues and notices retain ownership. The Extensions
|
|
185
|
+
reference shows each owner's full current status if the footer truncates it.
|
|
186
|
+
Panels support plain text, labeled metrics, and tables. Clio owns wrapping,
|
|
187
|
+
scrolling, Escape, focus and permission interruption. Terminal controls are
|
|
188
|
+
stripped. Background code cannot open panels; a command opens one only when
|
|
189
|
+
no other overlay needs the screen. An unavailable panel falls back to text.
|
|
190
|
+
Panels expire with their instance and close on observed revocation when they
|
|
191
|
+
hold the overlay slot; an interrupted expired panel shows an expiry message.
|
|
192
|
+
|
|
193
|
+
## Invoke and manage operator runtimes
|
|
194
|
+
|
|
195
|
+
```bash
|
|
196
|
+
# From the source checkout, or use the examples directory in the installed package:
|
|
197
|
+
clio-coder extensions install examples/extensions/lab-status --project
|
|
198
|
+
clio-coder extensions list --all --json
|
|
199
|
+
clio-coder extensions run lab-status dashboard
|
|
200
|
+
clio-coder extensions run lab-status dashboard --json -- /path/to/local-record.json
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
Inside an interactive session, invoke `/ext:lab-status:dashboard` or append a
|
|
204
|
+
local JSON filename. Browse `/extensions` and use
|
|
205
|
+
`/extensions reload` after a reviewed reinstall or enable. These are the canonical
|
|
206
|
+
harness routes; `/library extensions` and `/library extensions reload` are retired.
|
|
207
|
+
`/library reload` refreshes recipe resources independently and never loads runtime code.
|
|
208
|
+
|
|
209
|
+
Canonical commands use `/ext:<extension-id>:<command>`. Existing extension IDs
|
|
210
|
+
are preserved, including dots and underscores. Local command names start with
|
|
211
|
+
a lowercase letter and contain lowercase letters, digits or underscores.
|
|
212
|
+
There are no short aliases. Built-ins retain ownership; an existing prompt
|
|
213
|
+
with the same canonical spelling remains a prompt and disables that extension
|
|
214
|
+
command with a conflict diagnostic. This includes unavailable and display-only
|
|
215
|
+
prompts. Completion and dispatch share that collision projection. Avoid `ext:`
|
|
216
|
+
when authoring new prompt names. Unknown canonical commands error; escaped
|
|
217
|
+
`\/ext:...` remains ordinary model text.
|
|
218
|
+
|
|
219
|
+
`extensions run` is the explicit headless operator path. It starts only the
|
|
220
|
+
selected installed runtime, supplies `sessionId: null`, sends no synthetic
|
|
221
|
+
session observation, prints one fallback or JSON result, then disposes the
|
|
222
|
+
runtime. SIGINT/SIGTERM cancel it. A CLI invocation does not reload any other
|
|
223
|
+
running session. Ordinary `clio-coder run`, ACP sessions and native workers do
|
|
224
|
+
not start operator/UI runtimes. They retain existing admitted command tools;
|
|
225
|
+
a slash token is not permission to run an operator extension in a worker.
|
|
226
|
+
|
|
227
|
+
Installation eligibility, extension snapshot/hook generation, operator runtime
|
|
228
|
+
readiness and model tool schemas are separate facts:
|
|
229
|
+
|
|
230
|
+
- Listing says `eligible`, not that another process has activated the package.
|
|
231
|
+
The live Extensions reference reports runtime state, generation, failures,
|
|
232
|
+
available commands and current status. Tool evidence is taken from the actual
|
|
233
|
+
session registry when that host provides it. Other hosts explicitly label the
|
|
234
|
+
comparison as a runtime-startup observation, which does not prove a model
|
|
235
|
+
schema binding.
|
|
236
|
+
- Idle reload restarts every child using verified copies. During reload,
|
|
237
|
+
commands are unavailable. Reload requested during a turn, command, local
|
|
238
|
+
shell operation or modal interaction is queued to an idle boundary.
|
|
239
|
+
- The existing synchronous snapshot/hook pair still commits together. Runtime
|
|
240
|
+
staging happens first, then that pair commits, then the runtime generation
|
|
241
|
+
publishes and children acknowledge activation. Startup/handler failures are
|
|
242
|
+
reported as degraded runtime state. A rejected reload leaves no replacement
|
|
243
|
+
runtimes active; old children are already stopped and require a retry.
|
|
244
|
+
This deliberately does not promise atomic rollback of arbitrary code or
|
|
245
|
+
preserve module globals across reloads.
|
|
246
|
+
- Each command rechecks installed scope, enabled state, canonical root and
|
|
247
|
+
whole-tree digest before and after execution. A slow host tick also observes
|
|
248
|
+
revocation while idle. No timer or scan runs when there are no active runtimes
|
|
249
|
+
or pending reloads. Active runtimes receive a full admission check at a
|
|
250
|
+
30-second minimum interval, lengthened to at least 100 times the last scan
|
|
251
|
+
duration on slower filesystems. Checks may therefore be delayed on HPC/shared
|
|
252
|
+
storage. Commands and observations still verify before and after execution;
|
|
253
|
+
the slow timer is only proactive revocation detection. Once observed, old
|
|
254
|
+
requests and UI lose authority and the child is disposed. Disable/remove is
|
|
255
|
+
scoped; a disabled project copy suppresses a user copy, while project removal
|
|
256
|
+
may reveal it on reload. Installation, enable and update need explicit reload
|
|
257
|
+
to start newly eligible code.
|
|
258
|
+
- Tool schemas stay frozen. **Editing only UI in a mixed tool/runtime package
|
|
259
|
+
changes the full package digest and revokes that session's old tool calls.**
|
|
260
|
+
Reinstalling and reloading the UI cannot rebind those calls. Start a new
|
|
261
|
+
session, or keep rapidly developed UI in a separate runtime-only package.
|
|
262
|
+
Existing declarative extension hooks retain captured generations until reload;
|
|
263
|
+
they do not acquire the command tools' per-invocation digest recheck.
|
|
264
|
+
|
|
265
|
+
At most four runtimes run concurrently; further eligible packages show a limit
|
|
266
|
+
diagnostic. There are at most 32 commands, two observations and eight disposal
|
|
267
|
+
callbacks per runtime. Startup/activation each have a 5-second deadline;
|
|
268
|
+
commands default to 30 seconds and may declare `timeoutMs` from 100 through
|
|
269
|
+
300000. Observations have a 2-second deadline. Arguments are limited to 16 KiB;
|
|
270
|
+
results to 64 KiB (text 32768 characters), and protocol messages to 96 KiB and
|
|
271
|
+
128 messages per second. Panels have at most 16 sections, 32 metric items,
|
|
272
|
+
8 table columns and 100 rows per table. stdout/stderr are discarded as
|
|
273
|
+
non-protocol diagnostic streams and their combined 64 KiB lifetime cap fails
|
|
274
|
+
the runtime. Failures are bounded diagnostics, not arbitrary terminal output.
|
|
275
|
+
|
|
276
|
+
Cancellation fences the result immediately, signals the handler, allows
|
|
277
|
+
250 ms of best-effort disposal, then kills the child. Timeouts/protocol failures
|
|
278
|
+
kill it directly. Linux/macOS process groups also stop ordinary descendants;
|
|
279
|
+
Windows has direct-child termination only. A detached daemon, external job,
|
|
280
|
+
already-written file, or an unresponsive child after an ungraceful parent death
|
|
281
|
+
cannot be reclaimed by this lifecycle contract. No OS containment is claimed.
|
|
282
|
+
|
|
283
|
+
## Scientific examples
|
|
284
|
+
|
|
285
|
+
[The worked examples](../../examples/extensions/README.md) are included in the
|
|
286
|
+
npm package. `lab-status` reads a bounded local JSON experiment record and uses
|
|
287
|
+
an explicitly synthetic fixture by default. It performs no SSH, provider calls,
|
|
288
|
+
remote cluster queries or submissions. `measurements` is a separate existing
|
|
289
|
+
command-tool package that computes count, mean, extrema and sample standard
|
|
290
|
+
deviation of supplied finite numbers. Units and provenance stay caller-supplied;
|
|
291
|
+
a singleton's sample standard deviation is unavailable (`null`).
|
|
@@ -96,7 +96,8 @@ The tables above cover the per-user roots. A repository Clio works in also grows
|
|
|
96
96
|
| `.clio-coder/profile.yaml` | Operator input | Operator profile; closed enums and bounded path lists. | Yes. | Kept |
|
|
97
97
|
| `.clio-coder/fleets/*.md`, `.clio-coder/fleets/commands.yaml` | Overlay | Fleet contracts and their command registry. Adds to the fleets shipped under `src/domains/agents/fleets/`. | Yes; shipped fleets remain. | Kept |
|
|
98
98
|
| `.clio-coder/agents/*.md` | Overlay | Project agent recipes. Composes with shipped builtins and the user's `~/.config/clio-coder/agents`; a project recipe reusing a builtin id is **ignored**, not applied, with a note on stderr. | Yes; shipped agents remain. | Kept, and named |
|
|
99
|
-
| `.clio-coder/skills/**` | Overlay |
|
|
99
|
+
| `.clio-coder/skills/**` | Overlay | Loose project skills placed here by the operator, trusted as repository-local. Library installations use the managed package store below. | Yes; loose skills must be restored by the operator. | Kept, and named |
|
|
100
|
+
| `.clio-coder/plugins/<name>/`, `.clio-coder/plugins/state.json` | Operator input | Complete installed library packages of all five kinds and their scoped state. `clio-coder library install skill:<name> --project` installs here. The bundled `library/` remains the catalog source. | Use `clio-coder library remove <kind>:<name> --project` to keep package state consistent. | Kept, not named |
|
|
100
101
|
| `CLIO-CODER.md` (repository root) | Runtime state | The generated project handbook. Human-reviewable, but written by `context init`. | Yes; regenerate with `clio-coder context init`. | Kept unless `--all` |
|
|
101
102
|
| `.clio-coder/codewiki.json` | Runtime state | Structural index, schema v5. | Yes; rebuilt by `clio-coder context index`. | **Removed** |
|
|
102
103
|
| `.clio-coder/state.json` | Runtime state | Index fingerprint and freshness stamps. | Yes; forces a rebuild. | **Removed** |
|
|
@@ -110,12 +111,12 @@ The tables above cover the per-user roots. A repository Clio works in also grows
|
|
|
110
111
|
user configuration directory, not in any repository.
|
|
111
112
|
|
|
112
113
|
None of `.clio-coder/` is published by Clio's own package. The directories Clio ships
|
|
113
|
-
(`src/domains/agents/builtins/`, `src/domains/agents/fleets/`, the whole `
|
|
114
|
-
with its
|
|
114
|
+
(`src/domains/agents/builtins/`, `src/domains/agents/fleets/`, the whole `library/` catalog
|
|
115
|
+
with its registry, recipe packages and skill provenance records, `src/domains/prompts/fragments/`,
|
|
115
116
|
`src/domains/providers/models/`) are read from the installed package root; the `.clio-coder/`
|
|
116
117
|
entries above compose with them and never replace them on disk. Builtin agent recipes bind
|
|
117
118
|
skills straight out of the package catalog; the operator's own session reaches the same
|
|
118
|
-
catalog only as a marketplace, through `clio-coder
|
|
119
|
+
catalog only as a marketplace, through `clio-coder library install skill:<name>` or `/skill <name>`.
|
|
119
120
|
|
|
120
121
|
---
|
|
121
122
|
|
|
@@ -252,13 +253,12 @@ sessions; the uninstall operation below deliberately removes those roots.
|
|
|
252
253
|
|
|
253
254
|
#### Current migration contract
|
|
254
255
|
|
|
255
|
-
The
|
|
256
|
+
The source tree registers four migrations in execution order:
|
|
256
257
|
|
|
257
258
|
1. `2026-09-01-settings-v2`
|
|
258
|
-
2. `2026-09-01-
|
|
259
|
-
3. `2026-09-01-
|
|
260
|
-
4. `2026-
|
|
261
|
-
5. `2026-08-18-lmstudio-runtime-id`
|
|
259
|
+
2. `2026-09-01-clio-coder-naming`
|
|
260
|
+
3. `2026-09-01-retire-panes-knobs`
|
|
261
|
+
4. `2026-08-18-lmstudio-runtime-id`
|
|
262
262
|
|
|
263
263
|
Applied IDs are recorded in `<stateDir>/migrations.json`. An ID already in that
|
|
264
264
|
manifest is skipped, and each successful migration is recorded immediately so a
|
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
# Coding agent interoperability
|
|
2
|
+
|
|
3
|
+
> **Visual blueprint:** See the [visual reference](../html/interop_blueprint.html) in the source checkout.
|
|
4
|
+
|
|
5
|
+
Interoperability runs both ways. Inbound, Clio can discover resources held by
|
|
6
|
+
Claude Code, Codex, Antigravity CLI, GitHub Copilot CLI, and OpenCode, then adopt
|
|
7
|
+
safe text resources into the library after approval. Outbound, the same canonical
|
|
8
|
+
`library/` sources this repository ships are installable by Claude Code and
|
|
9
|
+
loadable by Codex without a converted copy. Inspection and adoption use zero
|
|
10
|
+
model tokens. Gemini, Cursor, and the shared Agent Skills convention retain their
|
|
11
|
+
existing presence detection; this inventory does not extend their capabilities.
|
|
12
|
+
|
|
13
|
+
## Outbound: Use this library from Claude Code
|
|
14
|
+
|
|
15
|
+
The repository is a standard Claude Code marketplace. `.claude-plugin/marketplace.json`
|
|
16
|
+
is generated by `pnpm run library:pin` from the pinned packages in
|
|
17
|
+
`library/registry.yaml`, so it cannot describe a package the repository does not
|
|
18
|
+
actually contain.
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
claude plugin marketplace add iowarp/clio-coder
|
|
22
|
+
claude plugin install tdd@clio-coder
|
|
23
|
+
claude plugin install materio@clio-coder
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
A local checkout or the installed npm package works the same way, because every
|
|
27
|
+
entry's source is a relative path inside the repository:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
claude plugin marketplace add ./path/to/clio-coder
|
|
31
|
+
claude plugin marketplace add "$(npm root -g)/@iowarp/clio-coder"
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
The marketplace publishes 34 entries: the 33 curated skill packages and the
|
|
35
|
+
`materio` bundle. What each entry becomes on the Claude Code side:
|
|
36
|
+
|
|
37
|
+
| Source layout | What Claude Code loads |
|
|
38
|
+
| --- | --- |
|
|
39
|
+
| `library/skills/<category>/<name>/` with a root `SKILL.md` | One skill, named by the `SKILL.md` frontmatter, with its `references/` companions |
|
|
40
|
+
| `library/plugins/materio/` with a `skills/` directory | Materio's six portable skills and nothing else |
|
|
41
|
+
|
|
42
|
+
Nothing is converted and no recipe body is duplicated. The packages carry their
|
|
43
|
+
portable Agent Plugins `plugin.json`, which Claude Code does not read; the
|
|
44
|
+
marketplace entry supplies the name, description, version, category and license
|
|
45
|
+
it shows. `claude plugin validate . --strict` passes on the generated file, so no
|
|
46
|
+
entry needs `strict: false` and no package needs a second `.claude-plugin/plugin.json`.
|
|
47
|
+
|
|
48
|
+
Materio's Clio-native agents, prompts and fleets sit at declared resource paths
|
|
49
|
+
that no peer host scans. They travel with the installed bytes and are never
|
|
50
|
+
presented as Claude-native components. `claude plugin details materio` reports
|
|
51
|
+
`Skills (6)` and `Agents (0)`.
|
|
52
|
+
|
|
53
|
+
### Not every library package is published
|
|
54
|
+
|
|
55
|
+
A library package is published only when a host would load a real skill surface
|
|
56
|
+
from it, and only when it carries nothing that host default-scans into a native
|
|
57
|
+
component. Claude Code scans a plugin root for `agents/`, `commands/`, `hooks/`,
|
|
58
|
+
`output-styles/` and `.mcp.json` without being asked, so a package that keeps
|
|
59
|
+
Clio agent recipes in a top-level `agents/` directory would have them shown as
|
|
60
|
+
native Claude agents. That is a compatibility claim nobody measured, so the
|
|
61
|
+
generator leaves the package out and `pnpm run library:pin` prints the reason.
|
|
62
|
+
|
|
63
|
+
Those packages remain valid first-class library packages, and agent-, prompt- and
|
|
64
|
+
fleet-only packages are normal contributions. They simply have no peer-host
|
|
65
|
+
projection. An author who wants one package to serve both audiences declares its
|
|
66
|
+
Clio resource roots at paths no host scans, for example `"agents": "native/agents"`,
|
|
67
|
+
and keeps a `skills/` directory or root `SKILL.md` for the portable surface.
|
|
68
|
+
|
|
69
|
+
## Outbound: Use this library from Codex
|
|
70
|
+
|
|
71
|
+
Codex scans `.agents/skills` at the repository root, in the working directory and
|
|
72
|
+
in `$HOME`, recurses into subdirectories, and follows symlinks. The repository's
|
|
73
|
+
own `.agents/skills` links straight at the canonical trees:
|
|
74
|
+
|
|
75
|
+
```text
|
|
76
|
+
.agents/skills/clio-coder -> ../../library/skills
|
|
77
|
+
.agents/skills/materio -> ../../library/plugins/materio/skills
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
A Codex session started anywhere in a clone therefore sees all 33 curated skills
|
|
81
|
+
and Materio's 6 portable skills under their canonical names, with no install step
|
|
82
|
+
and no copied `SKILL.md`. To get the same catalog in every repository, link the
|
|
83
|
+
canonical directories into your user skills root:
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
mkdir -p ~/.agents/skills
|
|
87
|
+
ln -s /path/to/clio-coder/library/skills ~/.agents/skills/clio-coder
|
|
88
|
+
ln -s /path/to/clio-coder/library/plugins/materio/skills ~/.agents/skills/materio
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
The clone convenience requires Git to materialize symbolic links. On Windows,
|
|
92
|
+
enable Git symlink support (`core.symlinks=true`) with the required OS permission,
|
|
93
|
+
or install individual skills using the following route.
|
|
94
|
+
|
|
95
|
+
To install individual skills instead, use Codex's own installer, which accepts a
|
|
96
|
+
GitHub repository path:
|
|
97
|
+
|
|
98
|
+
```text
|
|
99
|
+
$skill-installer install tdd from iowarp/clio-coder/library/skills/coding/tdd
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
Disable one without deleting it through `[[skills.config]]` in `~/.codex/config.toml`.
|
|
103
|
+
|
|
104
|
+
There is deliberately no Codex plugin marketplace here. Portable Codex plugins
|
|
105
|
+
discover only a root `skills/` directory, the standalone packages carry a root
|
|
106
|
+
`SKILL.md`, and a `.codex-plugin` overlay cannot override that while the portable
|
|
107
|
+
root `plugin.json` is present. Publishing one would claim a compatibility that
|
|
108
|
+
does not exist.
|
|
109
|
+
|
|
110
|
+
## Inspect installed hosts
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
clio-coder interop inspect
|
|
114
|
+
clio-coder interop inspect --json
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
Inspection reports binary presence, a bounded version probe (or unknown),
|
|
118
|
+
connection and ACP adapter state, and resource counts derived from the disk
|
|
119
|
+
inventory. User and current-project resources are distinguished. JSON omits
|
|
120
|
+
native source paths and declaration values, including MCP credentials.
|
|
121
|
+
A cache directory establishes available content; installation and activation
|
|
122
|
+
remain unknown unless a host's installation registry establishes them.
|
|
123
|
+
Malformed, unreadable, symbolic-link, oversized, or unsupported configurations
|
|
124
|
+
produce an unknown inventory diagnostic instead of an invented zero.
|
|
125
|
+
|
|
126
|
+
The scanner reads these configuration layouts, honoring the named host home
|
|
127
|
+
variable when present. An explicit fixture home ignores process host overrides.
|
|
128
|
+
It never traverses session history or starts a conversational agent.
|
|
129
|
+
|
|
130
|
+
| Host | User root | Project roots | Inventory and evidence commands |
|
|
131
|
+
| --- | --- | --- | --- |
|
|
132
|
+
| Claude Code | `~/.claude` (`CLAUDE_CONFIG_DIR`) | `.claude` | Skills, agents, commands, output styles, hooks, MCP (including `~/.claude.json` and project-root `.mcp.json`); installed plugin paths, versions and marketplace from `plugins/installed_plugins.json`. Evidence: `claude --version`, `claude plugin list --json`. |
|
|
133
|
+
| Codex | `~/.codex` (`CODEX_HOME`), shared `~/.agents` | `.codex`, `.agents` | Skills, TOML agents, legacy prompts, hooks, MCP, plugin cache and plugin configuration. Evidence: `codex --version`, `codex plugin list --json`. |
|
|
134
|
+
| Antigravity CLI | `~/.gemini/config` (`ANTIGRAVITY_HOME`) | `.agents` | Skills, agents, commands, plugins, import manifest, hooks, MCP. Evidence: `agy --version`, `agy plugin list`. Imported commands may already be converted into skills. |
|
|
135
|
+
| GitHub Copilot CLI | `~/.copilot` (`COPILOT_HOME`) | `.github`, `.copilot` | Skills, agents, commands, hooks, MCP, plugin directories and local directory marketplaces in `settings.json`. Remote marketplace source paths remain unknown when no local installation is found. Evidence: `copilot --help`, `copilot plugin --help`, `copilot plugin list`. |
|
|
136
|
+
| OpenCode | `~/.config/opencode` (`OPENCODE_CONFIG_DIR`, or `XDG_CONFIG_HOME/opencode`) | `.opencode` | Skills, singular/plural agent and command directories, MCP declarations and `opencode.json` at the project root, JavaScript/TypeScript plugins and tools. Evidence: `opencode --version`, `opencode agent list`. JSONC that cannot be parsed as JSON is reported unknown. |
|
|
137
|
+
|
|
138
|
+
The listing commands above were checked in disposable profiles; runtime inspection
|
|
139
|
+
uses the disk inventory and bounded version probes in disposable profiles, so
|
|
140
|
+
CLI alias or log side effects cannot change the operator's home or project. Listing status itself remains
|
|
141
|
+
unknown. In particular, Clio does not invoke OpenCode's agent listing against an
|
|
142
|
+
operator profile because host startup can import executable modules.
|
|
143
|
+
|
|
144
|
+
## Inbound: Review and adopt foreign resources
|
|
145
|
+
|
|
146
|
+
### Reviewing foreign plugin source, trust, and unsupported components
|
|
147
|
+
|
|
148
|
+
```bash
|
|
149
|
+
clio-coder interop adopt claude-code --dry-run
|
|
150
|
+
clio-coder interop adopt codex --kind skill --project
|
|
151
|
+
clio-coder interop adopt claude-code --kind plugin --user --yes
|
|
152
|
+
clio-coder interop adopt copilot --kind prompt --user
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
The host names are `claude-code`, `codex`, `antigravity`, `copilot`, and
|
|
156
|
+
`opencode`; `claude` and `agy` are accepted aliases. `--kind` selects `skill`,
|
|
157
|
+
`agent`, `prompt`, or `plugin`. The destination defaults to user scope;
|
|
158
|
+
`--project` chooses the current project's library. Destination scope does not
|
|
159
|
+
filter source scope: every matching discovered user and project resource is
|
|
160
|
+
reviewed in the plan.
|
|
161
|
+
|
|
162
|
+
The plan lists each source, destination, digest, and reason for installing or
|
|
163
|
+
skipping it. Its SHA-256 identifies the reviewed projection; the library engine
|
|
164
|
+
also records its standard full-tree integrity pin when publishing the package. `--dry-run` prints the plan and writes nothing. Otherwise Clio asks
|
|
165
|
+
for approval in a terminal. Without a terminal, the plan remains unexecuted
|
|
166
|
+
unless `--yes` was supplied. Declining installs nothing. Installation rechecks
|
|
167
|
+
the source against the reviewed content; a changed source requires a new plan.
|
|
168
|
+
Each package publishes atomically through the library engine; a multi-package
|
|
169
|
+
plan may report successful packages alongside failures.
|
|
170
|
+
|
|
171
|
+
| Resource | Adoption behavior |
|
|
172
|
+
| --- | --- |
|
|
173
|
+
| Skill | Text-only skill directory, with required name and description, packaged through the library engine. Executable, non-text, or symbolic-link companions cause a skip. Foreign audit stamps are not retained. |
|
|
174
|
+
| Prompt or command | Markdown body becomes a Clio prompt. Host execution settings and frontmatter are omitted; the description is retained. |
|
|
175
|
+
| Agent or subagent | Markdown persona or TOML `developer_instructions` becomes a Clio recipe limited to read, grep, find, and ls. Host tools, model, permissions, hooks, and skill bindings are omitted and the plan says so. |
|
|
176
|
+
| Plugin | Accepts a valid portable root `plugin.json`, or a supported `.claude-plugin/plugin.json` / `.codex-plugin/plugin.json` package. Clio adopts a data-only projection of its skills, prompts, agents, and text references. Host extension metadata, hooks, MCP, scripts, tools, fleets, and non-text files are omitted. Dependencies on removed components cause a skip. Package `requires` declarations are preserved; required packages must already be installed, active, and valid in the destination scope. Missing requirements are named in the plan, checked again after approval, and never imported automatically. |
|
|
177
|
+
| Hook, MCP server, executable module, output style | Listed as not adoptable, with a reason. Nothing is registered or executed. |
|
|
178
|
+
|
|
179
|
+
Claude-only and Codex-only plugin manifests use the same reviewed conversion as
|
|
180
|
+
`library import`. Supported Claude commands become prompts, and Claude agent
|
|
181
|
+
bindings are retained when their required skills convert in the same package.
|
|
182
|
+
Unsupported companions and host features are listed in the plan. A portable
|
|
183
|
+
package is refused when retained recipes require omitted files; for example,
|
|
184
|
+
the tested WTF-P bundle requires action JSON files outside the supported text
|
|
185
|
+
projection. Use ordinary `library install` for a reviewed portable package whose
|
|
186
|
+
complete recipe assets are required, or import supported individual resources.
|
|
187
|
+
|
|
188
|
+
Installed packages retain `{kind: "interop", host, source}` provenance and
|
|
189
|
+
`trust: "foreign"`, with the original absolute source path. Skill and prompt
|
|
190
|
+
loading keeps the existing `integrations.projectResources.trustProjectImports`
|
|
191
|
+
opt-in, including when a project resource is adopted to user scope. Approval to
|
|
192
|
+
copy a resource does not grant that trust. Same plugin id/version or matching
|
|
193
|
+
installed package content is skipped; identifier collisions are not replaced.
|
|
194
|
+
Library integrity checks, drift detection, disable, and removal apply normally.
|
|
195
|
+
To refresh a foreign source, remove the old library package and review a new adoption plan; no host files are ever
|
|
196
|
+
moved, removed, or modified.
|
|
197
|
+
|
|
198
|
+
## Inbound: Install or import an explicit foreign package (Claude Code, Codex)
|
|
199
|
+
|
|
200
|
+
Adoption above starts from what an installed host already has. To install or import an explicit Claude Code plugin or Codex package directly—whether from a local directory or a GitHub repository tree—use `clio-coder library import`:
|
|
201
|
+
|
|
202
|
+
```bash
|
|
203
|
+
clio-coder library import ./vendor/some-plugin --dry-run
|
|
204
|
+
clio-coder library import https://github.com/owner/repo/tree/main/plugins/thing --project
|
|
205
|
+
clio-coder library import ./vendor/some-plugin --format claude --yes
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
In an active session, `/library import <path-or-url>` stages and reviews that exact foreign package in the Library. When installing a Claude Code plugin or Codex package, Clio parses the vendor manifest (e.g. `.claude-plugin/plugin.json`) and presents an interactive review before any managed installation or workspace mutation occurs (staging writes temporary inspection files prior to acceptance). The review details four critical facets:
|
|
209
|
+
1. **Source and Provenance**: Displays the verified package source path or repository tree URL, format (`claude-code` or `codex`), and transport.
|
|
210
|
+
2. **Projected Declarative Resources**: Converts text skills (with markdown instructions), commands (converted into prompts), and basic agent personas into native library recipes.
|
|
211
|
+
3. **Foreign Trust Tier**: Marks the package with foreign trust (`trust: "foreign"`). Under Clio's safety model, foreign package skills and prompts—whether installed at project scope or user scope—remain untrusted and withheld from model turns until `integrations.projectResources.trustProjectImports` (`skills.trustProjectCompatRoots`) is enabled. Bound agent recipes require all referenced skills to be trusted.
|
|
212
|
+
4. **Unsupported and Omitted Components**: All executable foreign mechanisms—including MCP servers (`.mcp.json`), lifecycle hooks (`hooks/`), shell scripts (`scripts/`), and daemon runners—are explicitly omitted and listed in the review plan. They are never registered as harness tools or executed.
|
|
213
|
+
|
|
214
|
+
Cancelling the review cleans up temporary staging files without modifying managed package state or workspace files. The Library's `o` key is the separate route into the local-agent discovery surface below, which starts from what an installed host already has rather than from a source you name.
|
|
215
|
+
|
|
216
|
+
Detection is deterministic. A root `plugin.json` always takes precedence; an
|
|
217
|
+
invalid root is refused before any vendor fallback. With no root manifest, `.claude-plugin/plugin.json`
|
|
218
|
+
selects the Claude Code format and `.codex-plugin/plugin.json` selects Codex. When
|
|
219
|
+
both hidden manifests are present the import is ambiguous and `--format` is
|
|
220
|
+
required. A directory with none of the three is not importable.
|
|
221
|
+
|
|
222
|
+
Publication, content validation and the project-import trust gate are reported
|
|
223
|
+
separately. An enabled trust gate is a prerequisite for runtime admission, not
|
|
224
|
+
a claim that every recipe is available.
|
|
225
|
+
|
|
226
|
+
The same review contract as adoption applies: `--dry-run` prints the projected
|
|
227
|
+
plan and writes nothing, the plan names every converted resource, every
|
|
228
|
+
unsupported host feature and every omitted file, and the source directory is
|
|
229
|
+
never modified. Imported packages install with `trust: "foreign"` and keep
|
|
230
|
+
`{kind: "import", source, transport, format}` provenance, so they stay visibly
|
|
231
|
+
foreign in the library after installation. A skill whose instructions reference a
|
|
232
|
+
companion that was omitted is reported unsupported rather than claimed working.
|
|
233
|
+
|
|
234
|
+
## Terminal flow
|
|
235
|
+
|
|
236
|
+
Open `/interop` to inspect inventory or connect an external delegation peer.
|
|
237
|
+
Inventory detail folds behind Enter and wraps in the scrolling detail pane.
|
|
238
|
+
Select a host, press `p` for a project destination or `u` for user, and press `k`
|
|
239
|
+
to cycle the kind filter. Press `i` to review the full adoption plan, then `y`
|
|
240
|
+
to approve it or `b` to return without installing. Escape closes the overlay.
|
|
241
|
+
Connection remains a separate action: `a` connects a proposed peer and `d`
|
|
242
|
+
declines it. `/agents` browses the library's own agent recipes and is a separate
|
|
243
|
+
surface from this one.
|
|
@@ -20,7 +20,7 @@ Inside a herdr session, Clio can open panes beside itself and close them
|
|
|
20
20
|
when it quits:
|
|
21
21
|
|
|
22
22
|
- **The files pane.** A file view docked below the session. `/files` or
|
|
23
|
-
`Alt+E` opens it and moves the keyboard into it; the same key or command
|
|
23
|
+
`Alt+E` opens it and moves the keyboard into it; after Ctrl+Y returns focus to Clio, the same key or command
|
|
24
24
|
closes it. Picking a file sends it back to the composer as an `@file`
|
|
25
25
|
mention and returns the keyboard to the prompt. The engine behind it is a
|
|
26
26
|
vendored file manager, installed on request with
|
|
@@ -140,7 +140,7 @@ version, or the theme changed since, and the next open regenerates it.
|
|
|
140
140
|
| Surface | What it does |
|
|
141
141
|
| --- | --- |
|
|
142
142
|
| `/files` | Toggle the files pane: open it below the session and move the keyboard into it, or close it and return the keyboard to the composer. |
|
|
143
|
-
| `Alt+E` |
|
|
143
|
+
| `Alt+E` | Toggle from Clio focus (`clio-coder.files.toggle`; `Ctrl+G` then `e` on terminals without Alt). |
|
|
144
144
|
| `/files open` | Open the pane, or focus it when it is already open. |
|
|
145
145
|
| `/files close` | Close the pane. |
|
|
146
146
|
| `/files pick` | Borrow the pane for one selection, then close it. Outside herdr, `/files` always behaves this way. |
|
|
@@ -174,7 +174,7 @@ the draft`.
|
|
|
174
174
|
|
|
175
175
|
### What closes what
|
|
176
176
|
|
|
177
|
-
- `/files`, `Alt+E`, and `/files close` close the files pane. A pane the
|
|
177
|
+
- From Clio focus, `/files`, `Alt+E`, and `/files close` close the files pane. Yazi owns its own keys until Ctrl+Y returns the selection and focus. A pane the
|
|
178
178
|
operator closed from herdr is treated as closed the moment herdr reports
|
|
179
179
|
it, so the next toggle opens rather than trying to close a pane that is
|
|
180
180
|
not there.
|