@hawkeyexl/manni 4.5.0 → 4.7.0
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/README.md +1 -1
- package/dist/batch-U6S2JUUN.js +41 -0
- package/dist/build-4RN6WBCP.js +32 -0
- package/dist/calibrate-6VIZYR4L.js +36 -0
- package/dist/capture-DP3NXAZE.js +34 -0
- package/dist/{check-RQIIIURI.js → check-ERVNGKLC.js} +13 -14
- package/dist/check-IWHUPAZM.js +886 -0
- package/dist/check-IWHUPAZM.js.map +1 -0
- package/dist/{check-ESNS7ZBC.js → check-OAJWC3WD.js} +7 -5
- package/dist/check-STHXZIZO.js +26 -0
- package/dist/{chunk-TA42STP7.js → chunk-2ZWTSRE5.js} +4 -4
- package/dist/{chunk-F2OVHJNC.js → chunk-4Z2MN5FR.js} +11 -11
- package/dist/{chunk-HVFR66GQ.js → chunk-5UB47BEV.js} +3280 -283
- package/dist/chunk-5UB47BEV.js.map +1 -0
- package/dist/{chunk-TCC737IS.js → chunk-5VWDIWOH.js} +4 -4
- package/dist/{chunk-B7XUEQF3.js → chunk-6KKZXB2O.js} +7 -5
- package/dist/{chunk-B7XUEQF3.js.map → chunk-6KKZXB2O.js.map} +1 -1
- package/dist/{chunk-ELZ2IIOF.js → chunk-6URSCTTX.js} +2 -2
- package/dist/{chunk-K3U5F2QT.js → chunk-6VDBP5UV.js} +12 -12
- package/dist/chunk-7EL5LLKD.js +233 -0
- package/dist/chunk-7EL5LLKD.js.map +1 -0
- package/dist/{chunk-C3KI45RF.js → chunk-7XZ6INKO.js} +4 -4
- package/dist/{chunk-ZX43SRZR.js → chunk-AMEILOVV.js} +8 -6
- package/dist/{chunk-ZX43SRZR.js.map → chunk-AMEILOVV.js.map} +1 -1
- package/dist/{chunk-SNEHX4VE.js → chunk-B5CMM57M.js} +2 -2
- package/dist/chunk-BWCWTHYS.js +146 -0
- package/dist/chunk-BWCWTHYS.js.map +1 -0
- package/dist/{chunk-QLUMKWQQ.js → chunk-C2TJG5KV.js} +10 -6
- package/dist/{chunk-QLUMKWQQ.js.map → chunk-C2TJG5KV.js.map} +1 -1
- package/dist/{chunk-GAZFKZHM.js → chunk-CEVU3GFF.js} +6 -6
- package/dist/chunk-CI55ABCK.js +502 -0
- package/dist/chunk-CI55ABCK.js.map +1 -0
- package/dist/{chunk-QCBICNKC.js → chunk-CR3HZERW.js} +202 -54
- package/dist/chunk-CR3HZERW.js.map +1 -0
- package/dist/chunk-CU57HT2E.js +116 -0
- package/dist/chunk-CU57HT2E.js.map +1 -0
- package/dist/chunk-CWXZ2MRT.js +222 -0
- package/dist/chunk-CWXZ2MRT.js.map +1 -0
- package/dist/chunk-D2LBN44V.js +134 -0
- package/dist/chunk-D2LBN44V.js.map +1 -0
- package/dist/chunk-D6RO54QD.js +674 -0
- package/dist/chunk-D6RO54QD.js.map +1 -0
- package/dist/{chunk-52PDIZKV.js → chunk-ECVQNGTH.js} +3 -3
- package/dist/chunk-FQGLRJGX.js +174 -0
- package/dist/chunk-FQGLRJGX.js.map +1 -0
- package/dist/{chunk-NGK3N6F2.js → chunk-GCC52YZD.js} +3 -3
- package/dist/chunk-HX44GB4Z.js +30 -0
- package/dist/chunk-HX44GB4Z.js.map +1 -0
- package/dist/{chunk-NN4ASVTY.js → chunk-IIFADWWI.js} +4 -4
- package/dist/{chunk-OIZ3XMKB.js → chunk-IOL74S4J.js} +4 -4
- package/dist/{chunk-UK2I3ACY.js → chunk-IZBBXKMJ.js} +4 -4
- package/dist/{chunk-YA63PVWI.js → chunk-K52CS4KT.js} +12 -10
- package/dist/{chunk-YA63PVWI.js.map → chunk-K52CS4KT.js.map} +1 -1
- package/dist/{chunk-7OQAU4EA.js → chunk-LDKIIZDW.js} +16 -12
- package/dist/{chunk-7OQAU4EA.js.map → chunk-LDKIIZDW.js.map} +1 -1
- package/dist/{chunk-QY3DOZMS.js → chunk-LONRQBGV.js} +4 -4
- package/dist/{chunk-EL2BZTDL.js → chunk-LXJEAV2V.js} +13 -11
- package/dist/{chunk-EL2BZTDL.js.map → chunk-LXJEAV2V.js.map} +1 -1
- package/dist/{chunk-XWFNO5PO.js → chunk-MIBWI5H7.js} +3 -3
- package/dist/{chunk-527HHQPS.js → chunk-MSMB6XOS.js} +6 -4
- package/dist/{chunk-527HHQPS.js.map → chunk-MSMB6XOS.js.map} +1 -1
- package/dist/{chunk-C6HZ6C5T.js → chunk-NIFEEIGQ.js} +2 -2
- package/dist/{chunk-JQU7FHYH.js → chunk-NZ6TNSCU.js} +10 -10
- package/dist/{chunk-3R5Y3XOL.js → chunk-OOEMKOX6.js} +29 -591
- package/dist/chunk-OOEMKOX6.js.map +1 -0
- package/dist/{chunk-MZC62HPZ.js → chunk-PAOVVHQX.js} +2 -2
- package/dist/chunk-PNX43DYW.js +849 -0
- package/dist/chunk-PNX43DYW.js.map +1 -0
- package/dist/chunk-QCHVR4ZM.js +286 -0
- package/dist/chunk-QCHVR4ZM.js.map +1 -0
- package/dist/{chunk-SJO2FTPG.js → chunk-QP5X66TO.js} +73 -1304
- package/dist/chunk-QP5X66TO.js.map +1 -0
- package/dist/{chunk-HQFVJDEN.js → chunk-QQNPVW3J.js} +19 -19
- package/dist/chunk-TPVOOTMN.js +532 -0
- package/dist/chunk-TPVOOTMN.js.map +1 -0
- package/dist/{chunk-IA7BMIPE.js → chunk-UZKQSWHJ.js} +2 -2
- package/dist/chunk-WQWKYAAK.js +86 -0
- package/dist/chunk-WQWKYAAK.js.map +1 -0
- package/dist/{chunk-CP4ZM43V.js → chunk-WTEILBKC.js} +2 -2
- package/dist/{chunk-LJ2RDH3F.js → chunk-XG6PVB5S.js} +1 -23
- package/dist/chunk-XG6PVB5S.js.map +1 -0
- package/dist/{chunk-Q35YIDBV.js → chunk-XKBEHKWO.js} +29 -264
- package/dist/chunk-XKBEHKWO.js.map +1 -0
- package/dist/{chunk-BOIF2XGG.js → chunk-XXDXIIQ4.js} +2 -2
- package/dist/{chunk-6XTQDFGP.js → chunk-YSCZL4U5.js} +3 -3
- package/dist/{chunk-6XTQDFGP.js.map → chunk-YSCZL4U5.js.map} +1 -1
- package/dist/{chunk-7ZUCEMCY.js → chunk-ZEXGGGLW.js} +9 -11
- package/dist/{chunk-7ZUCEMCY.js.map → chunk-ZEXGGGLW.js.map} +1 -1
- package/dist/{chunk-DX32P2DT.js → chunk-ZKAKA54B.js} +2 -2
- package/dist/{chunk-TVIX653Q.js → chunk-ZKCNPKUO.js} +4 -4
- package/dist/{chunk-DE7JSWXV.js → chunk-ZNE25EAR.js} +8 -6
- package/dist/{chunk-DE7JSWXV.js.map → chunk-ZNE25EAR.js.map} +1 -1
- package/dist/{chunk-FLF6AECQ.js → chunk-ZPP75QWG.js} +17 -15
- package/dist/{chunk-FLF6AECQ.js.map → chunk-ZPP75QWG.js.map} +1 -1
- package/dist/{cli-PRZHQ3QB.js → cli-37SRAYNE.js} +14 -15
- package/dist/{cli-PRZHQ3QB.js.map → cli-37SRAYNE.js.map} +1 -1
- package/dist/{cli-TYGOHJOJ.js → cli-HXWYUKGJ.js} +225 -58
- package/dist/cli-HXWYUKGJ.js.map +1 -0
- package/dist/{cli-HUIMNJT6.js → cli-IRHPPUFJ.js} +19 -20
- package/dist/{cli-HUIMNJT6.js.map → cli-IRHPPUFJ.js.map} +1 -1
- package/dist/{cli-6PGVHP7Y.js → cli-KIID535Y.js} +17 -19
- package/dist/{cli-6PGVHP7Y.js.map → cli-KIID535Y.js.map} +1 -1
- package/dist/{cli-AAG3N4NB.js → cli-MTDGQIIV.js} +17 -18
- package/dist/{cli-AAG3N4NB.js.map → cli-MTDGQIIV.js.map} +1 -1
- package/dist/{cli-E3H6ZP4I.js → cli-NM6FZ54R.js} +5 -3
- package/dist/{cli-E3H6ZP4I.js.map → cli-NM6FZ54R.js.map} +1 -1
- package/dist/{cli-MHTYPVOD.js → cli-XIODOEUG.js} +113 -20
- package/dist/{cli-MHTYPVOD.js.map → cli-XIODOEUG.js.map} +1 -1
- package/dist/{cli-YW6VWBHX.js → cli-YL3IDR52.js} +10 -10
- package/dist/{cli-QKIJOXGW.js → cli-ZQUJYQBA.js} +17 -17
- package/dist/cli.js +11 -11
- package/dist/config-O6UBGEDK.js +26 -0
- package/dist/conformance-ALLPNGEQ.js +18 -0
- package/dist/docmeta.js +9 -9
- package/dist/github-UCYLM3DR.js +26 -0
- package/dist/github-VEJFO6JJ.js +31 -0
- package/dist/host-6GURH5HE.js +23 -0
- package/dist/index.d.ts +72 -4
- package/dist/index.js +176 -166
- package/dist/index.js.map +1 -1
- package/dist/{json-4DCKDGUV.js → json-6F52FSXZ.js} +12 -13
- package/dist/lint-X2GNINK6.js +29 -0
- package/dist/list-DP3O3CWB.js +30 -0
- package/dist/list-P77RZFZF.js +28 -0
- package/dist/{page-QEDB7EVU.js → page-WQCMBNRD.js} +11 -12
- package/dist/prepare-52QOK7M4.js +155 -0
- package/dist/prepare-52QOK7M4.js.map +1 -0
- package/dist/{pretty-SQX33UM2.js → pretty-5MMMNSWF.js} +13 -14
- package/dist/{pretty-5DGEBZSV.js → pretty-H4DQREMW.js} +12 -13
- package/dist/provider-AMGRDY6V.js +34 -0
- package/dist/release-CTYRHZL4.js +36 -0
- package/dist/release-CTYRHZL4.js.map +1 -0
- package/dist/{reporters-YELDDYJD.js → reporters-SU3VUKKX.js} +7 -5
- package/dist/{reporters-OHSI3RMV.js → reporters-WIHBEMPG.js} +11 -12
- package/dist/reporters-WIHBEMPG.js.map +1 -0
- package/dist/run-L2DWJ26K.js +32 -0
- package/dist/run-L2DWJ26K.js.map +1 -0
- package/dist/{term-2WMDZ4PY.js → term-PJIJQZNF.js} +16 -17
- package/dist/{term-2WMDZ4PY.js.map → term-PJIJQZNF.js.map} +1 -1
- package/dist/validate-XCDSPURG.js +17 -0
- package/dist/validate-XCDSPURG.js.map +1 -0
- package/package.json +2 -2
- package/plugin/manni/.claude-plugin/plugin.json +1 -1
- package/plugin/manni/hooks/hooks.json +47 -0
- package/dist/batch-GOE3UXOD.js +0 -36
- package/dist/build-M7BMEHL2.js +0 -33
- package/dist/calibrate-6RRAILUY.js +0 -31
- package/dist/capture-RJPQ6B4N.js +0 -32
- package/dist/check-BQD64X3N.js +0 -27
- package/dist/chunk-3R5Y3XOL.js.map +0 -1
- package/dist/chunk-3YHAYXBC.js +0 -164
- package/dist/chunk-3YHAYXBC.js.map +0 -1
- package/dist/chunk-HVFR66GQ.js.map +0 -1
- package/dist/chunk-LJ2RDH3F.js.map +0 -1
- package/dist/chunk-NAZRLJAK.js +0 -3090
- package/dist/chunk-NAZRLJAK.js.map +0 -1
- package/dist/chunk-Q35YIDBV.js.map +0 -1
- package/dist/chunk-QCBICNKC.js.map +0 -1
- package/dist/chunk-SJO2FTPG.js.map +0 -1
- package/dist/chunk-TU2WUBVZ.js +0 -2
- package/dist/cli-TYGOHJOJ.js.map +0 -1
- package/dist/github-3WMSTNTK.js +0 -32
- package/dist/github-OXSJQ4PS.js +0 -27
- package/dist/lint-YDHVVZHT.js +0 -30
- package/dist/list-3ZO2NIYO.js +0 -31
- package/dist/list-EJH6VAOW.js +0 -29
- package/dist/run-IP6NZHAG.js +0 -33
- package/dist/validate-G6HH3YXL.js +0 -16
- /package/dist/{batch-GOE3UXOD.js.map → batch-U6S2JUUN.js.map} +0 -0
- /package/dist/{build-M7BMEHL2.js.map → build-4RN6WBCP.js.map} +0 -0
- /package/dist/{calibrate-6RRAILUY.js.map → calibrate-6VIZYR4L.js.map} +0 -0
- /package/dist/{capture-RJPQ6B4N.js.map → capture-DP3NXAZE.js.map} +0 -0
- /package/dist/{check-BQD64X3N.js.map → check-ERVNGKLC.js.map} +0 -0
- /package/dist/{check-ESNS7ZBC.js.map → check-OAJWC3WD.js.map} +0 -0
- /package/dist/{check-RQIIIURI.js.map → check-STHXZIZO.js.map} +0 -0
- /package/dist/{chunk-TA42STP7.js.map → chunk-2ZWTSRE5.js.map} +0 -0
- /package/dist/{chunk-F2OVHJNC.js.map → chunk-4Z2MN5FR.js.map} +0 -0
- /package/dist/{chunk-TCC737IS.js.map → chunk-5VWDIWOH.js.map} +0 -0
- /package/dist/{chunk-ELZ2IIOF.js.map → chunk-6URSCTTX.js.map} +0 -0
- /package/dist/{chunk-K3U5F2QT.js.map → chunk-6VDBP5UV.js.map} +0 -0
- /package/dist/{chunk-C3KI45RF.js.map → chunk-7XZ6INKO.js.map} +0 -0
- /package/dist/{chunk-SNEHX4VE.js.map → chunk-B5CMM57M.js.map} +0 -0
- /package/dist/{chunk-GAZFKZHM.js.map → chunk-CEVU3GFF.js.map} +0 -0
- /package/dist/{chunk-52PDIZKV.js.map → chunk-ECVQNGTH.js.map} +0 -0
- /package/dist/{chunk-NGK3N6F2.js.map → chunk-GCC52YZD.js.map} +0 -0
- /package/dist/{chunk-NN4ASVTY.js.map → chunk-IIFADWWI.js.map} +0 -0
- /package/dist/{chunk-OIZ3XMKB.js.map → chunk-IOL74S4J.js.map} +0 -0
- /package/dist/{chunk-UK2I3ACY.js.map → chunk-IZBBXKMJ.js.map} +0 -0
- /package/dist/{chunk-QY3DOZMS.js.map → chunk-LONRQBGV.js.map} +0 -0
- /package/dist/{chunk-XWFNO5PO.js.map → chunk-MIBWI5H7.js.map} +0 -0
- /package/dist/{chunk-C6HZ6C5T.js.map → chunk-NIFEEIGQ.js.map} +0 -0
- /package/dist/{chunk-JQU7FHYH.js.map → chunk-NZ6TNSCU.js.map} +0 -0
- /package/dist/{chunk-MZC62HPZ.js.map → chunk-PAOVVHQX.js.map} +0 -0
- /package/dist/{chunk-HQFVJDEN.js.map → chunk-QQNPVW3J.js.map} +0 -0
- /package/dist/{chunk-IA7BMIPE.js.map → chunk-UZKQSWHJ.js.map} +0 -0
- /package/dist/{chunk-CP4ZM43V.js.map → chunk-WTEILBKC.js.map} +0 -0
- /package/dist/{chunk-BOIF2XGG.js.map → chunk-XXDXIIQ4.js.map} +0 -0
- /package/dist/{chunk-DX32P2DT.js.map → chunk-ZKAKA54B.js.map} +0 -0
- /package/dist/{chunk-TVIX653Q.js.map → chunk-ZKCNPKUO.js.map} +0 -0
- /package/dist/{chunk-TU2WUBVZ.js.map → cli-YL3IDR52.js.map} +0 -0
- /package/dist/{cli-QKIJOXGW.js.map → cli-ZQUJYQBA.js.map} +0 -0
- /package/dist/{cli-YW6VWBHX.js.map → config-O6UBGEDK.js.map} +0 -0
- /package/dist/{github-3WMSTNTK.js.map → conformance-ALLPNGEQ.js.map} +0 -0
- /package/dist/{github-OXSJQ4PS.js.map → github-UCYLM3DR.js.map} +0 -0
- /package/dist/{json-4DCKDGUV.js.map → github-VEJFO6JJ.js.map} +0 -0
- /package/dist/{lint-YDHVVZHT.js.map → host-6GURH5HE.js.map} +0 -0
- /package/dist/{list-3ZO2NIYO.js.map → json-6F52FSXZ.js.map} +0 -0
- /package/dist/{list-EJH6VAOW.js.map → lint-X2GNINK6.js.map} +0 -0
- /package/dist/{page-QEDB7EVU.js.map → list-DP3O3CWB.js.map} +0 -0
- /package/dist/{pretty-5DGEBZSV.js.map → list-P77RZFZF.js.map} +0 -0
- /package/dist/{pretty-SQX33UM2.js.map → page-WQCMBNRD.js.map} +0 -0
- /package/dist/{reporters-OHSI3RMV.js.map → pretty-5MMMNSWF.js.map} +0 -0
- /package/dist/{reporters-YELDDYJD.js.map → pretty-H4DQREMW.js.map} +0 -0
- /package/dist/{run-IP6NZHAG.js.map → provider-AMGRDY6V.js.map} +0 -0
- /package/dist/{validate-G6HH3YXL.js.map → reporters-SU3VUKKX.js.map} +0 -0
|
@@ -3,40 +3,43 @@ import {
|
|
|
3
3
|
renderList,
|
|
4
4
|
runFill,
|
|
5
5
|
runList
|
|
6
|
-
} from "./chunk-
|
|
7
|
-
import "./chunk-CP4ZM43V.js";
|
|
6
|
+
} from "./chunk-ZPP75QWG.js";
|
|
8
7
|
import {
|
|
9
8
|
CALIBRATE_FORMATS,
|
|
10
9
|
REPORT_FORMATS,
|
|
11
10
|
SUMMARY_FORMATS,
|
|
12
11
|
parseFormat,
|
|
13
12
|
runRun
|
|
14
|
-
} from "./chunk-
|
|
15
|
-
import "./chunk-
|
|
13
|
+
} from "./chunk-QP5X66TO.js";
|
|
14
|
+
import "./chunk-WTEILBKC.js";
|
|
15
|
+
import "./chunk-PNX43DYW.js";
|
|
16
|
+
import "./chunk-FQGLRJGX.js";
|
|
17
|
+
import "./chunk-CWXZ2MRT.js";
|
|
18
|
+
import "./chunk-OOEMKOX6.js";
|
|
16
19
|
import "./chunk-4TSWU2SU.js";
|
|
20
|
+
import "./chunk-TPVOOTMN.js";
|
|
21
|
+
import "./chunk-CU57HT2E.js";
|
|
22
|
+
import "./chunk-BWCWTHYS.js";
|
|
17
23
|
import {
|
|
18
24
|
TracevalsError
|
|
19
25
|
} from "./chunk-UKZNLVJW.js";
|
|
20
|
-
import "./chunk-
|
|
26
|
+
import "./chunk-XG6PVB5S.js";
|
|
21
27
|
import {
|
|
22
28
|
allowExecutionMessage,
|
|
23
29
|
isExecutionGrant
|
|
24
30
|
} from "./chunk-YNHZHSSM.js";
|
|
25
31
|
import "./chunk-GLP5PSXB.js";
|
|
26
32
|
import "./chunk-77AINBYM.js";
|
|
27
|
-
import "./chunk-
|
|
28
|
-
import "./chunk-TVIX653Q.js";
|
|
33
|
+
import "./chunk-ZKCNPKUO.js";
|
|
29
34
|
import {
|
|
30
35
|
terminalConfirm
|
|
31
|
-
} from "./chunk-
|
|
32
|
-
import "./chunk-3YHAYXBC.js";
|
|
36
|
+
} from "./chunk-CR3HZERW.js";
|
|
33
37
|
import {
|
|
34
38
|
collect,
|
|
35
39
|
configOption
|
|
36
|
-
} from "./chunk-
|
|
37
|
-
import "./chunk-
|
|
38
|
-
import "./chunk-
|
|
39
|
-
import "./chunk-527HHQPS.js";
|
|
40
|
+
} from "./chunk-5UB47BEV.js";
|
|
41
|
+
import "./chunk-5VWDIWOH.js";
|
|
42
|
+
import "./chunk-MSMB6XOS.js";
|
|
40
43
|
import {
|
|
41
44
|
fail
|
|
42
45
|
} from "./chunk-YEUYKR62.js";
|
|
@@ -44,13 +47,16 @@ import {
|
|
|
44
47
|
colorFor
|
|
45
48
|
} from "./chunk-RNVYGWIC.js";
|
|
46
49
|
import "./chunk-MNH7QO4Z.js";
|
|
50
|
+
import "./chunk-XKBEHKWO.js";
|
|
47
51
|
import {
|
|
48
|
-
LOCAL_FLAG_HELP,
|
|
49
52
|
notice
|
|
50
|
-
} from "./chunk-
|
|
53
|
+
} from "./chunk-HX44GB4Z.js";
|
|
54
|
+
import {
|
|
55
|
+
LOCAL_FLAG_HELP
|
|
56
|
+
} from "./chunk-QCHVR4ZM.js";
|
|
51
57
|
import {
|
|
52
58
|
package_default
|
|
53
|
-
} from "./chunk-
|
|
59
|
+
} from "./chunk-YSCZL4U5.js";
|
|
54
60
|
import "./chunk-OWBRDNRZ.js";
|
|
55
61
|
import "./chunk-G3T47CFV.js";
|
|
56
62
|
import "./chunk-2H7UOFLK.js";
|
|
@@ -151,7 +157,7 @@ function buildProgram() {
|
|
|
151
157
|
"--manifest names one session's manifest, so it cannot be used with a corpus; drop it and each trace will find its own"
|
|
152
158
|
);
|
|
153
159
|
}
|
|
154
|
-
const { runBatch } = await import("./batch-
|
|
160
|
+
const { runBatch } = await import("./batch-U6S2JUUN.js");
|
|
155
161
|
const { report: report2, rendered: rendered2 } = await runBatch({
|
|
156
162
|
...shared,
|
|
157
163
|
...traces.length > 0 ? { traces } : {}
|
|
@@ -270,7 +276,7 @@ function buildProgram() {
|
|
|
270
276
|
whole("--max-false-pass", opts.maxFalsePass, 0);
|
|
271
277
|
whole("--max-false-fail", opts.maxFalseFail, 0);
|
|
272
278
|
whole("--max-review", opts.maxReview, 0);
|
|
273
|
-
const { runCalibrate } = await import("./calibrate-
|
|
279
|
+
const { runCalibrate } = await import("./calibrate-6VIZYR4L.js");
|
|
274
280
|
const { report, rendered } = await runCalibrate({
|
|
275
281
|
...shared,
|
|
276
282
|
...traces.length > 0 ? { traces } : {},
|
|
@@ -372,7 +378,7 @@ function buildProgram() {
|
|
|
372
378
|
"pretty"
|
|
373
379
|
).action(async (opts) => {
|
|
374
380
|
try {
|
|
375
|
-
const { runCapture } = await import("./capture-
|
|
381
|
+
const { runCapture } = await import("./capture-DP3NXAZE.js");
|
|
376
382
|
const result = await runCapture({
|
|
377
383
|
version,
|
|
378
384
|
...configOptions(opts),
|
|
@@ -388,6 +394,93 @@ function buildProgram() {
|
|
|
388
394
|
fail(e);
|
|
389
395
|
}
|
|
390
396
|
});
|
|
397
|
+
addConfigFlags(
|
|
398
|
+
program.command("prepare").description(
|
|
399
|
+
"Fetch the local models judging needs and extract the rules of every file that applies to every session"
|
|
400
|
+
)
|
|
401
|
+
).option("--project <dir>", "project root (default: the payload's cwd, else the current directory)").option("--no-cache", "extract again, even from cached sources").option("--offline", "refuse network providers, so only local models are fetched").option(
|
|
402
|
+
"-f, --format <format>",
|
|
403
|
+
`Output format: ${SUMMARY_FORMATS.join(" | ")}`,
|
|
404
|
+
parseFormatArg("--format", SUMMARY_FORMATS),
|
|
405
|
+
"pretty"
|
|
406
|
+
).action(async (opts) => {
|
|
407
|
+
try {
|
|
408
|
+
const { runPrepare } = await import("./prepare-52QOK7M4.js");
|
|
409
|
+
const result = await runPrepare({
|
|
410
|
+
...configOptions(opts),
|
|
411
|
+
...opts.project !== void 0 ? { project: opts.project } : {},
|
|
412
|
+
...opts.cache === false ? { noCache: true } : {},
|
|
413
|
+
...opts.offline === true ? { offline: true } : {},
|
|
414
|
+
format: opts.format ?? "pretty"
|
|
415
|
+
});
|
|
416
|
+
if (result.stdout !== "") console.log(result.stdout);
|
|
417
|
+
if (result.stderr !== "") notice(result.stderr);
|
|
418
|
+
process.exitCode = result.exitCode;
|
|
419
|
+
} catch (e) {
|
|
420
|
+
fail(e);
|
|
421
|
+
}
|
|
422
|
+
});
|
|
423
|
+
addConfigFlags(
|
|
424
|
+
program.command("check [traces...]").description(
|
|
425
|
+
"Judge the last turn of one session against the rules that governed it"
|
|
426
|
+
)
|
|
427
|
+
).option("--project <dir>", "project root for resolving sources (default: the trace's recorded cwd)").option(
|
|
428
|
+
"--provider <name>",
|
|
429
|
+
"Judge provider: auto (default) | anthropic | openai | claude-cli | jev | llama-cpp"
|
|
430
|
+
).option("--model <model>", "Judge model; needs a named provider, from here or config").option("--local", LOCAL_FLAG_HELP).option("--runs <n>", "judge calls per rule (overrides judge.ensembleRuns)", (v) => Number(v)).option("--no-cache", "bypass the rules cache and the verdict cache").option("--offline", "refuse network providers; judge and extract with local models only").option(
|
|
431
|
+
"-f, --format <format>",
|
|
432
|
+
`Output format: ${SUMMARY_FORMATS.join(" | ")}`,
|
|
433
|
+
parseFormatArg("--format", SUMMARY_FORMATS),
|
|
434
|
+
"pretty"
|
|
435
|
+
).option("-o, --output <file>", "also write the report to a file").action(async (traces, opts, command) => {
|
|
436
|
+
try {
|
|
437
|
+
const trace = traces[0];
|
|
438
|
+
if (trace === void 0) {
|
|
439
|
+
throw new TracevalsError("no trace given; pass a trace file or run manni tracevals list");
|
|
440
|
+
}
|
|
441
|
+
if (traces.length > 1) {
|
|
442
|
+
throw new TracevalsError(`tracevals check takes one trace, got ${String(traces.length)}`);
|
|
443
|
+
}
|
|
444
|
+
whole("--runs", opts.runs, 1);
|
|
445
|
+
const { runCheck } = await import("./check-IWHUPAZM.js");
|
|
446
|
+
const { report, rendered } = await runCheck({
|
|
447
|
+
...configOptions(opts),
|
|
448
|
+
tracePath: trace,
|
|
449
|
+
...opts.project !== void 0 ? { project: opts.project } : {},
|
|
450
|
+
...opts.provider !== void 0 ? { provider: opts.provider } : {},
|
|
451
|
+
...opts.model !== void 0 ? { model: opts.model } : {},
|
|
452
|
+
...opts.local !== void 0 ? { local: opts.local } : {},
|
|
453
|
+
...opts.runs !== void 0 ? { runs: opts.runs } : {},
|
|
454
|
+
...opts.cache === false ? { noCache: true } : {},
|
|
455
|
+
...opts.offline === true ? { offline: true } : {},
|
|
456
|
+
format: opts.format ?? "pretty",
|
|
457
|
+
...opts.output !== void 0 ? { output: opts.output } : {},
|
|
458
|
+
color: colorFor(command, process.stdout.isTTY)
|
|
459
|
+
});
|
|
460
|
+
console.log(rendered);
|
|
461
|
+
process.exitCode = report.exitCode;
|
|
462
|
+
} catch (e) {
|
|
463
|
+
fail(e);
|
|
464
|
+
}
|
|
465
|
+
});
|
|
466
|
+
program.command("release").description("Return a session's lease on the model host, or with --all stop the host").option("--all", "drop every lease, unload every model and stop the host").option(
|
|
467
|
+
"-f, --format <format>",
|
|
468
|
+
`Output format: ${SUMMARY_FORMATS.join(" | ")}`,
|
|
469
|
+
parseFormatArg("--format", SUMMARY_FORMATS),
|
|
470
|
+
"pretty"
|
|
471
|
+
).action(async (opts) => {
|
|
472
|
+
try {
|
|
473
|
+
const { runRelease } = await import("./release-CTYRHZL4.js");
|
|
474
|
+
const result = await runRelease({
|
|
475
|
+
...opts.all === true ? { all: true } : {},
|
|
476
|
+
format: opts.format ?? "pretty"
|
|
477
|
+
});
|
|
478
|
+
if (result.stdout !== "") console.log(result.stdout);
|
|
479
|
+
process.exitCode = result.exitCode;
|
|
480
|
+
} catch (e) {
|
|
481
|
+
fail(e);
|
|
482
|
+
}
|
|
483
|
+
});
|
|
391
484
|
program.command("list").description("List discoverable traces (Claude Code session files)").option(
|
|
392
485
|
"--project <dir>",
|
|
393
486
|
"project directory to scope to (default: current directory)"
|
|
@@ -420,4 +513,4 @@ function buildProgram() {
|
|
|
420
513
|
export {
|
|
421
514
|
buildProgram
|
|
422
515
|
};
|
|
423
|
-
//# sourceMappingURL=cli-
|
|
516
|
+
//# sourceMappingURL=cli-XIODOEUG.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/tracevals/cli.ts"],"sourcesContent":["/**\n * The tracevals program. Named `tracevals` because that is where it is\n * mounted (`manni tracevals …`); `src/cli.ts` adds it to the umbrella and\n * runs it. Thin commander wrapper; all behavior lives in commands.\n */\nimport { Command } from \"commander\";\nimport pkg from \"../../package.json\" with { type: \"json\" };\nimport { collect, configOption } from \"../shared/cli-options.js\";\nimport { LOCAL_FLAG_HELP } from \"../shared/providers.js\";\nimport { fail } from \"../shared/run.js\";\nimport { terminalConfirm } from \"../shared/prompt.js\";\nimport { colorFor } from \"../shared/color.js\";\nimport { notice } from \"../shared/warn.js\";\nimport { renderList, runList } from \"./commands/list.js\";\nimport { runFill } from \"./commands/fill.js\";\nimport { runRun } from \"./commands/run.js\";\nimport { TracevalsError } from \"./types.js\";\nimport { allowExecutionMessage, isExecutionGrant } from \"../shared/execution.js\";\nimport {\n CALIBRATE_FORMATS,\n REPORT_FORMATS,\n SUMMARY_FORMATS,\n parseFormat,\n type ReportFormat,\n type SummaryFormat,\n} from \"./reporters/index.js\";\n\nconst { version } = pkg;\n\nexport function buildProgram(): Command {\nconst program = new Command();\n\nprogram\n .name(\"tracevals\")\n .description(\n \"Deterministic and LLM-as-judge adherence evals for AI agent session traces.\",\n )\n .version(version)\n .option(\"--no-color\", \"disable colored output\")\n // A pointer, not the whole help screen: the message that precedes it\n // already names the offending flag.\n .showHelpAfterError(\"(add --help for usage)\")\n // MUST come before the `.command()` calls below. `copyInheritedSettings`\n // copies `_exitCallback` by value at subcommand-creation time, so an\n // `exitOverride()` installed afterwards leaves every subcommand calling\n // `process.exit(1)` on a parse error, which is a usage error owed exit 2.\n .exitOverride();\n\ninterface ConfigFlags {\n /** `-c <path>` gives a string, `--no-config` gives false, neither gives undefined. */\n config?: string | boolean;\n}\n\ninterface RunFlags extends ConfigFlags {\n project?: string;\n provider?: string;\n model?: string;\n local?: boolean;\n offline?: boolean;\n runs?: number;\n deterministicOnly?: boolean;\n cache?: boolean;\n maxTurns?: number;\n format?: ReportFormat;\n output?: string;\n history?: boolean;\n failOnReview?: boolean;\n allowExecution?: string[];\n execution?: boolean;\n require?: string[];\n reportUnusedArtifacts?: boolean;\n manifest?: string;\n allProjects?: boolean;\n newerThan?: string;\n limit?: number;\n}\n\n/**\n * Repeatable execution grant, validated on the way in. An unknown value is a\n * usage error rather than a grant that quietly matches nothing.\n */\nfunction collectGrant(value: string, previous: string[]): string[] {\n if (!isExecutionGrant(value)) fail(new TracevalsError(allowExecutionMessage(value)));\n return [...previous, value];\n}\n\n/**\n * `-c, --config <path>` and `--no-config`, on every verb that reads config.\n *\n * Declared once so the four cannot drift apart on a name or a description,\n * the way docevals' `documentInputs()` does it. `list` is the one verb without\n * them: it enumerates the session store and reads no config at all, and an\n * accepted flag that quietly does nothing is worse than an absent one.\n */\nfunction addConfigFlags(cmd: Command): Command {\n return cmd\n .option(\"-c, --config <path>\", \"Path to manni.config.yaml\")\n .option(\"--no-config\", \"Ignore any discovered config file\");\n}\n\n/** The config flags as the command cores take them. */\nfunction configOptions(opts: ConfigFlags): {\n config?: string;\n noConfig?: boolean;\n} {\n const { configPath, noConfig } = configOption(opts.config);\n return {\n ...(configPath === undefined ? {} : { config: configPath }),\n ...(noConfig === true ? { noConfig } : {}),\n };\n}\n\n/**\n * Commander argument parser for `-f/--format`. Routes through `fail()` for the\n * reason the numeric checks below do: commander only special-cases\n * InvalidArgumentError, so any other exception escapes `program.parse()`\n * uncaught — a stack trace and exit 1, when a bad flag owes exit 2.\n */\nfunction parseFormatArg<T extends string>(name: string, allowed: readonly T[]) {\n return (value: string): T => {\n try {\n return parseFormat(value, allowed, name);\n } catch (e) {\n fail(e);\n }\n };\n}\n\nconst range = (min: number, max: number): string =>\n Number.isFinite(max) ? `between ${min} and ${max}` : `of at least ${min}`;\n\n/**\n * A numeric flag, checked before anything reads it.\n *\n * `parseFloat(\"abc\")` is NaN, and every comparison against NaN is false — so a\n * flag that failed to parse does **not** fall back to the config. `undefined`\n * is what defers to the config, and NaN is not undefined: it survives the `??`\n * overlay and lands in the runtime as a limit that can never be reached. A\n * budget of NaN bills without a ceiling while the report still claims one,\n * which is the most expensive way for a safety limit to fail. Range checks\n * therefore test for a *finite* number, not only for the range.\n */\nfunction numeric(\n name: string,\n value: number | undefined,\n min: number,\n max: number = Number.POSITIVE_INFINITY,\n): void {\n if (value === undefined) return;\n if (Number.isFinite(value) && value >= min && value <= max) return;\n throw new TracevalsError(\n `${name} must be a number ${range(min, max)}, got ${value}`,\n );\n}\n\n/**\n * The same for a count. Kept apart from `numeric` because a fraction is never\n * meant here: `--limit 2.5` and `--limit -1` both reach `slice(0, n)`, where\n * the negative one silently evaluates every trace except the oldest.\n */\nfunction whole(\n name: string,\n value: number | undefined,\n min: number,\n max: number = Number.POSITIVE_INFINITY,\n): void {\n if (value === undefined) return;\n if (Number.isInteger(value) && value >= min && value <= max) return;\n throw new TracevalsError(\n `${name} must be a whole number ${range(min, max)}, got ${value}`,\n );\n}\n\n/**\n * The single mapping from `addRunFlags`' options onto the shared run options.\n *\n * `run` and `calibrate` accept the same flags, and `calibrate` used to\n * hand-copy the list, which is how it came to accept a flag and drop it on\n * the floor. `addRunFlags`' own docstring says an accepted flag that\n * quietly does nothing is worse than an absent one, so there is now one place\n * to add a flag rather than two places to remember.\n *\n * Validation lives here for the same reason: both commands get it, or neither.\n */\nfunction sharedRunOptions(opts: RunFlags) {\n whole(\"--runs\", opts.runs, 1);\n whole(\"--limit\", opts.limit, 1);\n whole(\"--max-turns\", opts.maxTurns, 1);\n\n return {\n ...configOptions(opts),\n project: opts.project,\n provider: opts.provider,\n model: opts.model,\n local: opts.local,\n // `undefined` rather than `false` when absent, so a future config\n // `offline:` still decides on a run where the flag was never typed.\n offline: opts.offline ? true : undefined,\n runs: opts.runs,\n deterministicOnly: opts.deterministicOnly,\n noCache: opts.cache === false,\n maxTurns: opts.maxTurns,\n format: opts.format ?? \"pretty\",\n output: opts.output,\n // Undefined when neither spelling is passed, so the config still decides.\n // Both spellings are declared for precisely that reason: commander\n // defaults a lone `--no-x` to `true`, which makes the config's own value\n // unreachable from the command line.\n failOnReview: opts.failOnReview,\n // Commander's default is `[]`, which is \"no flag\", not \"run nothing\": only\n // a list someone typed narrows the run, and `--no-execution` runs none.\n ...(opts.execution === false\n ? { allowExecution: [] }\n : (opts.allowExecution ?? []).length > 0\n ? { allowExecution: opts.allowExecution }\n : {}),\n reportUnusedArtifacts: opts.reportUnusedArtifacts,\n ...(opts.require !== undefined ? { require: opts.require } : {}),\n ...(opts.allProjects !== undefined ? { allProjects: opts.allProjects } : {}),\n ...(opts.newerThan !== undefined ? { newerThan: opts.newerThan } : {}),\n ...(opts.limit !== undefined ? { limit: opts.limit } : {}),\n };\n}\n\nasync function executeRun(traces: string[], opts: RunFlags, color: boolean) {\n const shared = {\n ...sharedRunOptions(opts),\n color,\n // Run-only, both of them: `--history` is a point in one session's\n // timeline, and a manifest belongs to exactly one session (ADR 01024).\n history: opts.history,\n ...(opts.manifest !== undefined ? { manifest: opts.manifest } : {}),\n };\n\n // What decides the report shape is *how traces were selected*, not how many\n // came back. One named trace is a `RunReport`, byte for byte as before; a\n // discovery selector is a `BatchReport` even when it matches exactly one, so\n // a script piping `--format json` gets a stable shape (ADR 01018).\n const selecting =\n opts.allProjects === true ||\n opts.newerThan !== undefined ||\n opts.limit !== undefined;\n\n if (traces.length > 1 || selecting) {\n if (opts.manifest !== undefined) {\n // Each trace finds its own manifest by convention; one named file cannot\n // be evidence about more than the session it was captured for.\n throw new TracevalsError(\n \"--manifest names one session's manifest, so it cannot be used with a corpus; drop it and each trace will find its own\",\n );\n }\n const { runBatch } = await import(\"./commands/batch.js\");\n const { report, rendered } = await runBatch({\n ...shared,\n ...(traces.length > 0 ? { traces } : {}),\n });\n console.log(rendered);\n process.exitCode = report.exitCode;\n return;\n }\n\n let trace = traces[0];\n if (trace === undefined) {\n // The interactive picker needs a TTY; scripted callers must name a trace.\n if (!process.stdout.isTTY || !process.stdin.isTTY) {\n throw new TracevalsError(\n \"no trace given; pass a trace file or run `manni tracevals list`\",\n );\n }\n const { pickTrace } = await import(\"./trace/picker.js\");\n trace = await pickTrace();\n }\n const { report, rendered } = await runRun({ ...shared, tracePath: trace });\n console.log(rendered);\n process.exitCode = report.exitCode;\n}\n\n/**\n * Flags shared by `run` and `calibrate`. `--history` is run-only: calibration\n * is a measurement of a corpus, not a point in one session's timeline, and an\n * accepted flag that quietly does nothing is worse than an absent one.\n */\nfunction addRunFlags(\n cmd: Command,\n options: { history?: boolean; formats?: readonly ReportFormat[] } = {},\n): Command {\n const withHistory = options.history !== false;\n const formats = options.formats ?? REPORT_FORMATS;\n const base = addConfigFlags(cmd)\n .option(\n \"--project <dir>\",\n \"artifact-lookup root (overrides the trace's recorded cwd)\",\n )\n .option(\n \"--provider <name>\",\n \"Judge provider: auto (default) | anthropic | openai | claude-cli | llama-cpp\",\n )\n .option(\n \"--model <model>\",\n \"Model override; needs a named provider, from here or config\",\n )\n .option(\"--local\", LOCAL_FLAG_HELP)\n // `Number`, not `parseInt`: parseInt truncates, so `--runs 1.5` would be\n // silently accepted as 1 and `--runs 1e3` as 1. `whole()` below refuses\n // what Number keeps.\n .option(\"--runs <n>\", \"ensemble runs per eval\", (v) => Number(v))\n .option(\"--deterministic-only\", \"skip LLM-judged evals\")\n .option(\n \"--offline\",\n \"never fetch a remote manifest; read external metadata from local manifests\",\n )\n .option(\"--no-cache\", \"bypass the judge cache\")\n .option(\n \"--max-turns <n>\",\n \"Stop after this many ensemble runs (a cached ensemble costs none)\",\n (v) => Number(v),\n )\n .option(\n \"-f, --format <format>\",\n `Output format: ${formats.join(\" | \")}`,\n parseFormatArg(\"--format\", formats),\n \"pretty\" as ReportFormat,\n )\n .option(\"-o, --output <file>\", \"also write the report to a file\")\n .option(\n \"--report-unused-artifacts\",\n \"list every skill and agent the session was offered and never used\",\n )\n .option(\"--fail-on-review\", \"Exit 1 when any eval lands in the human-review zone (the default)\")\n .option(\"--no-fail-on-review\", \"Do not fail the run on evals left for human review\")\n // `<kind>`, not `<kind...>`: a variadic option greedily eats the\n // positional `[traces...]` that follow it. Repeat the flag instead.\n .option(\n \"--allow-execution <kind>\",\n \"Run only these execution grants (repeatable): frontmatter-commands\",\n collectGrant,\n [],\n )\n .option(\"--no-execution\", \"Clear every execution grant for this run\")\n .option(\n \"--require <module>\",\n \"load a grader plugin; repeatable, and added to config plugins\",\n collect,\n [],\n )\n .option(\"--all-projects\", \"evaluate every project's traces in the session store\")\n .option(\n \"--newer-than <duration>\",\n \"only traces modified within this window, such as 30m, 24h, 7d or 2w\",\n )\n .option(\"--limit <n>\", \"maximum traces to evaluate\", (v) => Number(v));\n return withHistory\n ? base.option(\n \"--history\",\n \"append to history and compare with the previous run\",\n )\n : base;\n}\n\naddRunFlags(\n // No `isDefault` (proposal 0034): `run` is a verb, so a bare\n // `manni tracevals` prints the help and exits 2, and a trace path with no\n // verb is commander's unknown-command refusal rather than a silent run.\n program\n .command(\"run [traces...]\")\n .description(\n \"Evaluate one or more traces against the skills and instructions they used\",\n ),\n)\n // Run-only, and single-trace-only: a manifest belongs to exactly one session\n // (ADR 01024). A corpus still picks one up per trace by convention — this\n // flag is for naming one outright, which only a single trace can mean.\n .option(\n \"--manifest <file>\",\n \"session manifest to compare artifacts against; without it one is looked for beside the trace and under the project\",\n )\n .action(async (traces: string[], opts: RunFlags, command: Command) => {\n try {\n await executeRun(traces, opts, colorFor(command, process.stdout.isTTY));\n } catch (e) {\n fail(e);\n }\n });\n\n// `calibrate` shares `run`'s flags because it *is* a run — plus the labels it\n// is measured against. Kept a separate command rather than a flag on `run`:\n// the report answers a different question and carries a different shape, and\n// a script must be able to tell which it is asking for (ADR 01022).\naddRunFlags(\n program\n .command(\"calibrate [traces...]\")\n .description(\n \"Measure judged and graded verdicts against a labels file: false passes, false fails, and review volume\",\n )\n .option(\n \"--labels <file>\",\n \"calibration labels sidecar (default: calibrate.labels)\",\n )\n .option(\n \"--sweep\",\n \"re-score the corpus across the configured grid of zones and ensemble sizes, from cached verdicts\",\n )\n .option(\"--max-false-pass <n>\", \"exit 1 above this many false passes\", (v) =>\n Number(v),\n )\n .option(\"--max-false-fail <n>\", \"exit 1 above this many false fails\", (v) =>\n Number(v),\n )\n .option(\n \"--max-review <n>\",\n \"exit 1 above this many needs-review outcomes\",\n (v) => Number(v),\n ),\n { history: false, formats: CALIBRATE_FORMATS },\n).action(\n async (\n traces: string[],\n opts: RunFlags & {\n labels?: string;\n sweep?: boolean;\n maxFalsePass?: number;\n maxFalseFail?: number;\n maxReview?: number;\n },\n command: Command,\n ) => {\n try {\n const shared = {\n ...sharedRunOptions(opts),\n color: colorFor(command, process.stdout.isTTY),\n };\n // A threshold that never trips looks exactly like a threshold that held.\n whole(\"--max-false-pass\", opts.maxFalsePass, 0);\n whole(\"--max-false-fail\", opts.maxFalseFail, 0);\n whole(\"--max-review\", opts.maxReview, 0);\n\n const { runCalibrate } = await import(\"./commands/calibrate.js\");\n const { report, rendered } = await runCalibrate({\n ...shared,\n ...(traces.length > 0 ? { traces } : {}),\n ...(opts.labels !== undefined ? { labels: opts.labels } : {}),\n ...(opts.sweep !== undefined ? { sweep: opts.sweep } : {}),\n ...(opts.maxFalsePass !== undefined\n ? { maxFalsePass: opts.maxFalsePass }\n : {}),\n ...(opts.maxFalseFail !== undefined\n ? { maxFalseFail: opts.maxFalseFail }\n : {}),\n ...(opts.maxReview !== undefined ? { maxReview: opts.maxReview } : {}),\n });\n console.log(rendered);\n process.exitCode = report.exitCode;\n } catch (e) {\n fail(e);\n }\n },\n);\n\naddConfigFlags(\n program\n .command(\"fill [paths...]\")\n .description(\n \"Propose evals for skills, agent definitions, and project rules, and write those above the confidence threshold\",\n ),\n)\n .option(\"--project <dir>\", \"project root to scan (default: current directory)\")\n // Repeatable, one value per occurrence, never split on commas — the family's\n // one-separator-per-list rule. It narrows what `fill` scans; there is no\n // `--collection`, because a docs collection is not an artifact set.\n .option(\"--exclude <glob>\", \"Glob to exclude (repeatable)\", collect, [])\n .option(\"--dry-run\", \"report proposals without writing them\")\n .option(\n \"--confidence <n>\",\n \"minimum confidence to write (0-1)\",\n (v) => parseFloat(v),\n )\n .option(\n \"--max-evals <n>\",\n \"maximum evals per artifact, including existing ones\",\n (v) => Number(v),\n )\n .option(\n \"--max-turns <n>\",\n \"Stop after this many inference calls (a cached artifact costs none)\",\n (v) => Number(v),\n )\n .option(\"--no-cache\", \"bypass the proposal cache\")\n .option(\n \"--provider <name>\",\n \"Provider: auto (default) | anthropic | openai | claude-cli | llama-cpp\",\n )\n .option(\n \"--model <model>\",\n \"Model override; needs a named provider, from here or config\",\n )\n .option(\"--local\", LOCAL_FLAG_HELP)\n .option(\n \"--offline\",\n \"never fetch a remote manifest; read external metadata from local manifests\",\n )\n .option(\n \"--require <module>\",\n \"load a grader plugin; repeatable, and added to config plugins\",\n collect,\n [],\n )\n .option(\n \"-f, --format <format>\",\n `Output format: ${SUMMARY_FORMATS.join(\" | \")}`,\n parseFormatArg(\"--format\", SUMMARY_FORMATS),\n \"pretty\" as SummaryFormat,\n )\n .action(async (paths: string[], opts: ConfigFlags & {\n project?: string;\n exclude?: string[];\n dryRun?: boolean;\n confidence?: number;\n maxEvals?: number;\n maxTurns?: number;\n cache?: boolean;\n provider?: string;\n model?: string;\n local?: boolean;\n offline?: boolean;\n require?: string[];\n format?: SummaryFormat;\n }, command: Command) => {\n try {\n numeric(\"--confidence\", opts.confidence, 0, 1);\n whole(\"--max-evals\", opts.maxEvals, 1);\n whole(\"--max-turns\", opts.maxTurns, 1);\n\n const { report, rendered } = await runFill({\n ...configOptions(opts),\n ...(paths.length > 0 ? { paths } : {}),\n ...(opts.project !== undefined ? { project: opts.project } : {}),\n ...(opts.exclude !== undefined ? { exclude: opts.exclude } : {}),\n ...(opts.dryRun !== undefined ? { dryRun: opts.dryRun } : {}),\n ...(opts.confidence !== undefined ? { confidence: opts.confidence } : {}),\n ...(opts.maxEvals !== undefined ? { maxEvals: opts.maxEvals } : {}),\n ...(opts.maxTurns !== undefined ? { maxTurns: opts.maxTurns } : {}),\n ...(opts.cache === false ? { noCache: true } : {}),\n ...(opts.provider !== undefined ? { provider: opts.provider } : {}),\n ...(opts.model !== undefined ? { model: opts.model } : {}),\n ...(opts.local !== undefined ? { local: opts.local } : {}),\n ...(opts.offline === true ? { offline: true } : {}),\n ...(opts.require !== undefined ? { require: opts.require } : {}),\n // P1 (proposal 0047): offered only on a terminal, where there is\n // someone to answer. Off one the block goes to the artifact and the\n // W1 line says so.\n confirm: terminalConfirm(),\n onNotice: notice,\n onRelocated: (result) => {\n const manifests = result.manifests.map((m) => m.file).join(\", \");\n notice(`moved ${String(result.summary.moved)} value(s) into ${manifests}.`);\n },\n color: colorFor(command, process.stdout.isTTY),\n });\n console.log(\n opts.format === \"json\" ? JSON.stringify(report, null, 2) : rendered,\n );\n process.exitCode = report.exitCode;\n } catch (e) {\n fail(e);\n }\n });\n\n// The one write path `run` never takes (ADR 01024). Meant for a `SessionStart`\n// hook, which is why it reads its payload on stdin and — in that mode — writes\n// its report to stderr: a SessionStart hook's stdout becomes model context.\naddConfigFlags(\n program\n .command(\"capture\")\n .description(\n \"Record a session manifest: sha256 of every instruction artifact plus the git SHA, read from a Claude Code hook payload on stdin\",\n ),\n)\n .option(\"--project <dir>\", \"project root to scan (default: the payload's cwd)\")\n .option(\"--session-id <id>\", \"session id (default: the payload's session_id)\")\n .option(\"-o, --out <file>\", \"write here instead of the configured directory\")\n .option(\n \"-f, --format <format>\",\n `Output format: ${SUMMARY_FORMATS.join(\" | \")}`,\n parseFormatArg(\"--format\", SUMMARY_FORMATS),\n \"pretty\" as SummaryFormat,\n )\n .action(async (opts: ConfigFlags & {\n project?: string;\n sessionId?: string;\n out?: string;\n format?: SummaryFormat;\n }) => {\n try {\n const { runCapture } = await import(\"./commands/capture.js\");\n const result = await runCapture({\n version,\n ...configOptions(opts),\n ...(opts.project !== undefined ? { project: opts.project } : {}),\n ...(opts.sessionId !== undefined ? { sessionId: opts.sessionId } : {}),\n ...(opts.out !== undefined ? { out: opts.out } : {}),\n format: opts.format ?? \"pretty\",\n });\n if (result.stdout !== \"\") console.log(result.stdout);\n // Hook mode's report, through the family's stderr writer rather than\n // `console.error`, so the `manni: ` prefix comes from `programName()`\n // and is never hand-spelled. `notice`, not `warn`: the report says what\n // this run did, so it is said every time rather than deduplicated.\n if (result.stderr !== \"\") notice(result.stderr);\n process.exitCode = result.exitCode;\n } catch (e) {\n fail(e);\n }\n });\n\nprogram\n .command(\"list\")\n .description(\"List discoverable traces (Claude Code session files)\")\n // The long spellings only, matching `run`: a short form that exists on one\n // verb and not on its sibling is exactly the drift \"commands must have\n // parallel behaviors\" exists to prevent.\n .option(\n \"--project <dir>\",\n \"project directory to scope to (default: current directory)\",\n )\n .option(\"--all-projects\", \"scan every project in the session store\")\n .option(\n \"--newer-than <duration>\",\n \"only traces modified within this window, such as 30m, 24h, 7d or 2w\",\n )\n .option(\"--limit <n>\", \"maximum traces to list\", (v) => Number(v))\n .option(\n \"-f, --format <format>\",\n `Output format: ${SUMMARY_FORMATS.join(\" | \")}`,\n parseFormatArg(\"--format\", SUMMARY_FORMATS),\n \"pretty\" as SummaryFormat,\n )\n // No `-c`/`--no-config`: `list` enumerates the session store and reads no\n // config at all, and an accepted flag that quietly does nothing is worse\n // than an absent one.\n .action(async (opts: {\n project?: string;\n allProjects?: boolean;\n newerThan?: string;\n limit?: number;\n format?: SummaryFormat;\n }, command: Command) => {\n try {\n // The same footgun as `run --limit`: `slice(0, -1)` lists everything but\n // the oldest, and reads as a shorter store rather than as a bad flag.\n whole(\"--limit\", opts.limit, 1);\n const run = await runList({\n project: opts.project,\n allProjects: opts.allProjects,\n ...(opts.newerThan !== undefined ? { newerThan: opts.newerThan } : {}),\n limit: opts.limit,\n });\n console.log(\n opts.format === \"json\"\n ? JSON.stringify(run, null, 2)\n : renderList(run, { color: colorFor(command, process.stdout.isTTY) }),\n );\n } catch (e) {\n fail(e);\n }\n });\n\nreturn program;\n}\n"],"mappings":"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","names":["report","rendered"]}
|
|
1
|
+
{"version":3,"sources":["../src/tracevals/cli.ts"],"sourcesContent":["/**\n * The tracevals program. Named `tracevals` because that is where it is\n * mounted (`manni tracevals …`); `src/cli.ts` adds it to the umbrella and\n * runs it. Thin commander wrapper; all behavior lives in commands.\n */\nimport { Command } from \"commander\";\nimport pkg from \"../../package.json\" with { type: \"json\" };\nimport { collect, configOption } from \"../shared/cli-options.js\";\nimport { LOCAL_FLAG_HELP } from \"../shared/providers.js\";\nimport { fail } from \"../shared/run.js\";\nimport { terminalConfirm } from \"../shared/prompt.js\";\nimport { colorFor } from \"../shared/color.js\";\nimport { notice } from \"../shared/warn.js\";\nimport { renderList, runList } from \"./commands/list.js\";\nimport { runFill } from \"./commands/fill.js\";\nimport { runRun } from \"./commands/run.js\";\nimport { TracevalsError } from \"./types.js\";\nimport { allowExecutionMessage, isExecutionGrant } from \"../shared/execution.js\";\nimport {\n CALIBRATE_FORMATS,\n REPORT_FORMATS,\n SUMMARY_FORMATS,\n parseFormat,\n type ReportFormat,\n type SummaryFormat,\n} from \"./reporters/index.js\";\n\nconst { version } = pkg;\n\nexport function buildProgram(): Command {\nconst program = new Command();\n\nprogram\n .name(\"tracevals\")\n .description(\n \"Deterministic and LLM-as-judge adherence evals for AI agent session traces.\",\n )\n .version(version)\n .option(\"--no-color\", \"disable colored output\")\n // A pointer, not the whole help screen: the message that precedes it\n // already names the offending flag.\n .showHelpAfterError(\"(add --help for usage)\")\n // MUST come before the `.command()` calls below. `copyInheritedSettings`\n // copies `_exitCallback` by value at subcommand-creation time, so an\n // `exitOverride()` installed afterwards leaves every subcommand calling\n // `process.exit(1)` on a parse error, which is a usage error owed exit 2.\n .exitOverride();\n\ninterface ConfigFlags {\n /** `-c <path>` gives a string, `--no-config` gives false, neither gives undefined. */\n config?: string | boolean;\n}\n\ninterface RunFlags extends ConfigFlags {\n project?: string;\n provider?: string;\n model?: string;\n local?: boolean;\n offline?: boolean;\n runs?: number;\n deterministicOnly?: boolean;\n cache?: boolean;\n maxTurns?: number;\n format?: ReportFormat;\n output?: string;\n history?: boolean;\n failOnReview?: boolean;\n allowExecution?: string[];\n execution?: boolean;\n require?: string[];\n reportUnusedArtifacts?: boolean;\n manifest?: string;\n allProjects?: boolean;\n newerThan?: string;\n limit?: number;\n}\n\n/**\n * Repeatable execution grant, validated on the way in. An unknown value is a\n * usage error rather than a grant that quietly matches nothing.\n */\nfunction collectGrant(value: string, previous: string[]): string[] {\n if (!isExecutionGrant(value)) fail(new TracevalsError(allowExecutionMessage(value)));\n return [...previous, value];\n}\n\n/**\n * `-c, --config <path>` and `--no-config`, on every verb that reads config.\n *\n * Declared once so the four cannot drift apart on a name or a description,\n * the way docevals' `documentInputs()` does it. `list` is the one verb without\n * them: it enumerates the session store and reads no config at all, and an\n * accepted flag that quietly does nothing is worse than an absent one.\n */\nfunction addConfigFlags(cmd: Command): Command {\n return cmd\n .option(\"-c, --config <path>\", \"Path to manni.config.yaml\")\n .option(\"--no-config\", \"Ignore any discovered config file\");\n}\n\n/** The config flags as the command cores take them. */\nfunction configOptions(opts: ConfigFlags): {\n config?: string;\n noConfig?: boolean;\n} {\n const { configPath, noConfig } = configOption(opts.config);\n return {\n ...(configPath === undefined ? {} : { config: configPath }),\n ...(noConfig === true ? { noConfig } : {}),\n };\n}\n\n/**\n * Commander argument parser for `-f/--format`. Routes through `fail()` for the\n * reason the numeric checks below do: commander only special-cases\n * InvalidArgumentError, so any other exception escapes `program.parse()`\n * uncaught — a stack trace and exit 1, when a bad flag owes exit 2.\n */\nfunction parseFormatArg<T extends string>(name: string, allowed: readonly T[]) {\n return (value: string): T => {\n try {\n return parseFormat(value, allowed, name);\n } catch (e) {\n fail(e);\n }\n };\n}\n\nconst range = (min: number, max: number): string =>\n Number.isFinite(max) ? `between ${min} and ${max}` : `of at least ${min}`;\n\n/**\n * A numeric flag, checked before anything reads it.\n *\n * `parseFloat(\"abc\")` is NaN, and every comparison against NaN is false — so a\n * flag that failed to parse does **not** fall back to the config. `undefined`\n * is what defers to the config, and NaN is not undefined: it survives the `??`\n * overlay and lands in the runtime as a limit that can never be reached. A\n * budget of NaN bills without a ceiling while the report still claims one,\n * which is the most expensive way for a safety limit to fail. Range checks\n * therefore test for a *finite* number, not only for the range.\n */\nfunction numeric(\n name: string,\n value: number | undefined,\n min: number,\n max: number = Number.POSITIVE_INFINITY,\n): void {\n if (value === undefined) return;\n if (Number.isFinite(value) && value >= min && value <= max) return;\n throw new TracevalsError(\n `${name} must be a number ${range(min, max)}, got ${value}`,\n );\n}\n\n/**\n * The same for a count. Kept apart from `numeric` because a fraction is never\n * meant here: `--limit 2.5` and `--limit -1` both reach `slice(0, n)`, where\n * the negative one silently evaluates every trace except the oldest.\n */\nfunction whole(\n name: string,\n value: number | undefined,\n min: number,\n max: number = Number.POSITIVE_INFINITY,\n): void {\n if (value === undefined) return;\n if (Number.isInteger(value) && value >= min && value <= max) return;\n throw new TracevalsError(\n `${name} must be a whole number ${range(min, max)}, got ${value}`,\n );\n}\n\n/**\n * The single mapping from `addRunFlags`' options onto the shared run options.\n *\n * `run` and `calibrate` accept the same flags, and `calibrate` used to\n * hand-copy the list, which is how it came to accept a flag and drop it on\n * the floor. `addRunFlags`' own docstring says an accepted flag that\n * quietly does nothing is worse than an absent one, so there is now one place\n * to add a flag rather than two places to remember.\n *\n * Validation lives here for the same reason: both commands get it, or neither.\n */\nfunction sharedRunOptions(opts: RunFlags) {\n whole(\"--runs\", opts.runs, 1);\n whole(\"--limit\", opts.limit, 1);\n whole(\"--max-turns\", opts.maxTurns, 1);\n\n return {\n ...configOptions(opts),\n project: opts.project,\n provider: opts.provider,\n model: opts.model,\n local: opts.local,\n // `undefined` rather than `false` when absent, so a future config\n // `offline:` still decides on a run where the flag was never typed.\n offline: opts.offline ? true : undefined,\n runs: opts.runs,\n deterministicOnly: opts.deterministicOnly,\n noCache: opts.cache === false,\n maxTurns: opts.maxTurns,\n format: opts.format ?? \"pretty\",\n output: opts.output,\n // Undefined when neither spelling is passed, so the config still decides.\n // Both spellings are declared for precisely that reason: commander\n // defaults a lone `--no-x` to `true`, which makes the config's own value\n // unreachable from the command line.\n failOnReview: opts.failOnReview,\n // Commander's default is `[]`, which is \"no flag\", not \"run nothing\": only\n // a list someone typed narrows the run, and `--no-execution` runs none.\n ...(opts.execution === false\n ? { allowExecution: [] }\n : (opts.allowExecution ?? []).length > 0\n ? { allowExecution: opts.allowExecution }\n : {}),\n reportUnusedArtifacts: opts.reportUnusedArtifacts,\n ...(opts.require !== undefined ? { require: opts.require } : {}),\n ...(opts.allProjects !== undefined ? { allProjects: opts.allProjects } : {}),\n ...(opts.newerThan !== undefined ? { newerThan: opts.newerThan } : {}),\n ...(opts.limit !== undefined ? { limit: opts.limit } : {}),\n };\n}\n\nasync function executeRun(traces: string[], opts: RunFlags, color: boolean) {\n const shared = {\n ...sharedRunOptions(opts),\n color,\n // Run-only, both of them: `--history` is a point in one session's\n // timeline, and a manifest belongs to exactly one session (ADR 01024).\n history: opts.history,\n ...(opts.manifest !== undefined ? { manifest: opts.manifest } : {}),\n };\n\n // What decides the report shape is *how traces were selected*, not how many\n // came back. One named trace is a `RunReport`, byte for byte as before; a\n // discovery selector is a `BatchReport` even when it matches exactly one, so\n // a script piping `--format json` gets a stable shape (ADR 01018).\n const selecting =\n opts.allProjects === true ||\n opts.newerThan !== undefined ||\n opts.limit !== undefined;\n\n if (traces.length > 1 || selecting) {\n if (opts.manifest !== undefined) {\n // Each trace finds its own manifest by convention; one named file cannot\n // be evidence about more than the session it was captured for.\n throw new TracevalsError(\n \"--manifest names one session's manifest, so it cannot be used with a corpus; drop it and each trace will find its own\",\n );\n }\n const { runBatch } = await import(\"./commands/batch.js\");\n const { report, rendered } = await runBatch({\n ...shared,\n ...(traces.length > 0 ? { traces } : {}),\n });\n console.log(rendered);\n process.exitCode = report.exitCode;\n return;\n }\n\n let trace = traces[0];\n if (trace === undefined) {\n // The interactive picker needs a TTY; scripted callers must name a trace.\n if (!process.stdout.isTTY || !process.stdin.isTTY) {\n throw new TracevalsError(\n \"no trace given; pass a trace file or run `manni tracevals list`\",\n );\n }\n const { pickTrace } = await import(\"./trace/picker.js\");\n trace = await pickTrace();\n }\n const { report, rendered } = await runRun({ ...shared, tracePath: trace });\n console.log(rendered);\n process.exitCode = report.exitCode;\n}\n\n/**\n * Flags shared by `run` and `calibrate`. `--history` is run-only: calibration\n * is a measurement of a corpus, not a point in one session's timeline, and an\n * accepted flag that quietly does nothing is worse than an absent one.\n */\nfunction addRunFlags(\n cmd: Command,\n options: { history?: boolean; formats?: readonly ReportFormat[] } = {},\n): Command {\n const withHistory = options.history !== false;\n const formats = options.formats ?? REPORT_FORMATS;\n const base = addConfigFlags(cmd)\n .option(\n \"--project <dir>\",\n \"artifact-lookup root (overrides the trace's recorded cwd)\",\n )\n .option(\n \"--provider <name>\",\n \"Judge provider: auto (default) | anthropic | openai | claude-cli | llama-cpp\",\n )\n .option(\n \"--model <model>\",\n \"Model override; needs a named provider, from here or config\",\n )\n .option(\"--local\", LOCAL_FLAG_HELP)\n // `Number`, not `parseInt`: parseInt truncates, so `--runs 1.5` would be\n // silently accepted as 1 and `--runs 1e3` as 1. `whole()` below refuses\n // what Number keeps.\n .option(\"--runs <n>\", \"ensemble runs per eval\", (v) => Number(v))\n .option(\"--deterministic-only\", \"skip LLM-judged evals\")\n .option(\n \"--offline\",\n \"never fetch a remote manifest; read external metadata from local manifests\",\n )\n .option(\"--no-cache\", \"bypass the judge cache\")\n .option(\n \"--max-turns <n>\",\n \"Stop after this many ensemble runs (a cached ensemble costs none)\",\n (v) => Number(v),\n )\n .option(\n \"-f, --format <format>\",\n `Output format: ${formats.join(\" | \")}`,\n parseFormatArg(\"--format\", formats),\n \"pretty\" as ReportFormat,\n )\n .option(\"-o, --output <file>\", \"also write the report to a file\")\n .option(\n \"--report-unused-artifacts\",\n \"list every skill and agent the session was offered and never used\",\n )\n .option(\"--fail-on-review\", \"Exit 1 when any eval lands in the human-review zone (the default)\")\n .option(\"--no-fail-on-review\", \"Do not fail the run on evals left for human review\")\n // `<kind>`, not `<kind...>`: a variadic option greedily eats the\n // positional `[traces...]` that follow it. Repeat the flag instead.\n .option(\n \"--allow-execution <kind>\",\n \"Run only these execution grants (repeatable): frontmatter-commands\",\n collectGrant,\n [],\n )\n .option(\"--no-execution\", \"Clear every execution grant for this run\")\n .option(\n \"--require <module>\",\n \"load a grader plugin; repeatable, and added to config plugins\",\n collect,\n [],\n )\n .option(\"--all-projects\", \"evaluate every project's traces in the session store\")\n .option(\n \"--newer-than <duration>\",\n \"only traces modified within this window, such as 30m, 24h, 7d or 2w\",\n )\n .option(\"--limit <n>\", \"maximum traces to evaluate\", (v) => Number(v));\n return withHistory\n ? base.option(\n \"--history\",\n \"append to history and compare with the previous run\",\n )\n : base;\n}\n\naddRunFlags(\n // No `isDefault` (proposal 0034): `run` is a verb, so a bare\n // `manni tracevals` prints the help and exits 2, and a trace path with no\n // verb is commander's unknown-command refusal rather than a silent run.\n program\n .command(\"run [traces...]\")\n .description(\n \"Evaluate one or more traces against the skills and instructions they used\",\n ),\n)\n // Run-only, and single-trace-only: a manifest belongs to exactly one session\n // (ADR 01024). A corpus still picks one up per trace by convention — this\n // flag is for naming one outright, which only a single trace can mean.\n .option(\n \"--manifest <file>\",\n \"session manifest to compare artifacts against; without it one is looked for beside the trace and under the project\",\n )\n .action(async (traces: string[], opts: RunFlags, command: Command) => {\n try {\n await executeRun(traces, opts, colorFor(command, process.stdout.isTTY));\n } catch (e) {\n fail(e);\n }\n });\n\n// `calibrate` shares `run`'s flags because it *is* a run — plus the labels it\n// is measured against. Kept a separate command rather than a flag on `run`:\n// the report answers a different question and carries a different shape, and\n// a script must be able to tell which it is asking for (ADR 01022).\naddRunFlags(\n program\n .command(\"calibrate [traces...]\")\n .description(\n \"Measure judged and graded verdicts against a labels file: false passes, false fails, and review volume\",\n )\n .option(\n \"--labels <file>\",\n \"calibration labels sidecar (default: calibrate.labels)\",\n )\n .option(\n \"--sweep\",\n \"re-score the corpus across the configured grid of zones and ensemble sizes, from cached verdicts\",\n )\n .option(\"--max-false-pass <n>\", \"exit 1 above this many false passes\", (v) =>\n Number(v),\n )\n .option(\"--max-false-fail <n>\", \"exit 1 above this many false fails\", (v) =>\n Number(v),\n )\n .option(\n \"--max-review <n>\",\n \"exit 1 above this many needs-review outcomes\",\n (v) => Number(v),\n ),\n { history: false, formats: CALIBRATE_FORMATS },\n).action(\n async (\n traces: string[],\n opts: RunFlags & {\n labels?: string;\n sweep?: boolean;\n maxFalsePass?: number;\n maxFalseFail?: number;\n maxReview?: number;\n },\n command: Command,\n ) => {\n try {\n const shared = {\n ...sharedRunOptions(opts),\n color: colorFor(command, process.stdout.isTTY),\n };\n // A threshold that never trips looks exactly like a threshold that held.\n whole(\"--max-false-pass\", opts.maxFalsePass, 0);\n whole(\"--max-false-fail\", opts.maxFalseFail, 0);\n whole(\"--max-review\", opts.maxReview, 0);\n\n const { runCalibrate } = await import(\"./commands/calibrate.js\");\n const { report, rendered } = await runCalibrate({\n ...shared,\n ...(traces.length > 0 ? { traces } : {}),\n ...(opts.labels !== undefined ? { labels: opts.labels } : {}),\n ...(opts.sweep !== undefined ? { sweep: opts.sweep } : {}),\n ...(opts.maxFalsePass !== undefined\n ? { maxFalsePass: opts.maxFalsePass }\n : {}),\n ...(opts.maxFalseFail !== undefined\n ? { maxFalseFail: opts.maxFalseFail }\n : {}),\n ...(opts.maxReview !== undefined ? { maxReview: opts.maxReview } : {}),\n });\n console.log(rendered);\n process.exitCode = report.exitCode;\n } catch (e) {\n fail(e);\n }\n },\n);\n\naddConfigFlags(\n program\n .command(\"fill [paths...]\")\n .description(\n \"Propose evals for skills, agent definitions, and project rules, and write those above the confidence threshold\",\n ),\n)\n .option(\"--project <dir>\", \"project root to scan (default: current directory)\")\n // Repeatable, one value per occurrence, never split on commas — the family's\n // one-separator-per-list rule. It narrows what `fill` scans; there is no\n // `--collection`, because a docs collection is not an artifact set.\n .option(\"--exclude <glob>\", \"Glob to exclude (repeatable)\", collect, [])\n .option(\"--dry-run\", \"report proposals without writing them\")\n .option(\n \"--confidence <n>\",\n \"minimum confidence to write (0-1)\",\n (v) => parseFloat(v),\n )\n .option(\n \"--max-evals <n>\",\n \"maximum evals per artifact, including existing ones\",\n (v) => Number(v),\n )\n .option(\n \"--max-turns <n>\",\n \"Stop after this many inference calls (a cached artifact costs none)\",\n (v) => Number(v),\n )\n .option(\"--no-cache\", \"bypass the proposal cache\")\n .option(\n \"--provider <name>\",\n \"Provider: auto (default) | anthropic | openai | claude-cli | llama-cpp\",\n )\n .option(\n \"--model <model>\",\n \"Model override; needs a named provider, from here or config\",\n )\n .option(\"--local\", LOCAL_FLAG_HELP)\n .option(\n \"--offline\",\n \"never fetch a remote manifest; read external metadata from local manifests\",\n )\n .option(\n \"--require <module>\",\n \"load a grader plugin; repeatable, and added to config plugins\",\n collect,\n [],\n )\n .option(\n \"-f, --format <format>\",\n `Output format: ${SUMMARY_FORMATS.join(\" | \")}`,\n parseFormatArg(\"--format\", SUMMARY_FORMATS),\n \"pretty\" as SummaryFormat,\n )\n .action(async (paths: string[], opts: ConfigFlags & {\n project?: string;\n exclude?: string[];\n dryRun?: boolean;\n confidence?: number;\n maxEvals?: number;\n maxTurns?: number;\n cache?: boolean;\n provider?: string;\n model?: string;\n local?: boolean;\n offline?: boolean;\n require?: string[];\n format?: SummaryFormat;\n }, command: Command) => {\n try {\n numeric(\"--confidence\", opts.confidence, 0, 1);\n whole(\"--max-evals\", opts.maxEvals, 1);\n whole(\"--max-turns\", opts.maxTurns, 1);\n\n const { report, rendered } = await runFill({\n ...configOptions(opts),\n ...(paths.length > 0 ? { paths } : {}),\n ...(opts.project !== undefined ? { project: opts.project } : {}),\n ...(opts.exclude !== undefined ? { exclude: opts.exclude } : {}),\n ...(opts.dryRun !== undefined ? { dryRun: opts.dryRun } : {}),\n ...(opts.confidence !== undefined ? { confidence: opts.confidence } : {}),\n ...(opts.maxEvals !== undefined ? { maxEvals: opts.maxEvals } : {}),\n ...(opts.maxTurns !== undefined ? { maxTurns: opts.maxTurns } : {}),\n ...(opts.cache === false ? { noCache: true } : {}),\n ...(opts.provider !== undefined ? { provider: opts.provider } : {}),\n ...(opts.model !== undefined ? { model: opts.model } : {}),\n ...(opts.local !== undefined ? { local: opts.local } : {}),\n ...(opts.offline === true ? { offline: true } : {}),\n ...(opts.require !== undefined ? { require: opts.require } : {}),\n // P1 (proposal 0047): offered only on a terminal, where there is\n // someone to answer. Off one the block goes to the artifact and the\n // W1 line says so.\n confirm: terminalConfirm(),\n onNotice: notice,\n onRelocated: (result) => {\n const manifests = result.manifests.map((m) => m.file).join(\", \");\n notice(`moved ${String(result.summary.moved)} value(s) into ${manifests}.`);\n },\n color: colorFor(command, process.stdout.isTTY),\n });\n console.log(\n opts.format === \"json\" ? JSON.stringify(report, null, 2) : rendered,\n );\n process.exitCode = report.exitCode;\n } catch (e) {\n fail(e);\n }\n });\n\n// The one write path `run` never takes (ADR 01024). Meant for a `SessionStart`\n// hook, which is why it reads its payload on stdin and — in that mode — writes\n// its report to stderr: a SessionStart hook's stdout becomes model context.\naddConfigFlags(\n program\n .command(\"capture\")\n .description(\n \"Record a session manifest: sha256 of every instruction artifact plus the git SHA, read from a Claude Code hook payload on stdin\",\n ),\n)\n .option(\"--project <dir>\", \"project root to scan (default: the payload's cwd)\")\n .option(\"--session-id <id>\", \"session id (default: the payload's session_id)\")\n .option(\"-o, --out <file>\", \"write here instead of the configured directory\")\n .option(\n \"-f, --format <format>\",\n `Output format: ${SUMMARY_FORMATS.join(\" | \")}`,\n parseFormatArg(\"--format\", SUMMARY_FORMATS),\n \"pretty\" as SummaryFormat,\n )\n .action(async (opts: ConfigFlags & {\n project?: string;\n sessionId?: string;\n out?: string;\n format?: SummaryFormat;\n }) => {\n try {\n const { runCapture } = await import(\"./commands/capture.js\");\n const result = await runCapture({\n version,\n ...configOptions(opts),\n ...(opts.project !== undefined ? { project: opts.project } : {}),\n ...(opts.sessionId !== undefined ? { sessionId: opts.sessionId } : {}),\n ...(opts.out !== undefined ? { out: opts.out } : {}),\n format: opts.format ?? \"pretty\",\n });\n if (result.stdout !== \"\") console.log(result.stdout);\n // Hook mode's report, through the family's stderr writer rather than\n // `console.error`, so the `manni: ` prefix comes from `programName()`\n // and is never hand-spelled. `notice`, not `warn`: the report says what\n // this run did, so it is said every time rather than deduplicated.\n if (result.stderr !== \"\") notice(result.stderr);\n process.exitCode = result.exitCode;\n } catch (e) {\n fail(e);\n }\n });\n\n// Proposal 0079. `prepare` is meant for a SessionStart hook as `capture` is,\n// so under an envelope its report goes to stderr; a SessionStart hook's\n// stdout becomes model context.\naddConfigFlags(\n program\n .command(\"prepare\")\n .description(\n \"Fetch the local models judging needs and extract the rules of every file that applies to every session\",\n ),\n)\n .option(\"--project <dir>\", \"project root (default: the payload's cwd, else the current directory)\")\n .option(\"--no-cache\", \"extract again, even from cached sources\")\n .option(\"--offline\", \"refuse network providers, so only local models are fetched\")\n .option(\n \"-f, --format <format>\",\n `Output format: ${SUMMARY_FORMATS.join(\" | \")}`,\n parseFormatArg(\"--format\", SUMMARY_FORMATS),\n \"pretty\" as SummaryFormat,\n )\n .action(async (opts: ConfigFlags & {\n project?: string;\n cache?: boolean;\n offline?: boolean;\n format?: SummaryFormat;\n }) => {\n try {\n const { runPrepare } = await import(\"./commands/prepare.js\");\n const result = await runPrepare({\n ...configOptions(opts),\n ...(opts.project !== undefined ? { project: opts.project } : {}),\n ...(opts.cache === false ? { noCache: true } : {}),\n ...(opts.offline === true ? { offline: true } : {}),\n format: opts.format ?? \"pretty\",\n });\n if (result.stdout !== \"\") console.log(result.stdout);\n if (result.stderr !== \"\") notice(result.stderr);\n process.exitCode = result.exitCode;\n } catch (e) {\n fail(e);\n }\n });\n\n// `[traces...]` rather than `<trace>`, so a missing or second trace gets the\n// tool's own message and exit 2 instead of commander's.\naddConfigFlags(\n program\n .command(\"check [traces...]\")\n .description(\n \"Judge the last turn of one session against the rules that governed it\",\n ),\n)\n .option(\"--project <dir>\", \"project root for resolving sources (default: the trace's recorded cwd)\")\n .option(\n \"--provider <name>\",\n \"Judge provider: auto (default) | anthropic | openai | claude-cli | jev | llama-cpp\",\n )\n .option(\"--model <model>\", \"Judge model; needs a named provider, from here or config\")\n .option(\"--local\", LOCAL_FLAG_HELP)\n .option(\"--runs <n>\", \"judge calls per rule (overrides judge.ensembleRuns)\", (v) => Number(v))\n .option(\"--no-cache\", \"bypass the rules cache and the verdict cache\")\n .option(\"--offline\", \"refuse network providers; judge and extract with local models only\")\n .option(\n \"-f, --format <format>\",\n `Output format: ${SUMMARY_FORMATS.join(\" | \")}`,\n parseFormatArg(\"--format\", SUMMARY_FORMATS),\n \"pretty\" as SummaryFormat,\n )\n .option(\"-o, --output <file>\", \"also write the report to a file\")\n .action(async (traces: string[], opts: ConfigFlags & {\n project?: string;\n provider?: string;\n model?: string;\n local?: boolean;\n runs?: number;\n cache?: boolean;\n offline?: boolean;\n format?: SummaryFormat;\n output?: string;\n }, command: Command) => {\n try {\n const trace = traces[0];\n if (trace === undefined) {\n throw new TracevalsError(\"no trace given; pass a trace file or run manni tracevals list\");\n }\n if (traces.length > 1) {\n throw new TracevalsError(`tracevals check takes one trace, got ${String(traces.length)}`);\n }\n whole(\"--runs\", opts.runs, 1);\n const { runCheck } = await import(\"./commands/check.js\");\n const { report, rendered } = await runCheck({\n ...configOptions(opts),\n tracePath: trace,\n ...(opts.project !== undefined ? { project: opts.project } : {}),\n ...(opts.provider !== undefined ? { provider: opts.provider } : {}),\n ...(opts.model !== undefined ? { model: opts.model } : {}),\n ...(opts.local !== undefined ? { local: opts.local } : {}),\n ...(opts.runs !== undefined ? { runs: opts.runs } : {}),\n ...(opts.cache === false ? { noCache: true } : {}),\n ...(opts.offline === true ? { offline: true } : {}),\n format: opts.format ?? \"pretty\",\n ...(opts.output !== undefined ? { output: opts.output } : {}),\n color: colorFor(command, process.stdout.isTTY),\n });\n console.log(rendered);\n process.exitCode = report.exitCode;\n } catch (e) {\n fail(e);\n }\n });\n\n// No `-c`/`--no-config`: `release` reads no config, only the envelope.\nprogram\n .command(\"release\")\n .description(\"Return a session's lease on the model host, or with --all stop the host\")\n .option(\"--all\", \"drop every lease, unload every model and stop the host\")\n .option(\n \"-f, --format <format>\",\n `Output format: ${SUMMARY_FORMATS.join(\" | \")}`,\n parseFormatArg(\"--format\", SUMMARY_FORMATS),\n \"pretty\" as SummaryFormat,\n )\n .action(async (opts: { all?: boolean; format?: SummaryFormat }) => {\n try {\n const { runRelease } = await import(\"./commands/release.js\");\n const result = await runRelease({\n ...(opts.all === true ? { all: true } : {}),\n format: opts.format ?? \"pretty\",\n });\n if (result.stdout !== \"\") console.log(result.stdout);\n process.exitCode = result.exitCode;\n } catch (e) {\n fail(e);\n }\n });\n\nprogram\n .command(\"list\")\n .description(\"List discoverable traces (Claude Code session files)\")\n // The long spellings only, matching `run`: a short form that exists on one\n // verb and not on its sibling is exactly the drift \"commands must have\n // parallel behaviors\" exists to prevent.\n .option(\n \"--project <dir>\",\n \"project directory to scope to (default: current directory)\",\n )\n .option(\"--all-projects\", \"scan every project in the session store\")\n .option(\n \"--newer-than <duration>\",\n \"only traces modified within this window, such as 30m, 24h, 7d or 2w\",\n )\n .option(\"--limit <n>\", \"maximum traces to list\", (v) => Number(v))\n .option(\n \"-f, --format <format>\",\n `Output format: ${SUMMARY_FORMATS.join(\" | \")}`,\n parseFormatArg(\"--format\", SUMMARY_FORMATS),\n \"pretty\" as SummaryFormat,\n )\n // No `-c`/`--no-config`: `list` enumerates the session store and reads no\n // config at all, and an accepted flag that quietly does nothing is worse\n // than an absent one.\n .action(async (opts: {\n project?: string;\n allProjects?: boolean;\n newerThan?: string;\n limit?: number;\n format?: SummaryFormat;\n }, command: Command) => {\n try {\n // The same footgun as `run --limit`: `slice(0, -1)` lists everything but\n // the oldest, and reads as a shorter store rather than as a bad flag.\n whole(\"--limit\", opts.limit, 1);\n const run = await runList({\n project: opts.project,\n allProjects: opts.allProjects,\n ...(opts.newerThan !== undefined ? { newerThan: opts.newerThan } : {}),\n limit: opts.limit,\n });\n console.log(\n opts.format === \"json\"\n ? JSON.stringify(run, null, 2)\n : renderList(run, { color: colorFor(command, process.stdout.isTTY) }),\n );\n } catch (e) {\n fail(e);\n }\n });\n\nreturn program;\n}\n"],"mappings":"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","names":["report","rendered"]}
|
|
@@ -4,18 +4,18 @@ import {
|
|
|
4
4
|
parseQueryParams,
|
|
5
5
|
resolveGetInputs,
|
|
6
6
|
resolveQueryInputs
|
|
7
|
-
} from "./chunk-
|
|
8
|
-
import "./chunk-
|
|
9
|
-
import "./chunk-
|
|
10
|
-
import "./chunk-
|
|
11
|
-
import "./chunk-
|
|
12
|
-
import "./chunk-TCC737IS.js";
|
|
13
|
-
import "./chunk-527HHQPS.js";
|
|
7
|
+
} from "./chunk-QQNPVW3J.js";
|
|
8
|
+
import "./chunk-CR3HZERW.js";
|
|
9
|
+
import "./chunk-5UB47BEV.js";
|
|
10
|
+
import "./chunk-5VWDIWOH.js";
|
|
11
|
+
import "./chunk-MSMB6XOS.js";
|
|
14
12
|
import "./chunk-YEUYKR62.js";
|
|
15
13
|
import "./chunk-RNVYGWIC.js";
|
|
16
14
|
import "./chunk-MNH7QO4Z.js";
|
|
17
|
-
import "./chunk-
|
|
18
|
-
import "./chunk-
|
|
15
|
+
import "./chunk-XKBEHKWO.js";
|
|
16
|
+
import "./chunk-HX44GB4Z.js";
|
|
17
|
+
import "./chunk-QCHVR4ZM.js";
|
|
18
|
+
import "./chunk-YSCZL4U5.js";
|
|
19
19
|
import "./chunk-OWBRDNRZ.js";
|
|
20
20
|
import "./chunk-G3T47CFV.js";
|
|
21
21
|
import "./chunk-2H7UOFLK.js";
|
|
@@ -25,4 +25,4 @@ export {
|
|
|
25
25
|
resolveGetInputs,
|
|
26
26
|
resolveQueryInputs
|
|
27
27
|
};
|
|
28
|
-
//# sourceMappingURL=cli-
|
|
28
|
+
//# sourceMappingURL=cli-YL3IDR52.js.map
|
|
@@ -11,16 +11,16 @@ import {
|
|
|
11
11
|
runPromote,
|
|
12
12
|
runReview,
|
|
13
13
|
seedGoldenCases
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-CEVU3GFF.js";
|
|
15
15
|
import {
|
|
16
16
|
renderList,
|
|
17
17
|
runList
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-ZKAKA54B.js";
|
|
19
19
|
import {
|
|
20
20
|
runRun
|
|
21
|
-
} from "./chunk-
|
|
22
|
-
import "./chunk-
|
|
23
|
-
import "./chunk-
|
|
21
|
+
} from "./chunk-K52CS4KT.js";
|
|
22
|
+
import "./chunk-LDKIIZDW.js";
|
|
23
|
+
import "./chunk-XG6PVB5S.js";
|
|
24
24
|
import {
|
|
25
25
|
allowExecutionMessage,
|
|
26
26
|
isExecutionGrant
|
|
@@ -37,19 +37,16 @@ import {
|
|
|
37
37
|
DocevalsError
|
|
38
38
|
} from "./chunk-SE4JN5XN.js";
|
|
39
39
|
import "./chunk-77AINBYM.js";
|
|
40
|
-
import "./chunk-
|
|
41
|
-
import "./chunk-TVIX653Q.js";
|
|
40
|
+
import "./chunk-ZKCNPKUO.js";
|
|
42
41
|
import {
|
|
43
42
|
terminalConfirm
|
|
44
|
-
} from "./chunk-
|
|
45
|
-
import "./chunk-3YHAYXBC.js";
|
|
43
|
+
} from "./chunk-CR3HZERW.js";
|
|
46
44
|
import {
|
|
47
45
|
collect,
|
|
48
46
|
configOption
|
|
49
|
-
} from "./chunk-
|
|
50
|
-
import "./chunk-
|
|
51
|
-
import "./chunk-
|
|
52
|
-
import "./chunk-527HHQPS.js";
|
|
47
|
+
} from "./chunk-5UB47BEV.js";
|
|
48
|
+
import "./chunk-5VWDIWOH.js";
|
|
49
|
+
import "./chunk-MSMB6XOS.js";
|
|
53
50
|
import {
|
|
54
51
|
fail
|
|
55
52
|
} from "./chunk-YEUYKR62.js";
|
|
@@ -58,13 +55,16 @@ import {
|
|
|
58
55
|
palette
|
|
59
56
|
} from "./chunk-RNVYGWIC.js";
|
|
60
57
|
import "./chunk-MNH7QO4Z.js";
|
|
58
|
+
import "./chunk-XKBEHKWO.js";
|
|
61
59
|
import {
|
|
62
|
-
LOCAL_FLAG_HELP,
|
|
63
60
|
notice
|
|
64
|
-
} from "./chunk-
|
|
61
|
+
} from "./chunk-HX44GB4Z.js";
|
|
62
|
+
import {
|
|
63
|
+
LOCAL_FLAG_HELP
|
|
64
|
+
} from "./chunk-QCHVR4ZM.js";
|
|
65
65
|
import {
|
|
66
66
|
package_default
|
|
67
|
-
} from "./chunk-
|
|
67
|
+
} from "./chunk-YSCZL4U5.js";
|
|
68
68
|
import "./chunk-OWBRDNRZ.js";
|
|
69
69
|
import "./chunk-G3T47CFV.js";
|
|
70
70
|
import "./chunk-2H7UOFLK.js";
|
|
@@ -470,4 +470,4 @@ export {
|
|
|
470
470
|
buildProgram,
|
|
471
471
|
colorFor
|
|
472
472
|
};
|
|
473
|
-
//# sourceMappingURL=cli-
|
|
473
|
+
//# sourceMappingURL=cli-ZQUJYQBA.js.map
|
package/dist/cli.js
CHANGED
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
} from "./chunk-YEUYKR62.js";
|
|
5
5
|
import {
|
|
6
6
|
package_default
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-YSCZL4U5.js";
|
|
8
8
|
import "./chunk-OWBRDNRZ.js";
|
|
9
9
|
import "./chunk-G3T47CFV.js";
|
|
10
10
|
import "./chunk-2H7UOFLK.js";
|
|
@@ -15,7 +15,7 @@ var DOMAINS = [
|
|
|
15
15
|
{
|
|
16
16
|
names: ["meta"],
|
|
17
17
|
load: async () => [
|
|
18
|
-
(await import("./cli-
|
|
18
|
+
(await import("./cli-YL3IDR52.js")).buildProgram().name("meta").description(
|
|
19
19
|
"Validate, read, query and fill document metadata against JSON Schema"
|
|
20
20
|
)
|
|
21
21
|
]
|
|
@@ -23,7 +23,7 @@ var DOMAINS = [
|
|
|
23
23
|
{
|
|
24
24
|
names: ["a11y"],
|
|
25
25
|
load: async () => [
|
|
26
|
-
(await import("./cli-
|
|
26
|
+
(await import("./cli-NM6FZ54R.js")).buildProgram().name("a11y").description(
|
|
27
27
|
"Crawl a site and check every page for accessibility violations with axe-core"
|
|
28
28
|
)
|
|
29
29
|
]
|
|
@@ -31,7 +31,7 @@ var DOMAINS = [
|
|
|
31
31
|
{
|
|
32
32
|
names: ["cite"],
|
|
33
33
|
load: async () => [
|
|
34
|
-
(await import("./cli-
|
|
34
|
+
(await import("./cli-KIID535Y.js")).buildProgram().name("cite").description(
|
|
35
35
|
"Track citations from doc claims to source lines and check them for drift"
|
|
36
36
|
)
|
|
37
37
|
]
|
|
@@ -39,7 +39,7 @@ var DOMAINS = [
|
|
|
39
39
|
{
|
|
40
40
|
names: ["lint"],
|
|
41
41
|
load: async () => [
|
|
42
|
-
(await import("./cli-
|
|
42
|
+
(await import("./cli-37SRAYNE.js")).buildProgram().name("lint").description(
|
|
43
43
|
"Validate document structure against doctype templates, routed by a page's type"
|
|
44
44
|
)
|
|
45
45
|
]
|
|
@@ -47,7 +47,7 @@ var DOMAINS = [
|
|
|
47
47
|
{
|
|
48
48
|
names: ["docevals"],
|
|
49
49
|
load: async () => [
|
|
50
|
-
(await import("./cli-
|
|
50
|
+
(await import("./cli-ZQUJYQBA.js")).buildProgram().name("docevals").description(
|
|
51
51
|
"Deterministic and LLM-as-judge evals for documentation pages, driven by frontmatter"
|
|
52
52
|
)
|
|
53
53
|
]
|
|
@@ -55,13 +55,13 @@ var DOMAINS = [
|
|
|
55
55
|
{
|
|
56
56
|
names: ["term"],
|
|
57
57
|
load: async () => [
|
|
58
|
-
(await import("./term-
|
|
58
|
+
(await import("./term-PJIJQZNF.js")).buildProgram().name("term").description("Check, lint and render a docset's terms and the references into them")
|
|
59
59
|
]
|
|
60
60
|
},
|
|
61
61
|
{
|
|
62
62
|
names: ["graph"],
|
|
63
63
|
load: async () => [
|
|
64
|
-
(await import("./cli-
|
|
64
|
+
(await import("./cli-IRHPPUFJ.js")).buildProgram().name("graph").description(
|
|
65
65
|
"Deterministic knowledge graphs derived from documentation frontmatter and formatting"
|
|
66
66
|
)
|
|
67
67
|
]
|
|
@@ -69,7 +69,7 @@ var DOMAINS = [
|
|
|
69
69
|
{
|
|
70
70
|
names: ["tracevals"],
|
|
71
71
|
load: async () => [
|
|
72
|
-
(await import("./cli-
|
|
72
|
+
(await import("./cli-XIODOEUG.js")).buildProgram().name("tracevals").description(
|
|
73
73
|
"Deterministic and LLM-as-judge adherence evals for AI agent session traces"
|
|
74
74
|
)
|
|
75
75
|
]
|
|
@@ -78,7 +78,7 @@ var DOMAINS = [
|
|
|
78
78
|
{
|
|
79
79
|
names: ["key"],
|
|
80
80
|
load: async () => [
|
|
81
|
-
(await import("./cli-
|
|
81
|
+
(await import("./cli-MTDGQIIV.js")).buildProgram().name("key").description("Set and rotate the family key that encrypted values are encrypted with.")
|
|
82
82
|
]
|
|
83
83
|
},
|
|
84
84
|
// The two family verbs (proposal 0078), and the only verbs the umbrella
|
|
@@ -86,7 +86,7 @@ var DOMAINS = [
|
|
|
86
86
|
{
|
|
87
87
|
names: ["check", "status"],
|
|
88
88
|
load: async () => {
|
|
89
|
-
const { buildCheck, buildStatus } = await import("./cli-
|
|
89
|
+
const { buildCheck, buildStatus } = await import("./cli-HXWYUKGJ.js");
|
|
90
90
|
return [buildCheck(), buildStatus()];
|
|
91
91
|
}
|
|
92
92
|
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
CONFIG_SECTION_KEY,
|
|
4
|
+
DEFAULT_CONFIG_FILENAME,
|
|
5
|
+
discoverConfig,
|
|
6
|
+
loadConfig,
|
|
7
|
+
parseConfig
|
|
8
|
+
} from "./chunk-TPVOOTMN.js";
|
|
9
|
+
import "./chunk-CU57HT2E.js";
|
|
10
|
+
import "./chunk-BWCWTHYS.js";
|
|
11
|
+
import "./chunk-UKZNLVJW.js";
|
|
12
|
+
import "./chunk-YNHZHSSM.js";
|
|
13
|
+
import "./chunk-XKBEHKWO.js";
|
|
14
|
+
import "./chunk-HX44GB4Z.js";
|
|
15
|
+
import "./chunk-QCHVR4ZM.js";
|
|
16
|
+
import "./chunk-OWBRDNRZ.js";
|
|
17
|
+
import "./chunk-G3T47CFV.js";
|
|
18
|
+
import "./chunk-2H7UOFLK.js";
|
|
19
|
+
export {
|
|
20
|
+
CONFIG_SECTION_KEY,
|
|
21
|
+
DEFAULT_CONFIG_FILENAME,
|
|
22
|
+
discoverConfig,
|
|
23
|
+
loadConfig,
|
|
24
|
+
parseConfig
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=config-O6UBGEDK.js.map
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
NOT_SET_UP,
|
|
4
|
+
NO_HOST,
|
|
5
|
+
renderCheck,
|
|
6
|
+
renderPrepare,
|
|
7
|
+
renderRelease
|
|
8
|
+
} from "./chunk-D2LBN44V.js";
|
|
9
|
+
import "./chunk-RNVYGWIC.js";
|
|
10
|
+
import "./chunk-2H7UOFLK.js";
|
|
11
|
+
export {
|
|
12
|
+
NOT_SET_UP,
|
|
13
|
+
NO_HOST,
|
|
14
|
+
renderCheck,
|
|
15
|
+
renderPrepare,
|
|
16
|
+
renderRelease
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=conformance-ALLPNGEQ.js.map
|