@iowarp/clio-coder 0.4.5 → 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 +74 -0
- package/CONTRIBUTING.md +116 -38
- package/NOTICE +24 -0
- package/README.md +341 -682
- package/dist/{acp-H3CU2HBQ.js → acp-W3Y3TRHD.js} +12 -12
- package/dist/{agents-IXQQZ7BD.js → agents-J4ICNLQ3.js} +57 -56
- 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-R7KYF7N3.js → auth-X2UJUMOC.js} +25 -25
- package/dist/{builtins-CRFDQUVP.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-SE4ZKILO.js → chunk-3XE4NRLF.js} +30 -9
- package/dist/{chunk-YYB3MC65.js → chunk-4MFBBY2Z.js} +3 -3
- package/dist/{chunk-5VTJP36Q.js → chunk-4N2RZ4TO.js} +2 -2
- package/dist/{chunk-FKIOX6DS.js → chunk-4QKAITQT.js} +10 -5
- package/dist/chunk-4UHVS5T7.js +207 -0
- package/dist/{chunk-VLPTKCKT.js → chunk-5AJPUR72.js} +6 -6
- package/dist/{chunk-5CY4Q6QI.js → chunk-5EQO5NWP.js} +105 -3
- package/dist/{chunk-RXIOCVBZ.js → chunk-65BGHOUR.js} +8 -5
- package/dist/{chunk-T53XI6I7.js → chunk-6CA2BHOR.js} +2 -2
- package/dist/{chunk-HL26ADLH.js → chunk-6CB2IL4N.js} +2 -1
- package/dist/{chunk-HR3HPQ76.js → chunk-6LRLOJHQ.js} +3 -3
- package/dist/{chunk-HXHFDHB6.js → chunk-6TAATXXH.js} +6 -6
- package/dist/{chunk-WFKDPU7U.js → chunk-6YHPAAZR.js} +3 -3
- package/dist/{chunk-ZMZQEBKI.js → chunk-7EEGBKV4.js} +11 -11
- package/dist/{chunk-BS4GAMUB.js → chunk-A67NR5AT.js} +2 -2
- package/dist/{chunk-WJIMKGD6.js → chunk-BAU36233.js} +8 -8
- package/dist/{chunk-MDU3C27C.js → chunk-BO4XV5VX.js} +8 -8
- package/dist/{chunk-KF6GFW6O.js → chunk-BQQ5MXUC.js} +11 -11
- package/dist/{chunk-K6RDB7IA.js → chunk-C3G5PNUO.js} +23 -23
- package/dist/{chunk-SRZOW5L2.js → chunk-C6GEXX4L.js} +1 -1
- package/dist/{chunk-U2JOLB7O.js → chunk-CE64C5K5.js} +227 -72
- package/dist/chunk-CP3HIR5H.js +2119 -0
- package/dist/{chunk-BBV5TKE6.js → chunk-CPXGJI2A.js} +2 -2
- package/dist/{chunk-5DDOTTG4.js → chunk-CULVKYTK.js} +5 -5
- package/dist/{chunk-F34AR6O3.js → chunk-D2T66PDV.js} +6 -6
- package/dist/{chunk-NF3BK5WR.js → chunk-DACXIVVF.js} +5 -5
- package/dist/{chunk-4SVIVOMC.js → chunk-DLIYANB7.js} +20 -15
- package/dist/{chunk-E3BQTQUP.js → chunk-DO7M3LSX.js} +9 -9
- package/dist/{chunk-2QPI3TR3.js → chunk-DVJL77SO.js} +2 -2
- package/dist/chunk-EM2WNQS2.js +93 -0
- package/dist/{chunk-ODUTYZIU.js → chunk-EUEXGXXR.js} +5 -5
- package/dist/{chunk-UL36QJX6.js → chunk-EUZRMP4Y.js} +18 -16
- package/dist/{chunk-R6MAYTMS.js → chunk-G4LGUTOE.js} +4 -4
- package/dist/{chunk-CBSKDFWL.js → chunk-GEVQNST4.js} +2 -2
- package/dist/{chunk-XXBQKW32.js → chunk-GFQ7P2UF.js} +7 -7
- package/dist/{chunk-SBZX6ARC.js → chunk-GI5RRMAH.js} +14 -14
- package/dist/{chunk-KDWLXVMN.js → chunk-GVZFCJHE.js} +343 -113
- package/dist/{chunk-633EXGZA.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-KYKNBD4Y.js → chunk-IJMW64DX.js} +978 -258
- package/dist/{chunk-DIMRLNIC.js → chunk-IMOD2YPV.js} +16 -9
- package/dist/{chunk-6CDNRHWH.js → chunk-IQCNVLO6.js} +28 -8
- package/dist/{chunk-UTUNT5QL.js → chunk-ISNCCX42.js} +9 -9
- package/dist/{chunk-RLTT5GVY.js → chunk-IZYTT3CD.js} +9 -5
- package/dist/{chunk-5ZMXGW7P.js → chunk-KAFMW7WM.js} +4 -85
- package/dist/chunk-KKEYGFX4.js +915 -0
- package/dist/{chunk-HHVJNVUJ.js → chunk-KS7ETA3P.js} +2 -2
- package/dist/{chunk-UXAC2FX4.js → chunk-L3Z5ANCV.js} +7 -7
- package/dist/{chunk-EHCPSZJF.js → chunk-LBFQMYS3.js} +2 -2
- package/dist/{chunk-QEQISF75.js → chunk-LK2FN5JY.js} +1 -1
- package/dist/{chunk-URBGEOH3.js → chunk-M6Z2V6YU.js} +5 -5
- package/dist/{chunk-DRD2A54W.js → chunk-MBJO5VNZ.js} +18 -18
- package/dist/chunk-MNQN3X6Y.js +595 -0
- package/dist/{chunk-GXCCHKN6.js → chunk-MZHXENL7.js} +7 -7
- package/dist/chunk-MZNWZUJM.js +1801 -0
- package/dist/{chunk-7YJWEF2L.js → chunk-N37QC5FV.js} +5 -5
- package/dist/{chunk-WLMSOT73.js → chunk-NCCQ6DVS.js} +7 -7
- package/dist/{chunk-TZ7MFRG4.js → chunk-NO7J45X6.js} +170 -53
- package/dist/chunk-OH3YYA3B.js +15 -0
- package/dist/{chunk-22PQ4TX4.js → chunk-P4DL2LM5.js} +16 -77
- package/dist/{chunk-R6MICQYU.js → chunk-PFLOULP3.js} +4 -4
- package/dist/{chunk-MC3JSVR6.js → chunk-QJMRYTCX.js} +7 -7
- package/dist/{chunk-ILJ7DWGE.js → chunk-QKWL7SYE.js} +12 -12
- package/dist/chunk-R2CT5YDO.js +66 -0
- package/dist/chunk-RFCKPS2V.js +26 -0
- package/dist/{chunk-ONRTXOZY.js → chunk-RTLNFZMD.js} +12 -4
- package/dist/{chunk-U7H5WRG5.js → chunk-RXFPB32E.js} +8 -6
- package/dist/{chunk-S32UQ5GL.js → chunk-SEDI5K5B.js} +18 -18
- package/dist/{chunk-ICO4TQ2F.js → chunk-SELG4SUR.js} +41 -25
- package/dist/{chunk-YEJIG7LN.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-HGSLRG33.js → chunk-TLTGZTXI.js} +3 -3
- package/dist/chunk-TZ6UVP2H.js +637 -0
- package/dist/{chunk-EWD5P3GK.js → chunk-TZHN5ITX.js} +13 -41
- package/dist/{chunk-7TKWWPD7.js → chunk-U3TPUXOQ.js} +398 -253
- package/dist/{chunk-GNQRWTMY.js → chunk-UA3W4FGC.js} +6 -6
- package/dist/{chunk-O2RQ7LCK.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-I7VLWRK2.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-GVYWZNRK.js → chunk-WBVKKTUT.js} +2 -2
- package/dist/{chunk-EHOSNVVM.js → chunk-WLHX3MM5.js} +6 -2
- package/dist/{chunk-SDWNDICN.js → chunk-WN552PKN.js} +573 -316
- package/dist/{chunk-TEG3RYVZ.js → chunk-WT5TRMO4.js} +51 -26
- package/dist/{chunk-NY6IWDVU.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-FSTIBAGM.js → chunk-XZ6UFQ52.js} +11 -11
- package/dist/chunk-Y3JU5RPK.js +8 -0
- package/dist/chunk-YKRJTYNP.js +1143 -0
- package/dist/{chunk-7HBHHVCK.js → chunk-YPRSNUTC.js} +2 -2
- package/dist/{chunk-PWWSIB2A.js → chunk-ZGIGW4ZG.js} +5 -5
- package/dist/cli/index.js +34 -36
- package/dist/{clio-5I2IBFYL.js → clio-L2P7S2R2.js} +9 -9
- package/dist/{code-nav-YXIAEZVS.js → code-nav-B5LNX4KU.js} +25 -25
- package/dist/{components-TNIKXCBH.js → components-63MMQKUT.js} +6 -6
- package/dist/{config-Y2JDJ3JJ.js → config-YXARKGTX.js} +81 -77
- package/dist/configure-LMVQJ46J.js +85 -0
- package/dist/{context-QQ53HSGJ.js → context-7HJEWTTP.js} +92 -48
- package/dist/{context-S2EEC3EJ.js → context-XSZKKFBW.js} +14 -14
- package/dist/{context-P5YSEO55.js → context-YG2LZDYZ.js} +67 -64
- package/dist/{context-clear-TMEQCOTH.js → context-clear-AC5NXHM2.js} +64 -61
- 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-CNLSQN5K.js → context-working-set-F4Q4J3NS.js} +15 -12
- package/dist/{detail-5572VLBO.js → detail-H73BEF2N.js} +65 -62
- package/dist/{dispatch-runner-FRHD6P2O.js → dispatch-runner-3RY5FSJC.js} +83 -80
- package/dist/{doctor-N3LCM2LG.js → doctor-EQYJOGUG.js} +47 -32
- package/dist/{eval-BUU3ZOUZ.js → eval-4P7O6CCE.js} +114 -50
- package/dist/{evidence-DTGEN456.js → evidence-D6GUSYJW.js} +64 -61
- package/dist/{evidence-SQ5DNFEN.js → evidence-O76QF7TZ.js} +69 -65
- package/dist/{evolve-IJNUFZDS.js → evolve-H47BCETS.js} +65 -62
- package/dist/{extensions-YVRHX6ZI.js → extensions-NNL3ZOCU.js} +98 -20
- package/dist/{fleet-ZNNVSYFO.js → fleet-KMNS6NOM.js} +115 -107
- package/dist/{fleet-commands-5YE7NPJL.js → fleet-commands-DOWSYCBX.js} +15 -15
- package/dist/{fleet-decisions-3SBSCTCW.js → fleet-decisions-S3PTZV2D.js} +9 -9
- package/dist/{fleet-graph-6HHPWF5T.js → fleet-graph-F2DE2TME.js} +26 -24
- package/dist/{fleet-inspect-JEYMGCGC.js → fleet-inspect-EN2Q6IVB.js} +67 -63
- package/dist/{fleet-preflight-QRSHIIDE.js → fleet-preflight-FRLETDD3.js} +3 -3
- package/dist/{fleet-validate-4PM4GDDL.js → fleet-validate-B2XDLS57.js} +28 -29
- package/dist/{fleet-verify-NJDTHTO3.js → fleet-verify-4JKUWGJ7.js} +64 -61
- package/dist/{fleet-view-UP2BWQQY.js → fleet-view-BHJFW26B.js} +67 -63
- package/dist/{init-S3GZQ5ZF.js → init-XAT5N5YM.js} +86 -80
- package/dist/interop-FVECHFKG.js +246 -0
- package/dist/{inventory-K2OZ36YJ.js → inventory-7KFQGLCV.js} +67 -63
- 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-OQOXQGYD.js → memory-DYVTTCP6.js} +65 -62
- package/dist/{models-3IK2Y5WE.js → models-MASFJ6Y2.js} +51 -38
- package/dist/{monitor-FTJLTKCQ.js → monitor-YMP4NXJJ.js} +73 -69
- package/dist/{orchestrator-N47O7SFD.js → orchestrator-AFQRRTEI.js} +4255 -2845
- 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-65U34NG6.js → preload-5Q7VXRFJ.js} +64 -61
- package/dist/{reset-MUVQDLNL.js → reset-7NKZK7JN.js} +11 -9
- package/dist/{resources-LM76COAO.js → resources-NILSIZAT.js} +94 -38
- package/dist/{run-3VFZQ33N.js → run-BPZGEBZV.js} +131 -114
- package/dist/{share-4JUB4BL7.js → share-EZ6ERBMH.js} +31 -28
- package/dist/skills-BTVVNYVM.js +100 -0
- package/dist/{skills-eval-G6T57L7M.js → skills-eval-UY34MNK7.js} +117 -78
- package/dist/{skills-inventory-WLM46PJH.js → skills-inventory-JDHSIA7I.js} +30 -25
- package/dist/{slash-commands-GBARG3Y7.js → slash-commands-K4FNQ2AT.js} +53 -49
- package/dist/{steer-S7D7IKPU.js → steer-2B3EQGFH.js} +4 -4
- package/dist/{support-5VAEC32W.js → support-L2SOL3IE.js} +7 -7
- package/dist/{targets-N5REUETU.js → targets-44VKGFLN.js} +69 -47
- package/dist/{tasks-6BVY5YZF.js → tasks-3KODKFU7.js} +14 -14
- package/dist/{terminal-lease-57UEOJKS.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-4HD5HAIV.js → upgrade-7PMKM2JH.js} +17 -18
- package/dist/{usage-4GWM2WWP.js → usage-6EQV7EQK.js} +77 -73
- package/dist/{verifiers-GSKWKWVG.js → verifiers-JLITWSHU.js} +16 -16
- package/dist/{verify-3AS3ULCY.js → verify-T7NAEVIG.js} +13 -13
- package/dist/{web-fetch-MQN4FH3X.js → web-fetch-W4TNW4Q7.js} +4 -4
- package/dist/{wiki-generate-7BV7XWIY.js → wiki-generate-T2TJQJUA.js} +90 -84
- package/dist/{with-panes-OFTNAR4Y.js → with-panes-CHFC7HGI.js} +4 -4
- package/dist/worker/entry.js +297 -88
- 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 +36 -2
- 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 +153 -39
- 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 +186 -80
- package/docs/guide/configuration-and-targets.md +123 -28
- package/docs/guide/configuration-reference.md +36 -38
- 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 +32 -10
- package/docs/guide/glossary.md +2 -2
- package/docs/guide/harness-extensions.md +291 -0
- package/docs/guide/installation-and-lifecycle.md +53 -20
- 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 +15 -15
- package/docs/process/documentation-coverage.md +29 -2
- 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 +22 -6
- 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/ask.ts +10 -10
- package/src/cli/config-inspect.ts +1 -1
- package/src/cli/configure-editor.ts +51 -0
- package/src/cli/configure-interop.ts +1 -1
- package/src/cli/configure-oauth.ts +1 -1
- package/src/cli/configure-onboarding.ts +232 -96
- package/src/cli/configure-prompts.ts +76 -0
- package/src/cli/configure-quick.ts +274 -0
- package/src/cli/configure-target.ts +14 -2
- package/src/cli/configure.ts +415 -176
- 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/oauth-manual-input.ts +1 -1
- package/src/cli/reset.ts +2 -0
- package/src/cli/run.ts +26 -9
- package/src/cli/select.ts +35 -4
- 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/cli/upgrade.ts +2 -2
- package/src/core/bus-events.ts +5 -0
- package/src/core/config.ts +6 -1
- package/src/core/defaults.ts +34 -12
- package/src/{interactive → core}/external-editor.ts +4 -4
- 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/classify.ts +1 -1
- package/src/domains/config/keybindings.ts +156 -124
- 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/providers/probe/fingerprint.ts +13 -6
- package/src/domains/providers/probe/reasoning.ts +2 -0
- package/src/domains/providers/runtimes/common/probe-helpers.ts +23 -7
- package/src/domains/providers/runtimes/protocol/anthropic-compat.ts +7 -2
- package/src/domains/providers/runtimes/protocol/openai-compat.ts +10 -4
- 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 +68 -52
- package/src/interactive/chat-loop.ts +32 -5
- package/src/interactive/chat-panel.ts +168 -638
- package/src/interactive/chat-renderer.ts +13 -30
- package/src/interactive/clio-editor.ts +53 -21
- package/src/interactive/command-output.ts +56 -1
- package/src/interactive/dispatch-board.ts +1 -3
- package/src/interactive/editor-submit.ts +73 -59
- 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 +12 -4
- package/src/interactive/footer/notifications.ts +2 -2
- package/src/interactive/footer/widgets.ts +52 -93
- package/src/interactive/interactive-application.ts +225 -63
- package/src/interactive/interactive-event-projection.ts +2 -44
- package/src/interactive/interactive-input-runtime.ts +257 -35
- package/src/interactive/interactive-presentation.ts +71 -21
- package/src/interactive/interactive-slash-runtime.ts +40 -48
- package/src/interactive/keybinding-manager.ts +156 -79
- package/src/interactive/keyboard-owner.ts +37 -0
- package/src/interactive/layout.ts +29 -4
- 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-general-openers.ts +2 -0
- package/src/interactive/overlay-key-routing.ts +46 -47
- package/src/interactive/overlay-lifecycle.ts +31 -15
- package/src/interactive/overlay-resource-openers.ts +56 -46
- package/src/interactive/overlay-session-lifecycle.ts +1 -1
- 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 +34 -26
- 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/preview.ts +16 -0
- package/src/interactive/renderers/reference-card.ts +35 -0
- package/src/interactive/renderers/tool-execution.ts +67 -160
- package/src/interactive/renderers/worker-entry.ts +90 -42
- package/src/interactive/slash-autocomplete.ts +100 -7
- package/src/interactive/slash-commands.ts +396 -105
- package/src/interactive/slash-spec.ts +0 -1
- package/src/interactive/status/controller.ts +0 -5
- package/src/interactive/status/state-machine.ts +44 -26
- package/src/interactive/status/types.ts +3 -0
- package/src/interactive/status/verbs.ts +13 -12
- package/src/interactive/terminal-lease.ts +44 -12
- package/src/interactive/transcript-detail.ts +50 -112
- package/src/interactive/turn-queues.ts +8 -7
- package/src/interactive/turn-runtime.ts +1 -1
- package/src/interactive/view/artifacts.ts +4 -0
- package/src/interactive/view/view-overlay.ts +58 -43
- 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/presentation.ts +1 -1
- package/src/tools/registry.ts +20 -2
- package/src/tools/verify/numeric.ts +4 -4
- 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-6SYEGZI3.js +0 -433
- package/dist/chunk-CXQ37WJH.js +0 -45
- package/dist/chunk-EQEJJ53P.js +0 -399
- package/dist/chunk-KTFSFCVN.js +0 -46
- package/dist/chunk-QRFXEO6Y.js +0 -17
- package/dist/chunk-T7FDXNRU.js +0 -1257
- package/dist/chunk-U7VQ4NI4.js +0 -911
- package/dist/configure-SML6UBZ5.js +0 -55
- package/dist/interop-YOTGXFJM.js +0 -115
- package/dist/library-GJI6W6OK.js +0 -226
- package/dist/skills-S36AAJHU.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" }
|
|
@@ -174,8 +208,6 @@ type SlashCommandVariant =
|
|
|
174
208
|
| { kind: "files-usage"; reason: string }
|
|
175
209
|
| { kind: "thinking-set"; level: string }
|
|
176
210
|
| { kind: "thinking-picker" }
|
|
177
|
-
| { kind: "output-set"; verbosity: string }
|
|
178
|
-
| { kind: "output-picker" }
|
|
179
211
|
| { kind: "model" }
|
|
180
212
|
| { kind: "model-set"; pattern: string }
|
|
181
213
|
| { kind: "settings"; area?: SettingsAreaId; group?: string }
|
|
@@ -191,7 +223,12 @@ type SlashCommandVariant =
|
|
|
191
223
|
| { kind: "usage-error"; command: string; reason: string }
|
|
192
224
|
| { kind: "empty" };
|
|
193
225
|
|
|
194
|
-
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 };
|
|
195
232
|
|
|
196
233
|
export type SlashCommandKind = SlashCommand["kind"];
|
|
197
234
|
|
|
@@ -207,11 +244,6 @@ export type SetThinkingLevelResult =
|
|
|
207
244
|
| { status: "unsupported"; level: string; supported: ReadonlyArray<string> }
|
|
208
245
|
| { status: "unavailable" };
|
|
209
246
|
|
|
210
|
-
export type SetOutputVerbosityResult =
|
|
211
|
-
| { status: "applied"; verbosity: string }
|
|
212
|
-
| { status: "unsupported"; verbosity: string; supported: ReadonlyArray<string> }
|
|
213
|
-
| { status: "unavailable" };
|
|
214
|
-
|
|
215
247
|
/**
|
|
216
248
|
* What one admitted dispatch-tool call reports back to `/council`. The council
|
|
217
249
|
* itself is watched on the board and in the transcript, so success is silent;
|
|
@@ -560,12 +592,31 @@ function shareWorkerRun(runId: string | undefined, ctx: SlashCommandContext): vo
|
|
|
560
592
|
ctx.submitOperatorNote(note);
|
|
561
593
|
}
|
|
562
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
|
+
|
|
563
605
|
/**
|
|
564
606
|
* Runtime dependencies every slash-command handler may need. Every field is
|
|
565
607
|
* injected at startInteractive construction time; handlers never reach into
|
|
566
608
|
* the TUI, chat loop, or overlay module graph directly.
|
|
567
609
|
*/
|
|
568
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;
|
|
569
620
|
io: RunIo;
|
|
570
621
|
notice: (level: NoticeLevel, text: string) => void;
|
|
571
622
|
dispatch: DispatchContract;
|
|
@@ -579,6 +630,12 @@ export interface SlashCommandContext {
|
|
|
579
630
|
* the request above it. Transcript-only; the line never enters model context.
|
|
580
631
|
*/
|
|
581
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;
|
|
582
639
|
/**
|
|
583
640
|
* Put operator-authored text into the session the way typed text enters it:
|
|
584
641
|
* a user turn, persisted in the ledger, visible in the transcript. Used only
|
|
@@ -606,7 +663,7 @@ export interface SlashCommandContext {
|
|
|
606
663
|
* until the host wires a session.
|
|
607
664
|
*/
|
|
608
665
|
runContextRecall?: (ref: string) => void;
|
|
609
|
-
openSkillsHub?: (
|
|
666
|
+
openSkillsHub?: (request?: LibraryBrowseRequest) => void;
|
|
610
667
|
/**
|
|
611
668
|
* `/skill off`: drop the tool surface an activated skill armed for the
|
|
612
669
|
* session. Returns the names that were armed. Absent on a host with no
|
|
@@ -622,12 +679,13 @@ export interface SlashCommandContext {
|
|
|
622
679
|
expandPromptTemplate?: (text: string) => PromptTemplateExpansion;
|
|
623
680
|
listExtensions?: () => ReadonlyArray<InstalledExtension>;
|
|
624
681
|
/**
|
|
625
|
-
* `/
|
|
682
|
+
* `/extensions reload`: build, validate, and commit the next
|
|
626
683
|
* extension generation together with its user hooks, or report why it was
|
|
627
684
|
* refused. Absent on a host without the reload coordinator, in which case
|
|
628
685
|
* the command says so instead of pretending.
|
|
629
686
|
*/
|
|
630
687
|
reloadExtensions?: () => ExtensionReloadOutcome;
|
|
688
|
+
reloadPlugins?: () => { generation: number };
|
|
631
689
|
/** Detection report, pending proposals, and the two consent actions `/interop` drives. */
|
|
632
690
|
interop?: {
|
|
633
691
|
report: () => InteropReport | null;
|
|
@@ -728,8 +786,6 @@ export interface SlashCommandContext {
|
|
|
728
786
|
thinkingLevelChoices?: () => ReadonlyArray<{ value: string; label: string }>;
|
|
729
787
|
openThinkingPicker?: () => void;
|
|
730
788
|
/** Apply a transcript verbosity named on the command line; refused values are reported by the caller. */
|
|
731
|
-
setOutputVerbosity?: (verbosity: string) => SetOutputVerbosityResult;
|
|
732
|
-
openOutputPicker?: () => void;
|
|
733
789
|
openModel: () => void;
|
|
734
790
|
/** Live providers contract used by `/model <pattern>` to resolve directly. */
|
|
735
791
|
providers: ProvidersContract;
|
|
@@ -746,8 +802,6 @@ export interface SlashCommandContext {
|
|
|
746
802
|
openTree: () => void;
|
|
747
803
|
openMessagePicker: () => void;
|
|
748
804
|
openHelp: (query?: string) => void;
|
|
749
|
-
openAgents: () => void;
|
|
750
|
-
openPrompts: () => void;
|
|
751
805
|
openExtensions: () => void;
|
|
752
806
|
openInterop?: () => void;
|
|
753
807
|
setEditorText?: (text: string) => void;
|
|
@@ -818,7 +872,7 @@ export interface BuiltinSlashCommand {
|
|
|
818
872
|
match?(trimmed: string): SlashCommand | null;
|
|
819
873
|
fromArgs?(parsed: ParsedArgs, trimmed: string): SlashCommand;
|
|
820
874
|
/** Execute `command` against `ctx`. Called only for kinds declared in `kinds`. */
|
|
821
|
-
handle(command: SlashCommand, ctx: SlashCommandContext): void;
|
|
875
|
+
handle(command: SlashCommand, ctx: SlashCommandContext): void | "rejected";
|
|
822
876
|
}
|
|
823
877
|
|
|
824
878
|
const RUN_THINKING_LEVELS: ReadonlyArray<JobThinkingLevel> = THINKING_LEVELS;
|
|
@@ -896,6 +950,85 @@ function formatPanesStatus(status: PanesStatus): ReadonlyArray<string> {
|
|
|
896
950
|
}
|
|
897
951
|
|
|
898
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
|
+
},
|
|
899
1032
|
{
|
|
900
1033
|
name: "quit",
|
|
901
1034
|
description: "Exit Clio Coder",
|
|
@@ -924,18 +1057,22 @@ export const BUILTIN_SLASH_COMMANDS: ReadonlyArray<BuiltinSlashCommand> = [
|
|
|
924
1057
|
},
|
|
925
1058
|
{
|
|
926
1059
|
name: "skill",
|
|
927
|
-
description: "
|
|
1060
|
+
description: "Invoke a skill, or use `off` to clear its tool surface",
|
|
928
1061
|
group: "Work",
|
|
929
|
-
kinds: ["skill-
|
|
1062
|
+
kinds: ["skill-invocation", "skill-surface-clear"],
|
|
930
1063
|
args: {
|
|
931
1064
|
positionals: [
|
|
932
|
-
{ name: "name", required:
|
|
1065
|
+
{ name: "name", required: true },
|
|
933
1066
|
{ name: "task", required: false, rest: true },
|
|
934
1067
|
],
|
|
935
1068
|
},
|
|
936
1069
|
match(trimmed) {
|
|
937
1070
|
if (trimmed === "/skill") {
|
|
938
|
-
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
|
+
};
|
|
939
1076
|
}
|
|
940
1077
|
const command = parseSkillCommand(trimmed);
|
|
941
1078
|
if (!command) return null;
|
|
@@ -948,9 +1085,7 @@ export const BUILTIN_SLASH_COMMANDS: ReadonlyArray<BuiltinSlashCommand> = [
|
|
|
948
1085
|
return { kind: "skill-invocation", text: trimmed };
|
|
949
1086
|
},
|
|
950
1087
|
handle(command, ctx) {
|
|
951
|
-
if (command.kind === "skill-
|
|
952
|
-
ctx.openSkillsHub?.();
|
|
953
|
-
} else if (command.kind === "skill-invocation") {
|
|
1088
|
+
if (command.kind === "skill-invocation") {
|
|
954
1089
|
ctx.submitChat(command.text);
|
|
955
1090
|
} else if (command.kind === "skill-surface-clear") {
|
|
956
1091
|
const cleared = ctx.clearSkillSurface?.() ?? [];
|
|
@@ -962,50 +1097,153 @@ export const BUILTIN_SLASH_COMMANDS: ReadonlyArray<BuiltinSlashCommand> = [
|
|
|
962
1097
|
},
|
|
963
1098
|
},
|
|
964
1099
|
{
|
|
965
|
-
name: "
|
|
966
|
-
description: "
|
|
1100
|
+
name: "library",
|
|
1101
|
+
description: "Open the full-screen recipe library, review a package operation, or reload installed recipes",
|
|
967
1102
|
group: "Inspect",
|
|
968
1103
|
kinds: ["resources"],
|
|
969
1104
|
subcommandDescriptions: {
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
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",
|
|
974
1110
|
},
|
|
975
1111
|
args: {
|
|
976
1112
|
subcommands: {
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
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: {},
|
|
981
1130
|
},
|
|
982
1131
|
},
|
|
983
1132
|
fromArgs(parsed) {
|
|
984
|
-
if (parsed.error) return { kind: "usage-error", command: "
|
|
985
|
-
if (parsed.
|
|
986
|
-
return { kind: "
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
}
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
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" };
|
|
1001
1178
|
},
|
|
1002
1179
|
handle(command, ctx) {
|
|
1003
1180
|
if (command.kind !== "resources") return;
|
|
1004
|
-
if (command.family === "
|
|
1005
|
-
|
|
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") {
|
|
1006
1195
|
if (command.action === "reload") reloadExtensionsCommand(ctx);
|
|
1007
1196
|
else ctx.openExtensions();
|
|
1008
|
-
|
|
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();
|
|
1009
1247
|
},
|
|
1010
1248
|
},
|
|
1011
1249
|
{
|
|
@@ -1347,23 +1585,36 @@ export const BUILTIN_SLASH_COMMANDS: ReadonlyArray<BuiltinSlashCommand> = [
|
|
|
1347
1585
|
},
|
|
1348
1586
|
},
|
|
1349
1587
|
{
|
|
1350
|
-
name: "
|
|
1351
|
-
description: "
|
|
1588
|
+
name: "interop",
|
|
1589
|
+
description: "Inspect coding agents and adopt safe resources",
|
|
1352
1590
|
group: "Inspect",
|
|
1353
1591
|
kinds: ["agents"],
|
|
1354
|
-
|
|
1355
|
-
|
|
1356
|
-
|
|
1592
|
+
args: {},
|
|
1593
|
+
fromArgs(parsed) {
|
|
1594
|
+
if (parsed.error) return { kind: "usage-error", command: "interop", reason: parsed.error };
|
|
1595
|
+
return { kind: "agents", connect: true };
|
|
1596
|
+
},
|
|
1597
|
+
handle(_command, ctx) {
|
|
1598
|
+
ctx.openInterop?.();
|
|
1357
1599
|
},
|
|
1358
|
-
|
|
1600
|
+
},
|
|
1601
|
+
{
|
|
1602
|
+
name: "agents",
|
|
1603
|
+
description: "Open the Library on Agents",
|
|
1604
|
+
group: "Inspect",
|
|
1605
|
+
kinds: [],
|
|
1606
|
+
args: {},
|
|
1359
1607
|
fromArgs(parsed) {
|
|
1360
|
-
if (parsed.error)
|
|
1361
|
-
|
|
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" };
|
|
1362
1615
|
},
|
|
1363
|
-
handle(
|
|
1364
|
-
|
|
1365
|
-
if (command.connect) ctx.openInterop?.();
|
|
1366
|
-
else ctx.openAgents();
|
|
1616
|
+
handle(_command, ctx) {
|
|
1617
|
+
ctx.openSkillsHub?.({ tab: "agent" });
|
|
1367
1618
|
},
|
|
1368
1619
|
},
|
|
1369
1620
|
{
|
|
@@ -1917,35 +2168,6 @@ export const BUILTIN_SLASH_COMMANDS: ReadonlyArray<BuiltinSlashCommand> = [
|
|
|
1917
2168
|
ctx.render();
|
|
1918
2169
|
},
|
|
1919
2170
|
},
|
|
1920
|
-
{
|
|
1921
|
-
name: "output",
|
|
1922
|
-
description: "Set transcript detail to minimal, default, or verbose",
|
|
1923
|
-
group: "Configure",
|
|
1924
|
-
kinds: ["output-set", "output-picker"],
|
|
1925
|
-
args: { positionals: [{ name: "verbosity", required: false }] },
|
|
1926
|
-
fromArgs(parsed) {
|
|
1927
|
-
if (parsed.error) return { kind: "usage-error", command: "output", reason: parsed.error };
|
|
1928
|
-
const verbosity = parsed.positionals[0];
|
|
1929
|
-
return verbosity ? { kind: "output-set", verbosity } : { kind: "output-picker" };
|
|
1930
|
-
},
|
|
1931
|
-
handle(command, ctx) {
|
|
1932
|
-
if (command.kind === "output-picker") {
|
|
1933
|
-
if (ctx.openOutputPicker) ctx.openOutputPicker();
|
|
1934
|
-
else ctx.notice("error", "output picker is not wired in this session");
|
|
1935
|
-
return;
|
|
1936
|
-
}
|
|
1937
|
-
if (command.kind !== "output-set") return;
|
|
1938
|
-
const result = ctx.setOutputVerbosity?.(command.verbosity) ?? { status: "unavailable" as const };
|
|
1939
|
-
if (result.status === "applied") {
|
|
1940
|
-
ctx.notice("success", `output detail: ${result.verbosity}`);
|
|
1941
|
-
} else if (result.status === "unsupported") {
|
|
1942
|
-
ctx.notice("error", `output detail "${result.verbosity}" is not one of ${result.supported.join(", ")}`);
|
|
1943
|
-
} else {
|
|
1944
|
-
ctx.notice("error", "output detail cannot be set right now");
|
|
1945
|
-
}
|
|
1946
|
-
ctx.render();
|
|
1947
|
-
},
|
|
1948
|
-
},
|
|
1949
2171
|
{
|
|
1950
2172
|
name: "model",
|
|
1951
2173
|
description: "Open model selector or set a model",
|
|
@@ -2185,6 +2407,12 @@ export function formatExtensionReloadNotice(outcome: ExtensionReloadOutcome): [N
|
|
|
2185
2407
|
}
|
|
2186
2408
|
|
|
2187
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
|
+
}
|
|
2188
2416
|
if (!ctx.reloadExtensions) {
|
|
2189
2417
|
ctx.notice("warn", "extensions: reload is unavailable in this session; restart to pick up installed changes");
|
|
2190
2418
|
return;
|
|
@@ -2199,6 +2427,22 @@ function reloadExtensionsCommand(ctx: SlashCommandContext): void {
|
|
|
2199
2427
|
export function parseSlashCommand(input: string): SlashCommand {
|
|
2200
2428
|
const trimmed = input.trim();
|
|
2201
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
|
+
}
|
|
2438
|
+
if (/^\/output(?:\s|$)/u.test(trimmed)) {
|
|
2439
|
+
return {
|
|
2440
|
+
kind: "usage-error",
|
|
2441
|
+
command: "output",
|
|
2442
|
+
reason:
|
|
2443
|
+
"Use /help for the effective Output cycle keys, or /settings interface to save a default. Use /view for full details",
|
|
2444
|
+
};
|
|
2445
|
+
}
|
|
2202
2446
|
if (trimmed.startsWith(COMMAND_ESCAPE)) return { kind: "unknown", text: trimmed.slice(1) };
|
|
2203
2447
|
for (const entry of BUILTIN_SLASH_COMMANDS) {
|
|
2204
2448
|
const match = entry.match ? entry.match(trimmed) : matchFromSpec(entry, trimmed);
|
|
@@ -2206,7 +2450,8 @@ export function parseSlashCommand(input: string): SlashCommand {
|
|
|
2206
2450
|
}
|
|
2207
2451
|
if (trimmed.startsWith("/")) {
|
|
2208
2452
|
const token = trimmed.slice(1).split(/\s+/u)[0] ?? "";
|
|
2209
|
-
if (COMMAND_SHAPED_TOKEN.test(token)
|
|
2453
|
+
if (COMMAND_SHAPED_TOKEN.test(token) || isExtensionCommandToken(token))
|
|
2454
|
+
return { kind: "unknown-command", token, text: trimmed };
|
|
2210
2455
|
}
|
|
2211
2456
|
return { kind: "unknown", text: trimmed };
|
|
2212
2457
|
}
|
|
@@ -2234,9 +2479,49 @@ export function dispatchSlashCommand(command: SlashCommand, ctx: SlashCommandCon
|
|
|
2234
2479
|
ctx.submitChat(command.text);
|
|
2235
2480
|
return "accepted";
|
|
2236
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
|
+
}
|
|
2237
2496
|
// A template that exists and refused is not a typo. Its reason reaches the
|
|
2238
2497
|
// operator and nothing reaches the model.
|
|
2239
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
|
+
}
|
|
2240
2525
|
ctx.notice("error", refusal ? refusal.message : `/${command.token} is not a command. Type /help for the list.`);
|
|
2241
2526
|
ctx.render();
|
|
2242
2527
|
return "rejected";
|
|
@@ -2244,14 +2529,17 @@ export function dispatchSlashCommand(command: SlashCommand, ctx: SlashCommandCon
|
|
|
2244
2529
|
if (command.kind === "usage-error") {
|
|
2245
2530
|
const entry = BUILTIN_SLASH_COMMANDS.find((candidate) => candidate.name === command.command);
|
|
2246
2531
|
const usage = entry ? ` ${usageNotice(entry)}` : "";
|
|
2247
|
-
|
|
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}`);
|
|
2248
2537
|
ctx.render();
|
|
2249
2538
|
return "rejected";
|
|
2250
2539
|
}
|
|
2251
2540
|
const entry = HANDLER_BY_KIND.get(command.kind);
|
|
2252
2541
|
if (!entry) return "rejected";
|
|
2253
|
-
entry.handle(command, ctx);
|
|
2254
|
-
return "accepted";
|
|
2542
|
+
return entry.handle(command, ctx) === "rejected" ? "rejected" : "accepted";
|
|
2255
2543
|
}
|
|
2256
2544
|
|
|
2257
2545
|
export interface CommandReferenceEntry {
|
|
@@ -2275,6 +2563,7 @@ const COMMAND_ORDER = [
|
|
|
2275
2563
|
"share",
|
|
2276
2564
|
"skill",
|
|
2277
2565
|
"agents",
|
|
2566
|
+
"interop",
|
|
2278
2567
|
"tasks",
|
|
2279
2568
|
"context",
|
|
2280
2569
|
"memory",
|
|
@@ -2282,11 +2571,13 @@ const COMMAND_ORDER = [
|
|
|
2282
2571
|
"panes",
|
|
2283
2572
|
"cost",
|
|
2284
2573
|
"decisions",
|
|
2285
|
-
"
|
|
2574
|
+
"library",
|
|
2575
|
+
"skills",
|
|
2576
|
+
"prompts",
|
|
2577
|
+
"extensions",
|
|
2286
2578
|
"help",
|
|
2287
2579
|
"model",
|
|
2288
2580
|
"thinking",
|
|
2289
|
-
"output",
|
|
2290
2581
|
"settings",
|
|
2291
2582
|
"new",
|
|
2292
2583
|
"resume",
|