@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
|
@@ -12,6 +12,9 @@ import type { RunReceipt } from "../domains/dispatch/types.js";
|
|
|
12
12
|
import type { JobThinkingLevel } from "../domains/dispatch/validation.js";
|
|
13
13
|
import type { ReceiptIntegrityOutcome } from "../domains/evidence/trust-status.js";
|
|
14
14
|
import type { InstalledExtension } from "../domains/extensions/index.js";
|
|
15
|
+
import { isExtensionCommandToken } from "../domains/extensions/operator-commands.js";
|
|
16
|
+
import type { OperatorExtensionRuntime } from "../domains/extensions/operator-runtime.js";
|
|
17
|
+
import type { ExtensionOutput } from "../domains/extensions/public-api.js";
|
|
15
18
|
import type { InteropAgentId, InteropProposal, InteropReport } from "../domains/interop/index.js";
|
|
16
19
|
import {
|
|
17
20
|
PANES_PRESET_IDS,
|
|
@@ -30,6 +33,7 @@ import type {
|
|
|
30
33
|
ResourceList,
|
|
31
34
|
} from "../domains/resources/index.js";
|
|
32
35
|
import { parseSkillCommand, SKILL_SURFACE_CLEAR_ARG } from "../domains/resources/index.js";
|
|
36
|
+
import { isLibraryKind } from "../domains/resources/library-types.js";
|
|
33
37
|
import { activeDecisionRefs } from "../domains/session/decision-board.js";
|
|
34
38
|
import type { DecisionLedgerEntry } from "../domains/session/entries.js";
|
|
35
39
|
import type { ShareImportPlan } from "../domains/share/index.js";
|
|
@@ -56,7 +60,7 @@ import {
|
|
|
56
60
|
type OracleDigestSources,
|
|
57
61
|
packOracleDigest,
|
|
58
62
|
} from "./oracle.js";
|
|
59
|
-
import {
|
|
63
|
+
import { promptSourceLabel } from "./prompt-source-label.js";
|
|
60
64
|
import type { CommandArgsSpec, CommandPositionalSpec, ParsedArgs } from "./slash-spec.js";
|
|
61
65
|
import { matchFromSpec, usageLine } from "./slash-spec.js";
|
|
62
66
|
import {
|
|
@@ -85,9 +89,9 @@ import type { WorkerEntryState } from "./worker-stream.js";
|
|
|
85
89
|
* `../engine/tui.js`. Those modules share one bundle chunk with the instant
|
|
86
90
|
* shell's Stage 0 closure, and a second, disjoint reacher makes esbuild split
|
|
87
91
|
* it, which is a startup-latency regression rather than a style problem. The
|
|
88
|
-
* parse-time data tables the registry needs live in leaves for that reason
|
|
89
|
-
*
|
|
90
|
-
*
|
|
92
|
+
* parse-time data tables the registry needs live in leaves for that reason,
|
|
93
|
+
* such as `COUNCIL_SYNTHESIS_LABEL` in `./council.js`. Import from those,
|
|
94
|
+
* not from overlays that re-export them.
|
|
91
95
|
*
|
|
92
96
|
* Boundaries rule6 in `tests/boundaries/check-boundaries.ts` refuses a violation
|
|
93
97
|
* at lint time; `tests/contracts/instant-shell-import-graph.test.ts` is the
|
|
@@ -112,6 +116,24 @@ export const SETTINGS_AREA_IDS = [
|
|
|
112
116
|
] as const;
|
|
113
117
|
export type SettingsAreaId = (typeof SETTINGS_AREA_IDS)[number];
|
|
114
118
|
|
|
119
|
+
/** What `/library <verb> <ref>` asks the browser to review once it is open. */
|
|
120
|
+
export type LibraryBrowseIntent = "install" | "update" | "enable" | "disable" | "remove";
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* How a command opens the Library.
|
|
124
|
+
*
|
|
125
|
+
* A reference is a selection, never a write. `/library install <ref>` opens the
|
|
126
|
+
* browser on that row with its review armed, so the operator reads the plan
|
|
127
|
+
* that command produced before any of it lands.
|
|
128
|
+
*/
|
|
129
|
+
export interface LibraryBrowseRequest {
|
|
130
|
+
tab?: LibraryEntryKind;
|
|
131
|
+
focus?: string;
|
|
132
|
+
intent?: LibraryBrowseIntent;
|
|
133
|
+
importSource?: string;
|
|
134
|
+
scope?: "user" | "project";
|
|
135
|
+
}
|
|
136
|
+
|
|
115
137
|
type SlashCommandVariant =
|
|
116
138
|
| { kind: "quit" }
|
|
117
139
|
| { kind: "help"; query?: string }
|
|
@@ -120,8 +142,20 @@ type SlashCommandVariant =
|
|
|
120
142
|
| { kind: "context-refresh" }
|
|
121
143
|
/** `ref` is the turnId an `[evicted ...]` marker names. */
|
|
122
144
|
| { kind: "context-recall"; ref: string }
|
|
123
|
-
| {
|
|
124
|
-
|
|
145
|
+
| {
|
|
146
|
+
kind: "resources";
|
|
147
|
+
family?: "extensions" | "plugins";
|
|
148
|
+
tab?: LibraryEntryKind;
|
|
149
|
+
action?: "reload";
|
|
150
|
+
/** A package ref or resource key the browser selects on open. */
|
|
151
|
+
focus?: string;
|
|
152
|
+
/** An operation to review on that row. Nothing is written before the review. */
|
|
153
|
+
intent?: LibraryBrowseIntent;
|
|
154
|
+
/** A path or URL `/library import` asks the import surface to review. */
|
|
155
|
+
importSource?: string;
|
|
156
|
+
/** Explicit `--user`/`--project`; absent leaves the browser's own selection. */
|
|
157
|
+
scope?: "user" | "project";
|
|
158
|
+
}
|
|
125
159
|
| { kind: "skill-invocation"; text: string }
|
|
126
160
|
/** `/skill off`: drop the tool surface an activated skill armed for the session. */
|
|
127
161
|
| { kind: "skill-surface-clear" }
|
|
@@ -189,7 +223,12 @@ type SlashCommandVariant =
|
|
|
189
223
|
| { kind: "usage-error"; command: string; reason: string }
|
|
190
224
|
| { kind: "empty" };
|
|
191
225
|
|
|
192
|
-
export type SlashCommand =
|
|
226
|
+
export type SlashCommand =
|
|
227
|
+
| SlashCommandVariant
|
|
228
|
+
| { kind: "background" }
|
|
229
|
+
| { kind: "editor"; text: string }
|
|
230
|
+
| { kind: "interrupt"; text: string }
|
|
231
|
+
| { kind: "notifications-dismiss"; all: boolean };
|
|
193
232
|
|
|
194
233
|
export type SlashCommandKind = SlashCommand["kind"];
|
|
195
234
|
|
|
@@ -553,12 +592,31 @@ function shareWorkerRun(runId: string | undefined, ctx: SlashCommandContext): vo
|
|
|
553
592
|
ctx.submitOperatorNote(note);
|
|
554
593
|
}
|
|
555
594
|
|
|
595
|
+
/** What the transcript shows for a display-only prompt template. */
|
|
596
|
+
export interface PromptReferenceCard {
|
|
597
|
+
/** Command name as typed, without the slash: `materio:help`. */
|
|
598
|
+
command: string;
|
|
599
|
+
/** Where the template came from, in operator words: `plugin materio`. */
|
|
600
|
+
source: string;
|
|
601
|
+
/** The body to show, already reduced to its reference block. */
|
|
602
|
+
text: string;
|
|
603
|
+
}
|
|
604
|
+
|
|
556
605
|
/**
|
|
557
606
|
* Runtime dependencies every slash-command handler may need. Every field is
|
|
558
607
|
* injected at startInteractive construction time; handlers never reach into
|
|
559
608
|
* the TUI, chat loop, or overlay module graph directly.
|
|
560
609
|
*/
|
|
561
610
|
export interface SlashCommandContext {
|
|
611
|
+
keyboardActions?: {
|
|
612
|
+
background(): void;
|
|
613
|
+
editor(text: string): boolean;
|
|
614
|
+
interrupt(text: string): void;
|
|
615
|
+
dismiss(all: boolean): void;
|
|
616
|
+
outputLabel(): string;
|
|
617
|
+
};
|
|
618
|
+
operatorExtensions?: OperatorExtensionRuntime;
|
|
619
|
+
showExtensionOutput?: (invocation: string, output: ExtensionOutput) => void;
|
|
562
620
|
io: RunIo;
|
|
563
621
|
notice: (level: NoticeLevel, text: string) => void;
|
|
564
622
|
dispatch: DispatchContract;
|
|
@@ -572,6 +630,12 @@ export interface SlashCommandContext {
|
|
|
572
630
|
* the request above it. Transcript-only; the line never enters model context.
|
|
573
631
|
*/
|
|
574
632
|
echoOperatorCommand?: (text: string) => void;
|
|
633
|
+
/**
|
|
634
|
+
* Render a display-only prompt template as an operator card in the
|
|
635
|
+
* transcript. Transcript-only, like the echo: the host that has no chat
|
|
636
|
+
* panel leaves it unset and the card falls back to `io.stdout`.
|
|
637
|
+
*/
|
|
638
|
+
showReference?: (card: PromptReferenceCard) => void;
|
|
575
639
|
/**
|
|
576
640
|
* Put operator-authored text into the session the way typed text enters it:
|
|
577
641
|
* a user turn, persisted in the ledger, visible in the transcript. Used only
|
|
@@ -599,7 +663,7 @@ export interface SlashCommandContext {
|
|
|
599
663
|
* until the host wires a session.
|
|
600
664
|
*/
|
|
601
665
|
runContextRecall?: (ref: string) => void;
|
|
602
|
-
openSkillsHub?: (
|
|
666
|
+
openSkillsHub?: (request?: LibraryBrowseRequest) => void;
|
|
603
667
|
/**
|
|
604
668
|
* `/skill off`: drop the tool surface an activated skill armed for the
|
|
605
669
|
* session. Returns the names that were armed. Absent on a host with no
|
|
@@ -615,12 +679,13 @@ export interface SlashCommandContext {
|
|
|
615
679
|
expandPromptTemplate?: (text: string) => PromptTemplateExpansion;
|
|
616
680
|
listExtensions?: () => ReadonlyArray<InstalledExtension>;
|
|
617
681
|
/**
|
|
618
|
-
* `/
|
|
682
|
+
* `/extensions reload`: build, validate, and commit the next
|
|
619
683
|
* extension generation together with its user hooks, or report why it was
|
|
620
684
|
* refused. Absent on a host without the reload coordinator, in which case
|
|
621
685
|
* the command says so instead of pretending.
|
|
622
686
|
*/
|
|
623
687
|
reloadExtensions?: () => ExtensionReloadOutcome;
|
|
688
|
+
reloadPlugins?: () => { generation: number };
|
|
624
689
|
/** Detection report, pending proposals, and the two consent actions `/interop` drives. */
|
|
625
690
|
interop?: {
|
|
626
691
|
report: () => InteropReport | null;
|
|
@@ -737,8 +802,6 @@ export interface SlashCommandContext {
|
|
|
737
802
|
openTree: () => void;
|
|
738
803
|
openMessagePicker: () => void;
|
|
739
804
|
openHelp: (query?: string) => void;
|
|
740
|
-
openAgents: () => void;
|
|
741
|
-
openPrompts: () => void;
|
|
742
805
|
openExtensions: () => void;
|
|
743
806
|
openInterop?: () => void;
|
|
744
807
|
setEditorText?: (text: string) => void;
|
|
@@ -809,7 +872,7 @@ export interface BuiltinSlashCommand {
|
|
|
809
872
|
match?(trimmed: string): SlashCommand | null;
|
|
810
873
|
fromArgs?(parsed: ParsedArgs, trimmed: string): SlashCommand;
|
|
811
874
|
/** Execute `command` against `ctx`. Called only for kinds declared in `kinds`. */
|
|
812
|
-
handle(command: SlashCommand, ctx: SlashCommandContext): void;
|
|
875
|
+
handle(command: SlashCommand, ctx: SlashCommandContext): void | "rejected";
|
|
813
876
|
}
|
|
814
877
|
|
|
815
878
|
const RUN_THINKING_LEVELS: ReadonlyArray<JobThinkingLevel> = THINKING_LEVELS;
|
|
@@ -887,6 +950,85 @@ function formatPanesStatus(status: PanesStatus): ReadonlyArray<string> {
|
|
|
887
950
|
}
|
|
888
951
|
|
|
889
952
|
export const BUILTIN_SLASH_COMMANDS: ReadonlyArray<BuiltinSlashCommand> = [
|
|
953
|
+
{
|
|
954
|
+
name: "background",
|
|
955
|
+
description: "Detach the newest eligible attached dispatch",
|
|
956
|
+
group: "Work",
|
|
957
|
+
kinds: ["background"],
|
|
958
|
+
args: {},
|
|
959
|
+
fromArgs: fromArgsOrUsage("background", { kind: "background" }),
|
|
960
|
+
handle(_command, ctx) {
|
|
961
|
+
if (!ctx.keyboardActions) {
|
|
962
|
+
ctx.notice("warn", "Background action requires an interactive session");
|
|
963
|
+
return "rejected";
|
|
964
|
+
}
|
|
965
|
+
ctx.keyboardActions.background();
|
|
966
|
+
},
|
|
967
|
+
},
|
|
968
|
+
{
|
|
969
|
+
name: "editor",
|
|
970
|
+
description: "Edit explicit text (or an empty buffer) externally",
|
|
971
|
+
group: "Work",
|
|
972
|
+
kinds: ["editor"],
|
|
973
|
+
args: { positionals: [{ name: "text", required: false, rest: true }] },
|
|
974
|
+
match(text) {
|
|
975
|
+
const match = /^\/editor(?:\s+([\s\S]*))?$/u.exec(text);
|
|
976
|
+
return match ? { kind: "editor", text: match[1] ?? "" } : null;
|
|
977
|
+
},
|
|
978
|
+
handle(command, ctx) {
|
|
979
|
+
if (command.kind !== "editor") return;
|
|
980
|
+
if (!ctx.keyboardActions) {
|
|
981
|
+
ctx.notice("warn", "External editing requires an interactive session");
|
|
982
|
+
return "rejected";
|
|
983
|
+
}
|
|
984
|
+
if (!ctx.keyboardActions.editor(command.text)) return "rejected";
|
|
985
|
+
},
|
|
986
|
+
},
|
|
987
|
+
{
|
|
988
|
+
name: "interrupt",
|
|
989
|
+
description: "Interrupt the active run and send this text",
|
|
990
|
+
group: "Work",
|
|
991
|
+
kinds: ["interrupt"],
|
|
992
|
+
args: { positionals: [{ name: "text", required: true, rest: true }] },
|
|
993
|
+
match(text) {
|
|
994
|
+
const match = /^\/interrupt(?:\s+([\s\S]*))?$/u.exec(text);
|
|
995
|
+
return match
|
|
996
|
+
? match[1]?.trim()
|
|
997
|
+
? { kind: "interrupt", text: match[1] }
|
|
998
|
+
: { kind: "usage-error", command: "interrupt", reason: "Text is required" }
|
|
999
|
+
: null;
|
|
1000
|
+
},
|
|
1001
|
+
handle(command, ctx) {
|
|
1002
|
+
if (command.kind !== "interrupt") return;
|
|
1003
|
+
if (!ctx.keyboardActions) {
|
|
1004
|
+
ctx.notice("warn", "Interrupt requires an interactive session");
|
|
1005
|
+
return "rejected";
|
|
1006
|
+
}
|
|
1007
|
+
ctx.keyboardActions.interrupt(command.text);
|
|
1008
|
+
},
|
|
1009
|
+
},
|
|
1010
|
+
{
|
|
1011
|
+
name: "notifications",
|
|
1012
|
+
description: "Dismiss the oldest notification or explicitly dismiss all",
|
|
1013
|
+
group: "Inspect",
|
|
1014
|
+
kinds: ["notifications-dismiss"],
|
|
1015
|
+
args: { subcommands: { dismiss: { positionals: [{ name: "all", required: false }] } } },
|
|
1016
|
+
match(text) {
|
|
1017
|
+
if (!/^\/notifications(?:\s|$)/u.test(text)) return null;
|
|
1018
|
+
const match = /^\/notifications\s+dismiss(?:\s+(all))?$/u.exec(text);
|
|
1019
|
+
return match
|
|
1020
|
+
? { kind: "notifications-dismiss", all: match[1] === "all" }
|
|
1021
|
+
: { kind: "usage-error", command: "notifications", reason: "Use /notifications dismiss [all]" };
|
|
1022
|
+
},
|
|
1023
|
+
handle(command, ctx) {
|
|
1024
|
+
if (command.kind !== "notifications-dismiss") return;
|
|
1025
|
+
if (!ctx.keyboardActions) {
|
|
1026
|
+
ctx.notice("warn", "Notifications require an interactive session");
|
|
1027
|
+
return "rejected";
|
|
1028
|
+
}
|
|
1029
|
+
ctx.keyboardActions.dismiss(command.all);
|
|
1030
|
+
},
|
|
1031
|
+
},
|
|
890
1032
|
{
|
|
891
1033
|
name: "quit",
|
|
892
1034
|
description: "Exit Clio Coder",
|
|
@@ -915,18 +1057,22 @@ export const BUILTIN_SLASH_COMMANDS: ReadonlyArray<BuiltinSlashCommand> = [
|
|
|
915
1057
|
},
|
|
916
1058
|
{
|
|
917
1059
|
name: "skill",
|
|
918
|
-
description: "
|
|
1060
|
+
description: "Invoke a skill, or use `off` to clear its tool surface",
|
|
919
1061
|
group: "Work",
|
|
920
|
-
kinds: ["skill-
|
|
1062
|
+
kinds: ["skill-invocation", "skill-surface-clear"],
|
|
921
1063
|
args: {
|
|
922
1064
|
positionals: [
|
|
923
|
-
{ name: "name", required:
|
|
1065
|
+
{ name: "name", required: true },
|
|
924
1066
|
{ name: "task", required: false, rest: true },
|
|
925
1067
|
],
|
|
926
1068
|
},
|
|
927
1069
|
match(trimmed) {
|
|
928
1070
|
if (trimmed === "/skill") {
|
|
929
|
-
return {
|
|
1071
|
+
return {
|
|
1072
|
+
kind: "usage-error",
|
|
1073
|
+
command: "skill",
|
|
1074
|
+
reason: "Choose /skills to browse, /skill <name> to invoke, or /skill off to clear the active tool surface",
|
|
1075
|
+
};
|
|
930
1076
|
}
|
|
931
1077
|
const command = parseSkillCommand(trimmed);
|
|
932
1078
|
if (!command) return null;
|
|
@@ -939,9 +1085,7 @@ export const BUILTIN_SLASH_COMMANDS: ReadonlyArray<BuiltinSlashCommand> = [
|
|
|
939
1085
|
return { kind: "skill-invocation", text: trimmed };
|
|
940
1086
|
},
|
|
941
1087
|
handle(command, ctx) {
|
|
942
|
-
if (command.kind === "skill-
|
|
943
|
-
ctx.openSkillsHub?.();
|
|
944
|
-
} else if (command.kind === "skill-invocation") {
|
|
1088
|
+
if (command.kind === "skill-invocation") {
|
|
945
1089
|
ctx.submitChat(command.text);
|
|
946
1090
|
} else if (command.kind === "skill-surface-clear") {
|
|
947
1091
|
const cleared = ctx.clearSkillSurface?.() ?? [];
|
|
@@ -953,50 +1097,153 @@ export const BUILTIN_SLASH_COMMANDS: ReadonlyArray<BuiltinSlashCommand> = [
|
|
|
953
1097
|
},
|
|
954
1098
|
},
|
|
955
1099
|
{
|
|
956
|
-
name: "
|
|
957
|
-
description: "
|
|
1100
|
+
name: "library",
|
|
1101
|
+
description: "Open the full-screen recipe library, review a package operation, or reload installed recipes",
|
|
958
1102
|
group: "Inspect",
|
|
959
1103
|
kinds: ["resources"],
|
|
960
1104
|
subcommandDescriptions: {
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
1105
|
+
inspect: "Open the Library on one package or recipe",
|
|
1106
|
+
install: "Review installing one package, then apply it",
|
|
1107
|
+
remove: "Review removing one package, then apply it",
|
|
1108
|
+
import: "Review a plugin source from a path or URL",
|
|
1109
|
+
reload: "Refresh installed recipe resources in this session",
|
|
965
1110
|
},
|
|
966
1111
|
args: {
|
|
967
1112
|
subcommands: {
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
1113
|
+
inspect: {
|
|
1114
|
+
positionals: [{ name: "ref", required: true }],
|
|
1115
|
+
flags: [{ name: "--user" }, { name: "--project" }],
|
|
1116
|
+
},
|
|
1117
|
+
install: {
|
|
1118
|
+
positionals: [{ name: "ref", required: true }],
|
|
1119
|
+
flags: [{ name: "--user" }, { name: "--project" }],
|
|
1120
|
+
},
|
|
1121
|
+
remove: {
|
|
1122
|
+
positionals: [{ name: "ref", required: true }],
|
|
1123
|
+
flags: [{ name: "--user" }, { name: "--project" }],
|
|
1124
|
+
},
|
|
1125
|
+
import: {
|
|
1126
|
+
positionals: [{ name: "path-or-url", required: true }],
|
|
1127
|
+
flags: [{ name: "--user" }, { name: "--project" }],
|
|
1128
|
+
},
|
|
1129
|
+
reload: {},
|
|
972
1130
|
},
|
|
973
1131
|
},
|
|
974
1132
|
fromArgs(parsed) {
|
|
975
|
-
if (parsed.error) return { kind: "usage-error", command: "
|
|
976
|
-
if (parsed.
|
|
977
|
-
return { kind: "
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
}
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
1133
|
+
if (parsed.error) return { kind: "usage-error", command: "library", reason: parsed.error };
|
|
1134
|
+
if (parsed.flags.has("--user") && parsed.flags.has("--project"))
|
|
1135
|
+
return { kind: "usage-error", command: "library", reason: "Choose one destination: --user or --project" };
|
|
1136
|
+
const scope = parsed.flags.has("--project")
|
|
1137
|
+
? ("project" as const)
|
|
1138
|
+
: parsed.flags.has("--user")
|
|
1139
|
+
? ("user" as const)
|
|
1140
|
+
: undefined;
|
|
1141
|
+
const subcommand = parsed.subcommand;
|
|
1142
|
+
if (subcommand === "reload") return { kind: "resources", family: "plugins", action: "reload" };
|
|
1143
|
+
if (subcommand === "import") {
|
|
1144
|
+
const source = parsed.rest ?? parsed.positionals[0];
|
|
1145
|
+
if (!source)
|
|
1146
|
+
return {
|
|
1147
|
+
kind: "usage-error",
|
|
1148
|
+
command: "library",
|
|
1149
|
+
reason: "/library import needs a directory path or a source URL to review",
|
|
1150
|
+
};
|
|
1151
|
+
return { kind: "resources", tab: "plugin", importSource: source, ...(scope ? { scope } : {}) };
|
|
1152
|
+
}
|
|
1153
|
+
if (subcommand === "inspect" || subcommand === "install" || subcommand === "remove") {
|
|
1154
|
+
const ref = parsed.positionals[0];
|
|
1155
|
+
if (!ref)
|
|
1156
|
+
return {
|
|
1157
|
+
kind: "usage-error",
|
|
1158
|
+
command: "library",
|
|
1159
|
+
reason: `/library ${subcommand} needs a kind:name reference, such as plugin:materio, or a recipe name`,
|
|
1160
|
+
};
|
|
1161
|
+
const prefix = ref.split(":", 1)[0] ?? "";
|
|
1162
|
+
return {
|
|
1163
|
+
kind: "resources",
|
|
1164
|
+
tab: isLibraryKind(prefix) && ref.includes(":") ? prefix : "plugin",
|
|
1165
|
+
focus: ref,
|
|
1166
|
+
...(subcommand === "inspect" ? {} : { intent: subcommand as LibraryBrowseIntent }),
|
|
1167
|
+
...(scope ? { scope } : {}),
|
|
1168
|
+
};
|
|
1169
|
+
}
|
|
1170
|
+
if (parsed.error || parsed.positionals.length > 0)
|
|
1171
|
+
return {
|
|
1172
|
+
kind: "usage-error",
|
|
1173
|
+
command: "library",
|
|
1174
|
+
reason:
|
|
1175
|
+
"Use /library to browse, /library inspect|install|remove <ref>, /library import <path-or-url>, or /library reload; /skills, /agents and /prompts open the same browser on their category",
|
|
1176
|
+
};
|
|
1177
|
+
return { kind: "resources", tab: "plugin" };
|
|
992
1178
|
},
|
|
993
1179
|
handle(command, ctx) {
|
|
994
1180
|
if (command.kind !== "resources") return;
|
|
995
|
-
if (command.family === "
|
|
996
|
-
|
|
1181
|
+
if (command.family === "plugins") {
|
|
1182
|
+
if (!ctx.reloadPlugins)
|
|
1183
|
+
ctx.notice("warn", "library: reload is unavailable in this session; restart to refresh resources");
|
|
1184
|
+
else {
|
|
1185
|
+
try {
|
|
1186
|
+
const snapshot = ctx.reloadPlugins();
|
|
1187
|
+
ctx.notice("success", `library: generation ${snapshot.generation} committed`);
|
|
1188
|
+
} catch (error) {
|
|
1189
|
+
ctx.notice("error", `library: reload failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
1190
|
+
}
|
|
1191
|
+
}
|
|
1192
|
+
return;
|
|
1193
|
+
}
|
|
1194
|
+
if (command.family === "extensions") {
|
|
997
1195
|
if (command.action === "reload") reloadExtensionsCommand(ctx);
|
|
998
1196
|
else ctx.openExtensions();
|
|
999
|
-
|
|
1197
|
+
return;
|
|
1198
|
+
}
|
|
1199
|
+
ctx.openSkillsHub?.({
|
|
1200
|
+
...(command.tab ? { tab: command.tab } : {}),
|
|
1201
|
+
...(command.focus ? { focus: command.focus } : {}),
|
|
1202
|
+
...(command.intent ? { intent: command.intent } : {}),
|
|
1203
|
+
...(command.importSource ? { importSource: command.importSource } : {}),
|
|
1204
|
+
...(command.scope ? { scope: command.scope } : {}),
|
|
1205
|
+
});
|
|
1206
|
+
},
|
|
1207
|
+
},
|
|
1208
|
+
{
|
|
1209
|
+
name: "skills",
|
|
1210
|
+
description: "Open the Library on Skills",
|
|
1211
|
+
group: "Inspect",
|
|
1212
|
+
kinds: [],
|
|
1213
|
+
args: {},
|
|
1214
|
+
fromArgs: fromArgsOrUsage("skills", { kind: "resources", tab: "skill" }),
|
|
1215
|
+
handle(_command, ctx) {
|
|
1216
|
+
ctx.openSkillsHub?.({ tab: "skill" });
|
|
1217
|
+
},
|
|
1218
|
+
},
|
|
1219
|
+
{
|
|
1220
|
+
name: "prompts",
|
|
1221
|
+
description: "Open the Library on Prompts",
|
|
1222
|
+
group: "Inspect",
|
|
1223
|
+
kinds: [],
|
|
1224
|
+
args: {},
|
|
1225
|
+
fromArgs: fromArgsOrUsage("prompts", { kind: "resources", tab: "prompt" }),
|
|
1226
|
+
handle(_command, ctx) {
|
|
1227
|
+
ctx.openSkillsHub?.({ tab: "prompt" });
|
|
1228
|
+
},
|
|
1229
|
+
},
|
|
1230
|
+
{
|
|
1231
|
+
name: "extensions",
|
|
1232
|
+
description: "Inspect harness extensions or reload their commands, hooks and operator UI",
|
|
1233
|
+
group: "Inspect",
|
|
1234
|
+
// Harness navigation uses the shared overlay dispatcher, independently of recipe reload.
|
|
1235
|
+
kinds: [],
|
|
1236
|
+
args: { positionals: [{ name: "action", required: false, values: ["reload"] }] },
|
|
1237
|
+
fromArgs(parsed) {
|
|
1238
|
+
if (parsed.error) return { kind: "usage-error", command: "extensions", reason: parsed.error };
|
|
1239
|
+
if (parsed.positionals[0] && parsed.positionals[0] !== "reload")
|
|
1240
|
+
return { kind: "usage-error", command: "extensions", reason: "extensions accepts only reload" };
|
|
1241
|
+
return { kind: "resources", family: "extensions", ...(parsed.positionals[0] ? { action: "reload" as const } : {}) };
|
|
1242
|
+
},
|
|
1243
|
+
handle(command, ctx) {
|
|
1244
|
+
if (command.kind !== "resources" || command.family !== "extensions") return;
|
|
1245
|
+
if (command.action === "reload") reloadExtensionsCommand(ctx);
|
|
1246
|
+
else ctx.openExtensions();
|
|
1000
1247
|
},
|
|
1001
1248
|
},
|
|
1002
1249
|
{
|
|
@@ -1338,23 +1585,36 @@ export const BUILTIN_SLASH_COMMANDS: ReadonlyArray<BuiltinSlashCommand> = [
|
|
|
1338
1585
|
},
|
|
1339
1586
|
},
|
|
1340
1587
|
{
|
|
1341
|
-
name: "
|
|
1342
|
-
description: "
|
|
1588
|
+
name: "interop",
|
|
1589
|
+
description: "Inspect coding agents and adopt safe resources",
|
|
1343
1590
|
group: "Inspect",
|
|
1344
1591
|
kinds: ["agents"],
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
|
|
1592
|
+
args: {},
|
|
1593
|
+
fromArgs(parsed) {
|
|
1594
|
+
if (parsed.error) return { kind: "usage-error", command: "interop", reason: parsed.error };
|
|
1595
|
+
return { kind: "agents", connect: true };
|
|
1348
1596
|
},
|
|
1349
|
-
|
|
1597
|
+
handle(_command, ctx) {
|
|
1598
|
+
ctx.openInterop?.();
|
|
1599
|
+
},
|
|
1600
|
+
},
|
|
1601
|
+
{
|
|
1602
|
+
name: "agents",
|
|
1603
|
+
description: "Open the Library on Agents",
|
|
1604
|
+
group: "Inspect",
|
|
1605
|
+
kinds: [],
|
|
1606
|
+
args: {},
|
|
1350
1607
|
fromArgs(parsed) {
|
|
1351
|
-
if (parsed.error)
|
|
1352
|
-
|
|
1608
|
+
if (parsed.error)
|
|
1609
|
+
return {
|
|
1610
|
+
kind: "usage-error",
|
|
1611
|
+
command: "agents",
|
|
1612
|
+
reason: "Use /agents to browse recipes, or /interop to inspect another local agent's resources",
|
|
1613
|
+
};
|
|
1614
|
+
return { kind: "resources", tab: "agent" };
|
|
1353
1615
|
},
|
|
1354
|
-
handle(
|
|
1355
|
-
|
|
1356
|
-
if (command.connect) ctx.openInterop?.();
|
|
1357
|
-
else ctx.openAgents();
|
|
1616
|
+
handle(_command, ctx) {
|
|
1617
|
+
ctx.openSkillsHub?.({ tab: "agent" });
|
|
1358
1618
|
},
|
|
1359
1619
|
},
|
|
1360
1620
|
{
|
|
@@ -2147,6 +2407,12 @@ export function formatExtensionReloadNotice(outcome: ExtensionReloadOutcome): [N
|
|
|
2147
2407
|
}
|
|
2148
2408
|
|
|
2149
2409
|
function reloadExtensionsCommand(ctx: SlashCommandContext): void {
|
|
2410
|
+
if (ctx.operatorExtensions) {
|
|
2411
|
+
void ctx.operatorExtensions.reload().then((result) => {
|
|
2412
|
+
if (result.status === "deferred") ctx.notice("info", result.message);
|
|
2413
|
+
});
|
|
2414
|
+
return;
|
|
2415
|
+
}
|
|
2150
2416
|
if (!ctx.reloadExtensions) {
|
|
2151
2417
|
ctx.notice("warn", "extensions: reload is unavailable in this session; restart to pick up installed changes");
|
|
2152
2418
|
return;
|
|
@@ -2161,11 +2427,20 @@ function reloadExtensionsCommand(ctx: SlashCommandContext): void {
|
|
|
2161
2427
|
export function parseSlashCommand(input: string): SlashCommand {
|
|
2162
2428
|
const trimmed = input.trim();
|
|
2163
2429
|
if (trimmed.length === 0) return { kind: "empty" };
|
|
2430
|
+
const retiredLibrary = /^\/(resources|plugins)(?:\s|$)/u.exec(trimmed);
|
|
2431
|
+
if (retiredLibrary) {
|
|
2432
|
+
return {
|
|
2433
|
+
kind: "usage-error",
|
|
2434
|
+
command: retiredLibrary[1] ?? "library",
|
|
2435
|
+
reason: "Use /library to browse and manage recipes; use /extensions for harness extensions",
|
|
2436
|
+
};
|
|
2437
|
+
}
|
|
2164
2438
|
if (/^\/output(?:\s|$)/u.test(trimmed)) {
|
|
2165
2439
|
return {
|
|
2166
2440
|
kind: "usage-error",
|
|
2167
2441
|
command: "output",
|
|
2168
|
-
reason:
|
|
2442
|
+
reason:
|
|
2443
|
+
"Use /help for the effective Output cycle keys, or /settings interface to save a default. Use /view for full details",
|
|
2169
2444
|
};
|
|
2170
2445
|
}
|
|
2171
2446
|
if (trimmed.startsWith(COMMAND_ESCAPE)) return { kind: "unknown", text: trimmed.slice(1) };
|
|
@@ -2175,7 +2450,8 @@ export function parseSlashCommand(input: string): SlashCommand {
|
|
|
2175
2450
|
}
|
|
2176
2451
|
if (trimmed.startsWith("/")) {
|
|
2177
2452
|
const token = trimmed.slice(1).split(/\s+/u)[0] ?? "";
|
|
2178
|
-
if (COMMAND_SHAPED_TOKEN.test(token)
|
|
2453
|
+
if (COMMAND_SHAPED_TOKEN.test(token) || isExtensionCommandToken(token))
|
|
2454
|
+
return { kind: "unknown-command", token, text: trimmed };
|
|
2179
2455
|
}
|
|
2180
2456
|
return { kind: "unknown", text: trimmed };
|
|
2181
2457
|
}
|
|
@@ -2203,9 +2479,49 @@ export function dispatchSlashCommand(command: SlashCommand, ctx: SlashCommandCon
|
|
|
2203
2479
|
ctx.submitChat(command.text);
|
|
2204
2480
|
return "accepted";
|
|
2205
2481
|
}
|
|
2482
|
+
// A display-only template is answered here, for the operator, and the
|
|
2483
|
+
// model is never told it was asked: no turn, no session entry, no tokens.
|
|
2484
|
+
if (expansion?.expanded === false && expansion.display) {
|
|
2485
|
+
const { template, text } = expansion.display;
|
|
2486
|
+
const card: PromptReferenceCard = {
|
|
2487
|
+
command: template.name,
|
|
2488
|
+
source: promptSourceLabel(template.sourceInfo),
|
|
2489
|
+
text,
|
|
2490
|
+
};
|
|
2491
|
+
if (ctx.showReference) ctx.showReference(card);
|
|
2492
|
+
else ctx.io.stdout(`/${card.command} (${card.source})\n${card.text}\n`);
|
|
2493
|
+
ctx.render();
|
|
2494
|
+
return "accepted";
|
|
2495
|
+
}
|
|
2206
2496
|
// A template that exists and refused is not a typo. Its reason reaches the
|
|
2207
2497
|
// operator and nothing reaches the model.
|
|
2208
2498
|
const refusal = expansion?.expanded === false ? expansion.refusal : undefined;
|
|
2499
|
+
if (!refusal && isExtensionCommandToken(command.token) && ctx.operatorExtensions) {
|
|
2500
|
+
const runtime = ctx.operatorExtensions;
|
|
2501
|
+
const promptNames = ctx.listPrompts().items.map((prompt) => prompt.name);
|
|
2502
|
+
const row = runtime.commands(promptNames).find((row) => row.invocation === command.token);
|
|
2503
|
+
if (!row?.available) {
|
|
2504
|
+
ctx.notice("error", row?.reason ?? `/${command.token} is not an available extension command`);
|
|
2505
|
+
ctx.render();
|
|
2506
|
+
return "rejected";
|
|
2507
|
+
}
|
|
2508
|
+
const args = command.text.slice(command.token.length + 1).trim();
|
|
2509
|
+
const runLocal = ctx.runLocalOperation ?? ((operation: () => Promise<void>) => void operation());
|
|
2510
|
+
runLocal(async () => {
|
|
2511
|
+
try {
|
|
2512
|
+
const output = await runtime.invoke(
|
|
2513
|
+
command.token,
|
|
2514
|
+
args,
|
|
2515
|
+
ctx.listPrompts().items.map((prompt) => prompt.name),
|
|
2516
|
+
);
|
|
2517
|
+
if (ctx.showExtensionOutput) ctx.showExtensionOutput(command.token, output);
|
|
2518
|
+
else ctx.io.stdout(`${output.text}\n`);
|
|
2519
|
+
} catch (error) {
|
|
2520
|
+
ctx.notice("error", `${command.token}: ${error instanceof Error ? error.message : String(error)}`);
|
|
2521
|
+
}
|
|
2522
|
+
});
|
|
2523
|
+
return "accepted";
|
|
2524
|
+
}
|
|
2209
2525
|
ctx.notice("error", refusal ? refusal.message : `/${command.token} is not a command. Type /help for the list.`);
|
|
2210
2526
|
ctx.render();
|
|
2211
2527
|
return "rejected";
|
|
@@ -2213,14 +2529,17 @@ export function dispatchSlashCommand(command: SlashCommand, ctx: SlashCommandCon
|
|
|
2213
2529
|
if (command.kind === "usage-error") {
|
|
2214
2530
|
const entry = BUILTIN_SLASH_COMMANDS.find((candidate) => candidate.name === command.command);
|
|
2215
2531
|
const usage = entry ? ` ${usageNotice(entry)}` : "";
|
|
2216
|
-
|
|
2532
|
+
const reason =
|
|
2533
|
+
command.command === "output" && ctx.keyboardActions
|
|
2534
|
+
? `Use ${ctx.keyboardActions.outputLabel()} to cycle Output style, or /settings interface to save a default`
|
|
2535
|
+
: command.reason;
|
|
2536
|
+
ctx.notice("error", `${reason}.${usage}`);
|
|
2217
2537
|
ctx.render();
|
|
2218
2538
|
return "rejected";
|
|
2219
2539
|
}
|
|
2220
2540
|
const entry = HANDLER_BY_KIND.get(command.kind);
|
|
2221
2541
|
if (!entry) return "rejected";
|
|
2222
|
-
entry.handle(command, ctx);
|
|
2223
|
-
return "accepted";
|
|
2542
|
+
return entry.handle(command, ctx) === "rejected" ? "rejected" : "accepted";
|
|
2224
2543
|
}
|
|
2225
2544
|
|
|
2226
2545
|
export interface CommandReferenceEntry {
|
|
@@ -2244,6 +2563,7 @@ const COMMAND_ORDER = [
|
|
|
2244
2563
|
"share",
|
|
2245
2564
|
"skill",
|
|
2246
2565
|
"agents",
|
|
2566
|
+
"interop",
|
|
2247
2567
|
"tasks",
|
|
2248
2568
|
"context",
|
|
2249
2569
|
"memory",
|
|
@@ -2251,7 +2571,10 @@ const COMMAND_ORDER = [
|
|
|
2251
2571
|
"panes",
|
|
2252
2572
|
"cost",
|
|
2253
2573
|
"decisions",
|
|
2254
|
-
"
|
|
2574
|
+
"library",
|
|
2575
|
+
"skills",
|
|
2576
|
+
"prompts",
|
|
2577
|
+
"extensions",
|
|
2255
2578
|
"help",
|
|
2256
2579
|
"model",
|
|
2257
2580
|
"thinking",
|