@maycombhq/atticus 2.0.0-beta.2 → 2.0.0-beta.21
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 +8 -4
- package/dist/chunk-265LWMOA.js +91 -0
- package/dist/chunk-26WBY34Y.js +37 -0
- package/dist/{chunk-UBBC2XSG.js → chunk-26Z7OGQW.js} +518 -93
- package/dist/chunk-2D7PWSOK.js +172 -0
- package/dist/{chunk-JCZIKA4C.js → chunk-2HH3UCZM.js} +4 -4
- package/dist/{chunk-GDLULHTC.js → chunk-2HTEMYTB.js} +12 -26
- package/dist/chunk-2UCRFXFZ.js +130 -0
- package/dist/{chunk-MVZVGYXH.js → chunk-2V2ZPQQU.js} +81 -13
- package/dist/{chunk-BOHJZTEQ.js → chunk-36RY7ZXM.js} +130 -71
- package/dist/{chunk-I3E7CX4H.js → chunk-37WE3LS2.js} +3 -3
- package/dist/{chunk-IPKHE5D6.js → chunk-3AQ2R5NL.js} +1520 -871
- package/dist/chunk-3G6S7LAA.js +43 -0
- package/dist/chunk-3J5I7ZOU.js +58 -0
- package/dist/{chunk-65NYPGRC.js → chunk-3LZ6P5EP.js} +1 -1
- package/dist/chunk-3SSTNB4E.js +191 -0
- package/dist/chunk-3TD6S4TC.js +49 -0
- package/dist/{chunk-3C7EYRFZ.js → chunk-3UTYPHN3.js} +1 -1
- package/dist/{chunk-G2B4ZQGH.js → chunk-3WON4G3M.js} +2 -2
- package/dist/{chunk-S3QNRWYR.js → chunk-42EPP7OB.js} +12 -12
- package/dist/chunk-455SYIIE.js +113 -0
- package/dist/{chunk-YISXLPHN.js → chunk-4B6BT75O.js} +166 -23
- package/dist/{chunk-C6EKFH7J.js → chunk-4CLK2RJO.js} +7 -7
- package/dist/chunk-4CYTJ5TZ.js +38 -0
- package/dist/{chunk-EYWIDJFU.js → chunk-4D62IZII.js} +5 -5
- package/dist/chunk-4FOAYLI4.js +328 -0
- package/dist/{chunk-7JUKDRSZ.js → chunk-4KNOJC6J.js} +294 -215
- package/dist/{chunk-YMZ3TNYB.js → chunk-4PYC2UGC.js} +2 -2
- package/dist/{chunk-27NKUS3X.js → chunk-4SLBCEPD.js} +2104 -726
- package/dist/chunk-4TKVU2I2.js +122 -0
- package/dist/{chunk-RUVFXE2L.js → chunk-4WXRPQDE.js} +448 -47
- package/dist/{chunk-7ZUIMTOU.js → chunk-5CMPVC3N.js} +24 -24
- package/dist/chunk-5G7ILBUG.js +66 -0
- package/dist/{chunk-HFQCFSJR.js → chunk-5PV7S2ZP.js} +3 -3
- package/dist/{chunk-FITWGOJ2.js → chunk-5QUOPNLN.js} +4 -4
- package/dist/{chunk-Z6LF7HQN.js → chunk-5TDRBOAV.js} +5 -5
- package/dist/{chunk-T6AIP7H5.js → chunk-5WERBKLE.js} +199 -63
- package/dist/{chunk-XPCM366L.js → chunk-62DLJSLV.js} +8 -8
- package/dist/{chunk-L24C55VN.js → chunk-64AADMTW.js} +99 -25
- package/dist/{chunk-K65BJIMT.js → chunk-67BP7HXL.js} +17 -17
- package/dist/chunk-6DQYZU2W.js +379 -0
- package/dist/{chunk-EDS2L2LD.js → chunk-6EXDI5GI.js} +52 -26
- package/dist/chunk-6FNAKCET.js +38 -0
- package/dist/{chunk-6IU67AEK.js → chunk-75ASLHBT.js} +21 -15
- package/dist/{chunk-A3GY6SOA.js → chunk-75ZOZFGH.js} +18 -18
- package/dist/{chunk-MGYZM27B.js → chunk-77O633L5.js} +49 -23
- package/dist/{chunk-GQ4N4WKF.js → chunk-7AB6OWTV.js} +3 -3
- package/dist/{chunk-M766ZJ6W.js → chunk-7CZHUZBL.js} +25 -25
- package/dist/{chunk-A7UPUQFY.js → chunk-7FHNFCHK.js} +643 -124
- package/dist/chunk-7FUIVIBG.js +415 -0
- package/dist/{chunk-6QSERWXH.js → chunk-7QPCGTPS.js} +21 -21
- package/dist/{chunk-LR3R6Z2A.js → chunk-A2G72UI4.js} +7 -7
- package/dist/{chunk-I4JRCD6M.js → chunk-AE4P57KK.js} +23 -17
- package/dist/{chunk-AVJDSJ2F.js → chunk-AHW3RY3X.js} +7 -7
- package/dist/chunk-AM6FP6JW.js +43 -0
- package/dist/{chunk-CSZ4C5N6.js → chunk-AOCWFA7T.js} +93 -10
- package/dist/{chunk-EPTBZ3GP.js → chunk-API5TOUB.js} +1 -1
- package/dist/{chunk-652QWTLZ.js → chunk-AZDITBCT.js} +3 -3
- package/dist/{chunk-DPUYDDQG.js → chunk-BA2HUMDN.js} +25 -3
- package/dist/chunk-BA3U7ALS.js +99 -0
- package/dist/{chunk-HVUPKCGJ.js → chunk-BC6KKZ67.js} +5 -5
- package/dist/{chunk-CKSITVS4.js → chunk-BEPCKDCP.js} +2554 -722
- package/dist/{chunk-3ALD2W2A.js → chunk-BPPU3PW7.js} +4 -4
- package/dist/{chunk-QRAOANID.js → chunk-BVWWPBKD.js} +21 -21
- package/dist/{chunk-ZDPAS56H.js → chunk-BXBCMGIQ.js} +7 -1
- package/dist/chunk-BXZ4PKIT.js +233 -0
- package/dist/chunk-C7CEK3KW.js +247 -0
- package/dist/chunk-CFH3QH26.js +29 -0
- package/dist/chunk-CG6CULP6.js +170 -0
- package/dist/chunk-CLD4RVTA.js +45 -0
- package/dist/{chunk-DKJA76CJ.js → chunk-CNPY4NTZ.js} +13 -13
- package/dist/chunk-CNU5Q2D5.js +575 -0
- package/dist/{chunk-T2UYZSCQ.js → chunk-COYN3UAN.js} +126 -23
- package/dist/{chunk-23W7VWKR.js → chunk-CPK7QSBG.js} +1360 -113
- package/dist/{chunk-4AK7IBVP.js → chunk-D2WSW4GU.js} +1 -1
- package/dist/{chunk-ABWHYWNI.js → chunk-D57MFJPP.js} +3 -3
- package/dist/chunk-D5KV5PSK.js +45 -0
- package/dist/chunk-D5MASS4I.js +48 -0
- package/dist/{chunk-7EOBHUMC.js → chunk-DCWN3HFV.js} +2 -2
- package/dist/{chunk-QSXK2RGH.js → chunk-DDJPM5YX.js} +2 -2
- package/dist/chunk-DN4A2Q2O.js +57 -0
- package/dist/{chunk-IHMLFRVV.js → chunk-DUPZPDCJ.js} +58 -16
- package/dist/{chunk-PRPPGYZG.js → chunk-E2VXBSIR.js} +4 -4
- package/dist/chunk-E57AOFYN.js +32 -0
- package/dist/{chunk-UGLN7QHV.js → chunk-ECLXZWAG.js} +12 -12
- package/dist/{chunk-5WG5YP4T.js → chunk-EDZ45WIR.js} +14 -14
- package/dist/chunk-EFCQSMXB.js +37 -0
- package/dist/{chunk-2ANOROX3.js → chunk-EZIN5E5B.js} +8 -8
- package/dist/{chunk-BWZ77RQT.js → chunk-F6H2RJ3N.js} +1 -1
- package/dist/{chunk-OLQJTJJU.js → chunk-FAJDKNSD.js} +7 -3
- package/dist/chunk-FGAGWYZB.js +47 -0
- package/dist/{chunk-4WBVUHXN.js → chunk-FLVZFTLQ.js} +18 -18
- package/dist/chunk-FQ6WH6PB.js +140 -0
- package/dist/{chunk-T6XQL73F.js → chunk-FRHD22WM.js} +61 -23
- package/dist/{chunk-XAKWMCXI.js → chunk-FVMPFCDS.js} +4 -4
- package/dist/{chunk-B2WLAWNJ.js → chunk-FY3QIRTL.js} +3 -3
- package/dist/{chunk-CPA6HPVR.js → chunk-FYBF5MB2.js} +15 -11
- package/dist/{chunk-V2YTAIQO.js → chunk-G5YJBNDZ.js} +21 -6
- package/dist/chunk-G6IQYM25.js +339 -0
- package/dist/chunk-G6X4YL4D.js +161 -0
- package/dist/{chunk-SJRGMG6A.js → chunk-GC2VK3JT.js} +25 -25
- package/dist/{chunk-SP2I63OO.js → chunk-GCS3FZOB.js} +77 -3
- package/dist/{chunk-6TACQN3N.js → chunk-GDZB57IU.js} +5 -5
- package/dist/chunk-GIFMBCTW.js +221 -0
- package/dist/{chunk-YY6ZQQBP.js → chunk-GK4PYVEC.js} +18 -8
- package/dist/{chunk-TDD55CJH.js → chunk-GNWAOVFQ.js} +6 -5
- package/dist/chunk-GS76RXQE.js +226 -0
- package/dist/{chunk-YYQN46FY.js → chunk-GSGIZ2OO.js} +23 -23
- package/dist/chunk-GUYL7RMK.js +60 -0
- package/dist/chunk-GX74YWR7.js +321 -0
- package/dist/chunk-HE3HRDNZ.js +122 -0
- package/dist/{chunk-AIOQPLA5.js → chunk-HGHRSF3E.js} +30 -12
- package/dist/{chunk-2RMYG36Q.js → chunk-HK3VOHIE.js} +198 -336
- package/dist/{chunk-QZSX3F7C.js → chunk-HS4BGB4G.js} +24 -22
- package/dist/{chunk-XY3P7JW7.js → chunk-HSZMPH5T.js} +834 -149
- package/dist/{chunk-L6SGQIR3.js → chunk-HWD4JPU7.js} +4 -2
- package/dist/{chunk-PCVDV3UZ.js → chunk-HXXP2NTE.js} +6 -6
- package/dist/{chunk-AA6YULYB.js → chunk-I2A3Z5AK.js} +7 -7
- package/dist/{chunk-N7IXEHK3.js → chunk-ICHDSWEY.js} +7 -7
- package/dist/chunk-IFFRGC3N.js +31 -0
- package/dist/{chunk-4BN53TG3.js → chunk-IFHDV6KQ.js} +31 -23
- package/dist/chunk-J2O4LFVI.js +80 -0
- package/dist/chunk-J5AAZ6OJ.js +161 -0
- package/dist/{chunk-ZMFPW66A.js → chunk-JAABT3DA.js} +3 -3
- package/dist/chunk-JITJP64K.js +34 -0
- package/dist/chunk-JKIGL3XQ.js +162 -0
- package/dist/chunk-JRVNXLZP.js +615 -0
- package/dist/chunk-JRXHON4E.js +41 -0
- package/dist/{chunk-DHPACDG7.js → chunk-JS6WMC3J.js} +8 -8
- package/dist/chunk-JU4QNJSR.js +62 -0
- package/dist/{chunk-PAMPPUR6.js → chunk-JYMIB5XY.js} +1697 -172
- package/dist/{chunk-RRTKKSLQ.js → chunk-JYTIHTIK.js} +8 -6
- package/dist/{chunk-3HI6Z55Y.js → chunk-K332XW7K.js} +324 -39
- package/dist/{chunk-GLUX4EEP.js → chunk-K6JB6XTX.js} +9 -9
- package/dist/chunk-KDAHXQIE.js +294 -0
- package/dist/chunk-KYZMRSPS.js +93 -0
- package/dist/chunk-L4CESDPB.js +22 -0
- package/dist/{chunk-NXFPS2LR.js → chunk-LEBR5NHW.js} +14 -14
- package/dist/chunk-LIJJCBQI.js +223 -0
- package/dist/{chunk-DE76JROX.js → chunk-LIRVU3HW.js} +16 -16
- package/dist/{chunk-JMSCMUCA.js → chunk-LN77DXBM.js} +145 -21
- package/dist/{chunk-JIITQXFB.js → chunk-LNWEWYCM.js} +2969 -788
- package/dist/{chunk-TANFV3MZ.js → chunk-LO3BLMVG.js} +3 -3
- package/dist/chunk-LPV6T362.js +250 -0
- package/dist/{chunk-2VHF7OXM.js → chunk-LQH4P45K.js} +1 -1
- package/dist/chunk-LU4MQVAL.js +41 -0
- package/dist/chunk-LWDNKE4X.js +273 -0
- package/dist/chunk-M4H2UG4R.js +218 -0
- package/dist/{chunk-6BVONWJ7.js → chunk-M6D2U3YM.js} +3 -3
- package/dist/chunk-MD7KUEJ3.js +514 -0
- package/dist/{chunk-66YVAGGM.js → chunk-MMZUN7ZO.js} +20 -20
- package/dist/chunk-MZGRDONP.js +916 -0
- package/dist/chunk-N3RUGTGV.js +39 -0
- package/dist/{chunk-JGZCG5VM.js → chunk-NCB6656Z.js} +7 -7
- package/dist/{chunk-4NDAAFQT.js → chunk-NRQ65LTQ.js} +7 -5
- package/dist/{chunk-UNM6ZOKP.js → chunk-NTAVOWYD.js} +145 -18
- package/dist/{chunk-3USYZGRF.js → chunk-NYOABJNK.js} +36 -27
- package/dist/{chunk-WVPJSRRJ.js → chunk-O4IKAIZ2.js} +24 -20
- package/dist/{chunk-D3PO4DOZ.js → chunk-ODMBPDDV.js} +51 -14
- package/dist/chunk-OKUB6RJA.js +533 -0
- package/dist/chunk-OMPENNWY.js +39 -0
- package/dist/chunk-OPQZISG3.js +25 -0
- package/dist/{chunk-5GGOLAKC.js → chunk-OV57AHCG.js} +26 -26
- package/dist/chunk-OZJ3JLYI.js +58 -0
- package/dist/{chunk-KEM4SDDP.js → chunk-P2VBXX7N.js} +11 -10
- package/dist/{chunk-S2A7YC3Q.js → chunk-PAINMSID.js} +10150 -1720
- package/dist/chunk-PKJAV25S.js +43 -0
- package/dist/{chunk-EBEW3XXQ.js → chunk-PNQLCRSS.js} +4 -4
- package/dist/{chunk-WY6PP6AA.js → chunk-PQH56YF6.js} +37 -5
- package/dist/chunk-PRTBPXYA.js +50 -0
- package/dist/{chunk-YEDDOYSC.js → chunk-PRW3HXM3.js} +2 -2
- package/dist/chunk-PRZ7KMWL.js +42 -0
- package/dist/{chunk-6M5NK3K3.js → chunk-PTQ3ZALZ.js} +42 -4
- package/dist/{chunk-5GDRCDQB.js → chunk-PUEWDYGP.js} +2 -2
- package/dist/chunk-Q26LDIUV.js +236 -0
- package/dist/{chunk-CR3MTH32.js → chunk-Q46QDDMF.js} +77 -7
- package/dist/chunk-QBNWF5ZU.js +19 -0
- package/dist/chunk-QE527XRY.js +342 -0
- package/dist/{chunk-CNUKCS2T.js → chunk-QHJJMZLX.js} +1518 -54
- package/dist/chunk-QJCJOMW3.js +425 -0
- package/dist/{chunk-VYDBJ73M.js → chunk-QKMRFNMA.js} +15 -15
- package/dist/chunk-QOOEYDNJ.js +317 -0
- package/dist/chunk-QSIDVFB7.js +45 -0
- package/dist/{chunk-R77KLRB3.js → chunk-RA33EYS4.js} +19 -18
- package/dist/{chunk-DFBCSHVT.js → chunk-RALY3E5U.js} +4 -4
- package/dist/{chunk-ZCJDOK2S.js → chunk-S2RY3BOD.js} +35 -21
- package/dist/chunk-S5LSDXV4.js +40 -0
- package/dist/chunk-SB5GRUFM.js +54 -0
- package/dist/chunk-SH27FYPF.js +150 -0
- package/dist/chunk-T74WQQGS.js +40 -0
- package/dist/{chunk-O3WI5KWW.js → chunk-TGVVUKTG.js} +2 -2
- package/dist/chunk-THN26IEF.js +48 -0
- package/dist/chunk-TJH2EUAZ.js +47 -0
- package/dist/{chunk-ZNCEKR4J.js → chunk-TQ4TG57V.js} +12 -8
- package/dist/{chunk-7FBGJFEE.js → chunk-TQTRWENN.js} +12 -12
- package/dist/{chunk-TYAID7B7.js → chunk-TSM6T6GQ.js} +23 -23
- package/dist/{chunk-DPZHZQKE.js → chunk-TW3KOSQK.js} +43 -10
- package/dist/{chunk-MC3H7736.js → chunk-TWQRPM76.js} +37 -4
- package/dist/chunk-TYD6I4CZ.js +109 -0
- package/dist/chunk-U3NBK4EU.js +420 -0
- package/dist/{chunk-6JCPI55B.js → chunk-UDXWIPCB.js} +47 -7
- package/dist/{chunk-MMOSZPWJ.js → chunk-UEVZZZU2.js} +4 -4
- package/dist/{chunk-JBTK5OP2.js → chunk-UF4UHCIG.js} +2 -2
- package/dist/{chunk-6JUBZBMW.js → chunk-UFE36WJH.js} +4 -4
- package/dist/{chunk-ONLS5QA5.js → chunk-URIKUID7.js} +12 -12
- package/dist/chunk-UYLBRRFK.js +1106 -0
- package/dist/chunk-UZACEG2C.js +515 -0
- package/dist/{chunk-7SW2QWLU.js → chunk-VAMHOHUU.js} +12 -12
- package/dist/{chunk-RZPYKDWS.js → chunk-VUVGX5L2.js} +1 -1
- package/dist/{chunk-Q4D5X7QB.js → chunk-VYOCPTUB.js} +44 -24
- package/dist/{chunk-CAQZUNOH.js → chunk-WAZEXEJH.js} +567 -3
- package/dist/chunk-WCEF7H6L.js +221 -0
- package/dist/{chunk-2DIQQJCB.js → chunk-WEOMJHPV.js} +12 -12
- package/dist/{chunk-FHH4I4ZV.js → chunk-WFU77T3A.js} +12 -6
- package/dist/chunk-WIWTJMMR.js +292 -0
- package/dist/{chunk-2BFCZ3RK.js → chunk-WNTIOBOG.js} +18 -18
- package/dist/{chunk-7WD63HU2.js → chunk-X2CUXTWU.js} +6 -6
- package/dist/chunk-X7EMBM5X.js +34 -0
- package/dist/chunk-XEQCQO66.js +33 -0
- package/dist/{chunk-F7HYOUFF.js → chunk-XG4WJHLQ.js} +20 -4
- package/dist/{chunk-EFHQ3TWP.js → chunk-XOL3GFW2.js} +171 -31
- package/dist/{chunk-NE2W3OO7.js → chunk-XQ3YZ4QW.js} +22 -22
- package/dist/{chunk-CEXSU4S6.js → chunk-Y6K3CJBU.js} +723 -85
- package/dist/{chunk-4RS5KZQD.js → chunk-YAH5IQAL.js} +5 -5
- package/dist/{chunk-64EQYWCA.js → chunk-YBOVNMHC.js} +51 -14
- package/dist/chunk-YF5DZCPN.js +1212 -0
- package/dist/chunk-YIGBJNH4.js +37 -0
- package/dist/{chunk-BKVWTZ6A.js → chunk-YJ3TBOTK.js} +25 -25
- package/dist/{chunk-Q5AMFEWD.js → chunk-YKTE2RU3.js} +2 -2
- package/dist/{chunk-7EKXJZ2Y.js → chunk-YO2PKTXT.js} +296 -37
- package/dist/{chunk-6J5OKA4Y.js → chunk-YTTNTQOX.js} +15 -15
- package/dist/{chunk-OT2O76OS.js → chunk-YWAKDNMH.js} +183 -33
- package/dist/{chunk-R6XF6UR3.js → chunk-YZDZOEV4.js} +4 -4
- package/dist/chunk-Z3QFH7YG.js +17 -0
- package/dist/{chunk-W5BVQF44.js → chunk-Z6VLC5X4.js} +17 -17
- package/dist/{chunk-HLJAXMM4.js → chunk-ZFQMMU5Y.js} +2 -2
- package/dist/{chunk-W3BQAZ3Q.js → chunk-ZKYRDV7A.js} +12 -12
- package/dist/{chunk-ZMAINWBW.js → chunk-ZLS6PU2O.js} +3 -3
- package/dist/{chunk-ZVM6AKKM.js → chunk-ZOSD4FXV.js} +3 -3
- package/dist/chunk-ZPDDEVQX.js +47 -0
- package/dist/{chunk-TXLH6WHQ.js → chunk-ZQLRCA2V.js} +11 -11
- package/dist/{chunk-HITVBIJS.js → chunk-ZX7235KR.js} +128 -54
- package/dist/{chunk-GT4I4ZWM.js → chunk-ZZFHLRQW.js} +18 -16
- package/dist/files.json +636 -364
- package/dist/packages/naysayer/constitution/constitution.yaml +19 -0
- package/dist/packages/sdk/npm/index.js +5614 -2343
- package/dist/packages/ui/dist/assets/{elk-api-tma0MCuh.js → elk-api-CowTnhEJ.js} +2 -2
- package/dist/packages/ui/dist/assets/index-Dw20IRhQ.css +1 -0
- package/dist/packages/ui/dist/assets/index-z2wv0d5d.js +47 -0
- package/dist/packages/ui/dist/index.html +2 -2
- package/package.json +4 -4
- package/dist/chunk-2BF2EYJV.js +0 -174
- package/dist/chunk-42EVSKME.js +0 -37
- package/dist/chunk-4BKGMUIK.js +0 -53
- package/dist/chunk-5KLGBXG5.js +0 -48
- package/dist/chunk-6BNC6EQ4.js +0 -41
- package/dist/chunk-6D2CQ5II.js +0 -41
- package/dist/chunk-7AVHLZGD.js +0 -45
- package/dist/chunk-D46WUV3T.js +0 -33
- package/dist/chunk-E36QOJMD.js +0 -47
- package/dist/chunk-FQXYPF7E.js +0 -147
- package/dist/chunk-GBRFVT63.js +0 -45
- package/dist/chunk-ICY36XCH.js +0 -34
- package/dist/chunk-J4K3KVLD.js +0 -131
- package/dist/chunk-JZU3H6UQ.js +0 -54
- package/dist/chunk-NN2ZQEB4.js +0 -38
- package/dist/chunk-PCOCACY3.js +0 -385
- package/dist/chunk-RTEYOSJY.js +0 -29
- package/dist/chunk-RVH5SUW5.js +0 -69
- package/dist/chunk-VN3DP4LQ.js +0 -43
- package/dist/chunk-XPTOBS2D.js +0 -48
- package/dist/packages/ui/dist/assets/index-B54fm9FQ.js +0 -29
- package/dist/packages/ui/dist/assets/index-DD_hufQz.css +0 -1
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import { createRequire as __atticusCreateRequire } from "node:module";
|
|
2
|
+
import { fileURLToPath as __atticusFileURLToPath } from "node:url";
|
|
3
|
+
var require = __atticusCreateRequire(import.meta.url);
|
|
4
|
+
var __atticusUrl = (p) => new URL("./" + p, import.meta.url).href;
|
|
5
|
+
var __atticusPath = (p) => __atticusFileURLToPath(__atticusUrl(p));
|
|
6
|
+
import {
|
|
7
|
+
targetFlowsOf
|
|
8
|
+
} from "./chunk-GNWAOVFQ.js";
|
|
9
|
+
import "./chunk-5QUOPNLN.js";
|
|
10
|
+
import {
|
|
11
|
+
MAX_CHAIN_DEPTH,
|
|
12
|
+
changeImpact,
|
|
13
|
+
loadEstate
|
|
14
|
+
} from "./chunk-BEPCKDCP.js";
|
|
15
|
+
import "./chunk-HWD4JPU7.js";
|
|
16
|
+
import "./chunk-5WERBKLE.js";
|
|
17
|
+
import "./chunk-K332XW7K.js";
|
|
18
|
+
import "./chunk-HSZMPH5T.js";
|
|
19
|
+
import "./chunk-D2WSW4GU.js";
|
|
20
|
+
import "./chunk-4KNOJC6J.js";
|
|
21
|
+
import "./chunk-4SLBCEPD.js";
|
|
22
|
+
import "./chunk-64AADMTW.js";
|
|
23
|
+
import "./chunk-JYMIB5XY.js";
|
|
24
|
+
import "./chunk-CPK7QSBG.js";
|
|
25
|
+
import "./chunk-YO2PKTXT.js";
|
|
26
|
+
import "./chunk-TWQRPM76.js";
|
|
27
|
+
import {
|
|
28
|
+
loadRepos
|
|
29
|
+
} from "./chunk-XOL3GFW2.js";
|
|
30
|
+
import "./chunk-QHJJMZLX.js";
|
|
31
|
+
import "./chunk-7AB6OWTV.js";
|
|
32
|
+
import {
|
|
33
|
+
readTeams
|
|
34
|
+
} from "./chunk-PAINMSID.js";
|
|
35
|
+
import "./chunk-ODMBPDDV.js";
|
|
36
|
+
import "./chunk-TV45EUGM.js";
|
|
37
|
+
|
|
38
|
+
// packages/cli/dist/change-impact.js
|
|
39
|
+
var CHANGE_IMPACT_WORDS = {
|
|
40
|
+
usage: "Name the change: atticus change impact <change> [--json]",
|
|
41
|
+
noChange: (id) => `There is no change ${id}: atticus change list shows them.`,
|
|
42
|
+
noTargets: (id) => `${id} has no target flows yet, so there is nothing to weigh: run atticus change architecture ${id} first.`,
|
|
43
|
+
nothing: (id) => `${id}'s target flows break nothing the map shows: no entry or table they change loses a field, a caller or its type.`,
|
|
44
|
+
counts: (id, i) => `${id}: ${n(i.breaks, "caller")} ${i.breaks === 1 ? "breaks" : "break"}, ${n(i.mayBreak, "caller")} may break (link guessed), ${n(i.routes, "gateway route")} to update.`,
|
|
45
|
+
upstream: (u) => `Up the chain (who calls the callers): ${u.breaks} more ${u.breaks === 1 ? "breaks" : "break"}, ${u.mayBreak} may break (resting on a guessed link).`,
|
|
46
|
+
hopBreaks: (depth, via, who, owner, where) => `${" ".repeat(depth)}Breaks via ${via}: ${who}, owned by ${owner}${where ? `; ${where}` : ""}.`,
|
|
47
|
+
hopMayBreak: (depth, via, who, owner, rests, where) => `${" ".repeat(depth)}May break via ${via} (${rests}): ${who}, owned by ${owner}${where ? `; ${where}` : ""}. Not counted as a break.`,
|
|
48
|
+
restsOwn: (how) => `its own link guessed ${how}`,
|
|
49
|
+
restsOn: (who, how) => `rests on ${who}'s link, guessed ${how}`,
|
|
50
|
+
capped: (depth) => ` The walk up the chain stops at ${depth} hops; more callers are above the last ones listed.`,
|
|
51
|
+
item: (name, where, owner, why) => `${name} (${where}), owned by ${owner}: ${why.join("; ")}.`,
|
|
52
|
+
gone: (fields) => ` Stops crossing: ${fields.join(", ")}.`,
|
|
53
|
+
required: (fields) => ` Callers must now send: ${fields.join(", ")}.`,
|
|
54
|
+
breaks: (who, owner, where) => ` Breaks: ${who}, owned by ${owner}${where ? `; ${where}` : ""}.`,
|
|
55
|
+
mayBreak: (who, owner, how, where) => ` May break (link guessed ${how}): ${who}, owned by ${owner}${where ? `; ${where}` : ""}. Not counted as a break until someone confirms the link.`,
|
|
56
|
+
confirm: (rule, id) => ` The critic's ${rule} asks the caller's owner to confirm each guessed link: atticus critic ${id}.`,
|
|
57
|
+
nobody: " The map shows nobody calling or using it.",
|
|
58
|
+
route: (id, what, owner, callers) => ` Gateway route to update: ${id}${what}, owned by ${owner}; ${callers.join(", ")} ${callers.length === 1 ? "calls" : "call"} through it.`,
|
|
59
|
+
teams: "Teams to involve:",
|
|
60
|
+
team: (owner, repos) => ` ${owner}: ${repos.join(", ")}`,
|
|
61
|
+
problem: (p) => `Note: ${p}`
|
|
62
|
+
};
|
|
63
|
+
var GUESS_WORDS = {
|
|
64
|
+
"joined-by-path": "by path",
|
|
65
|
+
"joined-by-label": "by a host's first label",
|
|
66
|
+
"joined-by-platform-setting": "by a platform-wide setting",
|
|
67
|
+
"joined-by-folder-name": "by a setting's folder name",
|
|
68
|
+
"joined-despite-conflict": "despite an open host conflict",
|
|
69
|
+
"joined-by-service-name": "by a Service's short name"
|
|
70
|
+
};
|
|
71
|
+
function n(count, what) {
|
|
72
|
+
return `${count} ${what}${count === 1 ? "" : "s"}`;
|
|
73
|
+
}
|
|
74
|
+
function ownerText(o) {
|
|
75
|
+
if ("none" in o)
|
|
76
|
+
return `no team (${o.none})`;
|
|
77
|
+
return o.name ? `${o.team} (${o.name})` : o.team;
|
|
78
|
+
}
|
|
79
|
+
async function changeImpactOf(root, change) {
|
|
80
|
+
const t = await targetFlowsOf(root, change);
|
|
81
|
+
if (!t)
|
|
82
|
+
return void 0;
|
|
83
|
+
const problems = [...t.problems];
|
|
84
|
+
const owners = /* @__PURE__ */ new Map();
|
|
85
|
+
try {
|
|
86
|
+
for (const r of await loadRepos(root))
|
|
87
|
+
owners.set(r.id, r.owner);
|
|
88
|
+
} catch (e) {
|
|
89
|
+
problems.push(`the repo manifests: ${e.message.split("\n")[0]}`);
|
|
90
|
+
}
|
|
91
|
+
const read = await readTeams(root);
|
|
92
|
+
const teams = read.teams;
|
|
93
|
+
if (read.problem)
|
|
94
|
+
problems.push(read.problem);
|
|
95
|
+
const impact = changeImpact(change, t.deltas, await loadEstate(root, t.records), {
|
|
96
|
+
owners,
|
|
97
|
+
teams
|
|
98
|
+
});
|
|
99
|
+
return { ...impact, flows: t.deltas.length, problems };
|
|
100
|
+
}
|
|
101
|
+
function impactLines(i) {
|
|
102
|
+
const W = CHANGE_IMPACT_WORDS;
|
|
103
|
+
if (!i.flows)
|
|
104
|
+
return [W.noTargets(i.change), ...i.problems.map(W.problem)];
|
|
105
|
+
if (!i.items.length)
|
|
106
|
+
return [W.nothing(i.change), ...i.problems.map(W.problem)];
|
|
107
|
+
const out = [W.counts(i.change, i)];
|
|
108
|
+
if (i.upstream && (i.upstream.breaks || i.upstream.mayBreak))
|
|
109
|
+
out.push(W.upstream(i.upstream));
|
|
110
|
+
for (const it of i.items) {
|
|
111
|
+
out.push(W.item(it.name, it.kind === "table" ? `a table ${it.flow} writes` : it.flow, ownerText(it.owner), it.why));
|
|
112
|
+
if (it.fields.gone.length)
|
|
113
|
+
out.push(W.gone(it.fields.gone));
|
|
114
|
+
if (it.fields.required.length)
|
|
115
|
+
out.push(W.required(it.fields.required));
|
|
116
|
+
if (!it.callers.length)
|
|
117
|
+
out.push(W.nobody);
|
|
118
|
+
for (const c of it.callers) {
|
|
119
|
+
const where = [
|
|
120
|
+
...c.at.map((a) => `at ${a}`),
|
|
121
|
+
...c.flows.map((f) => `its flow ${f}`),
|
|
122
|
+
...c.routes.map((r) => `through ${r}`)
|
|
123
|
+
].join(", ");
|
|
124
|
+
out.push(c.verdict === "breaks" ? W.breaks(c.component, ownerText(c.owner), where) : W.mayBreak(c.component, ownerText(c.owner), GUESS_WORDS[c.guessed ?? ""] ?? "", where));
|
|
125
|
+
}
|
|
126
|
+
for (const h of it.chain ?? []) {
|
|
127
|
+
const via = `${h.via.join(", ")}${h.entries.length ? ` (${h.entries.join(", ")})` : ""}`;
|
|
128
|
+
const where = [
|
|
129
|
+
...h.at.map((a) => `at ${a}`),
|
|
130
|
+
...h.flows.map((f) => `its flow ${f}`),
|
|
131
|
+
...h.routes.map((r) => `through ${r}`)
|
|
132
|
+
].join(", ");
|
|
133
|
+
const how = GUESS_WORDS[h.guessed ?? ""] ?? "";
|
|
134
|
+
out.push(h.verdict === "breaks" ? W.hopBreaks(h.depth, via, h.component, ownerText(h.owner), where) : W.hopMayBreak(h.depth, via, h.component, ownerText(h.owner), h.restsOn ? W.restsOn(h.restsOn, how) : W.restsOwn(how), where));
|
|
135
|
+
}
|
|
136
|
+
if (it.capped)
|
|
137
|
+
out.push(W.capped(MAX_CHAIN_DEPTH));
|
|
138
|
+
if ([...it.callers, ...it.chain ?? []].some((c) => c.verdict === "may-break"))
|
|
139
|
+
out.push(W.confirm(i.rule, i.change));
|
|
140
|
+
for (const r of it.routes) {
|
|
141
|
+
const what = [r.proxy, r.basepath, r.repo ? `in ${r.repo}` : void 0].filter(Boolean).join(", ");
|
|
142
|
+
out.push(W.route(r.id, what ? ` (${what})` : "", ownerText(r.owner), r.callers));
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
out.push(W.teams, ...i.owners.map((o) => W.team(ownerText(o.owner), o.repos)));
|
|
146
|
+
out.push(...i.problems.map(W.problem));
|
|
147
|
+
return out;
|
|
148
|
+
}
|
|
149
|
+
async function changeImpactCli(root, change, o, io) {
|
|
150
|
+
if (!change) {
|
|
151
|
+
io.err(CHANGE_IMPACT_WORDS.usage);
|
|
152
|
+
return 2;
|
|
153
|
+
}
|
|
154
|
+
const i = await changeImpactOf(root, change);
|
|
155
|
+
if (!i) {
|
|
156
|
+
io.err(CHANGE_IMPACT_WORDS.noChange(change));
|
|
157
|
+
return 1;
|
|
158
|
+
}
|
|
159
|
+
if (o.json)
|
|
160
|
+
io.out(JSON.stringify(i, null, 2));
|
|
161
|
+
else
|
|
162
|
+
for (const l of impactLines(i))
|
|
163
|
+
io.out(l);
|
|
164
|
+
return 0;
|
|
165
|
+
}
|
|
166
|
+
export {
|
|
167
|
+
CHANGE_IMPACT_WORDS,
|
|
168
|
+
changeImpactCli,
|
|
169
|
+
changeImpactOf,
|
|
170
|
+
impactLines,
|
|
171
|
+
ownerText
|
|
172
|
+
};
|
|
@@ -9,8 +9,8 @@ import {
|
|
|
9
9
|
probeFileOf,
|
|
10
10
|
probeTier,
|
|
11
11
|
writeProbe
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import "./chunk-
|
|
12
|
+
} from "./chunk-3AQ2R5NL.js";
|
|
13
|
+
import "./chunk-XOL3GFW2.js";
|
|
14
14
|
import {
|
|
15
15
|
AssistantId,
|
|
16
16
|
external_exports,
|
|
@@ -18,8 +18,8 @@ import {
|
|
|
18
18
|
orgPackDirOf,
|
|
19
19
|
runsDirOf,
|
|
20
20
|
runsRelOf
|
|
21
|
-
} from "./chunk-
|
|
22
|
-
import "./chunk-
|
|
21
|
+
} from "./chunk-PAINMSID.js";
|
|
22
|
+
import "./chunk-ODMBPDDV.js";
|
|
23
23
|
import "./chunk-TV45EUGM.js";
|
|
24
24
|
|
|
25
25
|
// packages/cli/dist/probe-commands.js
|
|
@@ -10,17 +10,17 @@ import {
|
|
|
10
10
|
parseHeader,
|
|
11
11
|
renderAssistantFiles,
|
|
12
12
|
writeAssistantFiles
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-3AQ2R5NL.js";
|
|
14
14
|
import {
|
|
15
15
|
BUILT_IN_CHECKS,
|
|
16
16
|
STARTER_REVIEW_PATH,
|
|
17
17
|
starterReviewText
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-K332XW7K.js";
|
|
19
19
|
import {
|
|
20
20
|
changeFootprint,
|
|
21
21
|
changeStore,
|
|
22
22
|
loadChangeContext
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-HSZMPH5T.js";
|
|
24
24
|
import {
|
|
25
25
|
ORG_FLOW,
|
|
26
26
|
createOpenSpec,
|
|
@@ -28,23 +28,23 @@ import {
|
|
|
28
28
|
storeIdOf,
|
|
29
29
|
writeOrgFlowSchema,
|
|
30
30
|
writeStoreMarker
|
|
31
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-D2WSW4GU.js";
|
|
32
32
|
import {
|
|
33
33
|
readCatalog
|
|
34
|
-
} from "./chunk-
|
|
34
|
+
} from "./chunk-4SLBCEPD.js";
|
|
35
35
|
import {
|
|
36
36
|
componentExtractor
|
|
37
|
-
} from "./chunk-
|
|
37
|
+
} from "./chunk-TWQRPM76.js";
|
|
38
38
|
import {
|
|
39
39
|
createGit,
|
|
40
40
|
ensureGitignore
|
|
41
|
-
} from "./chunk-
|
|
41
|
+
} from "./chunk-XOL3GFW2.js";
|
|
42
42
|
import {
|
|
43
43
|
DEFAULT_IGNORES,
|
|
44
44
|
fsRepo,
|
|
45
45
|
memoryRepo,
|
|
46
46
|
runExtractor
|
|
47
|
-
} from "./chunk-
|
|
47
|
+
} from "./chunk-7AB6OWTV.js";
|
|
48
48
|
import {
|
|
49
49
|
ChangeLifecycle,
|
|
50
50
|
ChecklistPack,
|
|
@@ -61,10 +61,10 @@ import {
|
|
|
61
61
|
Sources,
|
|
62
62
|
loadOrgPack,
|
|
63
63
|
require_dist
|
|
64
|
-
} from "./chunk-
|
|
64
|
+
} from "./chunk-PAINMSID.js";
|
|
65
65
|
import {
|
|
66
66
|
LOCAL_ONLY
|
|
67
|
-
} from "./chunk-
|
|
67
|
+
} from "./chunk-ODMBPDDV.js";
|
|
68
68
|
import {
|
|
69
69
|
__toESM
|
|
70
70
|
} from "./chunk-TV45EUGM.js";
|
|
@@ -235,19 +235,6 @@ function pathsFor(root, adopted, layout) {
|
|
|
235
235
|
inputsDir: adopted ? join2(root, ATTICUS_DIR, "inputs") : join2(root, "inputs")
|
|
236
236
|
};
|
|
237
237
|
}
|
|
238
|
-
function inPlacePath(url) {
|
|
239
|
-
if (url === ".")
|
|
240
|
-
return ".";
|
|
241
|
-
if (url.startsWith("./")) {
|
|
242
|
-
const rest = url.slice(2).replace(/\/+$/, "");
|
|
243
|
-
if (rest === "")
|
|
244
|
-
return ".";
|
|
245
|
-
if (rest.split("/").includes(".."))
|
|
246
|
-
return void 0;
|
|
247
|
-
return rest;
|
|
248
|
-
}
|
|
249
|
-
return void 0;
|
|
250
|
-
}
|
|
251
238
|
|
|
252
239
|
// packages/adopt/dist/detect.js
|
|
253
240
|
var REPO_TYPES = [
|
|
@@ -755,7 +742,7 @@ var yaml = (data, header) => `${header ? `# ${header}
|
|
|
755
742
|
var DEFAULT_HEADER = "Built-in default written out by Atticus. Change it through a pull request; delete the file to go back to the default.";
|
|
756
743
|
var CHECKLISTS_README = "# Checklists\n\nCritic rule packs (contract C3), one YAML file per pack. The constitution is built in; packs here add organisation rules.\n";
|
|
757
744
|
var STARTER_CHECKLISTS_README = `${CHECKLISTS_README}
|
|
758
|
-
\`review.yaml\` is the starter review (ADR 0120): AI rules the critic's lenses apply to every draft, judging its meaning against the estate and the brief, and
|
|
745
|
+
\`review.yaml\` is the starter review (ADR 0120): AI rules the critic's lenses apply to every draft, judging its meaning against the estate and the brief, and three code checks (a call's timeout, a store write's rollback step, a story criterion from an attached note quoting the note's line). It is this organisation's configuration, not the constitution: change, waive or retire its rules, or delete one, through a pull request. Delete the file to turn the starter review off; \`atticus upgrade\` won't add it back.
|
|
759
746
|
`;
|
|
760
747
|
var FOLDER_READMES = [
|
|
761
748
|
[
|
|
@@ -1210,7 +1197,7 @@ async function unadopt(path) {
|
|
|
1210
1197
|
if (now === before[f])
|
|
1211
1198
|
continue;
|
|
1212
1199
|
const text2 = await readText(full) ?? "";
|
|
1213
|
-
const back = withoutSection(text2).find((t) => sha256(t) === before[f]);
|
|
1200
|
+
const back = withoutSection(text2).flatMap((t) => [t, t.replace(/\r?\n/g, "\r\n")]).find((t) => sha256(t) === before[f]);
|
|
1214
1201
|
if (back !== void 0) {
|
|
1215
1202
|
await writeFile4(full, back, "utf8");
|
|
1216
1203
|
res.restored.push(f);
|
|
@@ -2868,7 +2855,6 @@ export {
|
|
|
2868
2855
|
resolveMetarepo,
|
|
2869
2856
|
orgPackDirOf,
|
|
2870
2857
|
pathsFor,
|
|
2871
|
-
inPlacePath,
|
|
2872
2858
|
REPO_TYPES,
|
|
2873
2859
|
typeFromDescription,
|
|
2874
2860
|
typeFromFrameworks,
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { createRequire as __atticusCreateRequire } from "node:module";
|
|
2
|
+
import { fileURLToPath as __atticusFileURLToPath } from "node:url";
|
|
3
|
+
var require = __atticusCreateRequire(import.meta.url);
|
|
4
|
+
var __atticusUrl = (p) => new URL("./" + p, import.meta.url).href;
|
|
5
|
+
var __atticusPath = (p) => __atticusFileURLToPath(__atticusUrl(p));
|
|
6
|
+
import {
|
|
7
|
+
estateFacts,
|
|
8
|
+
measureLinks,
|
|
9
|
+
parseLinkReference
|
|
10
|
+
} from "./chunk-4SLBCEPD.js";
|
|
11
|
+
import "./chunk-64AADMTW.js";
|
|
12
|
+
import "./chunk-JYMIB5XY.js";
|
|
13
|
+
import "./chunk-CPK7QSBG.js";
|
|
14
|
+
import "./chunk-YO2PKTXT.js";
|
|
15
|
+
import "./chunk-TWQRPM76.js";
|
|
16
|
+
import "./chunk-XOL3GFW2.js";
|
|
17
|
+
import "./chunk-QHJJMZLX.js";
|
|
18
|
+
import "./chunk-7AB6OWTV.js";
|
|
19
|
+
import {
|
|
20
|
+
loadOrgPack,
|
|
21
|
+
orgPackDirOf
|
|
22
|
+
} from "./chunk-PAINMSID.js";
|
|
23
|
+
import "./chunk-ODMBPDDV.js";
|
|
24
|
+
import "./chunk-TV45EUGM.js";
|
|
25
|
+
|
|
26
|
+
// packages/cli/dist/measure-commands.js
|
|
27
|
+
import { readFile } from "node:fs/promises";
|
|
28
|
+
import { isAbsolute, resolve } from "node:path";
|
|
29
|
+
var MEASURE_WORDS = {
|
|
30
|
+
usage: "Usage: atticus join measure <reference.yaml> [--json] (docs/guide/measure.md)",
|
|
31
|
+
noFile: (file) => `There is no reference file at ${file}. List a few known repos' entries and calls in it (docs/guide/measure.md), then run atticus join measure again.`,
|
|
32
|
+
badFile: (file) => `${file} isn't a reference Atticus can read:`,
|
|
33
|
+
nothing: (file) => `${file} lists no calls or entries, so there is nothing to measure. List a few known repos' entries and calls (docs/guide/measure.md).`,
|
|
34
|
+
head: (file, m, repos) => `Measured against ${file}${m.estate ? ` (${m.estate})` : ""}: ${plural(repos, "repo")}, ${plural(m.reading.entries.want, "entry", "entries")} and ${plural(m.reading.calls.want, "call")} listed.`,
|
|
35
|
+
reading: (m) => `Reading: ${m.reading.entries.found} of ${plural(m.reading.entries.want, "entry", "entries")} and ${m.reading.calls.found} of ${plural(m.reading.calls.want, "call")} are in the facts${pct(m.reading.entries.found + m.reading.calls.found, m.reading.entries.want + m.reading.calls.want)}.`,
|
|
36
|
+
precision: (m) => m.links.precision === null ? "Join precision: no listed call is joined to a repo yet." : `Join precision ${m.links.precision}: ${m.links.right} of the ${plural(m.links.joined, "listed call")} joined to a repo reach the one you named.`,
|
|
37
|
+
recall: (m) => m.links.recall === null ? "Join recall: no listed call should reach a repo of the estate." : `Join recall ${m.links.recall}: ${m.links.right} of the ${plural(m.links.want, "call")} that should reach a repo of the estate do.`,
|
|
38
|
+
rest: (m) => [
|
|
39
|
+
`${m.links.asked} asked`,
|
|
40
|
+
`${m.links.inferred.joined} guessed (${m.links.inferred.right} right)`,
|
|
41
|
+
`${m.links.outside.right} of ${m.links.outside.want} outside right`,
|
|
42
|
+
...m.links.none.want ? [`${m.links.none.right} of ${m.links.none.want} "none" right`] : [],
|
|
43
|
+
`${m.links.unlinked} unlinked`,
|
|
44
|
+
...m.links.missed ? [`${m.links.missed} with no entry serving them`] : [],
|
|
45
|
+
`${m.links.notRead} not read`
|
|
46
|
+
].join(", ") + ".",
|
|
47
|
+
calls: "Each listed call:",
|
|
48
|
+
missed: "Listed but not in the facts (read the repo again, or check the line and path you wrote):",
|
|
49
|
+
readOnly: "Nothing was written."
|
|
50
|
+
};
|
|
51
|
+
var plural = (n, one, many = `${one}s`) => `${n} ${n === 1 ? one : many}`;
|
|
52
|
+
var pct = (a, b) => b ? ` (${Math.round(a / b * 100)}%)` : "";
|
|
53
|
+
var wantText = (w) => "repo" in w ? w.repo : "outside" in w ? `outside ${w.outside}` : "none";
|
|
54
|
+
function gotText(g) {
|
|
55
|
+
switch (g.kind) {
|
|
56
|
+
case "joined":
|
|
57
|
+
return `${g.repo} ${g.entry}${g.via?.length ? ` via ${g.via.join(", ")}` : ""}${g.inferred ? ` (a guess: ${g.inferred})` : ""}`;
|
|
58
|
+
case "outside":
|
|
59
|
+
return `outside ${g.system}`;
|
|
60
|
+
case "asked":
|
|
61
|
+
return `asked (${g.reason}): atticus questions`;
|
|
62
|
+
case "missed":
|
|
63
|
+
return `named ${g.target}, which serves nothing like it`;
|
|
64
|
+
case "unlinked":
|
|
65
|
+
return "nothing";
|
|
66
|
+
case "not-read":
|
|
67
|
+
return "not in the facts";
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
async function joinMeasure(root, file, o, io) {
|
|
71
|
+
if (!file) {
|
|
72
|
+
io.err(MEASURE_WORDS.usage);
|
|
73
|
+
return 2;
|
|
74
|
+
}
|
|
75
|
+
const path = isAbsolute(file) ? file : resolve(root, file);
|
|
76
|
+
const text = await readFile(path, "utf8").catch(() => void 0);
|
|
77
|
+
if (text === void 0) {
|
|
78
|
+
io.err(MEASURE_WORDS.noFile(file));
|
|
79
|
+
return 2;
|
|
80
|
+
}
|
|
81
|
+
const parsed = parseLinkReference(text);
|
|
82
|
+
if (!parsed.ok) {
|
|
83
|
+
io.err(MEASURE_WORDS.badFile(file));
|
|
84
|
+
for (const i of parsed.issues)
|
|
85
|
+
io.err(` ${i}`);
|
|
86
|
+
return 2;
|
|
87
|
+
}
|
|
88
|
+
const ref = parsed.reference;
|
|
89
|
+
if (!ref.repos.some((r) => r.calls.length || r.entries.length)) {
|
|
90
|
+
io.err(MEASURE_WORDS.nothing(file));
|
|
91
|
+
return 2;
|
|
92
|
+
}
|
|
93
|
+
const op = await loadOrgPack(orgPackDirOf(root));
|
|
94
|
+
const estate = await estateFacts(root, op, "");
|
|
95
|
+
const m = measureLinks({ op, repos: estate.repos, targets: estate.targets, reference: ref });
|
|
96
|
+
const notes = [...estate.notes, ...m.notes];
|
|
97
|
+
if (o.json) {
|
|
98
|
+
io.out(JSON.stringify({ reference: file, ...m, notes }, null, 2));
|
|
99
|
+
return 0;
|
|
100
|
+
}
|
|
101
|
+
io.out(MEASURE_WORDS.head(file, m, ref.repos.length));
|
|
102
|
+
io.out(MEASURE_WORDS.reading(m));
|
|
103
|
+
io.out(MEASURE_WORDS.precision(m));
|
|
104
|
+
io.out(MEASURE_WORDS.recall(m));
|
|
105
|
+
io.out(MEASURE_WORDS.rest(m));
|
|
106
|
+
if (m.calls.length) {
|
|
107
|
+
io.out("");
|
|
108
|
+
io.out(MEASURE_WORDS.calls);
|
|
109
|
+
for (const c of m.calls)
|
|
110
|
+
io.out(` ${c.right ? "ok" : "--"} ${c.repo} ${c.call}: wanted ${wantText(c.want)}, got ${gotText(c.got)}`);
|
|
111
|
+
}
|
|
112
|
+
if (m.reading.missed.length) {
|
|
113
|
+
io.out("");
|
|
114
|
+
io.out(MEASURE_WORDS.missed);
|
|
115
|
+
for (const x of m.reading.missed)
|
|
116
|
+
io.out(` ${x}`);
|
|
117
|
+
}
|
|
118
|
+
if (notes.length) {
|
|
119
|
+
io.out("");
|
|
120
|
+
for (const n of notes)
|
|
121
|
+
io.out(n);
|
|
122
|
+
}
|
|
123
|
+
io.out("");
|
|
124
|
+
io.out(MEASURE_WORDS.readOnly);
|
|
125
|
+
return 0;
|
|
126
|
+
}
|
|
127
|
+
export {
|
|
128
|
+
MEASURE_WORDS,
|
|
129
|
+
joinMeasure
|
|
130
|
+
};
|
|
@@ -5,17 +5,17 @@ var __atticusUrl = (p) => new URL("./" + p, import.meta.url).href;
|
|
|
5
5
|
var __atticusPath = (p) => __atticusFileURLToPath(__atticusUrl(p));
|
|
6
6
|
import {
|
|
7
7
|
changeStore
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-HSZMPH5T.js";
|
|
9
9
|
import {
|
|
10
10
|
ManualNotifier,
|
|
11
11
|
fileStepStore
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-4KNOJC6J.js";
|
|
13
13
|
import {
|
|
14
14
|
readCatalog
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-4SLBCEPD.js";
|
|
16
16
|
import {
|
|
17
17
|
readServiceRequestExports
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-CPK7QSBG.js";
|
|
19
19
|
import {
|
|
20
20
|
Initiative,
|
|
21
21
|
IsoDate,
|
|
@@ -32,10 +32,11 @@ import {
|
|
|
32
32
|
serializeRecord,
|
|
33
33
|
stateDirOf,
|
|
34
34
|
toCanonicalYaml
|
|
35
|
-
} from "./chunk-
|
|
35
|
+
} from "./chunk-PAINMSID.js";
|
|
36
36
|
import {
|
|
37
|
-
SCHEMA_VERSION
|
|
38
|
-
|
|
37
|
+
SCHEMA_VERSION,
|
|
38
|
+
renameRetrying
|
|
39
|
+
} from "./chunk-ODMBPDDV.js";
|
|
39
40
|
import {
|
|
40
41
|
__toESM
|
|
41
42
|
} from "./chunk-TV45EUGM.js";
|
|
@@ -717,7 +718,7 @@ var stepsOf = (j) => j.phases.flatMap((p) => p.steps.map((s) => ({ ...s, phase:
|
|
|
717
718
|
|
|
718
719
|
// packages/initiatives/dist/store.js
|
|
719
720
|
var import_yaml2 = __toESM(require_dist(), 1);
|
|
720
|
-
import { mkdir, readFile as readFile2,
|
|
721
|
+
import { mkdir, readFile as readFile2, rm, writeFile } from "node:fs/promises";
|
|
721
722
|
import { dirname, join as join2 } from "node:path";
|
|
722
723
|
var curatedDirOf = (root) => join2(catalogDirOf(root), "curated");
|
|
723
724
|
var initiativesDirOf = (root) => join2(stateDirOf(root), "initiatives");
|
|
@@ -736,7 +737,7 @@ async function writeAtomic(path, text) {
|
|
|
736
737
|
const tmp = `${path}.tmp`;
|
|
737
738
|
try {
|
|
738
739
|
await writeFile(tmp, text, "utf8");
|
|
739
|
-
await
|
|
740
|
+
await renameRetrying(tmp, path);
|
|
740
741
|
} catch (e) {
|
|
741
742
|
await rm(tmp, { force: true });
|
|
742
743
|
throw e;
|
|
@@ -854,6 +855,44 @@ async function readPlan(root, id) {
|
|
|
854
855
|
throw new InitiativeError(`initiatives/${id}/plan.yaml: ${r.error.issues.map((i) => `${i.path.join(".")} ${i.message}`).join("; ")}`);
|
|
855
856
|
return r.data;
|
|
856
857
|
}
|
|
858
|
+
var CommitmentNote = external_exports.strictObject({
|
|
859
|
+
at: IsoDateTime,
|
|
860
|
+
by: external_exports.string().min(1),
|
|
861
|
+
commitment: RecordId,
|
|
862
|
+
status: external_exports.enum(["open", "at-risk", "done", "slipped"]),
|
|
863
|
+
note: external_exports.string().min(1)
|
|
864
|
+
});
|
|
865
|
+
var NotesFile = external_exports.strictObject({
|
|
866
|
+
schemaVersion: external_exports.literal(1),
|
|
867
|
+
initiative: RecordId,
|
|
868
|
+
notes: external_exports.array(CommitmentNote).default([])
|
|
869
|
+
});
|
|
870
|
+
var notesPath = (root, id) => join2(initiativeDir(root, id), "notes.yaml");
|
|
871
|
+
async function readNotes(root, id) {
|
|
872
|
+
let text;
|
|
873
|
+
try {
|
|
874
|
+
text = await readFile2(notesPath(root, id), "utf8");
|
|
875
|
+
} catch {
|
|
876
|
+
return [];
|
|
877
|
+
}
|
|
878
|
+
const r = NotesFile.safeParse((0, import_yaml2.parse)(text));
|
|
879
|
+
if (!r.success)
|
|
880
|
+
throw new InitiativeError(`initiatives/${id}/notes.yaml: ${r.error.issues.map((i) => `${i.path.join(".")} ${i.message}`).join("; ")}`);
|
|
881
|
+
return r.data.notes;
|
|
882
|
+
}
|
|
883
|
+
async function appendNote(root, id, note) {
|
|
884
|
+
const notes = [...await readNotes(root, id), CommitmentNote.parse(note)];
|
|
885
|
+
await writeAtomic(notesPath(root, id), toCanonicalYaml(NotesFile.parse({ schemaVersion: 1, initiative: id, notes }), [
|
|
886
|
+
"schemaVersion",
|
|
887
|
+
"initiative",
|
|
888
|
+
"at",
|
|
889
|
+
"by",
|
|
890
|
+
"commitment",
|
|
891
|
+
"status",
|
|
892
|
+
"note"
|
|
893
|
+
]));
|
|
894
|
+
return `initiatives/${id}/notes.yaml`;
|
|
895
|
+
}
|
|
857
896
|
var slugOf = (s) => s.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "").slice(0, 80).replace(/-+$/, "");
|
|
858
897
|
|
|
859
898
|
// packages/initiatives/dist/dates.js
|
|
@@ -1285,6 +1324,9 @@ async function initiativeStatus(root, id, o = {}) {
|
|
|
1285
1324
|
}
|
|
1286
1325
|
const commitmentRecords = view.all("Commitment").filter((c) => c.initiative === id);
|
|
1287
1326
|
const recordOf = new Map(commitmentRecords.map((c) => [c.id, c]));
|
|
1327
|
+
const lastNote = /* @__PURE__ */ new Map();
|
|
1328
|
+
for (const n of await readNotes(root, id))
|
|
1329
|
+
lastNote.set(n.commitment, { at: n.at, by: n.by, status: n.status, note: n.note });
|
|
1288
1330
|
const items = [];
|
|
1289
1331
|
let projectedRelease;
|
|
1290
1332
|
if (plan) {
|
|
@@ -1331,9 +1373,14 @@ async function initiativeStatus(root, id, o = {}) {
|
|
|
1331
1373
|
const d = done.get(i.key);
|
|
1332
1374
|
const finish = ef.get(i.key);
|
|
1333
1375
|
const float = d ? 0 : workingDays(finish, lf.get(i.key));
|
|
1334
|
-
|
|
1376
|
+
let status2 = d ? "done" : today > i.due ? "slipped" : finish > i.due ? "at-risk" : "open";
|
|
1377
|
+
const said = i.commitment ? commitmentRecords.find((c) => c.id === i.commitment)?.commitmentStatus : void 0;
|
|
1378
|
+
const recorded = said === "at-risk" || said === "slipped" ? said : void 0;
|
|
1379
|
+
const rank = { slipped: 3, "at-risk": 2 };
|
|
1380
|
+
if (!d && recorded && rank[recorded] > (rank[status2] ?? 0))
|
|
1381
|
+
status2 = recorded;
|
|
1335
1382
|
const lateBefore = i.after.filter((a) => !done.get(a) && ef.get(a) > byKey.get(a).due);
|
|
1336
|
-
const why = status2 === "done" ? "Done." : status2 === "slipped" ? `Due ${i.due} and not done.` : status2 === "at-risk" ? `Projected to finish ${finish}, after its due date ${i.due}${lateBefore.length ? `, because ${lateBefore.join(", ")} ${lateBefore.length === 1 ? "is" : "are"} late` : ""}.` : `On plan: due ${i.due}.`;
|
|
1383
|
+
const why = status2 === "done" ? "Done." : recorded && status2 === recorded ? recorded === "slipped" ? "Recorded as slipped." : "Recorded as at risk." : status2 === "slipped" ? `Due ${i.due} and not done.` : status2 === "at-risk" ? `Projected to finish ${finish}, after its due date ${i.due}${lateBefore.length ? `, because ${lateBefore.join(", ")} ${lateBefore.length === 1 ? "is" : "are"} late` : ""}.` : `On plan: due ${i.due}.`;
|
|
1337
1384
|
items.push({
|
|
1338
1385
|
key: i.key,
|
|
1339
1386
|
kind: i.kind,
|
|
@@ -1377,6 +1424,13 @@ async function initiativeStatus(root, id, o = {}) {
|
|
|
1377
1424
|
[status2, why] = ["at-risk", `Needed by ${c.neededBy}: two working days or less left.`];
|
|
1378
1425
|
else
|
|
1379
1426
|
[status2, why] = ["open", `Needed by ${c.neededBy}.`];
|
|
1427
|
+
const rank = { slipped: 3, "at-risk": 2 };
|
|
1428
|
+
const said = c.commitmentStatus;
|
|
1429
|
+
if ((said === "at-risk" || said === "slipped") && rank[said] > (rank[status2] ?? 0))
|
|
1430
|
+
[status2, why] = [
|
|
1431
|
+
said,
|
|
1432
|
+
said === "slipped" ? "Recorded as slipped." : "Recorded as at risk."
|
|
1433
|
+
];
|
|
1380
1434
|
return {
|
|
1381
1435
|
id: c.id,
|
|
1382
1436
|
what: c.what,
|
|
@@ -1384,7 +1438,8 @@ async function initiativeStatus(root, id, o = {}) {
|
|
|
1384
1438
|
neededBy: c.neededBy,
|
|
1385
1439
|
recorded: c.commitmentStatus,
|
|
1386
1440
|
status: status2,
|
|
1387
|
-
why
|
|
1441
|
+
why,
|
|
1442
|
+
...lastNote.get(c.id) ? { note: lastNote.get(c.id) } : {}
|
|
1388
1443
|
};
|
|
1389
1444
|
});
|
|
1390
1445
|
const changes = initiative.changes.map((c) => {
|
|
@@ -1442,7 +1497,19 @@ async function recordCommitment(root, id, o) {
|
|
|
1442
1497
|
const by = o.by.replace(/^@/, "");
|
|
1443
1498
|
const evidence = c.evidence.some((e) => e.source === "manual" && e.by === by) ? c.evidence : [...c.evidence, ...manualEvidence(by)];
|
|
1444
1499
|
const updated = { ...c, commitmentStatus: o.status, evidence };
|
|
1445
|
-
|
|
1500
|
+
const written = await writeCurated(root, updated);
|
|
1501
|
+
const note = o.note?.trim();
|
|
1502
|
+
if (!note)
|
|
1503
|
+
return { commitment: updated, written };
|
|
1504
|
+
const at = (o.now ?? /* @__PURE__ */ new Date()).toISOString().replace(/\.\d{3}Z$/, "Z");
|
|
1505
|
+
const notes = await appendNote(root, c.initiative, {
|
|
1506
|
+
at,
|
|
1507
|
+
by,
|
|
1508
|
+
commitment: id,
|
|
1509
|
+
status: o.status,
|
|
1510
|
+
note
|
|
1511
|
+
});
|
|
1512
|
+
return { commitment: updated, written, notes };
|
|
1446
1513
|
}
|
|
1447
1514
|
|
|
1448
1515
|
// packages/initiatives/dist/card.js
|
|
@@ -1599,6 +1666,7 @@ export {
|
|
|
1599
1666
|
workingDays,
|
|
1600
1667
|
laterOf,
|
|
1601
1668
|
JOURNEYS,
|
|
1669
|
+
initiativesDirOf,
|
|
1602
1670
|
InitiativeError,
|
|
1603
1671
|
readView,
|
|
1604
1672
|
readPlan,
|