@iowarp/clio-coder 0.4.4 → 0.4.5
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 +92 -2
- package/CONTRIBUTING.md +25 -15
- package/README.md +340 -27
- package/dist/{acp-WNAYYF4F.js → acp-H3CU2HBQ.js} +25 -24
- package/dist/{agents-3OKXHLOI.js → agents-IXQQZ7BD.js} +77 -77
- package/dist/assets/codewiki.json +1 -1
- package/dist/{auth-VKNNMGPU.js → auth-R7KYF7N3.js} +38 -38
- package/dist/builtins-CRFDQUVP.js +22 -0
- package/dist/{chunk-TQAHXW6Y.js → chunk-22PQ4TX4.js} +4 -4
- package/dist/{chunk-NEDJ26B5.js → chunk-2GPGAE5W.js} +6 -51
- package/dist/{chunk-IKCO5N3L.js → chunk-2QPI3TR3.js} +3 -3
- package/dist/{chunk-HRQMFLJP.js → chunk-32KJPXAM.js} +6 -6
- package/dist/{chunk-65DEGPJ6.js → chunk-3A3CUMKA.js} +6 -4
- package/dist/{chunk-JCI2ROMZ.js → chunk-3T4DXWP6.js} +7 -7
- package/dist/{chunk-DR52UMZW.js → chunk-3UW3KU4A.js} +2 -2
- package/dist/{chunk-6Q3CYFD3.js → chunk-4SVIVOMC.js} +184 -33
- package/dist/{chunk-W54I7H25.js → chunk-5A6XR3RJ.js} +44 -19
- package/dist/{chunk-YPC6ZR5L.js → chunk-5CMARGPF.js} +119 -5
- package/dist/{chunk-KXDSS5WJ.js → chunk-5CY4Q6QI.js} +4 -4
- package/dist/{chunk-I2DWJ4GM.js → chunk-5DDOTTG4.js} +54 -42
- package/dist/{chunk-D4CJV46V.js → chunk-5GZICIYO.js} +3 -3
- package/dist/{chunk-4IUZQIJ3.js → chunk-5PHVPU4G.js} +2 -2
- package/dist/{chunk-3ODX73FK.js → chunk-5VTJP36Q.js} +4 -4
- package/dist/{chunk-54X7T7DK.js → chunk-5ZMXGW7P.js} +79 -7
- package/dist/chunk-5ZSZEYJK.js +119 -0
- package/dist/{chunk-IXIY2H4R.js → chunk-633EXGZA.js} +5 -5
- package/dist/{chunk-CUSRQKPU.js → chunk-6CDNRHWH.js} +299 -89
- package/dist/{chunk-EBY63B7G.js → chunk-6EXUUOSN.js} +2 -2
- package/dist/{chunk-SVNXH4L2.js → chunk-6ICZKDUC.js} +2 -2
- package/dist/{chunk-JEIYHLOR.js → chunk-6SYEGZI3.js} +12 -12
- package/dist/{chunk-DQOVN6KV.js → chunk-6YA46L5A.js} +4 -4
- package/dist/{chunk-NZMNUPZZ.js → chunk-77CZRFTE.js} +3 -3
- package/dist/{chunk-6PAZTBPA.js → chunk-7HBHHVCK.js} +15 -6
- package/dist/{chunk-25QBEXRS.js → chunk-7TKWWPD7.js} +5 -4
- package/dist/{chunk-2VTFPG5O.js → chunk-7WLRF2U5.js} +2 -2
- package/dist/chunk-7WUZEB2M.js +165 -0
- package/dist/{chunk-3UUXNFEX.js → chunk-7YJWEF2L.js} +61 -34
- package/dist/{chunk-3EBYEESD.js → chunk-A46ILRS2.js} +5 -5
- package/dist/{chunk-UOIZ7DA4.js → chunk-AP7HDJOP.js} +2 -2
- package/dist/{chunk-APJ265NV.js → chunk-B5GGDIHT.js} +146 -146
- package/dist/{chunk-PMZVFWSR.js → chunk-B5ZTR6KZ.js} +2 -2
- package/dist/{chunk-I5FWO7L5.js → chunk-B6UM3OZC.js} +2 -2
- package/dist/{chunk-2CU2H6KE.js → chunk-BBV5TKE6.js} +5 -5
- package/dist/{chunk-4O6MANBS.js → chunk-BS4GAMUB.js} +14 -10
- package/dist/{chunk-S66XZJOF.js → chunk-C27U2TYG.js} +2 -2
- package/dist/{chunk-QZWQA4DE.js → chunk-CBSKDFWL.js} +3 -3
- package/dist/{chunk-2LEAKD4C.js → chunk-CKK25WN3.js} +3 -3
- package/dist/{chunk-BYP5D4HI.js → chunk-CTTI7G3T.js} +2 -2
- package/dist/{chunk-XAKHZX5N.js → chunk-CVDAFGPW.js} +4 -4
- package/dist/{chunk-RKKLTLYB.js → chunk-CXQ37WJH.js} +3 -3
- package/dist/{chunk-GTUD2WMY.js → chunk-DBREN25X.js} +44 -9
- package/dist/{chunk-YNFKXPEC.js → chunk-DIMRLNIC.js} +35 -66
- package/dist/{chunk-NDDGJUXD.js → chunk-DNCE23JJ.js} +2 -2
- package/dist/{chunk-HVDIIIQW.js → chunk-DNHVRBH4.js} +3 -3
- package/dist/{chunk-XULDXHTN.js → chunk-DRD2A54W.js} +102 -50
- package/dist/{chunk-D7E7WCDF.js → chunk-DVNAPPXU.js} +2 -2
- package/dist/{chunk-YXLYO42X.js → chunk-DXVMLM3Z.js} +3 -2
- package/dist/{chunk-5MEZN6CB.js → chunk-DZK63TZJ.js} +6 -6
- package/dist/{chunk-IGLP3ODT.js → chunk-E3BQTQUP.js} +15 -15
- package/dist/{chunk-IWHMRKLL.js → chunk-E3LEPLQ2.js} +2 -2
- package/dist/{chunk-3R73A4XB.js → chunk-ECBHH7LU.js} +3 -3
- package/dist/chunk-ECOMVOHP.js +139 -0
- package/dist/chunk-EFSEIZE6.js +56 -0
- package/dist/{chunk-FEAXX7B6.js → chunk-EHCPSZJF.js} +4 -4
- package/dist/{chunk-4NSRCOYP.js → chunk-EHOSNVVM.js} +3 -2
- package/dist/{chunk-7UGL4MB5.js → chunk-EQEJJ53P.js} +10 -10
- package/dist/{chunk-GWZNEVM2.js → chunk-EWD5P3GK.js} +9 -9
- package/dist/{chunk-6UINWWS6.js → chunk-F34AR6O3.js} +14 -14
- package/dist/{chunk-GHS5EBTQ.js → chunk-FKIOX6DS.js} +29 -20
- package/dist/{chunk-HAXOFFRH.js → chunk-FQOOGXBH.js} +7 -7
- package/dist/{chunk-Y55JBDO5.js → chunk-FSTIBAGM.js} +38 -23
- package/dist/{chunk-ZTJUVLTU.js → chunk-FXFVDPWY.js} +2 -2
- package/dist/{chunk-XPLRXC72.js → chunk-GD55RTIW.js} +3 -3
- package/dist/{chunk-5B2AEOW5.js → chunk-GH5ZR6JP.js} +472 -472
- package/dist/{chunk-TOIVGRUX.js → chunk-GJ24ODAX.js} +5 -5
- package/dist/{chunk-QUFRYSWI.js → chunk-GNQRWTMY.js} +129 -48
- package/dist/{chunk-5ICU3EUH.js → chunk-GVYWZNRK.js} +5 -5
- package/dist/{chunk-GX5WYQO4.js → chunk-GXCCHKN6.js} +6 -6
- package/dist/{chunk-K6T2ZAMZ.js → chunk-HGSLRG33.js} +6 -6
- package/dist/{chunk-26QSH3EJ.js → chunk-HHVJNVUJ.js} +5 -5
- package/dist/{chunk-F4EKGO4N.js → chunk-HL26ADLH.js} +4 -2
- package/dist/{chunk-JT2RFCC5.js → chunk-HR3HPQ76.js} +5 -5
- package/dist/{chunk-ID64D7PE.js → chunk-HXHFDHB6.js} +24 -24
- package/dist/{chunk-ELWDPP3Y.js → chunk-I7VLWRK2.js} +8 -8
- package/dist/{chunk-6OSVSQL5.js → chunk-ICO4TQ2F.js} +7 -5
- package/dist/{chunk-SZAA6XDG.js → chunk-IFDRAD6F.js} +2 -2
- package/dist/{chunk-72YIHOZQ.js → chunk-ILJ7DWGE.js} +9 -9
- package/dist/{chunk-2JH2WHGE.js → chunk-J2FYEQ5L.js} +4 -4
- package/dist/{chunk-BMS5RKQY.js → chunk-JABWPKFY.js} +3 -3
- package/dist/{chunk-QDC3K2U3.js → chunk-K2BLQC5E.js} +3 -3
- package/dist/{chunk-AUPNRN7C.js → chunk-K2HL3GBL.js} +4 -4
- package/dist/{chunk-2ASED4PZ.js → chunk-K6RDB7IA.js} +26 -26
- package/dist/{chunk-FFUPXJC4.js → chunk-KDWLXVMN.js} +23 -24
- package/dist/{chunk-OZNBF4L3.js → chunk-KECNXMDE.js} +2 -2
- package/dist/{chunk-6QOTUPRG.js → chunk-KF6GFW6O.js} +66 -18
- package/dist/{chunk-BTK3SSSK.js → chunk-KMF54VH3.js} +2 -2
- package/dist/chunk-KPRLAMP4.js +32 -0
- package/dist/{chunk-ECH6PKUQ.js → chunk-KQ6IDQIB.js} +2 -2
- package/dist/{chunk-3UNOLWNZ.js → chunk-KTFSFCVN.js} +20 -9
- package/dist/{chunk-57XXR6DR.js → chunk-KYKNBD4Y.js} +24 -23
- package/dist/{chunk-IRXAATOX.js → chunk-L4N3DWNW.js} +3 -3
- package/dist/{chunk-LCGCVYZ4.js → chunk-LQTKDAUO.js} +2 -2
- package/dist/{chunk-U6TMQNSI.js → chunk-LTR5QCLS.js} +4 -4
- package/dist/chunk-LUL5Z66S.js +221 -0
- package/dist/{chunk-ELZVTCGV.js → chunk-LVFANMOH.js} +151 -327
- package/dist/{chunk-H7IXIC72.js → chunk-LY4N4TTL.js} +17 -3
- package/dist/{chunk-VKPAQYEB.js → chunk-LZBMXNLP.js} +5 -5
- package/dist/{chunk-UL3WSD3F.js → chunk-M4KFUXS7.js} +2 -2
- package/dist/{chunk-NXYCB2VD.js → chunk-M6TAYK66.js} +6 -6
- package/dist/{chunk-NEKRRTYW.js → chunk-MC3JSVR6.js} +2 -2
- package/dist/{chunk-CFGTUFWB.js → chunk-MCJKEGHO.js} +2 -2
- package/dist/{chunk-DXKJURES.js → chunk-MDU3C27C.js} +10 -7
- package/dist/{chunk-6XLNIQDB.js → chunk-MYI32N4R.js} +2 -2
- package/dist/{chunk-3GY4F45V.js → chunk-NC4KV7EL.js} +6 -6
- package/dist/{chunk-LLXSDWXS.js → chunk-NF3BK5WR.js} +5 -5
- package/dist/chunk-NTK3WTHM.js +141 -0
- package/dist/{chunk-GYV6VZOC.js → chunk-NTTS3O53.js} +2 -2
- package/dist/{chunk-RZDWV63N.js → chunk-NY6IWDVU.js} +6 -6
- package/dist/{chunk-XXYSBZIQ.js → chunk-O2RQ7LCK.js} +4 -4
- package/dist/{chunk-4BJ5BYCE.js → chunk-O3VV6IVK.js} +2 -2
- package/dist/{chunk-W6GROXXM.js → chunk-O5F25NIE.js} +2 -2
- package/dist/{chunk-NXIMQY5W.js → chunk-ODUTYZIU.js} +5 -5
- package/dist/{chunk-LTIKRKFL.js → chunk-ONRTXOZY.js} +4 -4
- package/dist/{chunk-KFV5L5SK.js → chunk-OQM5IVJY.js} +118 -232
- package/dist/{chunk-XRZT5WY5.js → chunk-P5SC4DLJ.js} +4 -4
- package/dist/{chunk-R6Q67RJH.js → chunk-PECBKCDK.js} +34 -6
- package/dist/{chunk-33YXPOE3.js → chunk-PPEZJWUG.js} +2 -2
- package/dist/{chunk-RXTN6AKH.js → chunk-PWWSIB2A.js} +5 -5
- package/dist/{chunk-2STGEDFV.js → chunk-QEQISF75.js} +2 -2
- package/dist/{chunk-3DPEIQKN.js → chunk-QH3ZTUOA.js} +2 -2
- package/dist/{chunk-YAKGTXEV.js → chunk-QRFXEO6Y.js} +2 -2
- package/dist/{chunk-35MSIRKH.js → chunk-QUIJZSDW.js} +2 -2
- package/dist/{chunk-HHV2GANA.js → chunk-R2P2U3ZS.js} +2 -2
- package/dist/{chunk-2DSOYNFC.js → chunk-R6MAYTMS.js} +7 -7
- package/dist/{chunk-JQLNNIKT.js → chunk-R6MICQYU.js} +6 -6
- package/dist/{chunk-NAI6ZFCY.js → chunk-RLTT5GVY.js} +122 -11
- package/dist/{chunk-DT3LWJOB.js → chunk-RXIOCVBZ.js} +24 -6
- package/dist/{chunk-N56KALIC.js → chunk-S32UQ5GL.js} +61 -34
- package/dist/{chunk-UEPWCCTY.js → chunk-SBZX6ARC.js} +12 -12
- package/dist/chunk-SD7SHNDW.js +15 -0
- package/dist/{chunk-NRO2BJRH.js → chunk-SDWNDICN.js} +10235 -4015
- package/dist/{chunk-UXCU4E3T.js → chunk-SE4ZKILO.js} +6 -6
- package/dist/chunk-SL2RDHKO.js +19 -0
- package/dist/{chunk-NUGM5KR6.js → chunk-SRCEQKQS.js} +2 -2
- package/dist/{chunk-OMQNJVKW.js → chunk-SRZOW5L2.js} +43 -13
- package/dist/{chunk-3M6DQK6S.js → chunk-T334FW2H.js} +7 -7
- package/dist/{chunk-V76WTFTW.js → chunk-T52TPHYC.js} +6 -6
- package/dist/{chunk-I7XBWTYH.js → chunk-T53XI6I7.js} +5 -5
- package/dist/{chunk-2ZSONWVL.js → chunk-T7FDXNRU.js} +13 -13
- package/dist/{chunk-JSD46VO2.js → chunk-TEG3RYVZ.js} +43 -36
- package/dist/{chunk-3I7MS7N2.js → chunk-TK2BMCBZ.js} +2 -2
- package/dist/{chunk-5OIVVPHF.js → chunk-TN5FW4XY.js} +13 -6
- package/dist/{chunk-75W7L2E2.js → chunk-TZ7MFRG4.js} +1041 -162
- package/dist/{chunk-36CT5VVL.js → chunk-U2JOLB7O.js} +126 -77
- package/dist/{chunk-LL4KHSZI.js → chunk-U2MSJ57E.js} +2 -2
- package/dist/{chunk-FTMGRKEF.js → chunk-U44YYLVV.js} +4 -4
- package/dist/{chunk-YECAMM3D.js → chunk-U7H5WRG5.js} +5 -5
- package/dist/{chunk-RQCKCSRL.js → chunk-U7VQ4NI4.js} +22 -22
- package/dist/{chunk-5TUB6SLS.js → chunk-UFYNOQK4.js} +7 -7
- package/dist/{chunk-R346GLFC.js → chunk-UHW5V7HC.js} +2 -2
- package/dist/{chunk-USR47QNF.js → chunk-UL36QJX6.js} +14 -14
- package/dist/{chunk-VIA6RFQZ.js → chunk-UQIVHSE4.js} +4 -4
- package/dist/{chunk-RAY4OVGZ.js → chunk-URBGEOH3.js} +5 -5
- package/dist/chunk-USZA7GWL.js +341 -0
- package/dist/{chunk-YD5GIKET.js → chunk-UTUNT5QL.js} +48 -579
- package/dist/{chunk-ZA4VCIGV.js → chunk-UUQ5G6EZ.js} +60 -41
- package/dist/{chunk-23L32XTI.js → chunk-UXAC2FX4.js} +68 -39
- package/dist/{chunk-VG7TBQIY.js → chunk-V552WL53.js} +68 -4
- package/dist/{chunk-BWH6N36D.js → chunk-VHKTOLEW.js} +272 -42
- package/dist/{chunk-EXLD33WO.js → chunk-VLPTKCKT.js} +24 -9
- package/dist/{chunk-336NSSKI.js → chunk-VNBICSS2.js} +2 -2
- package/dist/{chunk-VAVR4IJY.js → chunk-VQD7NH7Z.js} +3 -3
- package/dist/{chunk-LBMZMYH2.js → chunk-W2RJEH6Q.js} +3 -3
- package/dist/{chunk-7CR24IG7.js → chunk-WDV62RKY.js} +2 -2
- package/dist/{chunk-S6PYF2XF.js → chunk-WFKDPU7U.js} +4 -4
- package/dist/{chunk-BJVFZO5U.js → chunk-WJIMKGD6.js} +7 -7
- package/dist/{chunk-5636DCO5.js → chunk-WLMSOT73.js} +59 -12
- package/dist/{chunk-MXHC5QYU.js → chunk-WTQGRBHV.js} +5 -144
- package/dist/chunk-WXA2CFJO.js +23 -0
- package/dist/{chunk-QSNYB6ZV.js → chunk-XCUDZQLX.js} +3 -3
- package/dist/{chunk-4M6Z5QVF.js → chunk-XXBQKW32.js} +11 -11
- package/dist/{chunk-OEJSLEPW.js → chunk-YEJIG7LN.js} +332 -332
- package/dist/chunk-YGDMBK7O.js +567 -0
- package/dist/{chunk-4WR7VSYB.js → chunk-YYB3MC65.js} +23 -9
- package/dist/{chunk-2IR2NMPA.js → chunk-ZIDFQJRB.js} +2 -2
- package/dist/{chunk-Q4WO54TA.js → chunk-ZMZQEBKI.js} +14 -14
- package/dist/{chunk-6EJMN2Y3.js → chunk-ZTNFYMIO.js} +2 -2
- package/dist/{chunk-WEPFGWHJ.js → chunk-ZZFWWYLX.js} +2 -2
- package/dist/cli/index.js +44 -44
- package/dist/clio-5I2IBFYL.js +26 -0
- package/dist/{code-nav-IJR2DBPR.js → code-nav-YXIAEZVS.js} +48 -32
- package/dist/codewiki/build-worker.js +76 -29
- package/dist/{compile-cache-OQAVB7Y5.js → compile-cache-WJEPUZEJ.js} +4 -4
- package/dist/{components-2TGAI2RC.js → components-TNIKXCBH.js} +13 -13
- package/dist/{config-IUA6OYNS.js → config-Y2JDJ3JJ.js} +210 -124
- package/dist/configure-SML6UBZ5.js +55 -0
- package/dist/{context-4MPR7WKB.js → context-P5YSEO55.js} +125 -121
- package/dist/{context-2DKHWH2T.js → context-QQ53HSGJ.js} +91 -62
- package/dist/{context-BOYF5EJM.js → context-S2EEC3EJ.js} +62 -31
- package/dist/context-clear-TMEQCOTH.js +183 -0
- package/dist/{context-index-HNG3MOME.js → context-index-HP2JFUWA.js} +13 -11
- package/dist/{context-map-COB37XXN.js → context-map-INTXD54D.js} +71 -21
- package/dist/{context-working-set-3I3FYX6Y.js → context-working-set-CNLSQN5K.js} +31 -31
- package/dist/detail-5572VLBO.js +114 -0
- package/dist/{dispatch-runner-RJ5I2F2O.js → dispatch-runner-FRHD6P2O.js} +191 -116
- package/dist/{docs-SPOV3BAN.js → docs-BL7ROUFN.js} +4 -4
- package/dist/{doctor-DKICC2SN.js → doctor-N3LCM2LG.js} +58 -58
- package/dist/{eval-OQOQUDHK.js → eval-BUU3ZOUZ.js} +473 -168
- package/dist/{eval-inventory-Y6QRFOH5.js → eval-inventory-QOYZERXJ.js} +7 -7
- package/dist/evidence-DTGEN456.js +224 -0
- package/dist/{evidence-4DQ25GUQ.js → evidence-SQ5DNFEN.js} +110 -94
- package/dist/{evolve-GSS52E5J.js → evolve-IJNUFZDS.js} +107 -91
- package/dist/{extensions-G7MFLYHT.js → extensions-YVRHX6ZI.js} +16 -16
- package/dist/{fleet-Q37YHHAQ.js → fleet-ZNNVSYFO.js} +147 -147
- package/dist/{fleet-commands-G7E4N7SM.js → fleet-commands-5YE7NPJL.js} +27 -26
- package/dist/{fleet-decisions-O7M6QBA2.js → fleet-decisions-3SBSCTCW.js} +16 -15
- package/dist/{fleet-graph-TOUBW6OW.js → fleet-graph-6HHPWF5T.js} +39 -38
- package/dist/{fleet-inspect-SW33JJNI.js → fleet-inspect-JEYMGCGC.js} +107 -91
- package/dist/{fleet-new-RDVJLHHH.js → fleet-new-RCKGSRDV.js} +3 -3
- package/dist/{fleet-preflight-CV2655TW.js → fleet-preflight-QRSHIIDE.js} +10 -9
- package/dist/{fleet-validate-KESZX2YH.js → fleet-validate-4PM4GDDL.js} +46 -42
- package/dist/{fleet-verify-UQPMTVE3.js → fleet-verify-NJDTHTO3.js} +105 -89
- package/dist/fleet-view-UP2BWQQY.js +117 -0
- package/dist/{init-PXEXQSBF.js → init-S3GZQ5ZF.js} +123 -123
- package/dist/{install-NKNG7KD4.js → install-3RZDDP23.js} +5 -5
- package/dist/{interop-ZG5T62U3.js → interop-YOTGXFJM.js} +25 -25
- package/dist/inventory-K2OZ36YJ.js +117 -0
- package/dist/{library-B2W4N74O.js → library-GJI6W6OK.js} +45 -44
- package/dist/{memory-YCANYS5A.js → memory-OQOXQGYD.js} +107 -93
- package/dist/{models-GERTU3YI.js → models-3IK2Y5WE.js} +63 -62
- package/dist/{monitor-CPNIUULB.js → monitor-FTJLTKCQ.js} +136 -107
- package/dist/{orchestrator-J4BSH4WQ.js → orchestrator-N47O7SFD.js} +1159 -697
- package/dist/{panes-BOHAEGYC.js → panes-7BTYH3XQ.js} +8 -8
- package/dist/{panes-NXSLDQZ2.js → panes-WPOMEMRH.js} +22 -22
- package/dist/{paths-VSUWNC22.js → paths-J3KN7UAO.js} +12 -12
- package/dist/preload-65U34NG6.js +115 -0
- package/dist/{registry-LG64LTF4.js → registry-DESGAXWK.js} +3 -3
- package/dist/{reset-TNWTB5LU.js → reset-MUVQDLNL.js} +20 -20
- package/dist/{resources-4PXNMD5G.js → resources-LM76COAO.js} +41 -40
- package/dist/{run-D6XJ34CN.js → run-3VFZQ33N.js} +162 -156
- package/dist/{share-2NWMJJEE.js → share-4JUB4BL7.js} +43 -42
- package/dist/{skills-KR7WON5G.js → skills-S36AAJHU.js} +47 -46
- package/dist/{skills-eval-O2ZNOLDS.js → skills-eval-G6T57L7M.js} +127 -107
- package/dist/{skills-inventory-ZZOUBK7O.js → skills-inventory-WLM46PJH.js} +41 -40
- package/dist/slash-commands-GBARG3Y7.js +91 -0
- package/dist/{steer-XA25PSCS.js → steer-S7D7IKPU.js} +7 -7
- package/dist/{support-7EMVWYG2.js → support-5VAEC32W.js} +14 -14
- package/dist/{targets-OMH2XCSN.js → targets-N5REUETU.js} +145 -94
- package/dist/tasks-6BVY5YZF.js +36 -0
- package/dist/{terminal-lease-C2J3JYRE.js → terminal-lease-57UEOJKS.js} +12 -11
- package/dist/tools-6OCQ6SVB.js +28 -0
- package/dist/{trace-FXMXUZUF.js → trace-JHLXWUMN.js} +18 -17
- package/dist/{tree-sitter-HGKH6LG4.js → tree-sitter-AQUUOSYM.js} +6 -6
- package/dist/{tui-primitives-K5PASC3O.js → tui-primitives-RCY2HN7G.js} +3 -3
- package/dist/{uninstall-HALS6BLF.js → uninstall-FXYMFFRT.js} +17 -17
- package/dist/{upgrade-MS72RJEP.js → upgrade-4HD5HAIV.js} +40 -39
- package/dist/{usage-NHG6MCJM.js → usage-4GWM2WWP.js} +136 -105
- package/dist/{verifiers-7AUNVXDY.js → verifiers-GSKWKWVG.js} +28 -27
- package/dist/verify-3AS3ULCY.js +30 -0
- package/dist/{version-KGEG7EPO.js → version-RFPKO6T7.js} +4 -4
- package/dist/{web-fetch-V4FKSDAV.js → web-fetch-MQN4FH3X.js} +169 -18
- package/dist/wiki-generate-7BV7XWIY.js +614 -0
- package/dist/{with-panes-BDQEWBRT.js → with-panes-OFTNAR4Y.js} +34 -20
- package/dist/worker/entry.js +99 -88
- package/dist/{workspace-ZJ6BFM3Q.js → workspace-DZ7JADBG.js} +6 -6
- package/docs/README.md +7 -6
- package/docs/architecture/acp.md +10 -0
- package/docs/architecture/architecture.md +5 -5
- package/docs/architecture/context-engine.md +44 -59
- package/docs/architecture/context-working-set.md +7 -9
- package/docs/architecture/dispatch-architecture-rationale.md +1 -1
- package/docs/architecture/evidence-and-memory.md +10 -0
- package/docs/architecture/pi-boundary.md +37 -7
- package/docs/architecture/prompt-envelope-and-tools.md +7 -7
- package/docs/architecture/session-lifecycle.md +4 -4
- package/docs/architecture/worker-dispatch-mechanics.md +4 -0
- package/docs/guide/commands-and-modes.md +49 -36
- package/docs/guide/configuration-and-targets.md +7 -2
- package/docs/guide/configuration-reference.md +13 -3
- package/docs/guide/environment-variables.md +6 -2
- package/docs/guide/fleet-dispatch.md +12 -0
- package/docs/guide/installation-and-lifecycle.md +35 -9
- package/docs/guide/proactive-memory.md +1 -1
- package/docs/guide/skills-marketplace.md +11 -3
- package/docs/guide/tool-usage.md +9 -2
- package/docs/process/development-pipeline.md +10 -10
- package/docs/process/documentation-guide.md +2 -2
- package/docs/process/eval-runner.md +15 -0
- package/docs/process/evals-internal.md +1 -1
- package/docs/process/release-cut-checklist.md +6 -6
- package/evals/README.md +4 -0
- package/evals/behavioral-corpus-grader.mjs +147 -14
- package/evals/behavioral-model-negative-control.yaml +1 -0
- package/evals/behavioral-model.yaml +266 -1
- package/evals/fixtures/docs-retrieval.json +102 -0
- package/evals/fixtures/scalar-decision.json +17 -0
- package/evals/fixtures/scout-citation-pipeline.json +55 -0
- package/evals/fixtures/source-explanation.json +74 -0
- package/evals/fixtures/tool-arguments.json +18 -0
- package/evals/fixtures/tool-surface/read.txt +4 -0
- package/evals/fixtures/tool-surface/subdir/keep.txt +1 -0
- package/evals/no-edit-memory-grader.mjs +149 -0
- package/evals/scalar-decision-grader.py +41 -0
- package/evals/scalar-decision-machinery.ts +145 -0
- package/evals/source-explanation-grader.mjs +118 -0
- package/evals/tool-surface-grader.mjs +53 -0
- package/evals/tool-surface-model.yaml +274 -0
- package/package.json +14 -14
- package/skills/README.md +6 -6
- package/skills/registry.yaml +1 -1
- package/skills/skill-marketplace.json +1 -1
- package/src/cli/bootstrap-generate.ts +6 -0
- package/src/cli/config-inspect.ts +24 -7
- package/src/cli/config-trust.ts +62 -0
- package/src/cli/config.ts +8 -0
- package/src/cli/context-map.ts +75 -14
- package/src/cli/context.ts +46 -17
- package/src/cli/eval.ts +17 -3
- package/src/cli/modes/print.ts +32 -4
- package/src/cli/run.ts +16 -14
- package/src/cli/skills-eval.ts +10 -8
- package/src/cli/steer-channel.ts +31 -18
- package/src/cli/targets.ts +83 -31
- package/src/cli/tasks.ts +10 -1
- package/src/cli/upgrade.ts +9 -6
- package/src/cli/usage.ts +24 -0
- package/src/cli/wiki-generate.ts +239 -96
- package/src/core/bash-exec.ts +43 -15
- package/src/core/bus-events.ts +15 -0
- package/src/core/config.ts +33 -14
- package/src/core/defaults.ts +5 -4
- package/src/core/file-references.ts +11 -1
- package/src/core/incomplete-installation.ts +3 -1
- package/src/core/settings-layers.ts +21 -5
- package/src/core/termination.ts +26 -9
- package/src/core/untrusted-content.ts +16 -0
- package/src/core/workspace-trust.ts +179 -0
- package/src/domains/agents/builtins/coder.md +4 -2
- package/src/domains/agents/builtins/context-bootstrap.md +3 -1
- package/src/domains/agents/builtins/documenter.md +7 -4
- package/src/domains/agents/builtins/researcher.md +1 -0
- package/src/domains/agents/builtins/scout.md +7 -1
- package/src/domains/agents/result-contract.ts +199 -26
- package/src/domains/context/bootstrap-prompt.ts +11 -9
- package/src/domains/context/bootstrap.ts +74 -39
- package/src/domains/context/clio-md.ts +88 -26
- package/src/domains/context/codewiki/build-operation.ts +121 -0
- package/src/domains/context/codewiki/build-worker-protocol.ts +37 -3
- package/src/domains/context/codewiki/build-worker.ts +3 -35
- package/src/domains/context/codewiki/coordinator.ts +36 -6
- package/src/domains/context/codewiki/indexer.ts +59 -19
- package/src/domains/context/contract.ts +6 -2
- package/src/domains/context/extension.ts +72 -10
- package/src/domains/context/fingerprint.ts +39 -34
- package/src/domains/context/index.ts +7 -1
- package/src/domains/context/prompt-context.ts +55 -14
- package/src/domains/context/refresh.ts +9 -57
- package/src/domains/context/wiki/assemble.ts +14 -10
- package/src/domains/context/wiki/evidence.ts +209 -0
- package/src/domains/context/wiki/generate.ts +201 -67
- package/src/domains/context/wiki/meta.ts +10 -2
- package/src/domains/context/wiki/plan-store.ts +70 -14
- package/src/domains/context/wiki/plan.ts +71 -14
- package/src/domains/context/wiki/prompts.ts +42 -1
- package/src/domains/context/wiki/source-content.ts +106 -0
- package/src/domains/context/wiki/staleness.ts +33 -22
- package/src/domains/context/working-set/contract.ts +8 -2
- package/src/domains/context/working-set/engine.ts +17 -4
- package/src/domains/context/working-set/fold.ts +15 -2
- package/src/domains/context/working-set/marker.ts +2 -1
- package/src/domains/context/working-set/project.ts +18 -7
- package/src/domains/context/working-set/recall.ts +82 -56
- package/src/domains/dispatch/active-route-planner.ts +6 -3
- package/src/domains/dispatch/admission-queue.ts +19 -7
- package/src/domains/dispatch/admission.ts +3 -3
- package/src/domains/dispatch/budget-envelope.ts +47 -82
- package/src/domains/dispatch/capacity-lease.ts +57 -19
- package/src/domains/dispatch/contract.ts +10 -2
- package/src/domains/dispatch/event-pump.ts +28 -7
- package/src/domains/dispatch/execution-role.ts +49 -2
- package/src/domains/dispatch/execution-scheduler.ts +2 -0
- package/src/domains/dispatch/extension.ts +190 -105
- package/src/domains/dispatch/fleet-run.ts +20 -0
- package/src/domains/dispatch/gate-role-prompts.ts +4 -2
- package/src/domains/dispatch/parallel-writers.ts +34 -0
- package/src/domains/dispatch/reservation-store.ts +8 -34
- package/src/domains/dispatch/route-approval.ts +3 -3
- package/src/domains/dispatch/route-observer.ts +4 -2
- package/src/domains/dispatch/route-quality.ts +6 -1
- package/src/domains/dispatch/types.ts +4 -3
- package/src/domains/dispatch/worker-spawn.ts +58 -21
- package/src/domains/dispatch/workspace-checkpoint.ts +57 -0
- package/src/domains/eval/compare/behavioral.ts +81 -14
- package/src/domains/eval/compare/compare.ts +15 -5
- package/src/domains/eval/compare/envelope.ts +12 -5
- package/src/domains/eval/metrics/context.ts +24 -1
- package/src/domains/eval/metrics/tracked.ts +4 -28
- package/src/domains/eval/reports/comparison.ts +9 -9
- package/src/domains/eval/runners/clio-run.ts +5 -1
- package/src/domains/eval/schema/suite.ts +2 -0
- package/src/domains/eval/schema/validate.ts +1 -0
- package/src/domains/eval/suites/run.ts +189 -13
- package/src/domains/eval/verifiers/integrity.ts +39 -0
- package/src/domains/eval/verifiers/patch.ts +58 -2
- package/src/domains/eval/workspaces/temp-copy.ts +3 -0
- package/src/domains/evidence/build.ts +4 -2
- package/src/domains/interop/registry.ts +2 -2
- package/src/domains/middleware/hooks-io.ts +45 -26
- package/src/domains/middleware/hooks.ts +6 -0
- package/src/domains/middleware/injection-screen.ts +23 -0
- package/src/domains/middleware/rules.ts +5 -1
- package/src/domains/middleware/stalled-turn.ts +18 -3
- package/src/domains/middleware/task-board-reminder.ts +4 -2
- package/src/domains/middleware/task-nudge.ts +4 -1
- package/src/domains/mux/contract.ts +34 -1
- package/src/domains/mux/dock-controller.ts +8 -1
- package/src/domains/mux/index.ts +1 -0
- package/src/domains/mux/socket-client.ts +13 -3
- package/src/domains/observability/contract.ts +2 -2
- package/src/domains/observability/projection.ts +30 -9
- package/src/domains/prompts/compiler.ts +10 -2
- package/src/domains/prompts/contract.ts +7 -4
- package/src/domains/prompts/extension.ts +28 -64
- package/src/domains/prompts/fragments/identity/clio.md +23 -0
- package/src/domains/prompts/fragments/operating/contract.md +10 -0
- package/src/domains/prompts/fragments/operating/delegation.md +5 -0
- package/src/domains/prompts/fragments/wiki/page.md +28 -15
- package/src/domains/prompts/fragments/wiki/plan.md +4 -4
- package/src/domains/prompts/preload-prefix.ts +31 -0
- package/src/domains/prompts/preload.ts +135 -61
- package/src/domains/providers/auth/backend-file.ts +15 -11
- package/src/domains/providers/auth/storage.ts +3 -5
- package/src/domains/providers/catalog.ts +18 -3
- package/src/domains/providers/runtime-resolution.ts +11 -9
- package/src/domains/providers/runtimes/cloud/openrouter.ts +2 -0
- package/src/domains/resources/skills/promotion.ts +8 -1
- package/src/domains/safety/action-classifier.ts +9 -0
- package/src/domains/safety/autonomy.ts +10 -1
- package/src/domains/safety/contract.ts +5 -1
- package/src/domains/safety/default-path-policy.ts +11 -0
- package/src/domains/safety/extension.ts +11 -2
- package/src/domains/safety/policy-engine.ts +189 -32
- package/src/domains/safety/project-policy.ts +7 -2
- package/src/domains/safety/workspace-trust.ts +43 -0
- package/src/domains/session/compaction/compact.ts +384 -21
- package/src/domains/session/compaction/cut-point.ts +42 -5
- package/src/domains/session/compaction/tokens.ts +9 -1
- package/src/domains/session/decision-board.ts +43 -33
- package/src/domains/session/entries.ts +169 -4
- package/src/domains/session/prompt-manifest.ts +47 -8
- package/src/domains/session/task-board.ts +21 -3
- package/src/domains/user-tasks/handoff.ts +16 -0
- package/src/engine/acp/adapter.ts +44 -12
- package/src/engine/acp/server.ts +1 -0
- package/src/engine/acp/transport.ts +2 -1
- package/src/engine/acp/types.ts +6 -1
- package/src/engine/antigravity/subprocess-runtime.ts +20 -4
- package/src/engine/api-registry.ts +19 -2
- package/src/engine/apis/openai-completions.ts +13 -6
- package/src/engine/apis/output-budget.ts +26 -10
- package/src/engine/claude/sdk-runtime.ts +4 -3
- package/src/engine/env-api-keys.ts +2 -1
- package/src/engine/external-subprocess.ts +14 -3
- package/src/engine/loop-guard.ts +19 -2
- package/src/engine/provider-diagnostics.ts +129 -0
- package/src/engine/provider-payload.ts +3 -1
- package/src/engine/worker-runtime.ts +13 -2
- package/src/engine/worker-tools.ts +5 -1
- package/src/entry/extension-reload.ts +1 -0
- package/src/entry/orchestrator.ts +53 -15
- package/src/interactive/chat-loop-messages.ts +12 -4
- package/src/interactive/chat-loop.ts +115 -45
- package/src/interactive/chat-renderer.ts +60 -0
- package/src/interactive/context-recall-command.ts +2 -1
- package/src/interactive/dispatch-board.ts +17 -2
- package/src/interactive/editor-submit.ts +13 -0
- package/src/interactive/interactive-application.ts +8 -2
- package/src/interactive/interactive-event-projection.ts +7 -1
- package/src/interactive/interactive-presentation.ts +15 -7
- package/src/interactive/interactive-slash-runtime.ts +2 -0
- package/src/interactive/layout.ts +2 -1
- package/src/interactive/model-session-replay.ts +2 -2
- package/src/interactive/overlay-frame.ts +1 -0
- package/src/interactive/overlay-general-openers.ts +3 -1
- package/src/interactive/overlay-session-lifecycle.ts +6 -0
- package/src/interactive/overlays/ask-user.ts +1 -0
- package/src/interactive/overlays/message-picker.ts +1 -1
- package/src/interactive/renderers/tool-execution.ts +17 -1
- package/src/interactive/renderers/worker-entry.ts +25 -10
- package/src/interactive/slash-commands.ts +9 -7
- package/src/interactive/turn-context.ts +221 -53
- package/src/interactive/turn-middleware.ts +3 -1
- package/src/interactive/turn-persistence.ts +3 -0
- package/src/interactive/turn-runtime.ts +11 -2
- package/src/interactive/turn-state.ts +10 -9
- package/src/interactive/watch-pane.ts +18 -4
- package/src/interactive/worker-stream.ts +7 -7
- package/src/tools/agent-tools.ts +6 -3
- package/src/tools/bash.ts +1 -1
- package/src/tools/builtin-tool-catalog.ts +9 -2
- package/src/tools/codewiki/code-nav.ts +4 -10
- package/src/tools/compete-judge-task.ts +71 -0
- package/src/tools/compete-worktrees.ts +34 -0
- package/src/tools/context/index.ts +32 -7
- package/src/tools/context/surface.ts +15 -4
- package/src/tools/decide.ts +1 -1
- package/src/tools/dispatch-admission.ts +12 -1
- package/src/tools/dispatch-arguments.ts +38 -1
- package/src/tools/dispatch-plan.ts +7 -7
- package/src/tools/dispatch-runner.ts +48 -32
- package/src/tools/dispatch-schema.ts +30 -23
- package/src/tools/dispatch-scout-admission.ts +10 -44
- package/src/tools/dispatch-scout.ts +2 -3
- package/src/tools/find.ts +13 -4
- package/src/tools/grep.ts +13 -1
- package/src/tools/ls.ts +7 -1
- package/src/tools/monitor.ts +26 -11
- package/src/tools/network-policy.ts +11 -24
- package/src/tools/observation.ts +39 -2
- package/src/tools/read.ts +112 -15
- package/src/tools/registry.ts +54 -17
- package/src/tools/result-shaping.ts +110 -2
- package/src/tools/tasks.ts +33 -7
- package/src/tools/verify/frontend.ts +67 -30
- package/src/tools/verify/numeric.ts +6 -1
- package/src/tools/web-fetch-network.ts +179 -0
- package/src/tools/web-fetch-surface.ts +2 -1
- package/src/tools/web-fetch.ts +15 -13
- package/src/tools/worker-evidence.ts +27 -0
- package/src/worker/spec-contract.ts +12 -8
- package/dist/builtins-WGALA46I.js +0 -22
- package/dist/chunk-2WZ546HR.js +0 -792
- package/dist/chunk-5PSMVOLM.js +0 -56
- package/dist/chunk-EL24TAU4.js +0 -1560
- package/dist/chunk-IZXGRF7P.js +0 -4048
- package/dist/chunk-JVCV3ICN.js +0 -47
- package/dist/chunk-MNJGS2IN.js +0 -33
- package/dist/chunk-O5CVSAG5.js +0 -122
- package/dist/chunk-ODGTEFFI.js +0 -50
- package/dist/chunk-OQE5J4C6.js +0 -73
- package/dist/chunk-UUVG37B4.js +0 -244
- package/dist/chunk-V6HJFQZE.js +0 -228
- package/dist/clio-QLICPCF5.js +0 -25
- package/dist/configure-VEPX4NMX.js +0 -55
- package/dist/context-clear-S4ZJCQUX.js +0 -182
- package/dist/detail-A7JAVSIG.js +0 -98
- package/dist/evidence-4F5USFKH.js +0 -208
- package/dist/fleet-view-MN2VG4MR.js +0 -101
- package/dist/inventory-C26CFDRR.js +0 -101
- package/dist/preload-P6DGH2PZ.js +0 -13
- package/dist/slash-commands-ZXPJD64J.js +0 -92
- package/dist/tasks-IPAGMEIX.js +0 -36
- package/dist/tools-EFFEAIDP.js +0 -28
- package/dist/verify-FWYGPKMR.js +0 -29
- package/dist/wiki-generate-743CIGJW.js +0 -476
|
@@ -1,21 +1,14 @@
|
|
|
1
1
|
import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
|
|
2
2
|
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
} from "./chunk-NXYCB2VD.js";
|
|
6
|
-
import {
|
|
7
|
-
canonicalizeExistingPath
|
|
8
|
-
} from "./chunk-ECH6PKUQ.js";
|
|
9
|
-
import {
|
|
10
|
-
artifactDefaultPath
|
|
11
|
-
} from "./chunk-GYV6VZOC.js";
|
|
3
|
+
classify
|
|
4
|
+
} from "./chunk-LUL5Z66S.js";
|
|
12
5
|
import {
|
|
13
6
|
ToolNames,
|
|
14
7
|
isBuiltinToolName
|
|
15
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-EHOSNVVM.js";
|
|
16
9
|
import {
|
|
17
10
|
init_esm_shims
|
|
18
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-ECBHH7LU.js";
|
|
19
12
|
|
|
20
13
|
// src/core/json-payload.ts
|
|
21
14
|
init_esm_shims();
|
|
@@ -48,199 +41,6 @@ function parseJsonObjectPayload(text) {
|
|
|
48
41
|
// src/domains/agents/spec.ts
|
|
49
42
|
init_esm_shims();
|
|
50
43
|
import { createHash } from "node:crypto";
|
|
51
|
-
|
|
52
|
-
// src/domains/safety/action-classifier.ts
|
|
53
|
-
init_esm_shims();
|
|
54
|
-
import path from "node:path";
|
|
55
|
-
var GIT_DESTRUCTIVE_PATTERNS = [
|
|
56
|
-
{ name: "git-push-force-long", re: /\bgit\s+push\s+--force\b/i },
|
|
57
|
-
{ name: "git-push-force-short", re: /\bgit\s+push\s+-f\b/i },
|
|
58
|
-
{ name: "git-reset-hard", re: /\bgit\s+reset\s+--hard\b/i },
|
|
59
|
-
{ name: "git-clean-fd", re: /\bgit\s+clean\s+-fd?\b/i },
|
|
60
|
-
{ name: "git-checkout-dot", re: /\bgit\s+checkout\s+--\s+\./i },
|
|
61
|
-
{ name: "git-branch-D", re: /\bgit\s+branch\s+-D\b/i },
|
|
62
|
-
{ name: "git-restore-source", re: /\bgit\s+restore\s+--source\b/i }
|
|
63
|
-
];
|
|
64
|
-
var SYSTEM_MODIFY_PATTERNS = [
|
|
65
|
-
{ name: "sudo-or-doas", re: /\b(sudo|doas)\b/i },
|
|
66
|
-
// allow rm -rf /tmp/... and /var/tmp/... but flag everything else rooted at /
|
|
67
|
-
{ name: "rm-rf-root", re: /\brm\s+-rf?\s+\/(?!(tmp|var\/tmp)(?:\/|\s|$))/i },
|
|
68
|
-
{ name: "apt-install", re: /\bapt(-get)?\s+(install|remove|purge)/i },
|
|
69
|
-
{ name: "brew-install", re: /\bbrew\s+(install|uninstall|reinstall)/i },
|
|
70
|
-
{ name: "npm-install-global", re: /\bnpm\s+install\s+-g\b/i },
|
|
71
|
-
{ name: "pip-install", re: /\bpip\s+install\b/i },
|
|
72
|
-
{ name: "systemctl", re: /\bsystemctl\s+/i },
|
|
73
|
-
{ name: "chmod-root", re: /\bchmod\s+[0-7]{3,4}\s+\//i },
|
|
74
|
-
{ name: "chown", re: /\bchown\s+/i }
|
|
75
|
-
];
|
|
76
|
-
var SYSTEM_WRITE_ROOT_PREFIXES = ["/etc", "/usr", "/var", "/bin", "/sbin", "/run"];
|
|
77
|
-
var SYSTEM_WRITE_EXEMPT_PREFIXES = ["/var/tmp", "/var/folders"];
|
|
78
|
-
function isUnderPrefix(abs, prefix) {
|
|
79
|
-
return abs === prefix || abs.startsWith(`${prefix}/`);
|
|
80
|
-
}
|
|
81
|
-
function baseClassify(tool) {
|
|
82
|
-
switch (tool) {
|
|
83
|
-
case ToolNames.Evidence:
|
|
84
|
-
case ToolNames.Read:
|
|
85
|
-
case ToolNames.Grep:
|
|
86
|
-
case ToolNames.Find:
|
|
87
|
-
case ToolNames.Ls:
|
|
88
|
-
case ToolNames.WebFetch:
|
|
89
|
-
case ToolNames.Git:
|
|
90
|
-
case ToolNames.CodeNav:
|
|
91
|
-
case ToolNames.Context:
|
|
92
|
-
case ToolNames.Monitor:
|
|
93
|
-
case ToolNames.AskUser:
|
|
94
|
-
case ToolNames.CredentialPresent:
|
|
95
|
-
// tasks pick mutates only Clio-owned session-ledger and project-local
|
|
96
|
-
// .clio-coder runtime state, never source-workspace files. By intentional
|
|
97
|
-
// policy it stays read class and ungated; the tool itself still requires
|
|
98
|
-
// a durable operator task id before it can mutate either store.
|
|
99
|
-
case ToolNames.Tasks:
|
|
100
|
-
// ledger posts a typed contribution to a coordination board and reads a
|
|
101
|
-
// local mirror. Neither touches the workspace, so it is never gated
|
|
102
|
-
// behind a confirmation.
|
|
103
|
-
case ToolNames.Ledger:
|
|
104
|
-
// panes focuses, opens, and closes terminal panes Clio itself created, in
|
|
105
|
-
// a pane host that lives outside the workspace. Nothing it does writes a
|
|
106
|
-
// file, runs a model-supplied command (its schema exposes presets only),
|
|
107
|
-
// or survives the session, so it is reversible, local, and never gated
|
|
108
|
-
// behind a confirmation.
|
|
109
|
-
case ToolNames.Panes:
|
|
110
|
-
// limitation appends a typed receipt to the session ledger and touches
|
|
111
|
-
// nothing else, so it is never gated behind a confirmation.
|
|
112
|
-
case ToolNames.Limitation:
|
|
113
|
-
// decide appends the model's own design decision to the session
|
|
114
|
-
// decision board. One ledger append, no workspace effect, never gated.
|
|
115
|
-
case ToolNames.Decide:
|
|
116
|
-
return "read";
|
|
117
|
-
case ToolNames.Write:
|
|
118
|
-
case ToolNames.Edit:
|
|
119
|
-
case ToolNames.Artifact:
|
|
120
|
-
return "write";
|
|
121
|
-
case ToolNames.Bash:
|
|
122
|
-
case ToolNames.Verify:
|
|
123
|
-
return "execute";
|
|
124
|
-
case ToolNames.Dispatch:
|
|
125
|
-
case ToolNames.Steer:
|
|
126
|
-
return "dispatch";
|
|
127
|
-
default:
|
|
128
|
-
return null;
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
function scanStringOf(args) {
|
|
132
|
-
if (!args) return "";
|
|
133
|
-
const parts = [];
|
|
134
|
-
for (const value of Object.values(args)) {
|
|
135
|
-
if (value == null) continue;
|
|
136
|
-
if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") {
|
|
137
|
-
parts.push(String(value));
|
|
138
|
-
} else {
|
|
139
|
-
try {
|
|
140
|
-
parts.push(JSON.stringify(value));
|
|
141
|
-
} catch {
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
return parts.join(" ");
|
|
146
|
-
}
|
|
147
|
-
function matchFirst(patterns, haystack) {
|
|
148
|
-
for (const p of patterns) {
|
|
149
|
-
if (p.re.test(haystack)) return p;
|
|
150
|
-
}
|
|
151
|
-
return null;
|
|
152
|
-
}
|
|
153
|
-
function resolveCandidate(p, baseCwd) {
|
|
154
|
-
if (p.startsWith("~")) return p;
|
|
155
|
-
const base = canonicalizeExistingPath(path.resolve(baseCwd ?? process.cwd()));
|
|
156
|
-
const resolved = path.isAbsolute(p) ? path.resolve(p) : path.resolve(base, p);
|
|
157
|
-
return canonicalizeExistingPath(resolved);
|
|
158
|
-
}
|
|
159
|
-
function isInsideCwd(abs) {
|
|
160
|
-
const cwd = canonicalizeExistingPath(path.resolve(process.cwd()));
|
|
161
|
-
const candidate = canonicalizeExistingPath(abs);
|
|
162
|
-
const rel = path.relative(cwd, candidate);
|
|
163
|
-
return rel === "" || !rel.startsWith("..") && !path.isAbsolute(rel);
|
|
164
|
-
}
|
|
165
|
-
function writePathClass(pathArg, baseCwd) {
|
|
166
|
-
if (pathArg.startsWith("~")) {
|
|
167
|
-
return { cls: "system_modify", reason: `write-path-home-escape: ${pathArg}` };
|
|
168
|
-
}
|
|
169
|
-
const abs = resolveCandidate(pathArg, baseCwd);
|
|
170
|
-
const exempt = SYSTEM_WRITE_EXEMPT_PREFIXES.some((prefix) => isUnderPrefix(abs, prefix));
|
|
171
|
-
if (!exempt) {
|
|
172
|
-
for (const prefix of SYSTEM_WRITE_ROOT_PREFIXES) {
|
|
173
|
-
if (isUnderPrefix(abs, prefix)) {
|
|
174
|
-
return { cls: "system_modify", reason: `write-path-system-root: ${prefix}` };
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
if (!isInsideCwd(abs)) {
|
|
179
|
-
return { cls: "system_modify", reason: `write-path-outside-cwd: ${abs}` };
|
|
180
|
-
}
|
|
181
|
-
return { cls: "write" };
|
|
182
|
-
}
|
|
183
|
-
function extractWritePath(tool, args) {
|
|
184
|
-
const candidate = args?.path ?? args?.file_path ?? args?.filePath;
|
|
185
|
-
if (typeof candidate === "string" && candidate.length > 0) return candidate;
|
|
186
|
-
return tool === ToolNames.Artifact ? artifactDefaultPath(args?.kind) : null;
|
|
187
|
-
}
|
|
188
|
-
function classify(call) {
|
|
189
|
-
const base = baseClassify(call.tool);
|
|
190
|
-
if (base === null) {
|
|
191
|
-
return { actionClass: "unknown", reasons: [`unknown tool: ${call.tool}`] };
|
|
192
|
-
}
|
|
193
|
-
const reasons = [];
|
|
194
|
-
if (call.tool === ToolNames.Bash) {
|
|
195
|
-
const scan = scanStringOf(call.args);
|
|
196
|
-
const gitHit = matchFirst(GIT_DESTRUCTIVE_PATTERNS, scan);
|
|
197
|
-
if (gitHit) {
|
|
198
|
-
return { actionClass: "git_destructive", reasons: [`pattern:${gitHit.name}`] };
|
|
199
|
-
}
|
|
200
|
-
const sysHit = matchFirst(SYSTEM_MODIFY_PATTERNS, scan);
|
|
201
|
-
if (sysHit) {
|
|
202
|
-
return { actionClass: "system_modify", reasons: [`pattern:${sysHit.name}`] };
|
|
203
|
-
}
|
|
204
|
-
const command = typeof call.args?.command === "string" ? call.args.command : null;
|
|
205
|
-
const argCwd = typeof call.args?.cwd === "string" && call.args.cwd.length > 0 ? call.args.cwd : void 0;
|
|
206
|
-
if (command !== null) {
|
|
207
|
-
const targetReasons = [];
|
|
208
|
-
for (const target of extractCommandWriteTargets(command)) {
|
|
209
|
-
const decision = writePathClass(target, argCwd);
|
|
210
|
-
if (decision.cls === "system_modify") {
|
|
211
|
-
targetReasons.push(decision.reason ?? `bash-write-target: ${target}`);
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
for (const target of extractCommandCdTargets(command)) {
|
|
215
|
-
if (target.startsWith("~")) {
|
|
216
|
-
targetReasons.push(`bash-cd-home-escape: ${target}`);
|
|
217
|
-
continue;
|
|
218
|
-
}
|
|
219
|
-
const abs = resolveCandidate(target, argCwd);
|
|
220
|
-
if (!isInsideCwd(abs)) {
|
|
221
|
-
targetReasons.push(`bash-cd-outside-workspace: ${abs}`);
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
if (targetReasons.length > 0) {
|
|
225
|
-
return { actionClass: "system_modify", reasons: targetReasons };
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
return { actionClass: "execute", reasons };
|
|
229
|
-
}
|
|
230
|
-
if (base === "write") {
|
|
231
|
-
const pathArg = extractWritePath(call.tool, call.args);
|
|
232
|
-
if (pathArg) {
|
|
233
|
-
const decision = writePathClass(pathArg);
|
|
234
|
-
if (decision.cls === "system_modify") {
|
|
235
|
-
return { actionClass: "system_modify", reasons: decision.reason ? [decision.reason] : [] };
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
return { actionClass: "write", reasons };
|
|
239
|
-
}
|
|
240
|
-
return { actionClass: base, reasons };
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
// src/domains/agents/spec.ts
|
|
244
44
|
var AGENT_AUTOMATION_AUTHORITIES = ["read-only", "verification", "artifact-write", "workspace-edit"];
|
|
245
45
|
var AGENT_PRODUCTS = ["orientation"];
|
|
246
46
|
var AGENT_CATEGORIES = [
|
|
@@ -476,7 +276,7 @@ ${errors.map((error) => `- ${error}`).join("\n")}`);
|
|
|
476
276
|
// src/domains/agents/result-contract.ts
|
|
477
277
|
init_esm_shims();
|
|
478
278
|
import { createHash as createHash2 } from "node:crypto";
|
|
479
|
-
import
|
|
279
|
+
import path from "node:path";
|
|
480
280
|
function parseDelegationPlanResult(output) {
|
|
481
281
|
const parsed = parseJson(output);
|
|
482
282
|
if (!parsed.ok || !hasOnlyKeys(parsed.value, ["tasks"]) || !Array.isArray(parsed.value.tasks) || parsed.value.tasks.length === 0)
|
|
@@ -799,17 +599,17 @@ function parseChecks(value) {
|
|
|
799
599
|
return checks;
|
|
800
600
|
}
|
|
801
601
|
function citationWithinWorkspace(cwd, citedPath) {
|
|
802
|
-
const relative =
|
|
602
|
+
const relative = path.relative(cwd, citedPath);
|
|
803
603
|
if (relative === "") return true;
|
|
804
|
-
return !(relative === ".." || relative.startsWith(`..${
|
|
604
|
+
return !(relative === ".." || relative.startsWith(`..${path.sep}`) || path.isAbsolute(relative));
|
|
805
605
|
}
|
|
806
606
|
function directoryCitationDigest(cwd, citedPath) {
|
|
807
|
-
const relative =
|
|
607
|
+
const relative = path.relative(cwd, citedPath);
|
|
808
608
|
return createHash2("sha256").update(`directory:${relative === "" ? "." : relative}`, "utf8").digest("hex");
|
|
809
609
|
}
|
|
810
610
|
function validateScoutCitation(input, citation) {
|
|
811
|
-
const cwd =
|
|
812
|
-
const citedPath =
|
|
611
|
+
const cwd = path.resolve(input.cwd);
|
|
612
|
+
const citedPath = path.resolve(cwd, citation.path);
|
|
813
613
|
if (!citationWithinWorkspace(cwd, citedPath)) {
|
|
814
614
|
return { ok: false, reason: `Scout citation path escapes the workspace: ${citation.path}` };
|
|
815
615
|
}
|
|
@@ -974,6 +774,27 @@ function validateCodeReport(contract, output) {
|
|
|
974
774
|
return success(contract, "unmeasured", value);
|
|
975
775
|
}
|
|
976
776
|
var RESULT_COMMIT_MESSAGE_MAX_BYTES = 1e3;
|
|
777
|
+
var RESULT_SUMMARY_DEFAULT_MAX_BYTES = 16384;
|
|
778
|
+
var RESULT_SUMMARY_MAX_BYTES_CEILING = 32768;
|
|
779
|
+
var RESULT_OUTPUT_ENVELOPE_HEADROOM_BYTES = 4096;
|
|
780
|
+
function resultSummaryMaxBytes(contract) {
|
|
781
|
+
if (contract.kind !== "mutation-report") return RESULT_COMMIT_MESSAGE_MAX_BYTES;
|
|
782
|
+
return contract.maxSummaryBytes ?? RESULT_SUMMARY_DEFAULT_MAX_BYTES;
|
|
783
|
+
}
|
|
784
|
+
function parseResultSummaryMaxBytes(value, label) {
|
|
785
|
+
if (typeof value !== "number" || !Number.isSafeInteger(value) || value < 1 || value > RESULT_SUMMARY_MAX_BYTES_CEILING) {
|
|
786
|
+
throw new Error(`${label} must be an integer between 1 and ${RESULT_SUMMARY_MAX_BYTES_CEILING}`);
|
|
787
|
+
}
|
|
788
|
+
return value;
|
|
789
|
+
}
|
|
790
|
+
function withResultSummaryAllowance(contract, maxSummaryBytes) {
|
|
791
|
+
if (contract.kind !== "mutation-report") return contract;
|
|
792
|
+
return { kind: "mutation-report", maxSummaryBytes: parseResultSummaryMaxBytes(maxSummaryBytes, "maxSummaryBytes") };
|
|
793
|
+
}
|
|
794
|
+
function resultContractOutputBytes(contract) {
|
|
795
|
+
if (contract === null || contract === void 0 || contract.kind !== "mutation-report") return null;
|
|
796
|
+
return 2 * resultSummaryMaxBytes(contract) + 2 * RESULT_COMMIT_MESSAGE_MAX_BYTES + RESULT_OUTPUT_ENVELOPE_HEADROOM_BYTES;
|
|
797
|
+
}
|
|
977
798
|
var AUTHORSHIP_FIELDS = ["commitMessage", "summary"];
|
|
978
799
|
function hasControlCharacters(value) {
|
|
979
800
|
for (const character of value) {
|
|
@@ -986,15 +807,15 @@ function hasControlCharacters(value) {
|
|
|
986
807
|
function normalizeAuthored(value) {
|
|
987
808
|
return value.replace(/\r\n/gu, "\n").replace(/\r/gu, "\n").trim();
|
|
988
809
|
}
|
|
989
|
-
function validateAuthorship(value) {
|
|
810
|
+
function validateAuthorship(value, summaryMaxBytes) {
|
|
990
811
|
for (const field of AUTHORSHIP_FIELDS) {
|
|
812
|
+
const maxBytes = field === "summary" ? summaryMaxBytes : RESULT_COMMIT_MESSAGE_MAX_BYTES;
|
|
991
813
|
const raw = value[field];
|
|
992
814
|
if (raw === void 0 || raw === null) continue;
|
|
993
815
|
if (typeof raw !== "string") return `${field} must be a string when present`;
|
|
994
816
|
if (raw.trim().length === 0) continue;
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
}
|
|
817
|
+
const bytes = Buffer.byteLength(raw, "utf8");
|
|
818
|
+
if (bytes > maxBytes) return `${field} must be at most ${maxBytes} UTF-8 bytes (${bytes} given)`;
|
|
998
819
|
if (hasControlCharacters(raw)) return `${field} must not contain control characters`;
|
|
999
820
|
}
|
|
1000
821
|
return null;
|
|
@@ -1003,7 +824,7 @@ function resultContractAuthorship(contract, output) {
|
|
|
1003
824
|
const empty = { commitMessage: null, summary: null };
|
|
1004
825
|
if (contract.kind !== "mutation-report" && contract.kind !== "architect-plan") return empty;
|
|
1005
826
|
const parsed = parseJson(output);
|
|
1006
|
-
if (!parsed.ok || validateAuthorship(parsed.value) !== null) return empty;
|
|
827
|
+
if (!parsed.ok || validateAuthorship(parsed.value, resultSummaryMaxBytes(contract)) !== null) return empty;
|
|
1007
828
|
const read = (field) => {
|
|
1008
829
|
const raw = parsed.value[field];
|
|
1009
830
|
if (typeof raw !== "string") return null;
|
|
@@ -1148,7 +969,7 @@ function validateWorldKnowledge(contract, output, externalSourcesAllowed) {
|
|
|
1148
969
|
}
|
|
1149
970
|
function describeWriteSet(effects, cwd) {
|
|
1150
971
|
if (effects.mutatedPaths.size === 0) return "this run wrote nothing";
|
|
1151
|
-
const written = [...effects.mutatedPaths].map((target) =>
|
|
972
|
+
const written = [...effects.mutatedPaths].map((target) => path.relative(cwd, target) || target).sort().slice(0, MUTATION_WRITE_SET_REASON_LIMIT);
|
|
1152
973
|
const more = effects.mutatedPaths.size - written.length;
|
|
1153
974
|
return `this run wrote ${written.join(", ")}${more > 0 ? ` (+${more} more)` : ""}`;
|
|
1154
975
|
}
|
|
@@ -1166,23 +987,31 @@ function mutationValidationsReason(value) {
|
|
|
1166
987
|
return `Mutation result must carry typed validation results: every validations entry is shaped like ${MUTATION_VALIDATION_EXAMPLE}, with a string name, a boolean passed, a string evidence, and no other keys.`;
|
|
1167
988
|
}
|
|
1168
989
|
function validateMutation(contract, input) {
|
|
990
|
+
if (input.outputTruncated === true && input.output !== null) {
|
|
991
|
+
const bound = resultContractOutputBytes(contract) ?? Buffer.byteLength(input.output, "utf8");
|
|
992
|
+
return failure(
|
|
993
|
+
contract,
|
|
994
|
+
"unmeasured",
|
|
995
|
+
`result exceeded the sealed output bound of ${bound} bytes and was truncated; keep summary within ${resultSummaryMaxBytes(contract)} UTF-8 bytes or state the limitation`
|
|
996
|
+
);
|
|
997
|
+
}
|
|
1169
998
|
const parsed = parseJson(input.output);
|
|
1170
999
|
if (!parsed.ok) return failure(contract, "unmeasured", parsed.reason);
|
|
1171
1000
|
const value = parsed.value;
|
|
1172
1001
|
if (!hasOnlyKeys(value, ["mutatedPaths", "validations", "commitMessage", "summary"]) || !Array.isArray(value.mutatedPaths) || value.mutatedPaths.some((entry) => !string(entry))) {
|
|
1173
1002
|
return failure(contract, "unmeasured", "Mutation result must carry mutatedPaths and validations");
|
|
1174
1003
|
}
|
|
1175
|
-
const authorship = validateAuthorship(value);
|
|
1004
|
+
const authorship = validateAuthorship(value, resultSummaryMaxBytes(contract));
|
|
1176
1005
|
if (authorship !== null) return failure(contract, "unmeasured", authorship);
|
|
1177
1006
|
const validations = parseChecks(value.validations);
|
|
1178
1007
|
if (validations === null) return failure(contract, "unmeasured", mutationValidationsReason(value.validations));
|
|
1179
1008
|
const reportedFailure = !validations.every((check) => check.passed);
|
|
1180
1009
|
const effects = input.observedRunEffects;
|
|
1181
1010
|
if (effects === void 0) return success(contract, reportedFailure ? "fail" : "pass", value);
|
|
1182
|
-
const cwd =
|
|
1011
|
+
const cwd = path.resolve(input.cwd);
|
|
1183
1012
|
let unverifiedMutation = false;
|
|
1184
1013
|
for (const reported of value.mutatedPaths) {
|
|
1185
|
-
const target =
|
|
1014
|
+
const target = path.resolve(cwd, reported);
|
|
1186
1015
|
if (effects.mutatedPaths.has(target)) continue;
|
|
1187
1016
|
if (effects.failedMutationPaths.has(target)) {
|
|
1188
1017
|
return failure(
|
|
@@ -1221,7 +1050,7 @@ function validateProvenance(contract, output) {
|
|
|
1221
1050
|
return success(contract, "unmeasured", value);
|
|
1222
1051
|
}
|
|
1223
1052
|
function validateArchitect(contract, input) {
|
|
1224
|
-
const artifactPath =
|
|
1053
|
+
const artifactPath = path.resolve(input.cwd, contract.path);
|
|
1225
1054
|
const content = input.filesystem.readFile(artifactPath);
|
|
1226
1055
|
if (content === null || content.trim().length === 0) {
|
|
1227
1056
|
return failure(contract, "unmeasured", `required plan artifact is missing or empty: ${contract.path}`);
|
|
@@ -1285,8 +1114,22 @@ function validateResultContract(input) {
|
|
|
1285
1114
|
return validateOracle(input.contract, input.output);
|
|
1286
1115
|
case "external-delegation":
|
|
1287
1116
|
return success(input.contract, "unmeasured", { external: true });
|
|
1288
|
-
case "artifact-report":
|
|
1117
|
+
case "artifact-report": {
|
|
1118
|
+
if (input.contract.path !== void 0) {
|
|
1119
|
+
const content = input.filesystem.readFile(path.resolve(input.cwd, input.contract.path));
|
|
1120
|
+
if (content === null) {
|
|
1121
|
+
return failure(
|
|
1122
|
+
input.contract,
|
|
1123
|
+
"unmeasured",
|
|
1124
|
+
`Required artifact is missing or unreadable: ${JSON.stringify(input.contract.path)}`
|
|
1125
|
+
);
|
|
1126
|
+
}
|
|
1127
|
+
if (content.trim().length === 0) {
|
|
1128
|
+
return failure(input.contract, "unmeasured", `Required artifact is empty: ${JSON.stringify(input.contract.path)}`);
|
|
1129
|
+
}
|
|
1130
|
+
}
|
|
1289
1131
|
return success(input.contract, "unmeasured", { artifact: true });
|
|
1132
|
+
}
|
|
1290
1133
|
case "context-handbook":
|
|
1291
1134
|
return validateContextHandbook(input.contract, input.output);
|
|
1292
1135
|
case "code-report":
|
|
@@ -1312,7 +1155,8 @@ function validateRecipeResult(input) {
|
|
|
1312
1155
|
cwd: input.cwd,
|
|
1313
1156
|
networkAllowed: input.networkAllowed,
|
|
1314
1157
|
filesystem: input.filesystem,
|
|
1315
|
-
...input.observedRunEffects !== void 0 ? { observedRunEffects: input.observedRunEffects } : {}
|
|
1158
|
+
...input.observedRunEffects !== void 0 ? { observedRunEffects: input.observedRunEffects } : {},
|
|
1159
|
+
...input.outputTruncated !== void 0 ? { outputTruncated: input.outputTruncated } : {}
|
|
1316
1160
|
});
|
|
1317
1161
|
return {
|
|
1318
1162
|
applicable: true,
|
|
@@ -1346,7 +1190,7 @@ function resultContractShape(contract) {
|
|
|
1346
1190
|
case "world-knowledge-report":
|
|
1347
1191
|
return '{"discovery":"performed|caller-supplied-only|unavailable","facts":[{"claim":"...","evidence":"...","sources":["URL or document id"]}],"synthesis":["comparison or advisory conclusion"],"uncertainties":["..."],"followUpVerification":["..."]}';
|
|
1348
1192
|
case "mutation-report":
|
|
1349
|
-
return
|
|
1193
|
+
return `{"mutatedPaths":["src/file.ts"],"validations":[{"name":"npm test","passed":true,"evidence":"exit 0"}],"commitMessage":"optional: the commit message for this change","summary":"the requested explanation or deliverable, or a specific limitation; otherwise optional"}. summary allows at most ${resultSummaryMaxBytes(contract)} UTF-8 bytes and commitMessage at most ${RESULT_COMMIT_MESSAGE_MAX_BYTES} UTF-8 bytes. Preserve the requested explanation and citations in summary when repairing the report; if they cannot fit or be grounded, state that specific limitation. Report only actual mutations and checks; a read-only task has mutatedPaths:[] and names the source read in validations, never a command that did not run`;
|
|
1350
1194
|
case "provenance-report":
|
|
1351
1195
|
return '{"confirmedFacts":["..."],"missingEvidence":["..."],"nextInspections":["..."]}';
|
|
1352
1196
|
case "delegation-plan":
|
|
@@ -1356,7 +1200,7 @@ function resultContractShape(contract) {
|
|
|
1356
1200
|
case "external-delegation":
|
|
1357
1201
|
return "any final text";
|
|
1358
1202
|
case "artifact-report":
|
|
1359
|
-
return "any final text; the artifact you wrote at the location the task named is the result";
|
|
1203
|
+
return contract.path === void 0 ? "any final text; the artifact you wrote at the location the task named is the result" : `any final text; the required artifact at ${JSON.stringify(contract.path)} must be readable and non-empty on disk`;
|
|
1360
1204
|
case "context-handbook":
|
|
1361
1205
|
return '{"projectName":"string","identity":"one sentence","conventions":[],"invariants":[],"sections":[{"title":"Architecture","body":"markdown that cites `real/path.ts` tokens"}]}';
|
|
1362
1206
|
case "code-report":
|
|
@@ -1365,20 +1209,32 @@ function resultContractShape(contract) {
|
|
|
1365
1209
|
}
|
|
1366
1210
|
function resultContractRepairMessage(input) {
|
|
1367
1211
|
const last = input.attempt >= RESULT_CONTRACT_REPAIR_LIMIT;
|
|
1212
|
+
const boundArtifact = input.contract.kind === "artifact-report" && input.contract.path !== void 0;
|
|
1368
1213
|
const lines = [
|
|
1369
1214
|
last ? "FINAL RESULT REQUIRED IN THIS RESPONSE. Your previous response still did not satisfy this run's result contract." : "Your previous response did not satisfy this run's result contract.",
|
|
1370
1215
|
`Validator reason: ${input.reason}`,
|
|
1371
1216
|
input.toolsAvailable === true ? "You may use the admitted tools to repair this validator failure, then emit the required terminal result." : "Tool use is over. Answer from the evidence you already gathered.",
|
|
1372
|
-
|
|
1373
|
-
|
|
1217
|
+
...boundArtifact ? [
|
|
1218
|
+
`Required result: ${resultContractShape(input.contract)}`,
|
|
1219
|
+
input.toolsAvailable === true ? "Repair the required artifact on disk, then give a brief final status. Literal tool-call markup in final text does not write a file." : "State the limitation in a brief final status; the required artifact remains unsatisfied."
|
|
1220
|
+
] : [
|
|
1221
|
+
`Emit exactly this shape and nothing else: ${resultContractShape(input.contract)}`,
|
|
1222
|
+
"Do not add prose, code fences, or commentary around it. Do not describe work you intend to do next."
|
|
1223
|
+
]
|
|
1374
1224
|
];
|
|
1375
1225
|
if (input.anchors.length > 0) {
|
|
1376
1226
|
lines.push(
|
|
1377
1227
|
"",
|
|
1378
|
-
"
|
|
1228
|
+
"Source ranges you read successfully in this run (path:start-end, inclusive):",
|
|
1379
1229
|
...input.anchors.slice(-RESULT_CONTRACT_ANCHOR_LIMIT).map((anchor) => `- ${anchor}`)
|
|
1380
1230
|
);
|
|
1381
1231
|
}
|
|
1232
|
+
if (input.contract.kind === "scout-report") {
|
|
1233
|
+
lines.push(
|
|
1234
|
+
"For each finding, use the exact source line that supports its claim inside a listed read range. Range endpoints are not suggested citations.",
|
|
1235
|
+
"If a finding's supporting line cannot be confirmed from the source already returned, remove that finding and keep the confirmed findings. Never shift a rejected citation into range just to pass validation."
|
|
1236
|
+
);
|
|
1237
|
+
}
|
|
1382
1238
|
return lines.join("\n");
|
|
1383
1239
|
}
|
|
1384
1240
|
var RESULT_CONTRACT_REPAIR_TOOL = "result_contract";
|
|
@@ -1427,7 +1283,7 @@ var RECIPE_DECLARABLE_KINDS = [
|
|
|
1427
1283
|
"delegation-plan"
|
|
1428
1284
|
];
|
|
1429
1285
|
var COORDINATOR_AUTHORED_KINDS = ["council-ballot"];
|
|
1430
|
-
function parseContract(value, sourcePath, kinds) {
|
|
1286
|
+
function parseContract(value, sourcePath, kinds, callerBoundArtifacts = false) {
|
|
1431
1287
|
if (value === null || typeof value !== "object" || Array.isArray(value)) {
|
|
1432
1288
|
throw new Error(`agent recipe: ${sourcePath}: resultContract must be an object`);
|
|
1433
1289
|
}
|
|
@@ -1439,11 +1295,38 @@ function parseContract(value, sourcePath, kinds) {
|
|
|
1439
1295
|
if (!only("kind", "path") || !string(record.path)) {
|
|
1440
1296
|
throw new Error(`agent recipe: ${sourcePath}: architect-plan requires only non-empty path`);
|
|
1441
1297
|
}
|
|
1442
|
-
if (
|
|
1298
|
+
if (path.isAbsolute(record.path) || record.path.split(/[\\/]/u).includes("..")) {
|
|
1443
1299
|
throw new Error(`agent recipe: ${sourcePath}: architect-plan path must be workspace-relative`);
|
|
1444
1300
|
}
|
|
1445
1301
|
return { kind: "architect-plan", path: record.path };
|
|
1446
1302
|
}
|
|
1303
|
+
if (record.kind === "artifact-report" && callerBoundArtifacts) {
|
|
1304
|
+
if (!only("kind", "path")) {
|
|
1305
|
+
throw new Error(`agent recipe: ${sourcePath}: artifact-report admits only kind and path`);
|
|
1306
|
+
}
|
|
1307
|
+
if (record.path === void 0) return { kind: "artifact-report" };
|
|
1308
|
+
if (!string(record.path) || record.path.includes("\0")) {
|
|
1309
|
+
throw new Error(`agent recipe: ${sourcePath}: artifact-report requires a non-empty path without NUL`);
|
|
1310
|
+
}
|
|
1311
|
+
if (path.posix.isAbsolute(record.path) || path.win32.isAbsolute(record.path) || /^[a-z]:/iu.test(record.path) || record.path.split(/[\\/]/u).includes("..")) {
|
|
1312
|
+
throw new Error(`agent recipe: ${sourcePath}: artifact-report path must be workspace-relative`);
|
|
1313
|
+
}
|
|
1314
|
+
return { kind: "artifact-report", path: record.path };
|
|
1315
|
+
}
|
|
1316
|
+
if (record.kind === "mutation-report") {
|
|
1317
|
+
if (!only("kind", "maxSummaryBytes")) {
|
|
1318
|
+
throw new Error(`agent recipe: ${sourcePath}: mutation-report admits only kind and maxSummaryBytes`);
|
|
1319
|
+
}
|
|
1320
|
+
if (record.maxSummaryBytes === void 0) return { kind: "mutation-report" };
|
|
1321
|
+
try {
|
|
1322
|
+
return {
|
|
1323
|
+
kind: "mutation-report",
|
|
1324
|
+
maxSummaryBytes: parseResultSummaryMaxBytes(record.maxSummaryBytes, "maxSummaryBytes")
|
|
1325
|
+
};
|
|
1326
|
+
} catch (error) {
|
|
1327
|
+
throw new Error(`agent recipe: ${sourcePath}: ${error instanceof Error ? error.message : String(error)}`);
|
|
1328
|
+
}
|
|
1329
|
+
}
|
|
1447
1330
|
if (!kinds.includes(record.kind) || !only("kind")) {
|
|
1448
1331
|
throw new Error(`agent recipe: ${sourcePath}: resultContract.kind is unsupported or has unknown keys`);
|
|
1449
1332
|
}
|
|
@@ -1453,12 +1336,11 @@ function parseResultContract(value, sourcePath) {
|
|
|
1453
1336
|
return parseContract(value, sourcePath, RECIPE_DECLARABLE_KINDS);
|
|
1454
1337
|
}
|
|
1455
1338
|
function parseWorkerResultContract(value, sourcePath) {
|
|
1456
|
-
return parseContract(value, sourcePath, [...RECIPE_DECLARABLE_KINDS, ...COORDINATOR_AUTHORED_KINDS]);
|
|
1339
|
+
return parseContract(value, sourcePath, [...RECIPE_DECLARABLE_KINDS, ...COORDINATOR_AUTHORED_KINDS], true);
|
|
1457
1340
|
}
|
|
1458
1341
|
|
|
1459
1342
|
export {
|
|
1460
1343
|
parseJsonObjectPayload,
|
|
1461
|
-
classify,
|
|
1462
1344
|
AGENT_AUTOMATION_AUTHORITIES,
|
|
1463
1345
|
isAgentCategory,
|
|
1464
1346
|
isAgentCapabilityClass,
|
|
@@ -1478,6 +1360,10 @@ export {
|
|
|
1478
1360
|
resultContractSourceId,
|
|
1479
1361
|
parseVerifierResult,
|
|
1480
1362
|
parseOracleResult,
|
|
1363
|
+
RESULT_SUMMARY_MAX_BYTES_CEILING,
|
|
1364
|
+
parseResultSummaryMaxBytes,
|
|
1365
|
+
withResultSummaryAllowance,
|
|
1366
|
+
resultContractOutputBytes,
|
|
1481
1367
|
resultContractAuthorship,
|
|
1482
1368
|
parseScoutResult,
|
|
1483
1369
|
validateResultContract,
|
|
@@ -1488,4 +1374,4 @@ export {
|
|
|
1488
1374
|
parseResultContract,
|
|
1489
1375
|
parseWorkerResultContract
|
|
1490
1376
|
};
|
|
1491
|
-
//# sourceMappingURL=chunk-
|
|
1377
|
+
//# sourceMappingURL=chunk-OQM5IVJY.js.map
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
|
|
2
2
|
import {
|
|
3
3
|
atomicWrite
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-FQOOGXBH.js";
|
|
5
5
|
import {
|
|
6
6
|
clioStateDir
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-CTTI7G3T.js";
|
|
8
8
|
import {
|
|
9
9
|
init_esm_shims
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-ECBHH7LU.js";
|
|
11
11
|
|
|
12
12
|
// src/domains/dispatch/code-step-store.ts
|
|
13
13
|
init_esm_shims();
|
|
@@ -44,4 +44,4 @@ export {
|
|
|
44
44
|
writeCodeStepRecord,
|
|
45
45
|
readCodeStepRecords
|
|
46
46
|
};
|
|
47
|
-
//# sourceMappingURL=chunk-
|
|
47
|
+
//# sourceMappingURL=chunk-P5SC4DLJ.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
|
|
2
2
|
import {
|
|
3
3
|
init_esm_shims
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-ECBHH7LU.js";
|
|
5
5
|
|
|
6
6
|
// src/domains/context/wiki/plan.ts
|
|
7
7
|
init_esm_shims();
|
|
@@ -60,12 +60,17 @@ function overviewPage(source) {
|
|
|
60
60
|
return {
|
|
61
61
|
path: "architecture.md",
|
|
62
62
|
title: "Architecture",
|
|
63
|
-
intent: "Explain what this repository is
|
|
63
|
+
intent: "Explain what this repository is and its top-level composition; describe relationships, boundaries, and request or command flow where the inspected source establishes them.",
|
|
64
64
|
sources: rankedSources(entries.length > 0 ? entries : source),
|
|
65
65
|
status: "pending",
|
|
66
66
|
attempts: 0
|
|
67
67
|
};
|
|
68
68
|
}
|
|
69
|
+
function intentForScope(files, areaDepth) {
|
|
70
|
+
const lines = files.reduce((total, file) => total + Math.max(0, file.loc), 0);
|
|
71
|
+
const scopes = [...new Set(files.map((file) => areaForPath(file.path, areaDepth)))];
|
|
72
|
+
return `Assigned scope (${files.length} indexed files, ${lines} lines): document responsibilities and key entry points/symbols; explain lifecycle rules, callers, dependencies, and specific test cases only where inspected source or tests establish them. Anchors are starting points, not the full assignment. Assigned areas: ` + scopes.join(", ") + ".";
|
|
73
|
+
}
|
|
69
74
|
function buildCandidatePlan(codewiki, depth) {
|
|
70
75
|
const source = codewiki.files.filter((file) => file.lang !== "config");
|
|
71
76
|
const totalLines = source.reduce((total, file) => total + Math.max(0, file.loc), 0);
|
|
@@ -83,21 +88,38 @@ function buildCandidatePlan(codewiki, depth) {
|
|
|
83
88
|
if (host === void 0) continue;
|
|
84
89
|
extras.set(host, [...extras.get(host) ?? [], ...area.files]);
|
|
85
90
|
}
|
|
91
|
+
const overview = overviewPage(source);
|
|
92
|
+
const [onlyArea] = selected;
|
|
93
|
+
if (depth === "simple" && selected.length === 1 && onlyArea) {
|
|
94
|
+
const files = [...onlyArea.files, ...extras.get(onlyArea.key) ?? []];
|
|
95
|
+
return {
|
|
96
|
+
version: 1,
|
|
97
|
+
depth,
|
|
98
|
+
overview: "",
|
|
99
|
+
pages: [
|
|
100
|
+
{ ...overview, intent: `${overview.intent} ${intentForScope(files, areaDepth)}`, sources: rankedSources(files) }
|
|
101
|
+
]
|
|
102
|
+
};
|
|
103
|
+
}
|
|
86
104
|
const pages = selected.map((area) => {
|
|
87
105
|
const files = [...area.files, ...extras.get(area.key) ?? []];
|
|
88
106
|
return {
|
|
89
107
|
path: pagePathForArea(area.key),
|
|
90
108
|
title: titleForArea(area.key),
|
|
91
|
-
intent:
|
|
109
|
+
intent: intentForScope(files, areaDepth),
|
|
92
110
|
sources: rankedSources(files),
|
|
93
111
|
status: "pending",
|
|
94
112
|
attempts: 0
|
|
95
113
|
};
|
|
96
114
|
});
|
|
115
|
+
if (pages.length > 0) {
|
|
116
|
+
overview.intent += " Link to the area pages for detailed behavior; keep this page focused on their composition and relationships.";
|
|
117
|
+
}
|
|
97
118
|
return dedupePagePaths({
|
|
98
119
|
version: 1,
|
|
120
|
+
depth,
|
|
99
121
|
overview: "",
|
|
100
|
-
pages: [
|
|
122
|
+
pages: [overview, ...pages]
|
|
101
123
|
});
|
|
102
124
|
}
|
|
103
125
|
function dedupePagePaths(plan) {
|
|
@@ -120,7 +142,13 @@ function planWikiGeneration(codewiki, requestedDepth = "auto") {
|
|
|
120
142
|
const sourceFiles = source.length;
|
|
121
143
|
const sourceLines = source.reduce((total, file) => total + Math.max(0, file.loc), 0);
|
|
122
144
|
const depth = requestedDepth === "auto" ? classifyDepth(sourceFiles, sourceLines) : requestedDepth;
|
|
123
|
-
return {
|
|
145
|
+
return {
|
|
146
|
+
requestedDepth,
|
|
147
|
+
depth,
|
|
148
|
+
sourceFiles,
|
|
149
|
+
sourceLines,
|
|
150
|
+
plan: { ...buildCandidatePlan(codewiki, depth), requestedDepth }
|
|
151
|
+
};
|
|
124
152
|
}
|
|
125
153
|
|
|
126
154
|
export {
|
|
@@ -131,4 +159,4 @@ export {
|
|
|
131
159
|
buildCandidatePlan,
|
|
132
160
|
planWikiGeneration
|
|
133
161
|
};
|
|
134
|
-
//# sourceMappingURL=chunk-
|
|
162
|
+
//# sourceMappingURL=chunk-PECBKCDK.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
|
|
2
2
|
import {
|
|
3
3
|
init_esm_shims
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-ECBHH7LU.js";
|
|
5
5
|
|
|
6
6
|
// src/core/workspace-files.ts
|
|
7
7
|
init_esm_shims();
|
|
@@ -336,4 +336,4 @@ export {
|
|
|
336
336
|
enumerateWorkspaceFilesAsync,
|
|
337
337
|
filterWorkspaceFileCandidates
|
|
338
338
|
};
|
|
339
|
-
//# sourceMappingURL=chunk-
|
|
339
|
+
//# sourceMappingURL=chunk-PPEZJWUG.js.map
|