@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
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
import { parseWorkerContextSeed } from "../../worker/context-seed.js";
|
|
2
|
+
import { WORKER_STDIN_FRAME_MAX_BYTES } from "../../worker/protocol.js";
|
|
3
|
+
import { WORKER_CONTEXT_PREAMBLE } from "../context/worker/select.js";
|
|
4
|
+
import { persistWorkerContextSeed } from "../context/worker/store.js";
|
|
1
5
|
/**
|
|
2
6
|
* Dispatch domain wire-up (post-W5).
|
|
3
7
|
*
|
|
@@ -29,7 +33,7 @@ import {
|
|
|
29
33
|
} from "../../core/response-schema.js";
|
|
30
34
|
import { isSkillActivation, type SkillActivation } from "../../core/skill-activation.js";
|
|
31
35
|
import { rawDurationMs } from "../../core/timers.js";
|
|
32
|
-
import { isBuiltinToolName, type ToolName, ToolNames } from "../../core/tool-names.js";
|
|
36
|
+
import { isBuiltinToolName, isHarnessExtensionToolName, type ToolName, ToolNames } from "../../core/tool-names.js";
|
|
33
37
|
import {
|
|
34
38
|
type AcpDelegationRunHandle,
|
|
35
39
|
type AcpDelegationRunInput,
|
|
@@ -72,6 +76,7 @@ import {
|
|
|
72
76
|
} from "../agents/spec.js";
|
|
73
77
|
import type { ConfigContract } from "../config/contract.js";
|
|
74
78
|
import type { ContextContract, ProjectPromptContext, ProjectStructuredContext } from "../context/contract.js";
|
|
79
|
+
import { enabledHarnessExtensionToolNames } from "../extensions/command-tools.js";
|
|
75
80
|
import type { MiddlewareContract } from "../middleware/contract.js";
|
|
76
81
|
import { workerSafetyOneLiner } from "../prompts/compiler.js";
|
|
77
82
|
import type { PromptsContract } from "../prompts/contract.js";
|
|
@@ -706,6 +711,7 @@ function reportDispatchDiagnostic(scope: string, error: unknown): void {
|
|
|
706
711
|
}
|
|
707
712
|
|
|
708
713
|
const OUTCOME_CODE_SPECIFICITY: ReadonlyArray<RunOutcomeCode> = [
|
|
714
|
+
"worker_context_exhausted",
|
|
709
715
|
"result_contract_exhausted",
|
|
710
716
|
"loop_guard_tools_disabled_exhausted",
|
|
711
717
|
"worker_tool_call_cap_exhausted",
|
|
@@ -1181,6 +1187,24 @@ export function buildDynamicPromptMessages(
|
|
|
1181
1187
|
dynamicContext: WorkerDynamicContext = {},
|
|
1182
1188
|
): WorkerPromptMessage[] {
|
|
1183
1189
|
const messages: WorkerPromptMessage[] = [];
|
|
1190
|
+
if (req.contextSeed) {
|
|
1191
|
+
const seed = parseWorkerContextSeed(req.contextSeed);
|
|
1192
|
+
const body =
|
|
1193
|
+
seed.provenance.mode === "fork"
|
|
1194
|
+
? WORKER_CONTEXT_PREAMBLE
|
|
1195
|
+
: seed.messages
|
|
1196
|
+
.map((message) => {
|
|
1197
|
+
if (message.role !== "user") throw new Error("worker context: invalid portable packet");
|
|
1198
|
+
return typeof message.content === "string"
|
|
1199
|
+
? message.content
|
|
1200
|
+
: message.content
|
|
1201
|
+
.filter((block) => block.type === "text")
|
|
1202
|
+
.map((block) => block.text)
|
|
1203
|
+
.join("\n");
|
|
1204
|
+
})
|
|
1205
|
+
.join("\n\n");
|
|
1206
|
+
messages.push({ id: "dispatch-worker-context", body, contentHash: sha256(body) });
|
|
1207
|
+
}
|
|
1184
1208
|
if (dynamicContext.workspace) {
|
|
1185
1209
|
const body = renderWorkerWorkspaceContext(dynamicContext.workspace);
|
|
1186
1210
|
messages.push({ id: "dispatch-workspace", body, contentHash: sha256(body) });
|
|
@@ -1259,6 +1283,19 @@ export function buildDynamicPromptMessages(
|
|
|
1259
1283
|
return messages;
|
|
1260
1284
|
}
|
|
1261
1285
|
|
|
1286
|
+
function assertWorkerContextRequest(req: DispatchRequest, native: boolean): void {
|
|
1287
|
+
const mode = req.context?.mode ?? "isolated";
|
|
1288
|
+
if (mode === "isolated") {
|
|
1289
|
+
if (req.contextSeed !== undefined) throw new Error("worker context: isolated request cannot inherit a seed");
|
|
1290
|
+
return;
|
|
1291
|
+
}
|
|
1292
|
+
if (!req.contextSeed) throw new Error("worker context: inheritance requires a host-captured seed");
|
|
1293
|
+
const seed = parseWorkerContextSeed(req.contextSeed);
|
|
1294
|
+
if (seed.provenance.mode !== mode) throw new Error("worker context: seed mode differs from admitted request");
|
|
1295
|
+
if (mode === "fork" && !native)
|
|
1296
|
+
throw new Error("worker context: fork requires a native Pi runtime; use splice for external agents");
|
|
1297
|
+
}
|
|
1298
|
+
|
|
1262
1299
|
interface ResolvedTarget {
|
|
1263
1300
|
target: TargetDescriptor;
|
|
1264
1301
|
runtime: RuntimeDescriptor;
|
|
@@ -1601,6 +1638,7 @@ function effectiveToolNames(
|
|
|
1601
1638
|
* here rather than leaving the model to spend budget finding that out.
|
|
1602
1639
|
*/
|
|
1603
1640
|
denied: ReadonlySet<string> = new Set(),
|
|
1641
|
+
cwd = process.cwd(),
|
|
1604
1642
|
): ReadonlyArray<ToolName> {
|
|
1605
1643
|
if (!targetToolCapability(target)) return [];
|
|
1606
1644
|
// A hermetic process registers no network plane, so the worker's registry
|
|
@@ -1609,9 +1647,13 @@ function effectiveToolNames(
|
|
|
1609
1647
|
// attests; otherwise the run is refused for a mismatch instead of simply
|
|
1610
1648
|
// running without network.
|
|
1611
1649
|
const networkStripped = networkToolsDisabled();
|
|
1650
|
+
const harnessTools =
|
|
1651
|
+
target.runtime.kind === "http" && !writeConfined && allowedTools.some(isHarnessExtensionToolName)
|
|
1652
|
+
? enabledHarnessExtensionToolNames(cwd)
|
|
1653
|
+
: new Set<string>();
|
|
1612
1654
|
const names = allowedTools.filter(
|
|
1613
1655
|
(tool): tool is ToolName =>
|
|
1614
|
-
isBuiltinToolName(tool) &&
|
|
1656
|
+
(isBuiltinToolName(tool) || harnessTools.has(tool)) &&
|
|
1615
1657
|
tool !== ToolNames.AskUser &&
|
|
1616
1658
|
!(networkStripped && tool === ToolNames.WebFetch) &&
|
|
1617
1659
|
!denied.has(tool) &&
|
|
@@ -1995,6 +2037,10 @@ function buildDispatchWorkerSpec(input: DispatchWorkerSpecInput, config?: Config
|
|
|
1995
2037
|
// autonomy can only narrow (reviewer/judge runs pin read-only); a worker
|
|
1996
2038
|
// never exceeds the orchestrator's authority.
|
|
1997
2039
|
spec.autonomy = input.effectiveAutonomy;
|
|
2040
|
+
if (input.req.contextSeed && input.target.runtime.kind === "http")
|
|
2041
|
+
spec.contextSeed = parseWorkerContextSeed(input.req.contextSeed);
|
|
2042
|
+
if (Buffer.byteLength(JSON.stringify(spec), "utf8") + 1 > WORKER_STDIN_FRAME_MAX_BYTES)
|
|
2043
|
+
throw new Error("worker context: complete WorkerSpec exceeds the stdin frame budget; use a smaller splice");
|
|
1998
2044
|
return spec;
|
|
1999
2045
|
}
|
|
2000
2046
|
|
|
@@ -3572,6 +3618,7 @@ export function createDispatchBundle(
|
|
|
3572
3618
|
providers,
|
|
3573
3619
|
);
|
|
3574
3620
|
let target = resolveTarget();
|
|
3621
|
+
assertWorkerContextRequest(req, target.runtime.kind === "http");
|
|
3575
3622
|
const identity = (resolved: ResolvedTarget): string =>
|
|
3576
3623
|
JSON.stringify([
|
|
3577
3624
|
resolved.target.id,
|
|
@@ -3591,7 +3638,13 @@ export function createDispatchBundle(
|
|
|
3591
3638
|
const sessionAutonomy = settings?.safety.autonomy ?? "auto-edit";
|
|
3592
3639
|
const effectiveAutonomy = effectiveWorkerAutonomy(sessionAutonomy, req.autonomy, spec.capabilityClass);
|
|
3593
3640
|
const effectiveTools = withLedgerToolNarrowing(
|
|
3594
|
-
effectiveToolNames(
|
|
3641
|
+
effectiveToolNames(
|
|
3642
|
+
admission.allowedTools,
|
|
3643
|
+
target,
|
|
3644
|
+
pathScope.writeBoundaries.length > 0,
|
|
3645
|
+
deniedToolNames(req),
|
|
3646
|
+
req.cwd ?? process.cwd(),
|
|
3647
|
+
),
|
|
3595
3648
|
req,
|
|
3596
3649
|
);
|
|
3597
3650
|
assertPostRuntimeToolCompatibility(req.agentId, spec, effectiveTools, target);
|
|
@@ -3652,7 +3705,11 @@ export function createDispatchBundle(
|
|
|
3652
3705
|
});
|
|
3653
3706
|
const projectContextProvenance = projectContextProvenanceFor(tier, dynamicPromptMessages);
|
|
3654
3707
|
const dynamicText = dynamicPromptMessages.map((message) => message.body).join("\n\n");
|
|
3655
|
-
const compiledPromptHash = promptCompositionHash([
|
|
3708
|
+
const compiledPromptHash = promptCompositionHash([
|
|
3709
|
+
systemPrompt,
|
|
3710
|
+
dynamicText,
|
|
3711
|
+
...(req.contextSeed ? [req.contextSeed.provenance.contentHash] : []),
|
|
3712
|
+
]);
|
|
3656
3713
|
const staticCompositionHash = promptHash(systemPrompt);
|
|
3657
3714
|
const sessionShellHash = staticCompositionHash;
|
|
3658
3715
|
const dynamicHash = dynamicPromptMessages.length > 0 ? sha256(dynamicText) : sha256("");
|
|
@@ -3724,6 +3781,7 @@ export function createDispatchBundle(
|
|
|
3724
3781
|
// before the external agent is started.
|
|
3725
3782
|
dispatchResultContract(req, spec);
|
|
3726
3783
|
}
|
|
3784
|
+
assertWorkerContextRequest(req, false);
|
|
3727
3785
|
if (!settings) throw new Error("dispatch: effective settings required for ACP delegation");
|
|
3728
3786
|
const configured = settings.integrations.externalAgents.entries.find((entry) => entry.id === agentId);
|
|
3729
3787
|
if (!configured) throw new Error(`dispatch: ACP delegation agent '${agentId}' not configured`);
|
|
@@ -3765,7 +3823,11 @@ export function createDispatchBundle(
|
|
|
3765
3823
|
});
|
|
3766
3824
|
const projectContextProvenance = projectContextProvenanceFor(tier, dynamicPromptMessages);
|
|
3767
3825
|
const dynamicText = dynamicPromptMessages.map((message) => message.body).join("\n\n");
|
|
3768
|
-
const compiledPromptHash = promptCompositionHash([
|
|
3826
|
+
const compiledPromptHash = promptCompositionHash([
|
|
3827
|
+
systemPrompt,
|
|
3828
|
+
dynamicText,
|
|
3829
|
+
...(req.contextSeed ? [req.contextSeed.provenance.contentHash] : []),
|
|
3830
|
+
]);
|
|
3769
3831
|
const staticCompositionHash = promptHash(systemPrompt);
|
|
3770
3832
|
const sessionShellHash = staticCompositionHash;
|
|
3771
3833
|
const dynamicHash = dynamicPromptMessages.length > 0 ? sha256(dynamicText) : sha256("");
|
|
@@ -3829,6 +3891,7 @@ export function createDispatchBundle(
|
|
|
3829
3891
|
const wireModelId = lifecycle.agentConfig.id;
|
|
3830
3892
|
assertTargetNotCoolingDown(req, targetId, runtimeId, wireModelId);
|
|
3831
3893
|
|
|
3894
|
+
if (req.contextSeed) persistWorkerContextSeed(req.contextSeed);
|
|
3832
3895
|
assertBudgetAdmitsRoute(req, { rates: null, provenance: "unknown" }, settings);
|
|
3833
3896
|
|
|
3834
3897
|
const queuedIdentity =
|
|
@@ -4084,6 +4147,7 @@ export function createDispatchBundle(
|
|
|
4084
4147
|
node: LOCAL_RUN_NODE,
|
|
4085
4148
|
...(lifecycle.pipeline ? { pipeline: lifecycle.pipeline } : {}),
|
|
4086
4149
|
...(lifecycle.briefing ? { briefing: lifecycle.briefing } : {}),
|
|
4150
|
+
...(req.contextSeed ? { workerContext: structuredClone(req.contextSeed.provenance) } : {}),
|
|
4087
4151
|
...(req.gate !== undefined ? { gate: req.gate } : {}),
|
|
4088
4152
|
...(req.council !== undefined ? { council: req.council } : {}),
|
|
4089
4153
|
...(req.plan !== undefined ? { plan: req.plan } : {}),
|
|
@@ -4255,6 +4319,7 @@ export function createDispatchBundle(
|
|
|
4255
4319
|
node: LOCAL_RUN_NODE,
|
|
4256
4320
|
...(lifecycle.pipeline ? { pipeline: lifecycle.pipeline } : {}),
|
|
4257
4321
|
...(lifecycle.briefing ? { briefing: lifecycle.briefing } : {}),
|
|
4322
|
+
...(req.contextSeed ? { workerContext: structuredClone(req.contextSeed.provenance) } : {}),
|
|
4258
4323
|
...(req.gate !== undefined ? { gate: req.gate } : {}),
|
|
4259
4324
|
...(req.council !== undefined ? { council: req.council } : {}),
|
|
4260
4325
|
...(req.plan !== undefined ? { plan: req.plan } : {}),
|
|
@@ -4720,6 +4785,7 @@ export function createDispatchBundle(
|
|
|
4720
4785
|
shadow: () => observeShadowRoute(req, placed, settings),
|
|
4721
4786
|
});
|
|
4722
4787
|
|
|
4788
|
+
if (req.contextSeed) persistWorkerContextSeed(req.contextSeed);
|
|
4723
4789
|
const queuedIdentity =
|
|
4724
4790
|
req.lineage === undefined && req.runIdHint !== undefined
|
|
4725
4791
|
? {
|
|
@@ -4776,27 +4842,34 @@ export function createDispatchBundle(
|
|
|
4776
4842
|
const safetyDecisionCounts = { allowed: 0, blocked: 0, permissionRequested: 0 };
|
|
4777
4843
|
const escalationCounts = { requested: 0, approved: 0, denied: 0, timedOut: 0 };
|
|
4778
4844
|
const blockedAttempts: SafetyBlockedAttempt[] = [];
|
|
4779
|
-
|
|
4780
|
-
|
|
4781
|
-
|
|
4782
|
-
|
|
4783
|
-
|
|
4784
|
-
|
|
4785
|
-
|
|
4786
|
-
|
|
4787
|
-
|
|
4788
|
-
|
|
4789
|
-
|
|
4790
|
-
|
|
4791
|
-
|
|
4792
|
-
|
|
4793
|
-
|
|
4794
|
-
|
|
4795
|
-
|
|
4796
|
-
|
|
4797
|
-
|
|
4798
|
-
|
|
4799
|
-
|
|
4845
|
+
let spec: WorkerSpec;
|
|
4846
|
+
try {
|
|
4847
|
+
spec = buildDispatchWorkerSpec(
|
|
4848
|
+
{
|
|
4849
|
+
req,
|
|
4850
|
+
pathScope: lifecycle.pathScope,
|
|
4851
|
+
target: lifecycle.target,
|
|
4852
|
+
admission: lifecycle.admission,
|
|
4853
|
+
recipe: lifecycle.recipe,
|
|
4854
|
+
systemPrompt: lifecycle.systemPrompt,
|
|
4855
|
+
dynamicPromptMessages: lifecycle.dynamicPromptMessages,
|
|
4856
|
+
promptSignature: lifecycle.promptSignature,
|
|
4857
|
+
toolSignature: lifecycle.toolSignature,
|
|
4858
|
+
dynamicHash: lifecycle.dynamicHash,
|
|
4859
|
+
middlewareSnapshot: middleware.snapshot(),
|
|
4860
|
+
protectedArtifactState,
|
|
4861
|
+
apiKey: lifecycle.apiKey,
|
|
4862
|
+
effectiveAutonomy: lifecycle.effectiveAutonomy,
|
|
4863
|
+
budget: lifecycle.budget,
|
|
4864
|
+
...(lifecycle.settings ? { settings: lifecycle.settings } : {}),
|
|
4865
|
+
},
|
|
4866
|
+
config ?? undefined,
|
|
4867
|
+
);
|
|
4868
|
+
} catch (error) {
|
|
4869
|
+
leaseSlot.release();
|
|
4870
|
+
if (req.lineage === undefined) await failQueuedAssignment(capacityLease.assignmentId);
|
|
4871
|
+
throw error;
|
|
4872
|
+
}
|
|
4800
4873
|
// The agent ledger is orchestrator-owned. The worker sends a body and
|
|
4801
4874
|
// nothing else; every attribution field below is stamped from this
|
|
4802
4875
|
// process's own admission record, so no worker-supplied value can reach
|
|
@@ -5205,6 +5278,7 @@ export function createDispatchBundle(
|
|
|
5205
5278
|
: {}),
|
|
5206
5279
|
...(lifecycle.pipeline ? { pipeline: lifecycle.pipeline } : {}),
|
|
5207
5280
|
...(lifecycle.briefing ? { briefing: lifecycle.briefing } : {}),
|
|
5281
|
+
...(req.contextSeed ? { workerContext: structuredClone(req.contextSeed.provenance) } : {}),
|
|
5208
5282
|
...(req.gate !== undefined ? { gate: req.gate } : {}),
|
|
5209
5283
|
...(req.council !== undefined ? { council: req.council } : {}),
|
|
5210
5284
|
...(req.plan !== undefined ? { plan: req.plan } : {}),
|
|
@@ -5445,6 +5519,7 @@ export function createDispatchBundle(
|
|
|
5445
5519
|
: {}),
|
|
5446
5520
|
...(lifecycle.pipeline ? { pipeline: lifecycle.pipeline } : {}),
|
|
5447
5521
|
...(lifecycle.briefing ? { briefing: lifecycle.briefing } : {}),
|
|
5522
|
+
...(req.contextSeed ? { workerContext: structuredClone(req.contextSeed.provenance) } : {}),
|
|
5448
5523
|
...(steering.length > 0 ? { steering: steering.map((entry) => ({ ...entry })) } : {}),
|
|
5449
5524
|
...(req.gate !== undefined ? { gate: req.gate } : {}),
|
|
5450
5525
|
...(req.council !== undefined ? { council: req.council } : {}),
|
|
@@ -6125,9 +6200,16 @@ export function createDispatchBundle(
|
|
|
6125
6200
|
targets.targetOrder,
|
|
6126
6201
|
providers,
|
|
6127
6202
|
);
|
|
6203
|
+
assertWorkerContextRequest(req, target.runtime.kind === "http");
|
|
6128
6204
|
enforceCapabilityGate(target.target.id, target.modelCapabilities, req.requiredCapabilities);
|
|
6129
6205
|
const effectiveTools = withLedgerToolNarrowing(
|
|
6130
|
-
effectiveToolNames(
|
|
6206
|
+
effectiveToolNames(
|
|
6207
|
+
admission.allowedTools,
|
|
6208
|
+
target,
|
|
6209
|
+
pathScope.writeBoundaries.length > 0,
|
|
6210
|
+
deniedToolNames(req),
|
|
6211
|
+
req.cwd ?? process.cwd(),
|
|
6212
|
+
),
|
|
6131
6213
|
req,
|
|
6132
6214
|
);
|
|
6133
6215
|
assertPostRuntimeToolCompatibility(req.agentId, agentSpec, effectiveTools, target);
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type FleetCommandRegistry, resolveFleetCommandArgs } from "../agents/fleet-commands.js";
|
|
1
2
|
/**
|
|
2
3
|
* Fleet contract to execution plan.
|
|
3
4
|
*
|
|
@@ -19,9 +20,11 @@ import {
|
|
|
19
20
|
type FleetContract,
|
|
20
21
|
type FleetContractStep,
|
|
21
22
|
type FleetStepScope,
|
|
23
|
+
fleetCodeSteps,
|
|
22
24
|
fleetLoopCheckStepId,
|
|
23
25
|
fleetLoopRepairStepId,
|
|
24
26
|
fleetStepWriteBoundary,
|
|
27
|
+
validateFleetCommands,
|
|
25
28
|
} from "../agents/fleet-contract.js";
|
|
26
29
|
import type { ResultContract } from "../agents/result-contract.js";
|
|
27
30
|
import type { AgentAutomationAuthority } from "../agents/spec.js";
|
|
@@ -58,6 +61,8 @@ export interface FleetPlanAgentResolution {
|
|
|
58
61
|
}
|
|
59
62
|
|
|
60
63
|
export interface CompileFleetPlanInput {
|
|
64
|
+
commands?: FleetCommandRegistry | null;
|
|
65
|
+
vars?: Readonly<Record<string, string>>;
|
|
61
66
|
contract: FleetContract;
|
|
62
67
|
/**
|
|
63
68
|
* Rendered prompt body. It describes the whole chain, so every agent node
|
|
@@ -117,6 +122,9 @@ function declaredLoops(steps: ReadonlyArray<FleetContractStep>): Map<string, Exe
|
|
|
117
122
|
|
|
118
123
|
export function compileFleetExecutionPlan(input: CompileFleetPlanInput): ExecutionPlan {
|
|
119
124
|
const { contract, task, resolveAgent } = input;
|
|
125
|
+
if (input.commands !== undefined) validateFleetCommands(contract, input.commands, input.vars ?? {});
|
|
126
|
+
else if (fleetCodeSteps(contract).some((step) => (step.args?.length ?? 0) > 0))
|
|
127
|
+
throw new Error("fleet code args: admission requires the operator command registry");
|
|
120
128
|
const loops = declaredLoops(contract.steps);
|
|
121
129
|
const steps: ExecutionPlanStepInput[] = [];
|
|
122
130
|
|
|
@@ -206,6 +214,7 @@ export function compileFleetExecutionPlan(input: CompileFleetPlanInput): Executi
|
|
|
206
214
|
kind: "code",
|
|
207
215
|
id: step.id,
|
|
208
216
|
commandId: step.command,
|
|
217
|
+
...(step.args ? { args: resolveFleetCommandArgs(step.args, input.vars) } : {}),
|
|
209
218
|
scope: step.scope,
|
|
210
219
|
dependencies,
|
|
211
220
|
...boundary(step.scope, step.writes),
|
|
@@ -225,6 +234,7 @@ export function compileFleetExecutionPlan(input: CompileFleetPlanInput): Executi
|
|
|
225
234
|
kind: "code",
|
|
226
235
|
id: checkId,
|
|
227
236
|
commandId: step.check.command,
|
|
237
|
+
...(step.check.args ? { args: resolveFleetCommandArgs(step.check.args, input.vars) } : {}),
|
|
228
238
|
scope: step.check.scope,
|
|
229
239
|
dependencies: checkDependencies,
|
|
230
240
|
...boundary(step.check.scope, step.check.writes),
|
|
@@ -689,6 +689,7 @@ export async function executeFleetRun(input: ExecuteFleetRunInput): Promise<Flee
|
|
|
689
689
|
}
|
|
690
690
|
const originalMessage = isCommit ? commitMessageFor(step, priorResults) : null;
|
|
691
691
|
const outcome = await runCodeStep({
|
|
692
|
+
...(step.args ? { args: step.args } : {}),
|
|
692
693
|
stepId: step.id,
|
|
693
694
|
command,
|
|
694
695
|
workspaceRoot,
|
|
@@ -58,6 +58,7 @@ function envelopeFromReceipt(receipt: RunReceipt, status: RunStatus, receiptPath
|
|
|
58
58
|
task: receipt.task,
|
|
59
59
|
...(receipt.budget !== undefined ? { budget: receipt.budget } : {}),
|
|
60
60
|
...(receipt.briefing !== undefined ? { briefing: receipt.briefing } : {}),
|
|
61
|
+
...(receipt.workerContext !== undefined ? { workerContext: receipt.workerContext } : {}),
|
|
61
62
|
...(receipt.steering !== undefined ? { steering: receipt.steering } : {}),
|
|
62
63
|
targetId: receipt.targetId,
|
|
63
64
|
wireModelId: receipt.wireModelId,
|
|
@@ -155,6 +155,7 @@ export const RECEIPT_INTEGRITY_FIELD_COVERAGE = {
|
|
|
155
155
|
ledgerContribution: true,
|
|
156
156
|
sessionId: true,
|
|
157
157
|
briefing: true,
|
|
158
|
+
workerContext: true,
|
|
158
159
|
outcomeCode: true,
|
|
159
160
|
steering: true,
|
|
160
161
|
routeDecision: true,
|
|
@@ -232,6 +233,7 @@ function ledgerDigestFields(envelope: RunEnvelope): Record<string, unknown> {
|
|
|
232
233
|
promptSignature: envelope.promptSignature ?? null,
|
|
233
234
|
toolSignature: envelope.toolSignature ?? null,
|
|
234
235
|
briefing: envelope.briefing ?? null,
|
|
236
|
+
...(envelope.workerContext !== undefined ? { workerContext: envelope.workerContext } : {}),
|
|
235
237
|
outcomeCode: envelope.outcomeCode ?? null,
|
|
236
238
|
steering: envelope.steering ?? null,
|
|
237
239
|
};
|
|
@@ -379,6 +381,8 @@ function firstLedgerMismatch(receipt: RunReceipt, envelope: RunEnvelope): string
|
|
|
379
381
|
if (!Object.is(receiptValue, ledgerValue)) return field;
|
|
380
382
|
}
|
|
381
383
|
if (canonicalJson(receipt.briefing ?? null) !== canonicalJson(envelope.briefing ?? null)) return "briefing";
|
|
384
|
+
if (canonicalJson(receipt.workerContext ?? null) !== canonicalJson(envelope.workerContext ?? null))
|
|
385
|
+
return "workerContext";
|
|
382
386
|
if (canonicalJson(receipt.budget ?? null) !== canonicalJson(envelope.budget ?? null)) return "budget";
|
|
383
387
|
if (canonicalJson(receipt.steering ?? null) !== canonicalJson(envelope.steering ?? null)) return "steering";
|
|
384
388
|
return null;
|
|
@@ -262,6 +262,7 @@ export function openLedger(opts?: LedgerOptions): Ledger {
|
|
|
262
262
|
task: input.task,
|
|
263
263
|
...(input.budget !== undefined ? { budget: structuredClone(input.budget) } : {}),
|
|
264
264
|
...(input.briefing !== undefined ? { briefing: structuredClone(input.briefing) } : {}),
|
|
265
|
+
...(input.workerContext !== undefined ? { workerContext: structuredClone(input.workerContext) } : {}),
|
|
265
266
|
...(input.steering !== undefined ? { steering: structuredClone(input.steering) } : {}),
|
|
266
267
|
targetId: input.targetId,
|
|
267
268
|
wireModelId: input.wireModelId,
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { WorkerContextProvenance } from "../context/worker/contract.js";
|
|
1
2
|
/**
|
|
2
3
|
* Shared run + receipt types for the dispatch domain (Phase 6 slice 2).
|
|
3
4
|
*
|
|
@@ -43,6 +44,7 @@ export type RunOutcome =
|
|
|
43
44
|
export type RunOutcomeCode =
|
|
44
45
|
| "vram_capacity_fit_failure"
|
|
45
46
|
| "worker_tool_call_cap_exhausted"
|
|
47
|
+
| "worker_context_exhausted"
|
|
46
48
|
| "loop_guard_tools_disabled_exhausted"
|
|
47
49
|
| "result_contract_exhausted"
|
|
48
50
|
| "worker_final_output_missing"
|
|
@@ -52,6 +54,7 @@ export function isRunOutcomeCode(value: unknown): value is RunOutcomeCode {
|
|
|
52
54
|
return (
|
|
53
55
|
value === "vram_capacity_fit_failure" ||
|
|
54
56
|
value === "worker_tool_call_cap_exhausted" ||
|
|
57
|
+
value === "worker_context_exhausted" ||
|
|
55
58
|
value === "loop_guard_tools_disabled_exhausted" ||
|
|
56
59
|
value === "result_contract_exhausted" ||
|
|
57
60
|
value === "worker_final_output_missing" ||
|
|
@@ -455,6 +458,7 @@ export interface RunEnvelope {
|
|
|
455
458
|
budget?: RunToolBudgetEnvelope;
|
|
456
459
|
/** Present only when a bounded parent briefing was sent as dynamic task data. */
|
|
457
460
|
briefing?: RunBriefingProvenance;
|
|
461
|
+
workerContext?: WorkerContextProvenance;
|
|
458
462
|
/** Sent steering provenance in stable per-run sequence order; prose is never persisted. */
|
|
459
463
|
steering?: ReadonlyArray<RunSteeringProvenance>;
|
|
460
464
|
targetId: string;
|
|
@@ -801,6 +805,7 @@ export interface RunReceipt {
|
|
|
801
805
|
budget?: RunToolBudgetEnvelope;
|
|
802
806
|
/** Proof of briefing content without copying its prose into the receipt. */
|
|
803
807
|
briefing?: RunBriefingProvenance;
|
|
808
|
+
workerContext?: WorkerContextProvenance;
|
|
804
809
|
/** Sent steering provenance in stable per-run sequence order; prose is never persisted. */
|
|
805
810
|
steering?: ReadonlyArray<RunSteeringProvenance>;
|
|
806
811
|
targetId: string;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { parseWorkerContextPolicy, type WorkerContextPolicy } from "../context/worker/contract.js";
|
|
1
2
|
/**
|
|
2
3
|
* Validate a dispatch job spec before it enters the queue. Pure function, no
|
|
3
4
|
* I/O. Accepts unknown input so callers can hand it raw JSON or CLI args
|
|
@@ -74,6 +75,7 @@ export interface JobSpec {
|
|
|
74
75
|
task: string;
|
|
75
76
|
/** Bounded parent-composed context delivered as untrusted dynamic task data. */
|
|
76
77
|
briefing?: string;
|
|
78
|
+
context?: WorkerContextPolicy;
|
|
77
79
|
workerProfile?: string;
|
|
78
80
|
workerRuntime?: string;
|
|
79
81
|
delegationAgentId?: string;
|
|
@@ -188,6 +190,7 @@ const KNOWN_KEYS = new Set([
|
|
|
188
190
|
"executionRole",
|
|
189
191
|
"task",
|
|
190
192
|
"briefing",
|
|
193
|
+
"context",
|
|
191
194
|
"workerProfile",
|
|
192
195
|
"workerRuntime",
|
|
193
196
|
"delegationAgentId",
|
|
@@ -264,6 +267,14 @@ export function validateJobSpec(spec: unknown): Validated {
|
|
|
264
267
|
errors.push("executionRole must be a known execution role");
|
|
265
268
|
}
|
|
266
269
|
|
|
270
|
+
let context: WorkerContextPolicy | undefined;
|
|
271
|
+
if (spec.context !== undefined) {
|
|
272
|
+
try {
|
|
273
|
+
context = parseWorkerContextPolicy(spec.context);
|
|
274
|
+
} catch (error) {
|
|
275
|
+
errors.push(error instanceof Error ? error.message : String(error));
|
|
276
|
+
}
|
|
277
|
+
}
|
|
267
278
|
let briefing: string | undefined;
|
|
268
279
|
if ("briefing" in spec && spec.briefing !== undefined) {
|
|
269
280
|
if (typeof spec.briefing !== "string") {
|
|
@@ -560,6 +571,7 @@ export function validateJobSpec(spec: unknown): Validated {
|
|
|
560
571
|
task: task as string,
|
|
561
572
|
};
|
|
562
573
|
if (briefing !== undefined) out.briefing = briefing;
|
|
574
|
+
if (context !== undefined) out.context = context;
|
|
563
575
|
if (typeof spec.workerProfile === "string") out.workerProfile = spec.workerProfile;
|
|
564
576
|
if (typeof spec.workerRuntime === "string") out.workerRuntime = spec.workerRuntime;
|
|
565
577
|
if (typeof spec.delegationAgentId === "string") out.delegationAgentId = spec.delegationAgentId;
|
|
@@ -14,7 +14,7 @@ export function workspaceCheckpointRef(kind: "loop" | "compete", identity: strin
|
|
|
14
14
|
* The immutable ref makes retries idempotent and keeps the object alive across GC. */
|
|
15
15
|
export function captureWorkspaceCheckpoint(cwd: string, ref: string, message: string): string {
|
|
16
16
|
if (!/^refs\/clio-coder\/(loop|compete)\/[a-f0-9]{64}$/.test(ref)) throw new Error("invalid workspace checkpoint ref");
|
|
17
|
-
const directory = mkdtempSync(join(tmpdir(), "clio-checkpoint-index-"));
|
|
17
|
+
const directory = mkdtempSync(join(tmpdir(), "clio-coder-checkpoint-index-"));
|
|
18
18
|
const env = buildSafeToolEnv({
|
|
19
19
|
GIT_INDEX_FILE: join(directory, "index"),
|
|
20
20
|
GIT_AUTHOR_NAME: "Clio checkpoint",
|
|
@@ -18,6 +18,7 @@ export interface EvidenceFailureFacts {
|
|
|
18
18
|
* model, harness, or environment by guesswork.
|
|
19
19
|
*/
|
|
20
20
|
export function attributeEvidenceFailure(facts: EvidenceFailureFacts): EvidenceTag {
|
|
21
|
+
if (facts.outcomeCode === "worker_context_exhausted") return "context-overflow";
|
|
21
22
|
if (
|
|
22
23
|
facts.outcomeCode === "worker_tool_call_cap_exhausted" ||
|
|
23
24
|
facts.outcomeCode === "loop_guard_tools_disabled_exhausted"
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { parseWorkerContextProvenance } from "../../worker/context-seed.js";
|
|
1
2
|
import type { GateDecisionArtifact, GateDecisionVerification } from "../dispatch/gate-decisions.js";
|
|
2
3
|
import { RUN_RECEIPT_INTEGRITY_VERSION, verifyReceiptIntegrity } from "../dispatch/receipt-integrity.js";
|
|
3
4
|
import type {
|
|
@@ -72,6 +73,7 @@ export type TrustArtifactKind =
|
|
|
72
73
|
| "gate_decision"
|
|
73
74
|
| "briefing"
|
|
74
75
|
| "project_context"
|
|
76
|
+
| "worker_context"
|
|
75
77
|
| "autonomy_policy"
|
|
76
78
|
| "finish_contract_evidence"
|
|
77
79
|
| "evidence_bundle"
|
|
@@ -206,6 +208,7 @@ const ARTIFACT_KINDS: ReadonlySet<string> = new Set([
|
|
|
206
208
|
"gate_decision",
|
|
207
209
|
"briefing",
|
|
208
210
|
"project_context",
|
|
211
|
+
"worker_context",
|
|
209
212
|
"autonomy_policy",
|
|
210
213
|
"finish_contract_evidence",
|
|
211
214
|
"evidence_bundle",
|
|
@@ -423,6 +426,7 @@ export type PersistedRunReceiptTrustFacts = Pick<RunReceipt, "runId"> &
|
|
|
423
426
|
| "validationGrounding"
|
|
424
427
|
| "briefing"
|
|
425
428
|
| "projectContext"
|
|
429
|
+
| "workerContext"
|
|
426
430
|
| "autonomyEnforcement"
|
|
427
431
|
>
|
|
428
432
|
>;
|
|
@@ -693,8 +697,21 @@ function recordedProjectContextHash(context: RunProjectContextProvenance | undef
|
|
|
693
697
|
return validNoneTierProjectContext(context) ? context.contentHash : undefined;
|
|
694
698
|
}
|
|
695
699
|
|
|
700
|
+
function validWorkerContext(value: unknown): boolean {
|
|
701
|
+
try {
|
|
702
|
+
parseWorkerContextProvenance(value);
|
|
703
|
+
return true;
|
|
704
|
+
} catch {
|
|
705
|
+
return false;
|
|
706
|
+
}
|
|
707
|
+
}
|
|
708
|
+
|
|
696
709
|
function contextArtifacts(receipt: PersistedRunReceiptTrustFacts): TrustArtifactReference[] {
|
|
697
710
|
const artifacts = [receiptReference(receipt)];
|
|
711
|
+
if (receipt.workerContext !== undefined && validWorkerContext(receipt.workerContext))
|
|
712
|
+
artifacts.push(
|
|
713
|
+
sha256Reference("worker_context", `${receipt.runId}:worker-context`, receipt.workerContext.contentHash),
|
|
714
|
+
);
|
|
698
715
|
if (receipt.briefing !== undefined && validBriefing(receipt.briefing)) {
|
|
699
716
|
artifacts.push(sha256Reference("briefing", `${receipt.runId}:briefing`, receipt.briefing.contentHash));
|
|
700
717
|
}
|
|
@@ -713,10 +730,12 @@ export function adaptRunReceiptContextStatus(
|
|
|
713
730
|
const artifacts = contextArtifacts(receipt);
|
|
714
731
|
const source = receiptSource(receipt);
|
|
715
732
|
const briefingInvalid = receipt.briefing !== undefined && !validBriefing(receipt.briefing);
|
|
716
|
-
if (briefingInvalid
|
|
733
|
+
if (briefingInvalid || (receipt.workerContext !== undefined && !validWorkerContext(receipt.workerContext)))
|
|
734
|
+
return attributed("invalid", source, DISPATCH_AUTHORITY, artifacts);
|
|
717
735
|
const context = receipt.projectContext;
|
|
718
736
|
if (context === undefined) {
|
|
719
|
-
if (receipt.briefing !== undefined
|
|
737
|
+
if (receipt.briefing !== undefined || receipt.workerContext !== undefined)
|
|
738
|
+
return attributed("recorded", source, DISPATCH_AUTHORITY, artifacts);
|
|
720
739
|
return attributed("unknown", compatibilitySource(receipt, "projectContext"), COMPATIBILITY_AUTHORITY, artifacts);
|
|
721
740
|
}
|
|
722
741
|
if (context.tier === "none") {
|
|
@@ -724,7 +743,7 @@ export function adaptRunReceiptContextStatus(
|
|
|
724
743
|
if (bare) {
|
|
725
744
|
// Nothing structured was sent: the axis does not apply unless a
|
|
726
745
|
// briefing was recorded, which is context of its own.
|
|
727
|
-
return receipt.briefing === undefined
|
|
746
|
+
return receipt.briefing === undefined && receipt.workerContext === undefined
|
|
728
747
|
? attributed("not_applicable", source, DISPATCH_AUTHORITY, artifacts)
|
|
729
748
|
: attributed("recorded", source, DISPATCH_AUTHORITY, artifacts);
|
|
730
749
|
}
|