@hawkeyexl/manni 4.6.0 → 4.8.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-OZOACN4G.js → batch-6LJJZTT7.js} +12 -12
- package/dist/{build-Z5VOVADH.js → build-QKFXKAXT.js} +9 -9
- package/dist/{calibrate-TZYT42DR.js → calibrate-UQJR3WCU.js} +13 -13
- package/dist/{capture-SL4MNDDP.js → capture-HQ2PGM5Z.js} +12 -12
- package/dist/{check-PKY7KTQE.js → check-3DZOMJ7R.js} +10 -10
- package/dist/{check-5OMA42Y6.js → check-BF56QRWL.js} +9 -9
- package/dist/{check-WB2QDHJQ.js → check-NSDC5LSE.js} +39 -33
- package/dist/check-NSDC5LSE.js.map +1 -0
- package/dist/{chunk-TLXE7LYK.js → chunk-22G33NL2.js} +3 -3
- package/dist/{chunk-2KRB3EG7.js → chunk-2QEHLWYM.js} +2 -2
- package/dist/{chunk-QW77LCOU.js → chunk-426TGC2Q.js} +5 -5
- package/dist/{chunk-Z4IZGEM3.js → chunk-77WI6LJW.js} +5 -5
- package/dist/{chunk-KCOFEWV5.js → chunk-A36QDIXZ.js} +2 -2
- package/dist/{chunk-73TC4DYH.js → chunk-ALAH6HNY.js} +2 -2
- package/dist/{chunk-GREQKO6M.js → chunk-AZXCL5WH.js} +4 -4
- package/dist/{chunk-MHM4QEBV.js → chunk-BMRZFTAD.js} +3 -3
- package/dist/{chunk-IY7NYNPZ.js → chunk-BP7LGVF3.js} +7 -7
- package/dist/{chunk-PCFG7E6B.js → chunk-CGO5MNRD.js} +2 -2
- package/dist/{chunk-PCFG7E6B.js.map → chunk-CGO5MNRD.js.map} +1 -1
- package/dist/{chunk-7WRP5FFP.js → chunk-CHDADR7F.js} +4 -4
- package/dist/{chunk-NBMPHD4I.js → chunk-EOGF6VCA.js} +2 -2
- package/dist/{chunk-SM6NOMJS.js → chunk-G4T6SF3C.js} +2 -2
- package/dist/{chunk-733Y2STG.js → chunk-GEX2HDAT.js} +2 -2
- package/dist/{chunk-NHHOPZRA.js → chunk-GWGR7BDP.js} +5 -5
- package/dist/{chunk-UAKNZVCD.js → chunk-H3LM7D6K.js} +4 -4
- package/dist/{chunk-TH4JVQPF.js → chunk-HNMXL2OE.js} +6 -5
- package/dist/chunk-HNMXL2OE.js.map +1 -0
- package/dist/{chunk-C73RSUIC.js → chunk-HOE2C42K.js} +3 -3
- package/dist/{chunk-B3TS4WRM.js → chunk-HYT242KI.js} +8 -8
- package/dist/{chunk-C3B2VJNC.js → chunk-J3IK5IGO.js} +2 -2
- package/dist/{chunk-M6GSS72T.js → chunk-JUN4DUHG.js} +6 -6
- package/dist/{chunk-XPEWUK7J.js → chunk-KPXOJMQ6.js} +17 -14
- package/dist/chunk-KPXOJMQ6.js.map +1 -0
- package/dist/{chunk-TUAAR3MM.js → chunk-KRSLDZ7N.js} +2 -2
- package/dist/{chunk-UJSGS2Y5.js → chunk-KWAXJCKS.js} +4 -4
- package/dist/{chunk-2M6DVNI5.js → chunk-LRU5BK3L.js} +4 -4
- package/dist/{chunk-T6SYGLWR.js → chunk-LXFY64QR.js} +3 -3
- package/dist/{chunk-BWCWTHYS.js → chunk-NGTVREIH.js} +4 -4
- package/dist/chunk-NGTVREIH.js.map +1 -0
- package/dist/{chunk-NTWW7J76.js → chunk-OA2GKJVM.js} +2 -2
- package/dist/{chunk-DC5DDJVE.js → chunk-QRAKST62.js} +4 -4
- package/dist/{chunk-YLK2J5YK.js → chunk-RGB7WBFD.js} +73 -9
- package/dist/chunk-RGB7WBFD.js.map +1 -0
- package/dist/{chunk-APKH2T6E.js → chunk-TKVGEFMH.js} +3 -3
- package/dist/{chunk-2JFPBZJK.js → chunk-TVKYNKB3.js} +10 -10
- package/dist/{chunk-GAJIJKET.js → chunk-UMGAACCP.js} +3 -3
- package/dist/{chunk-MWBJ3KTF.js → chunk-UZGSFQLT.js} +4 -4
- package/dist/{chunk-SWSTHZBI.js → chunk-VCQOUFTZ.js} +4 -4
- package/dist/{chunk-FLAO4ZS3.js → chunk-VQK4VHLF.js} +8 -8
- package/dist/chunk-VQK4VHLF.js.map +1 -0
- package/dist/{chunk-N7JSEDSC.js → chunk-W6AZHTGB.js} +2 -2
- package/dist/{chunk-M2RLHZ4J.js → chunk-W7RSTW55.js} +2 -2
- package/dist/{chunk-3NWX34ZI.js → chunk-WZFA33SD.js} +6 -6
- package/dist/{chunk-5G53XATW.js → chunk-ZDYW7XTS.js} +3 -3
- package/dist/{chunk-PL4UAF4S.js → chunk-ZH3VTIBL.js} +9 -9
- package/dist/{chunk-UWQ2UVHE.js → chunk-ZJNE4BKG.js} +4 -4
- package/dist/{chunk-MOWMCEOJ.js → chunk-ZYRHDBVS.js} +5 -5
- package/dist/{cli-PSKNB66T.js → cli-7OIV7UXF.js} +35 -34
- package/dist/cli-7OIV7UXF.js.map +1 -0
- package/dist/{cli-UQ7A3YA2.js → cli-CSXPJZVM.js} +14 -14
- package/dist/{cli-EPVZHAZS.js → cli-EOSY3WVX.js} +10 -10
- package/dist/{cli-6EWVMEN6.js → cli-IX3WSFV4.js} +2 -2
- package/dist/{cli-LUCSGTVI.js → cli-IYC7F5OJ.js} +13 -13
- package/dist/{cli-6H7HVDMQ.js → cli-JER6KIUJ.js} +20 -20
- package/dist/{cli-UO4NHIB3.js → cli-PNK2HTIC.js} +11 -11
- package/dist/{cli-YHYDLQAF.js → cli-WGONI6PJ.js} +7 -7
- package/dist/{cli-NIG4N3XM.js → cli-X24QGW6Y.js} +11 -11
- package/dist/cli.js +11 -11
- package/dist/{config-P4HDNTYD.js → config-YWSNBFEE.js} +3 -3
- package/dist/docmeta.js +6 -6
- package/dist/{github-7ZCH5PSO.js → github-GFTLEZ3D.js} +9 -9
- package/dist/{github-POT6724K.js → github-LL5LHQFG.js} +11 -11
- package/dist/index.d.ts +5 -5
- package/dist/index.js +32 -32
- package/dist/{json-KT2K62L5.js → json-XDV4CZEU.js} +9 -9
- package/dist/{lint-5AQ5C2BV.js → lint-NO4GIR3Z.js} +9 -9
- package/dist/{list-5JZKX2NK.js → list-4G6F5BX2.js} +9 -9
- package/dist/{list-SWPFXQMU.js → list-4GJ6KI4U.js} +9 -9
- package/dist/{page-UPSXRP75.js → page-4VJQELH5.js} +8 -8
- package/dist/{prepare-6GNEWCNH.js → prepare-TGHFPUYE.js} +17 -17
- package/dist/prepare-TGHFPUYE.js.map +1 -0
- package/dist/{pretty-Q6FQAOK4.js → pretty-HFA6ITJY.js} +10 -10
- package/dist/{pretty-SQRPFPSQ.js → pretty-ZMKG3AJR.js} +9 -9
- package/dist/{provider-AMGRDY6V.js → provider-527CO4DM.js} +2 -2
- package/dist/{release-IECYCLTD.js → release-3D5PK6M7.js} +2 -2
- package/dist/release-3D5PK6M7.js.map +1 -0
- package/dist/{reporters-45MMC2ID.js → reporters-DZTHBJEA.js} +8 -8
- package/dist/{reporters-XUV4MM64.js → reporters-FRM5BHPL.js} +4 -4
- package/dist/{run-KMWY2IAN.js → run-BRC64Y7B.js} +9 -9
- package/dist/{conformance-ZFCMKM6M.js → runtime-7QE3DW6S.js} +2 -2
- package/dist/{term-PCJUCWNF.js → term-PNWS7F5B.js} +13 -13
- package/dist/{validate-IMNCZNWG.js → validate-ULPJI4GQ.js} +4 -4
- package/package.json +1 -1
- package/plugin/manni/.claude-plugin/plugin.json +1 -1
- package/dist/check-WB2QDHJQ.js.map +0 -1
- package/dist/chunk-BWCWTHYS.js.map +0 -1
- package/dist/chunk-FLAO4ZS3.js.map +0 -1
- package/dist/chunk-TH4JVQPF.js.map +0 -1
- package/dist/chunk-XPEWUK7J.js.map +0 -1
- package/dist/chunk-YLK2J5YK.js.map +0 -1
- package/dist/cli-PSKNB66T.js.map +0 -1
- package/dist/prepare-6GNEWCNH.js.map +0 -1
- package/dist/release-IECYCLTD.js.map +0 -1
- /package/dist/{batch-OZOACN4G.js.map → batch-6LJJZTT7.js.map} +0 -0
- /package/dist/{build-Z5VOVADH.js.map → build-QKFXKAXT.js.map} +0 -0
- /package/dist/{calibrate-TZYT42DR.js.map → calibrate-UQJR3WCU.js.map} +0 -0
- /package/dist/{capture-SL4MNDDP.js.map → capture-HQ2PGM5Z.js.map} +0 -0
- /package/dist/{check-5OMA42Y6.js.map → check-3DZOMJ7R.js.map} +0 -0
- /package/dist/{check-PKY7KTQE.js.map → check-BF56QRWL.js.map} +0 -0
- /package/dist/{chunk-TLXE7LYK.js.map → chunk-22G33NL2.js.map} +0 -0
- /package/dist/{chunk-2KRB3EG7.js.map → chunk-2QEHLWYM.js.map} +0 -0
- /package/dist/{chunk-QW77LCOU.js.map → chunk-426TGC2Q.js.map} +0 -0
- /package/dist/{chunk-Z4IZGEM3.js.map → chunk-77WI6LJW.js.map} +0 -0
- /package/dist/{chunk-KCOFEWV5.js.map → chunk-A36QDIXZ.js.map} +0 -0
- /package/dist/{chunk-73TC4DYH.js.map → chunk-ALAH6HNY.js.map} +0 -0
- /package/dist/{chunk-GREQKO6M.js.map → chunk-AZXCL5WH.js.map} +0 -0
- /package/dist/{chunk-MHM4QEBV.js.map → chunk-BMRZFTAD.js.map} +0 -0
- /package/dist/{chunk-IY7NYNPZ.js.map → chunk-BP7LGVF3.js.map} +0 -0
- /package/dist/{chunk-7WRP5FFP.js.map → chunk-CHDADR7F.js.map} +0 -0
- /package/dist/{chunk-NBMPHD4I.js.map → chunk-EOGF6VCA.js.map} +0 -0
- /package/dist/{chunk-SM6NOMJS.js.map → chunk-G4T6SF3C.js.map} +0 -0
- /package/dist/{chunk-733Y2STG.js.map → chunk-GEX2HDAT.js.map} +0 -0
- /package/dist/{chunk-NHHOPZRA.js.map → chunk-GWGR7BDP.js.map} +0 -0
- /package/dist/{chunk-UAKNZVCD.js.map → chunk-H3LM7D6K.js.map} +0 -0
- /package/dist/{chunk-C73RSUIC.js.map → chunk-HOE2C42K.js.map} +0 -0
- /package/dist/{chunk-B3TS4WRM.js.map → chunk-HYT242KI.js.map} +0 -0
- /package/dist/{chunk-C3B2VJNC.js.map → chunk-J3IK5IGO.js.map} +0 -0
- /package/dist/{chunk-M6GSS72T.js.map → chunk-JUN4DUHG.js.map} +0 -0
- /package/dist/{chunk-TUAAR3MM.js.map → chunk-KRSLDZ7N.js.map} +0 -0
- /package/dist/{chunk-UJSGS2Y5.js.map → chunk-KWAXJCKS.js.map} +0 -0
- /package/dist/{chunk-2M6DVNI5.js.map → chunk-LRU5BK3L.js.map} +0 -0
- /package/dist/{chunk-T6SYGLWR.js.map → chunk-LXFY64QR.js.map} +0 -0
- /package/dist/{chunk-NTWW7J76.js.map → chunk-OA2GKJVM.js.map} +0 -0
- /package/dist/{chunk-DC5DDJVE.js.map → chunk-QRAKST62.js.map} +0 -0
- /package/dist/{chunk-APKH2T6E.js.map → chunk-TKVGEFMH.js.map} +0 -0
- /package/dist/{chunk-2JFPBZJK.js.map → chunk-TVKYNKB3.js.map} +0 -0
- /package/dist/{chunk-GAJIJKET.js.map → chunk-UMGAACCP.js.map} +0 -0
- /package/dist/{chunk-MWBJ3KTF.js.map → chunk-UZGSFQLT.js.map} +0 -0
- /package/dist/{chunk-SWSTHZBI.js.map → chunk-VCQOUFTZ.js.map} +0 -0
- /package/dist/{chunk-N7JSEDSC.js.map → chunk-W6AZHTGB.js.map} +0 -0
- /package/dist/{chunk-M2RLHZ4J.js.map → chunk-W7RSTW55.js.map} +0 -0
- /package/dist/{chunk-3NWX34ZI.js.map → chunk-WZFA33SD.js.map} +0 -0
- /package/dist/{chunk-5G53XATW.js.map → chunk-ZDYW7XTS.js.map} +0 -0
- /package/dist/{chunk-PL4UAF4S.js.map → chunk-ZH3VTIBL.js.map} +0 -0
- /package/dist/{chunk-UWQ2UVHE.js.map → chunk-ZJNE4BKG.js.map} +0 -0
- /package/dist/{chunk-MOWMCEOJ.js.map → chunk-ZYRHDBVS.js.map} +0 -0
- /package/dist/{cli-UQ7A3YA2.js.map → cli-CSXPJZVM.js.map} +0 -0
- /package/dist/{cli-EPVZHAZS.js.map → cli-EOSY3WVX.js.map} +0 -0
- /package/dist/{cli-6EWVMEN6.js.map → cli-IX3WSFV4.js.map} +0 -0
- /package/dist/{cli-LUCSGTVI.js.map → cli-IYC7F5OJ.js.map} +0 -0
- /package/dist/{cli-6H7HVDMQ.js.map → cli-JER6KIUJ.js.map} +0 -0
- /package/dist/{cli-UO4NHIB3.js.map → cli-PNK2HTIC.js.map} +0 -0
- /package/dist/{cli-YHYDLQAF.js.map → cli-WGONI6PJ.js.map} +0 -0
- /package/dist/{cli-NIG4N3XM.js.map → cli-X24QGW6Y.js.map} +0 -0
- /package/dist/{config-P4HDNTYD.js.map → config-YWSNBFEE.js.map} +0 -0
- /package/dist/{conformance-ZFCMKM6M.js.map → github-GFTLEZ3D.js.map} +0 -0
- /package/dist/{github-7ZCH5PSO.js.map → github-LL5LHQFG.js.map} +0 -0
- /package/dist/{github-POT6724K.js.map → json-XDV4CZEU.js.map} +0 -0
- /package/dist/{json-KT2K62L5.js.map → lint-NO4GIR3Z.js.map} +0 -0
- /package/dist/{lint-5AQ5C2BV.js.map → list-4G6F5BX2.js.map} +0 -0
- /package/dist/{list-5JZKX2NK.js.map → list-4GJ6KI4U.js.map} +0 -0
- /package/dist/{list-SWPFXQMU.js.map → page-4VJQELH5.js.map} +0 -0
- /package/dist/{page-UPSXRP75.js.map → pretty-HFA6ITJY.js.map} +0 -0
- /package/dist/{pretty-Q6FQAOK4.js.map → pretty-ZMKG3AJR.js.map} +0 -0
- /package/dist/{pretty-SQRPFPSQ.js.map → provider-527CO4DM.js.map} +0 -0
- /package/dist/{provider-AMGRDY6V.js.map → reporters-DZTHBJEA.js.map} +0 -0
- /package/dist/{reporters-45MMC2ID.js.map → reporters-FRM5BHPL.js.map} +0 -0
- /package/dist/{reporters-XUV4MM64.js.map → run-BRC64Y7B.js.map} +0 -0
- /package/dist/{run-KMWY2IAN.js.map → runtime-7QE3DW6S.js.map} +0 -0
- /package/dist/{term-PCJUCWNF.js.map → term-PNWS7F5B.js.map} +0 -0
- /package/dist/{validate-IMNCZNWG.js.map → validate-ULPJI4GQ.js.map} +0 -0
|
@@ -22,7 +22,7 @@ import {
|
|
|
22
22
|
updateConfigEval,
|
|
23
23
|
updateManifestEval,
|
|
24
24
|
updatePageEval
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-GWGR7BDP.js";
|
|
26
26
|
import {
|
|
27
27
|
DEFAULT_CONFIG_FILENAME,
|
|
28
28
|
assertRegisteredGraders,
|
|
@@ -41,7 +41,7 @@ import {
|
|
|
41
41
|
sha256,
|
|
42
42
|
splitBody,
|
|
43
43
|
withExternalMetadata
|
|
44
|
-
} from "./chunk-
|
|
44
|
+
} from "./chunk-77WI6LJW.js";
|
|
45
45
|
import {
|
|
46
46
|
isTurnBudgetSkip
|
|
47
47
|
} from "./chunk-XG6PVB5S.js";
|
|
@@ -57,7 +57,7 @@ import {
|
|
|
57
57
|
} from "./chunk-77AINBYM.js";
|
|
58
58
|
import {
|
|
59
59
|
mergeMetaProvenance
|
|
60
|
-
} from "./chunk-
|
|
60
|
+
} from "./chunk-AZXCL5WH.js";
|
|
61
61
|
import {
|
|
62
62
|
palette
|
|
63
63
|
} from "./chunk-RNVYGWIC.js";
|
|
@@ -1284,4 +1284,4 @@ export {
|
|
|
1284
1284
|
renderCalibration,
|
|
1285
1285
|
runInit
|
|
1286
1286
|
};
|
|
1287
|
-
//# sourceMappingURL=chunk-
|
|
1287
|
+
//# sourceMappingURL=chunk-QRAKST62.js.map
|
|
@@ -10,13 +10,16 @@ import {
|
|
|
10
10
|
listInTree,
|
|
11
11
|
resolveArtifacts,
|
|
12
12
|
safeRead
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-TKVGEFMH.js";
|
|
14
14
|
import {
|
|
15
15
|
configDir
|
|
16
16
|
} from "./chunk-4TSWU2SU.js";
|
|
17
|
+
import {
|
|
18
|
+
makeRedactor
|
|
19
|
+
} from "./chunk-CU57HT2E.js";
|
|
17
20
|
import {
|
|
18
21
|
extractFrontmatter
|
|
19
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-A36QDIXZ.js";
|
|
20
23
|
|
|
21
24
|
// src/tracevals/rules/turn.ts
|
|
22
25
|
var INJECTED = /<(system-reminder|task-notification|ci-monitor-event|local-command-stdout|local-command-stderr|local-command-caveat)>[\s\S]*?<\/\1>/g;
|
|
@@ -102,6 +105,7 @@ var Collector = class {
|
|
|
102
105
|
this.home = home;
|
|
103
106
|
const match = exclude.length > 0 ? picomatch(exclude, { dot: true }) : null;
|
|
104
107
|
this.excluded = (path) => match !== null && match(this.display(path));
|
|
108
|
+
this.excludedName = (name) => exclude.includes(name);
|
|
105
109
|
}
|
|
106
110
|
cwd;
|
|
107
111
|
root;
|
|
@@ -111,6 +115,8 @@ var Collector = class {
|
|
|
111
115
|
seen = /* @__PURE__ */ new Set();
|
|
112
116
|
parsed = /* @__PURE__ */ new Map();
|
|
113
117
|
excluded;
|
|
118
|
+
/** Whether `exclude` lists, as it is, the name of a source with no file, such as `prompt`. */
|
|
119
|
+
excludedName;
|
|
114
120
|
display(path) {
|
|
115
121
|
const inRoot = relPosix(this.root, path);
|
|
116
122
|
if (inRoot !== null) return inRoot;
|
|
@@ -153,7 +159,8 @@ var Collector = class {
|
|
|
153
159
|
format,
|
|
154
160
|
trigger,
|
|
155
161
|
content,
|
|
156
|
-
sha256: createHash("sha256").update(content).digest("hex")
|
|
162
|
+
sha256: createHash("sha256").update(content).digest("hex"),
|
|
163
|
+
blocks: true
|
|
157
164
|
};
|
|
158
165
|
if (skill !== void 0) source.skill = skill;
|
|
159
166
|
const declared = this.declared(path, content);
|
|
@@ -162,10 +169,12 @@ var Collector = class {
|
|
|
162
169
|
return source;
|
|
163
170
|
}
|
|
164
171
|
/**
|
|
165
|
-
* Adds a source that says what the session was asked
|
|
166
|
-
* evals. With no file, its display path is its
|
|
172
|
+
* Adds a source that says what the session was asked, or one the transcript
|
|
173
|
+
* recorded. These never declare evals. With no file, its display path is its
|
|
174
|
+
* format, and `exclude` matches that name.
|
|
167
175
|
*/
|
|
168
|
-
addRequest(file, content, format, trigger) {
|
|
176
|
+
addRequest(file, content, format, trigger, blocks = true) {
|
|
177
|
+
if (EXCLUDABLE_BY_NAME.has(format) && this.excludedName(format)) return;
|
|
169
178
|
if (file !== null) {
|
|
170
179
|
if (this.has(file) || this.excluded(file)) return;
|
|
171
180
|
this.seen.add(key(file));
|
|
@@ -176,7 +185,8 @@ var Collector = class {
|
|
|
176
185
|
format,
|
|
177
186
|
trigger,
|
|
178
187
|
content,
|
|
179
|
-
sha256: createHash("sha256").update(content).digest("hex")
|
|
188
|
+
sha256: createHash("sha256").update(content).digest("hex"),
|
|
189
|
+
blocks
|
|
180
190
|
});
|
|
181
191
|
}
|
|
182
192
|
declared(path, content) {
|
|
@@ -255,8 +265,62 @@ async function resolveTurnSources(trace, turn, opts) {
|
|
|
255
265
|
addPrompts(c, trace, turn);
|
|
256
266
|
await addPlan(c, trace, turn, opts);
|
|
257
267
|
await addSpecs(c, touches, opts.plans ?? []);
|
|
268
|
+
await addSystemPrompt(c, trace, turn, opts);
|
|
258
269
|
return { sources: c.sources, warnings: c.warnings };
|
|
259
270
|
}
|
|
271
|
+
var EXCLUDABLE_BY_NAME = /* @__PURE__ */ new Set(["prompt", "plan", "system-prompt"]);
|
|
272
|
+
var BOUNDARY_MARKER = "__SYSTEM_PROMPT_DYNAMIC_BOUNDARY__";
|
|
273
|
+
function lastAttachment(trace, turn, type) {
|
|
274
|
+
for (let i = trace.events.length - 1; i >= 0; i -= 1) {
|
|
275
|
+
const event = trace.events[i];
|
|
276
|
+
if (event === void 0 || event.kind !== "meta" || event.index > turn.to) continue;
|
|
277
|
+
const attachment = event.raw.attachment;
|
|
278
|
+
if (event.raw.type === "attachment" && isRecord(attachment) && attachment.type === type) {
|
|
279
|
+
return { index: event.index, record: event.raw, attachment };
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
return void 0;
|
|
283
|
+
}
|
|
284
|
+
async function addSystemPrompt(c, trace, turn, opts) {
|
|
285
|
+
const scrub = makeRedactor(opts.redact ?? []);
|
|
286
|
+
const style = lastAttachment(trace, turn, "output_style_instructions")?.attachment.style;
|
|
287
|
+
const styleName = isRecord(style) && typeof style.name === "string" ? style.name : void 0;
|
|
288
|
+
const stylePrompt = isRecord(style) && typeof style.prompt === "string" ? style.prompt : void 0;
|
|
289
|
+
let builtIn;
|
|
290
|
+
if (styleName !== void 0 && stylePrompt !== void 0) {
|
|
291
|
+
const file = await userStyleFile(c, opts, styleName);
|
|
292
|
+
if (file === void 0) builtIn = stylePrompt;
|
|
293
|
+
else c.addRequest(file, scrub(stylePrompt), "output-style", `style ${styleName}`);
|
|
294
|
+
}
|
|
295
|
+
const snapshot = lastAttachment(trace, turn, "prompt_snapshot");
|
|
296
|
+
const recorded = snapshot?.attachment.systemPrompt;
|
|
297
|
+
if (snapshot === void 0 || !Array.isArray(recorded)) return;
|
|
298
|
+
const blocks = recorded.filter((b) => typeof b === "string");
|
|
299
|
+
const custom = !blocks.includes(BOUNDARY_MARKER);
|
|
300
|
+
const content = scrub([...blocks, ...builtIn !== void 0 ? [builtIn] : []].join("\n\n"));
|
|
301
|
+
const { version } = snapshot.record;
|
|
302
|
+
const by = typeof version === "string" ? `, Claude Code ${version}` : "";
|
|
303
|
+
const trigger = `recorded at turn ${String(snapshot.index)}${by}${custom ? ", custom" : ""}`;
|
|
304
|
+
c.addRequest(
|
|
305
|
+
null,
|
|
306
|
+
content,
|
|
307
|
+
"system-prompt",
|
|
308
|
+
trigger,
|
|
309
|
+
/* blocks= */
|
|
310
|
+
custom
|
|
311
|
+
);
|
|
312
|
+
}
|
|
313
|
+
async function userStyleFile(c, opts, name) {
|
|
314
|
+
const dirs = [.../* @__PURE__ */ new Set([c.cwd, c.root])].map((b) => join(b, ".claude", "output-styles"));
|
|
315
|
+
dirs.push(join(configDir(opts.env), "output-styles"));
|
|
316
|
+
for (const dir of dirs) {
|
|
317
|
+
for (const path of await listInTree(dir, (p) => p.endsWith(".md"), { maxDepth: 0 })) {
|
|
318
|
+
const declared = (await frontOf(c, path))?.name;
|
|
319
|
+
if ((typeof declared === "string" ? declared : basename(path, ".md")) === name) return path;
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
return void 0;
|
|
323
|
+
}
|
|
260
324
|
function addPrompts(c, trace, turn) {
|
|
261
325
|
const typed = trace.events.filter((e) => e.index <= turn.to && isTypedPrompt(e));
|
|
262
326
|
const main = typed.filter((e) => e.sidechain !== true);
|
|
@@ -349,7 +413,7 @@ async function addDesignated(c, opts) {
|
|
|
349
413
|
if (c.has(abs)) continue;
|
|
350
414
|
const content = await safeRead(abs);
|
|
351
415
|
if (content === null) {
|
|
352
|
-
c.warnings.push(`${c.display(abs)}: matched
|
|
416
|
+
c.warnings.push(`${c.display(abs)}: matched runtime.include but could not be read`);
|
|
353
417
|
continue;
|
|
354
418
|
}
|
|
355
419
|
c.add(abs, content, "designated", "always");
|
|
@@ -607,4 +671,4 @@ export {
|
|
|
607
671
|
resolveTurnSources,
|
|
608
672
|
pathKey
|
|
609
673
|
};
|
|
610
|
-
//# sourceMappingURL=chunk-
|
|
674
|
+
//# sourceMappingURL=chunk-RGB7WBFD.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/tracevals/rules/turn.ts","../src/tracevals/rules/sources.ts"],"sourcesContent":["/**\n * The turn a Stop or SubagentStop judges (proposal 0079). A turn starts at the\n * last prompt the user typed; tool results and hook feedback do not start one.\n * Under SubagentStop the turn is the subagent's whole run.\n *\n * Which user records are typed prompts is read from the record shape Claude\n * Code writes, not guessed from wording alone:\n *\n * - `isMeta: true` marks harness injections: a skill's \"Base directory\" body,\n * `<local-command-caveat>`, peer and scheduled messages, hook feedback.\n * - `isCompactSummary: true` is the \"session is being continued\" summary.\n * - `origin.kind` is `human` for a typed prompt and `task-notification` or\n * `peer` otherwise. Older records carry only `turnOrigin`, whose non-typed\n * values are `task_notification`, `scheduled` and `peer`.\n * - A record whose text is nothing but `<system-reminder>`,\n * `<task-notification>`, `<ci-monitor-event>` or `<local-command-*>` blocks\n * is an injection. A typed prompt Claude Code prefixed with a reminder keeps\n * the text after it, so it still counts.\n * - `Stop hook feedback:` and `[Request interrupted by user…]` are markers,\n * never prompts.\n *\n * A `<command-name>` record is a slash command someone typed, so it counts.\n */\nimport {\n emptyWindow,\n materialize,\n type TraceWindow,\n} from \"../graders/util.js\";\nimport type { Trace, TraceEvent } from \"../trace/types.js\";\n\nexport interface TurnSlice {\n window: TraceWindow;\n /** Ordinal in `trace.events` of the turn's first event. */\n from: number;\n /** Ordinal of its last event, inclusive. Less than `from` when there is no turn. */\n to: number;\n /** Typed prompts in the whole session, which `turn-count-above` reads. */\n sessionTurnCount: number;\n}\n\nconst INJECTED =\n /<(system-reminder|task-notification|ci-monitor-event|local-command-stdout|local-command-stderr|local-command-caveat)>[\\s\\S]*?<\\/\\1>/g;\nconst MARKER =\n /^(?:Stop hook feedback:|SubagentStop hook feedback:|\\[Request interrupted by user)/;\n/**\n * Origins of a prompt a person sent: typed in the CLI, or sent through the SDK.\n * Both record formats name it, as `origin.kind` or the older `turnOrigin`,\n * and both are read against this one set.\n */\nconst TYPED_TURN_ORIGINS = new Set([\"human\", \"sdk\"]);\nconst WORK = new Set<TraceEvent[\"kind\"]>([\"assistant\", \"tool_call\", \"tool_result\"]);\n\nexport function isTypedPrompt(event: TraceEvent): boolean {\n if (event.kind !== \"user\" || event.text === undefined) return false;\n const { raw } = event;\n if (raw.isMeta === true || raw.isCompactSummary === true) return false;\n const origin = raw.origin;\n if (\n typeof origin === \"object\" &&\n origin !== null &&\n \"kind\" in origin &&\n typeof origin.kind === \"string\"\n ) {\n if (!TYPED_TURN_ORIGINS.has(origin.kind)) return false;\n } else if (\n typeof raw.turnOrigin === \"string\" &&\n !TYPED_TURN_ORIGINS.has(raw.turnOrigin)\n ) {\n return false;\n }\n const rest = event.text.replace(INJECTED, \"\").trim();\n return rest !== \"\" && !MARKER.test(rest);\n}\n\n/** The last turn of a session: its last typed prompt to the end of the trace. */\nexport function lastTurn(trace: Trace): TurnSlice {\n const prompts = trace.events.filter((e) => e.sidechain !== true && isTypedPrompt(e));\n const sessionTurnCount = prompts.length;\n const to = trace.events.length - 1;\n const last = prompts.at(-1);\n if (last === undefined) {\n return {\n window: emptyWindow(\"turn\", \"last turn\", \"the trace holds no prompt the user typed\"),\n from: to + 1,\n to,\n sessionTurnCount,\n };\n }\n return slice(trace, last.index, [last], new Set([undefined]), sessionTurnCount, {\n label: \"last turn\",\n reason: \"nothing happened after the last prompt the user typed\",\n });\n}\n\n/**\n * A subagent's sidecar transcript parsed alone. Every record is a sidechain,\n * so the parser keeps no prompts; the turn is the whole run, and its prompts\n * are the task the subagent was given.\n */\nexport function subagentTurn(trace: Trace): TurnSlice {\n const prompts = trace.events.filter(isTypedPrompt);\n return slice(\n trace,\n 0,\n prompts,\n new Set(trace.events.map((e) => e.branchId)),\n prompts.length,\n { label: \"subagent run\", reason: \"the subagent recorded no work\" },\n );\n}\n\nfunction slice(\n trace: Trace,\n from: number,\n prompts: TraceEvent[],\n own: Set<string | undefined>,\n sessionTurnCount: number,\n words: { label: string; reason: string },\n): TurnSlice {\n const to = trace.events.length - 1;\n const worked = trace.events.some((e) => e.index > from && WORK.has(e.kind));\n if (!worked) {\n return {\n window: emptyWindow(\"turn\", words.label, words.reason),\n from,\n to,\n sessionTurnCount,\n };\n }\n const window = materialize(\n trace,\n \"turn\",\n words.label,\n [{ start: from, end: Number.POSITIVE_INFINITY }],\n undefined,\n own,\n );\n // Only typed prompts are prompts here, and `turnCount` is the session's,\n // because the one condition that reads it counts session turns.\n window.userMessages = prompts.map((p) => p.text ?? \"\");\n window.turnCount = sessionTurnCount;\n return { window, from, to, sessionTurnCount };\n}\n","/**\n * Which files govern the agent in a turn (proposal 0079, \"Rule sources and\n * their triggers\"). Resolution is deterministic, from the filesystem and the\n * trace; no model decides which files count.\n *\n * The list of formats is closed. Reading a file never makes it a source: a\n * README or a product docs page describes other systems, so only the known\n * formats, files named by `include`, and what a skill or an `@path` import\n * pulls in are ever returned. `exclude` removes a file from every row.\n *\n * To touch a file is to Read, Write or Edit it, anywhere in the session up to\n * the turn's end, which is Claude Code's own trigger for path-scoped rules.\n *\n * Six more formats say what the session was asked (proposal 0080): the typed\n * prompts, the approved plan, a touched Spec Kit feature, Kiro spec or live\n * OpenSpec change, and a touched file `runtime.plans` names. None is known\n * at session start, so only a turn resolves them, and none declares evals.\n *\n * Two are read from the transcript itself (proposal 0081): the system prompt\n * of the last prompt snapshot, and a user output style. Claude Code's own\n * prompt is reported and never blocks; a prompt the user wrote blocks.\n */\nimport { createHash } from \"node:crypto\";\nimport { homedir } from \"node:os\";\nimport { basename, dirname, isAbsolute, join, relative, resolve, sep } from \"node:path\";\nimport picomatch from \"picomatch\";\nimport { extractFrontmatter } from \"../../meta/extractors/frontmatter.js\";\nimport type { ExtractedMetadata } from \"../../meta/types.js\";\nimport { resolveArtifacts } from \"../artifacts/resolve.js\";\nimport { findGitRoot, listInTree, safeRead } from \"../artifacts/fs.js\";\nimport { extractEvals } from \"../evals/extract.js\";\nimport { windowOf } from \"../graders/util.js\";\nimport { makeRedactor } from \"../judge/redact.js\";\nimport { configDir } from \"../trace/discover.js\";\nimport type { Trace } from \"../trace/types.js\";\nimport { isTypedPrompt } from \"./turn.js\";\n\nexport type RuleFormat =\n | \"claude-md\"\n | \"claude-rule\"\n | \"agents-md\"\n | \"gemini-md\"\n | \"cursor-rule\"\n | \"kiro-steering\"\n | \"speckit-constitution\"\n | \"openspec-project\"\n | \"import\"\n | \"skill\"\n | \"slash-command\"\n | \"agent\"\n | \"designated\"\n | \"prompt\"\n | \"plan\"\n | \"speckit-spec\"\n | \"kiro-spec\"\n | \"openspec-change\"\n | \"plans\"\n | \"system-prompt\"\n | \"output-style\";\n\n/** An `ai` eval a source declares; its assertion is the rule (proposal 0079). */\nexport interface DeclaredRule {\n id: string;\n text: string;\n when?: Record<string, unknown>;\n}\n\nexport interface RuleSource {\n /** Absolute path on disk, or `\"\"` for the typed prompts, an inline plan and the system prompt. */\n path: string;\n /** Relative to the project root with forward slashes, or `~/…` under home. */\n displayPath: string;\n format: RuleFormat;\n /** Why the file is in scope, in words: `always`, `read`, `touched src/a.ts`. */\n trigger: string;\n content: string;\n /** sha256 of `content`, hex. */\n sha256: string;\n /** The skill a `skill` source belongs to. */\n skill?: string;\n /** Present when the file declares `ai` evals; they replace extraction. */\n declaredRules?: DeclaredRule[];\n /** False for Claude Code's default system prompt, whose rules are reported and never block. */\n blocks: boolean;\n}\n\nexport interface SourceOptions {\n /** The session's working directory, where the ancestor walk starts. */\n projectDir: string;\n /** Ceiling for the ancestor walk and base of `displayPath`; default the git root. */\n projectRoot?: string;\n /** `CLAUDE_CONFIG_DIR` finds `~/.claude`; `HOME` / `USERPROFILE` find `~/.gemini` and `~/.kiro`. */\n env?: Record<string, string | undefined>;\n /** `runtime.include`: globs, relative to the project root, in scope once read. */\n include?: string[];\n /** `runtime.exclude`: globs never treated as sources, in any row, and source names. */\n exclude?: string[];\n /** `judge.redact`: patterns scrubbed from what the transcript records of the system prompt. */\n redact?: string[];\n /** `runtime.plans`: globs, relative to the project root, in scope once touched. */\n plans?: string[];\n /** Set under SubagentStop: the subagent type whose definition governs the run. */\n agentType?: string;\n}\n\nexport interface ResolvedSources {\n sources: RuleSource[];\n warnings: string[];\n}\n\n/** The turn's ordinal bounds in `trace.events`, inclusive. `lastTurn` returns them. */\nexport interface TurnBounds {\n from: number;\n to: number;\n}\n\n/** Imports followed from a `claude-md` or `gemini-md` file, as Claude Code does. */\nconst MAX_IMPORT_HOPS = 4;\n\ntype Trigger =\n | { kind: \"always\" }\n | { kind: \"read\" }\n | { kind: \"globs\"; key: string; patterns: string[] };\n\ninterface Candidate {\n path: string;\n format: RuleFormat;\n trigger: Trigger;\n}\n\ninterface Touch {\n abs: string;\n rel: string | null;\n read: boolean;\n}\n\nclass Collector {\n readonly sources: RuleSource[] = [];\n readonly warnings: string[] = [];\n private readonly seen = new Set<string>();\n private readonly parsed = new Map<string, ExtractedMetadata | null>();\n private readonly excluded: (path: string) => boolean;\n /** Whether `exclude` lists, as it is, the name of a source with no file, such as `prompt`. */\n readonly excludedName: (name: string) => boolean;\n\n constructor(\n readonly cwd: string,\n readonly root: string,\n readonly home: string,\n exclude: string[],\n ) {\n const match = exclude.length > 0 ? picomatch(exclude, { dot: true }) : null;\n this.excluded = (path) => match !== null && match(this.display(path));\n // The whole name, never a glob: `**` names files, and keeps the prompt.\n this.excludedName = (name) => exclude.includes(name);\n }\n\n display(path: string): string {\n const inRoot = relPosix(this.root, path);\n if (inRoot !== null) return inRoot;\n const inHome = relPosix(this.home, path);\n if (inHome !== null) return `~/${inHome}`;\n return path.split(sep).join(\"/\");\n }\n\n has(path: string): boolean {\n return this.seen.has(key(path));\n }\n\n /** The file's front matter, or null when it has none or it does not parse. */\n front(path: string, content: string): ExtractedMetadata | null {\n const k = key(path);\n if (this.parsed.has(k)) return this.parsed.get(k) ?? null;\n let parsed: ExtractedMetadata | null = null;\n try {\n const fm = extractFrontmatter(content, \"markdown\");\n parsed = fm.present ? fm : null;\n } catch (err) {\n const loose = isCursorRule(path) ? cursorFront(content) : null;\n if (loose !== null) {\n this.parsed.set(k, loose);\n return loose;\n }\n const first = (err instanceof Error ? err.message : String(err)).split(\"\\n\")[0] ?? \"\";\n this.warnings.push(\n `${this.display(path)}: front matter does not parse (${first}), so it is read as having none`,\n );\n }\n this.parsed.set(k, parsed);\n return parsed;\n }\n\n /** Adds a source once. Returns it, or null when excluded or already listed. */\n add(\n path: string,\n content: string,\n format: RuleFormat,\n trigger: string,\n skill?: string,\n ): RuleSource | null {\n if (this.has(path) || this.excluded(path)) return null;\n this.seen.add(key(path));\n const source: RuleSource = {\n path,\n displayPath: this.display(path),\n format,\n trigger,\n content,\n sha256: createHash(\"sha256\").update(content).digest(\"hex\"),\n blocks: true,\n };\n if (skill !== undefined) source.skill = skill;\n const declared = this.declared(path, content);\n if (declared !== undefined) source.declaredRules = declared;\n this.sources.push(source);\n return source;\n }\n\n /**\n * Adds a source that says what the session was asked, or one the transcript\n * recorded. These never declare evals. With no file, its display path is its\n * format, and `exclude` matches that name.\n */\n addRequest(\n file: string | null,\n content: string,\n format: RuleFormat,\n trigger: string,\n blocks = true,\n ): void {\n // A named source goes by its name whether or not a file holds it, so\n // `exclude: [plan]` drops a plan file as it drops an inline plan.\n if (EXCLUDABLE_BY_NAME.has(format) && this.excludedName(format)) return;\n if (file !== null) {\n if (this.has(file) || this.excluded(file)) return;\n this.seen.add(key(file));\n }\n this.sources.push({\n path: file ?? \"\",\n displayPath: file === null ? format : this.display(file),\n format,\n trigger,\n content,\n sha256: createHash(\"sha256\").update(content).digest(\"hex\"),\n blocks,\n });\n }\n\n private declared(path: string, content: string): DeclaredRule[] | undefined {\n const fm = this.front(path, content);\n if (fm === null) return undefined;\n const extracted = extractEvals(\n { name: basename(path), type: \"project-rules\", path, content, origin: \"project\" },\n fm,\n );\n if (extracted.errors.length > 0) {\n this.warnings.push(\n `${this.display(path)}: metadata.evals does not validate (${extracted.errors[0]?.message ?? \"invalid\"}), so it declares no rules`,\n );\n return undefined;\n }\n const rules: DeclaredRule[] = [];\n for (const entry of extracted.evals) {\n if (entry.grader !== \"ai\" || entry.assertion === undefined) continue;\n const rule: DeclaredRule = { id: entry.id, text: entry.assertion };\n const when = entry.options?.when;\n if (isRecord(when)) rule.when = when;\n rules.push(rule);\n }\n return rules.length > 0 ? rules : undefined;\n }\n}\n\n/** Every source whose trigger is \"always\", without a trace (for `prepare`). */\nexport async function resolveAlwaysSources(opts: SourceOptions): Promise<ResolvedSources> {\n const c = await collector(opts);\n for (const candidate of await catalog(c, opts)) {\n if (candidate.trigger.kind === \"always\") await addWithImports(c, candidate, \"always\");\n }\n await addDesignated(c, opts);\n return { sources: c.sources, warnings: c.warnings };\n}\n\n/** Every source in scope for one turn of `trace`. */\nexport async function resolveTurnSources(\n trace: Trace,\n turn: TurnBounds,\n opts: SourceOptions,\n): Promise<ResolvedSources> {\n const c = await collector(opts);\n const touches: Touch[] = trace.fileAccesses\n .filter((a) => a.index <= turn.to)\n .map((a) => {\n const abs = resolve(c.cwd, a.path);\n return { abs, rel: relPosix(c.root, abs), read: a.op === \"read\" };\n });\n const wasRead = new Set(touches.filter((t) => t.read).map((t) => key(t.abs)));\n\n for (const candidate of await catalog(c, opts)) {\n const { trigger } = candidate;\n if (trigger.kind === \"always\") {\n await addWithImports(c, candidate, \"always\");\n } else if (trigger.kind === \"read\") {\n if (wasRead.has(key(candidate.path))) await addWithImports(c, candidate, \"read\");\n } else {\n const match = picomatch(trigger.patterns, { dot: true });\n const hit = touches.find((t) => t.rel !== null && match(t.rel));\n if (hit !== undefined && hit.rel !== null) {\n await addWithImports(c, candidate, `${trigger.key} matched ${hit.rel}`);\n }\n }\n }\n\n // A subdirectory's memory file applies once a file under it is touched.\n // Farther directories come first, so the nearest file reads last.\n const nested = new Map<string, string>();\n for (const touch of touches) {\n if (touch.rel === null) continue;\n for (const dir of dirsBelowCwd(c, dirname(touch.abs))) {\n if (!nested.has(dir)) nested.set(dir, touch.rel);\n }\n }\n const dirs = [...nested.keys()].sort((a, b) => a.length - b.length);\n for (const dir of dirs) {\n const touched = nested.get(dir) ?? \"\";\n for (const [name, format] of NESTED_FILES) {\n const path = join(dir, name);\n const content = await safeRead(path);\n if (content !== null) {\n await addWithImports(c, { path, format, trigger: { kind: \"always\" } }, `touched ${touched}`, content);\n }\n }\n }\n\n await addWindowed(c, trace, turn, touches, opts);\n\n await addDesignated(c, opts);\n\n addPrompts(c, trace, turn);\n await addPlan(c, trace, turn, opts);\n await addSpecs(c, touches, opts.plans ?? []);\n await addSystemPrompt(c, trace, turn, opts);\n return { sources: c.sources, warnings: c.warnings };\n}\n\n// ── What the transcript recorded of the prompt ───────────────────\n\n/** The sources `runtime.exclude` matches by name (proposals 0080 and 0081). */\nconst EXCLUDABLE_BY_NAME: ReadonlySet<RuleFormat> = new Set<RuleFormat>([\"prompt\", \"plan\", \"system-prompt\"]);\n\n/** Claude Code's own block in its default prompt; a replaced prompt has none. */\nconst BOUNDARY_MARKER = \"__SYSTEM_PROMPT_DYNAMIC_BOUNDARY__\";\n\ninterface Recorded {\n index: number;\n record: Record<string, unknown>;\n attachment: Record<string, unknown>;\n}\n\n/** The last attachment of `type` at or before the turn's end, with its record. */\nfunction lastAttachment(trace: Trace, turn: TurnBounds, type: string): Recorded | undefined {\n for (let i = trace.events.length - 1; i >= 0; i -= 1) {\n const event = trace.events[i];\n if (event === undefined || event.kind !== \"meta\" || event.index > turn.to) continue;\n const attachment = event.raw.attachment;\n if (event.raw.type === \"attachment\" && isRecord(attachment) && attachment.type === type) {\n return { index: event.index, record: event.raw, attachment };\n }\n }\n return undefined;\n}\n\n/**\n * The system prompt of the last `prompt_snapshot`, and the last output style.\n * A style a user file defines is its own source, holding the text the agent\n * saw; a built-in style's text joins the system prompt. The prompt is custom,\n * and blocks, when Claude Code's boundary marker is missing.\n */\nasync function addSystemPrompt(c: Collector, trace: Trace, turn: TurnBounds, opts: SourceOptions): Promise<void> {\n const scrub = makeRedactor(opts.redact ?? []);\n const style = lastAttachment(trace, turn, \"output_style_instructions\")?.attachment.style;\n const styleName = isRecord(style) && typeof style.name === \"string\" ? style.name : undefined;\n const stylePrompt = isRecord(style) && typeof style.prompt === \"string\" ? style.prompt : undefined;\n let builtIn: string | undefined;\n if (styleName !== undefined && stylePrompt !== undefined) {\n const file = await userStyleFile(c, opts, styleName);\n if (file === undefined) builtIn = stylePrompt;\n else c.addRequest(file, scrub(stylePrompt), \"output-style\", `style ${styleName}`);\n }\n\n const snapshot = lastAttachment(trace, turn, \"prompt_snapshot\");\n const recorded: unknown = snapshot?.attachment.systemPrompt;\n if (snapshot === undefined || !Array.isArray(recorded)) return;\n const blocks = recorded.filter((b): b is string => typeof b === \"string\");\n const custom = !blocks.includes(BOUNDARY_MARKER);\n const content = scrub([...blocks, ...(builtIn !== undefined ? [builtIn] : [])].join(\"\\n\\n\"));\n const { version } = snapshot.record;\n const by = typeof version === \"string\" ? `, Claude Code ${version}` : \"\";\n const trigger = `recorded at turn ${String(snapshot.index)}${by}${custom ? \", custom\" : \"\"}`;\n // A prompt the user replaced blocks; Claude Code's own default only reports.\n c.addRequest(null, content, \"system-prompt\", trigger, /* blocks= */ custom);\n}\n\n/**\n * The user file that defines output style `name`: under the project's\n * `.claude/output-styles/`, then the user's. Its front matter `name`, or\n * its base name, matches.\n */\nasync function userStyleFile(c: Collector, opts: SourceOptions, name: string): Promise<string | undefined> {\n // Where Claude Code reads styles: the project (cwd first, then the git root)\n // and the user. No ancestor walk, since Claude Code does none for styles.\n const dirs = [...new Set([c.cwd, c.root])].map((b) => join(b, \".claude\", \"output-styles\"));\n dirs.push(join(configDir(opts.env), \"output-styles\"));\n for (const dir of dirs) {\n for (const path of await listInTree(dir, (p) => p.endsWith(\".md\"), { maxDepth: 0 })) {\n const declared = (await frontOf(c, path))?.name;\n if ((typeof declared === \"string\" ? declared : basename(path, \".md\")) === name) return path;\n }\n }\n return undefined;\n}\n\n// ── What the session was asked ───────────────────────────────────\n\n/**\n * Every prompt typed up to the turn's end, as one numbered sequence. A\n * subagent's own run has only sidechain prompts, and its task is its request.\n */\nfunction addPrompts(c: Collector, trace: Trace, turn: TurnBounds): void {\n const typed = trace.events.filter((e) => e.index <= turn.to && isTypedPrompt(e));\n const main = typed.filter((e) => e.sidechain !== true);\n const prompts = main.length > 0 ? main : typed;\n if (prompts.length === 0) return;\n const content = prompts\n .map((p, i) => `${String(i + 1)}. ${(p.text ?? \"\").trim()}`)\n .join(\"\\n\\n\");\n c.addRequest(null, content, \"prompt\", `typed prompts 1-${String(prompts.length)}`);\n}\n\n/**\n * The plan of the last approved `ExitPlanMode` at or before the turn's end.\n * A call is approved when its result is not an error. The plan is the call's\n * `plan` input, or else the file the session last wrote under the user's\n * `plans/` directory before the call.\n */\nasync function addPlan(c: Collector, trace: Trace, turn: TurnBounds, opts: SourceOptions): Promise<void> {\n const approved = trace.toolCalls\n .filter((call) => call.name === \"ExitPlanMode\" && call.index <= turn.to)\n .filter((call) => isApproved(trace, call.index, turn.to))\n .at(-1);\n if (approved === undefined) return;\n const trigger = `approved at turn ${String(approved.index)}`;\n const plan = approved.input.plan;\n if (typeof plan === \"string\" && plan.trim() !== \"\") {\n c.addRequest(null, plan, \"plan\", trigger);\n return;\n }\n const plansDir = join(configDir(opts.env), \"plans\");\n const file = trace.fileAccesses\n .filter((a) => a.op !== \"read\" && a.index < approved.index)\n .map((a) => resolve(c.cwd, a.path))\n .filter((abs) => relPosix(plansDir, abs) !== null)\n .at(-1);\n if (file === undefined) return;\n const content = await safeRead(file);\n if (content !== null) c.addRequest(file, content, \"plan\", trigger);\n}\n\n/**\n * Whether the tool call at `index` has a result by `to` that is not an error.\n * A plan approved only after the turn ends is not yet a source; the next turn,\n * whose bounds include the result, picks it up.\n */\nfunction isApproved(trace: Trace, index: number, to: number): boolean {\n const id = trace.events.find((e) => e.index === index)?.raw.id;\n if (typeof id !== \"string\") return false;\n for (const event of trace.events) {\n if (event.kind !== \"tool_result\" || event.index <= index || event.index > to) continue;\n const message = event.raw.message;\n const blocks: unknown = isRecord(message) ? message.content : undefined;\n if (!Array.isArray(blocks)) continue;\n for (const block of blocks as unknown[]) {\n if (isRecord(block) && block.type === \"tool_result\" && block.tool_use_id === id) {\n return block.is_error !== true;\n }\n }\n }\n return false;\n}\n\n/** The files each spec format reads from a touched directory. */\nconst SPEC_FILES: Record<\"speckit-spec\" | \"kiro-spec\", string[]> = {\n \"speckit-spec\": [\"spec.md\", \"plan.md\", \"tasks.md\"],\n \"kiro-spec\": [\"requirements.md\", \"design.md\", \"tasks.md\"],\n};\n\n/** The spec directory a project-relative path lies under, and its format. */\nfunction specDirOf(rel: string): { dir: string; format: \"speckit-spec\" | \"kiro-spec\" | \"openspec-change\" } | null {\n const parts = rel.split(\"/\");\n const [first, second, third] = parts;\n if (first === \"specs\" && second !== undefined && parts.length > 2) {\n return { dir: `specs/${second}`, format: \"speckit-spec\" };\n }\n if (first === \".kiro\" && second === \"specs\" && third !== undefined && parts.length > 3) {\n return { dir: `.kiro/specs/${third}`, format: \"kiro-spec\" };\n }\n // An archived change is done, so it never counts.\n if (first === \"openspec\" && second === \"changes\" && third !== undefined && third !== \"archive\" && parts.length > 3) {\n return { dir: `openspec/changes/${third}`, format: \"openspec-change\" };\n }\n return null;\n}\n\n/** A touched spec brings in its directory's files; a touched `plans` file brings in itself. */\nasync function addSpecs(c: Collector, touches: Touch[], plans: string[]): Promise<void> {\n const isPlan = plans.length > 0 ? picomatch(plans, { dot: true }) : null;\n const done = new Set<string>();\n for (const touch of touches) {\n const { rel } = touch;\n if (rel === null) continue;\n const trigger = `touched ${rel}`;\n const spec = specDirOf(rel);\n if (spec !== null && !done.has(spec.dir)) {\n done.add(spec.dir);\n const dir = join(c.root, ...spec.dir.split(\"/\"));\n const files =\n spec.format === \"openspec-change\"\n ? await listInTree(dir, (p) => p.endsWith(\".md\"))\n : SPEC_FILES[spec.format].map((name) => join(dir, name));\n for (const file of files) {\n const content = await safeRead(file);\n if (content !== null) c.addRequest(file, content, spec.format, trigger);\n }\n }\n if (isPlan?.(rel) === true) {\n const content = await safeRead(touch.abs);\n if (content !== null) c.addRequest(touch.abs, content, \"plans\", trigger);\n }\n }\n}\n\n/**\n * Files named in `runtime.include`. A person chose each one to govern the\n * agent, so it applies to every turn, as a `CLAUDE.md` does. Waiting for the\n * agent to read one would let a turn that skipped it escape its rules.\n */\nasync function addDesignated(c: Collector, opts: SourceOptions): Promise<void> {\n const include = opts.include ?? [];\n if (include.length === 0) return;\n const match = picomatch(include, { dot: true });\n const found = await listInTree(c.root, (abs) => {\n const rel = relPosix(c.root, abs);\n return rel !== null && match(rel);\n });\n for (const abs of found) {\n if (c.has(abs)) continue;\n const content = await safeRead(abs);\n if (content === null) {\n c.warnings.push(`${c.display(abs)}: matched runtime.include but could not be read`);\n continue;\n }\n c.add(abs, content, \"designated\", \"always\");\n }\n}\n\n// ── Skills, slash commands and the agent ─────────────────────────\n\nasync function addWindowed(\n c: Collector,\n trace: Trace,\n turn: TurnBounds,\n touches: Touch[],\n opts: SourceOptions,\n): Promise<void> {\n // The existing resolver settles which file a skill, command or agent names.\n // Agents spawned in a main session govern their own runs, not this turn, so\n // only the agent this run is (under SubagentStop) is asked for.\n const { artifacts } = await resolveArtifacts(\n {\n ...trace,\n agentSpawns:\n opts.agentType === undefined ? [] : [{ subagentType: opts.agentType, index: 0 }],\n },\n { projectDir: c.cwd, projectRoot: c.root, ...(opts.env ? { env: opts.env } : {}) },\n );\n for (const artifact of artifacts) {\n if (artifact.type === \"agent\") {\n c.add(artifact.path, artifact.content, \"agent\", \"subagent run\");\n continue;\n }\n if (artifact.type !== \"skill\" && artifact.type !== \"slash-command\") continue;\n // In scope from the first invocation to the end of the session (proposal\n // 0080): a skill's procedure spans the turns after it, and the skills it\n // calls partway through do not end it. Batch `run` keeps ADR 01015's window.\n const window = windowOf(trace, artifact);\n if (!window.events.some((e) => e.index <= turn.to)) continue;\n if (artifact.type === \"slash-command\") {\n c.add(artifact.path, artifact.content, \"slash-command\", \"slash command window\");\n continue;\n }\n c.add(artifact.path, artifact.content, \"skill\", \"skill window\", artifact.name);\n const skillDir = dirname(artifact.path);\n for (const touch of touches) {\n if (!touch.read || relPosix(skillDir, touch.abs) === null || c.has(touch.abs)) continue;\n const content = await safeRead(touch.abs);\n if (content !== null) {\n c.add(touch.abs, content, \"skill\", `read under skill ${artifact.name}`, artifact.name);\n }\n }\n }\n}\n\n// ── The catalog of known formats ─────────────────────────────────\n\n/** Memory files read at cwd, each ancestor up to the root, and in their `.claude/`. */\nconst ANCESTOR_FILES: [string, RuleFormat][] = [\n [\"CLAUDE.md\", \"claude-md\"],\n [\"CLAUDE.local.md\", \"claude-md\"],\n [join(\".claude\", \"CLAUDE.md\"), \"claude-md\"],\n [\"AGENTS.md\", \"agents-md\"],\n [join(\".claude\", \"AGENTS.md\"), \"agents-md\"],\n [\"GEMINI.md\", \"gemini-md\"],\n];\n\n/** Memory files a touch under a subdirectory brings in. */\nconst NESTED_FILES: [string, RuleFormat][] = [\n [\"CLAUDE.md\", \"claude-md\"],\n [\"AGENTS.md\", \"agents-md\"],\n [\"GEMINI.md\", \"gemini-md\"],\n];\n\nasync function catalog(c: Collector, opts: SourceOptions): Promise<Candidate[]> {\n const out: Candidate[] = [];\n const userClaude = configDir(opts.env);\n const always: Trigger = { kind: \"always\" };\n\n out.push({ path: join(userClaude, \"CLAUDE.md\"), format: \"claude-md\", trigger: always });\n out.push({ path: join(c.home, \".gemini\", \"GEMINI.md\"), format: \"gemini-md\", trigger: always });\n for (const dir of ancestors(c.cwd, c.root).reverse()) {\n for (const [name, format] of ANCESTOR_FILES) {\n out.push({ path: join(dir, name), format, trigger: always });\n }\n }\n\n // Project-level directories live at the root; a cwd below it is checked too.\n const bases = c.cwd === c.root ? [c.root] : [c.root, c.cwd];\n\n for (const dir of [join(userClaude, \"rules\"), ...bases.map((b) => join(b, \".claude\", \"rules\"))]) {\n for (const path of await listInTree(dir, (p) => p.endsWith(\".md\"))) {\n out.push({ path, format: \"claude-rule\", trigger: await claudeRuleTrigger(c, path) });\n }\n }\n\n for (const base of bases) {\n const dir = join(base, \".cursor\", \"rules\");\n for (const path of await listInTree(dir, (p) => p.endsWith(\".mdc\") || p.endsWith(\".md\"))) {\n const trigger = await cursorTrigger(c, path);\n if (trigger !== null) out.push({ path, format: \"cursor-rule\", trigger });\n }\n }\n\n for (const dir of [join(c.home, \".kiro\", \"steering\"), ...bases.map((b) => join(b, \".kiro\", \"steering\"))]) {\n for (const path of await listInTree(dir, (p) => p.endsWith(\".md\"), { maxDepth: 0 })) {\n out.push({ path, format: \"kiro-steering\", trigger: await kiroTrigger(c, path) });\n }\n }\n\n for (const base of bases) {\n out.push({\n path: join(base, \".specify\", \"memory\", \"constitution.md\"),\n format: \"speckit-constitution\",\n trigger: always,\n });\n out.push({ path: join(base, \"openspec\", \"project.md\"), format: \"openspec-project\", trigger: { kind: \"read\" } });\n }\n return out;\n}\n\nasync function frontOf(c: Collector, path: string): Promise<Record<string, unknown> | null> {\n const content = await safeRead(path);\n if (content === null) return null;\n return c.front(path, content)?.data ?? null;\n}\n\nasync function claudeRuleTrigger(c: Collector, path: string): Promise<Trigger> {\n const patterns = globList((await frontOf(c, path))?.paths);\n return patterns.length > 0 ? { kind: \"globs\", key: \"paths\", patterns } : { kind: \"always\" };\n}\n\n/** Null for a `.md` file with no front matter, which Cursor does not read as a rule. */\nasync function cursorTrigger(c: Collector, path: string): Promise<Trigger | null> {\n const fm = await frontOf(c, path);\n if (fm === null && !path.endsWith(\".mdc\")) return null;\n if (fm?.alwaysApply === true) return { kind: \"always\" };\n const patterns = globList(fm?.globs);\n return patterns.length > 0 ? { kind: \"globs\", key: \"globs\", patterns } : { kind: \"read\" };\n}\n\nasync function kiroTrigger(c: Collector, path: string): Promise<Trigger> {\n const fm = await frontOf(c, path);\n const inclusion = fm?.inclusion;\n if (inclusion === undefined || inclusion === \"always\") return { kind: \"always\" };\n if (inclusion === \"fileMatch\") {\n const patterns = globList(fm?.fileMatchPattern);\n if (patterns.length > 0) return { kind: \"globs\", key: \"fileMatchPattern\", patterns };\n }\n return { kind: \"read\" };\n}\n\n// ── Imports ──────────────────────────────────────────────────────\n\n/** Adds a candidate and, for a memory file, what its `@path` lines import. */\nasync function addWithImports(\n c: Collector,\n candidate: Candidate,\n trigger: string,\n known?: string,\n): Promise<void> {\n if (c.has(candidate.path)) return;\n const content = known ?? (await safeRead(candidate.path));\n if (content === null) return;\n const added = c.add(candidate.path, content, candidate.format, trigger);\n if (added === null || (candidate.format !== \"claude-md\" && candidate.format !== \"gemini-md\")) {\n return;\n }\n let frontier = [added];\n for (let hop = 1; hop <= MAX_IMPORT_HOPS && frontier.length > 0; hop += 1) {\n const next: RuleSource[] = [];\n for (const importer of frontier) {\n for (const ref of importsOf(importer.content)) {\n const path = ref.startsWith(\"~/\")\n ? join(c.home, ref.slice(2))\n : resolve(dirname(importer.path), ref);\n if (c.has(path)) continue;\n const body = await safeRead(path);\n if (body === null) continue;\n const source = c.add(path, body, \"import\", `imported by ${importer.displayPath}`);\n if (source !== null) next.push(source);\n }\n }\n frontier = next;\n }\n}\n\n/** `@path` references outside code fences and code spans. */\nfunction importsOf(content: string): string[] {\n const refs: string[] = [];\n // The open fence's character and length: CommonMark closes a fence only\n // with the same character, at least as long, so a backtick line inside a\n // tilde fence is text.\n let fence: { char: string; length: number } | null = null;\n for (const line of content.split(/\\r?\\n/)) {\n const marker = /^\\s*(`{3,}|~{3,})/.exec(line)?.[1];\n if (marker !== undefined) {\n const char = marker.charAt(0);\n if (fence === null) {\n fence = { char, length: marker.length };\n continue;\n }\n if (char === fence.char && marker.length >= fence.length && line.trim() === marker) {\n fence = null;\n continue;\n }\n }\n if (fence !== null) continue;\n const prose = line.replace(/`[^`]*`/g, \"\");\n for (const m of prose.matchAll(/(?:^|\\s)@([^\\s`]+)/g)) {\n const ref = m[1]?.replace(/[.,;:!?)\\]]+$/, \"\");\n if (ref) refs.push(ref);\n }\n }\n return refs;\n}\n\n// ── Helpers ──────────────────────────────────────────────────────\n\nasync function collector(opts: SourceOptions): Promise<Collector> {\n const cwd = resolve(opts.projectDir);\n const root = resolve(opts.projectRoot ?? (await findGitRoot(cwd)) ?? cwd);\n return new Collector(cwd, root, homeDir(opts.env), opts.exclude ?? []);\n}\n\nfunction homeDir(env: Record<string, string | undefined> = process.env): string {\n const set = process.platform === \"win32\" ? (env.USERPROFILE ?? env.HOME) : env.HOME;\n return resolve(set ?? homedir());\n}\n\n/** cwd and each ancestor up to the root, nearest first. */\nfunction ancestors(cwd: string, root: string): string[] {\n const dirs: string[] = [];\n let current = cwd;\n for (let depth = 0; depth < 32; depth += 1) {\n dirs.push(current);\n if (current === root) break;\n const parent = dirname(current);\n if (parent === current) break;\n current = parent;\n }\n return dirs;\n}\n\n/** `dir` and its ancestors inside the root that are not cwd or above it. */\nfunction dirsBelowCwd(c: Collector, dir: string): string[] {\n const dirs: string[] = [];\n let current = dir;\n for (let depth = 0; depth < 64; depth += 1) {\n if (relPosix(c.root, current) === null || relPosix(current, c.cwd) !== null) break;\n dirs.push(current);\n const parent = dirname(current);\n if (parent === current) break;\n current = parent;\n }\n return dirs;\n}\n\n/** One glob, a comma-separated string, or a list. Commas inside braces stay. */\nfunction isCursorRule(path: string): boolean {\n return path.split(sep).join(\"/\").includes(\"/.cursor/rules/\");\n}\n\n/**\n * Cursor reads its front matter line by line, so `globs: **\\/*.ts` is a rule\n * there and invalid YAML (an alias) here. This reads the three keys Cursor\n * defines the way Cursor does, as `key: rest of line`.\n */\nfunction cursorFront(content: string): ExtractedMetadata | null {\n const block = /^---\\r?\\n([\\s\\S]*?)\\r?\\n---(?:\\r?\\n|$)/.exec(content)?.[1];\n if (block === undefined) return null;\n const data: Record<string, unknown> = {};\n for (const line of block.split(/\\r?\\n/)) {\n const m = /^(description|globs|alwaysApply):\\s*(.*)$/.exec(line);\n const name = m?.[1];\n const value = m?.[2]?.trim();\n if (name === undefined || value === undefined) continue;\n data[name] = name === \"alwaysApply\" ? value === \"true\" : value;\n }\n if (Object.keys(data).length === 0) return null;\n return { data, present: true, format: \"markdown\", lineFor: () => undefined };\n}\n\nfunction globList(value: unknown): string[] {\n if (Array.isArray(value)) {\n return value.filter((v): v is string => typeof v === \"string\" && v.trim() !== \"\").map((v) => v.trim());\n }\n if (typeof value !== \"string\") return [];\n const out: string[] = [];\n let depth = 0;\n let current = \"\";\n for (const ch of value) {\n if (ch === \"{\") depth += 1;\n if (ch === \"}\") depth = Math.max(0, depth - 1);\n if (ch === \",\" && depth === 0) {\n out.push(current);\n current = \"\";\n } else {\n current += ch;\n }\n }\n out.push(current);\n return out.map((p) => p.trim()).filter((p) => p !== \"\");\n}\n\n/** `path` relative to `base` with forward slashes, or null when outside it. */\nfunction relPosix(base: string, path: string): string | null {\n const rel = relative(base, path);\n if (rel === \"\") return \"\";\n if (rel.startsWith(\"..\") || isAbsolute(rel)) return null;\n return rel.split(sep).join(\"/\");\n}\n\nfunction key(path: string): string {\n const abs = resolve(path);\n return process.platform === \"win32\" ? abs.toLowerCase() : abs;\n}\n\n/** A path as sources compare it: absolute, and case-folded on Windows. */\nexport const pathKey = key;\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n"],"mappings":"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","names":[]}
|
|
@@ -7,11 +7,11 @@ import {
|
|
|
7
7
|
} from "./chunk-CU57HT2E.js";
|
|
8
8
|
import {
|
|
9
9
|
metaProvenanceEntries
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-AZXCL5WH.js";
|
|
11
11
|
import {
|
|
12
12
|
__default4 as __default,
|
|
13
13
|
extractFrontmatter
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-A36QDIXZ.js";
|
|
15
15
|
|
|
16
16
|
// src/tracevals/capture/manifest.ts
|
|
17
17
|
import { createHash } from "node:crypto";
|
|
@@ -1168,4 +1168,4 @@ export {
|
|
|
1168
1168
|
ARTIFACT_EVALS_SCHEMA_ID,
|
|
1169
1169
|
extractEvals
|
|
1170
1170
|
};
|
|
1171
|
-
//# sourceMappingURL=chunk-
|
|
1171
|
+
//# sourceMappingURL=chunk-TKVGEFMH.js.map
|
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
spliceEntryField,
|
|
17
17
|
unifiedDiff,
|
|
18
18
|
withClaimLines
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-BP7LGVF3.js";
|
|
20
20
|
import {
|
|
21
21
|
CITATIONS_KEY,
|
|
22
22
|
CITE_SECTION,
|
|
@@ -54,10 +54,10 @@ import {
|
|
|
54
54
|
stripMarkers,
|
|
55
55
|
twoManifestsRefusal,
|
|
56
56
|
urlManifestRefusal
|
|
57
|
-
} from "./chunk-
|
|
57
|
+
} from "./chunk-426TGC2Q.js";
|
|
58
58
|
import {
|
|
59
59
|
renderCheckGithub
|
|
60
|
-
} from "./chunk-
|
|
60
|
+
} from "./chunk-UMGAACCP.js";
|
|
61
61
|
import {
|
|
62
62
|
refusalLine,
|
|
63
63
|
removalLine,
|
|
@@ -65,7 +65,7 @@ import {
|
|
|
65
65
|
renderRemovePretty,
|
|
66
66
|
renderUpdatePretty,
|
|
67
67
|
rewriteLine
|
|
68
|
-
} from "./chunk-
|
|
68
|
+
} from "./chunk-LXFY64QR.js";
|
|
69
69
|
import {
|
|
70
70
|
blockMatches,
|
|
71
71
|
claimEnd,
|
|
@@ -94,7 +94,7 @@ import {
|
|
|
94
94
|
toValidationResult,
|
|
95
95
|
unitAt,
|
|
96
96
|
unitText
|
|
97
|
-
} from "./chunk-
|
|
97
|
+
} from "./chunk-H3LM7D6K.js";
|
|
98
98
|
import {
|
|
99
99
|
renderCheckJson,
|
|
100
100
|
renderRemoveJson,
|
|
@@ -140,11 +140,11 @@ import {
|
|
|
140
140
|
spellSource,
|
|
141
141
|
statementForms,
|
|
142
142
|
validateEntry
|
|
143
|
-
} from "./chunk-
|
|
143
|
+
} from "./chunk-BMRZFTAD.js";
|
|
144
144
|
import {
|
|
145
145
|
reencryptData,
|
|
146
146
|
reencryptMetadata
|
|
147
|
-
} from "./chunk-
|
|
147
|
+
} from "./chunk-22G33NL2.js";
|
|
148
148
|
import {
|
|
149
149
|
ENCRYPTION_KEY_ENV,
|
|
150
150
|
MAX_RANGE_LINES,
|
|
@@ -170,7 +170,7 @@ import {
|
|
|
170
170
|
toBodyLines,
|
|
171
171
|
toFileLines,
|
|
172
172
|
writeEncryptionKey
|
|
173
|
-
} from "./chunk-
|
|
173
|
+
} from "./chunk-KRSLDZ7N.js";
|
|
174
174
|
import {
|
|
175
175
|
LEGACY_CONFIG_NAMES,
|
|
176
176
|
STDIN_TOKEN,
|
|
@@ -181,7 +181,7 @@ import {
|
|
|
181
181
|
resolveTargetSet,
|
|
182
182
|
supportedExtensions,
|
|
183
183
|
writeFileAtomic
|
|
184
|
-
} from "./chunk-
|
|
184
|
+
} from "./chunk-A36QDIXZ.js";
|
|
185
185
|
import {
|
|
186
186
|
findConfigFile,
|
|
187
187
|
findFamilyConfigFile,
|
|
@@ -931,4 +931,4 @@ export {
|
|
|
931
931
|
runKeyRotate,
|
|
932
932
|
runKeySet
|
|
933
933
|
};
|
|
934
|
-
//# sourceMappingURL=chunk-
|
|
934
|
+
//# sourceMappingURL=chunk-TVKYNKB3.js.map
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
import {
|
|
3
3
|
resultFor,
|
|
4
4
|
splitBaselined
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-LXFY64QR.js";
|
|
6
6
|
import {
|
|
7
7
|
errorSite
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-H3LM7D6K.js";
|
|
9
9
|
import {
|
|
10
10
|
escapeWorkflowCommandMessage,
|
|
11
11
|
escapeWorkflowCommandProperty
|
|
@@ -51,4 +51,4 @@ export {
|
|
|
51
51
|
findingMessage,
|
|
52
52
|
renderCheckGithub
|
|
53
53
|
};
|
|
54
|
-
//# sourceMappingURL=chunk-
|
|
54
|
+
//# sourceMappingURL=chunk-UMGAACCP.js.map
|
|
@@ -5,12 +5,12 @@ import {
|
|
|
5
5
|
loadTemplateFile,
|
|
6
6
|
resolveLintRun,
|
|
7
7
|
resolveStructureTool
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-VCQOUFTZ.js";
|
|
9
9
|
import {
|
|
10
10
|
parserByName,
|
|
11
11
|
parserForExtension,
|
|
12
12
|
unsupportedFormatMessage
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-ALAH6HNY.js";
|
|
14
14
|
import {
|
|
15
15
|
BLOCK_KINDS,
|
|
16
16
|
BLOCK_KIND_NODE
|
|
@@ -20,7 +20,7 @@ import {
|
|
|
20
20
|
} from "./chunk-YGFIQ6Y5.js";
|
|
21
21
|
import {
|
|
22
22
|
writeTextAtomic
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-KRSLDZ7N.js";
|
|
24
24
|
import {
|
|
25
25
|
ToolError,
|
|
26
26
|
errorMessage
|
|
@@ -298,4 +298,4 @@ export {
|
|
|
298
298
|
BUILT_IN_DEFAULTS,
|
|
299
299
|
runTools
|
|
300
300
|
};
|
|
301
|
-
//# sourceMappingURL=chunk-
|
|
301
|
+
//# sourceMappingURL=chunk-UZGSFQLT.js.map
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
parserForExtension,
|
|
6
6
|
supportedExtensions,
|
|
7
7
|
unsupportedFormatMessage
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-ALAH6HNY.js";
|
|
9
9
|
import {
|
|
10
10
|
packageRoot
|
|
11
11
|
} from "./chunk-TIUTIOFB.js";
|
|
@@ -30,7 +30,7 @@ import {
|
|
|
30
30
|
gitignoreOptions,
|
|
31
31
|
isErrorSeverity,
|
|
32
32
|
resolveTargetSet
|
|
33
|
-
} from "./chunk-
|
|
33
|
+
} from "./chunk-A36QDIXZ.js";
|
|
34
34
|
import {
|
|
35
35
|
ditaOtHome,
|
|
36
36
|
findConfigFile,
|
|
@@ -42,7 +42,7 @@ import {
|
|
|
42
42
|
} from "./chunk-HX44GB4Z.js";
|
|
43
43
|
import {
|
|
44
44
|
package_default
|
|
45
|
-
} from "./chunk-
|
|
45
|
+
} from "./chunk-CGO5MNRD.js";
|
|
46
46
|
import {
|
|
47
47
|
ToolError,
|
|
48
48
|
errorMessage
|
|
@@ -2461,4 +2461,4 @@ export {
|
|
|
2461
2461
|
STDIN_LABEL,
|
|
2462
2462
|
runLint
|
|
2463
2463
|
};
|
|
2464
|
-
//# sourceMappingURL=chunk-
|
|
2464
|
+
//# sourceMappingURL=chunk-VCQOUFTZ.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
GB
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-HNMXL2OE.js";
|
|
5
5
|
import {
|
|
6
6
|
validateWhen
|
|
7
7
|
} from "./chunk-FQGLRJGX.js";
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
constructProvider,
|
|
11
11
|
resolveSelectionIdentity,
|
|
12
12
|
selectProvider
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-NGTVREIH.js";
|
|
14
14
|
import {
|
|
15
15
|
TracevalsError
|
|
16
16
|
} from "./chunk-UKZNLVJW.js";
|
|
@@ -83,7 +83,7 @@ function mockTurnJudge(model, name = "mock") {
|
|
|
83
83
|
};
|
|
84
84
|
}
|
|
85
85
|
|
|
86
|
-
// src/tracevals/commands/
|
|
86
|
+
// src/tracevals/commands/runtime.ts
|
|
87
87
|
import { resolve } from "node:path";
|
|
88
88
|
|
|
89
89
|
// src/tracevals/rules/cache.ts
|
|
@@ -371,7 +371,7 @@ async function extractRules(source, deps) {
|
|
|
371
371
|
return { ...gated, cached: false };
|
|
372
372
|
}
|
|
373
373
|
|
|
374
|
-
// src/tracevals/commands/
|
|
374
|
+
// src/tracevals/commands/runtime.ts
|
|
375
375
|
var JUDGE_ENV = "MANNI_TRACEVALS_JUDGE";
|
|
376
376
|
function markJudgeProcess() {
|
|
377
377
|
process.env[JUDGE_ENV] = "1";
|
|
@@ -388,8 +388,8 @@ function offlineRefusal(role, identity) {
|
|
|
388
388
|
function firstLine(err) {
|
|
389
389
|
return errorMessage(err).split("\n")[0] ?? "";
|
|
390
390
|
}
|
|
391
|
-
function
|
|
392
|
-
return config.
|
|
391
|
+
function runtimeOf(config) {
|
|
392
|
+
return config.runtime ?? {
|
|
393
393
|
hook: { provider: null, model: null, runs: 1 },
|
|
394
394
|
include: [],
|
|
395
395
|
exclude: [],
|
|
@@ -493,10 +493,10 @@ export {
|
|
|
493
493
|
isNetworkProvider,
|
|
494
494
|
offlineRefusal,
|
|
495
495
|
firstLine,
|
|
496
|
-
|
|
496
|
+
runtimeOf,
|
|
497
497
|
rulesCacheFor,
|
|
498
498
|
extraction,
|
|
499
499
|
localGate,
|
|
500
500
|
assertDownloaded
|
|
501
501
|
};
|
|
502
|
-
//# sourceMappingURL=chunk-
|
|
502
|
+
//# sourceMappingURL=chunk-VQK4VHLF.js.map
|