@iowarp/clio-coder 0.4.2 → 0.4.4
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/CHANGELOG.md +98 -0
- package/CONTRIBUTING.md +86 -19
- package/README.md +35 -6
- package/dist/{acp-TMDQZDIG.js → acp-WNAYYF4F.js} +12 -13
- package/dist/{agents-5N5NG3XG.js → agents-3OKXHLOI.js} +60 -57
- package/dist/assets/codewiki.json +1 -1
- package/dist/{auth-Z5CCBXKQ.js → auth-VKNNMGPU.js} +21 -19
- package/dist/{builtins-K6TNDT24.js → builtins-WGALA46I.js} +9 -4
- package/dist/{chunk-XE3PCIXH.js → chunk-23L32XTI.js} +12 -9
- package/dist/{chunk-I64IFBLB.js → chunk-25QBEXRS.js} +18 -11
- package/dist/{chunk-CDNVLKUX.js → chunk-26QSH3EJ.js} +13 -7
- package/dist/{chunk-QQLGQY2A.js → chunk-2ASED4PZ.js} +22 -22
- package/dist/{chunk-MCEPRMZW.js → chunk-2CU2H6KE.js} +2 -2
- package/dist/chunk-2DSOYNFC.js +108 -0
- package/dist/{chunk-72GZI5EV.js → chunk-2JH2WHGE.js} +2 -2
- package/dist/{chunk-I66EAJFY.js → chunk-2WZ546HR.js} +267 -232
- package/dist/{chunk-O3YUNJZ2.js → chunk-2ZSONWVL.js} +82 -25
- package/dist/{chunk-2NHR3NAY.js → chunk-36CT5VVL.js} +331 -42
- package/dist/{chunk-2X4RYJTJ.js → chunk-3GY4F45V.js} +3 -3
- package/dist/{chunk-ZW55JB7N.js → chunk-3ODX73FK.js} +4 -6
- package/dist/{chunk-PBP4B7XR.js → chunk-3UNOLWNZ.js} +3 -3
- package/dist/{chunk-4JDLP6ZS.js → chunk-3UUXNFEX.js} +14 -10
- package/dist/{chunk-RKSR6VSF.js → chunk-4IUZQIJ3.js} +29 -1
- package/dist/{chunk-ZW4HH5JJ.js → chunk-4M6Z5QVF.js} +6 -6
- package/dist/{chunk-K6BSR66V.js → chunk-4NSRCOYP.js} +4 -1
- package/dist/{chunk-M2DAX4F6.js → chunk-4WR7VSYB.js} +2 -2
- package/dist/{chunk-FSP7CMNU.js → chunk-54X7T7DK.js} +61 -6
- package/dist/{chunk-54ODD65L.js → chunk-5636DCO5.js} +4 -4
- package/dist/chunk-57XXR6DR.js +3763 -0
- package/dist/{chunk-3KIPBMUA.js → chunk-5ICU3EUH.js} +2 -2
- package/dist/{chunk-77QIVUZB.js → chunk-5MEZN6CB.js} +4 -4
- package/dist/{chunk-O42A54GG.js → chunk-5OIVVPHF.js} +2 -2
- package/dist/{chunk-YJISEZKC.js → chunk-5TUB6SLS.js} +6 -6
- package/dist/{chunk-IMXMHHMQ.js → chunk-6OSVSQL5.js} +341 -57
- package/dist/{chunk-Q4XWMHX6.js → chunk-6PAZTBPA.js} +14 -2
- package/dist/{chunk-FVDGR2ZL.js → chunk-6Q3CYFD3.js} +112 -39
- package/dist/{chunk-IDNA72AH.js → chunk-6QOTUPRG.js} +155 -36
- package/dist/{chunk-X7IARSHT.js → chunk-6UINWWS6.js} +16 -10
- package/dist/{chunk-CYZW7JHJ.js → chunk-72YIHOZQ.js} +9 -9
- package/dist/{chunk-IKSLQ4XV.js → chunk-75W7L2E2.js} +752 -861
- package/dist/{chunk-CRFOIAX3.js → chunk-7UGL4MB5.js} +6 -6
- package/dist/{chunk-HIICAHCJ.js → chunk-AUPNRN7C.js} +2 -2
- package/dist/{chunk-7BHIY2MW.js → chunk-BJVFZO5U.js} +8 -50
- package/dist/{chunk-B74PXLU7.js → chunk-CUSRQKPU.js} +65 -3
- package/dist/chunk-DQOVN6KV.js +386 -0
- package/dist/{chunk-E7GT7O5N.js → chunk-DT3LWJOB.js} +7 -4
- package/dist/chunk-DXKJURES.js +671 -0
- package/dist/{chunk-JBCS7CRR.js → chunk-EL24TAU4.js} +10 -10
- package/dist/{chunk-TPEQIQIE.js → chunk-ELWDPP3Y.js} +8 -8
- package/dist/{chunk-NDINPTJ4.js → chunk-ELZVTCGV.js} +5 -4
- package/dist/chunk-EXLD33WO.js +381 -0
- package/dist/chunk-FEAXX7B6.js +101 -0
- package/dist/{chunk-RLYRBIYQ.js → chunk-FFUPXJC4.js} +90 -331
- package/dist/{chunk-5PFYMY2V.js → chunk-FTMGRKEF.js} +2 -2
- package/dist/{chunk-34BHNEE3.js → chunk-GHS5EBTQ.js} +58 -7
- package/dist/{chunk-DYHAXKHD.js → chunk-GWZNEVM2.js} +12 -8
- package/dist/chunk-GX5WYQO4.js +59 -0
- package/dist/chunk-GYV6VZOC.js +26 -0
- package/dist/{chunk-MQXIVJ35.js → chunk-HAXOFFRH.js} +5 -5
- package/dist/chunk-I2DWJ4GM.js +390 -0
- package/dist/{chunk-TXOTCRLG.js → chunk-I5FWO7L5.js} +5 -5
- package/dist/{chunk-WNP7O5WZ.js → chunk-ID64D7PE.js} +4 -4
- package/dist/{chunk-XQRY4DTA.js → chunk-IGLP3ODT.js} +10 -10
- package/dist/chunk-IRXAATOX.js +539 -0
- package/dist/chunk-IXIY2H4R.js +44 -0
- package/dist/{chunk-SSEYRH53.js → chunk-IZXGRF7P.js} +92 -147
- package/dist/{chunk-5TSRNF4G.js → chunk-JCI2ROMZ.js} +164 -6
- package/dist/{chunk-JWJGP5DQ.js → chunk-JEIYHLOR.js} +7 -7
- package/dist/{chunk-F2I26BDK.js → chunk-JQLNNIKT.js} +4 -4
- package/dist/{chunk-BYMNWQ7O.js → chunk-JSD46VO2.js} +315 -63
- package/dist/{chunk-AK5XEFVZ.js → chunk-JT2RFCC5.js} +64 -14
- package/dist/{chunk-MCMZMDAC.js → chunk-K6T2ZAMZ.js} +168 -6
- package/dist/{chunk-PGF63K6I.js → chunk-KFV5L5SK.js} +73 -4
- package/dist/{chunk-IHXBNWMM.js → chunk-KXDSS5WJ.js} +7 -3
- package/dist/{chunk-PJX3WQUQ.js → chunk-LLXSDWXS.js} +3 -3
- package/dist/{chunk-DZAW46HP.js → chunk-LTIKRKFL.js} +3 -3
- package/dist/{chunk-DZEK6CJN.js → chunk-N56KALIC.js} +21 -21
- package/dist/{chunk-B7HM5Z7T.js → chunk-NAI6ZFCY.js} +9 -5
- package/dist/{chunk-I66ZTYNP.js → chunk-NRO2BJRH.js} +2656 -2213
- package/dist/{chunk-ZGNYYXQ6.js → chunk-NXIMQY5W.js} +3 -3
- package/dist/{chunk-IKOZFYBN.js → chunk-NXYCB2VD.js} +149 -106
- package/dist/{chunk-CWVRRIEI.js → chunk-NZMNUPZZ.js} +2 -2
- package/dist/{chunk-462T4EGZ.js → chunk-O5CVSAG5.js} +2 -2
- package/dist/chunk-ODGTEFFI.js +50 -0
- package/dist/{chunk-3F7VUY77.js → chunk-OEJSLEPW.js} +2 -2
- package/dist/{chunk-KKOJXO6R.js → chunk-OMQNJVKW.js} +4 -2
- package/dist/{chunk-5KW52TEP.js → chunk-Q4WO54TA.js} +132 -77
- package/dist/{chunk-W6NIE6OW.js → chunk-QUFRYSWI.js} +13 -7
- package/dist/{chunk-42FMPA75.js → chunk-QZWQA4DE.js} +2 -2
- package/dist/chunk-R6Q67RJH.js +134 -0
- package/dist/{chunk-W4YEMFBX.js → chunk-RAY4OVGZ.js} +3 -3
- package/dist/{chunk-ZNT2M6TG.js → chunk-RQCKCSRL.js} +17 -17
- package/dist/{chunk-LJID3DYZ.js → chunk-RXTN6AKH.js} +3 -3
- package/dist/{chunk-P75RZCJW.js → chunk-RZDWV63N.js} +3 -3
- package/dist/{chunk-UH632ZYL.js → chunk-S6PYF2XF.js} +2 -2
- package/dist/{chunk-HJWWJ6IL.js → chunk-TOIVGRUX.js} +17 -5
- package/dist/{chunk-HLAFFSEK.js → chunk-TQAHXW6Y.js} +2 -2
- package/dist/{chunk-JIEGK6UF.js → chunk-U6TMQNSI.js} +48 -4
- package/dist/{chunk-2HFQNRV3.js → chunk-UEPWCCTY.js} +12 -12
- package/dist/chunk-UOIZ7DA4.js +41 -0
- package/dist/{chunk-UH347SHR.js → chunk-USR47QNF.js} +11 -11
- package/dist/{chunk-AZ4WMN4W.js → chunk-V6HJFQZE.js} +2 -2
- package/dist/chunk-V76WTFTW.js +318 -0
- package/dist/{chunk-NMJXSHBJ.js → chunk-W54I7H25.js} +2 -2
- package/dist/{chunk-KPXDY6QF.js → chunk-XRZT5WY5.js} +2 -2
- package/dist/{chunk-UBRFI4HS.js → chunk-XULDXHTN.js} +142 -50
- package/dist/chunk-XXYSBZIQ.js +283 -0
- package/dist/{chunk-HKMD33FO.js → chunk-Y55JBDO5.js} +405 -122
- package/dist/{chunk-XOXV5GKE.js → chunk-YD5GIKET.js} +17 -8
- package/dist/{chunk-XGDPUNND.js → chunk-YECAMM3D.js} +2 -2
- package/dist/{chunk-BO7Y52RY.js → chunk-YNFKXPEC.js} +7 -7
- package/dist/{chunk-VXMFAE2W.js → chunk-YPC6ZR5L.js} +19 -6
- package/dist/{chunk-M2WXEHER.js → chunk-ZA4VCIGV.js} +2 -2
- package/dist/cli/index.js +42 -40
- package/dist/{clio-7VB377CC.js → clio-QLICPCF5.js} +7 -7
- package/dist/{code-nav-YVLCYA7V.js → code-nav-IJR2DBPR.js} +9 -9
- package/dist/{components-UBWCQSRW.js → components-2TGAI2RC.js} +5 -6
- package/dist/{config-4HVOS65E.js → config-IUA6OYNS.js} +88 -81
- package/dist/{configure-PIWO7B24.js → configure-VEPX4NMX.js} +26 -25
- package/dist/{context-KQYIWPWT.js → context-2DKHWH2T.js} +60 -45
- package/dist/{context-IYEHL3WQ.js → context-4MPR7WKB.js} +78 -69
- package/dist/{context-N6ZE3LGJ.js → context-BOYF5EJM.js} +15 -11
- package/dist/{context-clear-G4OGZJDS.js → context-clear-S4ZJCQUX.js} +73 -65
- package/dist/context-map-COB37XXN.js +505 -0
- package/dist/{context-working-set-BWLF6LJP.js → context-working-set-3I3FYX6Y.js} +18 -17
- package/dist/detail-A7JAVSIG.js +98 -0
- package/dist/{dispatch-runner-2QQAITS3.js → dispatch-runner-RJ5I2F2O.js} +99 -75
- package/dist/{docs-PD3EXDKU.js → docs-SPOV3BAN.js} +3 -5
- package/dist/{doctor-LHBD36VU.js → doctor-DKICC2SN.js} +71 -48
- package/dist/{eval-C45FYRJ6.js → eval-OQOQUDHK.js} +308 -146
- package/dist/{eval-inventory-6DEJPLBF.js → eval-inventory-Y6QRFOH5.js} +4 -4
- package/dist/{evidence-6SHONYAF.js → evidence-4DQ25GUQ.js} +79 -175
- package/dist/evidence-4F5USFKH.js +208 -0
- package/dist/{evolve-KRKMV72X.js → evolve-GSS52E5J.js} +71 -67
- package/dist/{extensions-KPZ2UHBB.js → extensions-G7MFLYHT.js} +8 -9
- package/dist/{fleet-IVTCKDHT.js → fleet-Q37YHHAQ.js} +126 -118
- package/dist/{fleet-commands-EDWL3IT7.js → fleet-commands-G7E4N7SM.js} +16 -13
- package/dist/{fleet-decisions-YP3YEFGK.js → fleet-decisions-O7M6QBA2.js} +9 -8
- package/dist/{fleet-graph-ZFWKHY2M.js → fleet-graph-TOUBW6OW.js} +21 -20
- package/dist/{fleet-inspect-FVUNCBML.js → fleet-inspect-SW33JJNI.js} +65 -60
- package/dist/{fleet-preflight-UN5XED4R.js → fleet-preflight-CV2655TW.js} +4 -5
- package/dist/{fleet-validate-XOWC4HSX.js → fleet-validate-KESZX2YH.js} +25 -24
- package/dist/{fleet-verify-UN3SODEL.js → fleet-verify-UQPMTVE3.js} +66 -61
- package/dist/{fleet-view-TWHJKCN6.js → fleet-view-MN2VG4MR.js} +65 -60
- package/dist/{init-T2QORQ3Y.js → init-PXEXQSBF.js} +90 -82
- package/dist/{interop-IN5I2A66.js → interop-ZG5T62U3.js} +12 -13
- package/dist/inventory-C26CFDRR.js +101 -0
- package/dist/{library-LSCATDLZ.js → library-B2W4N74O.js} +29 -29
- package/dist/{memory-HYOKAGGJ.js → memory-YCANYS5A.js} +73 -69
- package/dist/{models-2GPMFYCM.js → models-GERTU3YI.js} +51 -47
- package/dist/{monitor-E4ASVUJH.js → monitor-CPNIUULB.js} +74 -67
- package/dist/{orchestrator-DDMPR3PY.js → orchestrator-J4BSH4WQ.js} +1288 -1606
- package/dist/{panes-E3RUXOW5.js → panes-BOHAEGYC.js} +4 -4
- package/dist/{panes-IXKLOKA2.js → panes-NXSLDQZ2.js} +10 -11
- package/dist/{paths-L7LGY6RN.js → paths-VSUWNC22.js} +6 -7
- package/dist/reset-TNWTB5LU.js +343 -0
- package/dist/{resources-OTRSN34L.js → resources-4PXNMD5G.js} +29 -22
- package/dist/{run-5DEYH5QK.js → run-D6XJ34CN.js} +132 -132
- package/dist/{share-IHWTLO3M.js → share-2NWMJJEE.js} +27 -27
- package/dist/{skills-IYMXMKW4.js → skills-KR7WON5G.js} +40 -33
- package/dist/{skills-eval-DROHSJAR.js → skills-eval-O2ZNOLDS.js} +81 -77
- package/dist/{skills-inventory-D7X4L4ZX.js → skills-inventory-ZZOUBK7O.js} +23 -22
- package/dist/{slash-commands-QBM7UZ3B.js → slash-commands-ZXPJD64J.js} +47 -37
- package/dist/{steer-Z5DO23FJ.js → steer-XA25PSCS.js} +4 -4
- package/dist/{support-U7QOWY26.js → support-7EMVWYG2.js} +6 -6
- package/dist/{targets-P2FUC4IL.js → targets-OMH2XCSN.js} +50 -49
- package/dist/tasks-IPAGMEIX.js +36 -0
- package/dist/{terminal-lease-YREJ3JX2.js → terminal-lease-C2J3JYRE.js} +4 -4
- package/dist/{tools-5B7RO6MV.js → tools-EFFEAIDP.js} +8 -9
- package/dist/{trace-YMGMUM6A.js → trace-FXMXUZUF.js} +7 -7
- package/dist/uninstall-HALS6BLF.js +407 -0
- package/dist/upgrade-MS72RJEP.js +306 -0
- package/dist/{usage-ME5MPXGX.js → usage-NHG6MCJM.js} +162 -108
- package/dist/{verifiers-BVZ7IWOO.js → verifiers-7AUNVXDY.js} +155 -22
- package/dist/{verify-5K7ZKQFC.js → verify-FWYGPKMR.js} +14 -12
- package/dist/{web-fetch-MPARV2K7.js → web-fetch-V4FKSDAV.js} +4 -4
- package/dist/{wiki-generate-F5W5QTYY.js → wiki-generate-743CIGJW.js} +99 -90
- package/dist/{with-panes-BYOJCLAM.js → with-panes-BDQEWBRT.js} +10 -10
- package/dist/worker/entry.js +72 -68
- package/docs/README.md +3 -2
- package/docs/architecture/acp.md +17 -0
- package/docs/architecture/artifact-placement.md +1 -0
- package/docs/architecture/artifact-versions.md +2 -2
- package/docs/architecture/context-engine.md +4 -0
- package/docs/architecture/dispatch-typed-intent.md +1 -1
- package/docs/architecture/evidence-and-memory.md +1 -1
- package/docs/architecture/middleware-and-components.md +1 -1
- package/docs/architecture/model-catalog.md +21 -10
- package/docs/architecture/observability.md +19 -2
- package/docs/architecture/prompt-envelope-and-tools.md +17 -5
- package/docs/architecture/provider-adapter-cookbook.md +63 -0
- package/docs/architecture/safety-model.md +25 -22
- package/docs/architecture/tui-design.md +1 -1
- package/docs/guide/built-in-agents.md +25 -11
- package/docs/guide/commands-and-modes.md +18 -3
- package/docs/guide/configuration-and-targets.md +100 -10
- package/docs/guide/configuration-reference.md +17 -7
- package/docs/guide/environment-variables.md +4 -2
- package/docs/guide/installation-and-lifecycle.md +37 -4
- package/docs/guide/proactive-memory.md +66 -55
- package/docs/guide/skills-marketplace.md +18 -0
- package/docs/guide/tool-usage.md +78 -3
- package/docs/history/config-knobs-audit.md +2 -2
- package/docs/process/development-pipeline.md +40 -2
- package/docs/process/eval-runner.md +67 -3
- package/docs/process/git-commit-provenance.md +15 -0
- package/docs/process/release-cut-checklist.md +207 -0
- package/docs/process/scientific-validation.md +18 -17
- package/evals/behavioral-machinery-support.ts +1 -0
- package/evals/behavioral-machinery.yaml +1 -1
- package/evals/behavioral-model.yaml +3 -2
- package/package.json +2 -2
- package/skills/README.md +7 -5
- package/skills/coding/ast-grep/SKILL.md +101 -30
- package/skills/coding/ast-grep/evals.md +26 -0
- package/skills/coding/coding-standards/SKILL.md +47 -2
- package/skills/coding/coding-standards/evals.md +23 -0
- package/skills/coding/prototype/SKILL.md +87 -28
- package/skills/coding/prototype/evals.md +19 -0
- package/skills/coding/tdd/SKILL.md +80 -53
- package/skills/coding/tdd/evals.md +20 -0
- package/skills/context/context-handoff/SKILL.md +43 -2
- package/skills/context/context-handoff/evals.md +44 -0
- package/skills/context/context-prime/SKILL.md +45 -15
- package/skills/context/context-prime/evals.md +45 -0
- package/skills/git/branch-closeout/SKILL.md +132 -0
- package/skills/git/branch-closeout/evals.md +133 -0
- package/skills/git/branch-closeout/references/closeout-checklist.md +81 -0
- package/skills/git/file-ticket/SKILL.md +77 -63
- package/skills/git/file-ticket/assets/issue-template.md +22 -0
- package/skills/git/file-ticket/evals.md +31 -26
- package/skills/git/file-ticket/references/issue-discovery.md +49 -0
- package/skills/git/fix-issue/SKILL.md +87 -64
- package/skills/git/fix-issue/evals.md +35 -31
- package/skills/git/fix-issue/references/diagnosis-and-rca.md +46 -0
- package/skills/git/resolve-merge-conflicts/SKILL.md +100 -51
- package/skills/git/resolve-merge-conflicts/evals.md +52 -25
- package/skills/git/resolve-merge-conflicts/references/conflict-matrix.md +126 -0
- package/skills/git/ship/SKILL.md +103 -67
- package/skills/git/ship/assets/pr-template.md +21 -0
- package/skills/git/ship/evals.md +44 -28
- package/skills/git/ship/references/remote-and-branch-policy.md +62 -0
- package/skills/git/worktree-create/SKILL.md +80 -50
- package/skills/git/worktree-create/evals.md +40 -33
- package/skills/git/worktree-create/references/worktree-setup.md +62 -66
- package/skills/git/worktree-merge/SKILL.md +112 -65
- package/skills/git/worktree-merge/evals.md +42 -34
- package/skills/git/worktree-merge/references/merge-strategies.md +52 -0
- package/skills/planning/archify/SKILL.md +196 -0
- package/skills/planning/archify/evals.md +65 -0
- package/skills/planning/architecture/SKILL.md +61 -12
- package/skills/planning/architecture/evals.md +65 -0
- package/skills/planning/backlog/SKILL.md +130 -14
- package/skills/planning/backlog/evals.md +142 -0
- package/skills/planning/prd/SKILL.md +47 -6
- package/skills/planning/prd/evals.md +54 -0
- package/skills/planning/product-intent/SKILL.md +57 -2
- package/skills/planning/product-intent/evals.md +70 -0
- package/skills/planning/tech-spec/SKILL.md +53 -2
- package/skills/planning/tech-spec/evals.md +73 -0
- package/skills/registry.yaml +58 -50
- package/skills/remote.yaml +13 -0
- package/skills/research/arxiv-literature/SKILL.md +76 -18
- package/skills/research/arxiv-literature/evals.md +50 -0
- package/skills/research/experiment-protocol/SKILL.md +20 -1
- package/skills/research/experiment-protocol/evals.md +23 -0
- package/skills/research/scientific-debugging/SKILL.md +24 -1
- package/skills/research/scientific-debugging/evals.md +18 -0
- package/skills/research/scientific-modernization/SKILL.md +26 -1
- package/skills/research/scientific-modernization/evals.md +27 -0
- package/skills/skill-marketplace.json +63 -28
- package/skills/workflow/cut-it/SKILL.md +64 -5
- package/skills/workflow/cut-it/evals.md +101 -0
- package/skills/workflow/design-council/SKILL.md +112 -27
- package/skills/workflow/design-council/evals.md +161 -0
- package/skills/workflow/grill-me/SKILL.md +85 -10
- package/skills/workflow/grill-me/evals.md +153 -0
- package/skills/workflow/workflow-distiller/SKILL.md +76 -17
- package/skills/workflow/workflow-distiller/evals.md +118 -0
- package/src/cli/args.ts +0 -8
- package/src/cli/configure-interop.ts +105 -13
- package/src/cli/configure-oauth.ts +57 -0
- package/src/cli/configure-onboarding.ts +980 -0
- package/src/cli/configure-target.ts +594 -0
- package/src/cli/configure.ts +1084 -529
- package/src/cli/context-map.ts +114 -0
- package/src/cli/context.ts +4 -0
- package/src/cli/doctor-state-size.ts +1 -12
- package/src/cli/doctor-validation-contract.ts +28 -0
- package/src/cli/doctor.ts +5 -0
- package/src/cli/evidence-detail.ts +1 -75
- package/src/cli/evidence-inventory.ts +1 -167
- package/src/cli/index.ts +3 -0
- package/src/cli/lifecycle-presenter.ts +436 -0
- package/src/cli/models.ts +10 -2
- package/src/cli/modes/print.ts +5 -1
- package/src/cli/reset.ts +228 -106
- package/src/cli/run.ts +7 -4
- package/src/cli/select.ts +664 -0
- package/src/cli/skills.ts +9 -2
- package/src/cli/targets.ts +3 -0
- package/src/cli/tasks.ts +84 -0
- package/src/cli/uninstall.ts +233 -165
- package/src/cli/upgrade.ts +210 -150
- package/src/cli/usage.ts +92 -27
- package/src/cli/validate-model.ts +3 -3
- package/src/cli/verifiers.ts +147 -1
- package/src/cli/wiki-generate.ts +1 -0
- package/src/core/commit-attribution.ts +41 -1
- package/src/core/config.ts +56 -0
- package/src/core/external-diagnostic.ts +44 -0
- package/src/core/gateway-routing.ts +157 -0
- package/src/core/git-commit-attribution.ts +46 -3
- package/src/core/run-overrides.ts +0 -5
- package/src/core/safe-exec.ts +17 -2
- package/src/core/skill-activation.ts +92 -2
- package/src/core/tool-names.ts +5 -2
- package/src/domains/agents/builtins/architect.md +1 -1
- package/src/domains/agents/builtins/coder.md +1 -1
- package/src/domains/agents/builtins/documenter.md +1 -1
- package/src/domains/agents/builtins/git-master.md +1 -1
- package/src/domains/agents/builtins/provenance.md +7 -7
- package/src/domains/agents/builtins/tester.md +1 -1
- package/src/domains/agents/builtins/verifier.md +2 -2
- package/src/domains/agents/builtins/wiki-writer.md +4 -3
- package/src/domains/agents/builtins/world-knowledge.md +31 -0
- package/src/domains/agents/catalog.ts +1 -1
- package/src/domains/agents/result-contract.ts +70 -0
- package/src/domains/context/extension.ts +31 -7
- package/src/domains/context/refresh.ts +3 -0
- package/src/domains/context/wiki/frontmatter.ts +5 -2
- package/src/domains/context/wiki/generate.ts +6 -0
- package/src/domains/context/wiki/map-seed.ts +589 -0
- package/src/domains/context/wiki/plan.ts +2 -2
- package/src/domains/context/wiki/prompts.ts +43 -0
- package/src/domains/dispatch/active-route-planner.ts +4 -0
- package/src/domains/dispatch/admission.ts +29 -0
- package/src/domains/dispatch/agent-candidates.ts +10 -0
- package/src/domains/dispatch/budget-envelope.ts +86 -1
- package/src/domains/dispatch/capability-match.ts +1 -0
- package/src/domains/dispatch/capacity-lease.ts +17 -0
- package/src/domains/dispatch/code-step.ts +11 -4
- package/src/domains/dispatch/contract.ts +42 -8
- package/src/domains/dispatch/execution-scheduler.ts +2 -0
- package/src/domains/dispatch/extension.ts +184 -56
- package/src/domains/dispatch/fleet-commit-attribution.ts +5 -0
- package/src/domains/dispatch/fleet-run.ts +1 -0
- package/src/domains/dispatch/host-verification.ts +114 -13
- package/src/domains/dispatch/intent.ts +28 -18
- package/src/domains/dispatch/orphan-recovery.ts +2 -0
- package/src/domains/dispatch/receipt-integrity.ts +4 -0
- package/src/domains/dispatch/reservation-store.ts +5 -3
- package/src/domains/dispatch/state.ts +15 -2
- package/src/domains/dispatch/types.ts +20 -2
- package/src/domains/dispatch/worker-model-metadata.ts +38 -0
- package/src/domains/eval/metrics/call-ledger-stream.ts +34 -11
- package/src/domains/eval/metrics/token-stream.ts +201 -31
- package/src/domains/eval/metrics/tracked.ts +40 -4
- package/src/domains/eval/runners/clio-run.ts +17 -11
- package/src/domains/eval/runners/context-index.ts +2 -7
- package/src/domains/eval/runners/context-init.ts +3 -6
- package/src/domains/eval/runners/external-command.ts +29 -11
- package/src/domains/eval/schema/suite.ts +28 -0
- package/src/domains/eval/schema/verdict.ts +2 -2
- package/src/domains/eval/suites/resolve.ts +13 -1
- package/src/domains/eval/suites/run.ts +24 -3
- package/src/domains/evidence/build.ts +102 -15
- package/src/domains/evidence/detail.ts +69 -0
- package/src/domains/evidence/eval.ts +13 -1
- package/src/domains/evidence/finish-contract-map.ts +5 -1
- package/src/domains/evidence/inventory.ts +167 -0
- package/src/domains/evidence/store.ts +16 -0
- package/src/domains/evidence/types.ts +12 -0
- package/src/domains/extensions/resources.ts +7 -0
- package/src/domains/interop/registry.ts +6 -2
- package/src/domains/interop/types.ts +4 -0
- package/src/domains/lifecycle/migrations/index.ts +4 -0
- package/src/domains/memory/task-memory-policy.ts +70 -26
- package/src/domains/memory/task-memory-telemetry.ts +1 -0
- package/src/domains/middleware/index.ts +0 -1
- package/src/domains/middleware/marketplace-offer.ts +22 -35
- package/src/domains/middleware/memory-intervention.ts +127 -32
- package/src/domains/middleware/memory-step-endpoint.ts +3 -2
- package/src/domains/middleware/runtime.ts +7 -3
- package/src/domains/middleware/skills-reminder.ts +31 -2
- package/src/domains/mux/detect.ts +3 -6
- package/src/domains/observability/accountability.ts +15 -1
- package/src/domains/observability/compaction-usage.ts +118 -0
- package/src/domains/observability/contract.ts +52 -7
- package/src/domains/observability/cost.ts +1 -1
- package/src/domains/observability/evidence-index.ts +10 -0
- package/src/domains/observability/extension.ts +15 -6
- package/src/domains/observability/out-of-turn-usage.ts +52 -21
- package/src/domains/observability/projection.ts +394 -45
- package/src/{interactive → domains/observability}/worker-progress.ts +3 -3
- package/src/domains/prompts/fragments/operating/contract.md +2 -0
- package/src/domains/prompts/fragments/wiki/page.md +8 -0
- package/src/domains/providers/contract.ts +4 -1
- package/src/domains/providers/extension.ts +40 -9
- package/src/domains/providers/model-capabilities.ts +9 -0
- package/src/domains/providers/model-discovery.ts +3 -4
- package/src/domains/providers/model-runtime-capabilities.ts +15 -5
- package/src/domains/providers/models/local-models/clio-coder-local-coding-targets.yaml +48 -26
- package/src/domains/providers/runtimes/antigravity/antigravity-code.ts +225 -45
- package/src/domains/providers/runtimes/claude/claude-code.ts +9 -0
- package/src/domains/providers/runtimes/common/lmstudio-http.ts +6 -2
- package/src/domains/providers/runtimes/common/local-synth.ts +2 -0
- package/src/domains/providers/runtimes/protocol/litellm.ts +119 -29
- package/src/domains/providers/support.ts +11 -5
- package/src/domains/providers/target-model-cache.ts +25 -2
- package/src/domains/providers/types/capability-flags.ts +2 -0
- package/src/domains/providers/types/runtime-descriptor.ts +20 -1
- package/src/domains/providers/types/target-descriptor.ts +19 -0
- package/src/domains/resources/index.ts +3 -0
- package/src/domains/resources/skills/install.ts +72 -7
- package/src/domains/resources/skills/loader.ts +7 -0
- package/src/domains/resources/skills/marketplace.ts +63 -11
- package/src/domains/safety/action-classifier.ts +7 -0
- package/src/domains/safety/autonomy.ts +15 -0
- package/src/domains/safety/default-path-policy.ts +2 -0
- package/src/domains/safety/finish-contract-registration.ts +29 -14
- package/src/domains/safety/finish-contract.ts +252 -40
- package/src/domains/safety/index.ts +21 -1
- package/src/domains/safety/path-policy.ts +1 -1
- package/src/domains/safety/policy-engine.ts +60 -17
- package/src/domains/safety/protected-artifacts.ts +191 -88
- package/src/domains/safety/rigor.ts +53 -39
- package/src/domains/safety/run-effects.ts +2 -22
- package/src/domains/safety/skill-authority.ts +55 -0
- package/src/domains/safety/validation-contract.ts +388 -0
- package/src/domains/session/archive-readers.ts +10 -1
- package/src/domains/session/compaction/compact.ts +72 -22
- package/src/domains/session/decision-board.ts +101 -2
- package/src/domains/session/entries.ts +50 -7
- package/src/domains/session/extension.ts +4 -4
- package/src/domains/session/handoff.ts +2 -1
- package/src/domains/session/manager.ts +2 -3
- package/src/domains/session/task-board.ts +14 -1
- package/src/domains/session/tree/fork.ts +1 -2
- package/src/domains/session/tree/navigator.ts +1 -1
- package/src/domains/session/usage.ts +3 -3
- package/src/domains/user-tasks/acceptance.ts +56 -0
- package/src/domains/user-tasks/active-acceptance.ts +40 -0
- package/src/domains/user-tasks/store.ts +34 -3
- package/src/engine/acp/adapter.ts +24 -6
- package/src/engine/acp/server.ts +21 -4
- package/src/engine/acp/transport.ts +53 -8
- package/src/engine/acp/types.ts +4 -0
- package/src/engine/agent.ts +13 -3
- package/src/engine/ai.ts +26 -8
- package/src/engine/antigravity/subprocess-runtime.ts +386 -120
- package/src/engine/api-registry.ts +3 -0
- package/src/engine/apis/ollama-native.ts +15 -0
- package/src/engine/apis/openai-completions.ts +117 -14
- package/src/engine/claude/subprocess-runtime.ts +107 -60
- package/src/engine/external-subprocess.ts +122 -6
- package/src/entry/background-model-metadata.ts +18 -0
- package/src/entry/compaction-prompt.ts +57 -0
- package/src/entry/orchestrator.ts +416 -218
- package/src/entry/task-memory-lifecycle.ts +35 -0
- package/src/interactive/chat-loop-messages.ts +13 -4
- package/src/interactive/chat-loop.ts +65 -2
- package/src/interactive/chat-renderer.ts +1 -0
- package/src/interactive/cost-overlay.ts +26 -2
- package/src/interactive/dispatch-board.ts +46 -717
- package/src/interactive/fleet-run-preview.ts +2 -1
- package/src/interactive/interactive-application.ts +3 -2
- package/src/interactive/interactive-presentation.ts +55 -12
- package/src/interactive/interactive-slash-runtime.ts +4 -2
- package/src/interactive/oracle.ts +5 -2
- package/src/interactive/overlays/fleet-run-approval.ts +3 -2
- package/src/interactive/overlays/message-picker.ts +2 -2
- package/src/interactive/overlays/settings.ts +2 -2
- package/src/interactive/overlays/tree-selector.ts +2 -2
- package/src/interactive/renderers/branch-summary.ts +1 -1
- package/src/interactive/renderers/worker-entry.ts +32 -0
- package/src/interactive/slash-autocomplete.ts +4 -6
- package/src/interactive/slash-commands.ts +49 -45
- package/src/interactive/slash-spec.ts +28 -0
- package/src/interactive/theme/labels.ts +19 -13
- package/src/interactive/turn-context.ts +9 -5
- package/src/interactive/turn-recovery.ts +8 -0
- package/src/interactive/turn-runtime.ts +27 -11
- package/src/interactive/turn-state.ts +7 -0
- package/src/interactive/view/artifacts.ts +2 -0
- package/src/interactive/worker-receipts.ts +1 -0
- package/src/interactive/worker-stream.ts +13 -4
- package/src/tools/bootstrap.ts +4 -0
- package/src/tools/builtin-tool-catalog.ts +31 -0
- package/src/tools/compete-worktrees.ts +7 -1
- package/src/tools/context/index.ts +30 -9
- package/src/tools/core-bootstrap.ts +16 -0
- package/src/tools/decide.ts +136 -0
- package/src/tools/dispatch-admission.ts +21 -0
- package/src/tools/dispatch-arguments.ts +1 -0
- package/src/tools/dispatch-event-text.ts +10 -0
- package/src/tools/dispatch-plan.ts +6 -2
- package/src/tools/dispatch-runner.ts +27 -1
- package/src/tools/dispatch-types.ts +6 -0
- package/src/tools/evidence.ts +96 -0
- package/src/tools/limitation.ts +76 -0
- package/src/tools/policy.ts +9 -0
- package/src/tools/presentation.ts +3 -0
- package/src/tools/registry.ts +11 -5
- package/src/tools/result-shaping.ts +17 -5
- package/src/tools/task-worktree.ts +13 -3
- package/src/tools/tasks.ts +10 -1
- package/src/tools/verify/authoring.ts +170 -83
- package/src/tools/verify/catalog.ts +122 -5
- package/src/tools/verify/index.ts +2 -1
- package/src/tools/verify/numeric.ts +298 -0
- package/src/tools/verify/perf.ts +143 -0
- package/src/tools/verify/scripts.ts +229 -2
- package/src/tools/worker-evidence.ts +3 -1
- package/src/worker/spec-contract.ts +4 -0
- package/dist/chunk-2Z2IKEXI.js +0 -1554
- package/dist/chunk-RVG5JXAL.js +0 -41
- package/dist/chunk-T56WDKA5.js +0 -183
- package/dist/chunk-VN3SHNBN.js +0 -313
- package/dist/chunk-VPKWYKEY.js +0 -169
- package/dist/reset-OAQP3W4O.js +0 -230
- package/dist/uninstall-N34PCTGJ.js +0 -331
- package/dist/upgrade-PXK3S2YM.js +0 -325
|
@@ -4,16 +4,20 @@ import {
|
|
|
4
4
|
TASK_MEMORY_POLICY_DEFAULT_TIMEOUT_MS,
|
|
5
5
|
runTaskMemoryPolicy,
|
|
6
6
|
taskMemoryBankDelta
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-2WZ546HR.js";
|
|
8
8
|
import {
|
|
9
9
|
isTerminalRunEnvelope
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-75W7L2E2.js";
|
|
11
|
+
import {
|
|
12
|
+
hashToolCall
|
|
13
|
+
} from "./chunk-6QOTUPRG.js";
|
|
11
14
|
import {
|
|
12
15
|
taskBoardCounts
|
|
13
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-6PAZTBPA.js";
|
|
14
17
|
import {
|
|
15
|
-
|
|
16
|
-
|
|
18
|
+
legacyToolResultDigest,
|
|
19
|
+
sanitizeToolResultDigest
|
|
20
|
+
} from "./chunk-NAI6ZFCY.js";
|
|
17
21
|
import {
|
|
18
22
|
SKILL_INSTALL_OFFER_OPTION_NEVER,
|
|
19
23
|
SKILL_INSTALL_OFFER_OPTION_NOT_NOW,
|
|
@@ -21,36 +25,32 @@ import {
|
|
|
21
25
|
SKILL_INSTALL_OFFER_OPTION_USER,
|
|
22
26
|
SKILL_SUGGESTION_ANCHOR,
|
|
23
27
|
SKILL_SUGGESTION_PREFIX
|
|
24
|
-
} from "./chunk-
|
|
25
|
-
import {
|
|
26
|
-
legacyToolResultDigest,
|
|
27
|
-
sanitizeToolResultDigest
|
|
28
|
-
} from "./chunk-B7HM5Z7T.js";
|
|
28
|
+
} from "./chunk-54X7T7DK.js";
|
|
29
29
|
import {
|
|
30
30
|
ToolNames
|
|
31
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-4NSRCOYP.js";
|
|
32
32
|
import {
|
|
33
33
|
registerForegroundStream
|
|
34
|
-
} from "./chunk-
|
|
34
|
+
} from "./chunk-JSD46VO2.js";
|
|
35
35
|
import {
|
|
36
36
|
ceilChars
|
|
37
|
-
} from "./chunk-
|
|
37
|
+
} from "./chunk-NZMNUPZZ.js";
|
|
38
38
|
import {
|
|
39
39
|
BusChannels
|
|
40
40
|
} from "./chunk-F4EKGO4N.js";
|
|
41
41
|
import {
|
|
42
42
|
reportCommitAttributionDiagnostic,
|
|
43
43
|
withManagedGitCommitAttributionEnvironment
|
|
44
|
-
} from "./chunk-
|
|
44
|
+
} from "./chunk-U6TMQNSI.js";
|
|
45
45
|
import {
|
|
46
46
|
require_dist
|
|
47
47
|
} from "./chunk-APJ265NV.js";
|
|
48
|
-
import {
|
|
49
|
-
clioConfigDir
|
|
50
|
-
} from "./chunk-BYP5D4HI.js";
|
|
51
48
|
import {
|
|
52
49
|
safeResourceWrite
|
|
53
50
|
} from "./chunk-WEPFGWHJ.js";
|
|
51
|
+
import {
|
|
52
|
+
clioConfigDir
|
|
53
|
+
} from "./chunk-BYP5D4HI.js";
|
|
54
54
|
import {
|
|
55
55
|
__toESM,
|
|
56
56
|
init_esm_shims
|
|
@@ -970,8 +970,11 @@ function readPersistedHookReceipts(persistPath) {
|
|
|
970
970
|
// src/domains/middleware/skills-reminder.ts
|
|
971
971
|
init_esm_shims();
|
|
972
972
|
var SKILLS_REMINDER_REGISTRATION_ID = "observer.skills-reminder";
|
|
973
|
-
function skillsReminderMessage(installed, installable = 0) {
|
|
973
|
+
function skillsReminderMessage(installed, installable = 0, modelActivation = false) {
|
|
974
974
|
const counts = installable > 0 ? `${installed} installed, ${installable} installable from the marketplace` : `${installed} installed`;
|
|
975
|
+
if (modelActivation) {
|
|
976
|
+
return `[Skills] ${counts}. Start this task by listing them with context(scope="skills") and checking for a match; if one matches, load it with context(scope="skills", name="<name>") and continue the task in the same turn. A marketplace skill is not installed and is offered for install when the operator runs it. If none match, do not mention skills and continue with the task.`;
|
|
977
|
+
}
|
|
975
978
|
return `[Skills] ${counts}. Start this task by listing them with context(scope="skills") and checking for a match; if one matches, open your reply with the line \`${SKILL_SUGGESTION_ANCHOR}\` (a comma-separated sequence, in order, when several compose) and then continue the task in the same turn without the skill. Only the operator loads a skill, and a marketplace skill is offered for install when the operator runs it. If none match, do not mention skills and continue with the task.`;
|
|
976
979
|
}
|
|
977
980
|
var NO_EFFECTS = [];
|
|
@@ -1070,7 +1073,18 @@ function createSkillsReminderRegistration(deps) {
|
|
|
1070
1073
|
return NO_EFFECTS;
|
|
1071
1074
|
}
|
|
1072
1075
|
if (installed <= 0 && installable <= 0) return NO_EFFECTS;
|
|
1073
|
-
|
|
1076
|
+
let modelActivation = false;
|
|
1077
|
+
try {
|
|
1078
|
+
modelActivation = deps.modelMayActivateSkills?.() ?? false;
|
|
1079
|
+
} catch {
|
|
1080
|
+
}
|
|
1081
|
+
return [
|
|
1082
|
+
{
|
|
1083
|
+
kind: "inject_reminder",
|
|
1084
|
+
severity: "info",
|
|
1085
|
+
message: skillsReminderMessage(installed, installable, modelActivation)
|
|
1086
|
+
}
|
|
1087
|
+
];
|
|
1074
1088
|
}
|
|
1075
1089
|
};
|
|
1076
1090
|
}
|
|
@@ -1203,11 +1217,11 @@ var NO_EFFECTS2 = [];
|
|
|
1203
1217
|
function offerBindingTag(offerTag) {
|
|
1204
1218
|
return `[clio-install:${offerTag}]`;
|
|
1205
1219
|
}
|
|
1206
|
-
function
|
|
1207
|
-
return
|
|
1220
|
+
function boundedDescription(text) {
|
|
1221
|
+
return text.replace(/\[[^[\]]*\]/gu, " ").replace(/\s+/gu, " ").trim().slice(0, 200);
|
|
1208
1222
|
}
|
|
1209
|
-
function
|
|
1210
|
-
return `[Marketplace]
|
|
1223
|
+
function marketplaceOfferReminder(entry, offerTag) {
|
|
1224
|
+
return `[Marketplace] This request may need expertise no installed skill covers. The local marketplace has "${entry.name}" (not installed): ${boundedDescription(entry.description)} First check the installed side with context(scope="skills"); if ${entry.name} is genuinely the right fit and nothing installed serves, ask the operator with ask_user (mode=single_question, header "Install skill") whether to install ${entry.name}, offering exactly these options in this order: "${SKILL_INSTALL_OFFER_OPTION_PROJECT}", "${SKILL_INSTALL_OFFER_OPTION_USER}", "${SKILL_INSTALL_OFFER_OPTION_NOT_NOW}", "${SKILL_INSTALL_OFFER_OPTION_NEVER}". Include the exact tag ${offerBindingTag(offerTag)} verbatim in that question's text so the harness can bind the answer to this offer; the harness acts only on an answer carrying this tag. Then continue the task in the same turn. The harness handles the answer; never install or load a skill yourself. If it is not actually needed, do not mention it.`;
|
|
1211
1225
|
}
|
|
1212
1226
|
function answersFromDetails(details) {
|
|
1213
1227
|
const raw = details?.answers;
|
|
@@ -1355,18 +1369,14 @@ function createMarketplaceOfferRegistration(deps) {
|
|
|
1355
1369
|
const match = bestMatch(input.text ?? "");
|
|
1356
1370
|
if (!match) return NO_EFFECTS2;
|
|
1357
1371
|
offeredNames.add(match.entry.name);
|
|
1358
|
-
if (deps.
|
|
1359
|
-
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
|
|
1363
|
-
|
|
1364
|
-
|
|
1365
|
-
|
|
1366
|
-
}
|
|
1367
|
-
];
|
|
1368
|
-
} catch {
|
|
1369
|
-
}
|
|
1372
|
+
if (deps.interactive === false) {
|
|
1373
|
+
return [
|
|
1374
|
+
{
|
|
1375
|
+
kind: "inject_reminder",
|
|
1376
|
+
severity: "info",
|
|
1377
|
+
message: `[Marketplace] Skill "${match.entry.name}" matches this request; install with clio-coder skills install ${match.entry.name}.`
|
|
1378
|
+
}
|
|
1379
|
+
];
|
|
1370
1380
|
}
|
|
1371
1381
|
const tag = newOfferTag();
|
|
1372
1382
|
pendingOffer = { entry: match.entry, tag };
|
|
@@ -1387,6 +1397,10 @@ var MEMORY_INTERVENTION_ACTIVITY_LIMIT = 20;
|
|
|
1387
1397
|
var CALL_DESCRIPTION_MAX_CHARS = 180;
|
|
1388
1398
|
var NO_EFFECTS3 = [];
|
|
1389
1399
|
function createMemoryInterventionRegistration(deps) {
|
|
1400
|
+
let generation = 0;
|
|
1401
|
+
let generationController = new AbortController();
|
|
1402
|
+
let observedSessionId;
|
|
1403
|
+
let disposed = false;
|
|
1390
1404
|
const pending = /* @__PURE__ */ new Map();
|
|
1391
1405
|
const trajectory = [];
|
|
1392
1406
|
const failures = /* @__PURE__ */ new Map();
|
|
@@ -1411,11 +1425,17 @@ function createMemoryInterventionRegistration(deps) {
|
|
|
1411
1425
|
let annotatedSinceTurnEnd = false;
|
|
1412
1426
|
let consecutiveLlmTimeouts = 0;
|
|
1413
1427
|
return {
|
|
1428
|
+
reset,
|
|
1429
|
+
dispose() {
|
|
1430
|
+
disposed = true;
|
|
1431
|
+
reset();
|
|
1432
|
+
},
|
|
1414
1433
|
id: MEMORY_INTERVENTION_REGISTRATION_ID,
|
|
1415
1434
|
description: "maintain bounded task execution memory and selectively remind after repeated failures or compaction",
|
|
1416
1435
|
hooks: ["before_tool", "after_tool", "turn_start", "turn_end", "on_compaction"],
|
|
1417
1436
|
evaluate(input) {
|
|
1418
|
-
|
|
1437
|
+
observeSession(input);
|
|
1438
|
+
if (disposed || !settings().enabled) return NO_EFFECTS3;
|
|
1419
1439
|
try {
|
|
1420
1440
|
switch (input.hook) {
|
|
1421
1441
|
case "before_tool":
|
|
@@ -1482,7 +1502,8 @@ function createMemoryInterventionRegistration(deps) {
|
|
|
1482
1502
|
* would have been buffered anyway.
|
|
1483
1503
|
*/
|
|
1484
1504
|
async evaluateAsync(input, context) {
|
|
1485
|
-
|
|
1505
|
+
observeSession(input);
|
|
1506
|
+
if (disposed || !settings().enabled || input.hook !== "turn_end" || pendingTriggers.size === 0) return NO_EFFECTS3;
|
|
1486
1507
|
const boundary = input.turnId ?? input.metadata?.userTurnId?.toString() ?? `tool-step:${toolStep}`;
|
|
1487
1508
|
if (boundary === lastPromptedBoundary) return NO_EFFECTS3;
|
|
1488
1509
|
if (deps.deliversDeferredReminders === false) {
|
|
@@ -1512,31 +1533,68 @@ function createMemoryInterventionRegistration(deps) {
|
|
|
1512
1533
|
(effect) => effect.kind === "inject_reminder" && effect.message.startsWith("Memory:")
|
|
1513
1534
|
) ?? false);
|
|
1514
1535
|
rulesInjectedSincePromptedStep = false;
|
|
1536
|
+
const stepGeneration = generation;
|
|
1515
1537
|
promptedStepInFlight = true;
|
|
1516
1538
|
outstandingStep = runPromptedStep({
|
|
1517
1539
|
deterministicTrigger: triggers.some((trigger) => trigger !== "interval"),
|
|
1518
1540
|
suppressIntervention: rulesAlreadySpoke,
|
|
1519
1541
|
triggerReasons: triggers
|
|
1520
1542
|
}).then((result) => {
|
|
1543
|
+
if (stepGeneration !== generation || disposed) return;
|
|
1521
1544
|
if (rulesAlreadySpoke && result.decision === "silent") lastDecision = "injected";
|
|
1522
1545
|
if (result.reminder === null) return;
|
|
1523
1546
|
lastInjectedMessage = result.reminder;
|
|
1524
1547
|
deps.onDeferredReminder?.(result.reminder);
|
|
1525
1548
|
}).catch(() => {
|
|
1526
1549
|
}).finally(() => {
|
|
1527
|
-
promptedStepInFlight = false;
|
|
1550
|
+
if (stepGeneration === generation) promptedStepInFlight = false;
|
|
1528
1551
|
});
|
|
1529
1552
|
return NO_EFFECTS3;
|
|
1530
1553
|
},
|
|
1531
1554
|
runPromptedStep,
|
|
1532
1555
|
signalLoop() {
|
|
1533
|
-
if (settings().enabled) pendingTriggers.add("loop_signal");
|
|
1556
|
+
if (!disposed && settings().enabled) pendingTriggers.add("loop_signal");
|
|
1534
1557
|
},
|
|
1535
1558
|
lastDecision: () => lastDecision,
|
|
1536
1559
|
recentActivity: () => [...activity],
|
|
1537
1560
|
stepInFlight: () => promptedStepInFlight,
|
|
1538
1561
|
whenIdle: () => outstandingStep
|
|
1539
1562
|
};
|
|
1563
|
+
function observeSession(input) {
|
|
1564
|
+
if (input.sessionId === void 0) return;
|
|
1565
|
+
if (observedSessionId !== void 0 && observedSessionId !== input.sessionId) reset();
|
|
1566
|
+
observedSessionId = input.sessionId;
|
|
1567
|
+
}
|
|
1568
|
+
function reset() {
|
|
1569
|
+
generation += 1;
|
|
1570
|
+
generationController.abort();
|
|
1571
|
+
generationController = new AbortController();
|
|
1572
|
+
deps.bank.clear();
|
|
1573
|
+
pending.clear();
|
|
1574
|
+
trajectory.length = 0;
|
|
1575
|
+
failures.clear();
|
|
1576
|
+
toolStep = 0;
|
|
1577
|
+
lastTurnEndStep = 0;
|
|
1578
|
+
reactivateAfterCompaction = false;
|
|
1579
|
+
lastInjectedOperationFingerprint = null;
|
|
1580
|
+
currentTask = "(current task unavailable)";
|
|
1581
|
+
toolsSinceMemoryStep = 0;
|
|
1582
|
+
consecutiveErrors = 0;
|
|
1583
|
+
lastPromptedBoundary = null;
|
|
1584
|
+
lastInjectedMessage = null;
|
|
1585
|
+
lastDecision = null;
|
|
1586
|
+
pendingTriggers.clear();
|
|
1587
|
+
activity.length = 0;
|
|
1588
|
+
annotatedThisTurn.clear();
|
|
1589
|
+
telemetryBankSnapshot = deps.bank.snapshot();
|
|
1590
|
+
promptedStepInFlight = false;
|
|
1591
|
+
promptedStepTier = "rules";
|
|
1592
|
+
outstandingStep = Promise.resolve();
|
|
1593
|
+
rulesInjectedSincePromptedStep = false;
|
|
1594
|
+
annotatedSinceTurnEnd = false;
|
|
1595
|
+
consecutiveLlmTimeouts = 0;
|
|
1596
|
+
observedSessionId = void 0;
|
|
1597
|
+
}
|
|
1540
1598
|
function settings() {
|
|
1541
1599
|
const live = deps.getSettings?.();
|
|
1542
1600
|
return {
|
|
@@ -1563,12 +1621,16 @@ function createMemoryInterventionRegistration(deps) {
|
|
|
1563
1621
|
effects: NO_EFFECTS3
|
|
1564
1622
|
});
|
|
1565
1623
|
const live = settings();
|
|
1566
|
-
|
|
1624
|
+
const stepGeneration = generation;
|
|
1625
|
+
const isCurrent = () => !disposed && stepGeneration === generation;
|
|
1626
|
+
const usageSink = deps.captureStepUsage?.();
|
|
1627
|
+
if (disposed || !live.enabled) {
|
|
1567
1628
|
const result = silent("no_client");
|
|
1568
1629
|
lastDecision = result.decision;
|
|
1569
1630
|
return result;
|
|
1570
1631
|
}
|
|
1571
1632
|
const started = process.hrtime.bigint();
|
|
1633
|
+
let attemptStarted = started;
|
|
1572
1634
|
const triggers = input.triggerReasons?.length ? input.triggerReasons : ["manual"];
|
|
1573
1635
|
let tier = "rules";
|
|
1574
1636
|
promptedStepTier = tier;
|
|
@@ -1589,7 +1651,13 @@ function createMemoryInterventionRegistration(deps) {
|
|
|
1589
1651
|
} else {
|
|
1590
1652
|
tier = "llm";
|
|
1591
1653
|
promptedStepTier = tier;
|
|
1592
|
-
|
|
1654
|
+
const runClient = (selected, timeoutMs) => runTaskMemoryPolicy(deps.bank, selected, {
|
|
1655
|
+
isCurrent,
|
|
1656
|
+
signal: generationController.signal,
|
|
1657
|
+
onStepUsage: (usage) => {
|
|
1658
|
+
if (usageSink) usageSink(usage, isCurrent());
|
|
1659
|
+
else deps.onStepUsage?.(usage);
|
|
1660
|
+
},
|
|
1593
1661
|
task: input.task?.trim() || currentTask,
|
|
1594
1662
|
trajectory: [...trajectory],
|
|
1595
1663
|
deterministicTrigger: input.deterministicTrigger,
|
|
@@ -1597,9 +1665,37 @@ function createMemoryInterventionRegistration(deps) {
|
|
|
1597
1665
|
modelMaxTokens: positiveInteger(deps.getModelMaxTokens?.(live.maxTokens), live.maxTokens),
|
|
1598
1666
|
...input.suppressIntervention === void 0 ? {} : { suppressIntervention: input.suppressIntervention },
|
|
1599
1667
|
previousReminder: lastInjectedMessage,
|
|
1600
|
-
timeoutMs
|
|
1668
|
+
timeoutMs,
|
|
1601
1669
|
...deps.onEnvelope === void 0 ? {} : { onEnvelope: deps.onEnvelope }
|
|
1602
1670
|
});
|
|
1671
|
+
const remainingMs = () => Math.floor(live.timeoutMs - Number(process.hrtime.bigint() - started) / 1e6);
|
|
1672
|
+
const initialTimeoutMs = remainingMs();
|
|
1673
|
+
promptedResult = initialTimeoutMs <= 0 ? { ...silent("deadline"), decision: "timeout" } : await runClient(client, initialTimeoutMs);
|
|
1674
|
+
if (promptedResult.reason === "client_error" && isCurrent() && remainingMs() > 0) {
|
|
1675
|
+
let fallback = null;
|
|
1676
|
+
let fallbackReady = false;
|
|
1677
|
+
try {
|
|
1678
|
+
fallback = deps.getFallbackModelClient?.() ?? null;
|
|
1679
|
+
fallbackReady = fallback !== null && deps.backgroundEndpointBusy?.() !== true;
|
|
1680
|
+
} catch {
|
|
1681
|
+
}
|
|
1682
|
+
const fallbackTimeoutMs = remainingMs();
|
|
1683
|
+
if (fallback !== null && fallbackReady && isCurrent() && fallbackTimeoutMs > 0) {
|
|
1684
|
+
emitTelemetry(
|
|
1685
|
+
triggers,
|
|
1686
|
+
tier,
|
|
1687
|
+
promptedResult.decision,
|
|
1688
|
+
promptedResult.reason,
|
|
1689
|
+
0,
|
|
1690
|
+
promptedResult.inputTokens,
|
|
1691
|
+
promptedResult.outputTokens,
|
|
1692
|
+
started,
|
|
1693
|
+
{ bankOperations: promptedResult.bankOperations, droppedOperations: promptedResult.droppedOperations }
|
|
1694
|
+
);
|
|
1695
|
+
attemptStarted = process.hrtime.bigint();
|
|
1696
|
+
promptedResult = await runClient(fallback, fallbackTimeoutMs);
|
|
1697
|
+
}
|
|
1698
|
+
}
|
|
1603
1699
|
}
|
|
1604
1700
|
}
|
|
1605
1701
|
} catch (error) {
|
|
@@ -1616,15 +1712,11 @@ function createMemoryInterventionRegistration(deps) {
|
|
|
1616
1712
|
error: error instanceof Error ? error.message : "resolving the background model client failed"
|
|
1617
1713
|
});
|
|
1618
1714
|
}
|
|
1715
|
+
if (!isCurrent()) return { ...promptedResult, reminder: null, effects: NO_EFFECTS3 };
|
|
1716
|
+
if (promptedResult.reason === "endpoint_busy") telemetryDecision = "dropped";
|
|
1619
1717
|
if (tier === "llm" && promptedResult.decision === "timeout") consecutiveLlmTimeouts += 1;
|
|
1620
1718
|
else if (tier === "llm" && telemetryDecision !== "dropped") consecutiveLlmTimeouts = 0;
|
|
1621
1719
|
lastDecision = promptedResult.decision;
|
|
1622
|
-
if (promptedResult.usage !== null) {
|
|
1623
|
-
try {
|
|
1624
|
-
deps.onStepUsage?.(promptedResult.usage);
|
|
1625
|
-
} catch {
|
|
1626
|
-
}
|
|
1627
|
-
}
|
|
1628
1720
|
if (promptedResult.decision === "injected") reportInjectedEntries(promptedResult.reminder);
|
|
1629
1721
|
emitTelemetry(
|
|
1630
1722
|
triggers,
|
|
@@ -1634,7 +1726,7 @@ function createMemoryInterventionRegistration(deps) {
|
|
|
1634
1726
|
citedEntryCount(promptedResult.reminder),
|
|
1635
1727
|
promptedResult.inputTokens,
|
|
1636
1728
|
promptedResult.outputTokens,
|
|
1637
|
-
|
|
1729
|
+
attemptStarted,
|
|
1638
1730
|
{ bankOperations: promptedResult.bankOperations, droppedOperations: promptedResult.droppedOperations }
|
|
1639
1731
|
);
|
|
1640
1732
|
return {
|
|
@@ -3004,4 +3096,4 @@ export {
|
|
|
3004
3096
|
createWatchdogRegistration,
|
|
3005
3097
|
MiddlewareDomainModule
|
|
3006
3098
|
};
|
|
3007
|
-
//# sourceMappingURL=chunk-
|
|
3099
|
+
//# sourceMappingURL=chunk-XULDXHTN.js.map
|
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
WORKER_OUTPUT_MAX_BYTES,
|
|
4
|
+
durableAssistantTextFromEvent
|
|
5
|
+
} from "./chunk-I2DWJ4GM.js";
|
|
6
|
+
import {
|
|
7
|
+
truncateUtf8
|
|
8
|
+
} from "./chunk-6XLNIQDB.js";
|
|
9
|
+
import {
|
|
10
|
+
init_esm_shims
|
|
11
|
+
} from "./chunk-3R73A4XB.js";
|
|
12
|
+
|
|
13
|
+
// src/domains/observability/worker-progress.ts
|
|
14
|
+
init_esm_shims();
|
|
15
|
+
var WORKER_LIVE_TAIL_LINES = 40;
|
|
16
|
+
var WORKER_LIVE_TAIL_MAX_BYTES = 4096;
|
|
17
|
+
var WORKER_TOOL_NAME_LIMIT = 8;
|
|
18
|
+
var WORKER_ACTION_TRAIL_LIMIT = 4;
|
|
19
|
+
var WORKER_PROGRESS_WINDOW_MS = 250;
|
|
20
|
+
var WORKER_PROGRESS_WINDOW_BYTES = 16384;
|
|
21
|
+
var TAIL_TRUNCATION_MARKER = "";
|
|
22
|
+
function isRecord(value) {
|
|
23
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
24
|
+
}
|
|
25
|
+
function nonEmptyString(value) {
|
|
26
|
+
return typeof value === "string" && value.trim().length > 0 ? value : void 0;
|
|
27
|
+
}
|
|
28
|
+
function workerTextDelta(event) {
|
|
29
|
+
if (!isRecord(event)) return "";
|
|
30
|
+
if (event.type === "message_update") {
|
|
31
|
+
const assistantEvent = isRecord(event.assistantMessageEvent) ? event.assistantMessageEvent : null;
|
|
32
|
+
if (assistantEvent?.type !== "text_delta") return "";
|
|
33
|
+
return typeof assistantEvent.delta === "string" ? assistantEvent.delta : "";
|
|
34
|
+
}
|
|
35
|
+
if (event.type !== "text_delta") return "";
|
|
36
|
+
if (typeof event.delta === "string") return event.delta;
|
|
37
|
+
return typeof event.text === "string" ? event.text : "";
|
|
38
|
+
}
|
|
39
|
+
function isThinkingEvent(event) {
|
|
40
|
+
if (event.type === "thinking_delta") return true;
|
|
41
|
+
if (event.type !== "message_update") return false;
|
|
42
|
+
const assistantEvent = isRecord(event.assistantMessageEvent) ? event.assistantMessageEvent : null;
|
|
43
|
+
return assistantEvent?.type === "thinking_delta";
|
|
44
|
+
}
|
|
45
|
+
function toolEventAction(event) {
|
|
46
|
+
if (event.type !== "clio_coder_tool_start" && event.type !== "clio_coder_tool_finish") return null;
|
|
47
|
+
const payload = isRecord(event.payload) ? event.payload : null;
|
|
48
|
+
const tool = nonEmptyString(payload?.tool);
|
|
49
|
+
if (tool === void 0) return null;
|
|
50
|
+
const toolCallId = nonEmptyString(payload?.toolCallId);
|
|
51
|
+
const raw = isRecord(payload?.action) ? payload.action : void 0;
|
|
52
|
+
const verb = nonEmptyString(raw?.verb);
|
|
53
|
+
if (verb === void 0) return { tool, ...toolCallId !== void 0 ? { toolCallId } : {} };
|
|
54
|
+
const object = nonEmptyString(raw?.object);
|
|
55
|
+
return {
|
|
56
|
+
tool,
|
|
57
|
+
...toolCallId !== void 0 ? { toolCallId } : {},
|
|
58
|
+
descriptor: {
|
|
59
|
+
verb,
|
|
60
|
+
...object !== void 0 ? { object } : {},
|
|
61
|
+
...raw?.truncated === true ? { truncated: true } : {}
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
function lineCount(text) {
|
|
66
|
+
if (text.length === 0) return 0;
|
|
67
|
+
let lines = 1;
|
|
68
|
+
for (let index = 0; index < text.length; index += 1) {
|
|
69
|
+
if (text[index] === "\n") lines += 1;
|
|
70
|
+
}
|
|
71
|
+
return lines;
|
|
72
|
+
}
|
|
73
|
+
function keepTailBytes(text, maxBytes) {
|
|
74
|
+
const buffer = Buffer.from(text, "utf8");
|
|
75
|
+
if (buffer.byteLength <= maxBytes) return text;
|
|
76
|
+
let cut = buffer.byteLength - maxBytes;
|
|
77
|
+
while (cut < buffer.byteLength) {
|
|
78
|
+
const byte = buffer[cut];
|
|
79
|
+
if (byte === void 0 || (byte & 192) !== 128) break;
|
|
80
|
+
cut += 1;
|
|
81
|
+
}
|
|
82
|
+
return buffer.subarray(cut).toString("utf8");
|
|
83
|
+
}
|
|
84
|
+
function boundLiveTail(text) {
|
|
85
|
+
const lines = text.split("\n");
|
|
86
|
+
let droppedLines = 0;
|
|
87
|
+
if (lines.length > WORKER_LIVE_TAIL_LINES) {
|
|
88
|
+
droppedLines = lines.length - WORKER_LIVE_TAIL_LINES;
|
|
89
|
+
lines.splice(0, droppedLines);
|
|
90
|
+
}
|
|
91
|
+
while (lines.length > 1 && Buffer.byteLength(lines.join("\n"), "utf8") > WORKER_LIVE_TAIL_MAX_BYTES) {
|
|
92
|
+
lines.shift();
|
|
93
|
+
droppedLines += 1;
|
|
94
|
+
}
|
|
95
|
+
const joined = lines.join("\n");
|
|
96
|
+
const bytes = Buffer.byteLength(joined, "utf8");
|
|
97
|
+
if (bytes <= WORKER_LIVE_TAIL_MAX_BYTES) return { text: joined, droppedLines, droppedBytes: 0 };
|
|
98
|
+
const kept = keepTailBytes(joined, WORKER_LIVE_TAIL_MAX_BYTES);
|
|
99
|
+
return { text: kept, droppedLines, droppedBytes: bytes - Buffer.byteLength(kept, "utf8") };
|
|
100
|
+
}
|
|
101
|
+
function boundSettledText(text) {
|
|
102
|
+
const bounded = truncateUtf8(text, WORKER_OUTPUT_MAX_BYTES, TAIL_TRUNCATION_MARKER);
|
|
103
|
+
if (bounded === text) return { text, dropped: 0 };
|
|
104
|
+
return { text: bounded, dropped: Math.max(0, lineCount(text) - lineCount(bounded)) };
|
|
105
|
+
}
|
|
106
|
+
var EMPTY_SNAPSHOT = {
|
|
107
|
+
revision: 0,
|
|
108
|
+
phase: "starting",
|
|
109
|
+
tailText: "",
|
|
110
|
+
droppedLines: 0,
|
|
111
|
+
droppedBytes: 0,
|
|
112
|
+
currentAction: null,
|
|
113
|
+
recentActions: [],
|
|
114
|
+
toolNames: [],
|
|
115
|
+
settled: false
|
|
116
|
+
};
|
|
117
|
+
function createWorkerProgressFold() {
|
|
118
|
+
let revision = 0;
|
|
119
|
+
let phase = "starting";
|
|
120
|
+
let tailText = "";
|
|
121
|
+
let droppedLines = 0;
|
|
122
|
+
let droppedBytes = 0;
|
|
123
|
+
let currentAction = null;
|
|
124
|
+
const recentActions = [];
|
|
125
|
+
const toolNames = [];
|
|
126
|
+
let settled = false;
|
|
127
|
+
let durable = "";
|
|
128
|
+
let betweenAssistantMessages = false;
|
|
129
|
+
const pendingActions = [];
|
|
130
|
+
const pendingActionsById = /* @__PURE__ */ new Map();
|
|
131
|
+
let windowStartMs = 0;
|
|
132
|
+
let windowBytes = 0;
|
|
133
|
+
let cached = EMPTY_SNAPSHOT;
|
|
134
|
+
const touch = () => {
|
|
135
|
+
revision += 1;
|
|
136
|
+
cached = null;
|
|
137
|
+
return true;
|
|
138
|
+
};
|
|
139
|
+
const setPhase = (next) => {
|
|
140
|
+
if (phase === next) return false;
|
|
141
|
+
phase = next;
|
|
142
|
+
return touch();
|
|
143
|
+
};
|
|
144
|
+
const admitDelta = (delta, nowMs) => {
|
|
145
|
+
if (nowMs - windowStartMs >= WORKER_PROGRESS_WINDOW_MS) {
|
|
146
|
+
windowStartMs = nowMs;
|
|
147
|
+
windowBytes = 0;
|
|
148
|
+
}
|
|
149
|
+
const bytes = Buffer.byteLength(delta, "utf8");
|
|
150
|
+
if (windowBytes + bytes <= WORKER_PROGRESS_WINDOW_BYTES) {
|
|
151
|
+
windowBytes += bytes;
|
|
152
|
+
return delta;
|
|
153
|
+
}
|
|
154
|
+
windowBytes = WORKER_PROGRESS_WINDOW_BYTES;
|
|
155
|
+
droppedBytes += bytes;
|
|
156
|
+
return "";
|
|
157
|
+
};
|
|
158
|
+
const appendTail = (text) => {
|
|
159
|
+
if (text.length === 0) return false;
|
|
160
|
+
const bounded = boundLiveTail(tailText + text);
|
|
161
|
+
tailText = bounded.text;
|
|
162
|
+
droppedLines += bounded.droppedLines;
|
|
163
|
+
droppedBytes += bounded.droppedBytes;
|
|
164
|
+
return touch();
|
|
165
|
+
};
|
|
166
|
+
const noteToolName = (tool) => {
|
|
167
|
+
if (toolNames.includes(tool) || toolNames.length >= WORKER_TOOL_NAME_LIMIT) return false;
|
|
168
|
+
toolNames.push(tool);
|
|
169
|
+
return touch();
|
|
170
|
+
};
|
|
171
|
+
const removePendingAction = (action) => {
|
|
172
|
+
const index = pendingActions.lastIndexOf(action);
|
|
173
|
+
if (index >= 0) pendingActions.splice(index, 1);
|
|
174
|
+
if (action.toolCallId !== void 0 && pendingActionsById.get(action.toolCallId) === action) {
|
|
175
|
+
pendingActionsById.delete(action.toolCallId);
|
|
176
|
+
}
|
|
177
|
+
};
|
|
178
|
+
const lastPendingActionForTool = (tool) => {
|
|
179
|
+
for (let index = pendingActions.length - 1; index >= 0; index -= 1) {
|
|
180
|
+
const candidate = pendingActions[index];
|
|
181
|
+
if (candidate?.tool === tool) return candidate;
|
|
182
|
+
}
|
|
183
|
+
return void 0;
|
|
184
|
+
};
|
|
185
|
+
return {
|
|
186
|
+
observe(event, nowMs = Date.now()) {
|
|
187
|
+
if (!isRecord(event) || settled) return false;
|
|
188
|
+
let changed = false;
|
|
189
|
+
const delta = workerTextDelta(event);
|
|
190
|
+
if (delta.length > 0) {
|
|
191
|
+
const separator = betweenAssistantMessages && tailText.length > 0 && !tailText.endsWith("\n") ? "\n\n" : "";
|
|
192
|
+
betweenAssistantMessages = false;
|
|
193
|
+
changed = appendTail(admitDelta(`${separator}${delta}`, nowMs)) || changed;
|
|
194
|
+
changed = setPhase("writing") || changed;
|
|
195
|
+
} else if (isThinkingEvent(event)) {
|
|
196
|
+
changed = setPhase("thinking") || changed;
|
|
197
|
+
}
|
|
198
|
+
const durableText = durableAssistantTextFromEvent(event);
|
|
199
|
+
if (durableText.trim().length > 0) {
|
|
200
|
+
durable = durableText;
|
|
201
|
+
if (delta.length === 0 && tailText.trim().length === 0) {
|
|
202
|
+
changed = appendTail(durableText) || changed;
|
|
203
|
+
}
|
|
204
|
+
betweenAssistantMessages = true;
|
|
205
|
+
}
|
|
206
|
+
const action = toolEventAction(event);
|
|
207
|
+
if (action !== null && event.type === "clio_coder_tool_start") {
|
|
208
|
+
if (action.toolCallId !== void 0) {
|
|
209
|
+
const duplicate = pendingActionsById.get(action.toolCallId);
|
|
210
|
+
if (duplicate !== void 0) removePendingAction(duplicate);
|
|
211
|
+
pendingActionsById.set(action.toolCallId, action);
|
|
212
|
+
}
|
|
213
|
+
pendingActions.push(action);
|
|
214
|
+
currentAction = action;
|
|
215
|
+
noteToolName(action.tool);
|
|
216
|
+
touch();
|
|
217
|
+
setPhase("tool");
|
|
218
|
+
changed = true;
|
|
219
|
+
} else if (action !== null && event.type === "clio_coder_tool_finish") {
|
|
220
|
+
const finished = (action.toolCallId !== void 0 ? pendingActionsById.get(action.toolCallId) : void 0) ?? lastPendingActionForTool(action.tool) ?? action;
|
|
221
|
+
removePendingAction(finished);
|
|
222
|
+
currentAction = pendingActions[pendingActions.length - 1] ?? null;
|
|
223
|
+
recentActions.unshift(finished);
|
|
224
|
+
if (recentActions.length > WORKER_ACTION_TRAIL_LIMIT) recentActions.length = WORKER_ACTION_TRAIL_LIMIT;
|
|
225
|
+
noteToolName(finished.tool);
|
|
226
|
+
touch();
|
|
227
|
+
setPhase(currentAction === null ? "waiting" : "tool");
|
|
228
|
+
changed = true;
|
|
229
|
+
}
|
|
230
|
+
if (event.type === "agent_start") changed = setPhase("starting") || changed;
|
|
231
|
+
return changed;
|
|
232
|
+
},
|
|
233
|
+
settle(text) {
|
|
234
|
+
const sealed = nonEmptyString(text) ?? nonEmptyString(durable);
|
|
235
|
+
if (sealed !== void 0) {
|
|
236
|
+
const bounded = boundSettledText(sealed);
|
|
237
|
+
tailText = bounded.text;
|
|
238
|
+
droppedLines = bounded.dropped;
|
|
239
|
+
}
|
|
240
|
+
currentAction = null;
|
|
241
|
+
pendingActions.length = 0;
|
|
242
|
+
pendingActionsById.clear();
|
|
243
|
+
settled = true;
|
|
244
|
+
phase = "settled";
|
|
245
|
+
touch();
|
|
246
|
+
return true;
|
|
247
|
+
},
|
|
248
|
+
restart() {
|
|
249
|
+
currentAction = null;
|
|
250
|
+
pendingActions.length = 0;
|
|
251
|
+
pendingActionsById.clear();
|
|
252
|
+
durable = "";
|
|
253
|
+
betweenAssistantMessages = false;
|
|
254
|
+
settled = false;
|
|
255
|
+
phase = "starting";
|
|
256
|
+
touch();
|
|
257
|
+
},
|
|
258
|
+
snapshot() {
|
|
259
|
+
if (cached !== null) return cached;
|
|
260
|
+
cached = {
|
|
261
|
+
revision,
|
|
262
|
+
phase,
|
|
263
|
+
tailText,
|
|
264
|
+
droppedLines,
|
|
265
|
+
droppedBytes,
|
|
266
|
+
currentAction: currentAction === null ? null : { ...currentAction },
|
|
267
|
+
recentActions: recentActions.map((entry) => ({ ...entry })),
|
|
268
|
+
toolNames: [...toolNames],
|
|
269
|
+
settled
|
|
270
|
+
};
|
|
271
|
+
return cached;
|
|
272
|
+
},
|
|
273
|
+
durableText() {
|
|
274
|
+
return durable;
|
|
275
|
+
}
|
|
276
|
+
};
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
export {
|
|
280
|
+
boundSettledText,
|
|
281
|
+
createWorkerProgressFold
|
|
282
|
+
};
|
|
283
|
+
//# sourceMappingURL=chunk-XXYSBZIQ.js.map
|