@maycombhq/atticus 2.0.0-beta.12.1 → 2.0.0-beta.13
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/dist/bin.js +3 -3
- package/dist/{chunk-TJP2KLZI.js → chunk-22VA7YYG.js} +11 -11
- package/dist/{chunk-5ION6STH.js → chunk-27HOC77H.js} +2 -2
- package/dist/chunk-2HFVFEBT.js +37 -0
- package/dist/{chunk-PVMGHQWB.js → chunk-2JQ2SCX7.js} +7 -7
- package/dist/{chunk-ZTIMXVV5.js → chunk-2M76O6AN.js} +2 -2
- package/dist/{chunk-PKCYRG6G.js → chunk-2V7A3J7B.js} +15 -12
- package/dist/{chunk-DX5H5YKM.js → chunk-2W6ZLQX6.js} +11 -11
- package/dist/{chunk-TIAPEYWI.js → chunk-2Z4U33UI.js} +3 -3
- package/dist/{chunk-ZDZCUZ4N.js → chunk-3JOHZDKD.js} +5 -5
- package/dist/{chunk-42L2WHP6.js → chunk-3ODHCYOG.js} +4 -4
- package/dist/{chunk-JLIEAQP4.js → chunk-3RI2HYPB.js} +4 -4
- package/dist/{chunk-CJ5FQHST.js → chunk-3VYKAAQ4.js} +5 -5
- package/dist/{chunk-U2SGLXFR.js → chunk-3ZYGPIOB.js} +17 -17
- package/dist/{chunk-7UKETVPW.js → chunk-46VGJBRS.js} +1 -1
- package/dist/{chunk-5I5JDJ3R.js → chunk-4CBEOTJG.js} +4 -4
- package/dist/{chunk-34NWVIBC.js → chunk-4HAYYEFB.js} +2 -2
- package/dist/{chunk-UYKKTEWB.js → chunk-4IAZSN4N.js} +14 -14
- package/dist/{chunk-5R2EWR47.js → chunk-4NMF7XDM.js} +7 -7
- package/dist/{chunk-CCXEXCRO.js → chunk-4WUHO5SI.js} +14 -14
- package/dist/{chunk-CYDJK34J.js → chunk-55H65YKF.js} +4 -4
- package/dist/{chunk-UQUDITWL.js → chunk-5EOJSQM3.js} +20 -20
- package/dist/{chunk-BHHIHENP.js → chunk-5GQHLNZB.js} +4 -4
- package/dist/{chunk-QL4VNY4U.js → chunk-5LDFVOKT.js} +1 -1
- package/dist/{chunk-EREL3TQG.js → chunk-5MT5MY3V.js} +1 -1
- package/dist/{chunk-W3ZWS3B3.js → chunk-5SDBKA5U.js} +10 -10
- package/dist/chunk-5UQ5W2PF.js +54 -0
- package/dist/{chunk-6IKYFARG.js → chunk-5WBRQSLJ.js} +19 -10
- package/dist/{chunk-Y2FMWQQB.js → chunk-62CGLT7D.js} +16 -16
- package/dist/chunk-6EHE7PX4.js +54 -0
- package/dist/{chunk-IJ7TPOXQ.js → chunk-6L3OB44C.js} +11 -11
- package/dist/{chunk-6AYUBYK6.js → chunk-6TY7S6Y6.js} +38 -12
- package/dist/{chunk-6ROZRBWH.js → chunk-6VLNXNEM.js} +4 -4
- package/dist/{chunk-VRH6ITQH.js → chunk-6Z2SM6TU.js} +9 -9
- package/dist/{chunk-JQG4VO47.js → chunk-7HX7LQ66.js} +1 -1
- package/dist/{chunk-WM4N2L4T.js → chunk-7YXDLJCV.js} +1 -1
- package/dist/{chunk-3W5R5J65.js → chunk-A5YAXW5G.js} +31 -8
- package/dist/{chunk-3M7QBKKG.js → chunk-A64EHZTF.js} +6 -6
- package/dist/{chunk-VC4JMXM5.js → chunk-A7URZ77Y.js} +19 -19
- package/dist/{chunk-Y6LFFSRV.js → chunk-B2EIZVAW.js} +10 -10
- package/dist/{chunk-GRZGEMO5.js → chunk-BAGRINRH.js} +102 -102
- package/dist/{chunk-U25OX22K.js → chunk-BH5DMXG5.js} +137 -16
- package/dist/{chunk-P7SONIEO.js → chunk-CFIDOXSH.js} +269 -64
- package/dist/{chunk-J3DTLYER.js → chunk-CFYAQTDM.js} +15 -15
- package/dist/{chunk-TIUBGJG3.js → chunk-CK5Z3RIN.js} +9 -9
- package/dist/{chunk-YISWYR3Q.js → chunk-DAZHJOLA.js} +4 -4
- package/dist/{chunk-DQKNOHUZ.js → chunk-DFDEUYHX.js} +1 -1
- package/dist/{chunk-Z2BA4NNR.js → chunk-DHWMEG7N.js} +2 -2
- package/dist/{chunk-PGFRXGHA.js → chunk-DJEDFJTZ.js} +2 -2
- package/dist/{chunk-XBNKOARP.js → chunk-DJTZVXI5.js} +4 -4
- package/dist/{chunk-U43G5EUN.js → chunk-DN4FULFM.js} +17 -17
- package/dist/{chunk-Q4AWUD6C.js → chunk-DO6B66AS.js} +16 -16
- package/dist/{chunk-O62VA6MH.js → chunk-EBVKNIKO.js} +13 -13
- package/dist/chunk-ECGTN32T.js +43 -0
- package/dist/{chunk-ESGIBN3S.js → chunk-EFI6BBPE.js} +1 -1
- package/dist/{chunk-7C7PTJM2.js → chunk-EJJONXPS.js} +27 -18
- package/dist/{chunk-TV6ECMN3.js → chunk-ETOIM5LK.js} +15 -15
- package/dist/{chunk-IDLO7UCZ.js → chunk-EUSWNGGG.js} +5 -5
- package/dist/chunk-F4WLUEZY.js +43 -0
- package/dist/chunk-F7EHN4CC.js +151 -0
- package/dist/{chunk-ZRP6ZXOF.js → chunk-FGGCLKPG.js} +12 -12
- package/dist/{chunk-PAQDPB6T.js → chunk-FMGMRFEH.js} +4 -4
- package/dist/chunk-FODNRZC7.js +38 -0
- package/dist/{chunk-PUGPT4Y6.js → chunk-FZTXX5Z2.js} +17 -17
- package/dist/{chunk-CGF4LKXR.js → chunk-GAK5KDYV.js} +3 -3
- package/dist/{chunk-DONCF2XC.js → chunk-GELBERZB.js} +3 -3
- package/dist/{chunk-MOY52LHS.js → chunk-GFQ4ZUY3.js} +13 -13
- package/dist/{chunk-6R2OM6Y3.js → chunk-GMXE44X7.js} +15 -15
- package/dist/{chunk-65XZSK6S.js → chunk-GNEFMED4.js} +4 -4
- package/dist/{chunk-OJAJXU65.js → chunk-GT6BMFHZ.js} +13 -1
- package/dist/{chunk-GX3Q5PRC.js → chunk-GWB4XIMM.js} +11 -11
- package/dist/{chunk-ARLH2ZMD.js → chunk-HGNJNPMB.js} +1 -1
- package/dist/{chunk-XP3KLC4S.js → chunk-HGNMMBFJ.js} +6 -6
- package/dist/{chunk-CUX4GRTB.js → chunk-HK2BXCMW.js} +3 -3
- package/dist/{chunk-3256EDLL.js → chunk-HOQB4B3F.js} +3 -3
- package/dist/{chunk-S5X7BVWP.js → chunk-HRVG2MOI.js} +19 -19
- package/dist/{chunk-FLROTO6F.js → chunk-HS7OZ3ZE.js} +3 -3
- package/dist/{chunk-AY7Y3WPD.js → chunk-I6PYLKHK.js} +15 -15
- package/dist/{chunk-WBOVB3XR.js → chunk-IDJJ5MDV.js} +24 -24
- package/dist/{chunk-N6YELFHL.js → chunk-IF6UROTX.js} +2 -2
- package/dist/{chunk-6HSRGY4B.js → chunk-IJQ5BF5K.js} +3 -3
- package/dist/{chunk-GU7PEYRC.js → chunk-IQLHTDHS.js} +10 -10
- package/dist/{chunk-BUD6JILH.js → chunk-IUDD5WS3.js} +21 -21
- package/dist/{chunk-QR65C3DV.js → chunk-J422SCUS.js} +4 -4
- package/dist/chunk-J5QWT2LV.js +41 -0
- package/dist/{chunk-7FPTI62T.js → chunk-J6CM5ZST.js} +20 -20
- package/dist/{chunk-NTNJNRHW.js → chunk-J7G2BGW4.js} +4 -4
- package/dist/{chunk-JS3DJH3Q.js → chunk-JCGIAHCX.js} +4 -4
- package/dist/{chunk-DKGWE5ZL.js → chunk-JI3QP66O.js} +21 -21
- package/dist/{chunk-OKUYBXXI.js → chunk-JQKFZIQN.js} +16 -16
- package/dist/{chunk-OMH3I5BH.js → chunk-JSTI6YPH.js} +2 -2
- package/dist/{chunk-DLX2R3MI.js → chunk-JW3YAB24.js} +31 -31
- package/dist/{chunk-MFRPLAOH.js → chunk-K3VT62TE.js} +2 -2
- package/dist/{chunk-CQD26SMZ.js → chunk-K4J4Z37A.js} +1090 -40
- package/dist/{chunk-MIOY6EXD.js → chunk-KEOTTRK2.js} +4 -4
- package/dist/{chunk-M3BJTXLR.js → chunk-KEZXPK4U.js} +9 -9
- package/dist/{chunk-3JLTN3Y7.js → chunk-KK4I5NNI.js} +7 -7
- package/dist/{chunk-G2K2D6XS.js → chunk-KLXAX2YW.js} +12 -12
- package/dist/{chunk-AUSC47BK.js → chunk-KMDIJ6O4.js} +4 -4
- package/dist/{chunk-7XWCTVJS.js → chunk-KUFJDY4S.js} +3 -3
- package/dist/{chunk-TBKJPKDN.js → chunk-KV24YCMX.js} +11 -11
- package/dist/{chunk-CXY4YDXS.js → chunk-KYR4XMXR.js} +2 -2
- package/dist/{chunk-XDTD55UU.js → chunk-L2EHYZCH.js} +33 -9
- package/dist/{chunk-FSR7OUVJ.js → chunk-L32HJTTW.js} +23 -23
- package/dist/{chunk-QOPX5M7Y.js → chunk-LPVS4DPT.js} +4 -4
- package/dist/{chunk-RA64IK43.js → chunk-LRO3Y2XQ.js} +1 -1
- package/dist/{chunk-VUBVBFJW.js → chunk-LYWEB453.js} +5 -5
- package/dist/chunk-LZDK3V3W.js +34 -0
- package/dist/{chunk-FF5Q7ONT.js → chunk-M54PJXYX.js} +214 -148
- package/dist/{chunk-XB64FJLU.js → chunk-M6W3P3ZI.js} +24 -24
- package/dist/{chunk-QKSWQBWD.js → chunk-MBAKCS2U.js} +25 -8
- package/dist/{chunk-FT3RXIN4.js → chunk-MBQY6L3Z.js} +10 -10
- package/dist/{chunk-72DY5NCN.js → chunk-MCRCJLAE.js} +2 -2
- package/dist/{chunk-NZY72PGJ.js → chunk-MSAXKU4C.js} +9 -7
- package/dist/{chunk-ZPPLFE4N.js → chunk-MSF6XELY.js} +14 -14
- package/dist/{chunk-ZWGU46YO.js → chunk-MYZPN2BV.js} +23 -23
- package/dist/{chunk-7VAMO66T.js → chunk-N35OSYIU.js} +9 -6
- package/dist/{chunk-U3JGJ3BO.js → chunk-N3Z2D3OC.js} +24 -24
- package/dist/{chunk-LAOZB5YC.js → chunk-NEDAQDC7.js} +11 -11
- package/dist/{chunk-YY2WGL6S.js → chunk-NEEOJJWT.js} +2 -2
- package/dist/{chunk-VAL7HAIR.js → chunk-NEYVK52V.js} +3 -3
- package/dist/chunk-NKIGYJY6.js +41 -0
- package/dist/{chunk-36CTZGPH.js → chunk-NPL4XMOC.js} +7 -7
- package/dist/{chunk-G5SKNMPC.js → chunk-NRJC7XTD.js} +5 -5
- package/dist/{chunk-FYWA2CPF.js → chunk-NVDAZOVS.js} +17 -17
- package/dist/{chunk-TEZSZ24W.js → chunk-O2QUSGER.js} +4 -4
- package/dist/{chunk-KPHPVOME.js → chunk-OE3ECGHN.js} +4 -4
- package/dist/{chunk-QOF7U6BI.js → chunk-OKXRQPQF.js} +6 -6
- package/dist/{chunk-YSFIQGDK.js → chunk-OPMTVYWM.js} +8 -8
- package/dist/{chunk-4GNKICU5.js → chunk-OR4FYMZM.js} +18 -18
- package/dist/{chunk-KY2ZHTBJ.js → chunk-OXEOXPG5.js} +6 -6
- package/dist/{chunk-34BCKMBS.js → chunk-P2AKNGWM.js} +3 -3
- package/dist/{chunk-VTMIRRIZ.js → chunk-PAYFWXVA.js} +2 -2
- package/dist/{chunk-DREIS5Z5.js → chunk-PCYGJOR2.js} +6 -6
- package/dist/{chunk-7MASAGFE.js → chunk-PFUX5AVG.js} +15 -15
- package/dist/{chunk-FNVY656P.js → chunk-PJ7CW2B5.js} +22 -22
- package/dist/{chunk-BFZSO2TP.js → chunk-PLZ6S6QS.js} +6 -6
- package/dist/{chunk-T72K4PLH.js → chunk-PWDRDFYW.js} +11 -11
- package/dist/{chunk-2DJUQ6CO.js → chunk-QBA67JWK.js} +22 -22
- package/dist/{chunk-NAKVQU6F.js → chunk-QF6RSKKI.js} +1 -1
- package/dist/{chunk-ML3HOWPI.js → chunk-QOZICYAF.js} +4 -4
- package/dist/{chunk-CIIRPLI6.js → chunk-QPAOZXXQ.js} +4 -4
- package/dist/{chunk-7VNEDDCC.js → chunk-QQIZGLRA.js} +2 -2
- package/dist/{chunk-JWQMD54C.js → chunk-QTJCLGFC.js} +7 -7
- package/dist/{chunk-5IMZYLDW.js → chunk-QVPYGH7N.js} +11 -11
- package/dist/{chunk-M4D3VKAS.js → chunk-RAFD4MYO.js} +1 -1
- package/dist/{chunk-XSNIHYO6.js → chunk-RDPHVCTU.js} +10 -10
- package/dist/{chunk-J22RSFKY.js → chunk-S32NYQZZ.js} +369 -360
- package/dist/{chunk-PJRMMWU4.js → chunk-S56NJ5LE.js} +2 -2
- package/dist/{chunk-ISXNWUG7.js → chunk-SDAULIGH.js} +1 -1
- package/dist/{chunk-5C24MOXU.js → chunk-SQKDHGAD.js} +17 -17
- package/dist/{chunk-N2FA53DA.js → chunk-SYPSS5UX.js} +6 -6
- package/dist/{chunk-CUD4I2U6.js → chunk-T7LGRFVD.js} +28 -28
- package/dist/{chunk-CH6LUQLD.js → chunk-TCIFQSMO.js} +1 -1
- package/dist/{chunk-DBZNQAMN.js → chunk-THOVQFPT.js} +9 -9
- package/dist/{chunk-2OWSG6BK.js → chunk-TM5JJL6I.js} +11 -11
- package/dist/{chunk-EOCZDNWU.js → chunk-TW2XD4CT.js} +5 -5
- package/dist/{chunk-4JLB5ISS.js → chunk-U4N4DZS5.js} +3 -3
- package/dist/{chunk-YVQWJDVN.js → chunk-U4SGGO54.js} +24 -24
- package/dist/{chunk-HK2CF6KQ.js → chunk-U4WFATJZ.js} +23 -23
- package/dist/{chunk-4HTILEXW.js → chunk-U57NQAE5.js} +46 -2
- package/dist/{chunk-EE3UNC44.js → chunk-U7X3CZIL.js} +3 -3
- package/dist/chunk-UCLAXME7.js +34 -0
- package/dist/{chunk-XMYGEZQ7.js → chunk-UCS7HXFX.js} +17 -17
- package/dist/{chunk-7UXSS23C.js → chunk-UDENIR6E.js} +18 -18
- package/dist/{chunk-XZLSKGJX.js → chunk-UDI4QI6D.js} +5 -5
- package/dist/{chunk-77UOXZVM.js → chunk-ULRDKBHJ.js} +5 -5
- package/dist/{chunk-DW4BM73R.js → chunk-UQRUMRB2.js} +1 -1
- package/dist/{chunk-DDOLWHIM.js → chunk-USPTS2HZ.js} +17 -17
- package/dist/{chunk-2A24BNRZ.js → chunk-V4B44XRC.js} +7 -7
- package/dist/{chunk-IZF2VJU5.js → chunk-VBPHSKJI.js} +22 -22
- package/dist/{chunk-GJ4B2FYS.js → chunk-VCEUC3GC.js} +10 -10
- package/dist/{chunk-N7HG4UP7.js → chunk-VCN6THJZ.js} +6 -6
- package/dist/{chunk-QC24Z5JU.js → chunk-VFQARMOE.js} +10 -10
- package/dist/{chunk-RMNYY5IE.js → chunk-VG3NSHIA.js} +5 -5
- package/dist/{chunk-TEHH47TG.js → chunk-VKVGHROQ.js} +3 -3
- package/dist/{chunk-CKI4VG2I.js → chunk-VUUU7BOK.js} +22 -22
- package/dist/{chunk-PAOIMLTK.js → chunk-VXKPHJVK.js} +19 -19
- package/dist/{chunk-P3VBYYAS.js → chunk-W5PMBPKI.js} +3 -3
- package/dist/{chunk-TA2ZNDYD.js → chunk-W7CZCZPE.js} +1 -1
- package/dist/chunk-WAYZHK2C.js +48 -0
- package/dist/{chunk-WRLEYM3T.js → chunk-WC4Z3UHZ.js} +4 -4
- package/dist/{chunk-SR2M7DWL.js → chunk-WJ7BAWOR.js} +13 -13
- package/dist/{chunk-MRLCNXXR.js → chunk-WJK5WJLA.js} +1 -1
- package/dist/{chunk-7H5HYERS.js → chunk-WNEAZYEK.js} +19 -19
- package/dist/{chunk-DBVU45FY.js → chunk-WPBI7LBA.js} +14 -14
- package/dist/{chunk-HY2VVVFZ.js → chunk-WPHKKINR.js} +4 -4
- package/dist/{chunk-TJHDFS33.js → chunk-XDMYQ5RR.js} +27 -27
- package/dist/{chunk-HIQWJ6JZ.js → chunk-XFQKKNEF.js} +4 -4
- package/dist/{chunk-JC3BMRB5.js → chunk-XYEMI627.js} +11 -11
- package/dist/{chunk-S4USA5WC.js → chunk-YBWUVSAH.js} +20 -20
- package/dist/{chunk-FP6GJJY7.js → chunk-YCYAA4MB.js} +22 -22
- package/dist/{chunk-WFJMKUTR.js → chunk-YECVNCO4.js} +9 -9
- package/dist/{chunk-5G5GD5HF.js → chunk-YGEHNSJ4.js} +14 -14
- package/dist/{chunk-KJ6IH2D5.js → chunk-YJI3S2YA.js} +5 -5
- package/dist/{chunk-HMQXIFOL.js → chunk-YLTOP7OS.js} +4 -4
- package/dist/{chunk-QXGOEP44.js → chunk-YVHUKQ5U.js} +3 -3
- package/dist/{chunk-GIPQHVJF.js → chunk-YZGYUMWJ.js} +11 -11
- package/dist/{chunk-2QT6WVAK.js → chunk-Z43VYNEY.js} +15 -15
- package/dist/{chunk-XRDYEEDE.js → chunk-ZGJVAHQC.js} +1 -1
- package/dist/{chunk-GUNBOZ75.js → chunk-ZHMVB3YW.js} +3 -3
- package/dist/{chunk-T4TMX54Q.js → chunk-ZMHOCHTY.js} +16 -16
- package/dist/{chunk-DIAYQLEY.js → chunk-ZQHFZ6WO.js} +6 -6
- package/dist/{chunk-MI3GGF7V.js → chunk-ZS2WLK7A.js} +17 -17
- package/dist/{chunk-WSFPKNKT.js → chunk-ZWIYJCW5.js} +23 -23
- package/dist/chunk-ZWY72UOG.js +45 -0
- package/dist/files.json +449 -441
- package/dist/packages/sdk/npm/index.js +57 -9
- package/dist/packages/ui/dist/assets/{elk-api-D2NcYpUJ.js → elk-api-GNftut9z.js} +2 -2
- package/dist/packages/ui/dist/assets/{index-CT7skl01.js → index-C2evnHpj.js} +3 -3
- package/dist/packages/ui/dist/index.html +1 -1
- package/package.json +6 -6
- package/dist/chunk-2RMWW6G3.js +0 -41
- package/dist/chunk-3PLE3ZQ5.js +0 -34
- package/dist/chunk-CU35HXQ7.js +0 -48
- package/dist/chunk-EOWO4YPF.js +0 -43
- package/dist/chunk-EZ3FDHW3.js +0 -41
- package/dist/chunk-F5L23NGR.js +0 -45
- package/dist/chunk-JOG6LBOP.js +0 -38
- package/dist/chunk-LRCWWMHH.js +0 -54
- package/dist/chunk-LVQMS54L.js +0 -54
- package/dist/chunk-S3QCJWCF.js +0 -34
- package/dist/chunk-XVQGT4SL.js +0 -37
|
@@ -3,72 +3,80 @@ import { fileURLToPath as __atticusFileURLToPath } from "node:url";
|
|
|
3
3
|
var require = __atticusCreateRequire(import.meta.url);
|
|
4
4
|
var __atticusUrl = (p) => new URL("./" + p, import.meta.url).href;
|
|
5
5
|
var __atticusPath = (p) => __atticusFileURLToPath(__atticusUrl(p));
|
|
6
|
+
import {
|
|
7
|
+
copilotAcpAllowed,
|
|
8
|
+
copilotAcpByDefault,
|
|
9
|
+
readWrites
|
|
10
|
+
} from "./chunk-F7EHN4CC.js";
|
|
6
11
|
import {
|
|
7
12
|
mapCommand,
|
|
8
13
|
mapStateOf
|
|
9
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-EJJONXPS.js";
|
|
10
15
|
import {
|
|
11
16
|
factsRepos,
|
|
12
17
|
verifyCommand
|
|
13
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-5WBRQSLJ.js";
|
|
14
19
|
import {
|
|
15
20
|
plannedTopUp,
|
|
16
21
|
recordRulesNow,
|
|
17
22
|
ruleSetsOfFiles
|
|
18
|
-
} from "./chunk-
|
|
19
|
-
import "./chunk-
|
|
20
|
-
import "./chunk-
|
|
23
|
+
} from "./chunk-OKXRQPQF.js";
|
|
24
|
+
import "./chunk-L2EHYZCH.js";
|
|
25
|
+
import "./chunk-GAK5KDYV.js";
|
|
21
26
|
import {
|
|
22
27
|
estateFreshness
|
|
23
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-3JOHZDKD.js";
|
|
24
29
|
import {
|
|
25
30
|
onboardingQueue
|
|
26
|
-
} from "./chunk-
|
|
27
|
-
import "./chunk-
|
|
28
|
-
import "./chunk-
|
|
29
|
-
import "./chunk-
|
|
31
|
+
} from "./chunk-IF6UROTX.js";
|
|
32
|
+
import "./chunk-FMGMRFEH.js";
|
|
33
|
+
import "./chunk-ZQHFZ6WO.js";
|
|
34
|
+
import "./chunk-YECVNCO4.js";
|
|
30
35
|
import {
|
|
31
36
|
checkoutOf,
|
|
32
37
|
conventionsAt,
|
|
33
38
|
excludesOf,
|
|
34
39
|
headOf,
|
|
35
40
|
loadReadPlan,
|
|
41
|
+
partUnaccounted,
|
|
36
42
|
readPlanProgress
|
|
37
|
-
} from "./chunk-
|
|
38
|
-
import "./chunk-
|
|
39
|
-
import "./chunk-
|
|
40
|
-
import "./chunk-
|
|
41
|
-
import "./chunk-
|
|
43
|
+
} from "./chunk-6TY7S6Y6.js";
|
|
44
|
+
import "./chunk-QQIZGLRA.js";
|
|
45
|
+
import "./chunk-5GQHLNZB.js";
|
|
46
|
+
import "./chunk-3ODHCYOG.js";
|
|
47
|
+
import "./chunk-KEOTTRK2.js";
|
|
42
48
|
import {
|
|
43
49
|
isMetarepo,
|
|
44
50
|
notMetarepo
|
|
45
51
|
} from "./chunk-3G4YI4ZU.js";
|
|
46
52
|
import {
|
|
53
|
+
ASSISTANT_FORMATS,
|
|
47
54
|
assistantTier,
|
|
48
55
|
readProbes,
|
|
49
56
|
rulesLacking
|
|
50
|
-
} from "./chunk-
|
|
57
|
+
} from "./chunk-S32NYQZZ.js";
|
|
51
58
|
import "./chunk-VOGCSYOI.js";
|
|
52
59
|
import {
|
|
53
60
|
estateRepos,
|
|
54
61
|
productionRepos
|
|
55
|
-
} from "./chunk-
|
|
56
|
-
import "./chunk-
|
|
62
|
+
} from "./chunk-THOVQFPT.js";
|
|
63
|
+
import "./chunk-J422SCUS.js";
|
|
57
64
|
import {
|
|
58
65
|
dirSource,
|
|
59
66
|
sameCommit,
|
|
60
67
|
sessionTokensFor
|
|
61
|
-
} from "./chunk-
|
|
62
|
-
import "./chunk-
|
|
63
|
-
import "./chunk-
|
|
64
|
-
import "./chunk-
|
|
65
|
-
import "./chunk-
|
|
66
|
-
import "./chunk-
|
|
67
|
-
import "./chunk-
|
|
68
|
-
import "./chunk-
|
|
68
|
+
} from "./chunk-N35OSYIU.js";
|
|
69
|
+
import "./chunk-WPHKKINR.js";
|
|
70
|
+
import "./chunk-S56NJ5LE.js";
|
|
71
|
+
import "./chunk-4HAYYEFB.js";
|
|
72
|
+
import "./chunk-RAFD4MYO.js";
|
|
73
|
+
import "./chunk-HGNJNPMB.js";
|
|
74
|
+
import "./chunk-LRO3Y2XQ.js";
|
|
75
|
+
import "./chunk-WJK5WJLA.js";
|
|
69
76
|
import {
|
|
77
|
+
AcpSignInError,
|
|
70
78
|
currentPromptLimit
|
|
71
|
-
} from "./chunk-
|
|
79
|
+
} from "./chunk-K4J4Z37A.js";
|
|
72
80
|
import {
|
|
73
81
|
factsDirOf,
|
|
74
82
|
factsRelOf,
|
|
@@ -78,7 +86,7 @@ import {
|
|
|
78
86
|
orgPackDirOf,
|
|
79
87
|
parseFacts,
|
|
80
88
|
require_dist
|
|
81
|
-
} from "./chunk-
|
|
89
|
+
} from "./chunk-BH5DMXG5.js";
|
|
82
90
|
import {
|
|
83
91
|
ensureLocalIgnore,
|
|
84
92
|
writeFileAtomic
|
|
@@ -95,7 +103,7 @@ import { join } from "node:path";
|
|
|
95
103
|
var MAP_ALL_STATE_REL = ".atticus/map-all/state.json";
|
|
96
104
|
var statePath = (root) => join(root, ".atticus", "map-all", "state.json");
|
|
97
105
|
var REMIND_MS = 10 * 6e4;
|
|
98
|
-
var IDLE_MINUTES =
|
|
106
|
+
var IDLE_MINUTES = 30;
|
|
99
107
|
var POLL_MS = 3e3;
|
|
100
108
|
var RETRIES = 3;
|
|
101
109
|
var plural = (n, one, many = `${one}s`) => `${n} ${n === 1 ? one : many}`;
|
|
@@ -122,6 +130,13 @@ function modelModeAllowed(op) {
|
|
|
122
130
|
const rt = op.runtime;
|
|
123
131
|
return rt.ai !== "off" && rt.modes.allowed.includes("model") && !!rt.adapters.model && rt.adapters.model.type !== "mock";
|
|
124
132
|
}
|
|
133
|
+
async function mapReader(root) {
|
|
134
|
+
const op = await loadOrgPack(orgPackDirOf(root));
|
|
135
|
+
const tier = assistantTier(op.runtime, { probes: (await readProbes(root)).results });
|
|
136
|
+
const name = tier.assistant ? ASSISTANT_FORMATS[tier.assistant].name : "no assistant";
|
|
137
|
+
const paste = tier.tier !== "off" && (tier.assistant === "copilot" || tier.tier !== 1);
|
|
138
|
+
return { name, loop: paste && isMetarepo(root) };
|
|
139
|
+
}
|
|
125
140
|
async function limitFor(root, op, given) {
|
|
126
141
|
const flag = given ?? currentPromptLimit();
|
|
127
142
|
if (flag !== void 0)
|
|
@@ -164,7 +179,7 @@ async function commitOf(root, repo, f) {
|
|
|
164
179
|
return void 0;
|
|
165
180
|
return await headFromFiles(dir) ?? await headOf(dir);
|
|
166
181
|
}
|
|
167
|
-
async function partsOf(root, repo, commit, limit, git, models) {
|
|
182
|
+
async function partsOf(root, repo, commit, limit, git, models, force) {
|
|
168
183
|
const io = captured();
|
|
169
184
|
const code = await mapCommand(root, repo, { estimate: true, json: true, commit, maxTokens: limit, ...models ? { models } : {} }, io, git ? { git } : {});
|
|
170
185
|
const r = code === 0 ? jsonOf(io.lines) : void 0;
|
|
@@ -188,7 +203,7 @@ async function partsOf(root, repo, commit, limit, git, models) {
|
|
|
188
203
|
...batches !== void 0 ? { batches } : {}
|
|
189
204
|
};
|
|
190
205
|
const states = r.parts.plan?.parts ?? [];
|
|
191
|
-
const parts = planned.map((p, i) => ({ part: i + 1, total: planned.length, ...p })).filter((p) => states.find((s) => s.part === p.part)?.state !== "done");
|
|
206
|
+
const parts = planned.map((p, i) => ({ part: i + 1, total: planned.length, ...p })).filter((p) => force ? !force.done.has(p.part) : states.find((s) => s.part === p.part)?.state !== "done");
|
|
192
207
|
return {
|
|
193
208
|
parts,
|
|
194
209
|
total: planned.length,
|
|
@@ -243,6 +258,17 @@ async function planEstate(root, op, o, c, state) {
|
|
|
243
258
|
continue;
|
|
244
259
|
}
|
|
245
260
|
const state2 = f?.state ?? "not-read";
|
|
261
|
+
if (o.force) {
|
|
262
|
+
todo.push({
|
|
263
|
+
repo,
|
|
264
|
+
kind: "read",
|
|
265
|
+
commit,
|
|
266
|
+
why: state2 === "not-read" ? "--force: read whole" : "--force: read whole again, the facts on file kept as already kept",
|
|
267
|
+
...state2 === "not-read" ? {} : { started: true },
|
|
268
|
+
force: true
|
|
269
|
+
});
|
|
270
|
+
continue;
|
|
271
|
+
}
|
|
246
272
|
if (o.gaps) {
|
|
247
273
|
if (state2 === "not-read")
|
|
248
274
|
skipped.push({ repo, why: "not read yet: the gaps pass follows a read" });
|
|
@@ -324,7 +350,8 @@ async function planEstate(root, op, o, c, state) {
|
|
|
324
350
|
kind: t.kind,
|
|
325
351
|
commit: t.commit,
|
|
326
352
|
why: t.why,
|
|
327
|
-
...production.has(t.repo) ? {} : { prototype: true }
|
|
353
|
+
...production.has(t.repo) ? {} : { prototype: true },
|
|
354
|
+
...t.force ? { force: true } : {}
|
|
328
355
|
};
|
|
329
356
|
if (t.kind === "carry") {
|
|
330
357
|
items.push({ ...base, parts: [], total: 0, tokens: 0 });
|
|
@@ -357,7 +384,7 @@ async function planEstate(root, op, o, c, state) {
|
|
|
357
384
|
});
|
|
358
385
|
continue;
|
|
359
386
|
}
|
|
360
|
-
const p = await partsOf(root, t.repo, t.commit, c.limit, c.git, o.models);
|
|
387
|
+
const p = await partsOf(root, t.repo, t.commit, c.limit, c.git, o.models, t.force ? { done: forcedDone(t.repo, t.commit) } : void 0);
|
|
361
388
|
if (typeof p === "string") {
|
|
362
389
|
skipped.push({ repo: t.repo, why: p });
|
|
363
390
|
continue;
|
|
@@ -376,6 +403,12 @@ async function planEstate(root, op, o, c, state) {
|
|
|
376
403
|
items.push({ ...base, ...p });
|
|
377
404
|
}
|
|
378
405
|
return { limit: c.limit, limitFrom: c.limitFrom, mode: c.mode, items, skipped };
|
|
406
|
+
function forcedDone(repo, commit) {
|
|
407
|
+
const r = state?.repos[repo];
|
|
408
|
+
if (!r?.force || !sameCommit(r.commit, commit))
|
|
409
|
+
return /* @__PURE__ */ new Set();
|
|
410
|
+
return new Set(Object.entries(r.parts).filter(([, p]) => p.state === "done").map(([n]) => Number(n)));
|
|
411
|
+
}
|
|
379
412
|
function isDone(repo, commit) {
|
|
380
413
|
const r = state?.repos[repo];
|
|
381
414
|
return !!r?.done && r.kind === "gaps" && sameCommit(r.commit, commit);
|
|
@@ -387,7 +420,7 @@ function planLines(plan) {
|
|
|
387
420
|
const parts = reading.reduce((n, i) => n + i.parts.length, 0);
|
|
388
421
|
const planned = reading.reduce((n, i) => n + Math.max(i.total, i.parts.length), 0);
|
|
389
422
|
const tokens = reading.reduce((n, i) => n + i.tokens, 0);
|
|
390
|
-
out.push(`The estate at ${tokensText(plan.limit)} tokens a prompt (${plan.limitFrom === "flag" ? "--max-tokens" : plan.limitFrom === "probe" ? "the limit atticus probe measured" : "runtime.yaml's maxInput"}), ${plan.mode === "model" ? "read by runtime.yaml's model, unattended" : "read by Copilot Chat in agent mode: you paste one line per part"}:`);
|
|
423
|
+
out.push(`The estate at ${tokensText(plan.limit)} tokens a prompt (${plan.limitFrom === "flag" ? "--max-tokens" : plan.limitFrom === "probe" ? "the limit atticus probe measured" : "runtime.yaml's maxInput"}), ${plan.mode === "model" ? "read by runtime.yaml's model, unattended" : plan.mode === "copilot-acp" ? "read by GitHub Copilot through its Agent Client Protocol, unattended: one new session per part" : "read by Copilot Chat in agent mode: you paste one line per part"}:`);
|
|
391
424
|
plan.items.forEach((i, n) => {
|
|
392
425
|
const head = ` ${n + 1}. ${i.repo}${i.prototype ? " (prototype: read, never joined)" : ""}`;
|
|
393
426
|
if (i.kind === "carry" || i.kind === "rules" && !i.parts.length)
|
|
@@ -427,6 +460,17 @@ async function snapOf(root, repo) {
|
|
|
427
460
|
};
|
|
428
461
|
}
|
|
429
462
|
var sameSnap = (a, b) => a.facts === b.facts && a.reviewed === b.reviewed && a.verify === b.verify;
|
|
463
|
+
async function writtenOf(root, repo) {
|
|
464
|
+
const dir = factsDirOf(root);
|
|
465
|
+
const facts = await readFile(join(dir, `${repo}.jsonl`), "utf8").catch(() => "");
|
|
466
|
+
const p = facts.trim() ? parseFacts(facts) : void 0;
|
|
467
|
+
const ids = (p?.ok ? p.facts : []).map((f) => {
|
|
468
|
+
const c = f.cite;
|
|
469
|
+
return `${f.id}|${c?.file ?? ""}:${c?.line ?? ""}`;
|
|
470
|
+
});
|
|
471
|
+
const reviewed = (await readFile(join(dir, `${repo}.reviewed.jsonl`), "utf8").catch(() => "")).split(/\r?\n/).map((l) => l.trim()).filter(Boolean);
|
|
472
|
+
return JSON.stringify([[...new Set(ids)].sort(), reviewed]);
|
|
473
|
+
}
|
|
430
474
|
async function factsAt(root, repo, commit) {
|
|
431
475
|
const text = await readFile(join(factsDirOf(root), `${repo}.jsonl`), "utf8").catch(() => "");
|
|
432
476
|
if (!text.trim())
|
|
@@ -447,7 +491,13 @@ async function settled(root, repo, commit, s, since) {
|
|
|
447
491
|
return false;
|
|
448
492
|
}
|
|
449
493
|
}
|
|
450
|
-
async function covered(root, item, part, first, now) {
|
|
494
|
+
async function covered(root, item, part, first, now, unknown, wrote) {
|
|
495
|
+
const moved = now.facts !== first.facts || now.reviewed !== first.reviewed;
|
|
496
|
+
if (item.force) {
|
|
497
|
+
if (!(wrote ?? moved))
|
|
498
|
+
return false;
|
|
499
|
+
return item.total <= 1 || !!unknown && !leftOf(part, unknown).length;
|
|
500
|
+
}
|
|
451
501
|
if (item.kind === "rules") {
|
|
452
502
|
const plan = await loadReadPlan(root, item.repo);
|
|
453
503
|
if (!plan?.topUp)
|
|
@@ -456,13 +506,26 @@ async function covered(root, item, part, first, now) {
|
|
|
456
506
|
}
|
|
457
507
|
if (item.total > 1) {
|
|
458
508
|
const p = await readPlanProgress(root, item.repo);
|
|
459
|
-
|
|
509
|
+
const s = p?.parts.find((x) => x.part === part.part);
|
|
510
|
+
if (s?.state === "done")
|
|
511
|
+
return true;
|
|
512
|
+
return !!s && !!unknown && !partUnaccounted(s, unknown).length;
|
|
460
513
|
}
|
|
461
|
-
const moved = now.facts !== first.facts || now.reviewed !== first.reviewed;
|
|
462
514
|
if (item.kind === "read")
|
|
463
515
|
return moved || now.reviewed !== void 0 || await factsAt(root, item.repo, item.commit) > 0;
|
|
464
516
|
return moved;
|
|
465
517
|
}
|
|
518
|
+
var leftOf = (part, unknown) => partUnaccounted({ paths: part.paths, left: [] }, unknown);
|
|
519
|
+
function unaccountedWords(left, shown = 5) {
|
|
520
|
+
return left.map((u) => {
|
|
521
|
+
if (!u.files.length)
|
|
522
|
+
return `${u.glob} (no fact cites a line of it yet)`;
|
|
523
|
+
const dir = u.glob.replace(/\/?\*\*?$/, "");
|
|
524
|
+
const rel = u.files.map((f) => u.glob.includes("*") && dir && f.startsWith(`${dir}/`) ? f.slice(dir.length + 1) : f);
|
|
525
|
+
const more = rel.length > shown ? `, and ${rel.length - shown} more` : "";
|
|
526
|
+
return `${u.glob} (${plural(u.files.length, "file")}: ${rel.slice(0, shown).join(", ")}${more})`;
|
|
527
|
+
}).join("; ");
|
|
528
|
+
}
|
|
466
529
|
var CapReached = class extends Error {
|
|
467
530
|
};
|
|
468
531
|
function capped(inner, o, spent) {
|
|
@@ -508,17 +571,26 @@ async function mapAllCommand(root, o, io, deps = {}) {
|
|
|
508
571
|
}
|
|
509
572
|
const limit = lim.limit;
|
|
510
573
|
const allowed = modelModeAllowed(op);
|
|
511
|
-
const mode = o.mode ?? (allowed ? "model" : "copilot");
|
|
574
|
+
const mode = o.mode ?? (copilotAcpByDefault(op) ? "copilot-acp" : allowed ? "model" : "copilot");
|
|
575
|
+
if (mode === "copilot-acp" && !copilotAcpAllowed(op) && !deps.acp) {
|
|
576
|
+
io.err("runtime.yaml doesn't allow copilot-acp here (schemaVersion 3, copilot-acp in modes.allowed and copilot in assistants.allowed): map the estate through Copilot Chat (atticus map --all without --mode copilot-acp), or ask for it in a pull request (ADR 0171).");
|
|
577
|
+
return 2;
|
|
578
|
+
}
|
|
579
|
+
const stateMode = mode === "model" ? "model" : "copilot";
|
|
512
580
|
if (mode === "model" && !allowed && !deps.runtime) {
|
|
513
581
|
io.err("runtime.yaml doesn't allow model mode with a provider here: map the estate through Copilot (atticus map --all without --mode model).");
|
|
514
582
|
return 2;
|
|
515
583
|
}
|
|
584
|
+
if (o.force && (o.gaps || o.stale)) {
|
|
585
|
+
io.err("--force reads the repos whole again; it doesn't go with --stale or --gaps.");
|
|
586
|
+
return 2;
|
|
587
|
+
}
|
|
516
588
|
if (mode === "model" && o.gaps) {
|
|
517
589
|
io.err("The gaps pass is a session for an assistant that opens files: run atticus map --all --gaps --mode hand-off and paste each line into Copilot Chat.");
|
|
518
590
|
return 2;
|
|
519
591
|
}
|
|
520
592
|
let state = await readMapAllState(root);
|
|
521
|
-
if (state && (state.gaps !== !!o.gaps || state.mode !==
|
|
593
|
+
if (state && (state.gaps !== !!o.gaps || state.mode !== stateMode))
|
|
522
594
|
state = void 0;
|
|
523
595
|
const plan = await planEstate(root, op, o, { limit: lim.limit, limitFrom: lim.from, mode, ...deps.git ? { git: deps.git } : {} }, state);
|
|
524
596
|
if (typeof plan === "string") {
|
|
@@ -538,7 +610,7 @@ async function mapAllCommand(root, o, io, deps = {}) {
|
|
|
538
610
|
const st = state ?? {
|
|
539
611
|
schemaVersion: 1,
|
|
540
612
|
updatedAt: "",
|
|
541
|
-
mode,
|
|
613
|
+
mode: stateMode,
|
|
542
614
|
gaps: !!o.gaps,
|
|
543
615
|
repos: {}
|
|
544
616
|
};
|
|
@@ -556,10 +628,17 @@ async function mapAllCommand(root, o, io, deps = {}) {
|
|
|
556
628
|
const stopped = () => deps.signal?.aborted === true;
|
|
557
629
|
const repoState = (item) => {
|
|
558
630
|
const r = st.repos[item.repo];
|
|
559
|
-
if (r && sameCommit(r.commit, item.commit) && r.kind === item.kind)
|
|
631
|
+
if (r && sameCommit(r.commit, item.commit) && r.kind === item.kind && !!r.force === !!item.force)
|
|
560
632
|
return r;
|
|
561
|
-
return st.repos[item.repo] = {
|
|
633
|
+
return st.repos[item.repo] = {
|
|
634
|
+
commit: item.commit,
|
|
635
|
+
kind: item.kind,
|
|
636
|
+
parts: {},
|
|
637
|
+
...item.force ? { force: true } : {}
|
|
638
|
+
};
|
|
562
639
|
};
|
|
640
|
+
const resumeAs = o.resumeAs ?? `atticus map --all${o.repos ? ` --repos ${o.repos.join(",")}` : ""}${o.stale ? " --stale" : ""}${o.gaps ? " --gaps" : ""}${o.force ? " --force" : ""}${o.models ? ` --models ${o.models}` : ""}${lim.from === "flag" ? ` --max-tokens ${limit}` : ""}${o.idleMinutes ? ` --idle ${o.idleMinutes}` : ""}`;
|
|
641
|
+
let idleStop = false;
|
|
563
642
|
const partState = (item, part) => repoState(item).parts[String(part)] ??= { retries: 0 };
|
|
564
643
|
const verifyStep = async (item) => {
|
|
565
644
|
const c = captured();
|
|
@@ -580,6 +659,7 @@ async function mapAllCommand(root, o, io, deps = {}) {
|
|
|
580
659
|
};
|
|
581
660
|
let quit = false;
|
|
582
661
|
let capHit = false;
|
|
662
|
+
let signIn = false;
|
|
583
663
|
let runtime;
|
|
584
664
|
const items = plan.items;
|
|
585
665
|
for (const [n, item] of items.entries()) {
|
|
@@ -619,6 +699,18 @@ async function mapAllCommand(root, o, io, deps = {}) {
|
|
|
619
699
|
}
|
|
620
700
|
continue;
|
|
621
701
|
}
|
|
702
|
+
if (mode === "copilot-acp") {
|
|
703
|
+
for (const part of item.parts) {
|
|
704
|
+
if (quit || stopped() || capHit)
|
|
705
|
+
break;
|
|
706
|
+
const end = await acpPart(item, part, where);
|
|
707
|
+
if (end === "quit")
|
|
708
|
+
quit = true;
|
|
709
|
+
if (end === "cap")
|
|
710
|
+
capHit = true;
|
|
711
|
+
}
|
|
712
|
+
continue;
|
|
713
|
+
}
|
|
622
714
|
for (const part of item.parts) {
|
|
623
715
|
if (quit || stopped())
|
|
624
716
|
break;
|
|
@@ -631,8 +723,10 @@ async function mapAllCommand(root, o, io, deps = {}) {
|
|
|
631
723
|
}
|
|
632
724
|
const interrupted = quit || stopped() || capHit;
|
|
633
725
|
if (interrupted) {
|
|
634
|
-
|
|
635
|
-
|
|
726
|
+
if (!idleStop) {
|
|
727
|
+
io.out("");
|
|
728
|
+
io.out(capHit ? `Stopped at the cap (${o.maxParts !== void 0 ? `--max-parts ${o.maxParts}` : ""}${o.maxParts !== void 0 && o.budgetTokens !== void 0 ? ", " : ""}${o.budgetTokens !== void 0 ? `--budget-tokens ${o.budgetTokens}` : ""}): ${plural(totals.spent.prompts, mode === "copilot-acp" ? "session" : "prompt")} run. atticus map --all carries on from here.` : "Stopped. Where the estate stands is saved: atticus map --all carries on from here.");
|
|
729
|
+
}
|
|
636
730
|
} else if (totals.parts || totals.repos.size) {
|
|
637
731
|
io.out("");
|
|
638
732
|
io.out("Joining the estate: atticus verify --all --write.");
|
|
@@ -655,13 +749,14 @@ async function mapAllCommand(root, o, io, deps = {}) {
|
|
|
655
749
|
}
|
|
656
750
|
await save();
|
|
657
751
|
await summary(interrupted);
|
|
658
|
-
return 0;
|
|
752
|
+
return signIn ? 1 : 0;
|
|
659
753
|
async function copilotPart(item, part, where) {
|
|
660
754
|
const ps = partState(item, part.part);
|
|
661
755
|
const nth = item.parts.indexOf(part) + 1;
|
|
662
756
|
const label = item.total > 1 ? `part ${part.part} of ${item.total}${item.parts.length < item.total && nth > 0 ? `, ${nth} of the ${item.parts.length} to read` : ""}` : "one session";
|
|
757
|
+
const named = item.total > 1 ? `part ${part.part} of ${item.total}` : "one session";
|
|
663
758
|
const progress = item.total > 1 ? await readPlanProgress(root, item.repo) : void 0;
|
|
664
|
-
const first0 = item.kind === "rules" ? await rulesLine(item) : item.kind === "gaps" ? await gapsLine(item) : ps.retries > 0 || progress?.next && progress.next.part !== part.part ? await restLine(item, part) ?? `/atticus-map ${item.repo}` : `/atticus-map ${item.repo}`;
|
|
759
|
+
const first0 = item.kind === "rules" ? await rulesLine(item) : item.kind === "gaps" ? await gapsLine(item) : item.force ? forceLine(item, part) : ps.retries > 0 || progress?.next && progress.next.part !== part.part ? await restLine(item, part) ?? `/atticus-map ${item.repo}` : `/atticus-map ${item.repo}`;
|
|
665
760
|
if (first0 === void 0) {
|
|
666
761
|
io.out(`${item.repo}: no gaps left; nothing to read.`);
|
|
667
762
|
return finishPart(item, part, ps);
|
|
@@ -670,14 +765,14 @@ async function mapAllCommand(root, o, io, deps = {}) {
|
|
|
670
765
|
return finishPart(item, part, ps);
|
|
671
766
|
let line = first0;
|
|
672
767
|
await block(item, part, label, where, line, ps.retries);
|
|
768
|
+
let base = item.force ? await writtenOf(root, item.repo) : "";
|
|
673
769
|
let first = await snapOf(root, item.repo);
|
|
674
770
|
let since = first;
|
|
675
771
|
let prev = first;
|
|
676
772
|
let lastChange = clock.now();
|
|
677
773
|
let lastRemind = clock.now();
|
|
678
774
|
const started = clock.now();
|
|
679
|
-
|
|
680
|
-
const idleMs = (o.idleMinutes ?? IDLE_MINUTES) * 6e4;
|
|
775
|
+
const idleMinutes = o.idleMinutes ?? IDLE_MINUTES;
|
|
681
776
|
for (; ; ) {
|
|
682
777
|
if (stopped()) {
|
|
683
778
|
ps.state = "incomplete";
|
|
@@ -701,30 +796,42 @@ async function mapAllCommand(root, o, io, deps = {}) {
|
|
|
701
796
|
const again = await retry(item, part, label, where);
|
|
702
797
|
if (again === "done")
|
|
703
798
|
return finishPart(item, part, ps);
|
|
799
|
+
if (item.force)
|
|
800
|
+
base = await writtenOf(root, item.repo);
|
|
704
801
|
first = await snapOf(root, item.repo);
|
|
705
802
|
since = first;
|
|
706
803
|
prev = first;
|
|
707
804
|
lastChange = clock.now();
|
|
708
|
-
stuckSaid = false;
|
|
709
805
|
continue;
|
|
710
806
|
}
|
|
711
807
|
const now = await snapOf(root, item.repo);
|
|
712
808
|
if (!sameSnap(now, prev)) {
|
|
713
809
|
lastChange = clock.now();
|
|
714
|
-
stuckSaid = false;
|
|
715
810
|
prev = now;
|
|
716
811
|
}
|
|
717
|
-
if (await settled(root, item.repo, item.commit, now, since)
|
|
812
|
+
if (await settled(root, item.repo, item.commit, now, since)) {
|
|
813
|
+
const wrote = item.force ? await writtenOf(root, item.repo) !== base : void 0;
|
|
718
814
|
const v = await verifyStep(item);
|
|
719
|
-
|
|
815
|
+
const after = await snapOf(root, item.repo);
|
|
816
|
+
if (v && !v.rejected && await covered(root, item, part, first, after, v.coverage.unknown, wrote))
|
|
720
817
|
return finishPart(item, part, ps);
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
818
|
+
if (v?.rejected)
|
|
819
|
+
io.out(`Not done yet: ${plural(v.rejected, "fact")} rejected for the reader to fix. Still waiting (s + Enter skips, r + Enter gives the prompt again for what's left).`);
|
|
820
|
+
else if (v && item.total > 1 && item.kind !== "rules") {
|
|
821
|
+
const left = await leftNow(item, part, v.coverage.unknown);
|
|
822
|
+
io.out(left.length ? `Still not covered in ${item.repo} ${named}: ${unaccountedWords(left)}. ${item.force ? `r + Enter gives the line again (${line}); ` : `r + Enter gives a NEW chat only what is left of the part: these files, and any line verify lists as skipped under it (/atticus-map ${item.repo} --part ${part.part} --gaps); `}s + Enter skips the part; q + Enter stops.` : `Not done yet: nothing was written for ${item.repo} ${named} since its line was given. r + Enter gives the line again; s + Enter skips the part; q + Enter stops.`);
|
|
823
|
+
} else
|
|
824
|
+
io.out("Not done yet: the part isn't accounted for in the facts yet. Still waiting (s + Enter skips, r + Enter gives the prompt again for what's left).");
|
|
825
|
+
since = after;
|
|
826
|
+
prev = after;
|
|
827
|
+
lastRemind = clock.now();
|
|
724
828
|
}
|
|
725
|
-
if (
|
|
726
|
-
io.out(`
|
|
727
|
-
|
|
829
|
+
if (clock.now() - lastChange >= idleMinutes * 6e4) {
|
|
830
|
+
io.out(`Stopped waiting on ${item.repo} ${label}: nothing was written for ${plural(idleMinutes, "minute")} (--idle ${idleMinutes}). Where the estate stands is saved: ${resumeAs} carries on from here (it verifies what was written and gives the line again for what's left).`);
|
|
831
|
+
ps.state = "incomplete";
|
|
832
|
+
idleStop = true;
|
|
833
|
+
await save();
|
|
834
|
+
return "quit";
|
|
728
835
|
}
|
|
729
836
|
if (clock.now() - lastRemind >= (deps.remindMs ?? REMIND_MS)) {
|
|
730
837
|
io.out(`Still waiting on ${item.repo} ${label} (${Math.round((clock.now() - started) / 6e4)} minutes). The line to paste: ${line} (s + Enter skips, r + Enter retries what's left, q + Enter stops)`);
|
|
@@ -735,7 +842,13 @@ async function mapAllCommand(root, o, io, deps = {}) {
|
|
|
735
842
|
async function retry(item2, part2, label2, where2) {
|
|
736
843
|
ps.retries++;
|
|
737
844
|
await save();
|
|
738
|
-
|
|
845
|
+
if (item2.force) {
|
|
846
|
+
const wrote = await writtenOf(root, item2.repo) !== base;
|
|
847
|
+
const v = existsSync(join(factsDirOf(root), `${item2.repo}.jsonl`)) ? await verifyStep(item2) : void 0;
|
|
848
|
+
if (v && !v.rejected && await covered(root, item2, part2, first, await snapOf(root, item2.repo), v.coverage.unknown, wrote))
|
|
849
|
+
return "done";
|
|
850
|
+
}
|
|
851
|
+
const rest = item2.kind === "rules" ? await rulesLine(item2) : item2.kind === "gaps" ? await gapsLine(item2) : item2.force ? forceLine(item2, part2) : await restLine(item2, part2);
|
|
739
852
|
if (rest === "done" || rest === void 0 && item2.kind === "gaps")
|
|
740
853
|
return "done";
|
|
741
854
|
line = rest ?? `/atticus-map ${item2.repo}`;
|
|
@@ -747,10 +860,21 @@ async function mapAllCommand(root, o, io, deps = {}) {
|
|
|
747
860
|
return "again";
|
|
748
861
|
}
|
|
749
862
|
}
|
|
863
|
+
async function leftNow(item, part, unknown) {
|
|
864
|
+
if (item.force)
|
|
865
|
+
return leftOf(part, unknown);
|
|
866
|
+
const s = (await readPlanProgress(root, item.repo))?.parts.find((x) => x.part === part.part);
|
|
867
|
+
return s ? partUnaccounted(s, unknown) : leftOf(part, unknown);
|
|
868
|
+
}
|
|
869
|
+
function forceLine(item, part) {
|
|
870
|
+
return `/atticus-map ${item.repo}${item.total > 1 ? ` --part ${part.part}` : ""}`;
|
|
871
|
+
}
|
|
750
872
|
async function finishPart(item, part, ps) {
|
|
751
873
|
ps.state = "done";
|
|
752
874
|
if (item.kind === "gaps" || part.part === item.total)
|
|
753
875
|
repoState(item).done = true;
|
|
876
|
+
if (item.force && Object.keys(repoState(item).parts).length >= item.total && Object.values(repoState(item).parts).every((p) => p.state === "done"))
|
|
877
|
+
await recordRulesNow(root, item.repo, item.commit);
|
|
754
878
|
totals.parts++;
|
|
755
879
|
totals.repos.add(item.repo);
|
|
756
880
|
await save();
|
|
@@ -810,7 +934,9 @@ async function mapAllCommand(root, o, io, deps = {}) {
|
|
|
810
934
|
io.out("");
|
|
811
935
|
io.out(`===== ${item.repo}, ${item.kind === "gaps" ? "the gaps pass" : item.kind === "rules" ? `the rules top-up${item.total > 1 ? `, ${label}` : ""}` : label} (${where})${retries ? `, given again (${retries})` : ""} =====`);
|
|
812
936
|
io.out(`In a NEW Copilot Chat (agent mode), run: ${line}`);
|
|
813
|
-
if (item.
|
|
937
|
+
if (item.force)
|
|
938
|
+
io.out(`${item.total > 1 ? `That chat reads part ${part.part} whole again: ${part.paths.join(", ")} (about ${tokensText(part.tokens)} tokens). ` : ""}The facts on file stay, as already kept: the chat names one by its id and doesn't write it again (one whose line changed it rewrites under the same id).`);
|
|
939
|
+
else if (item.kind === "rules")
|
|
814
940
|
io.out(`That chat reads ${plural(part.files, "file")} again for the reading rules added since (${(item.sets ?? []).join(", ")}): ${part.paths.join(", ")} (about ${tokensText(part.tokens)} tokens).`);
|
|
815
941
|
else if (item.total > 1 && !line.includes("--gaps"))
|
|
816
942
|
io.out(`That chat reads part ${part.part}: ${part.paths.join(", ")} (about ${tokensText(part.tokens)} tokens); the estimate it runs names it.`);
|
|
@@ -820,6 +946,83 @@ async function mapAllCommand(root, o, io, deps = {}) {
|
|
|
820
946
|
io.out(copied ? "The line is on your clipboard." : "Copy the line above (no clipboard tool here).");
|
|
821
947
|
io.out("Waiting for the facts it writes. s + Enter skips this part, r + Enter verifies what is there and gives the line again for what's left, q + Enter (or Ctrl+C) stops; atticus map --all carries on.");
|
|
822
948
|
}
|
|
949
|
+
function overCap() {
|
|
950
|
+
return o.maxParts !== void 0 && totals.spent.prompts >= o.maxParts || o.budgetTokens !== void 0 && totals.spent.tokens >= o.budgetTokens;
|
|
951
|
+
}
|
|
952
|
+
async function acpPart(item, part, where) {
|
|
953
|
+
const ps = partState(item, part.part);
|
|
954
|
+
const label = item.total > 1 ? `part ${part.part} of ${item.total}` : "one session";
|
|
955
|
+
const progress = item.total > 1 ? await readPlanProgress(root, item.repo) : void 0;
|
|
956
|
+
const first0 = item.kind === "rules" ? await rulesLine(item) : item.kind === "gaps" ? await gapsLine(item) : item.force ? forceLine(item, part) : ps.retries > 0 || progress?.next && progress.next.part !== part.part ? await restLine(item, part) ?? `/atticus-map ${item.repo}` : `/atticus-map ${item.repo}`;
|
|
957
|
+
if (first0 === void 0) {
|
|
958
|
+
io.out(`${item.repo}: no gaps left; nothing to read.`);
|
|
959
|
+
return finishPart(item, part, ps);
|
|
960
|
+
}
|
|
961
|
+
if (first0 === "done")
|
|
962
|
+
return finishPart(item, part, ps);
|
|
963
|
+
let line = first0;
|
|
964
|
+
const runner = deps.acp ?? await deps.makeAcp?.();
|
|
965
|
+
if (!runner) {
|
|
966
|
+
io.err("No Copilot session runner: copilot-acp needs runtime.yaml's copilotAcp.");
|
|
967
|
+
return "quit";
|
|
968
|
+
}
|
|
969
|
+
for (let attempt = 0; attempt < 2; attempt++) {
|
|
970
|
+
if (stopped())
|
|
971
|
+
break;
|
|
972
|
+
if (overCap())
|
|
973
|
+
return "cap";
|
|
974
|
+
io.out("");
|
|
975
|
+
io.out(`===== ${item.repo}, ${item.kind === "gaps" ? "the gaps pass" : item.kind === "rules" ? "the rules top-up" : label} (${where})${attempt ? ", given again in a new session" : ""} =====`);
|
|
976
|
+
io.out(`In a NEW Copilot session (copilot-acp): ${line}`);
|
|
977
|
+
const base = item.force ? await writtenOf(root, item.repo) : "";
|
|
978
|
+
const first = await snapOf(root, item.repo);
|
|
979
|
+
totals.spent.prompts++;
|
|
980
|
+
try {
|
|
981
|
+
const r = await runner({
|
|
982
|
+
line,
|
|
983
|
+
change: `map-${item.repo}`,
|
|
984
|
+
writeRoots: readWrites(root),
|
|
985
|
+
...deps.signal ? { signal: deps.signal } : {},
|
|
986
|
+
onProgress: io.out
|
|
987
|
+
});
|
|
988
|
+
totals.spent.tokens += r.usage ? r.usage.inputTokens + r.usage.outputTokens : part.tokens;
|
|
989
|
+
io.out(`The session ended (${r.stopped ?? r.stopReason}).`);
|
|
990
|
+
} catch (e) {
|
|
991
|
+
if (e instanceof AcpSignInError) {
|
|
992
|
+
io.err(e.message);
|
|
993
|
+
signIn = true;
|
|
994
|
+
ps.state = "incomplete";
|
|
995
|
+
await save();
|
|
996
|
+
return "quit";
|
|
997
|
+
}
|
|
998
|
+
totals.spent.tokens += part.tokens;
|
|
999
|
+
io.out(`${item.repo} ${label}: the Copilot session failed: ${firstLine(e)}`);
|
|
1000
|
+
}
|
|
1001
|
+
if (stopped())
|
|
1002
|
+
break;
|
|
1003
|
+
const wrote = item.force ? await writtenOf(root, item.repo) !== base : void 0;
|
|
1004
|
+
const v = existsSync(join(factsDirOf(root), `${item.repo}.jsonl`)) ? await verifyStep(item) : void 0;
|
|
1005
|
+
const after = await snapOf(root, item.repo);
|
|
1006
|
+
if (v && !v.rejected && await covered(root, item, part, first, after, v.coverage.unknown, wrote))
|
|
1007
|
+
return finishPart(item, part, ps);
|
|
1008
|
+
if (attempt > 0)
|
|
1009
|
+
break;
|
|
1010
|
+
ps.retries++;
|
|
1011
|
+
await save();
|
|
1012
|
+
const rest = item.kind === "rules" ? await rulesLine(item) : item.kind === "gaps" ? await gapsLine(item) : item.force ? forceLine(item, part) : await restLine(item, part);
|
|
1013
|
+
if (rest === "done" || rest === void 0 && item.kind === "gaps")
|
|
1014
|
+
return finishPart(item, part, ps);
|
|
1015
|
+
line = rest ?? `/atticus-map ${item.repo}`;
|
|
1016
|
+
io.out(`${item.repo} ${label} isn't accounted for yet${v?.rejected ? ` (${plural(v.rejected, "fact")} rejected)` : ""}: one more try in a NEW session with only what is left (${line}).`);
|
|
1017
|
+
}
|
|
1018
|
+
ps.state = "incomplete";
|
|
1019
|
+
await save();
|
|
1020
|
+
if (stopped())
|
|
1021
|
+
return "quit";
|
|
1022
|
+
io.out(`${item.repo} ${label}: still not accounted for after a second session; moving on. atticus map --all carries on from here.`);
|
|
1023
|
+
totals.ends.push(endOf(item, part, "incomplete"));
|
|
1024
|
+
return "incomplete";
|
|
1025
|
+
}
|
|
823
1026
|
async function modelRead(item, where, rt) {
|
|
824
1027
|
io.out("");
|
|
825
1028
|
io.out(item.kind === "rules" ? `===== ${item.repo} (${where}): topping up on the model for the reading rules added since it was read (${(item.sets ?? []).join(", ")}) =====` : `===== ${item.repo} (${where}): ${item.kind === "reread" ? "re-reading what changed" : "reading"} on the model, ${plural(item.batches ?? 0, "prompt")} =====`);
|
|
@@ -835,7 +1038,7 @@ async function mapAllCommand(root, o, io, deps = {}) {
|
|
|
835
1038
|
maxTokens: limit,
|
|
836
1039
|
...o.models ? { models: o.models } : {},
|
|
837
1040
|
...item.kind === "rules" ? { rules: true } : {},
|
|
838
|
-
...resume ? { next: true } : before && !before.done ? { force: true } : {}
|
|
1041
|
+
...resume && !(item.force && attempt === 1) ? { next: true } : item.force && attempt === 1 || before && !before.done ? { force: true } : {}
|
|
839
1042
|
}, io, { runtime: rt, ...deps.git ? { git: deps.git } : {} });
|
|
840
1043
|
} catch (e) {
|
|
841
1044
|
if (e instanceof CapReached) {
|
|
@@ -873,7 +1076,7 @@ async function mapAllCommand(root, o, io, deps = {}) {
|
|
|
873
1076
|
repo: item.repo,
|
|
874
1077
|
...item.total > 1 ? { part: part.part, total: item.total } : {},
|
|
875
1078
|
end,
|
|
876
|
-
command: `atticus map --all --repos ${item.repo}${o.gaps ? " --gaps" : ""} (or /atticus-map ${item.repo}${o.gaps ? " --gaps" : ""} in a new chat)`
|
|
1079
|
+
command: `atticus map --all --repos ${item.repo}${o.gaps ? " --gaps" : ""}${item.force ? " --force" : ""} (or /atticus-map ${item.repo}${o.gaps ? " --gaps" : item.force && item.total > 1 ? ` --part ${part.part}` : ""} in a new chat)`
|
|
877
1080
|
};
|
|
878
1081
|
}
|
|
879
1082
|
async function summary(interrupted2) {
|
|
@@ -889,7 +1092,7 @@ async function mapAllCommand(root, o, io, deps = {}) {
|
|
|
889
1092
|
const open = (await listQuestions(root, { state: "open" }).catch(() => ({ questions: [] }))).questions.length;
|
|
890
1093
|
const rejected = [...totals.rejected.values()].reduce((n, x) => n + x, 0);
|
|
891
1094
|
io.out("");
|
|
892
|
-
io.out(`${interrupted2 ? "So far" : "Done"}: ${plural(totals.repos.size, "repo")} read, ${plural(totals.parts, "part")}${mode === "model" ? ` (${plural(totals.spent.prompts, "prompt")})` : ""}; ${plural(rejected, "fact")} rejected; links +${totals.added} -${totals.removed}; ${plural(open, "question")} open.`);
|
|
1095
|
+
io.out(`${interrupted2 ? "So far" : "Done"}: ${plural(totals.repos.size, "repo")} read, ${plural(totals.parts, "part")}${mode === "model" ? ` (${plural(totals.spent.prompts, "prompt")})` : mode === "copilot-acp" ? ` (${plural(totals.spent.prompts, "session")})` : ""}; ${plural(rejected, "fact")} rejected; links +${totals.added} -${totals.removed}; ${plural(open, "question")} open.`);
|
|
893
1096
|
const left = totals.ends.filter((e) => e.end !== "done");
|
|
894
1097
|
if (left.length) {
|
|
895
1098
|
io.out("Not finished:");
|
|
@@ -903,7 +1106,9 @@ export {
|
|
|
903
1106
|
MAP_ALL_STATE_REL,
|
|
904
1107
|
limitFor,
|
|
905
1108
|
mapAllCommand,
|
|
1109
|
+
mapReader,
|
|
906
1110
|
modelModeAllowed,
|
|
907
1111
|
planEstate,
|
|
908
|
-
readMapAllState
|
|
1112
|
+
readMapAllState,
|
|
1113
|
+
unaccountedWords
|
|
909
1114
|
};
|
|
@@ -6,21 +6,21 @@ var __atticusPath = (p) => __atticusFileURLToPath(__atticusUrl(p));
|
|
|
6
6
|
import {
|
|
7
7
|
buildDigest,
|
|
8
8
|
digestCommand
|
|
9
|
-
} from "./chunk-
|
|
10
|
-
import "./chunk-
|
|
11
|
-
import "./chunk-
|
|
12
|
-
import "./chunk-
|
|
13
|
-
import "./chunk-
|
|
14
|
-
import "./chunk-
|
|
15
|
-
import "./chunk-
|
|
16
|
-
import "./chunk-
|
|
17
|
-
import "./chunk-
|
|
18
|
-
import "./chunk-
|
|
19
|
-
import "./chunk-
|
|
20
|
-
import "./chunk-
|
|
21
|
-
import "./chunk-
|
|
22
|
-
import "./chunk-
|
|
23
|
-
import "./chunk-
|
|
9
|
+
} from "./chunk-VCN6THJZ.js";
|
|
10
|
+
import "./chunk-OE3ECGHN.js";
|
|
11
|
+
import "./chunk-NRJC7XTD.js";
|
|
12
|
+
import "./chunk-7HX7LQ66.js";
|
|
13
|
+
import "./chunk-UQRUMRB2.js";
|
|
14
|
+
import "./chunk-THOVQFPT.js";
|
|
15
|
+
import "./chunk-J422SCUS.js";
|
|
16
|
+
import "./chunk-N35OSYIU.js";
|
|
17
|
+
import "./chunk-WPHKKINR.js";
|
|
18
|
+
import "./chunk-S56NJ5LE.js";
|
|
19
|
+
import "./chunk-4HAYYEFB.js";
|
|
20
|
+
import "./chunk-LRO3Y2XQ.js";
|
|
21
|
+
import "./chunk-WJK5WJLA.js";
|
|
22
|
+
import "./chunk-K4J4Z37A.js";
|
|
23
|
+
import "./chunk-BH5DMXG5.js";
|
|
24
24
|
import "./chunk-MMB2OHUY.js";
|
|
25
25
|
import "./chunk-TV45EUGM.js";
|
|
26
26
|
export {
|