@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
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
|
|
2
2
|
import {
|
|
3
3
|
ceilChars
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-NZMNUPZZ.js";
|
|
5
5
|
import {
|
|
6
6
|
clioStateDir
|
|
7
7
|
} from "./chunk-BYP5D4HI.js";
|
|
@@ -179,211 +179,6 @@ function compareForSnapshot(left, right) {
|
|
|
179
179
|
return byCreated !== 0 ? byCreated : left.id.localeCompare(right.id);
|
|
180
180
|
}
|
|
181
181
|
|
|
182
|
-
// src/domains/memory/task-memory-telemetry.ts
|
|
183
|
-
init_esm_shims();
|
|
184
|
-
import { appendFileSync, mkdirSync, renameSync, statSync } from "node:fs";
|
|
185
|
-
import { join } from "node:path";
|
|
186
|
-
var TASK_MEMORY_TELEMETRY_VERSION = 2;
|
|
187
|
-
var TASK_MEMORY_TELEMETRY_MAX_BYTES = 1024 * 1024;
|
|
188
|
-
var TASK_MEMORY_TELEMETRY_FILE = "steps.jsonl";
|
|
189
|
-
function createTaskMemoryTelemetrySink(options = {}) {
|
|
190
|
-
const now = options.now ?? (() => /* @__PURE__ */ new Date());
|
|
191
|
-
return {
|
|
192
|
-
record(step) {
|
|
193
|
-
try {
|
|
194
|
-
const logDir = options.logDir ?? join(clioStateDir(), "memory");
|
|
195
|
-
const record = taskMemoryTelemetryRecord(step, now());
|
|
196
|
-
mkdirSync(logDir, { recursive: true });
|
|
197
|
-
const path = join(logDir, TASK_MEMORY_TELEMETRY_FILE);
|
|
198
|
-
try {
|
|
199
|
-
if (statSync(path).size > TASK_MEMORY_TELEMETRY_MAX_BYTES) renameSync(path, `${path}.1`);
|
|
200
|
-
} catch {
|
|
201
|
-
}
|
|
202
|
-
appendFileSync(path, `${JSON.stringify(record)}
|
|
203
|
-
`);
|
|
204
|
-
} catch {
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
};
|
|
208
|
-
}
|
|
209
|
-
function taskMemoryTelemetryRecord(step, at) {
|
|
210
|
-
const input = nonNegativeInteger(step.inputTokens);
|
|
211
|
-
const output = nonNegativeInteger(step.outputTokens);
|
|
212
|
-
return {
|
|
213
|
-
version: TASK_MEMORY_TELEMETRY_VERSION,
|
|
214
|
-
at: at.toISOString(),
|
|
215
|
-
triggerReasons: [...new Set(step.triggerReasons)],
|
|
216
|
-
tier: step.tier,
|
|
217
|
-
bankDelta: step.bankDelta,
|
|
218
|
-
decision: step.decision,
|
|
219
|
-
reason: step.reason,
|
|
220
|
-
bankOperations: nonNegativeInteger(step.bankOperations),
|
|
221
|
-
droppedOperations: nonNegativeInteger(step.droppedOperations),
|
|
222
|
-
citedEntries: nonNegativeInteger(step.citedEntries),
|
|
223
|
-
tokenCost: { input, output, total: input + output },
|
|
224
|
-
latencyMs: nonNegativeFinite(step.latencyMs)
|
|
225
|
-
};
|
|
226
|
-
}
|
|
227
|
-
function taskMemoryBankDelta(before, after) {
|
|
228
|
-
return {
|
|
229
|
-
status: entryDelta(before.status === null ? [] : [before.status], after.status === null ? [] : [after.status]),
|
|
230
|
-
knowledge: entryDelta(before.knowledge, after.knowledge),
|
|
231
|
-
procedural: entryDelta(before.procedural, after.procedural)
|
|
232
|
-
};
|
|
233
|
-
}
|
|
234
|
-
function parseTaskMemoryTelemetryRecord(value) {
|
|
235
|
-
if (!isRecord(value) || !hasExactKeys(value, TELEMETRY_KEYS)) return null;
|
|
236
|
-
if (value.version !== TASK_MEMORY_TELEMETRY_VERSION || !validIsoTimestamp(value.at)) return null;
|
|
237
|
-
if (!validTriggerReasons(value.triggerReasons) || !isTier(value.tier) || !isDecision(value.decision)) return null;
|
|
238
|
-
if (!isReason(value.reason) || !isNonNegativeInteger(value.citedEntries)) return null;
|
|
239
|
-
if (!isNonNegativeInteger(value.bankOperations) || !isNonNegativeInteger(value.droppedOperations)) return null;
|
|
240
|
-
const bankDelta = parseBankDelta(value.bankDelta);
|
|
241
|
-
const tokenCost = parseTokenCost(value.tokenCost);
|
|
242
|
-
if (bankDelta === null || tokenCost === null || !isNonNegativeFinite(value.latencyMs)) return null;
|
|
243
|
-
return {
|
|
244
|
-
version: TASK_MEMORY_TELEMETRY_VERSION,
|
|
245
|
-
at: value.at,
|
|
246
|
-
triggerReasons: value.triggerReasons,
|
|
247
|
-
tier: value.tier,
|
|
248
|
-
bankDelta,
|
|
249
|
-
decision: value.decision,
|
|
250
|
-
reason: value.reason,
|
|
251
|
-
bankOperations: value.bankOperations,
|
|
252
|
-
droppedOperations: value.droppedOperations,
|
|
253
|
-
citedEntries: value.citedEntries,
|
|
254
|
-
tokenCost,
|
|
255
|
-
latencyMs: value.latencyMs
|
|
256
|
-
};
|
|
257
|
-
}
|
|
258
|
-
var TELEMETRY_KEYS = [
|
|
259
|
-
"version",
|
|
260
|
-
"at",
|
|
261
|
-
"triggerReasons",
|
|
262
|
-
"tier",
|
|
263
|
-
"bankDelta",
|
|
264
|
-
"decision",
|
|
265
|
-
"reason",
|
|
266
|
-
"bankOperations",
|
|
267
|
-
"droppedOperations",
|
|
268
|
-
"citedEntries",
|
|
269
|
-
"tokenCost",
|
|
270
|
-
"latencyMs"
|
|
271
|
-
];
|
|
272
|
-
var DELTA_KEYS = ["status", "knowledge", "procedural"];
|
|
273
|
-
var CLASS_DELTA_KEYS = ["added", "updated", "deleted"];
|
|
274
|
-
var TOKEN_KEYS = ["input", "output", "total"];
|
|
275
|
-
var TRIGGERS = /* @__PURE__ */ new Set([
|
|
276
|
-
"interval",
|
|
277
|
-
"tool_error_streak",
|
|
278
|
-
"loop_signal",
|
|
279
|
-
"repeated_failure",
|
|
280
|
-
"turn_end",
|
|
281
|
-
"post_compaction",
|
|
282
|
-
"manual"
|
|
283
|
-
]);
|
|
284
|
-
var DECISIONS = /* @__PURE__ */ new Set([
|
|
285
|
-
"silent",
|
|
286
|
-
"injected",
|
|
287
|
-
"gated",
|
|
288
|
-
"timeout",
|
|
289
|
-
"malformed",
|
|
290
|
-
"dropped"
|
|
291
|
-
]);
|
|
292
|
-
var REASONS = /* @__PURE__ */ new Set([
|
|
293
|
-
"intervened",
|
|
294
|
-
"model_silent",
|
|
295
|
-
"duplicate_reminder",
|
|
296
|
-
"suppressed",
|
|
297
|
-
"uncited",
|
|
298
|
-
"over_budget",
|
|
299
|
-
"unparseable",
|
|
300
|
-
"all_operations_invalid",
|
|
301
|
-
"deadline",
|
|
302
|
-
"timed_out",
|
|
303
|
-
"endpoint_busy",
|
|
304
|
-
"client_error",
|
|
305
|
-
"no_client",
|
|
306
|
-
"no_consumer",
|
|
307
|
-
"step_in_flight",
|
|
308
|
-
"llm_timeout_backoff",
|
|
309
|
-
"no_repeated_failure",
|
|
310
|
-
"bank_empty"
|
|
311
|
-
]);
|
|
312
|
-
function entryDelta(before, after) {
|
|
313
|
-
const old = new Map(before.map((entry) => [entry.id, entry]));
|
|
314
|
-
const next = new Map(after.map((entry) => [entry.id, entry]));
|
|
315
|
-
let added = 0;
|
|
316
|
-
let updated = 0;
|
|
317
|
-
let deleted = 0;
|
|
318
|
-
for (const [id, entry] of next) {
|
|
319
|
-
const previous = old.get(id);
|
|
320
|
-
if (previous === void 0) added += 1;
|
|
321
|
-
else if (!sameEntry(previous, entry)) updated += 1;
|
|
322
|
-
}
|
|
323
|
-
for (const id of old.keys()) {
|
|
324
|
-
if (!next.has(id)) deleted += 1;
|
|
325
|
-
}
|
|
326
|
-
return { added, updated, deleted };
|
|
327
|
-
}
|
|
328
|
-
function sameEntry(left, right) {
|
|
329
|
-
return left.content === right.content && left.createdAt === right.createdAt;
|
|
330
|
-
}
|
|
331
|
-
function parseBankDelta(value) {
|
|
332
|
-
if (!isRecord(value) || !hasExactKeys(value, DELTA_KEYS)) return null;
|
|
333
|
-
const status = parseClassDelta(value.status);
|
|
334
|
-
const knowledge = parseClassDelta(value.knowledge);
|
|
335
|
-
const procedural = parseClassDelta(value.procedural);
|
|
336
|
-
return status === null || knowledge === null || procedural === null ? null : { status, knowledge, procedural };
|
|
337
|
-
}
|
|
338
|
-
function parseClassDelta(value) {
|
|
339
|
-
if (!isRecord(value) || !hasExactKeys(value, CLASS_DELTA_KEYS)) return null;
|
|
340
|
-
return isNonNegativeInteger(value.added) && isNonNegativeInteger(value.updated) && isNonNegativeInteger(value.deleted) ? { added: value.added, updated: value.updated, deleted: value.deleted } : null;
|
|
341
|
-
}
|
|
342
|
-
function parseTokenCost(value) {
|
|
343
|
-
if (!isRecord(value) || !hasExactKeys(value, TOKEN_KEYS)) return null;
|
|
344
|
-
if (!isNonNegativeInteger(value.input) || !isNonNegativeInteger(value.output) || !isNonNegativeInteger(value.total))
|
|
345
|
-
return null;
|
|
346
|
-
if (value.total !== value.input + value.output) return null;
|
|
347
|
-
return { input: value.input, output: value.output, total: value.total };
|
|
348
|
-
}
|
|
349
|
-
function validTriggerReasons(value) {
|
|
350
|
-
return Array.isArray(value) && value.length > 0 && value.length <= 3 && new Set(value).size === value.length && value.every((item) => typeof item === "string" && TRIGGERS.has(item));
|
|
351
|
-
}
|
|
352
|
-
function isTier(value) {
|
|
353
|
-
return value === "rules" || value === "llm";
|
|
354
|
-
}
|
|
355
|
-
function isDecision(value) {
|
|
356
|
-
return typeof value === "string" && DECISIONS.has(value);
|
|
357
|
-
}
|
|
358
|
-
function isReason(value) {
|
|
359
|
-
return typeof value === "string" && REASONS.has(value);
|
|
360
|
-
}
|
|
361
|
-
function validIsoTimestamp(value) {
|
|
362
|
-
if (typeof value !== "string" || value.length > 40) return false;
|
|
363
|
-
const timestamp = Date.parse(value);
|
|
364
|
-
return Number.isFinite(timestamp) && new Date(timestamp).toISOString() === value;
|
|
365
|
-
}
|
|
366
|
-
function isRecord(value) {
|
|
367
|
-
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
368
|
-
}
|
|
369
|
-
function hasExactKeys(value, keys) {
|
|
370
|
-
const actual = Object.keys(value).sort();
|
|
371
|
-
const expected = [...keys].sort();
|
|
372
|
-
return actual.length === expected.length && actual.every((key, index) => key === expected[index]);
|
|
373
|
-
}
|
|
374
|
-
function isNonNegativeInteger(value) {
|
|
375
|
-
return typeof value === "number" && Number.isSafeInteger(value) && value >= 0;
|
|
376
|
-
}
|
|
377
|
-
function nonNegativeInteger(value) {
|
|
378
|
-
return Number.isSafeInteger(value) && value >= 0 ? value : 0;
|
|
379
|
-
}
|
|
380
|
-
function isNonNegativeFinite(value) {
|
|
381
|
-
return typeof value === "number" && Number.isFinite(value) && value >= 0;
|
|
382
|
-
}
|
|
383
|
-
function nonNegativeFinite(value) {
|
|
384
|
-
return Number.isFinite(value) && value >= 0 ? value : 0;
|
|
385
|
-
}
|
|
386
|
-
|
|
387
182
|
// src/domains/memory/task-memory-policy.ts
|
|
388
183
|
init_esm_shims();
|
|
389
184
|
|
|
@@ -431,6 +226,8 @@ function buildMemoryInterventionUserPrompt(input) {
|
|
|
431
226
|
// src/domains/memory/task-memory-policy.ts
|
|
432
227
|
var TASK_MEMORY_POLICY_MAX_OPERATIONS = 8;
|
|
433
228
|
var TASK_MEMORY_POLICY_DEFAULT_TIMEOUT_MS = 6e4;
|
|
229
|
+
var TaskMemoryEndpointBusyError = class extends Error {
|
|
230
|
+
};
|
|
434
231
|
var TASK_PROMPT_MAX_CHARS = 2e3;
|
|
435
232
|
var TRAJECTORY_PROMPT_MAX_CHARS = 4e3;
|
|
436
233
|
function renderTrajectory(trajectory) {
|
|
@@ -454,10 +251,31 @@ async function runTaskMemoryPolicy(bank, client, input) {
|
|
|
454
251
|
const timeoutMs = positiveInteger2(input.timeoutMs, TASK_MEMORY_POLICY_DEFAULT_TIMEOUT_MS);
|
|
455
252
|
const timeoutMarker = /* @__PURE__ */ Symbol("task-memory-timeout");
|
|
456
253
|
let timer;
|
|
254
|
+
const cancelledMarker = /* @__PURE__ */ Symbol("task-memory-cancelled");
|
|
255
|
+
let cancel = () => {
|
|
256
|
+
};
|
|
257
|
+
const cancelled = new Promise((resolve) => {
|
|
258
|
+
cancel = () => {
|
|
259
|
+
controller.abort();
|
|
260
|
+
resolve(cancelledMarker);
|
|
261
|
+
};
|
|
262
|
+
});
|
|
263
|
+
input.signal?.addEventListener("abort", cancel, { once: true });
|
|
264
|
+
if (input.signal?.aborted) cancel();
|
|
457
265
|
let userPrompt = "";
|
|
458
266
|
let rawResponse = "";
|
|
459
267
|
let clientError = null;
|
|
460
268
|
let stepUsage = null;
|
|
269
|
+
let usageReported = false;
|
|
270
|
+
const reportUsage = (usage) => {
|
|
271
|
+
if (usageReported) return;
|
|
272
|
+
usageReported = true;
|
|
273
|
+
stepUsage = usage;
|
|
274
|
+
try {
|
|
275
|
+
input.onStepUsage?.(usage);
|
|
276
|
+
} catch {
|
|
277
|
+
}
|
|
278
|
+
};
|
|
461
279
|
const settle = (decision, reason, parts = {}) => {
|
|
462
280
|
const result = {
|
|
463
281
|
decision,
|
|
@@ -465,27 +283,29 @@ async function runTaskMemoryPolicy(bank, client, input) {
|
|
|
465
283
|
bankOperations: parts.bankOperations ?? 0,
|
|
466
284
|
droppedOperations: parts.droppedOperations ?? 0,
|
|
467
285
|
reminder: parts.reminder ?? null,
|
|
468
|
-
inputTokens: parts.inputTokens ?? 0,
|
|
469
|
-
outputTokens: parts.outputTokens ?? 0,
|
|
286
|
+
inputTokens: parts.inputTokens ?? stepUsage?.input ?? 0,
|
|
287
|
+
outputTokens: parts.outputTokens ?? stepUsage?.output ?? 0,
|
|
470
288
|
usage: stepUsage
|
|
471
289
|
};
|
|
472
290
|
try {
|
|
473
|
-
input.
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
291
|
+
if (input.isCurrent?.() !== false)
|
|
292
|
+
input.onEnvelope?.({
|
|
293
|
+
systemPrompt: MEMORY_INTERVENTION_SYSTEM_PROMPT,
|
|
294
|
+
userPrompt,
|
|
295
|
+
response: rawResponse,
|
|
296
|
+
decision,
|
|
297
|
+
reason,
|
|
298
|
+
bankOperations: result.bankOperations,
|
|
299
|
+
droppedOperations: result.droppedOperations,
|
|
300
|
+
reminder: result.reminder,
|
|
301
|
+
error: clientError
|
|
302
|
+
});
|
|
484
303
|
} catch {
|
|
485
304
|
}
|
|
486
305
|
return result;
|
|
487
306
|
};
|
|
488
307
|
try {
|
|
308
|
+
if (input.signal?.aborted || input.isCurrent?.() === false) return settle("silent", "scope_changed");
|
|
489
309
|
userPrompt = buildMemoryInterventionUserPrompt({
|
|
490
310
|
task: input.task.slice(0, TASK_PROMPT_MAX_CHARS),
|
|
491
311
|
bank: bank.render(input.maxTokens),
|
|
@@ -495,23 +315,29 @@ async function runTaskMemoryPolicy(bank, client, input) {
|
|
|
495
315
|
systemPrompt: MEMORY_INTERVENTION_SYSTEM_PROMPT,
|
|
496
316
|
userPrompt,
|
|
497
317
|
maxTokens: positiveInteger2(input.modelMaxTokens, input.maxTokens),
|
|
498
|
-
signal: controller.signal
|
|
318
|
+
signal: controller.signal,
|
|
319
|
+
onUsage: reportUsage
|
|
320
|
+
}).then((response2) => {
|
|
321
|
+
if (response2.usage !== void 0) reportUsage(response2.usage);
|
|
322
|
+
return response2;
|
|
499
323
|
});
|
|
500
324
|
const timeout = new Promise((resolve) => {
|
|
501
325
|
timer = setTimeout(() => resolve(timeoutMarker), timeoutMs);
|
|
502
326
|
});
|
|
503
|
-
const response = await Promise.race([completion, timeout]);
|
|
327
|
+
const response = await Promise.race([completion, timeout, cancelled]);
|
|
328
|
+
if (response === cancelledMarker) return settle("silent", "scope_changed");
|
|
504
329
|
if (response === timeoutMarker) {
|
|
505
330
|
controller.abort();
|
|
506
331
|
void completion.catch(() => void 0);
|
|
507
332
|
return settle("timeout", "deadline");
|
|
508
333
|
}
|
|
509
334
|
rawResponse = typeof response.text === "string" ? response.text : "";
|
|
510
|
-
stepUsage = response.usage ??
|
|
335
|
+
stepUsage = response.usage ?? stepUsage;
|
|
511
336
|
const usage = {
|
|
512
|
-
inputTokens:
|
|
513
|
-
outputTokens:
|
|
337
|
+
inputTokens: nonNegativeInteger(response.inputTokens ?? stepUsage?.input),
|
|
338
|
+
outputTokens: nonNegativeInteger(response.outputTokens ?? stepUsage?.output)
|
|
514
339
|
};
|
|
340
|
+
if (input.signal?.aborted || input.isCurrent?.() === false) return settle("silent", "scope_changed", usage);
|
|
515
341
|
const read = readPolicyStep(rawResponse);
|
|
516
342
|
if (!read.ok) return settle("malformed", read.reason, { ...usage, droppedOperations: read.dropped });
|
|
517
343
|
const operations = resolveOperations(bank, read.step.operations);
|
|
@@ -531,11 +357,13 @@ async function runTaskMemoryPolicy(bank, client, input) {
|
|
|
531
357
|
bank.recordInjection(citedIds);
|
|
532
358
|
return settle("injected", "intervened", { ...counts, reminder });
|
|
533
359
|
} catch (error) {
|
|
360
|
+
if (error instanceof TaskMemoryEndpointBusyError) return settle("silent", "endpoint_busy");
|
|
534
361
|
clientError = errorMessage(error);
|
|
535
362
|
if (isTimeoutError(error)) return settle("timeout", "timed_out");
|
|
536
363
|
return settle("silent", "client_error");
|
|
537
364
|
} finally {
|
|
538
365
|
if (timer !== void 0) clearTimeout(timer);
|
|
366
|
+
input.signal?.removeEventListener("abort", cancel);
|
|
539
367
|
}
|
|
540
368
|
}
|
|
541
369
|
var OPERATIONS_OPEN = "<operations>";
|
|
@@ -623,10 +451,10 @@ function readOperations(value) {
|
|
|
623
451
|
const operations = [];
|
|
624
452
|
let dropped = 0;
|
|
625
453
|
for (const raw of value) {
|
|
626
|
-
if (!
|
|
454
|
+
if (!isRecord(raw) || typeof raw.op !== "string") return null;
|
|
627
455
|
switch (raw.op) {
|
|
628
456
|
case "update_status": {
|
|
629
|
-
if (!
|
|
457
|
+
if (!hasExactKeys(raw, ["op", "content"])) return null;
|
|
630
458
|
const content = boundedContent(raw.content);
|
|
631
459
|
if (content === null) return null;
|
|
632
460
|
operations.push({ op: raw.op, content });
|
|
@@ -634,7 +462,7 @@ function readOperations(value) {
|
|
|
634
462
|
}
|
|
635
463
|
case "save_knowledge":
|
|
636
464
|
case "save_procedural": {
|
|
637
|
-
if (!
|
|
465
|
+
if (!hasExactKeys(raw, raw.id === void 0 ? ["op", "content"] : ["op", "content", "id"])) return null;
|
|
638
466
|
const content = boundedContent(raw.content);
|
|
639
467
|
if (content === null) return null;
|
|
640
468
|
if (raw.id !== void 0 && !nonEmptyString(raw.id)) return null;
|
|
@@ -644,7 +472,7 @@ function readOperations(value) {
|
|
|
644
472
|
break;
|
|
645
473
|
}
|
|
646
474
|
case "delete":
|
|
647
|
-
if (!
|
|
475
|
+
if (!hasExactKeys(raw, ["op", "id"]) || !nonEmptyString(raw.id)) return null;
|
|
648
476
|
operations.push({ op: raw.op, id: raw.id });
|
|
649
477
|
break;
|
|
650
478
|
default:
|
|
@@ -715,10 +543,10 @@ function boundedContent(value) {
|
|
|
715
543
|
const normalized = value.replace(/\s+/gu, " ").trim();
|
|
716
544
|
return normalized.length > 0 && normalized.length <= TASK_MEMORY_CONTENT_MAX_CHARS ? normalized : null;
|
|
717
545
|
}
|
|
718
|
-
function
|
|
546
|
+
function isRecord(value) {
|
|
719
547
|
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
720
548
|
}
|
|
721
|
-
function
|
|
549
|
+
function hasExactKeys(record, expected) {
|
|
722
550
|
const keys = Object.keys(record).sort();
|
|
723
551
|
return keys.length === expected.length && [...expected].sort().every((key, index) => keys[index] === key);
|
|
724
552
|
}
|
|
@@ -728,7 +556,7 @@ function nonEmptyString(value) {
|
|
|
728
556
|
function positiveInteger2(value, fallback) {
|
|
729
557
|
return value !== void 0 && Number.isInteger(value) && value > 0 ? value : fallback;
|
|
730
558
|
}
|
|
731
|
-
function
|
|
559
|
+
function nonNegativeInteger(value) {
|
|
732
560
|
return value !== void 0 && Number.isInteger(value) && value >= 0 ? value : 0;
|
|
733
561
|
}
|
|
734
562
|
function isTimeoutError(error) {
|
|
@@ -742,16 +570,223 @@ function errorMessage(error) {
|
|
|
742
570
|
return typeof error === "string" && error.length > 0 ? error : "an unknown client failure";
|
|
743
571
|
}
|
|
744
572
|
|
|
573
|
+
// src/domains/memory/task-memory-telemetry.ts
|
|
574
|
+
init_esm_shims();
|
|
575
|
+
import { appendFileSync, mkdirSync, renameSync, statSync } from "node:fs";
|
|
576
|
+
import { join } from "node:path";
|
|
577
|
+
var TASK_MEMORY_TELEMETRY_VERSION = 2;
|
|
578
|
+
var TASK_MEMORY_TELEMETRY_MAX_BYTES = 1024 * 1024;
|
|
579
|
+
var TASK_MEMORY_TELEMETRY_FILE = "steps.jsonl";
|
|
580
|
+
function createTaskMemoryTelemetrySink(options = {}) {
|
|
581
|
+
const now = options.now ?? (() => /* @__PURE__ */ new Date());
|
|
582
|
+
return {
|
|
583
|
+
record(step) {
|
|
584
|
+
try {
|
|
585
|
+
const logDir = options.logDir ?? join(clioStateDir(), "memory");
|
|
586
|
+
const record = taskMemoryTelemetryRecord(step, now());
|
|
587
|
+
mkdirSync(logDir, { recursive: true });
|
|
588
|
+
const path = join(logDir, TASK_MEMORY_TELEMETRY_FILE);
|
|
589
|
+
try {
|
|
590
|
+
if (statSync(path).size > TASK_MEMORY_TELEMETRY_MAX_BYTES) renameSync(path, `${path}.1`);
|
|
591
|
+
} catch {
|
|
592
|
+
}
|
|
593
|
+
appendFileSync(path, `${JSON.stringify(record)}
|
|
594
|
+
`);
|
|
595
|
+
} catch {
|
|
596
|
+
}
|
|
597
|
+
}
|
|
598
|
+
};
|
|
599
|
+
}
|
|
600
|
+
function taskMemoryTelemetryRecord(step, at) {
|
|
601
|
+
const input = nonNegativeInteger2(step.inputTokens);
|
|
602
|
+
const output = nonNegativeInteger2(step.outputTokens);
|
|
603
|
+
return {
|
|
604
|
+
version: TASK_MEMORY_TELEMETRY_VERSION,
|
|
605
|
+
at: at.toISOString(),
|
|
606
|
+
triggerReasons: [...new Set(step.triggerReasons)],
|
|
607
|
+
tier: step.tier,
|
|
608
|
+
bankDelta: step.bankDelta,
|
|
609
|
+
decision: step.decision,
|
|
610
|
+
reason: step.reason,
|
|
611
|
+
bankOperations: nonNegativeInteger2(step.bankOperations),
|
|
612
|
+
droppedOperations: nonNegativeInteger2(step.droppedOperations),
|
|
613
|
+
citedEntries: nonNegativeInteger2(step.citedEntries),
|
|
614
|
+
tokenCost: { input, output, total: input + output },
|
|
615
|
+
latencyMs: nonNegativeFinite(step.latencyMs)
|
|
616
|
+
};
|
|
617
|
+
}
|
|
618
|
+
function taskMemoryBankDelta(before, after) {
|
|
619
|
+
return {
|
|
620
|
+
status: entryDelta(before.status === null ? [] : [before.status], after.status === null ? [] : [after.status]),
|
|
621
|
+
knowledge: entryDelta(before.knowledge, after.knowledge),
|
|
622
|
+
procedural: entryDelta(before.procedural, after.procedural)
|
|
623
|
+
};
|
|
624
|
+
}
|
|
625
|
+
function parseTaskMemoryTelemetryRecord(value) {
|
|
626
|
+
if (!isRecord2(value) || !hasExactKeys2(value, TELEMETRY_KEYS)) return null;
|
|
627
|
+
if (value.version !== TASK_MEMORY_TELEMETRY_VERSION || !validIsoTimestamp(value.at)) return null;
|
|
628
|
+
if (!validTriggerReasons(value.triggerReasons) || !isTier(value.tier) || !isDecision(value.decision)) return null;
|
|
629
|
+
if (!isReason(value.reason) || !isNonNegativeInteger(value.citedEntries)) return null;
|
|
630
|
+
if (!isNonNegativeInteger(value.bankOperations) || !isNonNegativeInteger(value.droppedOperations)) return null;
|
|
631
|
+
const bankDelta = parseBankDelta(value.bankDelta);
|
|
632
|
+
const tokenCost = parseTokenCost(value.tokenCost);
|
|
633
|
+
if (bankDelta === null || tokenCost === null || !isNonNegativeFinite(value.latencyMs)) return null;
|
|
634
|
+
return {
|
|
635
|
+
version: TASK_MEMORY_TELEMETRY_VERSION,
|
|
636
|
+
at: value.at,
|
|
637
|
+
triggerReasons: value.triggerReasons,
|
|
638
|
+
tier: value.tier,
|
|
639
|
+
bankDelta,
|
|
640
|
+
decision: value.decision,
|
|
641
|
+
reason: value.reason,
|
|
642
|
+
bankOperations: value.bankOperations,
|
|
643
|
+
droppedOperations: value.droppedOperations,
|
|
644
|
+
citedEntries: value.citedEntries,
|
|
645
|
+
tokenCost,
|
|
646
|
+
latencyMs: value.latencyMs
|
|
647
|
+
};
|
|
648
|
+
}
|
|
649
|
+
var TELEMETRY_KEYS = [
|
|
650
|
+
"version",
|
|
651
|
+
"at",
|
|
652
|
+
"triggerReasons",
|
|
653
|
+
"tier",
|
|
654
|
+
"bankDelta",
|
|
655
|
+
"decision",
|
|
656
|
+
"reason",
|
|
657
|
+
"bankOperations",
|
|
658
|
+
"droppedOperations",
|
|
659
|
+
"citedEntries",
|
|
660
|
+
"tokenCost",
|
|
661
|
+
"latencyMs"
|
|
662
|
+
];
|
|
663
|
+
var DELTA_KEYS = ["status", "knowledge", "procedural"];
|
|
664
|
+
var CLASS_DELTA_KEYS = ["added", "updated", "deleted"];
|
|
665
|
+
var TOKEN_KEYS = ["input", "output", "total"];
|
|
666
|
+
var TRIGGERS = /* @__PURE__ */ new Set([
|
|
667
|
+
"interval",
|
|
668
|
+
"tool_error_streak",
|
|
669
|
+
"loop_signal",
|
|
670
|
+
"repeated_failure",
|
|
671
|
+
"turn_end",
|
|
672
|
+
"post_compaction",
|
|
673
|
+
"manual"
|
|
674
|
+
]);
|
|
675
|
+
var DECISIONS = /* @__PURE__ */ new Set([
|
|
676
|
+
"silent",
|
|
677
|
+
"injected",
|
|
678
|
+
"gated",
|
|
679
|
+
"timeout",
|
|
680
|
+
"malformed",
|
|
681
|
+
"dropped"
|
|
682
|
+
]);
|
|
683
|
+
var REASONS = /* @__PURE__ */ new Set([
|
|
684
|
+
"intervened",
|
|
685
|
+
"model_silent",
|
|
686
|
+
"duplicate_reminder",
|
|
687
|
+
"suppressed",
|
|
688
|
+
"uncited",
|
|
689
|
+
"over_budget",
|
|
690
|
+
"unparseable",
|
|
691
|
+
"all_operations_invalid",
|
|
692
|
+
"deadline",
|
|
693
|
+
"timed_out",
|
|
694
|
+
"endpoint_busy",
|
|
695
|
+
"client_error",
|
|
696
|
+
"no_client",
|
|
697
|
+
"no_consumer",
|
|
698
|
+
"step_in_flight",
|
|
699
|
+
"llm_timeout_backoff",
|
|
700
|
+
"no_repeated_failure",
|
|
701
|
+
"bank_empty",
|
|
702
|
+
"scope_changed"
|
|
703
|
+
]);
|
|
704
|
+
function entryDelta(before, after) {
|
|
705
|
+
const old = new Map(before.map((entry) => [entry.id, entry]));
|
|
706
|
+
const next = new Map(after.map((entry) => [entry.id, entry]));
|
|
707
|
+
let added = 0;
|
|
708
|
+
let updated = 0;
|
|
709
|
+
let deleted = 0;
|
|
710
|
+
for (const [id, entry] of next) {
|
|
711
|
+
const previous = old.get(id);
|
|
712
|
+
if (previous === void 0) added += 1;
|
|
713
|
+
else if (!sameEntry(previous, entry)) updated += 1;
|
|
714
|
+
}
|
|
715
|
+
for (const id of old.keys()) {
|
|
716
|
+
if (!next.has(id)) deleted += 1;
|
|
717
|
+
}
|
|
718
|
+
return { added, updated, deleted };
|
|
719
|
+
}
|
|
720
|
+
function sameEntry(left, right) {
|
|
721
|
+
return left.content === right.content && left.createdAt === right.createdAt;
|
|
722
|
+
}
|
|
723
|
+
function parseBankDelta(value) {
|
|
724
|
+
if (!isRecord2(value) || !hasExactKeys2(value, DELTA_KEYS)) return null;
|
|
725
|
+
const status = parseClassDelta(value.status);
|
|
726
|
+
const knowledge = parseClassDelta(value.knowledge);
|
|
727
|
+
const procedural = parseClassDelta(value.procedural);
|
|
728
|
+
return status === null || knowledge === null || procedural === null ? null : { status, knowledge, procedural };
|
|
729
|
+
}
|
|
730
|
+
function parseClassDelta(value) {
|
|
731
|
+
if (!isRecord2(value) || !hasExactKeys2(value, CLASS_DELTA_KEYS)) return null;
|
|
732
|
+
return isNonNegativeInteger(value.added) && isNonNegativeInteger(value.updated) && isNonNegativeInteger(value.deleted) ? { added: value.added, updated: value.updated, deleted: value.deleted } : null;
|
|
733
|
+
}
|
|
734
|
+
function parseTokenCost(value) {
|
|
735
|
+
if (!isRecord2(value) || !hasExactKeys2(value, TOKEN_KEYS)) return null;
|
|
736
|
+
if (!isNonNegativeInteger(value.input) || !isNonNegativeInteger(value.output) || !isNonNegativeInteger(value.total))
|
|
737
|
+
return null;
|
|
738
|
+
if (value.total !== value.input + value.output) return null;
|
|
739
|
+
return { input: value.input, output: value.output, total: value.total };
|
|
740
|
+
}
|
|
741
|
+
function validTriggerReasons(value) {
|
|
742
|
+
return Array.isArray(value) && value.length > 0 && value.length <= 3 && new Set(value).size === value.length && value.every((item) => typeof item === "string" && TRIGGERS.has(item));
|
|
743
|
+
}
|
|
744
|
+
function isTier(value) {
|
|
745
|
+
return value === "rules" || value === "llm";
|
|
746
|
+
}
|
|
747
|
+
function isDecision(value) {
|
|
748
|
+
return typeof value === "string" && DECISIONS.has(value);
|
|
749
|
+
}
|
|
750
|
+
function isReason(value) {
|
|
751
|
+
return typeof value === "string" && REASONS.has(value);
|
|
752
|
+
}
|
|
753
|
+
function validIsoTimestamp(value) {
|
|
754
|
+
if (typeof value !== "string" || value.length > 40) return false;
|
|
755
|
+
const timestamp = Date.parse(value);
|
|
756
|
+
return Number.isFinite(timestamp) && new Date(timestamp).toISOString() === value;
|
|
757
|
+
}
|
|
758
|
+
function isRecord2(value) {
|
|
759
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
760
|
+
}
|
|
761
|
+
function hasExactKeys2(value, keys) {
|
|
762
|
+
const actual = Object.keys(value).sort();
|
|
763
|
+
const expected = [...keys].sort();
|
|
764
|
+
return actual.length === expected.length && actual.every((key, index) => key === expected[index]);
|
|
765
|
+
}
|
|
766
|
+
function isNonNegativeInteger(value) {
|
|
767
|
+
return typeof value === "number" && Number.isSafeInteger(value) && value >= 0;
|
|
768
|
+
}
|
|
769
|
+
function nonNegativeInteger2(value) {
|
|
770
|
+
return Number.isSafeInteger(value) && value >= 0 ? value : 0;
|
|
771
|
+
}
|
|
772
|
+
function isNonNegativeFinite(value) {
|
|
773
|
+
return typeof value === "number" && Number.isFinite(value) && value >= 0;
|
|
774
|
+
}
|
|
775
|
+
function nonNegativeFinite(value) {
|
|
776
|
+
return Number.isFinite(value) && value >= 0 ? value : 0;
|
|
777
|
+
}
|
|
778
|
+
|
|
745
779
|
export {
|
|
746
780
|
TASK_MEMORY_DEFAULT_KNOWLEDGE_CAP,
|
|
747
781
|
TASK_MEMORY_DEFAULT_PROCEDURAL_CAP,
|
|
748
782
|
TASK_MEMORY_CONTENT_MAX_CHARS,
|
|
749
783
|
TaskMemoryBank,
|
|
750
784
|
TASK_MEMORY_POLICY_DEFAULT_TIMEOUT_MS,
|
|
785
|
+
TaskMemoryEndpointBusyError,
|
|
751
786
|
runTaskMemoryPolicy,
|
|
752
787
|
TASK_MEMORY_TELEMETRY_FILE,
|
|
753
788
|
createTaskMemoryTelemetrySink,
|
|
754
789
|
taskMemoryBankDelta,
|
|
755
790
|
parseTaskMemoryTelemetryRecord
|
|
756
791
|
};
|
|
757
|
-
//# sourceMappingURL=chunk-
|
|
792
|
+
//# sourceMappingURL=chunk-2WZ546HR.js.map
|