@iowarp/clio-coder 0.4.6 → 0.4.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +283 -0
- package/CHANGELOG.md +50 -0
- package/CONTRIBUTING.md +102 -29
- package/NOTICE +8 -0
- package/README.md +37 -5
- package/dist/{acp-UVEVWSDL.js → acp-W3Y3TRHD.js} +12 -12
- package/dist/{agents-VWY37DTK.js → agents-J4ICNLQ3.js} +52 -52
- package/dist/assets/codewiki.json +1 -1
- package/dist/assets/tui-notices/get-east-asian-width-LICENSE +9 -0
- package/dist/assets/tui-notices/marked-LICENSE +44 -0
- package/dist/assets/tui-notices/pi-tui-LICENSE +21 -0
- package/dist/{auth-PCV2XQDV.js → auth-X2UJUMOC.js} +24 -24
- package/dist/{builtins-PD652MTK.js → builtins-XLXWWSRF.js} +6 -6
- package/dist/{chunk-DZK63TZJ.js → chunk-24S3DN22.js} +336 -612
- package/dist/{chunk-NTK3WTHM.js → chunk-24TOGHPO.js} +2 -2
- package/dist/{chunk-M6TAYK66.js → chunk-2O2LVQQK.js} +11 -4
- package/dist/{chunk-OQM5IVJY.js → chunk-34XHRVKG.js} +3 -3
- package/dist/{chunk-LY4N4TTL.js → chunk-3LXJOICS.js} +2 -2
- package/dist/{chunk-3BJGMT2D.js → chunk-3XE4NRLF.js} +1 -1
- package/dist/{chunk-N2OKBREN.js → chunk-4MFBBY2Z.js} +3 -3
- package/dist/{chunk-5VTJP36Q.js → chunk-4N2RZ4TO.js} +2 -2
- package/dist/{chunk-WNGF5AJX.js → chunk-4QKAITQT.js} +3 -3
- package/dist/chunk-4UHVS5T7.js +207 -0
- package/dist/{chunk-GLYBJ4RQ.js → chunk-5AJPUR72.js} +6 -6
- package/dist/{chunk-5CY4Q6QI.js → chunk-5EQO5NWP.js} +105 -3
- package/dist/{chunk-6HAO6X5B.js → chunk-65BGHOUR.js} +8 -5
- package/dist/{chunk-6VRRJT7L.js → chunk-6CA2BHOR.js} +2 -2
- package/dist/{chunk-HL26ADLH.js → chunk-6CB2IL4N.js} +2 -1
- package/dist/{chunk-E7RF4KBO.js → chunk-6LRLOJHQ.js} +3 -3
- package/dist/{chunk-HXHFDHB6.js → chunk-6TAATXXH.js} +6 -6
- package/dist/{chunk-P6M7RKMI.js → chunk-6YHPAAZR.js} +3 -3
- package/dist/{chunk-5QRX7SLS.js → chunk-7EEGBKV4.js} +7 -7
- package/dist/{chunk-BS4GAMUB.js → chunk-A67NR5AT.js} +2 -2
- package/dist/{chunk-WJIMKGD6.js → chunk-BAU36233.js} +8 -8
- package/dist/{chunk-PZN2LQY6.js → chunk-BO4XV5VX.js} +4 -4
- package/dist/{chunk-I2K2NCZQ.js → chunk-BQQ5MXUC.js} +6 -6
- package/dist/{chunk-X3BI7HTV.js → chunk-C3G5PNUO.js} +21 -21
- package/dist/{chunk-SRZOW5L2.js → chunk-C6GEXX4L.js} +1 -1
- package/dist/{chunk-6RYDAVQT.js → chunk-CE64C5K5.js} +219 -64
- package/dist/chunk-CP3HIR5H.js +2119 -0
- package/dist/{chunk-BBV5TKE6.js → chunk-CPXGJI2A.js} +2 -2
- package/dist/{chunk-IGLVVNEG.js → chunk-CULVKYTK.js} +4 -4
- package/dist/{chunk-DXLUVUD4.js → chunk-D2T66PDV.js} +5 -5
- package/dist/{chunk-NF3BK5WR.js → chunk-DACXIVVF.js} +5 -5
- package/dist/{chunk-IKRWLEDA.js → chunk-DLIYANB7.js} +20 -15
- package/dist/{chunk-RGZNQ5CT.js → chunk-DO7M3LSX.js} +9 -9
- package/dist/{chunk-2QPI3TR3.js → chunk-DVJL77SO.js} +2 -2
- package/dist/{chunk-ODUTYZIU.js → chunk-EUEXGXXR.js} +5 -5
- package/dist/{chunk-WKUYQBCG.js → chunk-EUZRMP4Y.js} +18 -16
- package/dist/{chunk-JMPL7NUB.js → chunk-G4LGUTOE.js} +4 -4
- package/dist/{chunk-CBSKDFWL.js → chunk-GEVQNST4.js} +2 -2
- package/dist/{chunk-NNWJYUNO.js → chunk-GFQ7P2UF.js} +7 -7
- package/dist/{chunk-SXQKNKRA.js → chunk-GI5RRMAH.js} +14 -14
- package/dist/{chunk-HPTJF6DG.js → chunk-GVZFCJHE.js} +336 -83
- package/dist/{chunk-ACCKVSHU.js → chunk-GXIWHXDB.js} +3 -3
- package/dist/{chunk-LUL5Z66S.js → chunk-HOX4YZ2K.js} +6 -5
- package/dist/chunk-HRAKUPIH.js +57 -0
- package/dist/{chunk-F5Z7EWMN.js → chunk-IJMW64DX.js} +50 -50
- package/dist/{chunk-QNWRHOMF.js → chunk-IMOD2YPV.js} +16 -9
- package/dist/{chunk-HZ2T2YED.js → chunk-IQCNVLO6.js} +28 -8
- package/dist/{chunk-HZFBVU5X.js → chunk-ISNCCX42.js} +8 -8
- package/dist/{chunk-7JSSKXG2.js → chunk-IZYTT3CD.js} +7 -3
- package/dist/chunk-KKEYGFX4.js +915 -0
- package/dist/{chunk-HHVJNVUJ.js → chunk-KS7ETA3P.js} +2 -2
- package/dist/{chunk-BLTEAUCB.js → chunk-L3Z5ANCV.js} +7 -7
- package/dist/{chunk-4VMV6OS6.js → chunk-LBFQMYS3.js} +2 -2
- package/dist/{chunk-URBGEOH3.js → chunk-M6Z2V6YU.js} +5 -5
- package/dist/{chunk-BT7HGDOX.js → chunk-MBJO5VNZ.js} +12 -12
- package/dist/chunk-MNQN3X6Y.js +595 -0
- package/dist/{chunk-3QKXHCGS.js → chunk-MZHXENL7.js} +5 -5
- package/dist/chunk-MZNWZUJM.js +1801 -0
- package/dist/{chunk-7YJWEF2L.js → chunk-N37QC5FV.js} +5 -5
- package/dist/{chunk-TJFDL26W.js → chunk-NCCQ6DVS.js} +7 -7
- package/dist/{chunk-P5JMBPDJ.js → chunk-NO7J45X6.js} +162 -47
- package/dist/chunk-OH3YYA3B.js +15 -0
- package/dist/{chunk-22PQ4TX4.js → chunk-P4DL2LM5.js} +16 -77
- package/dist/{chunk-LIN2K3EL.js → chunk-PFLOULP3.js} +4 -4
- package/dist/{chunk-QXFBABFJ.js → chunk-QKWL7SYE.js} +11 -11
- package/dist/chunk-RFCKPS2V.js +26 -0
- package/dist/{chunk-ZS43Y2FT.js → chunk-RTLNFZMD.js} +12 -4
- package/dist/{chunk-U7H5WRG5.js → chunk-RXFPB32E.js} +8 -6
- package/dist/{chunk-Q7NNUHQV.js → chunk-SEDI5K5B.js} +16 -16
- package/dist/{chunk-WV6TDAPN.js → chunk-SELG4SUR.js} +7 -7
- package/dist/{chunk-3WBALRQH.js → chunk-SER7RRAE.js} +27 -832
- package/dist/{chunk-K2HL3GBL.js → chunk-T4TY5GG3.js} +165 -15
- package/dist/chunk-T7QQBNLH.js +691 -0
- package/dist/{chunk-6OII3LOK.js → chunk-TLTGZTXI.js} +3 -3
- package/dist/chunk-TZ6UVP2H.js +637 -0
- package/dist/{chunk-3JLFK5MW.js → chunk-TZHN5ITX.js} +13 -41
- package/dist/{chunk-VANN3GDP.js → chunk-U3TPUXOQ.js} +399 -234
- package/dist/{chunk-VHMX7SXF.js → chunk-UA3W4FGC.js} +6 -6
- package/dist/{chunk-3O2ZAUGQ.js → chunk-UA6W4XFJ.js} +2 -2
- package/dist/chunk-UWD3JD5X.js +709 -0
- package/dist/chunk-V4ZKOKRB.js +13433 -0
- package/dist/{chunk-NC4KV7EL.js → chunk-VCRVEDUC.js} +5 -5
- package/dist/{chunk-4DU2TVI4.js → chunk-VMATUZB6.js} +12 -10
- package/dist/{chunk-J2FYEQ5L.js → chunk-VTYHHQ57.js} +2 -2
- package/dist/chunk-WB7POC6M.js +891 -0
- package/dist/{chunk-3HQVBIKD.js → chunk-WBVKKTUT.js} +2 -2
- package/dist/{chunk-EHOSNVVM.js → chunk-WLHX3MM5.js} +6 -2
- package/dist/{chunk-24T2YZ7A.js → chunk-WN552PKN.js} +553 -298
- package/dist/{chunk-4U4TKZFR.js → chunk-WT5TRMO4.js} +51 -26
- package/dist/{chunk-XWMSPJYN.js → chunk-WURGVOZJ.js} +56 -12
- package/dist/{chunk-7WUZEB2M.js → chunk-XR3XJN2M.js} +2 -2
- package/dist/chunk-XW2UZICE.js +372 -0
- package/dist/{chunk-2AKYFREM.js → chunk-XZ6UFQ52.js} +11 -11
- package/dist/chunk-Y3JU5RPK.js +8 -0
- package/dist/chunk-YKRJTYNP.js +1143 -0
- package/dist/{chunk-PWWSIB2A.js → chunk-ZGIGW4ZG.js} +5 -5
- package/dist/cli/index.js +34 -36
- package/dist/{clio-QQCMTUZE.js → clio-L2P7S2R2.js} +9 -9
- package/dist/{code-nav-GUPM6766.js → code-nav-B5LNX4KU.js} +25 -25
- package/dist/{components-TNIKXCBH.js → components-63MMQKUT.js} +6 -6
- package/dist/{config-IIM7YOD3.js → config-YXARKGTX.js} +70 -67
- package/dist/{configure-4ZM5HWJX.js → configure-LMVQJ46J.js} +47 -35
- package/dist/{context-OL5P3HEP.js → context-7HJEWTTP.js} +87 -44
- package/dist/{context-44BZLJ3J.js → context-XSZKKFBW.js} +14 -14
- package/dist/{context-AIDVQKMW.js → context-YG2LZDYZ.js} +60 -58
- package/dist/{context-clear-OQV76MYP.js → context-clear-AC5NXHM2.js} +57 -55
- package/dist/{context-index-HP2JFUWA.js → context-index-KKTPRV5G.js} +3 -3
- package/dist/{context-map-INTXD54D.js → context-map-T7ROR5D5.js} +4 -4
- package/dist/{context-working-set-ZUW3EGLS.js → context-working-set-F4Q4J3NS.js} +12 -10
- package/dist/{detail-UXPWRANG.js → detail-H73BEF2N.js} +58 -56
- package/dist/{dispatch-runner-P3ZW6G77.js → dispatch-runner-3RY5FSJC.js} +74 -72
- package/dist/{doctor-JJVGPZWT.js → doctor-EQYJOGUG.js} +44 -30
- package/dist/{eval-V2RTN3UH.js → eval-4P7O6CCE.js} +109 -46
- package/dist/{evidence-35PYWGSO.js → evidence-D6GUSYJW.js} +57 -55
- package/dist/{evidence-CIGGKI6J.js → evidence-O76QF7TZ.js} +62 -59
- package/dist/{evolve-33SM3NJP.js → evolve-H47BCETS.js} +58 -56
- package/dist/{extensions-YVRHX6ZI.js → extensions-NNL3ZOCU.js} +98 -20
- package/dist/{fleet-LFO7SIPC.js → fleet-KMNS6NOM.js} +106 -99
- package/dist/{fleet-commands-RLK72GU3.js → fleet-commands-DOWSYCBX.js} +14 -14
- package/dist/{fleet-decisions-3SBSCTCW.js → fleet-decisions-S3PTZV2D.js} +9 -9
- package/dist/{fleet-graph-JZIBCGMW.js → fleet-graph-F2DE2TME.js} +26 -24
- package/dist/{fleet-inspect-2L5YGGZJ.js → fleet-inspect-EN2Q6IVB.js} +60 -57
- package/dist/{fleet-preflight-QRSHIIDE.js → fleet-preflight-FRLETDD3.js} +3 -3
- package/dist/{fleet-validate-LIAVKDUU.js → fleet-validate-B2XDLS57.js} +28 -29
- package/dist/{fleet-verify-JIK3OQZR.js → fleet-verify-4JKUWGJ7.js} +57 -55
- package/dist/{fleet-view-IWHYGQKK.js → fleet-view-BHJFW26B.js} +60 -57
- package/dist/{init-NJEDOTQW.js → init-XAT5N5YM.js} +79 -74
- package/dist/interop-FVECHFKG.js +246 -0
- package/dist/{inventory-74UL7UHU.js → inventory-7KFQGLCV.js} +60 -57
- package/dist/library-NY2XOT75.js +492 -0
- package/dist/library-QAPAO23R.js +306 -0
- package/dist/library-import-5Y6MAS3R.js +183 -0
- package/dist/library-inventory-JT6HWITQ.js +56 -0
- package/dist/library-validation-EQUH25DC.js +42 -0
- package/dist/{memory-I76I5VUH.js → memory-DYVTTCP6.js} +58 -56
- package/dist/{models-D4YDIQZQ.js → models-MASFJ6Y2.js} +48 -36
- package/dist/{monitor-NKVD55HX.js → monitor-YMP4NXJJ.js} +64 -61
- package/dist/{orchestrator-I6OATVPK.js → orchestrator-AFQRRTEI.js} +3685 -1841
- package/dist/{panes-7BTYH3XQ.js → panes-D3Y2KFG5.js} +4 -4
- package/dist/{panes-WPOMEMRH.js → panes-NICTHQCV.js} +7 -7
- package/dist/{paths-J3KN7UAO.js → paths-PSFAUIGO.js} +5 -5
- package/dist/{preload-EJAWJEIO.js → preload-5Q7VXRFJ.js} +57 -55
- package/dist/{reset-4XMQKDNZ.js → reset-7NKZK7JN.js} +9 -9
- package/dist/{resources-TVYVXK3Q.js → resources-NILSIZAT.js} +94 -38
- package/dist/{run-OWQNNSJU.js → run-BPZGEBZV.js} +121 -105
- package/dist/{share-NPZZMUXG.js → share-EZ6ERBMH.js} +31 -28
- package/dist/skills-BTVVNYVM.js +100 -0
- package/dist/{skills-eval-J5TCKSJA.js → skills-eval-UY34MNK7.js} +110 -72
- package/dist/{skills-inventory-7II4DM57.js → skills-inventory-JDHSIA7I.js} +30 -25
- package/dist/{slash-commands-MDSDSWYF.js → slash-commands-K4FNQ2AT.js} +49 -46
- package/dist/{steer-S7D7IKPU.js → steer-2B3EQGFH.js} +4 -4
- package/dist/{support-5VAEC32W.js → support-L2SOL3IE.js} +7 -7
- package/dist/{targets-KILZEOCE.js → targets-44VKGFLN.js} +64 -58
- package/dist/{tasks-R6P6OV22.js → tasks-3KODKFU7.js} +12 -12
- package/dist/{terminal-lease-LZCG2KN3.js → terminal-lease-LXA7MMPO.js} +32 -19
- package/dist/{tools-6OCQ6SVB.js → tools-3UB7TEVR.js} +7 -7
- package/dist/{trace-JHLXWUMN.js → trace-TAMIU4OJ.js} +5 -4
- package/dist/{tui-primitives-RCY2HN7G.js → tui-primitives-A6MUW32V.js} +3 -2
- package/dist/{uninstall-FXYMFFRT.js → uninstall-QYVRPEM4.js} +9 -9
- package/dist/{upgrade-D2OZH6IQ.js → upgrade-7PMKM2JH.js} +15 -16
- package/dist/{usage-PIASNUS4.js → usage-6EQV7EQK.js} +70 -67
- package/dist/{verifiers-LTHUY2PX.js → verifiers-JLITWSHU.js} +15 -15
- package/dist/{verify-HYF7KBVE.js → verify-T7NAEVIG.js} +13 -13
- package/dist/{web-fetch-MQN4FH3X.js → web-fetch-W4TNW4Q7.js} +4 -4
- package/dist/{wiki-generate-RK7JQ5NP.js → wiki-generate-T2TJQJUA.js} +81 -76
- package/dist/{with-panes-OFTNAR4Y.js → with-panes-CHFC7HGI.js} +4 -4
- package/dist/worker/entry.js +283 -76
- package/docs/README.md +43 -0
- package/docs/architecture/architecture.md +8 -7
- package/docs/architecture/artifact-versions.md +3 -3
- package/docs/architecture/context-engine.md +35 -1
- package/docs/architecture/library.md +32 -0
- package/docs/architecture/middleware-and-components.md +1 -1
- package/docs/architecture/model-catalog.md +21 -1
- package/docs/architecture/pi-boundary.md +18 -0
- package/docs/architecture/prompt-envelope-and-tools.md +5 -5
- package/docs/architecture/safety-model.md +21 -2
- package/docs/architecture/session-lifecycle.md +12 -1
- package/docs/architecture/tui-design.md +108 -9
- package/docs/architecture/worker-context.md +106 -0
- package/docs/guide/authoring-plugins.md +160 -0
- package/docs/guide/built-in-agents.md +5 -5
- package/docs/guide/commands-and-modes.md +161 -56
- package/docs/guide/configuration-and-targets.md +1 -1
- package/docs/guide/configuration-reference.md +27 -34
- package/docs/guide/environment-variables.md +2 -2
- package/docs/guide/exit-codes-and-output.md +1 -1
- package/docs/guide/extensions-and-sharing.md +93 -53
- package/docs/guide/fleet-dispatch.md +31 -4
- package/docs/guide/glossary.md +1 -1
- package/docs/guide/harness-extensions.md +291 -0
- package/docs/guide/installation-and-lifecycle.md +9 -9
- package/docs/guide/interop.md +243 -0
- package/docs/guide/panes-and-files.md +3 -3
- package/docs/guide/plugins.md +80 -0
- package/docs/guide/resource-library.md +111 -45
- package/docs/guide/skills-marketplace.md +35 -72
- package/docs/guide/tool-usage.md +19 -7
- package/docs/guide/troubleshooting.md +1 -1
- package/docs/process/development-pipeline.md +14 -14
- package/docs/process/documentation-coverage.md +28 -1
- package/docs/process/documentation-guide.md +15 -7
- package/docs/process/eval-runner.md +8 -3
- package/docs/process/performance-methodology.md +1 -1
- package/docs/process/release-cut-checklist.md +4 -0
- package/docs/process/scientific-validation.md +23 -0
- package/evals/scalar-decision-machinery.ts +1 -1
- package/examples/extensions/README.md +67 -0
- package/examples/extensions/lab-status/clio-coder-extension.json +14 -0
- package/examples/extensions/lab-status/extension.mjs +68 -0
- package/examples/extensions/lab-status/jobs.synthetic.json +9 -0
- package/examples/extensions/measurements/clio-coder-extension.json +28 -0
- package/examples/extensions/measurements/summarize.cjs +23 -0
- package/library/README.md +109 -0
- package/library/_authoring/templates/agent/README.md +28 -0
- package/library/_authoring/templates/agent/agents/benchmark-scout.md +30 -0
- package/library/_authoring/templates/agent/plugin.json +23 -0
- package/library/_authoring/templates/fleet/README.md +29 -0
- package/library/_authoring/templates/fleet/fleets/pipeline-review.md +31 -0
- package/library/_authoring/templates/fleet/plugin.json +23 -0
- package/library/_authoring/templates/plugin/README.md +37 -0
- package/library/_authoring/templates/plugin/agents/data-curator.md +31 -0
- package/library/_authoring/templates/plugin/assets/curation-guide.md +22 -0
- package/library/_authoring/templates/plugin/plugin.json +42 -0
- package/library/_authoring/templates/plugin/prompts/inspect-dataset.md +15 -0
- package/library/_authoring/templates/plugin/skills/dataset-curation/SKILL.md +36 -0
- package/library/_authoring/templates/plugin/skills/dataset-curation/evals.md +17 -0
- package/library/_authoring/templates/prompt/README.md +28 -0
- package/library/_authoring/templates/prompt/plugin.json +23 -0
- package/library/_authoring/templates/prompt/prompts/paper-summary.md +26 -0
- package/library/_authoring/templates/skill/README.md +24 -0
- package/library/_authoring/templates/skill/SKILL.md +39 -0
- package/library/_authoring/templates/skill/evals.md +30 -0
- package/library/_authoring/templates/skill/plugin.json +23 -0
- package/library/agents/README.md +7 -0
- package/library/fleets/README.md +7 -0
- package/library/plugins/materio/README.md +137 -0
- package/library/plugins/materio/ai.iowarp.clio/agents/materio-lab-definer.md +208 -0
- package/library/plugins/materio/ai.iowarp.clio/agents/materio-literature-reviewer.md +308 -0
- package/library/plugins/materio/ai.iowarp.clio/agents/materio-research-explorer.md +249 -0
- package/library/plugins/materio/ai.iowarp.clio/agents/materio-task-executor.md +416 -0
- package/library/plugins/materio/ai.iowarp.clio/agents/materio-task-verifier.md +60 -0
- package/library/plugins/materio/ai.iowarp.clio/agents/materio-workflow-planner.md +238 -0
- package/library/plugins/materio/ai.iowarp.clio/fleets/materio-execute-task.md +50 -0
- package/library/plugins/materio/ai.iowarp.clio/prompts/materio/add-task.md +66 -0
- package/library/plugins/materio/ai.iowarp.clio/prompts/materio/archive-task.md +65 -0
- package/library/plugins/materio/ai.iowarp.clio/prompts/materio/checkpoint.md +26 -0
- package/library/plugins/materio/ai.iowarp.clio/prompts/materio/define-research-tasks.md +230 -0
- package/library/plugins/materio/ai.iowarp.clio/prompts/materio/define-virtual-lab.md +181 -0
- package/library/plugins/materio/ai.iowarp.clio/prompts/materio/execute-task.md +292 -0
- package/library/plugins/materio/ai.iowarp.clio/prompts/materio/help.md +129 -0
- package/library/plugins/materio/ai.iowarp.clio/prompts/materio/identify-research.md +206 -0
- package/library/plugins/materio/ai.iowarp.clio/prompts/materio/literature-review.md +201 -0
- package/library/plugins/materio/ai.iowarp.clio/prompts/materio/pause-research.md +12 -0
- package/library/plugins/materio/ai.iowarp.clio/prompts/materio/progress.md +105 -0
- package/library/plugins/materio/ai.iowarp.clio/prompts/materio/remove-task.md +63 -0
- package/library/plugins/materio/ai.iowarp.clio/prompts/materio/resume-research.md +64 -0
- package/library/plugins/materio/ai.iowarp.clio/prompts/materio/settings.md +16 -0
- package/library/plugins/materio/ai.iowarp.clio/prompts/materio/status.md +92 -0
- package/library/plugins/materio/ai.iowarp.clio/prompts/materio/upload-data.md +104 -0
- package/library/plugins/materio/ai.iowarp.clio/prompts/materio/wtfp.md +145 -0
- package/library/plugins/materio/ai.iowarp.clio/references/execution.md +56 -0
- package/library/plugins/materio/ai.iowarp.portability/provenance.json +9 -0
- package/library/plugins/materio/assets/actions/add-task.md +86 -0
- package/library/plugins/materio/assets/actions/archive-task.md +84 -0
- package/library/plugins/materio/assets/actions/checkpoint.md +47 -0
- package/library/plugins/materio/assets/actions/define-research-tasks.md +228 -0
- package/library/plugins/materio/assets/actions/define-virtual-lab.md +179 -0
- package/library/plugins/materio/assets/actions/execute-task.md +290 -0
- package/library/plugins/materio/assets/actions/help.md +140 -0
- package/library/plugins/materio/assets/actions/identify-research.md +204 -0
- package/library/plugins/materio/assets/actions/literature-review.md +199 -0
- package/library/plugins/materio/assets/actions/pause-research.md +34 -0
- package/library/plugins/materio/assets/actions/progress.md +125 -0
- package/library/plugins/materio/assets/actions/remove-task.md +82 -0
- package/library/plugins/materio/assets/actions/resume-research.md +84 -0
- package/library/plugins/materio/assets/actions/settings.md +38 -0
- package/library/plugins/materio/assets/actions/status.md +112 -0
- package/library/plugins/materio/assets/actions/upload-data.md +123 -0
- package/library/plugins/materio/assets/actions/wtfp.md +179 -0
- package/library/plugins/materio/assets/references/research-domains.md +134 -0
- package/library/plugins/materio/assets/references/research-policy.md +77 -0
- package/library/plugins/materio/assets/references/traditional-workflows.md +146 -0
- package/library/plugins/materio/assets/scripts/check_physics.py +271 -0
- package/library/plugins/materio/assets/scripts/check_scripts.py +248 -0
- package/library/plugins/materio/assets/scripts/project_plugin.py +165 -0
- package/library/plugins/materio/assets/scripts/research_state.py +400 -0
- package/library/plugins/materio/assets/scripts/verify_citations.py +616 -0
- package/library/plugins/materio/assets/templates/RESEARCH.md +39 -0
- package/library/plugins/materio/assets/templates/VIRTUAL-LAB.md +120 -0
- package/library/plugins/materio/assets/templates/WORKFLOW.md +42 -0
- package/library/plugins/materio/assets/templates/config.json +5 -0
- package/library/plugins/materio/evals/scripts.yaml +29 -0
- package/library/plugins/materio/plugin.json +530 -0
- package/library/plugins/materio/skills/materio-lab-definer/SKILL.md +74 -0
- package/library/plugins/materio/skills/materio-literature-reviewer/SKILL.md +64 -0
- package/library/plugins/materio/skills/materio-research-explorer/SKILL.md +74 -0
- package/library/plugins/materio/skills/materio-task-executor/SKILL.md +214 -0
- package/library/plugins/materio/skills/materio-task-verifier/SKILL.md +46 -0
- package/library/plugins/materio/skills/materio-workflow-planner/SKILL.md +79 -0
- package/library/plugins/materio/tests/test_check_physics.py +139 -0
- package/library/plugins/materio/tests/test_check_scripts.py +140 -0
- package/library/plugins/materio/tests/test_research_state.py +291 -0
- package/library/plugins/materio/tests/test_verify_citations.py +337 -0
- package/library/prompts/README.md +7 -0
- package/library/registry.yaml +921 -0
- package/library/skills/README.md +120 -0
- package/{skills → library/skills}/coding/ast-grep/SKILL.md +1 -1
- package/{skills → library/skills}/coding/ast-grep/evals.md +1 -1
- package/library/skills/coding/ast-grep/plugin.json +23 -0
- package/{skills → library/skills}/coding/coding-standards/SKILL.md +1 -1
- package/{skills → library/skills}/coding/coding-standards/evals.md +1 -1
- package/library/skills/coding/coding-standards/plugin.json +23 -0
- package/{skills → library/skills}/coding/prototype/SKILL.md +1 -1
- package/{skills → library/skills}/coding/prototype/evals.md +1 -1
- package/library/skills/coding/prototype/plugin.json +23 -0
- package/{skills → library/skills}/coding/tdd/SKILL.md +1 -1
- package/{skills → library/skills}/coding/tdd/evals.md +1 -1
- package/library/skills/coding/tdd/plugin.json +23 -0
- package/{skills → library/skills}/context/context-handoff/SKILL.md +1 -1
- package/{skills → library/skills}/context/context-handoff/evals.md +1 -1
- package/library/skills/context/context-handoff/plugin.json +23 -0
- package/{skills → library/skills}/context/context-prime/SKILL.md +1 -1
- package/{skills → library/skills}/context/context-prime/evals.md +1 -1
- package/library/skills/context/context-prime/plugin.json +23 -0
- package/{skills → library/skills}/git/branch-closeout/SKILL.md +1 -1
- package/library/skills/git/branch-closeout/plugin.json +23 -0
- package/{skills → library/skills}/git/file-ticket/SKILL.md +1 -1
- package/library/skills/git/file-ticket/plugin.json +23 -0
- package/{skills → library/skills}/git/fix-issue/SKILL.md +1 -1
- package/library/skills/git/fix-issue/plugin.json +23 -0
- package/{skills → library/skills}/git/resolve-merge-conflicts/SKILL.md +1 -1
- package/{skills → library/skills}/git/resolve-merge-conflicts/evals.md +1 -1
- package/library/skills/git/resolve-merge-conflicts/plugin.json +23 -0
- package/{skills → library/skills}/git/ship/SKILL.md +1 -1
- package/library/skills/git/ship/plugin.json +23 -0
- package/{skills → library/skills}/git/worktree-create/SKILL.md +1 -1
- package/library/skills/git/worktree-create/plugin.json +23 -0
- package/{skills → library/skills}/git/worktree-merge/SKILL.md +1 -1
- package/library/skills/git/worktree-merge/plugin.json +23 -0
- package/{skills → library/skills}/meta/clio-coder-dev/SKILL.md +1 -1
- package/{skills → library/skills}/meta/clio-coder-dev/evals.md +1 -1
- package/library/skills/meta/clio-coder-dev/plugin.json +23 -0
- package/{skills → library/skills}/meta/clio-coder-test/SKILL.md +1 -1
- package/{skills → library/skills}/meta/clio-coder-test/evals.md +1 -1
- package/library/skills/meta/clio-coder-test/plugin.json +23 -0
- package/{skills → library/skills}/meta/credentials/SKILL.md +1 -1
- package/{skills → library/skills}/meta/credentials/evals.md +1 -1
- package/library/skills/meta/credentials/plugin.json +23 -0
- package/library/skills/meta/find-skills/SKILL.md +85 -0
- package/library/skills/meta/find-skills/evals.md +65 -0
- package/library/skills/meta/find-skills/plugin.json +23 -0
- package/{skills → library/skills}/meta/herdr/SKILL.md +1 -1
- package/{skills → library/skills}/meta/herdr/evals.md +1 -1
- package/library/skills/meta/herdr/plugin.json +23 -0
- package/{skills → library/skills}/meta/skill-craft/SKILL.md +23 -9
- package/{skills → library/skills}/meta/skill-craft/evals.md +11 -3
- package/library/skills/meta/skill-craft/plugin.json +23 -0
- package/{skills → library/skills}/planning/archify/SKILL.md +13 -13
- package/library/skills/planning/archify/plugin.json +23 -0
- package/{skills → library/skills}/planning/architecture/SKILL.md +1 -1
- package/{skills → library/skills}/planning/architecture/evals.md +1 -1
- package/library/skills/planning/architecture/plugin.json +23 -0
- package/{skills → library/skills}/planning/backlog/SKILL.md +1 -1
- package/{skills → library/skills}/planning/backlog/evals.md +1 -1
- package/library/skills/planning/backlog/plugin.json +23 -0
- package/{skills → library/skills}/planning/prd/SKILL.md +1 -1
- package/{skills → library/skills}/planning/prd/evals.md +1 -1
- package/library/skills/planning/prd/plugin.json +23 -0
- package/{skills → library/skills}/planning/product-intent/SKILL.md +1 -1
- package/{skills → library/skills}/planning/product-intent/evals.md +1 -1
- package/library/skills/planning/product-intent/plugin.json +23 -0
- package/{skills → library/skills}/planning/tech-spec/SKILL.md +1 -1
- package/{skills → library/skills}/planning/tech-spec/evals.md +1 -1
- package/library/skills/planning/tech-spec/plugin.json +23 -0
- package/{skills → library/skills}/registry.yaml +7 -7
- package/{skills → library/skills}/remote.yaml +1 -1
- package/{skills → library/skills}/research/arxiv-literature/SKILL.md +1 -1
- package/{skills → library/skills}/research/arxiv-literature/evals.md +1 -1
- package/library/skills/research/arxiv-literature/plugin.json +23 -0
- package/{skills → library/skills}/research/experiment-protocol/SKILL.md +1 -1
- package/{skills → library/skills}/research/experiment-protocol/evals.md +1 -1
- package/library/skills/research/experiment-protocol/plugin.json +23 -0
- package/{skills → library/skills}/research/scientific-debugging/SKILL.md +1 -1
- package/{skills → library/skills}/research/scientific-debugging/evals.md +1 -1
- package/library/skills/research/scientific-debugging/plugin.json +23 -0
- package/{skills → library/skills}/research/scientific-modernization/SKILL.md +1 -1
- package/{skills → library/skills}/research/scientific-modernization/evals.md +1 -1
- package/library/skills/research/scientific-modernization/plugin.json +23 -0
- package/{skills → library/skills}/skill-marketplace.json +37 -37
- package/{skills → library/skills}/workflow/cut-it/SKILL.md +1 -1
- package/{skills → library/skills}/workflow/cut-it/evals.md +1 -1
- package/library/skills/workflow/cut-it/plugin.json +23 -0
- package/{skills → library/skills}/workflow/design-council/SKILL.md +1 -1
- package/{skills → library/skills}/workflow/design-council/evals.md +1 -1
- package/library/skills/workflow/design-council/plugin.json +23 -0
- package/{skills → library/skills}/workflow/grill-me/SKILL.md +1 -1
- package/{skills → library/skills}/workflow/grill-me/evals.md +1 -1
- package/library/skills/workflow/grill-me/plugin.json +23 -0
- package/{skills → library/skills}/workflow/workflow-distiller/SKILL.md +14 -11
- package/{skills → library/skills}/workflow/workflow-distiller/evals.md +14 -6
- package/library/skills/workflow/workflow-distiller/plugin.json +23 -0
- package/package.json +12 -5
- package/src/cli/agents.ts +1 -1
- package/src/cli/config-inspect.ts +1 -1
- package/src/cli/configure.ts +2 -2
- package/src/cli/eval.ts +40 -6
- package/src/cli/extensions.ts +74 -8
- package/src/cli/fleet-preflight.ts +2 -0
- package/src/cli/fleet.ts +2 -0
- package/src/cli/index.ts +1 -3
- package/src/cli/interop-inspect.ts +61 -33
- package/src/cli/interop.ts +79 -9
- package/src/cli/library-import.ts +139 -0
- package/src/cli/library.ts +418 -120
- package/src/cli/run.ts +26 -9
- package/src/cli/skills-eval.ts +43 -6
- package/src/cli/skills-inventory.ts +6 -2
- package/src/cli/skills.ts +44 -491
- package/src/core/bus-events.ts +5 -0
- package/src/core/defaults.ts +1 -1
- package/src/core/recent-models.ts +2 -2
- package/src/core/session-routing.ts +3 -3
- package/src/core/state-file-lock.ts +1 -1
- package/src/core/tool-names.ts +5 -0
- package/src/domains/agents/extension.ts +42 -6
- package/src/domains/agents/fleet-commands.ts +92 -1
- package/src/domains/agents/fleet-contract.ts +87 -19
- package/src/domains/agents/recipe.ts +5 -4
- package/src/domains/agents/registry.ts +80 -24
- package/src/domains/config/keybindings.ts +155 -95
- package/src/domains/context/worker/contract.ts +91 -0
- package/src/domains/context/worker/pressure.ts +120 -0
- package/src/domains/context/worker/recall.ts +62 -0
- package/src/domains/context/worker/select.ts +164 -0
- package/src/domains/context/worker/snapshot.ts +35 -0
- package/src/domains/context/worker/store.ts +16 -0
- package/src/domains/context/working-set/replay/synthetic.ts +2 -1
- package/src/domains/dispatch/active-route-planner.ts +2 -0
- package/src/domains/dispatch/backoff.ts +1 -0
- package/src/domains/dispatch/code-step.ts +12 -2
- package/src/domains/dispatch/contract.ts +3 -0
- package/src/domains/dispatch/execution-plan.ts +2 -0
- package/src/domains/dispatch/extension.ts +109 -27
- package/src/domains/dispatch/fleet-plan.ts +10 -0
- package/src/domains/dispatch/fleet-run.ts +1 -0
- package/src/domains/dispatch/orphan-recovery.ts +1 -0
- package/src/domains/dispatch/receipt-integrity.ts +4 -0
- package/src/domains/dispatch/state.ts +1 -0
- package/src/domains/dispatch/types.ts +5 -0
- package/src/domains/dispatch/validation.ts +12 -0
- package/src/domains/dispatch/workspace-checkpoint.ts +1 -1
- package/src/domains/evidence/failure-attribution.ts +1 -0
- package/src/domains/evidence/trust-status.ts +22 -3
- package/src/domains/extensions/command-schema.ts +145 -0
- package/src/domains/extensions/command-tools.ts +15 -0
- package/src/domains/extensions/compatibility.ts +7 -0
- package/src/domains/extensions/contract.ts +0 -4
- package/src/domains/extensions/discovery.ts +69 -205
- package/src/domains/extensions/extension.ts +0 -4
- package/src/domains/extensions/index.ts +1 -5
- package/src/domains/extensions/manager.ts +1 -6
- package/src/domains/extensions/operator-commands.ts +29 -0
- package/src/domains/extensions/operator-runtime.ts +483 -0
- package/src/domains/extensions/public-api.ts +53 -0
- package/src/domains/extensions/runtime-child.mjs +114 -0
- package/src/domains/extensions/runtime-process.ts +306 -0
- package/src/domains/extensions/runtime-schema.ts +146 -0
- package/src/domains/extensions/{resources.ts → snapshot-access.ts} +1 -17
- package/src/domains/extensions/snapshot.ts +4 -32
- package/src/domains/extensions/state.ts +5 -83
- package/src/domains/extensions/types.ts +33 -34
- package/src/domains/interop/adopt.ts +546 -0
- package/src/domains/interop/detect.ts +50 -12
- package/src/domains/interop/foreign.ts +554 -0
- package/src/domains/interop/import.ts +277 -0
- package/src/domains/interop/index.ts +24 -0
- package/src/domains/interop/install.ts +6 -0
- package/src/domains/interop/inventory.ts +351 -0
- package/src/domains/interop/projection.ts +360 -0
- package/src/domains/interop/registry.ts +106 -3
- package/src/domains/interop/types.ts +51 -0
- package/src/domains/lifecycle/migrations/index.ts +0 -2
- package/src/domains/lifecycle/naming-resources.ts +1 -1
- package/src/domains/middleware/marketplace-offer.ts +1 -1
- package/src/domains/mux/contract.ts +1 -1
- package/src/domains/plugins/catalog.ts +204 -0
- package/src/domains/plugins/contract.ts +24 -0
- package/src/domains/plugins/discovery.ts +316 -0
- package/src/domains/plugins/extension.ts +40 -0
- package/src/domains/plugins/index.ts +77 -0
- package/src/domains/plugins/integrity.ts +6 -0
- package/src/domains/plugins/manifest.ts +3 -0
- package/src/domains/plugins/resources.ts +102 -0
- package/src/domains/plugins/state.ts +753 -0
- package/src/domains/plugins/types.ts +217 -0
- package/src/domains/prompts/extension.ts +9 -2
- package/src/domains/prompts/fragments/operating/skills.md +10 -10
- package/src/domains/resources/common-loader.ts +9 -6
- package/src/domains/resources/index.ts +67 -0
- package/src/domains/resources/library-actions.ts +836 -0
- package/src/domains/resources/library-evals.ts +38 -0
- package/src/domains/resources/library-inventory.ts +1048 -0
- package/src/domains/resources/library-types.ts +50 -0
- package/src/domains/resources/library-validation.ts +634 -0
- package/src/domains/resources/library.ts +437 -156
- package/src/domains/resources/package-references.ts +66 -0
- package/src/domains/resources/prompts/loader.ts +75 -41
- package/src/domains/resources/skills/install.ts +2 -2
- package/src/domains/resources/skills/loader.ts +77 -22
- package/src/domains/resources/skills/marketplace.ts +48 -57
- package/src/domains/resources/skills/promotion.ts +2 -2
- package/src/domains/resources/skills/provenance-pin.ts +17 -4
- package/src/domains/safety/action-classifier.ts +2 -2
- package/src/domains/safety/default-path-policy.ts +3 -1
- package/src/domains/safety/policy-engine.ts +1 -1
- package/src/domains/safety/protected-artifacts.ts +21 -5
- package/src/domains/safety/skill-authority.ts +5 -2
- package/src/domains/share/archive.ts +1 -1
- package/src/engine/apis/openai-completions.ts +52 -2
- package/src/engine/notices/pi-tui-LICENSE +21 -0
- package/src/engine/tui.ts +3 -0
- package/src/engine/worker-runtime.ts +58 -14
- package/src/engine/worker-tools.ts +5 -0
- package/src/entry/orchestrator.ts +26 -5
- package/src/entry/plugin-reload.ts +18 -0
- package/src/interactive/application-controller.ts +67 -21
- package/src/interactive/chat-loop.ts +32 -5
- package/src/interactive/chat-panel.ts +5 -1
- package/src/interactive/clio-editor.ts +53 -21
- package/src/interactive/command-output.ts +56 -1
- package/src/interactive/editor-submit.ts +65 -28
- package/src/interactive/fleet-run-preview.ts +2 -0
- package/src/interactive/follow-up-queue-panel.ts +3 -3
- package/src/interactive/footer/dashboard.ts +4 -1
- package/src/interactive/footer/notifications.ts +2 -2
- package/src/interactive/footer/widgets.ts +2 -2
- package/src/interactive/interactive-application.ts +209 -21
- package/src/interactive/interactive-input-runtime.ts +254 -7
- package/src/interactive/interactive-presentation.ts +41 -12
- package/src/interactive/interactive-slash-runtime.ts +37 -8
- package/src/interactive/keybinding-manager.ts +156 -79
- package/src/interactive/keyboard-owner.ts +37 -0
- package/src/interactive/leader-key.ts +49 -102
- package/src/interactive/leader-menu.ts +45 -0
- package/src/interactive/overlay-ask-user-lifecycle.ts +9 -1
- package/src/interactive/overlay-frame.ts +15 -0
- package/src/interactive/overlay-key-routing.ts +46 -47
- package/src/interactive/overlay-lifecycle.ts +30 -15
- package/src/interactive/overlay-resource-openers.ts +56 -46
- package/src/interactive/overlays/ask-user.ts +630 -556
- package/src/interactive/overlays/extension-panel.ts +70 -0
- package/src/interactive/overlays/extensions.ts +28 -5
- package/src/interactive/overlays/fleet-run-approval.ts +7 -3
- package/src/interactive/overlays/help-reference.ts +89 -40
- package/src/interactive/overlays/interop.ts +122 -3
- package/src/interactive/overlays/keybinding-detail.ts +2 -2
- package/src/interactive/overlays/library-lifecycle.ts +90 -0
- package/src/interactive/overlays/library-model.ts +574 -0
- package/src/interactive/overlays/library-review.ts +557 -0
- package/src/interactive/overlays/library-tabs.ts +3 -15
- package/src/interactive/overlays/library.ts +602 -0
- package/src/interactive/overlays/list-overlay.ts +218 -39
- package/src/interactive/overlays/model-selector.ts +28 -25
- package/src/interactive/overlays/session-selector.ts +9 -3
- package/src/interactive/overlays/settings.ts +25 -18
- package/src/interactive/overlays/tree-selector.ts +16 -11
- package/src/interactive/permission-hint.ts +13 -0
- package/src/interactive/permission-overlay.ts +77 -28
- package/src/interactive/prompt-source-label.ts +21 -0
- package/src/interactive/renderers/reference-card.ts +35 -0
- package/src/interactive/renderers/worker-entry.ts +35 -3
- package/src/interactive/slash-autocomplete.ts +99 -1
- package/src/interactive/slash-commands.ts +390 -67
- package/src/interactive/slash-spec.ts +0 -1
- package/src/interactive/terminal-lease.ts +44 -12
- package/src/interactive/turn-queues.ts +8 -7
- package/src/interactive/turn-runtime.ts +1 -1
- package/src/interactive/view/view-overlay.ts +19 -14
- package/src/interactive/welcome-dashboard.ts +525 -408
- package/src/tools/bootstrap.ts +8 -0
- package/src/tools/builtin-tool-catalog.ts +7 -2
- package/src/tools/context/index.ts +58 -5
- package/src/tools/context/library.ts +465 -0
- package/src/tools/context/surface.ts +20 -6
- package/src/tools/core-bootstrap.ts +3 -0
- package/src/tools/dispatch-admission.ts +24 -1
- package/src/tools/dispatch-arguments.ts +8 -0
- package/src/tools/dispatch-plan.ts +32 -0
- package/src/tools/dispatch-schema.ts +31 -1
- package/src/tools/dispatch-types.ts +3 -0
- package/src/tools/dispatch.ts +1 -1
- package/src/tools/harness-extensions.ts +169 -0
- package/src/tools/observation.ts +4 -0
- package/src/tools/policy.ts +7 -1
- package/src/tools/registry.ts +19 -1
- package/src/tools/worker-evidence.ts +5 -0
- package/src/worker/context-seed.ts +192 -0
- package/src/worker/entry.ts +1 -0
- package/src/worker/spec-contract.ts +8 -1
- package/dist/chunk-3UW3KU4A.js +0 -21
- package/dist/chunk-536HXRFE.js +0 -1257
- package/dist/chunk-B3MOMLJ4.js +0 -433
- package/dist/chunk-CXQ37WJH.js +0 -45
- package/dist/chunk-KTFSFCVN.js +0 -46
- package/dist/chunk-QCOV5DFY.js +0 -911
- package/dist/chunk-QRFXEO6Y.js +0 -17
- package/dist/chunk-VAHLPXPY.js +0 -399
- package/dist/interop-RVCAYECG.js +0 -115
- package/dist/library-CTKZA7K3.js +0 -226
- package/dist/skills-OXFEAWMT.js +0 -510
- package/skills/README.md +0 -418
- package/skills/meta/find-skills/SKILL.md +0 -78
- package/skills/meta/find-skills/evals.md +0 -47
- package/src/domains/extensions/resource-path.ts +0 -27
- package/src/domains/lifecycle/migrations/2026-09-01-extension-install-digests.ts +0 -27
- package/src/interactive/overlays/agents.ts +0 -70
- package/src/interactive/overlays/library-install-confirm.ts +0 -152
- package/src/interactive/overlays/prompts.ts +0 -89
- package/src/interactive/overlays/skills-hub.ts +0 -615
- /package/{skills → library/skills}/coding/ast-grep/references/rule_reference.md +0 -0
- /package/{skills → library/skills}/coding/prototype/references/LOGIC.md +0 -0
- /package/{skills → library/skills}/coding/prototype/references/UI.md +0 -0
- /package/{skills → library/skills}/coding/tdd/references/mocking.md +0 -0
- /package/{skills → library/skills}/coding/tdd/references/tests.md +0 -0
- /package/{skills → library/skills}/context/context-handoff/scripts/new-handoff.sh +0 -0
- /package/{skills → library/skills}/git/branch-closeout/evals.md +0 -0
- /package/{skills → library/skills}/git/branch-closeout/references/closeout-checklist.md +0 -0
- /package/{skills → library/skills}/git/file-ticket/assets/issue-template.md +0 -0
- /package/{skills → library/skills}/git/file-ticket/evals.md +0 -0
- /package/{skills → library/skills}/git/file-ticket/references/issue-discovery.md +0 -0
- /package/{skills → library/skills}/git/fix-issue/evals.md +0 -0
- /package/{skills → library/skills}/git/fix-issue/references/diagnosis-and-rca.md +0 -0
- /package/{skills → library/skills}/git/resolve-merge-conflicts/references/conflict-matrix.md +0 -0
- /package/{skills → library/skills}/git/ship/assets/pr-template.md +0 -0
- /package/{skills → library/skills}/git/ship/evals.md +0 -0
- /package/{skills → library/skills}/git/ship/references/remote-and-branch-policy.md +0 -0
- /package/{skills → library/skills}/git/worktree-create/evals.md +0 -0
- /package/{skills → library/skills}/git/worktree-create/references/worktree-setup.md +0 -0
- /package/{skills → library/skills}/git/worktree-merge/evals.md +0 -0
- /package/{skills → library/skills}/git/worktree-merge/references/merge-strategies.md +0 -0
- /package/{skills → library/skills}/meta/clio-coder-test/references/harness.md +0 -0
- /package/{skills → library/skills}/meta/clio-coder-test/references/test-map.md +0 -0
- /package/{skills → library/skills}/planning/archify/evals.md +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { BusChannels, type PermissionRequestedPayload } from "../core/bus-events.js";
|
|
2
2
|
import type { ClioSettings } from "../core/config.js";
|
|
3
3
|
import { nextOutputStyle } from "../core/defaults.js";
|
|
4
4
|
import type { SafeEventBus } from "../core/event-bus.js";
|
|
@@ -11,6 +11,7 @@ import type { ClioKeybinding } from "../domains/config/keybindings.js";
|
|
|
11
11
|
import type { ContextState } from "../domains/context/index.js";
|
|
12
12
|
import type { DispatchContract } from "../domains/dispatch/contract.js";
|
|
13
13
|
import type { ExtensionsContract } from "../domains/extensions/index.js";
|
|
14
|
+
import { OperatorExtensionRuntime } from "../domains/extensions/operator-runtime.js";
|
|
14
15
|
import type { InteropContract } from "../domains/interop/index.js";
|
|
15
16
|
import type { TaskMemoryOperatorStatus } from "../domains/memory/index.js";
|
|
16
17
|
import { openDetachedBatchViews } from "../domains/middleware/index.js";
|
|
@@ -68,7 +69,6 @@ import type { createYaziBridge, YaziBridge } from "./yazi-bridge.js";
|
|
|
68
69
|
|
|
69
70
|
export {
|
|
70
71
|
IDLE_LEADER_STATE,
|
|
71
|
-
LEADER_TIMEOUT_MS,
|
|
72
72
|
type LeaderKeyController,
|
|
73
73
|
type LeaderKeyControllerDeps,
|
|
74
74
|
type LeaderKeyRouteDeps,
|
|
@@ -125,8 +125,9 @@ export interface InteractiveDeps {
|
|
|
125
125
|
initialNotices?: ReadonlyArray<string>;
|
|
126
126
|
resources?: ResourcesContract;
|
|
127
127
|
extensions?: ExtensionsContract;
|
|
128
|
-
/** `/
|
|
128
|
+
/** `/extensions reload` seam; the composition root supplies the coordinator. */
|
|
129
129
|
reloadExtensions?: SlashCommandContext["reloadExtensions"];
|
|
130
|
+
reloadPlugins?: SlashCommandContext["reloadPlugins"];
|
|
130
131
|
interop?: InteropContract;
|
|
131
132
|
share?: ShareContract;
|
|
132
133
|
/**
|
|
@@ -202,6 +203,12 @@ export interface InteractiveDeps {
|
|
|
202
203
|
registerAskUserHandler?: (handler: AskUserHandler) => () => void;
|
|
203
204
|
/** Live CLIO-CODER.md and memory state for the footer Context quadrant. */
|
|
204
205
|
getContextState?: (cwd?: string) => ContextState;
|
|
206
|
+
/**
|
|
207
|
+
* True when this process resumed an existing session at boot (`--continue`,
|
|
208
|
+
* `--session <id>`). The welcome header opens collapsed so a conversation
|
|
209
|
+
* with history is not topped by fresh-start onboarding.
|
|
210
|
+
*/
|
|
211
|
+
startsResumed?: boolean;
|
|
205
212
|
/**
|
|
206
213
|
* Persist a thinking level set by `/thinking <level>` or `/model <pattern>:<level>`.
|
|
207
214
|
* Scope "session" leaves settings.yaml alone; omitted means the historical
|
|
@@ -273,9 +280,17 @@ export interface InteractiveSubmitExpansion {
|
|
|
273
280
|
images: ImageContent[];
|
|
274
281
|
workingContextPaths: string[];
|
|
275
282
|
pendingSkillRequests: PendingSkillRequest[];
|
|
283
|
+
/**
|
|
284
|
+
* What the transcript paints as the operator's turn when `text` is a prompt
|
|
285
|
+
* template's body: the line they typed, and a note naming the template. The
|
|
286
|
+
* model still receives `text`; a `/wtfp:new-paper` body is several hundred
|
|
287
|
+
* lines the operator never wrote, and painting it as their message buried
|
|
288
|
+
* the command under it.
|
|
289
|
+
*/
|
|
290
|
+
display?: { text: string; note: string };
|
|
276
291
|
}
|
|
277
292
|
|
|
278
|
-
async function expandInteractiveSubmitAsync(
|
|
293
|
+
export async function expandInteractiveSubmitAsync(
|
|
279
294
|
text: string,
|
|
280
295
|
resources: ResourcesContract | undefined,
|
|
281
296
|
cwd = process.cwd(),
|
|
@@ -291,11 +306,18 @@ async function expandInteractiveSubmitAsync(
|
|
|
291
306
|
includeImages: true,
|
|
292
307
|
missing: "leave",
|
|
293
308
|
});
|
|
309
|
+
const display = promptExpansion?.expanded
|
|
310
|
+
? {
|
|
311
|
+
text: parsed.text.trim(),
|
|
312
|
+
note: `expanded prompt template ${promptExpansion.template.name} (${promptExpansion.text.split("\n").length} lines)`,
|
|
313
|
+
}
|
|
314
|
+
: undefined;
|
|
294
315
|
return {
|
|
295
316
|
text: fileExpansion.text,
|
|
296
317
|
images: fileExpansion.images,
|
|
297
318
|
workingContextPaths: fileExpansion.referencedPaths,
|
|
298
319
|
pendingSkillRequests: parsed.pendingSkillRequests,
|
|
320
|
+
...(display ? { display } : {}),
|
|
299
321
|
};
|
|
300
322
|
}
|
|
301
323
|
|
|
@@ -323,6 +345,7 @@ export interface KeyBindingDeps {
|
|
|
323
345
|
openDecisions: () => void;
|
|
324
346
|
backgroundDispatch: () => void;
|
|
325
347
|
openModelSelector: () => void;
|
|
348
|
+
openLibrary: () => void;
|
|
326
349
|
openTree: () => void;
|
|
327
350
|
cycleScopedModelForward: () => void;
|
|
328
351
|
cycleScopedModelBackward: () => void;
|
|
@@ -356,7 +379,7 @@ export function resolveCtrlCAction(deps: CtrlCActionDeps): CtrlCAction {
|
|
|
356
379
|
return "arm-shutdown";
|
|
357
380
|
}
|
|
358
381
|
|
|
359
|
-
function dispatchInteractiveAction(id: ClioKeybinding, deps: KeyBindingDeps): boolean {
|
|
382
|
+
export function dispatchInteractiveAction(id: ClioKeybinding, deps: KeyBindingDeps): boolean {
|
|
360
383
|
switch (id) {
|
|
361
384
|
case "clio-coder.output.cycle":
|
|
362
385
|
deps.cycleOutputStyle();
|
|
@@ -403,6 +426,9 @@ function dispatchInteractiveAction(id: ClioKeybinding, deps: KeyBindingDeps): bo
|
|
|
403
426
|
case "clio-coder.model.select":
|
|
404
427
|
deps.openModelSelector();
|
|
405
428
|
return true;
|
|
429
|
+
case "clio-coder.library.toggle":
|
|
430
|
+
deps.openLibrary();
|
|
431
|
+
return true;
|
|
406
432
|
case "clio-coder.model.cycleBackward":
|
|
407
433
|
deps.cycleScopedModelBackward();
|
|
408
434
|
return true;
|
|
@@ -430,6 +456,7 @@ export function routeInteractiveKey(data: string, deps: KeyBindingDeps): boolean
|
|
|
430
456
|
"clio-coder.decisions.open",
|
|
431
457
|
"clio-coder.dispatch.background",
|
|
432
458
|
"clio-coder.model.select",
|
|
459
|
+
"clio-coder.library.toggle",
|
|
433
460
|
// Match cycleBackward before cycleForward so a user rebind where one key
|
|
434
461
|
// is a prefix of the other resolves to the more specific binding first.
|
|
435
462
|
// The defaults (alt+k / alt+j) do not prefix-match each other.
|
|
@@ -536,9 +563,49 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
|
|
|
536
563
|
* rail reads it through the optional chain before then as "no prompt".
|
|
537
564
|
*/
|
|
538
565
|
let overlayLifecycle: OverlayLifecycleController;
|
|
566
|
+
let refreshOperatorUi = (): void => {};
|
|
567
|
+
let scheduleOperatorMaintenance = (): void => {};
|
|
568
|
+
let operatorTimer: ReturnType<typeof setTimeout> | undefined;
|
|
569
|
+
let operatorPanelValid: (() => boolean) | undefined;
|
|
570
|
+
const operatorExtensions = deps.extensions
|
|
571
|
+
? new OperatorExtensionRuntime({
|
|
572
|
+
context: () => ({
|
|
573
|
+
workspace: process.cwd(),
|
|
574
|
+
sessionId: deps.session?.current()?.id ?? deps.getSessionId?.() ?? null,
|
|
575
|
+
mode: "interactive",
|
|
576
|
+
}),
|
|
577
|
+
isIdle: () =>
|
|
578
|
+
!deps.chat.isStreaming() &&
|
|
579
|
+
deps.chat.turnPreparation().phase === "idle" &&
|
|
580
|
+
(overlayLifecycle?.getState() ?? "closed") === "closed" &&
|
|
581
|
+
!editorSubmit?.hasActiveEditorBash(),
|
|
582
|
+
list: (cwd) => deps.extensions?.list(cwd, { all: true }) ?? [],
|
|
583
|
+
...(deps.reloadExtensions ? { commitHooks: deps.reloadExtensions } : {}),
|
|
584
|
+
onChange: () => refreshOperatorUi(),
|
|
585
|
+
...(deps.toolRegistry
|
|
586
|
+
? {
|
|
587
|
+
frozenTools: deps.toolRegistry
|
|
588
|
+
.listAll()
|
|
589
|
+
.flatMap((tool) => (tool.sourceInfo?.extension ? [tool.sourceInfo.extension] : [])),
|
|
590
|
+
}
|
|
591
|
+
: {}),
|
|
592
|
+
onDiagnostic: (message) => notify("warning", message, "operator-extensions:observation"),
|
|
593
|
+
onReload: (result) => {
|
|
594
|
+
if (result.status !== "deferred")
|
|
595
|
+
notify(result.status === "rejected" ? "error" : "info", result.message, "operator-extensions:reload");
|
|
596
|
+
},
|
|
597
|
+
})
|
|
598
|
+
: undefined;
|
|
539
599
|
const presentation = createInteractivePresentation({
|
|
540
600
|
bus: deps.bus,
|
|
541
601
|
getLeaderArmed: () => leaderArmed,
|
|
602
|
+
extensionCommands: () => operatorExtensions?.commands() ?? [],
|
|
603
|
+
getExtensionStatus: () =>
|
|
604
|
+
overlayLifecycle?.getState() === "permission-confirm"
|
|
605
|
+
? []
|
|
606
|
+
: (operatorExtensions?.entries() ?? []).flatMap((entry) =>
|
|
607
|
+
entry.status ? [`${entry.id}: ${entry.status.text}`] : [],
|
|
608
|
+
),
|
|
542
609
|
getShutdownArmed: () => shutdownArmed,
|
|
543
610
|
isAwaitingApproval: () => overlayLifecycle?.getState() === "permission-confirm",
|
|
544
611
|
getPermissionInspection: () => {
|
|
@@ -577,6 +644,7 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
|
|
|
577
644
|
...(deps.getTaskMemoryStatus ? { getTaskMemoryStatus: deps.getTaskMemoryStatus } : {}),
|
|
578
645
|
...(deps.getTaskMemorySeedOffer ? { getTaskMemorySeedOffer: deps.getTaskMemorySeedOffer } : {}),
|
|
579
646
|
...(deps.getContextState ? { getContextState: deps.getContextState } : {}),
|
|
647
|
+
...(deps.startsResumed === true ? { startsResumed: true } : {}),
|
|
580
648
|
});
|
|
581
649
|
const {
|
|
582
650
|
keybindings,
|
|
@@ -621,6 +689,15 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
|
|
|
621
689
|
: null;
|
|
622
690
|
const detachYaziBridge = yaziBridge ? deps.attachYaziBridge?.(yaziBridge) : undefined;
|
|
623
691
|
refreshPresentationFooter = () => footer.refresh();
|
|
692
|
+
refreshOperatorUi = () => {
|
|
693
|
+
scheduleOperatorMaintenance();
|
|
694
|
+
if (operatorPanelValid && !operatorPanelValid() && overlayLifecycle?.getState() === "extensions") {
|
|
695
|
+
operatorPanelValid = undefined;
|
|
696
|
+
overlayLifecycle.closeOverlay();
|
|
697
|
+
}
|
|
698
|
+
footer.refresh();
|
|
699
|
+
tui.requestRender();
|
|
700
|
+
};
|
|
624
701
|
const agentProgress = createAgentProgress(terminal);
|
|
625
702
|
// Desktop notifications are a protocol write on the terminal owner, issued
|
|
626
703
|
// outside any render transaction, so the sequence carries frameId null and
|
|
@@ -659,7 +736,10 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
|
|
|
659
736
|
setLastTurnSummary: (summary) => presentation.setLastTurnSummary(summary),
|
|
660
737
|
startTerminalProgress: () => agentProgress.start(),
|
|
661
738
|
stopTerminalProgress: () => agentProgress.stop(),
|
|
662
|
-
onTurnEnded: () =>
|
|
739
|
+
onTurnEnded: () => {
|
|
740
|
+
desktopNotifications.turnEnded();
|
|
741
|
+
operatorExtensions?.observe({ event: "turn_end", reason: "completed" });
|
|
742
|
+
},
|
|
663
743
|
refreshLiveWorkspaceGit,
|
|
664
744
|
refreshFooter: () => footer.refresh(),
|
|
665
745
|
requestRender: () => tui.requestRender(),
|
|
@@ -668,6 +748,9 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
|
|
|
668
748
|
appendTranscriptNotice: (level, text) => appendNotice(level, text, busNoticeSink),
|
|
669
749
|
refreshSettingsOverlay: () => overlayLifecycle.refreshSettingsOverlay(),
|
|
670
750
|
onConfigHotReload: (settings) => {
|
|
751
|
+
keybindings.reload(settings.interface.keybindings ?? {});
|
|
752
|
+
footer.refresh();
|
|
753
|
+
tui.requestRender();
|
|
671
754
|
const mode = settings.interface.smoothStreaming;
|
|
672
755
|
const autoAllowed = processAutoPacingAllowed(shell.hasObservedBackpressure());
|
|
673
756
|
chatRenderer.setSmoothStreamingMode(mode);
|
|
@@ -683,6 +766,30 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
|
|
|
683
766
|
const toolRegistry = deps.toolRegistry;
|
|
684
767
|
const interopSurface = interop ? interopOverlaySurface(interop, (level, text) => notify(level, text)) : null;
|
|
685
768
|
const slashRuntime = createInteractiveSlashRuntime({
|
|
769
|
+
keyboardActions: {
|
|
770
|
+
background: () => backgroundActiveDispatch(),
|
|
771
|
+
editor: (text) => editorSubmit.openExternalEditorForInput(text),
|
|
772
|
+
interrupt: (text) => editorSubmit.interruptFromEditor(text),
|
|
773
|
+
dismiss: (all) => applicationController.dismissNotifications(all),
|
|
774
|
+
outputLabel: () => keybindings.actionLabel("clio-coder.output.cycle"),
|
|
775
|
+
},
|
|
776
|
+
...(operatorExtensions ? { operatorExtensions } : {}),
|
|
777
|
+
showExtensionOutput: (invocation, output) => {
|
|
778
|
+
const generation = operatorExtensions?.activeGeneration;
|
|
779
|
+
const id = invocation.split(":")[1];
|
|
780
|
+
const valid = () =>
|
|
781
|
+
operatorExtensions
|
|
782
|
+
?.entries()
|
|
783
|
+
.some((entry) => entry.id === id && entry.state === "ready" && entry.generation === generation) ?? false;
|
|
784
|
+
if (!valid()) return;
|
|
785
|
+
if (
|
|
786
|
+
output.panel &&
|
|
787
|
+
!deps.chat.isStreaming() &&
|
|
788
|
+
overlayLifecycle.openExtensionPanelState(id ?? invocation, output.panel, valid)
|
|
789
|
+
)
|
|
790
|
+
operatorPanelValid = valid;
|
|
791
|
+
else slashRuntime.context.showReference?.({ command: invocation, source: "operator extension", text: output.text });
|
|
792
|
+
},
|
|
686
793
|
io,
|
|
687
794
|
bus: deps.bus,
|
|
688
795
|
dispatch: deps.dispatch,
|
|
@@ -699,6 +806,7 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
|
|
|
699
806
|
...(deps.resources ? { resources: deps.resources } : {}),
|
|
700
807
|
...(deps.extensions ? { extensions: deps.extensions } : {}),
|
|
701
808
|
...(deps.reloadExtensions ? { reloadExtensions: deps.reloadExtensions } : {}),
|
|
809
|
+
...(deps.reloadPlugins ? { reloadPlugins: deps.reloadPlugins } : {}),
|
|
702
810
|
...(interopSurface ? { interop: interopSurface } : {}),
|
|
703
811
|
...(deps.agents ? { agents: deps.agents } : {}),
|
|
704
812
|
...(deps.share ? { share: deps.share } : {}),
|
|
@@ -721,7 +829,7 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
|
|
|
721
829
|
readStructuredEntries,
|
|
722
830
|
expandSubmit: (text) => expandInteractiveSubmitAsync(text, deps.resources),
|
|
723
831
|
openAskUser: (questions, options) => openAskUserOverlayState(questions, options),
|
|
724
|
-
openSkillsHub: (
|
|
832
|
+
openSkillsHub: (request) => openSkillsHubState(request),
|
|
725
833
|
openCost: () => openCostOverlayState(),
|
|
726
834
|
openSideQuestion: (question) => openSideQuestionOverlayState(question),
|
|
727
835
|
startHandoff: (goal) => startHandoffState(goal),
|
|
@@ -758,8 +866,6 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
|
|
|
758
866
|
openTree: () => openTreeOverlayState(),
|
|
759
867
|
openMessagePicker: () => openMessagePickerOverlayState(),
|
|
760
868
|
openHelp: (query) => openHelpOverlayState(query),
|
|
761
|
-
openAgents: () => openAgentsOverlayState(),
|
|
762
|
-
openPrompts: () => openPromptsOverlayState(),
|
|
763
869
|
openExtensions: () => openExtensionsOverlayState(),
|
|
764
870
|
openInterop: () => openInteropOverlayState(),
|
|
765
871
|
openContextReset: () => openContextResetOverlayState(),
|
|
@@ -816,6 +922,21 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
|
|
|
816
922
|
interactiveSubscriptions.workers.reset();
|
|
817
923
|
});
|
|
818
924
|
};
|
|
925
|
+
/**
|
|
926
|
+
* The same reset, plus the header collapse that adopting an existing
|
|
927
|
+
* conversation implies. `/resume`, `/tree`, `/fork` and `/handoff` all rebuild
|
|
928
|
+
* the transcript from a session that already has turns, so the launchpad's
|
|
929
|
+
* fresh-start onboarding must not survive above it. `/new` deliberately calls
|
|
930
|
+
* the bare reset above and re-expands the launchpad instead.
|
|
931
|
+
*
|
|
932
|
+
* Collapsing here rather than at each overlay call site keeps one seam for
|
|
933
|
+
* all four paths; `collapseToSessionHeader` is idempotent, so a resume that is
|
|
934
|
+
* immediately submitted to cannot produce a second transition.
|
|
935
|
+
*/
|
|
936
|
+
const adoptExistingConversation = (): void => {
|
|
937
|
+
presentation.collapseWelcomeDashboard();
|
|
938
|
+
resetTranscript();
|
|
939
|
+
};
|
|
819
940
|
overlayLifecycle = createOverlayLifecycle({
|
|
820
941
|
app: deps,
|
|
821
942
|
tui,
|
|
@@ -828,7 +949,7 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
|
|
|
828
949
|
dispatchBoard,
|
|
829
950
|
setFleetRunPhase: (runId, phase) => dispatchBoardStore.setFleetPhase(runId, phase),
|
|
830
951
|
chatPanel,
|
|
831
|
-
resetTranscript,
|
|
952
|
+
resetTranscript: adoptExistingConversation,
|
|
832
953
|
io,
|
|
833
954
|
readStructuredEntries,
|
|
834
955
|
announceTaskMemorySeedOffer,
|
|
@@ -869,9 +990,7 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
|
|
|
869
990
|
openTreeOverlayState,
|
|
870
991
|
openMessagePickerOverlayState,
|
|
871
992
|
openHelpOverlayState,
|
|
872
|
-
openAgentsOverlayState,
|
|
873
993
|
openSkillsHubState,
|
|
874
|
-
openPromptsOverlayState,
|
|
875
994
|
openExtensionsOverlayState,
|
|
876
995
|
openInteropOverlayState,
|
|
877
996
|
toggleDispatchBoardOverlay,
|
|
@@ -888,13 +1007,14 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
|
|
|
888
1007
|
const { cancelSelectedDispatch, steerSelectedDispatch } = dispatchSteering;
|
|
889
1008
|
|
|
890
1009
|
const cancelActiveRun = (): void => {
|
|
1010
|
+
operatorExtensions?.cancel();
|
|
891
1011
|
// Esc must not eat typed work: queued steers and follow-ups return to the
|
|
892
1012
|
// editor before the abort, the same restore the reference implementation
|
|
893
1013
|
// performs. cancel() then finds both queues already empty.
|
|
894
1014
|
const restored = deps.chat.clearQueuedFollowUps();
|
|
895
1015
|
if (restored.length > 0) {
|
|
896
|
-
const current = editor.
|
|
897
|
-
editor.
|
|
1016
|
+
const current = editor.getExpandedText();
|
|
1017
|
+
editor.setLiteralText([restored.join("\n\n"), current].filter((part) => part.trim().length > 0).join("\n\n"));
|
|
898
1018
|
}
|
|
899
1019
|
chatRenderer.flush();
|
|
900
1020
|
deps.chat.cancel();
|
|
@@ -919,19 +1039,19 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
|
|
|
919
1039
|
tui.requestRender();
|
|
920
1040
|
};
|
|
921
1041
|
/**
|
|
922
|
-
*
|
|
1042
|
+
* Explicit model-cycle bindings with nothing to step to. The help center documents both
|
|
923
1043
|
* keys, so a keypress that changes no pixel reads as a broken binding rather
|
|
924
|
-
* than as an empty set; the set itself is chosen in `/
|
|
1044
|
+
* than as an empty set; the set itself is chosen in `/settings chat model-picker`.
|
|
925
1045
|
*/
|
|
926
1046
|
const announceEmptyScopedSet = (): void => {
|
|
927
1047
|
notify(
|
|
928
1048
|
"info",
|
|
929
|
-
"scoped models: nothing to cycle to; run /
|
|
1049
|
+
"scoped models: nothing to cycle to; run /settings chat model-picker to choose the configured cycle set",
|
|
930
1050
|
"scoped-models:empty",
|
|
931
1051
|
);
|
|
932
1052
|
};
|
|
933
1053
|
/**
|
|
934
|
-
*
|
|
1054
|
+
* Ctrl+G s / /background. The dispatch tool owns the conversion and answers with
|
|
935
1055
|
* the line to show, so the refusal a review-gated or compete call returns is
|
|
936
1056
|
* rendered verbatim rather than restated here.
|
|
937
1057
|
*/
|
|
@@ -1044,10 +1164,43 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
|
|
|
1044
1164
|
});
|
|
1045
1165
|
|
|
1046
1166
|
applicationController = createInteractiveInputRuntime({
|
|
1167
|
+
tui,
|
|
1168
|
+
hasQueuedMessages: () => {
|
|
1169
|
+
const queue = deps.chat.queuedMessages();
|
|
1170
|
+
return queue.steer.length + queue.followUp.length > 0;
|
|
1171
|
+
},
|
|
1172
|
+
explainProtectedExit: () =>
|
|
1173
|
+
notify(
|
|
1174
|
+
"info",
|
|
1175
|
+
`Work or queued messages remain. Cancel with Ctrl+C, recover with ${keybindings.actionLabel("clio-coder.message.dequeue")}, or use /quit.`,
|
|
1176
|
+
"keyboard:exit",
|
|
1177
|
+
),
|
|
1178
|
+
explainThinkingUnavailable: () => notify("info", "This model supports only thinking off", "keyboard:thinking"),
|
|
1179
|
+
explainSearchUnavailable: () =>
|
|
1180
|
+
notify("info", "Clio transcript search requires fullscreen; use your terminal's Find", "keyboard:search"),
|
|
1047
1181
|
keybindings,
|
|
1048
1182
|
dispatchAction: dispatchInteractiveAction,
|
|
1049
1183
|
actions: {
|
|
1050
|
-
canExit: () =>
|
|
1184
|
+
canExit: () => {
|
|
1185
|
+
if (editor.getText().length > 0) return false;
|
|
1186
|
+
const queue = deps.chat.queuedMessages();
|
|
1187
|
+
if (
|
|
1188
|
+
deps.chat.isStreaming() ||
|
|
1189
|
+
deps.chat.turnPreparation().phase !== "idle" ||
|
|
1190
|
+
deps.dispatch.snapshot().running.length > 0 ||
|
|
1191
|
+
editorSubmit.hasActiveEditorBash() ||
|
|
1192
|
+
operatorExtensions?.busy ||
|
|
1193
|
+
queue.steer.length + queue.followUp.length > 0
|
|
1194
|
+
) {
|
|
1195
|
+
notify(
|
|
1196
|
+
"info",
|
|
1197
|
+
`Work or queued messages remain. Cancel with Ctrl+C, recover with ${keybindings.actionLabel("clio-coder.message.dequeue")}, or use /quit.`,
|
|
1198
|
+
"keyboard:exit",
|
|
1199
|
+
);
|
|
1200
|
+
return false;
|
|
1201
|
+
}
|
|
1202
|
+
return true;
|
|
1203
|
+
},
|
|
1051
1204
|
cycleOutputStyle: () => {
|
|
1052
1205
|
const settings = deps.getSettings?.();
|
|
1053
1206
|
if (!settings || !deps.commitSetting) return;
|
|
@@ -1110,7 +1263,8 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
|
|
|
1110
1263
|
steerSelectedDispatch,
|
|
1111
1264
|
cancelSelectedDispatch,
|
|
1112
1265
|
cancelActiveEditorBash: () => editorSubmit.cancelActiveEditorBash(),
|
|
1113
|
-
isStreaming: () =>
|
|
1266
|
+
isStreaming: () =>
|
|
1267
|
+
deps.chat.isStreaming() || deps.chat.turnPreparation().phase !== "idle" || (operatorExtensions?.busy ?? false),
|
|
1114
1268
|
cancelActiveRun,
|
|
1115
1269
|
editor,
|
|
1116
1270
|
editorSubmit,
|
|
@@ -1127,6 +1281,9 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
|
|
|
1127
1281
|
stopAgentProgress: agentProgress.stop,
|
|
1128
1282
|
disposeChat: () => deps.chat.dispose(),
|
|
1129
1283
|
disposeSubscriptions: () => {
|
|
1284
|
+
clearTimeout(operatorTimer);
|
|
1285
|
+
for (const unsubscribe of operatorSubscriptions) unsubscribe();
|
|
1286
|
+
void operatorExtensions?.dispose();
|
|
1130
1287
|
detachYaziBridge?.();
|
|
1131
1288
|
yaziBridge?.dispose();
|
|
1132
1289
|
detachWatchPane?.();
|
|
@@ -1155,6 +1312,7 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
|
|
|
1155
1312
|
if (leftBehind !== null) process.stderr.write(`${leftBehind}\n`);
|
|
1156
1313
|
try {
|
|
1157
1314
|
if (dumpInputWedgeOnTerminate) process.off("SIGTERM", dumpInputWedgeOnTerminate);
|
|
1315
|
+
await operatorExtensions?.dispose();
|
|
1158
1316
|
await deps.onShutdown();
|
|
1159
1317
|
} finally {
|
|
1160
1318
|
if (lease) await lease.close();
|
|
@@ -1163,7 +1321,7 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
|
|
|
1163
1321
|
},
|
|
1164
1322
|
registerInputListener: (listener) => {
|
|
1165
1323
|
if (lease) lease.registerApplicationInput(listener);
|
|
1166
|
-
else tui.
|
|
1324
|
+
else tui.setApplicationInputPolicy(listener);
|
|
1167
1325
|
},
|
|
1168
1326
|
...(lease
|
|
1169
1327
|
? {
|
|
@@ -1180,6 +1338,36 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
|
|
|
1180
1338
|
: {}),
|
|
1181
1339
|
});
|
|
1182
1340
|
|
|
1341
|
+
const operatorSubscriptions = operatorExtensions
|
|
1342
|
+
? [
|
|
1343
|
+
BusChannels.SessionStart,
|
|
1344
|
+
BusChannels.SessionEnd,
|
|
1345
|
+
BusChannels.SessionParked,
|
|
1346
|
+
BusChannels.SessionResumed,
|
|
1347
|
+
BusChannels.SessionTurnSwitched,
|
|
1348
|
+
].map((channel) => deps.bus.on(channel, () => operatorExtensions.invalidateContext()))
|
|
1349
|
+
: [];
|
|
1350
|
+
scheduleOperatorMaintenance = () => {
|
|
1351
|
+
clearTimeout(operatorTimer);
|
|
1352
|
+
const delay = operatorExtensions?.maintenanceDelayMs;
|
|
1353
|
+
if (delay === undefined || delay === null) return;
|
|
1354
|
+
operatorTimer = setTimeout(() => {
|
|
1355
|
+
operatorExtensions?.maintenance();
|
|
1356
|
+
scheduleOperatorMaintenance();
|
|
1357
|
+
}, delay);
|
|
1358
|
+
operatorTimer.unref();
|
|
1359
|
+
};
|
|
1360
|
+
queueMicrotask(() => {
|
|
1361
|
+
void operatorExtensions?.reload("startup");
|
|
1362
|
+
});
|
|
1363
|
+
getTerminationCoordinator().onDrain(
|
|
1364
|
+
async () => {
|
|
1365
|
+
clearTimeout(operatorTimer);
|
|
1366
|
+
for (const unsubscribe of operatorSubscriptions) unsubscribe();
|
|
1367
|
+
await operatorExtensions?.dispose();
|
|
1368
|
+
},
|
|
1369
|
+
{ timeoutMs: 6500 },
|
|
1370
|
+
);
|
|
1183
1371
|
if (lease) {
|
|
1184
1372
|
const adopted = lease.adopt({
|
|
1185
1373
|
root: presentation.root,
|