@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
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
export type PluginScope = "user" | "project";
|
|
2
|
+
export type PluginResourceKind = "skills" | "prompts" | "agents" | "fleets" | "themes";
|
|
3
|
+
export type PluginComponentKind = "prompt" | "agent" | "skill" | "fleet" | "script" | "resource" | "tool";
|
|
4
|
+
export type PluginResources = Partial<Record<PluginResourceKind, string>>;
|
|
5
|
+
|
|
6
|
+
export interface PluginDiagnostic {
|
|
7
|
+
type: "warning" | "error";
|
|
8
|
+
message: string;
|
|
9
|
+
path?: string;
|
|
10
|
+
/** Machine-readable reason for writer refusals; message text is unchanged. */
|
|
11
|
+
code?: PluginDiagnosticCode;
|
|
12
|
+
/** The reviewed fact that changed, for `stale_plan`. */
|
|
13
|
+
changed?: { scope: PluginScope; id: string; fact: keyof PluginExpectedCopy; expected: unknown; observed: unknown };
|
|
14
|
+
}
|
|
15
|
+
export type PluginDiagnosticCode = "stale_plan" | "locked" | "dependents";
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* One reviewed copy fact. Every field present is rechecked inside the writer's
|
|
19
|
+
* lock before any write; a mismatch refuses with `stale_plan`.
|
|
20
|
+
*/
|
|
21
|
+
export interface PluginExpectedCopy {
|
|
22
|
+
scope: PluginScope;
|
|
23
|
+
id: string;
|
|
24
|
+
/**
|
|
25
|
+
* A full snapshot (default) also fails when a fact appears or disappears.
|
|
26
|
+
* `partial` checks only the facts listed; reserved for the legacy
|
|
27
|
+
* digest-only update path that never reviewed the other facts.
|
|
28
|
+
*/
|
|
29
|
+
partial?: boolean;
|
|
30
|
+
/** Install record present in that scope's state.json. */
|
|
31
|
+
recorded: boolean;
|
|
32
|
+
/** Observed full-tree digest, or absent. */
|
|
33
|
+
tree: "absent" | string;
|
|
34
|
+
enabled?: boolean;
|
|
35
|
+
recordedDigest?: string;
|
|
36
|
+
kind?: LibraryEntryKind;
|
|
37
|
+
trust?: PackageTrust;
|
|
38
|
+
/** Compared JSON-equal, so identical bytes with a different origin still stale a plan. */
|
|
39
|
+
origin?: PluginOrigin;
|
|
40
|
+
}
|
|
41
|
+
export interface PluginExpectedState {
|
|
42
|
+
copies: PluginExpectedCopy[];
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export interface PluginComponent {
|
|
46
|
+
kind: PluginComponentKind;
|
|
47
|
+
id: string;
|
|
48
|
+
path: string;
|
|
49
|
+
requires?: string[];
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export interface ClioPluginConfiguration {
|
|
53
|
+
manifestVersion: 1;
|
|
54
|
+
/** Absent in portable bundles means plugin. All kinds share the package lifecycle. */
|
|
55
|
+
kind?: LibraryEntryKind;
|
|
56
|
+
requires?: LibraryRequirementRef[];
|
|
57
|
+
/** Contained Suite v2 files, selected explicitly by `clio-coder eval`. */
|
|
58
|
+
evals?: Record<string, string>;
|
|
59
|
+
compatibility?: { clio?: string };
|
|
60
|
+
resources: PluginResources;
|
|
61
|
+
components: PluginComponent[];
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/** Standard identity stays canonical; `clio` is the validated runtime projection. */
|
|
65
|
+
export interface PluginManifest {
|
|
66
|
+
$schema: string;
|
|
67
|
+
name: string;
|
|
68
|
+
version?: string;
|
|
69
|
+
description?: string;
|
|
70
|
+
author?: { name?: string; email?: string; url?: string };
|
|
71
|
+
homepage?: string;
|
|
72
|
+
repository?: string;
|
|
73
|
+
license?: string;
|
|
74
|
+
keywords?: string[];
|
|
75
|
+
extensions?: Record<string, Record<string, unknown>>;
|
|
76
|
+
clio: ClioPluginConfiguration;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export interface PluginCandidate {
|
|
80
|
+
path: string;
|
|
81
|
+
manifestPath?: string;
|
|
82
|
+
manifest?: PluginManifest;
|
|
83
|
+
valid: boolean;
|
|
84
|
+
diagnostics: PluginDiagnostic[];
|
|
85
|
+
contentDigest?: string;
|
|
86
|
+
manifestDigest?: string;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/** Format of a foreign package as it was found on disk; author labels never set this. */
|
|
90
|
+
export type ForeignPackageFormat = "portable" | "claude-code" | "codex";
|
|
91
|
+
/**
|
|
92
|
+
* `interop` is a package imported from an installed local agent; `import` is an
|
|
93
|
+
* explicit source path or GitHub tree. Both always carry foreign trust.
|
|
94
|
+
*/
|
|
95
|
+
export type PluginOrigin =
|
|
96
|
+
| string
|
|
97
|
+
| { kind: "local" | "catalog" | "github"; source: string }
|
|
98
|
+
| { kind: "interop"; host: string; source: string; format?: ForeignPackageFormat; marketplace?: string }
|
|
99
|
+
| {
|
|
100
|
+
kind: "import";
|
|
101
|
+
source: string;
|
|
102
|
+
transport: "local" | "github";
|
|
103
|
+
format: ForeignPackageFormat;
|
|
104
|
+
host?: string;
|
|
105
|
+
marketplace?: string;
|
|
106
|
+
};
|
|
107
|
+
export function isForeignPluginOrigin(origin: PluginOrigin | undefined): boolean {
|
|
108
|
+
return typeof origin === "object" && (origin.kind === "interop" || origin.kind === "import");
|
|
109
|
+
}
|
|
110
|
+
export type PackageTrust = "trusted" | "foreign";
|
|
111
|
+
|
|
112
|
+
export interface PluginProvenance {
|
|
113
|
+
id: string;
|
|
114
|
+
scope: PluginScope;
|
|
115
|
+
sourcePath?: string;
|
|
116
|
+
canonicalRoot: string;
|
|
117
|
+
manifestDigest: string;
|
|
118
|
+
contentDigest: string;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
export interface InstalledPlugin {
|
|
122
|
+
id: string;
|
|
123
|
+
kind?: LibraryEntryKind;
|
|
124
|
+
trust?: PackageTrust;
|
|
125
|
+
name: string;
|
|
126
|
+
version: string;
|
|
127
|
+
description: string;
|
|
128
|
+
scope: PluginScope;
|
|
129
|
+
rootPath: string;
|
|
130
|
+
manifestPath: string;
|
|
131
|
+
enabled: boolean;
|
|
132
|
+
valid: boolean;
|
|
133
|
+
compatible: boolean;
|
|
134
|
+
effective: boolean;
|
|
135
|
+
loadable: boolean;
|
|
136
|
+
resources: PluginResources;
|
|
137
|
+
manifest?: PluginManifest;
|
|
138
|
+
provenance?: PluginProvenance;
|
|
139
|
+
observedContentDigest?: string;
|
|
140
|
+
overriddenBy?: PluginScope;
|
|
141
|
+
diagnostics: PluginDiagnostic[];
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
export interface PluginResourceRoot {
|
|
145
|
+
id: string;
|
|
146
|
+
scope: PluginScope;
|
|
147
|
+
path: string;
|
|
148
|
+
rootPath: string;
|
|
149
|
+
source: string;
|
|
150
|
+
provenance: PluginProvenance;
|
|
151
|
+
generation: number;
|
|
152
|
+
trust?: PackageTrust;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
export interface PluginListOptions {
|
|
156
|
+
cwd?: string;
|
|
157
|
+
scope?: PluginScope;
|
|
158
|
+
all?: boolean;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
export interface PluginMutationOptions extends PluginListOptions {
|
|
162
|
+
expect?: PluginExpectedState;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
export interface PluginInstallOptions extends PluginMutationOptions {
|
|
166
|
+
force?: boolean;
|
|
167
|
+
expectedDigest?: string;
|
|
168
|
+
expectedId?: string;
|
|
169
|
+
expectedVersion?: string;
|
|
170
|
+
origin?: PluginOrigin;
|
|
171
|
+
trust?: PackageTrust;
|
|
172
|
+
expectedKind?: LibraryEntryKind;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
/** One kind-aware publication seam for library and interop adapters. */
|
|
176
|
+
export interface LibraryPackageInstallInput extends Omit<PluginInstallOptions, "expectedKind"> {
|
|
177
|
+
kind: LibraryEntryKind;
|
|
178
|
+
sourcePath: string;
|
|
179
|
+
scope: PluginScope;
|
|
180
|
+
origin: PluginOrigin;
|
|
181
|
+
trust: PackageTrust;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
export interface PluginMutationResult {
|
|
185
|
+
plugin?: InstalledPlugin;
|
|
186
|
+
removed?: { id: string; scope: PluginScope; path: string };
|
|
187
|
+
recovery?: { stateBackup?: string; packageBackup?: string };
|
|
188
|
+
diagnostics: PluginDiagnostic[];
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
export type PluginInstallResult = PluginMutationResult;
|
|
192
|
+
|
|
193
|
+
export interface PluginInstallRecord {
|
|
194
|
+
kind?: LibraryEntryKind;
|
|
195
|
+
installedAt: string;
|
|
196
|
+
source: string;
|
|
197
|
+
origin?: PluginOrigin;
|
|
198
|
+
contentDigest: string;
|
|
199
|
+
trust?: PackageTrust;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
export interface PluginState {
|
|
203
|
+
version: 1;
|
|
204
|
+
disabled: string[];
|
|
205
|
+
installed: Record<string, PluginInstallRecord>;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
export interface PluginSnapshot {
|
|
209
|
+
version: 1;
|
|
210
|
+
generation: number;
|
|
211
|
+
cwd: string;
|
|
212
|
+
digest: string;
|
|
213
|
+
packages: ReadonlyArray<InstalledPlugin>;
|
|
214
|
+
resourceRoots: Readonly<Record<PluginResourceKind, ReadonlyArray<PluginResourceRoot>>>;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
import type { LibraryEntryKind, LibraryRequirementRef } from "../resources/library-types.js";
|
|
@@ -229,10 +229,17 @@ export function createPromptsBundle(
|
|
|
229
229
|
// Extension prompt and skill roots feed fragments through the
|
|
230
230
|
// resources domain; a committed generation with new content means
|
|
231
231
|
// the table must be rebuilt from the new roots.
|
|
232
|
-
|
|
232
|
+
const onResourceReload = (payload: unknown) => {
|
|
233
233
|
if ((payload as { changed?: unknown } | undefined)?.changed !== true) return;
|
|
234
234
|
reload();
|
|
235
|
-
}
|
|
235
|
+
};
|
|
236
|
+
const unsubscribe = [
|
|
237
|
+
context.bus.on(BusChannels.ExtensionsReloaded, onResourceReload),
|
|
238
|
+
context.bus.on(BusChannels.PluginsReloaded, () => reload()),
|
|
239
|
+
];
|
|
240
|
+
unsubscribeExtensionsReload = () => {
|
|
241
|
+
for (const stop of unsubscribe) stop();
|
|
242
|
+
};
|
|
236
243
|
},
|
|
237
244
|
async stop() {
|
|
238
245
|
unsubscribeContextSources?.();
|
|
@@ -7,13 +7,13 @@ description: Coordinator skill suggestion discipline; rendered only when context
|
|
|
7
7
|
# Skills
|
|
8
8
|
|
|
9
9
|
Skills are operator-activated workflows: git delivery, planning, coding
|
|
10
|
-
practice, context priming
|
|
11
|
-
context (scope="skills")
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
10
|
+
practice, context priming/handoff, research, plan stress-testing.
|
|
11
|
+
context (scope="skills") lists installed and marketplace skills; never
|
|
12
|
+
guess it or search the repository for one. When a task has one of those
|
|
13
|
+
shapes, list them, suggest the best match as /skill <name> (in order
|
|
14
|
+
when several compose), and continue without it: only the operator
|
|
15
|
+
activates or installs a skill; a [Marketplace] reminder states its
|
|
16
|
+
own offer options. When the operator names a skill or asks how it
|
|
17
|
+
works, answer from it. If nothing fits, suggest none. context
|
|
18
|
+
(scope="library") is the read-only catalog of recipes and installable
|
|
19
|
+
packages; it activates nothing.
|
|
@@ -3,11 +3,15 @@ export interface NativeRuntimeFingerprint {
|
|
|
3
3
|
displayName: string;
|
|
4
4
|
}
|
|
5
5
|
|
|
6
|
-
async function fetchWithTimeout(
|
|
6
|
+
async function fetchWithTimeout(
|
|
7
|
+
url: string,
|
|
8
|
+
timeoutMs: number,
|
|
9
|
+
headers: Record<string, string>,
|
|
10
|
+
): Promise<Response | null> {
|
|
7
11
|
const controller = new AbortController();
|
|
8
12
|
const timer = setTimeout(() => controller.abort(), timeoutMs);
|
|
9
13
|
try {
|
|
10
|
-
return await fetch(url, { signal: controller.signal });
|
|
14
|
+
return await fetch(url, { signal: controller.signal, headers });
|
|
11
15
|
} catch {
|
|
12
16
|
return null;
|
|
13
17
|
} finally {
|
|
@@ -22,10 +26,13 @@ async function fetchWithTimeout(url: string, timeoutMs: number): Promise<Respons
|
|
|
22
26
|
* by doctor + configure wizard to steer users onto native runtimes for
|
|
23
27
|
* resident-model lifecycle.
|
|
24
28
|
*/
|
|
25
|
-
export async function fingerprintNativeRuntime(
|
|
29
|
+
export async function fingerprintNativeRuntime(
|
|
30
|
+
baseUrl: string,
|
|
31
|
+
headers: Record<string, string> = {},
|
|
32
|
+
): Promise<NativeRuntimeFingerprint | null> {
|
|
26
33
|
const normalized = baseUrl.replace(/^ws:/u, "http:").replace(/^wss:/u, "https:");
|
|
27
34
|
const trimmed = normalized.endsWith("/") ? normalized.slice(0, -1) : normalized;
|
|
28
|
-
const greeting = await fetchWithTimeout(`${trimmed}/lmstudio-greeting`, 750);
|
|
35
|
+
const greeting = await fetchWithTimeout(`${trimmed}/lmstudio-greeting`, 750, headers);
|
|
29
36
|
if (greeting?.ok) {
|
|
30
37
|
try {
|
|
31
38
|
const data = (await greeting.json()) as { lmstudio?: unknown };
|
|
@@ -34,7 +41,7 @@ export async function fingerprintNativeRuntime(baseUrl: string): Promise<NativeR
|
|
|
34
41
|
// The exact JSON body is the fingerprint.
|
|
35
42
|
}
|
|
36
43
|
}
|
|
37
|
-
const lmStudioV0 = await fetchWithTimeout(`${trimmed}/api/v0/models`, 750);
|
|
44
|
+
const lmStudioV0 = await fetchWithTimeout(`${trimmed}/api/v0/models`, 750, headers);
|
|
38
45
|
if (lmStudioV0?.ok) {
|
|
39
46
|
try {
|
|
40
47
|
const data = (await lmStudioV0.json()) as { data?: unknown };
|
|
@@ -48,7 +55,7 @@ export async function fingerprintNativeRuntime(baseUrl: string): Promise<NativeR
|
|
|
48
55
|
// A malformed v0 body is not an LM Studio fingerprint.
|
|
49
56
|
}
|
|
50
57
|
}
|
|
51
|
-
const ollama = await fetchWithTimeout(`${trimmed}/api/version`, 750);
|
|
58
|
+
const ollama = await fetchWithTimeout(`${trimmed}/api/version`, 750, headers);
|
|
52
59
|
if (ollama?.ok) {
|
|
53
60
|
try {
|
|
54
61
|
const data = (await ollama.json()) as { version?: unknown };
|
|
@@ -19,6 +19,7 @@ export interface ProbeReasoningOptions {
|
|
|
19
19
|
modelId: string;
|
|
20
20
|
timeoutMs: number;
|
|
21
21
|
apiKey?: string;
|
|
22
|
+
headers?: Record<string, string>;
|
|
22
23
|
signal?: AbortSignal;
|
|
23
24
|
}
|
|
24
25
|
|
|
@@ -72,6 +73,7 @@ export async function probeOpenAICompatReasoning(opts: ProbeReasoningOptions): P
|
|
|
72
73
|
|
|
73
74
|
const headers: Record<string, string> = { "content-type": "application/json" };
|
|
74
75
|
if (opts.apiKey && opts.apiKey.length > 0) headers.authorization = `Bearer ${opts.apiKey}`;
|
|
76
|
+
Object.assign(headers, opts.headers);
|
|
75
77
|
|
|
76
78
|
const body = JSON.stringify({
|
|
77
79
|
model: opts.modelId,
|
|
@@ -8,13 +8,27 @@ export interface OpenAIModelsResponse {
|
|
|
8
8
|
data?: Array<Record<string, unknown> & { id?: unknown; status?: unknown }>;
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
function bearerHeaders(ctx: ProbeContext): Record<string, string> {
|
|
12
|
+
return ctx.authToken ? { Authorization: `Bearer ${ctx.authToken}` } : {};
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export async function probeUrl(
|
|
16
|
+
url: string,
|
|
17
|
+
ctx: ProbeContext,
|
|
18
|
+
method: "GET" | "HEAD" = "GET",
|
|
19
|
+
headers: Record<string, string> = bearerHeaders(ctx),
|
|
20
|
+
): Promise<ProbeResult> {
|
|
21
|
+
const base = { url, timeoutMs: ctx.httpTimeoutMs, method, headers } as const;
|
|
13
22
|
return ctx.signal ? probeHttp({ ...base, signal: ctx.signal }) : probeHttp(base);
|
|
14
23
|
}
|
|
15
24
|
|
|
16
|
-
export async function probeOpenAIModels(
|
|
17
|
-
|
|
25
|
+
export async function probeOpenAIModels(
|
|
26
|
+
base: string,
|
|
27
|
+
ctx: ProbeContext,
|
|
28
|
+
modelsPath = "/v1/models",
|
|
29
|
+
headers: Record<string, string> = bearerHeaders(ctx),
|
|
30
|
+
): Promise<string[]> {
|
|
31
|
+
return (await probeOpenAIModelCatalog(base, ctx, modelsPath, headers)).models;
|
|
18
32
|
}
|
|
19
33
|
|
|
20
34
|
export interface OpenAIModelCatalogProbe {
|
|
@@ -38,11 +52,12 @@ async function probeModelDetailRows(
|
|
|
38
52
|
base: string,
|
|
39
53
|
ctx: ProbeContext,
|
|
40
54
|
modelsPath: string,
|
|
55
|
+
headers: Record<string, string>,
|
|
41
56
|
): Promise<Map<string, Record<string, unknown>>> {
|
|
42
57
|
const rows = new Map<string, Record<string, unknown>>();
|
|
43
58
|
for (const detailPath of OPENAI_COMPAT_DETAIL_PATHS) {
|
|
44
59
|
if (detailPath === modelsPath) continue;
|
|
45
|
-
const opts = { url: `${base}${detailPath}`, timeoutMs: ctx.httpTimeoutMs } as const;
|
|
60
|
+
const opts = { url: `${base}${detailPath}`, timeoutMs: ctx.httpTimeoutMs, headers } as const;
|
|
46
61
|
const result = await (ctx.signal
|
|
47
62
|
? probeJson<OpenAIModelsResponse>({ ...opts, signal: ctx.signal })
|
|
48
63
|
: probeJson<OpenAIModelsResponse>(opts));
|
|
@@ -60,13 +75,14 @@ export async function probeOpenAIModelCatalog(
|
|
|
60
75
|
base: string,
|
|
61
76
|
ctx: ProbeContext,
|
|
62
77
|
modelsPath = "/v1/models",
|
|
78
|
+
headers: Record<string, string> = bearerHeaders(ctx),
|
|
63
79
|
): Promise<OpenAIModelCatalogProbe> {
|
|
64
|
-
const opts = { url: `${base}${modelsPath}`, timeoutMs: ctx.httpTimeoutMs } as const;
|
|
80
|
+
const opts = { url: `${base}${modelsPath}`, timeoutMs: ctx.httpTimeoutMs, headers } as const;
|
|
65
81
|
const result = await (ctx.signal
|
|
66
82
|
? probeJson<OpenAIModelsResponse>({ ...opts, signal: ctx.signal })
|
|
67
83
|
: probeJson<OpenAIModelsResponse>(opts));
|
|
68
84
|
if (!result.ok || !result.data?.data) return { models: [], modelCapabilities: {}, modelStates: {} };
|
|
69
|
-
const detail = await probeModelDetailRows(base, ctx, modelsPath);
|
|
85
|
+
const detail = await probeModelDetailRows(base, ctx, modelsPath, headers);
|
|
70
86
|
const models: string[] = [];
|
|
71
87
|
const modelCapabilities: Record<string, Partial<CapabilityFlags>> = {};
|
|
72
88
|
const modelStates: Record<string, ProbeModelStatus> = {};
|
|
@@ -49,6 +49,11 @@ function synthesizeAnthropicCompatModel(input: AnthropicCompatSynthesisInput): M
|
|
|
49
49
|
export function makeAnthropicCompatRuntime(spec: AnthropicCompatSpec): RuntimeDescriptor {
|
|
50
50
|
const messagesPath = spec.messagesPath ?? "/v1/messages";
|
|
51
51
|
const modelsPath = spec.modelsPath ?? "/v1/models";
|
|
52
|
+
const headers = (target: TargetDescriptor, ctx: ProbeContext): Record<string, string> => ({
|
|
53
|
+
"anthropic-version": "2023-06-01",
|
|
54
|
+
...(ctx.authToken ? { "x-api-key": ctx.authToken } : {}),
|
|
55
|
+
...target.auth?.headers,
|
|
56
|
+
});
|
|
52
57
|
return {
|
|
53
58
|
id: spec.id,
|
|
54
59
|
displayName: spec.displayName,
|
|
@@ -61,12 +66,12 @@ export function makeAnthropicCompatRuntime(spec: AnthropicCompatSpec): RuntimeDe
|
|
|
61
66
|
async probe(target: TargetDescriptor, ctx: ProbeContext): Promise<ProbeResult> {
|
|
62
67
|
const base = targetBaseUrl(target);
|
|
63
68
|
if (!base) return { ok: false, error: "target has no url" };
|
|
64
|
-
return probeUrl(`${base}${messagesPath}`, ctx, "HEAD");
|
|
69
|
+
return probeUrl(`${base}${messagesPath}`, ctx, "HEAD", headers(target, ctx));
|
|
65
70
|
},
|
|
66
71
|
async probeModels(target: TargetDescriptor, ctx: ProbeContext): Promise<string[]> {
|
|
67
72
|
const base = targetBaseUrl(target);
|
|
68
73
|
if (!base) return [];
|
|
69
|
-
return probeOpenAIModels(base, ctx, modelsPath);
|
|
74
|
+
return probeOpenAIModels(base, ctx, modelsPath, headers(target, ctx));
|
|
70
75
|
},
|
|
71
76
|
synthesizeModel(target: TargetDescriptor, wireModelId: string, kb: KnowledgeBaseHit | null): Model<Api> {
|
|
72
77
|
return synthesizeAnthropicCompatModel({
|
|
@@ -61,6 +61,10 @@ export function makeOpenAICompatRuntime(spec: OpenAICompatSpec): RuntimeDescript
|
|
|
61
61
|
// root and a target naming the `/v1` mount point has to be reduced to it. An
|
|
62
62
|
// `asIs` spec sends the URL verbatim, so it keeps whatever the user typed.
|
|
63
63
|
const probeBase = asIs ? targetBaseUrl : targetRootUrl;
|
|
64
|
+
const headers = (target: TargetDescriptor, ctx: ProbeContext): Record<string, string> => ({
|
|
65
|
+
...(ctx.authToken ? { Authorization: `Bearer ${ctx.authToken}` } : {}),
|
|
66
|
+
...target.auth?.headers,
|
|
67
|
+
});
|
|
64
68
|
return {
|
|
65
69
|
id: spec.id,
|
|
66
70
|
displayName: spec.displayName,
|
|
@@ -72,9 +76,9 @@ export function makeOpenAICompatRuntime(spec: OpenAICompatSpec): RuntimeDescript
|
|
|
72
76
|
async probe(target: TargetDescriptor, ctx: ProbeContext): Promise<ProbeResult> {
|
|
73
77
|
const base = probeBase(target);
|
|
74
78
|
if (!base) return { ok: false, error: "target has no url" };
|
|
75
|
-
const health = await probeUrl(`${base}${healthPath}`, ctx);
|
|
79
|
+
const health = await probeUrl(`${base}${healthPath}`, ctx, "GET", headers(target, ctx));
|
|
76
80
|
if (!health.ok) return health;
|
|
77
|
-
const catalog = await probeOpenAIModelCatalog(base, ctx, modelsPath);
|
|
81
|
+
const catalog = await probeOpenAIModelCatalog(base, ctx, modelsPath, headers(target, ctx));
|
|
78
82
|
const result: ProbeResult = { ...health };
|
|
79
83
|
if (catalog.models.length > 0) result.models = catalog.models;
|
|
80
84
|
if (Object.keys(catalog.modelStates).length > 0) result.modelStates = catalog.modelStates;
|
|
@@ -92,19 +96,21 @@ export function makeOpenAICompatRuntime(spec: OpenAICompatSpec): RuntimeDescript
|
|
|
92
96
|
async probeModels(target: TargetDescriptor, ctx: ProbeContext): Promise<string[]> {
|
|
93
97
|
const base = probeBase(target);
|
|
94
98
|
if (!base) return [];
|
|
95
|
-
return probeOpenAIModels(base, ctx, modelsPath);
|
|
99
|
+
return probeOpenAIModels(base, ctx, modelsPath, headers(target, ctx));
|
|
96
100
|
},
|
|
97
101
|
async probeReasoning(target: TargetDescriptor, modelId: string, ctx: ProbeContext): Promise<ReasoningProbeResult> {
|
|
98
102
|
const base = probeBase(target);
|
|
99
103
|
if (!base) return { reasoning: false, latencyMs: 0, error: "target has no url" };
|
|
100
104
|
const apiKeyEnv = target.auth?.apiKeyEnvVar;
|
|
101
|
-
const apiKey =
|
|
105
|
+
const apiKey =
|
|
106
|
+
ctx.authToken ?? (apiKeyEnv && ctx.credentialsPresent.has(apiKeyEnv) ? process.env[apiKeyEnv] : undefined);
|
|
102
107
|
const probeOpts: Parameters<typeof probeOpenAICompatReasoning>[0] = {
|
|
103
108
|
baseUrl: base,
|
|
104
109
|
modelId,
|
|
105
110
|
timeoutMs: Math.max(ctx.httpTimeoutMs, 8000),
|
|
106
111
|
};
|
|
107
112
|
if (apiKey) probeOpts.apiKey = apiKey;
|
|
113
|
+
if (target.auth?.headers) probeOpts.headers = target.auth.headers;
|
|
108
114
|
if (ctx.signal) probeOpts.signal = ctx.signal;
|
|
109
115
|
return probeOpenAICompatReasoning(probeOpts);
|
|
110
116
|
},
|
|
@@ -2,13 +2,14 @@ import { type Dirent, existsSync, readdirSync, statSync } from "node:fs";
|
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import { parse as parseYaml } from "yaml";
|
|
4
4
|
import { clioConfigDir } from "../../core/xdg.js";
|
|
5
|
-
import { type
|
|
5
|
+
import { enabledPluginResourceRoots, type PluginResourceKind } from "../plugins/index.js";
|
|
6
6
|
import type { ResourceDiagnostic, ResourceScope, ResourceSourceInfo } from "./collision.js";
|
|
7
7
|
|
|
8
8
|
export interface ResourceRoot {
|
|
9
9
|
path: string;
|
|
10
|
-
/** Package root for safely resolving
|
|
10
|
+
/** Package root for safely resolving package-relative prompt references. */
|
|
11
11
|
rootPath?: string;
|
|
12
|
+
plugin?: boolean;
|
|
12
13
|
scope: ResourceScope;
|
|
13
14
|
source?: string;
|
|
14
15
|
/** Collision rank, higher wins. See {@link ResourceSourceInfo.precedence}. */
|
|
@@ -23,7 +24,7 @@ export interface ResourceRoot {
|
|
|
23
24
|
* roots exactly the way a foreign skill root does.
|
|
24
25
|
*/
|
|
25
26
|
export const COMPAT_RESOURCE_PRECEDENCE = {
|
|
26
|
-
|
|
27
|
+
package: 10,
|
|
27
28
|
userCompat: 20,
|
|
28
29
|
user: 30,
|
|
29
30
|
projectCompat: 40,
|
|
@@ -42,14 +43,16 @@ export type FrontmatterSplitResult =
|
|
|
42
43
|
body: string;
|
|
43
44
|
};
|
|
44
45
|
|
|
45
|
-
export function defaultScopedResourceRoots(kind:
|
|
46
|
+
export function defaultScopedResourceRoots(kind: PluginResourceKind, cwd: string): ResourceRoot[] {
|
|
46
47
|
return [
|
|
47
|
-
...
|
|
48
|
+
...enabledPluginResourceRoots(kind, cwd).map((root) => ({
|
|
48
49
|
path: root.path,
|
|
49
50
|
rootPath: root.rootPath,
|
|
51
|
+
plugin: true,
|
|
50
52
|
scope: "package" as const,
|
|
51
53
|
source: root.source,
|
|
52
|
-
precedence: COMPAT_RESOURCE_PRECEDENCE.
|
|
54
|
+
precedence: COMPAT_RESOURCE_PRECEDENCE.package,
|
|
55
|
+
trusted: root.trust !== "foreign",
|
|
53
56
|
})),
|
|
54
57
|
{
|
|
55
58
|
path: path.join(clioConfigDir(), kind),
|
|
@@ -20,6 +20,7 @@ export { resolveResourceCollisions } from "./collision.js";
|
|
|
20
20
|
export type { ResourceList, ResourcesContract } from "./contract.js";
|
|
21
21
|
export {
|
|
22
22
|
classifyLibraryRequirements,
|
|
23
|
+
commitLibraryInstallPlan,
|
|
23
24
|
confirmLibraryRemote,
|
|
24
25
|
discoverLibrary,
|
|
25
26
|
installLibraryPlan,
|
|
@@ -28,14 +29,79 @@ export {
|
|
|
28
29
|
type LibraryEntry,
|
|
29
30
|
type LibraryInstallPlan,
|
|
30
31
|
type LibraryRequirementStatus,
|
|
32
|
+
libraryEntryDrift,
|
|
31
33
|
libraryEntryInstalled,
|
|
32
34
|
libraryEntryPin,
|
|
33
35
|
libraryEntryRef,
|
|
34
36
|
libraryInstallPath,
|
|
37
|
+
pinLibraryEntry,
|
|
35
38
|
planLibraryInstall,
|
|
39
|
+
planLibraryUpdate,
|
|
40
|
+
releaseLibraryPlan,
|
|
41
|
+
removeLibraryEntry,
|
|
42
|
+
resolveLibraryPackage,
|
|
36
43
|
resolveLibraryRequirements,
|
|
37
44
|
syncLibrary,
|
|
38
45
|
} from "./library.js";
|
|
46
|
+
export {
|
|
47
|
+
applyLibraryLifecycle,
|
|
48
|
+
type LibraryApplyResult,
|
|
49
|
+
type LibraryExpectedCopy,
|
|
50
|
+
type LibraryLifecyclePlan,
|
|
51
|
+
type LibraryLifecycleRequest,
|
|
52
|
+
type LibraryOperation,
|
|
53
|
+
type LibraryPackageIdentity,
|
|
54
|
+
type LibraryPlanStep,
|
|
55
|
+
type LibraryRefreshHost,
|
|
56
|
+
type LibraryRefreshResult,
|
|
57
|
+
type LibraryStepOutcome,
|
|
58
|
+
type LibraryStepStatus,
|
|
59
|
+
type LibraryStepVerification,
|
|
60
|
+
libraryImportOutcome,
|
|
61
|
+
libraryLifecyclePlanSummary,
|
|
62
|
+
planLibraryLifecycle,
|
|
63
|
+
pluginSnapshotRefreshHost,
|
|
64
|
+
releaseLibraryLifecycle,
|
|
65
|
+
retryLibraryRefresh,
|
|
66
|
+
verifyLibraryStep,
|
|
67
|
+
} from "./library-actions.js";
|
|
68
|
+
export {
|
|
69
|
+
classifyLibraryOrigin,
|
|
70
|
+
inspectLibraryCopy,
|
|
71
|
+
LIBRARY_INVENTORY_LIMITS,
|
|
72
|
+
type LibraryCopy,
|
|
73
|
+
type LibraryCopyInspection,
|
|
74
|
+
type LibraryCopyState,
|
|
75
|
+
type LibraryInventory,
|
|
76
|
+
type LibraryInventoryOptions,
|
|
77
|
+
type LibraryOrigin,
|
|
78
|
+
type LibraryOriginEvidence,
|
|
79
|
+
type LibraryPackageFormat,
|
|
80
|
+
type LibraryPackageRecord,
|
|
81
|
+
type LibraryResource,
|
|
82
|
+
type LibraryResourceAvailability,
|
|
83
|
+
type LibraryResourceKeyParts,
|
|
84
|
+
type LibraryResourceSourceClass,
|
|
85
|
+
libraryCopyState,
|
|
86
|
+
libraryResourceKey,
|
|
87
|
+
parseLibraryResourceKey,
|
|
88
|
+
readLibraryInventory,
|
|
89
|
+
} from "./library-inventory.js";
|
|
90
|
+
export {
|
|
91
|
+
isLibraryResourceKind,
|
|
92
|
+
LIBRARY_RESOURCE_KINDS,
|
|
93
|
+
type LibraryProvidedResource,
|
|
94
|
+
type LibraryResourceKind,
|
|
95
|
+
} from "./library-types.js";
|
|
96
|
+
export {
|
|
97
|
+
type LibraryPackageValidation,
|
|
98
|
+
type LibraryPackageValidationResult,
|
|
99
|
+
type LibraryResourceValidationRecord,
|
|
100
|
+
type LibraryValidationDiagnostic,
|
|
101
|
+
type LibraryValidationPrerequisite,
|
|
102
|
+
type LibraryValidationSeverity,
|
|
103
|
+
validateLibraryPackage,
|
|
104
|
+
} from "./library-validation.js";
|
|
39
105
|
export { createResourcesLoader, type ResourceLoaderOptions } from "./loader.js";
|
|
40
106
|
export { ResourcesManifest } from "./manifest.js";
|
|
41
107
|
export {
|
|
@@ -45,6 +111,7 @@ export {
|
|
|
45
111
|
type PromptTemplateExpansion,
|
|
46
112
|
type PromptTemplateList,
|
|
47
113
|
type PromptTemplateRoot,
|
|
114
|
+
promptTemplateDisplayText,
|
|
48
115
|
} from "./prompts/loader.js";
|
|
49
116
|
export { parseCommandArgs, substituteArgs } from "./prompts/substitute.js";
|
|
50
117
|
export { parseSkillEvals, type SkillEvalParseResult, type SkillEvalScenario } from "./skills/evals.js";
|