@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
|
@@ -206,9 +206,6 @@ export function createStatusController(deps: StatusControllerDeps): StatusContro
|
|
|
206
206
|
deps.bus.on(BusChannels.PermissionResolved, () => apply({ type: "overlay_pop", overlay: "tool_blocked" }, true)),
|
|
207
207
|
deps.bus.on(BusChannels.CompactionBegin, () => apply({ type: "overlay_push", overlay: "compacting" }, true)),
|
|
208
208
|
deps.bus.on(BusChannels.CompactionEnd, () => apply({ type: "overlay_pop", overlay: "compacting" }, true)),
|
|
209
|
-
deps.bus.on(BusChannels.DispatchStarted, (payload) =>
|
|
210
|
-
apply({ type: "overlay_push", overlay: "dispatching", data: payload }, true),
|
|
211
|
-
),
|
|
212
209
|
deps.bus.on(BusChannels.DispatchProgress, (payload) => {
|
|
213
210
|
if (!isWorkerStreamEvidence(payload)) return;
|
|
214
211
|
const at = now();
|
|
@@ -216,8 +213,6 @@ export function createStatusController(deps: StatusControllerDeps): StatusContro
|
|
|
216
213
|
lastDispatchProgressAt = at;
|
|
217
214
|
apply({ type: "dispatch_progress" });
|
|
218
215
|
}),
|
|
219
|
-
deps.bus.on(BusChannels.DispatchCompleted, () => apply({ type: "overlay_pop", overlay: "dispatching" }, true)),
|
|
220
|
-
deps.bus.on(BusChannels.DispatchFailed, () => apply({ type: "overlay_pop", overlay: "dispatching" }, true)),
|
|
221
216
|
deps.bus.on(BusChannels.RunAborted, (payload) => {
|
|
222
217
|
scheduleAbortCeiling();
|
|
223
218
|
// Carry abort provenance into the summary; a dispatch drain and a
|
|
@@ -245,6 +245,7 @@ function activePhaseAfterStuck(prev: AgentStatus): StatusPhase {
|
|
|
245
245
|
}
|
|
246
246
|
|
|
247
247
|
function isAwaitingDispatch(prev: AgentStatus): boolean {
|
|
248
|
+
if (activePhaseAfterStuck(prev) === "tool_running" && prev.tool?.toolName === ToolNames.Dispatch) return true;
|
|
248
249
|
if (prev.phase === "dispatching") return true;
|
|
249
250
|
if (prev.activePhases?.has("dispatching")) return true;
|
|
250
251
|
return (prev.overlayStack ?? []).some((frame) => frame.phase === "dispatching");
|
|
@@ -360,26 +361,9 @@ export function reduceStatus(prev: AgentStatus, event: StatusInputEvent, ctx: Re
|
|
|
360
361
|
if (base === "preparing") return { ...next, phase: "waiting_model", resumePhase: undefined };
|
|
361
362
|
return next;
|
|
362
363
|
}
|
|
363
|
-
case "message_start":
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
if (role === "assistant" && prev.phase === "tool_running") return { ...next, phase: "writing" };
|
|
367
|
-
if (
|
|
368
|
-
role === "assistant" &&
|
|
369
|
-
(prev.phase === "preparing" || prev.phase === "waiting_model" || prev.phase === "thinking")
|
|
370
|
-
)
|
|
371
|
-
return { ...next, phase: "writing", resumePhase: undefined };
|
|
372
|
-
return next;
|
|
373
|
-
}
|
|
374
|
-
case "message_update": {
|
|
375
|
-
const base = activePhaseAfterStuck(prev);
|
|
376
|
-
const next = refreshMeaningful({ ...prev, phase: base }, ctx);
|
|
377
|
-
if (base === "preparing" || base === "waiting_model" || base === "thinking") {
|
|
378
|
-
return { ...next, phase: "writing", resumePhase: undefined };
|
|
379
|
-
}
|
|
380
|
-
if (CORE_ACTIVE_PHASES.has(base)) return { ...next, resumePhase: undefined };
|
|
381
|
-
return next;
|
|
382
|
-
}
|
|
364
|
+
case "message_start":
|
|
365
|
+
case "message_update":
|
|
366
|
+
return refreshMeaningful(prev, ctx);
|
|
383
367
|
case "tool_execution_update":
|
|
384
368
|
return refreshMeaningful(prev, ctx);
|
|
385
369
|
case "message_end":
|
|
@@ -390,10 +374,22 @@ export function reduceStatus(prev: AgentStatus, event: StatusInputEvent, ctx: Re
|
|
|
390
374
|
runTally: foldMessageIntoRunTally(prev.runTally ?? emptyRunTally(), event.message),
|
|
391
375
|
};
|
|
392
376
|
case "tool_execution_end": {
|
|
393
|
-
const
|
|
394
|
-
|
|
377
|
+
const activeTools = (prev.activeTools ?? []).filter((tool) => tool.toolCallId !== event.toolCallId);
|
|
378
|
+
const next = { ...refreshMeaningful(prev, ctx), activeTools };
|
|
379
|
+
const remaining = activeTools.at(-1);
|
|
380
|
+
if (remaining && prev.phase === "tool_running")
|
|
381
|
+
return { ...next, tool: remaining, toolStartedAt: remaining.startedAt };
|
|
382
|
+
if (prev.phase === "tool_running")
|
|
383
|
+
return { ...next, phase: "preparing", tool: undefined, toolStartedAt: undefined, activeTools: [] };
|
|
395
384
|
if (prev.phase === "stuck" && prev.resumePhase === "tool_running") {
|
|
396
|
-
return {
|
|
385
|
+
return {
|
|
386
|
+
...next,
|
|
387
|
+
phase: "preparing",
|
|
388
|
+
resumePhase: undefined,
|
|
389
|
+
tool: undefined,
|
|
390
|
+
toolStartedAt: undefined,
|
|
391
|
+
activeTools: [],
|
|
392
|
+
};
|
|
397
393
|
}
|
|
398
394
|
// A blocked call's end can land while an overlay is still visible
|
|
399
395
|
// (permission prompt not yet resolved, retry or dispatch in front).
|
|
@@ -422,7 +418,14 @@ export function reduceStatus(prev: AgentStatus, event: StatusInputEvent, ctx: Re
|
|
|
422
418
|
// tool is done (its end never landed or was an admission block): the
|
|
423
419
|
// model is generating, nothing is executing, so drop the tool display.
|
|
424
420
|
if (base === "preparing" || base === "waiting_model" || base === "writing" || base === "tool_running") {
|
|
425
|
-
return {
|
|
421
|
+
return {
|
|
422
|
+
...next,
|
|
423
|
+
phase: "thinking",
|
|
424
|
+
resumePhase: undefined,
|
|
425
|
+
tool: undefined,
|
|
426
|
+
toolStartedAt: undefined,
|
|
427
|
+
activeTools: [],
|
|
428
|
+
};
|
|
426
429
|
}
|
|
427
430
|
if (CORE_ACTIVE_PHASES.has(base)) return { ...next, resumePhase: undefined };
|
|
428
431
|
return next;
|
|
@@ -433,19 +436,34 @@ export function reduceStatus(prev: AgentStatus, event: StatusInputEvent, ctx: Re
|
|
|
433
436
|
// Streamed answer text while a tool still shows as running: same as
|
|
434
437
|
// above, the model is writing, so the running-tool spinner must clear.
|
|
435
438
|
if (base === "preparing" || base === "waiting_model" || base === "thinking" || base === "tool_running") {
|
|
436
|
-
return {
|
|
439
|
+
return {
|
|
440
|
+
...next,
|
|
441
|
+
phase: "writing",
|
|
442
|
+
resumePhase: undefined,
|
|
443
|
+
tool: undefined,
|
|
444
|
+
toolStartedAt: undefined,
|
|
445
|
+
activeTools: [],
|
|
446
|
+
};
|
|
437
447
|
}
|
|
438
448
|
if (CORE_ACTIVE_PHASES.has(base)) return { ...next, resumePhase: undefined };
|
|
439
449
|
return next;
|
|
440
450
|
}
|
|
441
451
|
case "tool_execution_start": {
|
|
442
452
|
const tool: ToolOverlay = {
|
|
453
|
+
toolCallId: event.toolCallId,
|
|
454
|
+
startedAt: ctx.now,
|
|
443
455
|
toolName: event.toolName,
|
|
444
456
|
toolPreview: compactPreview(event.args),
|
|
445
457
|
};
|
|
446
458
|
// Stamp this call's own start so the footer's running-tool timer counts
|
|
447
459
|
// from here, not from turn start.
|
|
448
|
-
return {
|
|
460
|
+
return {
|
|
461
|
+
...refreshMeaningful(prev, ctx),
|
|
462
|
+
phase: "tool_running",
|
|
463
|
+
tool,
|
|
464
|
+
toolStartedAt: ctx.now,
|
|
465
|
+
activeTools: [...(prev.activeTools ?? []).filter((active) => active.toolCallId !== event.toolCallId), tool],
|
|
466
|
+
};
|
|
449
467
|
}
|
|
450
468
|
case "retry_status": {
|
|
451
469
|
const phase = event.status.phase;
|
|
@@ -19,6 +19,8 @@ export interface RetryOverlay {
|
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
export interface ToolOverlay {
|
|
22
|
+
toolCallId?: string;
|
|
23
|
+
startedAt?: number;
|
|
22
24
|
toolName: string;
|
|
23
25
|
toolPreview: string;
|
|
24
26
|
}
|
|
@@ -104,6 +106,7 @@ export interface AgentStatus {
|
|
|
104
106
|
* phase leaves `tool_running`.
|
|
105
107
|
*/
|
|
106
108
|
toolStartedAt?: number | undefined;
|
|
109
|
+
activeTools?: readonly ToolOverlay[];
|
|
107
110
|
retry?: RetryOverlay | undefined;
|
|
108
111
|
dispatch?: DispatchOverlay | undefined;
|
|
109
112
|
/**
|
|
@@ -44,30 +44,31 @@ function coreVerb(status: AgentStatus): { text: string; toneHint: VerbRender["to
|
|
|
44
44
|
case "idle":
|
|
45
45
|
return null;
|
|
46
46
|
case "preparing":
|
|
47
|
-
return { text:
|
|
47
|
+
return { text: "Preparing", toneHint: "normal" };
|
|
48
48
|
case "waiting_model":
|
|
49
49
|
return {
|
|
50
|
-
text: tier >= 2 ? "
|
|
50
|
+
text: tier >= 2 ? "Waiting for model" : status.localRuntime ? "Waiting for local model" : "Waiting for model",
|
|
51
51
|
toneHint: "normal",
|
|
52
52
|
};
|
|
53
53
|
case "thinking":
|
|
54
|
-
return { text:
|
|
54
|
+
return { text: "Thinking", toneHint: "normal" };
|
|
55
55
|
case "writing":
|
|
56
|
-
return { text: "
|
|
56
|
+
return { text: "Writing", toneHint: "normal" };
|
|
57
57
|
case "tool_running": {
|
|
58
58
|
const name = status.tool?.toolName ?? "tool";
|
|
59
|
-
if (name === ToolNames.
|
|
60
|
-
|
|
59
|
+
if (name === ToolNames.Dispatch) return { text: "Waiting for worker", toneHint: "normal" };
|
|
60
|
+
if (name === ToolNames.AskUser) return { text: "Needs input", toneHint: "normal" };
|
|
61
|
+
return { text: `Running ${name}`, toneHint: "normal" };
|
|
61
62
|
}
|
|
62
63
|
case "tool_blocked":
|
|
63
|
-
return { text: "
|
|
64
|
+
return { text: "Needs approval", toneHint: "warn" };
|
|
64
65
|
case "retrying": {
|
|
65
66
|
const retry = status.retry;
|
|
66
67
|
const wait = retry && retry.waitMs > 0 ? ` · ${formatStatusElapsed(retry.waitMs)}` : "";
|
|
67
68
|
return { text: `retrying ${retry?.attempt ?? 0}/${retry?.maxAttempts ?? 0}${wait}`, toneHint: "warn" };
|
|
68
69
|
}
|
|
69
70
|
case "compacting":
|
|
70
|
-
return { text: "
|
|
71
|
+
return { text: "Compacting context", toneHint: "normal" };
|
|
71
72
|
case "dispatching": {
|
|
72
73
|
const agent = status.dispatch?.agentName;
|
|
73
74
|
if (tier >= 2)
|
|
@@ -75,7 +76,7 @@ function coreVerb(status: AgentStatus): { text: string; toneHint: VerbRender["to
|
|
|
75
76
|
return { text: agent ? `dispatching agent: ${agent}` : "dispatching agent", toneHint: "normal" };
|
|
76
77
|
}
|
|
77
78
|
case "stuck":
|
|
78
|
-
return { text: "
|
|
79
|
+
return { text: "No output", toneHint: "error" };
|
|
79
80
|
case "ended": {
|
|
80
81
|
const stop = status.summary?.stopReason ?? "stop";
|
|
81
82
|
const elapsed = status.summary ? ` · ${formatStatusElapsed(status.summary.elapsedMs)}` : "";
|
|
@@ -97,7 +98,7 @@ export function resolveFooterVerb(status: AgentStatus, now: number, terminalCols
|
|
|
97
98
|
if (status.phase === "stuck") {
|
|
98
99
|
const elapsed = elapsedSince(status, now);
|
|
99
100
|
return {
|
|
100
|
-
text: terminalCols < 60 ? "
|
|
101
|
+
text: terminalCols < 60 ? "No output" : `No output · ${elapsed} · Esc to cancel`,
|
|
101
102
|
toneHint: "error",
|
|
102
103
|
};
|
|
103
104
|
}
|
|
@@ -117,12 +118,12 @@ function inlineParts(
|
|
|
117
118
|
terminalCols: number,
|
|
118
119
|
): { text: string; hint: string | null; toneHint: VerbRender["toneHint"] } | null {
|
|
119
120
|
if (status.phase === "stuck")
|
|
120
|
-
return { text: `
|
|
121
|
+
return { text: `No output for ${noProgressSince(status, now)}.`, hint: "Press Esc to cancel.", toneHint: "error" };
|
|
121
122
|
const core = coreVerb(status);
|
|
122
123
|
if (!core) return null;
|
|
123
124
|
const text = core.text.replace(/^[a-z]/, (c) => c.toUpperCase());
|
|
124
125
|
if (status.watchdogTier >= 3) {
|
|
125
|
-
const hint = terminalCols < 50 ? null : `(no
|
|
126
|
+
const hint = terminalCols < 50 ? null : `(no output for ${noProgressSince(status, now)}; press Esc to cancel)`;
|
|
126
127
|
return { text, hint, toneHint: core.toneHint };
|
|
127
128
|
}
|
|
128
129
|
if (terminalCols < 50 || status.phase === "tool_blocked") return { text, hint: null, toneHint: core.toneHint };
|
|
@@ -10,11 +10,21 @@
|
|
|
10
10
|
|
|
11
11
|
import type { ClioSettings } from "../core/config.js";
|
|
12
12
|
import { getTerminationCoordinator } from "../core/termination.js";
|
|
13
|
-
import {
|
|
13
|
+
import {
|
|
14
|
+
type Component,
|
|
15
|
+
Container,
|
|
16
|
+
isKeyRelease,
|
|
17
|
+
isKeyRepeat,
|
|
18
|
+
matchesKey,
|
|
19
|
+
ScrollView,
|
|
20
|
+
Text,
|
|
21
|
+
type TUI,
|
|
22
|
+
VStack,
|
|
23
|
+
} from "../engine/tui.js";
|
|
14
24
|
import { ClioEditor, type EditorChrome } from "./clio-editor.js";
|
|
15
25
|
import { createProcessInteractiveShell } from "./interactive-shell.js";
|
|
16
26
|
import { type ClioKeybindingManager, createKeybindingManager } from "./keybinding-manager.js";
|
|
17
|
-
import { clioTheme, GLYPH } from "./theme/index.js";
|
|
27
|
+
import { brandMark, clioTheme, GLYPH } from "./theme/index.js";
|
|
18
28
|
|
|
19
29
|
export const INSTANT_SHELL_ENV = "CLIO_CODER_INSTANT_SHELL";
|
|
20
30
|
const DOUBLE_TAP_MS = 500;
|
|
@@ -133,17 +143,25 @@ function stageZeroRoot(
|
|
|
133
143
|
shutdownArmed: () => boolean,
|
|
134
144
|
): Component {
|
|
135
145
|
const theme = clioTheme();
|
|
146
|
+
// The same wordmark the hydrated header paints, through the same helper, so
|
|
147
|
+
// the `>C_` does not change color at adoption. `brandMark` and the theme
|
|
148
|
+
// tokens are Stage-0-safe: pure string composition with no I/O and no import
|
|
149
|
+
// outside the theme leaf this module already depends on.
|
|
150
|
+
// Three lines, matching the hydrated header's footprint so adoption does not
|
|
151
|
+
// shift the editor down the screen. The third is deliberately blank: it costs
|
|
152
|
+
// nothing and asserts nothing, where any real fact here would need I/O the
|
|
153
|
+
// boot path must not do.
|
|
136
154
|
const heading = new Text(
|
|
137
|
-
`${theme.style("title", "
|
|
155
|
+
`${brandMark(theme)} ${theme.style("title", "Clio Coder", { bold: true })}\n${theme.fg("muted", "Starting Clio · you can type now")}\n`,
|
|
138
156
|
0,
|
|
139
157
|
0,
|
|
140
158
|
);
|
|
159
|
+
// Only the armed-exit warning lives here. The reassurance that typing works
|
|
160
|
+
// is already the second heading line, and printing it twice on a two-line
|
|
161
|
+
// screen was the loudest thing on it.
|
|
141
162
|
const footer: Component = {
|
|
142
|
-
render: () =>
|
|
143
|
-
shutdownArmed()
|
|
144
|
-
? theme.fg("warning", "Ctrl+C again to exit · typed input will be recovered")
|
|
145
|
-
: theme.fg("dim", "Warming up · typing and submit are ready"),
|
|
146
|
-
],
|
|
163
|
+
render: () =>
|
|
164
|
+
shutdownArmed() ? [theme.fg("warning", "Ctrl+C again to exit · typed input will be recovered")] : [""],
|
|
147
165
|
invalidate: () => {},
|
|
148
166
|
};
|
|
149
167
|
if (mode === "fullscreen") {
|
|
@@ -182,7 +200,7 @@ export function createProcessTerminalLease(options: CreateProcessTerminalLeaseOp
|
|
|
182
200
|
[settings.chat.target, settings.chat.model].filter((part) => part && part.length > 0).join("·") || "starting",
|
|
183
201
|
getThinkingLabel: () => settings.chat.thinkingLevel ?? "off",
|
|
184
202
|
getSubmitKeyLabel: () => keybindings.getKeys("tui.input.submit")[0] ?? "Enter",
|
|
185
|
-
getNewlineKeyLabel: () => keybindings.getKeys("tui.input.newLine")[0] ?? "
|
|
203
|
+
getNewlineKeyLabel: () => keybindings.getKeys("tui.input.newLine")[0] ?? "Ctrl+J",
|
|
186
204
|
};
|
|
187
205
|
const editorChromeProxy: EditorChrome = {
|
|
188
206
|
getModelLabel: () => editorChrome.getModelLabel(),
|
|
@@ -193,7 +211,7 @@ export function createProcessTerminalLease(options: CreateProcessTerminalLeaseOp
|
|
|
193
211
|
getTurnPreparation: () => editorChrome.getTurnPreparation?.() ?? "idle",
|
|
194
212
|
willEnterSteer: (text) => editorChrome.willEnterSteer?.(text) ?? false,
|
|
195
213
|
getSubmitKeyLabel: () => editorChrome.getSubmitKeyLabel?.() ?? "Enter",
|
|
196
|
-
getNewlineKeyLabel: () => editorChrome.getNewlineKeyLabel?.() ?? "
|
|
214
|
+
getNewlineKeyLabel: () => editorChrome.getNewlineKeyLabel?.() ?? "Ctrl+J",
|
|
197
215
|
};
|
|
198
216
|
const shell =
|
|
199
217
|
options.testing?.shell ??
|
|
@@ -271,6 +289,12 @@ export function createProcessTerminalLease(options: CreateProcessTerminalLeaseOp
|
|
|
271
289
|
tui.requestRender();
|
|
272
290
|
return;
|
|
273
291
|
}
|
|
292
|
+
if (submissions.length > 0) {
|
|
293
|
+
shutdownArmed = false;
|
|
294
|
+
lastCtrlCAt = 0;
|
|
295
|
+
tui.requestRender();
|
|
296
|
+
return;
|
|
297
|
+
}
|
|
274
298
|
const pressedAt = now();
|
|
275
299
|
if (lastCtrlCAt > 0 && pressedAt - lastCtrlCAt <= DOUBLE_TAP_MS) {
|
|
276
300
|
lastCtrlCAt = 0;
|
|
@@ -283,11 +307,19 @@ export function createProcessTerminalLease(options: CreateProcessTerminalLeaseOp
|
|
|
283
307
|
};
|
|
284
308
|
|
|
285
309
|
inputDelegate = (data) => {
|
|
310
|
+
if (isKeyRelease(data)) return { consume: true };
|
|
311
|
+
if (
|
|
312
|
+
isKeyRepeat(data) &&
|
|
313
|
+
(matchesKey(data, "ctrl+c") ||
|
|
314
|
+
keybindings.matches(data, "clio-coder.exit") ||
|
|
315
|
+
keybindings.matches(data, "tui.input.submit"))
|
|
316
|
+
)
|
|
317
|
+
return { consume: true };
|
|
286
318
|
if (matchesKey(data, "ctrl+c")) {
|
|
287
319
|
handleStage0CtrlC();
|
|
288
320
|
return { consume: true };
|
|
289
321
|
}
|
|
290
|
-
if (keybindings.matches(data, "clio-coder.exit") && editor.getText().length === 0) {
|
|
322
|
+
if (keybindings.matches(data, "clio-coder.exit") && editor.getText().length === 0 && submissions.length === 0) {
|
|
291
323
|
requestShutdown();
|
|
292
324
|
return { consume: true };
|
|
293
325
|
}
|
|
@@ -302,7 +334,7 @@ export function createProcessTerminalLease(options: CreateProcessTerminalLeaseOp
|
|
|
302
334
|
};
|
|
303
335
|
|
|
304
336
|
const stableInput = (data: string) => inputDelegate(data);
|
|
305
|
-
const removeStableInput = tui.
|
|
337
|
+
const removeStableInput = tui.setApplicationInputPolicy(stableInput);
|
|
306
338
|
const stableSignal = (): void => {
|
|
307
339
|
if (applicationSignal) applicationSignal();
|
|
308
340
|
else handleStage0CtrlC();
|
|
@@ -1,120 +1,58 @@
|
|
|
1
|
-
/**
|
|
2
|
-
|
|
3
|
-
* becomes a decision about how much of each foldable transcript block is open
|
|
4
|
-
* before the operator touches it.
|
|
5
|
-
*
|
|
6
|
-
* The chat panel used to consult the verbosity string in four places, each
|
|
7
|
-
* spelling the rule a little differently, and nothing else (running rows, live
|
|
8
|
-
* tool output, worker cards in replay) consulted it at all. The panel now reads
|
|
9
|
-
* this policy once per frame and threads it down; the verbosity string never
|
|
10
|
-
* reaches a renderer.
|
|
11
|
-
*
|
|
12
|
-
* Operator toggles (`Alt+O`, `Alt+R`, expand-all, collapse-all) are overrides
|
|
13
|
-
* layered on top of this policy, not fights with it: the effective state of a
|
|
14
|
-
* block is `override ?? policy`, and `resolveFold` is that one rule.
|
|
15
|
-
*
|
|
16
|
-
* Pure module: no I/O, no UI imports.
|
|
17
|
-
*/
|
|
18
|
-
|
|
19
|
-
import type { OutputVerbosity } from "../core/defaults.js";
|
|
20
|
-
import type { ToolFoldDefault, ToolPresentationPolicy } from "../tools/presentation.js";
|
|
21
|
-
|
|
22
|
-
/** A block's fold state. The same vocabulary serves tools, workers, thinking, and local bash. */
|
|
23
|
-
export type Fold = ToolFoldDefault;
|
|
24
|
-
|
|
25
|
-
/** An operator's explicit choice for one block, or none. */
|
|
26
|
-
export type FoldOverride = Fold | undefined;
|
|
1
|
+
/** Presentation budgets for the same captured session. Detailed is still bounded. */
|
|
2
|
+
import type { OutputStyle } from "../core/defaults.js";
|
|
27
3
|
|
|
28
4
|
export interface TranscriptDetailPolicy {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
5
|
+
style: OutputStyle;
|
|
6
|
+
reasoningRows: number;
|
|
7
|
+
resultRows: number;
|
|
8
|
+
bashRows: number;
|
|
9
|
+
operatorBashRows: number;
|
|
10
|
+
diffRows: number;
|
|
11
|
+
workerRows: number;
|
|
12
|
+
workerActivity: boolean;
|
|
13
|
+
errorRows: number;
|
|
38
14
|
receipt: "none" | "compact" | "full";
|
|
39
|
-
/** Failed tool under its folded row: the bounded excerpt, or the full body. */
|
|
40
|
-
errors: "excerpt" | "body";
|
|
41
15
|
}
|
|
42
16
|
|
|
43
|
-
const
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
17
|
+
const POLICIES: Record<OutputStyle, TranscriptDetailPolicy> = {
|
|
18
|
+
compact: {
|
|
19
|
+
style: "compact",
|
|
20
|
+
reasoningRows: 0,
|
|
21
|
+
resultRows: 0,
|
|
22
|
+
bashRows: 0,
|
|
23
|
+
operatorBashRows: 3,
|
|
24
|
+
diffRows: 0,
|
|
25
|
+
workerRows: 0,
|
|
26
|
+
workerActivity: false,
|
|
27
|
+
errorRows: 4,
|
|
28
|
+
receipt: "none",
|
|
29
|
+
},
|
|
30
|
+
standard: {
|
|
31
|
+
style: "standard",
|
|
32
|
+
reasoningRows: 3,
|
|
33
|
+
resultRows: 0,
|
|
34
|
+
bashRows: 0,
|
|
35
|
+
operatorBashRows: 6,
|
|
36
|
+
diffRows: 8,
|
|
37
|
+
workerRows: 3,
|
|
38
|
+
workerActivity: false,
|
|
39
|
+
errorRows: 4,
|
|
40
|
+
receipt: "compact",
|
|
41
|
+
},
|
|
42
|
+
detailed: {
|
|
43
|
+
style: "detailed",
|
|
44
|
+
reasoningRows: 12,
|
|
45
|
+
resultRows: 8,
|
|
46
|
+
bashRows: 12,
|
|
47
|
+
operatorBashRows: 12,
|
|
48
|
+
diffRows: 20,
|
|
49
|
+
workerRows: 8,
|
|
50
|
+
workerActivity: true,
|
|
51
|
+
errorRows: 12,
|
|
52
|
+
receipt: "full",
|
|
53
|
+
},
|
|
59
54
|
};
|
|
60
55
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
runningTool: "body",
|
|
64
|
-
thinking: "rail",
|
|
65
|
-
worker: "expanded",
|
|
66
|
-
receipt: "full",
|
|
67
|
-
errors: "body",
|
|
68
|
-
};
|
|
69
|
-
|
|
70
|
-
/**
|
|
71
|
-
* Map a verbosity to the full policy table. An absent verbosity (a panel built
|
|
72
|
-
* without settings) is the balanced default, so the literal never has to be
|
|
73
|
-
* spelled by the caller.
|
|
74
|
-
*/
|
|
75
|
-
export function transcriptDetail(verbosity: OutputVerbosity | undefined): TranscriptDetailPolicy {
|
|
76
|
-
switch (verbosity) {
|
|
77
|
-
case "minimal":
|
|
78
|
-
return MINIMAL;
|
|
79
|
-
case "verbose":
|
|
80
|
-
return VERBOSE;
|
|
81
|
-
default:
|
|
82
|
-
return DEFAULT;
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
/** Effective state of one block: the operator's override when set, else the policy's answer. */
|
|
87
|
-
export function resolveFold(override: FoldOverride, policyFold: Fold): Fold {
|
|
88
|
-
return override ?? policyFold;
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
/** The fold the policy gives a finished tool call, through the tool's own presentation when asked to. */
|
|
92
|
-
export function policyToolFold(detail: TranscriptDetailPolicy, presentation: ToolPresentationPolicy): Fold {
|
|
93
|
-
if (detail.toolBody === "per-tool") return presentation.foldDefault;
|
|
94
|
-
return detail.toolBody;
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
/** The fold the policy gives an in-flight tool call. */
|
|
98
|
-
export function policyRunningToolFold(detail: TranscriptDetailPolicy): Fold {
|
|
99
|
-
return detail.runningTool === "body" ? "expanded" : "folded";
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
/** The fold the policy gives a reasoning stretch. */
|
|
103
|
-
export function policyThinkingFold(detail: TranscriptDetailPolicy): Fold {
|
|
104
|
-
return detail.thinking === "rail" ? "expanded" : "folded";
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
/**
|
|
108
|
-
* The fold the policy gives a worker block. `askedByModel` is the origin rule
|
|
109
|
-
* the caller already knows: a run the model asked for folds, the operator's own
|
|
110
|
-
* run opens.
|
|
111
|
-
*/
|
|
112
|
-
export function policyWorkerFold(detail: TranscriptDetailPolicy, askedByModel: boolean): Fold {
|
|
113
|
-
if (detail.worker === "origin") return askedByModel ? "folded" : "expanded";
|
|
114
|
-
return detail.worker;
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
/** The override that flips a block away from its current effective state. */
|
|
118
|
-
export function toggledFold(effective: Fold): Fold {
|
|
119
|
-
return effective === "expanded" ? "folded" : "expanded";
|
|
56
|
+
export function transcriptDetail(style: OutputStyle = "standard"): TranscriptDetailPolicy {
|
|
57
|
+
return POLICIES[style];
|
|
120
58
|
}
|
|
@@ -25,6 +25,7 @@ export type SteeringMode = "interrupt" | "next-slot" | "end-of-turn";
|
|
|
25
25
|
export const DEFAULT_STEERING_MODE: SteeringMode = "next-slot";
|
|
26
26
|
|
|
27
27
|
export interface QueuedChatMessage {
|
|
28
|
+
display?: { text: string; note: string };
|
|
28
29
|
text: string;
|
|
29
30
|
kind: QueuedMessageKind;
|
|
30
31
|
}
|
|
@@ -50,8 +51,8 @@ export interface TurnQueuesDeps {
|
|
|
50
51
|
}
|
|
51
52
|
|
|
52
53
|
export interface TurnQueues {
|
|
53
|
-
steer(text: string): boolean;
|
|
54
|
-
queueFollowUp(text: string): boolean;
|
|
54
|
+
steer(text: string, display?: QueuedChatMessage["display"]): boolean;
|
|
55
|
+
queueFollowUp(text: string, display?: QueuedChatMessage["display"]): boolean;
|
|
55
56
|
queuedMessages(): QueuedMessagesSnapshot;
|
|
56
57
|
/** Drain the mirror and both engine queues; returns the drained entries. */
|
|
57
58
|
clearQueuedMirror(): QueuedChatMessage[];
|
|
@@ -69,7 +70,7 @@ export function createTurnQueues(deps: TurnQueuesDeps): TurnQueues {
|
|
|
69
70
|
const { state } = deps;
|
|
70
71
|
// UI mirror of both engine queues, in enqueue order. Entries leave when
|
|
71
72
|
// the engine injects them into the transcript (message_end →
|
|
72
|
-
// appendQueuedUserTurn), when
|
|
73
|
+
// appendQueuedUserTurn), when Alt+Q restores them to the editor, or when
|
|
73
74
|
// a cancel clears the run.
|
|
74
75
|
const queuedMirror: QueuedChatMessage[] = [];
|
|
75
76
|
const persistedUserEchoes: string[] = [];
|
|
@@ -82,7 +83,7 @@ export function createTurnQueues(deps: TurnQueuesDeps): TurnQueues {
|
|
|
82
83
|
// that a message is pending, exactly as pi-coding-agent's pending container
|
|
83
84
|
// works. The former per-steer transcript notice duplicated the panel and
|
|
84
85
|
// left a permanent line for a transient state.
|
|
85
|
-
const enqueue = (text: string, kind: QueuedMessageKind): boolean => {
|
|
86
|
+
const enqueue = (text: string, kind: QueuedMessageKind, display?: QueuedChatMessage["display"]): boolean => {
|
|
86
87
|
// The payload crosses to the model exactly as it was submitted; only the
|
|
87
88
|
// emptiness test reads a trimmed copy. A queued turn that shortened its own
|
|
88
89
|
// text here would land in the ledger disagreeing with the expansion that
|
|
@@ -93,7 +94,7 @@ export function createTurnQueues(deps: TurnQueuesDeps): TurnQueues {
|
|
|
93
94
|
content: text,
|
|
94
95
|
timestamp: Date.now(),
|
|
95
96
|
} as AgentMessage;
|
|
96
|
-
queuedMirror.push({ text, kind });
|
|
97
|
+
queuedMirror.push({ text, kind, ...(display ? { display } : {}) });
|
|
97
98
|
if (kind === "steer") {
|
|
98
99
|
state.runtime.agent.steer(message);
|
|
99
100
|
} else {
|
|
@@ -104,8 +105,8 @@ export function createTurnQueues(deps: TurnQueuesDeps): TurnQueues {
|
|
|
104
105
|
};
|
|
105
106
|
|
|
106
107
|
return {
|
|
107
|
-
steer: (text) => enqueue(text, "steer"),
|
|
108
|
-
queueFollowUp: (text) => enqueue(text, "follow-up"),
|
|
108
|
+
steer: (text, display) => enqueue(text, "steer", display),
|
|
109
|
+
queueFollowUp: (text, display) => enqueue(text, "follow-up", display),
|
|
109
110
|
queuedMessages(): QueuedMessagesSnapshot {
|
|
110
111
|
return {
|
|
111
112
|
steer: queuedMirror.filter((entry) => entry.kind === "steer").map((entry) => entry.text),
|
|
@@ -398,7 +398,7 @@ export function createTurnRuntime(deps: TurnRuntimeDeps): TurnRuntime {
|
|
|
398
398
|
) {
|
|
399
399
|
// Same target+runtime+model. Settings may still have moved
|
|
400
400
|
// thinkingLevel since the last call (the user invoked /thinking
|
|
401
|
-
// or
|
|
401
|
+
// or Shift+Tab); reconcile the clamped level so the next prompt
|
|
402
402
|
// dispatches under the current intent without forcing a rebuild.
|
|
403
403
|
ensureReasoningProbe(target);
|
|
404
404
|
const runtimeResolution = refineRuntimeTargetWithModelHints(
|
|
@@ -44,6 +44,7 @@ import { clockLocal } from "../format-time.js";
|
|
|
44
44
|
import { abbreviateModelId } from "../theme/index.js";
|
|
45
45
|
|
|
46
46
|
export type ViewArtifactCategory =
|
|
47
|
+
| "transcript"
|
|
47
48
|
| "accountability"
|
|
48
49
|
| "evidence"
|
|
49
50
|
| "receipt"
|
|
@@ -86,6 +87,7 @@ export interface ArtifactProvider {
|
|
|
86
87
|
}
|
|
87
88
|
|
|
88
89
|
export interface ArtifactProviderDeps {
|
|
90
|
+
readTranscript?: (() => ViewArtifact[]) | undefined;
|
|
89
91
|
stateDir: string;
|
|
90
92
|
dataDir?: string | undefined;
|
|
91
93
|
dispatch?: Pick<DispatchContract, "listRuns" | "getRun"> | undefined;
|
|
@@ -94,6 +96,7 @@ export interface ArtifactProviderDeps {
|
|
|
94
96
|
}
|
|
95
97
|
|
|
96
98
|
export const VIEW_ARTIFACT_CATEGORIES: readonly ViewArtifactCategory[] = [
|
|
99
|
+
"transcript",
|
|
97
100
|
"accountability",
|
|
98
101
|
"evidence",
|
|
99
102
|
"receipt",
|
|
@@ -1560,6 +1563,7 @@ export class SafetyAuditArtifactProvider implements ArtifactProvider {
|
|
|
1560
1563
|
|
|
1561
1564
|
export function createDefaultArtifactProviders(deps: ArtifactProviderDeps): ArtifactProvider[] {
|
|
1562
1565
|
return [
|
|
1566
|
+
{ category: "transcript", list: async () => deps.readTranscript?.() ?? [] },
|
|
1563
1567
|
new AccountabilityArtifactProvider(deps),
|
|
1564
1568
|
new EvidenceArtifactProvider(deps),
|
|
1565
1569
|
new ReceiptArtifactProvider(deps),
|