@hawkeyexl/manni 4.3.0 → 4.4.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 +9 -1
- package/dist/batch-DFRCLY77.js +36 -0
- package/dist/build-Q5C6SX5J.js +31 -0
- package/dist/calibrate-XQILKXS3.js +31 -0
- package/dist/capture-JQMOC3BW.js +32 -0
- package/dist/check-HYNGXYJV.js +18 -0
- package/dist/check-HYNGXYJV.js.map +1 -0
- package/dist/check-NFZQLJKN.js +27 -0
- package/dist/check-NFZQLJKN.js.map +1 -0
- package/dist/check-U54XV6BP.js +40 -0
- package/dist/check-U54XV6BP.js.map +1 -0
- package/dist/chunk-252LNOEG.js +622 -0
- package/dist/chunk-252LNOEG.js.map +1 -0
- package/dist/chunk-2H7UOFLK.js +11 -0
- package/dist/chunk-2H7UOFLK.js.map +1 -0
- package/dist/chunk-2U3ORT6D.js +230 -0
- package/dist/chunk-2U3ORT6D.js.map +1 -0
- package/dist/chunk-3AFUD75K.js +23 -0
- package/dist/chunk-3AFUD75K.js.map +1 -0
- package/dist/{chunk-3R23C5DT.js → chunk-4TSWU2SU.js} +2 -14
- package/dist/chunk-4TSWU2SU.js.map +1 -0
- package/dist/chunk-5KHIFVD2.js +1192 -0
- package/dist/chunk-5KHIFVD2.js.map +1 -0
- package/dist/chunk-5YXBLLAC.js +2165 -0
- package/dist/chunk-5YXBLLAC.js.map +1 -0
- package/dist/chunk-644JVKJ4.js +3872 -0
- package/dist/chunk-644JVKJ4.js.map +1 -0
- package/dist/chunk-6OYEI2VV.js +88 -0
- package/dist/chunk-6OYEI2VV.js.map +1 -0
- package/dist/chunk-77AINBYM.js +19 -0
- package/dist/chunk-77AINBYM.js.map +1 -0
- package/dist/chunk-77HX34KD.js +1287 -0
- package/dist/chunk-77HX34KD.js.map +1 -0
- package/dist/{chunk-MOQXWXSG.js → chunk-7QMCHA4N.js} +32 -240
- package/dist/chunk-7QMCHA4N.js.map +1 -0
- package/dist/chunk-BUXDLRDT.js +455 -0
- package/dist/chunk-BUXDLRDT.js.map +1 -0
- package/dist/chunk-C6OH6CNF.js +388 -0
- package/dist/chunk-C6OH6CNF.js.map +1 -0
- package/dist/chunk-CK7SKVHR.js +1042 -0
- package/dist/chunk-CK7SKVHR.js.map +1 -0
- package/dist/chunk-CYWHFSRT.js +6737 -0
- package/dist/chunk-CYWHFSRT.js.map +1 -0
- package/dist/chunk-ERMSO34F.js +17 -0
- package/dist/chunk-ERMSO34F.js.map +1 -0
- package/dist/{chunk-IOYXPBCL.js → chunk-G3T47CFV.js} +1 -7
- package/dist/{chunk-IOYXPBCL.js.map → chunk-G3T47CFV.js.map} +1 -1
- package/dist/chunk-G7NJSREW.js +979 -0
- package/dist/chunk-G7NJSREW.js.map +1 -0
- package/dist/chunk-GLP5PSXB.js +72 -0
- package/dist/chunk-GLP5PSXB.js.map +1 -0
- package/dist/chunk-H2DLH2JI.js +198 -0
- package/dist/chunk-H2DLH2JI.js.map +1 -0
- package/dist/chunk-H6FZ66XR.js +634 -0
- package/dist/chunk-H6FZ66XR.js.map +1 -0
- package/dist/{chunk-CI2GOU3A.js → chunk-IEQHSCZG.js} +56 -137
- package/dist/chunk-IEQHSCZG.js.map +1 -0
- package/dist/chunk-IKEWBMCN.js +98 -0
- package/dist/chunk-IKEWBMCN.js.map +1 -0
- package/dist/chunk-JOHKIAVH.js +5440 -0
- package/dist/chunk-JOHKIAVH.js.map +1 -0
- package/dist/chunk-JVTNMVYU.js +10921 -0
- package/dist/chunk-JVTNMVYU.js.map +1 -0
- package/dist/chunk-K3D6FPV6.js +164 -0
- package/dist/chunk-K3D6FPV6.js.map +1 -0
- package/dist/{chunk-MFDD3YGU.js → chunk-KCGV52AM.js} +69 -48
- package/dist/{chunk-MFDD3YGU.js.map → chunk-KCGV52AM.js.map} +1 -1
- package/dist/chunk-LAKAWRV5.js +1651 -0
- package/dist/chunk-LAKAWRV5.js.map +1 -0
- package/dist/chunk-LJ2RDH3F.js +49 -0
- package/dist/chunk-LJ2RDH3F.js.map +1 -0
- package/dist/chunk-M2JCK5F6.js +805 -0
- package/dist/chunk-M2JCK5F6.js.map +1 -0
- package/dist/chunk-MNH7QO4Z.js +15 -0
- package/dist/chunk-MNH7QO4Z.js.map +1 -0
- package/dist/{chunk-RVVCA4WL.js → chunk-MYC3O5EJ.js} +4 -4
- package/dist/chunk-MYMBCTDE.js +387 -0
- package/dist/chunk-MYMBCTDE.js.map +1 -0
- package/dist/chunk-NCPWXHDO.js +683 -0
- package/dist/chunk-NCPWXHDO.js.map +1 -0
- package/dist/chunk-NWZ2SLYL.js +2957 -0
- package/dist/chunk-NWZ2SLYL.js.map +1 -0
- package/dist/chunk-OBFENF3U.js +934 -0
- package/dist/chunk-OBFENF3U.js.map +1 -0
- package/dist/chunk-OWBRDNRZ.js +16 -0
- package/dist/chunk-OWBRDNRZ.js.map +1 -0
- package/dist/{chunk-KTSJ2ZHA.js → chunk-PAU352SV.js} +5 -3
- package/dist/{chunk-KTSJ2ZHA.js.map → chunk-PAU352SV.js.map} +1 -1
- package/dist/chunk-PCE7QHXJ.js +68 -0
- package/dist/chunk-PCE7QHXJ.js.map +1 -0
- package/dist/chunk-PCHZY2I7.js +299 -0
- package/dist/chunk-PCHZY2I7.js.map +1 -0
- package/dist/chunk-PHF3D7ER.js +1042 -0
- package/dist/chunk-PHF3D7ER.js.map +1 -0
- package/dist/chunk-Q35YIDBV.js +1202 -0
- package/dist/chunk-Q35YIDBV.js.map +1 -0
- package/dist/chunk-RLR4TKUZ.js +4398 -0
- package/dist/chunk-RLR4TKUZ.js.map +1 -0
- package/dist/chunk-RNVYGWIC.js +30 -0
- package/dist/chunk-RNVYGWIC.js.map +1 -0
- package/dist/chunk-SE4JN5XN.js +19 -0
- package/dist/chunk-SE4JN5XN.js.map +1 -0
- package/dist/chunk-TIUTIOFB.js +25 -0
- package/dist/chunk-TIUTIOFB.js.map +1 -0
- package/dist/chunk-TU2WUBVZ.js +2 -0
- package/dist/chunk-TU2WUBVZ.js.map +1 -0
- package/dist/chunk-TZOYZK2E.js +98 -0
- package/dist/chunk-TZOYZK2E.js.map +1 -0
- package/dist/chunk-UKZNLVJW.js +17 -0
- package/dist/chunk-UKZNLVJW.js.map +1 -0
- package/dist/chunk-UZC7LDAQ.js +178 -0
- package/dist/chunk-UZC7LDAQ.js.map +1 -0
- package/dist/chunk-V46OILVC.js +3090 -0
- package/dist/chunk-V46OILVC.js.map +1 -0
- package/dist/chunk-WQE54PNH.js +1975 -0
- package/dist/chunk-WQE54PNH.js.map +1 -0
- package/dist/chunk-X3BPBDGQ.js +52 -0
- package/dist/chunk-X3BPBDGQ.js.map +1 -0
- package/dist/chunk-XSLV76YK.js +54 -0
- package/dist/chunk-XSLV76YK.js.map +1 -0
- package/dist/{chunk-QROCFW5S.js → chunk-XYLUCIKQ.js} +3 -3
- package/dist/chunk-YEUYKR62.js +72 -0
- package/dist/chunk-YEUYKR62.js.map +1 -0
- package/dist/{chunk-ESJ5W7EV.js → chunk-YFQBFNQS.js} +8 -94
- package/dist/chunk-YFQBFNQS.js.map +1 -0
- package/dist/chunk-YIL4XLLJ.js +1661 -0
- package/dist/chunk-YIL4XLLJ.js.map +1 -0
- package/dist/chunk-YNHZHSSM.js +41 -0
- package/dist/chunk-YNHZHSSM.js.map +1 -0
- package/dist/chunk-YTCZRLTU.js +96 -0
- package/dist/chunk-YTCZRLTU.js.map +1 -0
- package/dist/chunk-YYBFZLAJ.js +374 -0
- package/dist/chunk-YYBFZLAJ.js.map +1 -0
- package/dist/chunk-ZXRAE55H.js +31 -0
- package/dist/chunk-ZXRAE55H.js.map +1 -0
- package/dist/cli-2QPR2OZG.js +232 -0
- package/dist/cli-2QPR2OZG.js.map +1 -0
- package/dist/cli-4IOPGZHR.js +1203 -0
- package/dist/cli-4IOPGZHR.js.map +1 -0
- package/dist/cli-5FL73WHA.js +346 -0
- package/dist/cli-5FL73WHA.js.map +1 -0
- package/dist/cli-C262QOWM.js +739 -0
- package/dist/cli-C262QOWM.js.map +1 -0
- package/dist/cli-LJLLIQB2.js +423 -0
- package/dist/cli-LJLLIQB2.js.map +1 -0
- package/dist/cli-OFPZ5MAS.js +626 -0
- package/dist/cli-OFPZ5MAS.js.map +1 -0
- package/dist/cli-SHSMSRQY.js +28 -0
- package/dist/cli-SHSMSRQY.js.map +1 -0
- package/dist/cli-SRHFUZHA.js +473 -0
- package/dist/cli-SRHFUZHA.js.map +1 -0
- package/dist/cli-URZQXL4K.js +552 -0
- package/dist/cli-URZQXL4K.js.map +1 -0
- package/dist/cli.d.ts +12 -2
- package/dist/cli.js +109 -7651
- package/dist/cli.js.map +1 -1
- package/dist/docmeta.js +15 -3
- package/dist/docmeta.js.map +1 -1
- package/dist/github-FE6KCNYJ.js +27 -0
- package/dist/github-FE6KCNYJ.js.map +1 -0
- package/dist/github-QXL3VMK2.js +32 -0
- package/dist/github-QXL3VMK2.js.map +1 -0
- package/dist/index.d.ts +65 -3
- package/dist/index.js +407 -337
- package/dist/index.js.map +1 -1
- package/dist/json-7WV7KL6H.js +17 -0
- package/dist/json-7WV7KL6H.js.map +1 -0
- package/dist/json-SGZ6ZRFD.js +35 -0
- package/dist/json-SGZ6ZRFD.js.map +1 -0
- package/dist/lint-DL4LJRAY.js +28 -0
- package/dist/lint-DL4LJRAY.js.map +1 -0
- package/dist/list-6BAXTZUM.js +29 -0
- package/dist/list-6BAXTZUM.js.map +1 -0
- package/dist/list-7BKNYPSB.js +31 -0
- package/dist/list-7BKNYPSB.js.map +1 -0
- package/dist/page-3U2GCFNE.js +41 -0
- package/dist/page-3U2GCFNE.js.map +1 -0
- package/dist/picker-3XF36MJF.js +14 -0
- package/dist/picker-3XF36MJF.js.map +1 -0
- package/dist/pretty-2H57QVTY.js +43 -0
- package/dist/pretty-2H57QVTY.js.map +1 -0
- package/dist/pretty-N6DO4OOL.js +37 -0
- package/dist/pretty-N6DO4OOL.js.map +1 -0
- package/dist/reporters-M6LJ2IYU.js +21 -0
- package/dist/reporters-M6LJ2IYU.js.map +1 -0
- package/dist/reporters-N6GHXSS7.js +42 -0
- package/dist/reporters-N6GHXSS7.js.map +1 -0
- package/dist/reporters-UCNEV7PH.js +71 -0
- package/dist/reporters-UCNEV7PH.js.map +1 -0
- package/dist/run-XZDAREJE.js +33 -0
- package/dist/run-XZDAREJE.js.map +1 -0
- package/dist/term-5ICGKPC3.js +1592 -0
- package/dist/term-5ICGKPC3.js.map +1 -0
- package/dist/types-Y6TXHM7M.js +10 -0
- package/dist/types-Y6TXHM7M.js.map +1 -0
- package/dist/validate-GQRM77YN.js +16 -0
- package/dist/validate-GQRM77YN.js.map +1 -0
- package/package.json +1 -1
- package/plugin/manni/.claude-plugin/plugin.json +9 -0
- package/plugin/manni/hooks/hooks.json +52 -0
- package/plugin/manni/skills/check/SKILL.md +20 -0
- package/plugin/manni/skills/evals/SKILL.md +27 -0
- package/plugin/manni/skills/fix/SKILL.md +56 -0
- package/plugin/manni/skills/setup/SKILL.md +41 -0
- package/dist/batch-7JJWXWSF.js +0 -18
- package/dist/calibrate-IA2ARFMH.js +0 -13
- package/dist/capture-C32JXIFN.js +0 -15
- package/dist/chunk-3R23C5DT.js.map +0 -1
- package/dist/chunk-CI2GOU3A.js.map +0 -1
- package/dist/chunk-DP2ZA3WH.js +0 -26518
- package/dist/chunk-DP2ZA3WH.js.map +0 -1
- package/dist/chunk-ESJ5W7EV.js.map +0 -1
- package/dist/chunk-MOQXWXSG.js.map +0 -1
- package/dist/chunk-O6RVQKK6.js +0 -27170
- package/dist/chunk-O6RVQKK6.js.map +0 -1
- package/dist/picker-6HRMETE7.js +0 -12
- package/plugin/tracevals/.claude-plugin/plugin.json +0 -9
- package/plugin/tracevals/hooks/hooks.json +0 -17
- /package/dist/{batch-7JJWXWSF.js.map → batch-DFRCLY77.js.map} +0 -0
- /package/dist/{calibrate-IA2ARFMH.js.map → build-Q5C6SX5J.js.map} +0 -0
- /package/dist/{capture-C32JXIFN.js.map → calibrate-XQILKXS3.js.map} +0 -0
- /package/dist/{picker-6HRMETE7.js.map → capture-JQMOC3BW.js.map} +0 -0
- /package/dist/{chunk-RVVCA4WL.js.map → chunk-MYC3O5EJ.js.map} +0 -0
- /package/dist/{chunk-QROCFW5S.js.map → chunk-XYLUCIKQ.js.map} +0 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
// src/shared/color.ts
|
|
4
|
+
import pc from "picocolors";
|
|
5
|
+
function palette(enabled) {
|
|
6
|
+
return pc.createColors(enabled);
|
|
7
|
+
}
|
|
8
|
+
function shouldColor(opts) {
|
|
9
|
+
const env = opts.env ?? process.env;
|
|
10
|
+
if (opts.noColor) return false;
|
|
11
|
+
if (env.NO_COLOR != null && env.NO_COLOR !== "") return false;
|
|
12
|
+
return Boolean(opts.isTTY);
|
|
13
|
+
}
|
|
14
|
+
function colorFor(command, isTTY, env) {
|
|
15
|
+
const noColor = colorOwner(command).opts().color === false;
|
|
16
|
+
return shouldColor({ noColor, isTTY, env });
|
|
17
|
+
}
|
|
18
|
+
function colorOwner(command) {
|
|
19
|
+
for (let c = command; c !== null; c = c.parent) {
|
|
20
|
+
if (c.options.some((o) => o.long === "--no-color")) return c;
|
|
21
|
+
}
|
|
22
|
+
return command;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export {
|
|
26
|
+
palette,
|
|
27
|
+
shouldColor,
|
|
28
|
+
colorFor
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=chunk-RNVYGWIC.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/shared/color.ts"],"sourcesContent":["/**\n * Terminal color, decided once for every tool under the umbrella.\n *\n * clig.dev: color only on a TTY, never under `NO_COLOR` or `--no-color`. Each\n * tool's reporters take the decision as a boolean and build a palette from it,\n * so no reporter ever consults the environment on its own.\n */\nimport pc from \"picocolors\";\nimport type { Command } from \"commander\";\n\nexport type Colors = ReturnType<typeof pc.createColors>;\n\n/** Build a picocolors palette with color explicitly on or off. */\nexport function palette(enabled: boolean): Colors {\n return pc.createColors(enabled);\n}\n\n/**\n * Decide whether to emit ANSI color: off when `--no-color`/`NO_COLOR`, on only\n * for a TTY otherwise. `forced` (from `--color`) overrides detection.\n */\nexport function shouldColor(opts: {\n noColor?: boolean;\n isTTY?: boolean;\n env?: NodeJS.ProcessEnv;\n}): boolean {\n const env = opts.env ?? process.env;\n if (opts.noColor) return false;\n if (env.NO_COLOR != null && env.NO_COLOR !== \"\") return false;\n return Boolean(opts.isTTY);\n}\n\n/**\n * Whether `command`'s output gets colour: the domain's `--no-color` and\n * `NO_COLOR` turn it off, and otherwise only a TTY turns it on\n * (`shouldColor`). `isTTY` is passed uncoerced: Node leaves it undefined off\n * a terminal, never false, and `shouldColor` reads a missing one as \"not a\n * terminal\".\n */\nexport function colorFor(\n command: Command,\n isTTY: boolean | undefined,\n env?: NodeJS.ProcessEnv,\n): boolean {\n // commander maps --no-color to opts.color === false, on the command that\n // declares it.\n const noColor = colorOwner(command).opts().color === false;\n return shouldColor({ noColor, isTTY, env });\n}\n\n/**\n * The nearest command, this one or an ancestor, that declares `--no-color`:\n * the domain's program, wherever it is mounted. Not the root: under the\n * umbrella that is `manni`, which has no `--no-color` of its own.\n */\nfunction colorOwner(command: Command): Command {\n for (let c: Command | null = command; c !== null; c = c.parent) {\n if (c.options.some((o) => o.long === \"--no-color\")) return c;\n }\n return command;\n}\n"],"mappings":";;;AAOA,OAAO,QAAQ;AAMR,SAAS,QAAQ,SAA0B;AAChD,SAAO,GAAG,aAAa,OAAO;AAChC;AAMO,SAAS,YAAY,MAIhB;AACV,QAAM,MAAM,KAAK,OAAO,QAAQ;AAChC,MAAI,KAAK,QAAS,QAAO;AACzB,MAAI,IAAI,YAAY,QAAQ,IAAI,aAAa,GAAI,QAAO;AACxD,SAAO,QAAQ,KAAK,KAAK;AAC3B;AASO,SAAS,SACd,SACA,OACA,KACS;AAGT,QAAM,UAAU,WAAW,OAAO,EAAE,KAAK,EAAE,UAAU;AACrD,SAAO,YAAY,EAAE,SAAS,OAAO,IAAI,CAAC;AAC5C;AAOA,SAAS,WAAW,SAA2B;AAC7C,WAAS,IAAoB,SAAS,MAAM,MAAM,IAAI,EAAE,QAAQ;AAC9D,QAAI,EAAE,QAAQ,KAAK,CAAC,MAAM,EAAE,SAAS,YAAY,EAAG,QAAO;AAAA,EAC7D;AACA,SAAO;AACT;","names":[]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
ToolError
|
|
4
|
+
} from "./chunk-G3T47CFV.js";
|
|
5
|
+
|
|
6
|
+
// src/docevals/types.ts
|
|
7
|
+
var DocevalsError = class extends ToolError {
|
|
8
|
+
constructor(message, code) {
|
|
9
|
+
super(message);
|
|
10
|
+
this.code = code;
|
|
11
|
+
this.name = "DocevalsError";
|
|
12
|
+
}
|
|
13
|
+
code;
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
export {
|
|
17
|
+
DocevalsError
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=chunk-SE4JN5XN.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/docevals/types.ts"],"sourcesContent":["/**\n * Shared result model for manni docevals.\n *\n * Vocabulary follows the \"Docs as Evals\" methodology (Docs as Tests with AI):\n * every check is an *eval*; what differs is its *grader* (code-based, LLM-as-\n * judge, or human). Verdicts are binary pass/fail — aggregate rates emerge from\n * binary judgments, they are never assigned per item.\n */\nimport { ToolError } from \"../shared/errors.js\";\nimport type { Severity } from \"../shared/severity.js\";\n\n// The judge vocabulary is shared with the inference layer and is re-exported\n// here so manni docevals code and its consumers keep one import site. A second local\n// definition would be a second thing to keep in sync.\n//\n// Match — a single run's verdict; `partial` counts as fail\n// Zone — confidence-zone routing for AI-judged evals\n// JudgeVerdict — the structured verdict of one run (the book's shape)\n// JudgeRun — one run within an ensemble\n// ConsensusResult — the aggregated outcome for one (page, eval) pair\nimport type { ConsensusResult } from \"@hawkeyexl/inference\";\n\nexport type {\n ConsensusResult,\n JudgeRun,\n JudgeVerdict,\n Match,\n Zone,\n} from \"@hawkeyexl/inference\";\n\n/**\n * Regression evals guard behavior that must keep working (~100% target pass\n * rate). Capability evals probe what the docs/system can do (~70% target).\n */\nexport type EvalType = \"capability\" | \"regression\";\n\n/**\n * Finding severity for deterministically graded evals: the family scale,\n * `notice | warning | error`, from `src/shared/severity.ts`. Only `error`\n * affects exit codes.\n */\nexport type { Severity };\n\n/** How an eval is graded. `tool:regex` is the built-in `tool:*` kind; `registerGrader` adds others. */\nexport type GraderKind = \"ai\" | \"command\" | \"human\" | `tool:${string}`;\n\n/** A normalized finding from a deterministically graded eval (command or tool). */\nexport interface Finding {\n /** Name of the eval that produced this finding. */\n evalName: string;\n /** Repo-relative path of the page the finding applies to. */\n file: string;\n /** Grader-specific rule id (e.g. \"regex/found\"), when available. */\n ruleId?: string;\n message: string;\n severity: Severity;\n /**\n * This finding is about the *grader*, not the page: the tool could not be\n * run, or its output could not be read. It fails the eval whatever severity\n * the eval is configured at, because an eval configured `severity: warning`\n * would otherwise pass while its check never executed (ADR 01022).\n *\n * A finding about the page carries the eval's severity as usual.\n */\n diagnostic?: boolean;\n line?: number;\n col?: number;\n}\n\n/** Result of one eval applied to one page. */\nexport interface EvalResult {\n evalName: string;\n /**\n * Suite this result reports under. Stamped centrally by the engine, which\n * already computes the mapping for the suite summaries — the alternative is\n * threading it through every one of the ~30 places a result is constructed.\n */\n suite?: string;\n type: EvalType;\n grader: GraderKind;\n file: string;\n /**\n * Where the page declares the eval: the item of its `evals` key that names\n * it, in the page or in the manifest that supplied the key (proposal 0037).\n * A suite eval the page never names points at its `eval-suite` key, or at\n * the page alone when the suite is the config's default. `file` is spelled\n * like `file`, and `line` is 1-based and absent when nothing records one.\n *\n * Stamped centrally by the engine, like `suite`, on every result it\n * reports.\n */\n location?: { file: string; line?: number };\n outcome: \"pass\" | \"fail\" | \"needs-review\" | \"skipped\" | \"error\";\n /** Present for ai-graded evals. */\n consensus?: ConsensusResult;\n /** Present for command/tool-graded evals that produced findings. */\n findings?: Finding[];\n /** True when this run generated the eval's check script. */\n generated?: boolean;\n /** Set when a persisted human review resolved a needs-review outcome. */\n via?: \"human-review\";\n /**\n * Findings the baseline already recorded and this run therefore suppressed\n * (ADR 01017). Present only on a run with a baseline in effect, so its\n * absence means \"no baseline\", not \"nothing was forgiven\".\n */\n baselined?: number;\n skipReason?: string;\n /**\n * The eval's weight in its suite's pass rate. Stamped centrally by the\n * engine alongside `suite`, and for the same reason: threading it through\n * the ~30 sites that construct a result would be thirty chances to forget.\n */\n weight?: number;\n /**\n * Set when the model that judged this eval also produced what it graded.\n *\n * `content` — the machines attributed for what the eval's `target` reads\n * name this model (`provenance` for the body, the `fields` of\n * `meta-provenance` for the frontmatter, both for `raw`): the judge wrote\n * what it grades. `criterion` — a `meta-provenance` entry for this model\n * lists this eval under `evals`: the judge wrote the question. Both bias a\n * verdict without invalidating it, so this rides along with a real outcome\n * rather than replacing it, and reaches every reporter instead of stderr.\n */\n selfPreference?: { axis: \"content\" | \"criterion\"; model: string };\n durationMs: number;\n}\n\n/** Per-suite aggregate. Pass rates emerge from binary outcomes. */\nexport interface SuiteSummary {\n suite: string;\n total: number;\n passed: number;\n failed: number;\n needsReview: number;\n skipped: number;\n errored: number;\n /**\n * Weighted share of the graded set that passed, 1 when nothing ran.\n *\n * The graded set is pass + fail + error, as it has always been —\n * `needs-review` and `skipped` are in neither half, so a page awaiting review\n * neither helps nor hurts. Each eval contributes its `weight` (1 unless it\n * says otherwise), and an eval that belongs to a criterion contributes\n * nothing on its own: the criterion contributes once, for the group.\n */\n passRate: number;\n /** From config: ~1.0 for regression suites, ~0.7 for capability suites. */\n targetPassRate: number;\n meetsTarget: boolean;\n /**\n * Set when a selection filter (`--eval` / `--suite`) was active, meaning the\n * run measured part of this suite. `meetsTarget` is then always false and the\n * suite cannot fail the run either: it has numbers, but no verdict.\n */\n partial?: boolean;\n /**\n * Criteria scored in this suite. Present only when the suite declares any,\n * so its absence means \"none\", never \"none passed\".\n *\n * `suspended` counts criteria whose members were not all graded in this run.\n * They are out of the rate entirely rather than counted as failures — the\n * same reasoning as `partial` one level down (ADR 01018): a group measured\n * in part has numbers but no verdict.\n */\n criteria?: {\n total: number;\n passed: number;\n failed: number;\n suspended: number;\n };\n}\n\n/** Full run output consumed by reporters. */\nexport interface RunReport {\n pages: number;\n evalResults: EvalResult[];\n suites: SuiteSummary[];\n /**\n * Judge telemetry. Counts, not money: the dollar figure this block used to\n * carry was only as good as a price table this repo does not own, and was\n * absent entirely for `claude-cli` and self-hosted endpoints (ADR 01019).\n */\n usage: {\n totalTokens: number;\n cachedEvals: number;\n judgedEvals: number;\n };\n /** Script generations performed during this run (paths written). */\n generated: string[];\n exitCode: 0 | 1;\n}\n\n/** Operational/usage error → exit code 2. */\nexport class DocevalsError extends ToolError {\n constructor(\n message: string,\n /**\n * Set where a caller acts on the kind of error rather than reporting it.\n * `nothing-resolved`: no page this run would check resolves an eval.\n */\n readonly code?: \"nothing-resolved\",\n ) {\n super(message);\n this.name = \"DocevalsError\";\n }\n}\n"],"mappings":";;;;;;AAmMO,IAAM,gBAAN,cAA4B,UAAU;AAAA,EAC3C,YACE,SAKS,MACT;AACA,UAAM,OAAO;AAFJ;AAGT,SAAK,OAAO;AAAA,EACd;AAAA,EAJW;AAKb;","names":[]}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
ToolError
|
|
4
|
+
} from "./chunk-G3T47CFV.js";
|
|
5
|
+
|
|
6
|
+
// src/shared/package-root.ts
|
|
7
|
+
import { existsSync } from "node:fs";
|
|
8
|
+
import { dirname, join } from "node:path";
|
|
9
|
+
import { fileURLToPath } from "node:url";
|
|
10
|
+
function packageRoot(moduleUrl) {
|
|
11
|
+
let dir = dirname(fileURLToPath(moduleUrl));
|
|
12
|
+
for (; ; ) {
|
|
13
|
+
if (existsSync(join(dir, "package.json"))) return dir;
|
|
14
|
+
const parent = dirname(dir);
|
|
15
|
+
if (parent === dir) {
|
|
16
|
+
throw new ToolError(`No package.json above ${fileURLToPath(moduleUrl)}`);
|
|
17
|
+
}
|
|
18
|
+
dir = parent;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export {
|
|
23
|
+
packageRoot
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=chunk-TIUTIOFB.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/shared/package-root.ts"],"sourcesContent":["/**\n * The package root, for assets that ship beside the code.\n *\n * Some files are read by path at runtime rather than imported: a JSON Schema a\n * validator is pointed at, a template a linter loads. They live at the package\n * root (`schemas/<tool>/…`), listed in `files`, and are reached by walking up\n * from the calling module until a `package.json` appears. That is the one\n * rule that holds both in the source tree, where a module sits two or three\n * directories down, and in the bundle, where it sits in `dist/`.\n */\nimport { existsSync } from \"node:fs\";\nimport { dirname, join } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport { ToolError } from \"./errors.js\";\n\nexport function packageRoot(moduleUrl: string): string {\n let dir = dirname(fileURLToPath(moduleUrl));\n for (;;) {\n if (existsSync(join(dir, \"package.json\"))) return dir;\n const parent = dirname(dir);\n if (parent === dir) {\n // A `ToolError`, not a bare one: the bin runner renders anything else as\n // \"Unexpected error:\" with a stack trace, which is what it says about a\n // bug. A package whose files did not ship is an operational failure and\n // reads as one line and exit 2, like every other.\n throw new ToolError(`No package.json above ${fileURLToPath(moduleUrl)}`);\n }\n dir = parent;\n }\n}\n"],"mappings":";;;;;;AAUA,SAAS,kBAAkB;AAC3B,SAAS,SAAS,YAAY;AAC9B,SAAS,qBAAqB;AAGvB,SAAS,YAAY,WAA2B;AACrD,MAAI,MAAM,QAAQ,cAAc,SAAS,CAAC;AAC1C,aAAS;AACP,QAAI,WAAW,KAAK,KAAK,cAAc,CAAC,EAAG,QAAO;AAClD,UAAM,SAAS,QAAQ,GAAG;AAC1B,QAAI,WAAW,KAAK;AAKlB,YAAM,IAAI,UAAU,yBAAyB,cAAc,SAAS,CAAC,EAAE;AAAA,IACzE;AACA,UAAM;AAAA,EACR;AACF;","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
TracevalsError
|
|
4
|
+
} from "./chunk-UKZNLVJW.js";
|
|
5
|
+
|
|
6
|
+
// src/tracevals/capture/hook.ts
|
|
7
|
+
var REASON_KEYS = ["how", "why", "source", "reason"];
|
|
8
|
+
function str(record, key) {
|
|
9
|
+
const value = record[key];
|
|
10
|
+
return typeof value === "string" && value.length > 0 ? value : void 0;
|
|
11
|
+
}
|
|
12
|
+
function parseHookPayload(raw) {
|
|
13
|
+
let parsed;
|
|
14
|
+
try {
|
|
15
|
+
parsed = JSON.parse(raw);
|
|
16
|
+
} catch (err) {
|
|
17
|
+
throw new TracevalsError(
|
|
18
|
+
`hook payload is not JSON: ${err instanceof Error ? err.message : String(err)}`
|
|
19
|
+
);
|
|
20
|
+
}
|
|
21
|
+
if (parsed === null || typeof parsed !== "object" || Array.isArray(parsed)) {
|
|
22
|
+
throw new TracevalsError(
|
|
23
|
+
"hook payload must be a JSON object; Claude Code writes one object on stdin"
|
|
24
|
+
);
|
|
25
|
+
}
|
|
26
|
+
const record = parsed;
|
|
27
|
+
let reason;
|
|
28
|
+
for (const key of REASON_KEYS) {
|
|
29
|
+
reason = str(record, key);
|
|
30
|
+
if (reason !== void 0) break;
|
|
31
|
+
}
|
|
32
|
+
return {
|
|
33
|
+
...str(record, "session_id") !== void 0 ? { sessionId: str(record, "session_id") } : {},
|
|
34
|
+
...str(record, "transcript_path") !== void 0 ? { transcriptPath: str(record, "transcript_path") } : {},
|
|
35
|
+
...str(record, "cwd") !== void 0 ? { cwd: str(record, "cwd") } : {},
|
|
36
|
+
...str(record, "hook_event_name") !== void 0 ? { hookEvent: str(record, "hook_event_name") } : {},
|
|
37
|
+
...reason !== void 0 ? { reason } : {}
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
function readStdin(stream = process.stdin, options = {}) {
|
|
41
|
+
const maxBytes = options.maxBytes ?? 1e6;
|
|
42
|
+
const timeoutMs = options.timeoutMs ?? 1500;
|
|
43
|
+
if (stream.isTTY) return Promise.resolve("");
|
|
44
|
+
return new Promise((settle, fail) => {
|
|
45
|
+
const chunks = [];
|
|
46
|
+
let total = 0;
|
|
47
|
+
let done = false;
|
|
48
|
+
const stop = () => {
|
|
49
|
+
clearTimeout(timer);
|
|
50
|
+
stream.off("data", onData);
|
|
51
|
+
stream.off("end", onEnd);
|
|
52
|
+
stream.off("error", onError);
|
|
53
|
+
stream.pause();
|
|
54
|
+
};
|
|
55
|
+
const finish = () => {
|
|
56
|
+
if (done) return;
|
|
57
|
+
done = true;
|
|
58
|
+
stop();
|
|
59
|
+
settle(Buffer.concat(chunks).toString("utf-8"));
|
|
60
|
+
};
|
|
61
|
+
const abort = (err) => {
|
|
62
|
+
if (done) return;
|
|
63
|
+
done = true;
|
|
64
|
+
stop();
|
|
65
|
+
fail(err);
|
|
66
|
+
};
|
|
67
|
+
const onData = (chunk) => {
|
|
68
|
+
const buf = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
|
|
69
|
+
total += buf.length;
|
|
70
|
+
if (total > maxBytes) {
|
|
71
|
+
abort(
|
|
72
|
+
new TracevalsError(
|
|
73
|
+
`hook payload exceeded ${maxBytes} bytes; this is not a Claude Code hook envelope`
|
|
74
|
+
)
|
|
75
|
+
);
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
chunks.push(buf);
|
|
79
|
+
};
|
|
80
|
+
const onEnd = () => {
|
|
81
|
+
finish();
|
|
82
|
+
};
|
|
83
|
+
const onError = () => {
|
|
84
|
+
finish();
|
|
85
|
+
};
|
|
86
|
+
const timer = setTimeout(finish, timeoutMs);
|
|
87
|
+
stream.on("data", onData);
|
|
88
|
+
stream.on("end", onEnd);
|
|
89
|
+
stream.on("error", onError);
|
|
90
|
+
stream.resume();
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
export {
|
|
95
|
+
parseHookPayload,
|
|
96
|
+
readStdin
|
|
97
|
+
};
|
|
98
|
+
//# sourceMappingURL=chunk-TZOYZK2E.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/tracevals/capture/hook.ts"],"sourcesContent":["/**\n * The Claude Code hook envelope, read from stdin (ADR 01024).\n *\n * Claude Code writes a hook command **one JSON object on stdin** and closes it.\n * Four members are documented as common to every hook event and are the only\n * ones `capture` depends on:\n *\n * | Member | Meaning |\n * |---|---|\n * | `session_id` | the session identifier — the manifest's filename and its join key |\n * | `transcript_path` | where the session file will be written; a correlation key only |\n * | `cwd` | the working directory the hook fired in — the project root to scan |\n * | `hook_event_name` | `SessionStart`, `SessionEnd`, … |\n *\n * The member naming *why* a session started or ended is **not** depended on.\n * The reference describes it as \"how the session started\" / \"why the session\n * ended\" and it has been published as `source`/`reason` and as `how`/`why`\n * across versions, so every spelling is accepted and the value is recorded as\n * provenance rather than used as a key. This is the same tolerance\n * `trace/detect.ts` already applies to `sessionId` versus `session_id`.\n *\n * Everything is optional and every member is type-checked before it is\n * believed: this payload is produced by another program, and a member of the\n * wrong shape must be ignored rather than propagated into a manifest.\n */\nimport { TracevalsError } from \"../types.js\";\n\nexport interface HookPayload {\n sessionId?: string;\n transcriptPath?: string;\n cwd?: string;\n hookEvent?: string;\n /** Why the session started or ended, whichever spelling arrived. */\n reason?: string;\n}\n\n/** Spellings of the start/end reason, most recent first. */\nconst REASON_KEYS = [\"how\", \"why\", \"source\", \"reason\"] as const;\n\nfunction str(record: Record<string, unknown>, key: string): string | undefined {\n const value = record[key];\n return typeof value === \"string\" && value.length > 0 ? value : undefined;\n}\n\n/**\n * Parse one hook payload. Throws only when the text is not a JSON object at\n * all — an object missing members is an ordinary, tolerable payload, while\n * text that is not one means `capture` was wired to something that is not a\n * Claude Code hook and saying so is more useful than writing an empty manifest.\n */\nexport function parseHookPayload(raw: string): HookPayload {\n let parsed: unknown;\n try {\n parsed = JSON.parse(raw);\n } catch (err) {\n throw new TracevalsError(\n `hook payload is not JSON: ${err instanceof Error ? err.message : String(err)}`,\n );\n }\n if (parsed === null || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n throw new TracevalsError(\n \"hook payload must be a JSON object; Claude Code writes one object on stdin\",\n );\n }\n const record = parsed as Record<string, unknown>;\n let reason: string | undefined;\n for (const key of REASON_KEYS) {\n reason = str(record, key);\n if (reason !== undefined) break;\n }\n return {\n ...(str(record, \"session_id\") !== undefined\n ? { sessionId: str(record, \"session_id\") }\n : {}),\n ...(str(record, \"transcript_path\") !== undefined\n ? { transcriptPath: str(record, \"transcript_path\") }\n : {}),\n ...(str(record, \"cwd\") !== undefined\n ? { cwd: str(record, \"cwd\") }\n : {}),\n ...(str(record, \"hook_event_name\") !== undefined\n ? { hookEvent: str(record, \"hook_event_name\") }\n : {}),\n ...(reason !== undefined ? { reason } : {}),\n };\n}\n\nexport interface ReadStdinOptions {\n /** Cap on the payload. A hook envelope is a handful of short strings. */\n maxBytes?: number;\n /**\n * How long to wait for a payload that never arrives. **Not optional\n * politeness** — an inherited stdin that is a pipe nobody ever writes to or\n * closes is a hang, and any script or CI runner that does not redirect stdin\n * hands `capture` exactly that. A hook writes and closes immediately, so this\n * only ever elapses when there was no payload to begin with.\n */\n timeoutMs?: number;\n}\n\n/**\n * Read a hook payload from stdin, or return \"\" when there is none.\n *\n * Never rejects on an idle stream: \"nothing arrived\" is the ordinary hand-run\n * case, and it is answered by an empty string.\n */\nexport function readStdin(\n stream: NodeJS.ReadStream = process.stdin,\n options: ReadStdinOptions = {},\n): Promise<string> {\n const maxBytes = options.maxBytes ?? 1_000_000;\n const timeoutMs = options.timeoutMs ?? 1500;\n // A TTY means a person is at the keyboard, not a hook. Reading would block\n // on input nobody intends to type.\n if (stream.isTTY) return Promise.resolve(\"\");\n\n return new Promise((settle, fail) => {\n const chunks: Buffer[] = [];\n let total = 0;\n let done = false;\n\n const stop = (): void => {\n clearTimeout(timer);\n stream.off(\"data\", onData);\n stream.off(\"end\", onEnd);\n stream.off(\"error\", onError);\n stream.pause();\n };\n const finish = (): void => {\n if (done) return;\n done = true;\n stop();\n settle(Buffer.concat(chunks).toString(\"utf-8\"));\n };\n const abort = (err: Error): void => {\n if (done) return;\n done = true;\n stop();\n fail(err);\n };\n\n const onData = (chunk: Buffer | string): void => {\n const buf = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);\n total += buf.length;\n if (total > maxBytes) {\n abort(\n new TracevalsError(\n `hook payload exceeded ${maxBytes} bytes; this is not a Claude Code hook envelope`,\n ),\n );\n return;\n }\n chunks.push(buf);\n };\n const onEnd = (): void => { finish(); };\n // A closed or unreadable stdin is \"no payload\", not a failure: `capture`\n // has to survive being wired up in an environment nobody anticipated.\n const onError = (): void => { finish(); };\n\n const timer = setTimeout(finish, timeoutMs);\n stream.on(\"data\", onData);\n stream.on(\"end\", onEnd);\n stream.on(\"error\", onError);\n stream.resume();\n });\n}\n"],"mappings":";;;;;;AAqCA,IAAM,cAAc,CAAC,OAAO,OAAO,UAAU,QAAQ;AAErD,SAAS,IAAI,QAAiC,KAAiC;AAC7E,QAAM,QAAQ,OAAO,GAAG;AACxB,SAAO,OAAO,UAAU,YAAY,MAAM,SAAS,IAAI,QAAQ;AACjE;AAQO,SAAS,iBAAiB,KAA0B;AACzD,MAAI;AACJ,MAAI;AACF,aAAS,KAAK,MAAM,GAAG;AAAA,EACzB,SAAS,KAAK;AACZ,UAAM,IAAI;AAAA,MACR,6BAA6B,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG,CAAC;AAAA,IAC/E;AAAA,EACF;AACA,MAAI,WAAW,QAAQ,OAAO,WAAW,YAAY,MAAM,QAAQ,MAAM,GAAG;AAC1E,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACA,QAAM,SAAS;AACf,MAAI;AACJ,aAAW,OAAO,aAAa;AAC7B,aAAS,IAAI,QAAQ,GAAG;AACxB,QAAI,WAAW,OAAW;AAAA,EAC5B;AACA,SAAO;AAAA,IACL,GAAI,IAAI,QAAQ,YAAY,MAAM,SAC9B,EAAE,WAAW,IAAI,QAAQ,YAAY,EAAE,IACvC,CAAC;AAAA,IACL,GAAI,IAAI,QAAQ,iBAAiB,MAAM,SACnC,EAAE,gBAAgB,IAAI,QAAQ,iBAAiB,EAAE,IACjD,CAAC;AAAA,IACL,GAAI,IAAI,QAAQ,KAAK,MAAM,SACvB,EAAE,KAAK,IAAI,QAAQ,KAAK,EAAE,IAC1B,CAAC;AAAA,IACL,GAAI,IAAI,QAAQ,iBAAiB,MAAM,SACnC,EAAE,WAAW,IAAI,QAAQ,iBAAiB,EAAE,IAC5C,CAAC;AAAA,IACL,GAAI,WAAW,SAAY,EAAE,OAAO,IAAI,CAAC;AAAA,EAC3C;AACF;AAqBO,SAAS,UACd,SAA4B,QAAQ,OACpC,UAA4B,CAAC,GACZ;AACjB,QAAM,WAAW,QAAQ,YAAY;AACrC,QAAM,YAAY,QAAQ,aAAa;AAGvC,MAAI,OAAO,MAAO,QAAO,QAAQ,QAAQ,EAAE;AAE3C,SAAO,IAAI,QAAQ,CAAC,QAAQ,SAAS;AACnC,UAAM,SAAmB,CAAC;AAC1B,QAAI,QAAQ;AACZ,QAAI,OAAO;AAEX,UAAM,OAAO,MAAY;AACvB,mBAAa,KAAK;AAClB,aAAO,IAAI,QAAQ,MAAM;AACzB,aAAO,IAAI,OAAO,KAAK;AACvB,aAAO,IAAI,SAAS,OAAO;AAC3B,aAAO,MAAM;AAAA,IACf;AACA,UAAM,SAAS,MAAY;AACzB,UAAI,KAAM;AACV,aAAO;AACP,WAAK;AACL,aAAO,OAAO,OAAO,MAAM,EAAE,SAAS,OAAO,CAAC;AAAA,IAChD;AACA,UAAM,QAAQ,CAAC,QAAqB;AAClC,UAAI,KAAM;AACV,aAAO;AACP,WAAK;AACL,WAAK,GAAG;AAAA,IACV;AAEA,UAAM,SAAS,CAAC,UAAiC;AAC/C,YAAM,MAAM,OAAO,SAAS,KAAK,IAAI,QAAQ,OAAO,KAAK,KAAK;AAC9D,eAAS,IAAI;AACb,UAAI,QAAQ,UAAU;AACpB;AAAA,UACE,IAAI;AAAA,YACF,yBAAyB,QAAQ;AAAA,UACnC;AAAA,QACF;AACA;AAAA,MACF;AACA,aAAO,KAAK,GAAG;AAAA,IACjB;AACA,UAAM,QAAQ,MAAY;AAAE,aAAO;AAAA,IAAG;AAGtC,UAAM,UAAU,MAAY;AAAE,aAAO;AAAA,IAAG;AAExC,UAAM,QAAQ,WAAW,QAAQ,SAAS;AAC1C,WAAO,GAAG,QAAQ,MAAM;AACxB,WAAO,GAAG,OAAO,KAAK;AACtB,WAAO,GAAG,SAAS,OAAO;AAC1B,WAAO,OAAO;AAAA,EAChB,CAAC;AACH;","names":[]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
ToolError
|
|
4
|
+
} from "./chunk-G3T47CFV.js";
|
|
5
|
+
|
|
6
|
+
// src/tracevals/types.ts
|
|
7
|
+
var TracevalsError = class extends ToolError {
|
|
8
|
+
constructor(message) {
|
|
9
|
+
super(message);
|
|
10
|
+
this.name = "TracevalsError";
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
export {
|
|
15
|
+
TracevalsError
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=chunk-UKZNLVJW.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/tracevals/types.ts"],"sourcesContent":["/** Shared result model and errors for manni tracevals. */\nimport type { ConsensusResult } from \"@hawkeyexl/inference\";\nimport type {\n AvailabilityReport,\n CoverageEntry,\n} from \"./artifacts/types.js\";\nimport type { ArtifactType } from \"./artifacts/types.js\";\nimport type { ManifestReport } from \"./capture/types.js\";\nimport type { Finding } from \"./graders/types.js\";\nimport { ToolError } from \"../shared/errors.js\";\n\n/**\n * Operational error: bad usage, unreadable input, unknown format. Exits 2.\n * A `ToolError`, so the shared bin runner prints it as one line.\n */\nexport class TracevalsError extends ToolError {\n constructor(message: string) {\n super(message);\n this.name = \"TracevalsError\";\n }\n}\n\nexport type Outcome = \"pass\" | \"fail\" | \"error\" | \"needs-review\" | \"skipped\";\n\nexport interface EvalResult {\n evalName: string;\n /** Path of the artifact the eval came from. */\n artifact: string;\n artifactName: string;\n artifactType: ArtifactType;\n grader: string;\n implicit: boolean;\n /**\n * Where the eval is declared: the item of `metadata.evals` that names it, in\n * the artifact or in the manifest that supplied the block (proposal 0037).\n * `file` is relative to the working directory and forward-slashed when it is\n * inside it, absolute when it is not, and a URL for a hosted manifest.\n * `line` is 1-based, and absent when nothing records one, as for the\n * implicit eval, which no entry declares.\n */\n location: { file: string; line?: number };\n outcome: Outcome;\n /** Present for deterministic evals that produced findings. */\n findings?: Finding[];\n /** Present for judged evals. */\n consensus?: ConsensusResult;\n error?: string;\n skipReason?: string;\n /**\n * Judged evals only: uncached ensemble runs this eval spent. `0` when the\n * ensemble came from cache, or when the turn budget stopped it.\n */\n turns?: number;\n /**\n * Set when the model that judged this eval also produced what it graded.\n *\n * `session` — the judge model is the model that ran the session. This is the\n * sharpest form of the bias in either manni tool: the judge is not being\n * asked about a document it happened to draft, it is being asked whether its\n * own behavior followed the rules. `criterion` — `meta-provenance` records\n * this model proposing this assertion, so the judge wrote the question.\n *\n * Reported, never fatal: bias skews a verdict, it does not stop one forming,\n * and erroring would punish a single-model setup with no second provider to\n * reach for.\n */\n selfPreference?: { axis: \"session\" | \"criterion\"; model: string };\n /**\n * The eval's weight in the run's pass rate. Never changes its own outcome —\n * the binary verdict is what the reporters and exit code consume.\n */\n weight?: number;\n durationMs: number;\n}\n\nexport interface RunSummary {\n total: number;\n pass: number;\n fail: number;\n error: number;\n needsReview: number;\n skipped: number;\n /**\n * Weighted share of the graded set that passed, 1 when nothing was graded.\n *\n * The graded set is pass + fail + error; `needs-review` and `skipped` are in\n * neither half, so a session awaiting review neither helps nor hurts. Each\n * eval contributes its `weight` (1 unless it says otherwise), which is what\n * lets a secondary check report without dominating.\n *\n * Reported, never gated: manni tracevals has no suite targets to compare it\n * against, and inventing an exit-code rule around a number nobody configured\n * would be a gate no one asked for.\n */\n passRate: number;\n}\n\nexport interface RunReport {\n trace: {\n file: string;\n source: string;\n sessionId?: string;\n cwd: string;\n model?: string;\n turnCount: number;\n };\n /** Trace + resolution warnings, surfaced in every format. */\n warnings: string[];\n coverage: CoverageEntry[];\n /**\n * Offered versus used (ADR 01016). An observation about the session's\n * configuration; it never contributes to `summary` or `exitCode`.\n */\n availability: AvailabilityReport;\n /**\n * The session manifest this run consulted (ADR 01024), when one was found.\n * Absent means no manifest existed, which is the ordinary case — every hash\n * check then reports `skipped` and staleness stays the mtime heuristic.\n * Like `availability`, an observation: never in `summary`, never in\n * `exitCode`.\n */\n manifest?: ManifestReport;\n evalResults: EvalResult[];\n summary: RunSummary;\n /** 0 pass, 1 any fail/error (and needs-review when failOnReview). */\n exitCode: 0 | 1;\n /** Uncached ensemble runs this run spent. See `judge.maxTurns`. */\n turns: number;\n durationMs: number;\n}\n\n/* -------------------------------------------------------------------------- *\n * Batch runs (ADR 01018)\n *\n * Adherence is a rate across sessions, not a single verdict. `BatchReport`\n * sits alongside `RunReport` rather than replacing it: naming one trace still\n * yields exactly the `RunReport` above, byte for byte.\n * -------------------------------------------------------------------------- */\n\n/** Outcome tallies for one aggregate row. */\nexport interface AggregateCounts {\n pass: number;\n fail: number;\n error: number;\n needsReview: number;\n skipped: number;\n}\n\n/**\n * One artifact, or one eval within it, summed over every trace in the batch.\n *\n * Keyed by type and *name* rather than by path, so the same skill evaluated\n * across several projects is one rate — which is the fleet question this\n * report exists to answer. The paths it resolved from are kept in `artifacts`\n * so a reader can see when a row spans more than one.\n */\nexport interface AggregateRow {\n /** `<type>:<name>` for an artifact row, plus `::<evalName>` for an eval row. */\n key: string;\n artifactName: string;\n artifactType: ArtifactType;\n /** Distinct resolved paths this row was aggregated from, sorted. */\n artifacts: string[];\n /** Absent on artifact rows. */\n evalName?: string;\n /** The grader kinds seen for this row, sorted. Usually exactly one. */\n graders?: string[];\n /** Traces that produced at least one result for this row. */\n traces: number;\n /** Eval results contributing to this row. */\n total: number;\n counts: AggregateCounts;\n /** `total` minus `skipped` — the pass-rate denominator. */\n graded: number;\n /**\n * `pass / graded`, or `null` when nothing was graded. Skipped results are\n * excluded deliberately: a check that never armed is not evidence either\n * way, and folding it in would let an artifact nobody invoked report a\n * perfect score.\n */\n passRate: number | null;\n /** Traces where this row produced a `fail` or an `error`, in batch order. */\n failingTraces: string[];\n /** Traces where it produced a `needs-review`, in batch order. */\n reviewTraces: string[];\n /** Distinct skip reasons, sorted — an exhausted budget surfaces here. */\n skipReasons: string[];\n}\n\n/** One trace's place in the batch. */\nexport interface BatchTraceEntry {\n file: string;\n sessionId?: string;\n /**\n * Set when the trace could not be evaluated at all — unreadable, or not a\n * recognized format. One bad file in a corpus of fifty must not cost the\n * other forty-nine, so this is an entry rather than an aborted run.\n */\n error?: string;\n /** Absent when `error` is set. */\n summary?: RunSummary;\n warnings: string[];\n exitCode: 0 | 1;\n /** Judge turns spent on that trace. */\n turns: number;\n durationMs: number;\n}\n\nexport interface BatchSummary extends RunSummary {\n /** Traces selected, including any that errored. */\n traces: number;\n tracesPassed: number;\n /** Traces that produced a report with exit code 1. */\n tracesFailed: number;\n /** Traces that could not be evaluated at all. */\n tracesErrored: number;\n}\n\nexport interface BatchReport {\n traces: BatchTraceEntry[];\n /** Per-artifact rates, sorted by `key`. */\n artifacts: AggregateRow[];\n /** Per-eval rates, sorted by `key`. */\n evals: AggregateRow[];\n /** Eval counts summed over every trace, plus the per-trace tallies. */\n summary: BatchSummary;\n /** Batch-level warnings: plugin loading and trace selection. */\n warnings: string[];\n /** `1` when any trace failed or errored. */\n exitCode: 0 | 1;\n /** Judge turns spent across the batch. The budget spans it, not each trace. */\n turns: number;\n durationMs: number;\n}\n"],"mappings":";;;;;;AAeO,IAAM,iBAAN,cAA6B,UAAU;AAAA,EAC5C,YAAY,SAAiB;AAC3B,UAAM,OAAO;AACb,SAAK,OAAO;AAAA,EACd;AACF;","names":[]}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
// package.json
|
|
4
|
+
var package_default = {
|
|
5
|
+
name: "@hawkeyexl/manni",
|
|
6
|
+
version: "4.4.0",
|
|
7
|
+
description: "One command line for documentation that is meant to be checked. `manni meta` validates the presence and format of document metadata (Markdown frontmatter and more) against JSON Schema, built for CI. Formerly docmeta.",
|
|
8
|
+
type: "module",
|
|
9
|
+
bin: {
|
|
10
|
+
manni: "dist/cli.js",
|
|
11
|
+
docmeta: "dist/docmeta.js"
|
|
12
|
+
},
|
|
13
|
+
main: "dist/index.js",
|
|
14
|
+
module: "dist/index.js",
|
|
15
|
+
types: "dist/index.d.ts",
|
|
16
|
+
exports: {
|
|
17
|
+
".": {
|
|
18
|
+
types: "./dist/index.d.ts",
|
|
19
|
+
import: "./dist/index.js"
|
|
20
|
+
},
|
|
21
|
+
"./graph/runtime": {
|
|
22
|
+
types: "./dist/graph/runtime.d.ts",
|
|
23
|
+
import: "./dist/graph/runtime.js"
|
|
24
|
+
},
|
|
25
|
+
"./graph/embed": {
|
|
26
|
+
types: "./dist/graph/embed.d.ts",
|
|
27
|
+
import: "./dist/graph/embed.js"
|
|
28
|
+
},
|
|
29
|
+
"./package.json": "./package.json"
|
|
30
|
+
},
|
|
31
|
+
files: [
|
|
32
|
+
"dist",
|
|
33
|
+
"schemas",
|
|
34
|
+
"plugin",
|
|
35
|
+
"shapes",
|
|
36
|
+
"templates"
|
|
37
|
+
],
|
|
38
|
+
repository: {
|
|
39
|
+
type: "git",
|
|
40
|
+
url: "git+https://github.com/hawkeyexl/manni.git"
|
|
41
|
+
},
|
|
42
|
+
homepage: "https://hawkeyexl.github.io/manni/",
|
|
43
|
+
bugs: {
|
|
44
|
+
url: "https://github.com/hawkeyexl/manni/issues"
|
|
45
|
+
},
|
|
46
|
+
publishConfig: {
|
|
47
|
+
access: "public"
|
|
48
|
+
},
|
|
49
|
+
engines: {
|
|
50
|
+
node: ">=24"
|
|
51
|
+
},
|
|
52
|
+
scripts: {
|
|
53
|
+
prebuild: "npm run check:deps",
|
|
54
|
+
build: "node scripts/clean-dist.mjs && tsup",
|
|
55
|
+
dev: "node scripts/clean-dist.mjs && tsup --watch",
|
|
56
|
+
pretest: "npm run check:deps",
|
|
57
|
+
test: "vitest run",
|
|
58
|
+
"test:watch": "vitest",
|
|
59
|
+
"test:graph:real": "vitest run --config vitest.graph-real.config.ts",
|
|
60
|
+
"test:coverage": "vitest run --coverage",
|
|
61
|
+
pretypecheck: "npm run check:deps",
|
|
62
|
+
typecheck: "tsc --noEmit",
|
|
63
|
+
lint: "eslint .",
|
|
64
|
+
"check:deps": "node scripts/check-deps.mjs",
|
|
65
|
+
"query:ui": "npm run build && node dist/cli.js meta query --db .manni/meta/query.db && node scripts/query-ui.mjs .manni/meta/query.db",
|
|
66
|
+
"check:tgdp-pin": "node scripts/lint-check-tgdp-pin.mjs",
|
|
67
|
+
"smoke:lint": "npm run build && node scripts/lint-smoke.mjs",
|
|
68
|
+
"docs:check-cli": "node scripts/check-cli-reference.mjs",
|
|
69
|
+
"docs:check-action": "node scripts/check-action-reference.mjs",
|
|
70
|
+
"docs:check-api": "node scripts/check-api-reference.mjs",
|
|
71
|
+
"docs:check-links": "node scripts/check-doc-links.mjs",
|
|
72
|
+
"docs:check-docevals": "node dist/cli.js docevals run --deterministic-only --no-generate",
|
|
73
|
+
"docs:check-graph": "node scripts/check-docs-graph.mjs",
|
|
74
|
+
"docs:check-tables": "node scripts/check-table-rows.mjs",
|
|
75
|
+
"docs:check-versions": "node scripts/check-versions.mjs",
|
|
76
|
+
"docs:sync-versions": "node scripts/sync-versions.mjs",
|
|
77
|
+
"schemas:sync": "node scripts/sync-builtin-schemas.mjs",
|
|
78
|
+
"schemas:check": "node scripts/check-builtin-schemas.mjs",
|
|
79
|
+
"schemas:check-published": "node scripts/check-published-schemas.mjs",
|
|
80
|
+
commitlint: "commitlint --edit",
|
|
81
|
+
"semantic-release": "semantic-release",
|
|
82
|
+
prepare: "node scripts/prepare.mjs",
|
|
83
|
+
prepublishOnly: "npm run build"
|
|
84
|
+
},
|
|
85
|
+
keywords: [
|
|
86
|
+
"frontmatter",
|
|
87
|
+
"metadata",
|
|
88
|
+
"json-schema",
|
|
89
|
+
"markdown",
|
|
90
|
+
"validation",
|
|
91
|
+
"cli",
|
|
92
|
+
"ci",
|
|
93
|
+
"okf"
|
|
94
|
+
],
|
|
95
|
+
license: "MIT",
|
|
96
|
+
overrides: {
|
|
97
|
+
esbuild: "^0.28.2"
|
|
98
|
+
},
|
|
99
|
+
dependencies: {
|
|
100
|
+
"@apidevtools/json-schema-ref-parser": "^11.9.3",
|
|
101
|
+
"@asciidoctor/core": "^3.0.4",
|
|
102
|
+
"@axe-core/playwright": "^4.13.0",
|
|
103
|
+
"@hawkeyexl/inference": "^0.4.0",
|
|
104
|
+
"@inquirer/prompts": "^7.10.1",
|
|
105
|
+
"@types/n3": "^1.26.3",
|
|
106
|
+
"@xmldom/xmldom": "^0.9.12",
|
|
107
|
+
ajv: "^8.17.1",
|
|
108
|
+
"ajv-draft-04": "^1.0.0",
|
|
109
|
+
"ajv-formats": "^3.0.1",
|
|
110
|
+
commander: "^15.0.0",
|
|
111
|
+
"fast-glob": "^3.3.2",
|
|
112
|
+
"github-slugger": "^2.0.0",
|
|
113
|
+
"mdast-util-to-string": "^4.0.0",
|
|
114
|
+
minisearch: "^7.2.0",
|
|
115
|
+
n3: "^1.26.0",
|
|
116
|
+
parse5: "^8.0.1",
|
|
117
|
+
picocolors: "^1.1.1",
|
|
118
|
+
picomatch: "^4.0.7",
|
|
119
|
+
"playwright-core": "^1.63.0",
|
|
120
|
+
"rdf-validate-shacl": "^0.6.5",
|
|
121
|
+
"remark-frontmatter": "^5.0.0",
|
|
122
|
+
"remark-gfm": "^4.0.1",
|
|
123
|
+
"remark-mdx": "^3.1.1",
|
|
124
|
+
"remark-parse": "^11.0.0",
|
|
125
|
+
"smol-toml": "^1.8.0",
|
|
126
|
+
unified: "^11.0.5",
|
|
127
|
+
"unist-util-visit": "^5.1.0",
|
|
128
|
+
yaml: "^2.6.1"
|
|
129
|
+
},
|
|
130
|
+
devDependencies: {
|
|
131
|
+
"@commitlint/cli": "^21.2.2",
|
|
132
|
+
"@commitlint/config-conventional": "^21.2.2",
|
|
133
|
+
"@comunica/query-sparql-rdfjs-lite": "^5.3.0",
|
|
134
|
+
"@eslint/js": "^10.0.1",
|
|
135
|
+
"@rdfjs/types": "^2.0.1",
|
|
136
|
+
"@semantic-release/changelog": "^6.0.3",
|
|
137
|
+
"@semantic-release/commit-analyzer": "^13.0.1",
|
|
138
|
+
"@semantic-release/git": "^10.0.1",
|
|
139
|
+
"@semantic-release/github": "^12.0.8",
|
|
140
|
+
"@semantic-release/npm": "^13.1.5",
|
|
141
|
+
"@semantic-release/release-notes-generator": "^14.1.1",
|
|
142
|
+
"@types/jsonld": "^1.5.15",
|
|
143
|
+
"@types/mdast": "^4.0.4",
|
|
144
|
+
"@types/node": "^26.3.0",
|
|
145
|
+
"@types/picomatch": "^4.0.3",
|
|
146
|
+
"@types/unist": "^3.0.3",
|
|
147
|
+
"@types/yauzl": "^3.4.0",
|
|
148
|
+
"@vitest/coverage-v8": "^4.1.11",
|
|
149
|
+
eslint: "^10.9.1",
|
|
150
|
+
globals: "^17.11.0",
|
|
151
|
+
husky: "^9.1.7",
|
|
152
|
+
jsonld: "^9.0.0",
|
|
153
|
+
"rdfxml-streaming-parser": "^3.3.0",
|
|
154
|
+
"semantic-release": "^25.0.9",
|
|
155
|
+
tsup: "^8.3.5",
|
|
156
|
+
typescript: "^6.0.3",
|
|
157
|
+
"typescript-eslint": "^8.68.0",
|
|
158
|
+
vitest: "^4.1.11",
|
|
159
|
+
yauzl: "^3.4.0"
|
|
160
|
+
},
|
|
161
|
+
peerDependencies: {
|
|
162
|
+
"@huggingface/transformers": ">=4",
|
|
163
|
+
"node-llama-cpp": "^3.19.0"
|
|
164
|
+
},
|
|
165
|
+
peerDependenciesMeta: {
|
|
166
|
+
"@huggingface/transformers": {
|
|
167
|
+
optional: true
|
|
168
|
+
},
|
|
169
|
+
"node-llama-cpp": {
|
|
170
|
+
optional: true
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
};
|
|
174
|
+
|
|
175
|
+
export {
|
|
176
|
+
package_default
|
|
177
|
+
};
|
|
178
|
+
//# sourceMappingURL=chunk-UZC7LDAQ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../package.json"],"sourcesContent":["{\n \"name\": \"@hawkeyexl/manni\",\n \"version\": \"4.4.0\",\n \"description\": \"One command line for documentation that is meant to be checked. `manni meta` validates the presence and format of document metadata (Markdown frontmatter and more) against JSON Schema, built for CI. Formerly docmeta.\",\n \"type\": \"module\",\n \"bin\": {\n \"manni\": \"dist/cli.js\",\n \"docmeta\": \"dist/docmeta.js\"\n },\n \"main\": \"dist/index.js\",\n \"module\": \"dist/index.js\",\n \"types\": \"dist/index.d.ts\",\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.js\"\n },\n \"./graph/runtime\": {\n \"types\": \"./dist/graph/runtime.d.ts\",\n \"import\": \"./dist/graph/runtime.js\"\n },\n \"./graph/embed\": {\n \"types\": \"./dist/graph/embed.d.ts\",\n \"import\": \"./dist/graph/embed.js\"\n },\n \"./package.json\": \"./package.json\"\n },\n \"files\": [\n \"dist\",\n \"schemas\",\n \"plugin\",\n \"shapes\",\n \"templates\"\n ],\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/hawkeyexl/manni.git\"\n },\n \"homepage\": \"https://hawkeyexl.github.io/manni/\",\n \"bugs\": {\n \"url\": \"https://github.com/hawkeyexl/manni/issues\"\n },\n \"publishConfig\": {\n \"access\": \"public\"\n },\n \"engines\": {\n \"node\": \">=24\"\n },\n \"scripts\": {\n \"prebuild\": \"npm run check:deps\",\n \"build\": \"node scripts/clean-dist.mjs && tsup\",\n \"dev\": \"node scripts/clean-dist.mjs && tsup --watch\",\n \"pretest\": \"npm run check:deps\",\n \"test\": \"vitest run\",\n \"test:watch\": \"vitest\",\n \"test:graph:real\": \"vitest run --config vitest.graph-real.config.ts\",\n \"test:coverage\": \"vitest run --coverage\",\n \"pretypecheck\": \"npm run check:deps\",\n \"typecheck\": \"tsc --noEmit\",\n \"lint\": \"eslint .\",\n \"check:deps\": \"node scripts/check-deps.mjs\",\n \"query:ui\": \"npm run build && node dist/cli.js meta query --db .manni/meta/query.db && node scripts/query-ui.mjs .manni/meta/query.db\",\n \"check:tgdp-pin\": \"node scripts/lint-check-tgdp-pin.mjs\",\n \"smoke:lint\": \"npm run build && node scripts/lint-smoke.mjs\",\n \"docs:check-cli\": \"node scripts/check-cli-reference.mjs\",\n \"docs:check-action\": \"node scripts/check-action-reference.mjs\",\n \"docs:check-api\": \"node scripts/check-api-reference.mjs\",\n \"docs:check-links\": \"node scripts/check-doc-links.mjs\",\n \"docs:check-docevals\": \"node dist/cli.js docevals run --deterministic-only --no-generate\",\n \"docs:check-graph\": \"node scripts/check-docs-graph.mjs\",\n \"docs:check-tables\": \"node scripts/check-table-rows.mjs\",\n \"docs:check-versions\": \"node scripts/check-versions.mjs\",\n \"docs:sync-versions\": \"node scripts/sync-versions.mjs\",\n \"schemas:sync\": \"node scripts/sync-builtin-schemas.mjs\",\n \"schemas:check\": \"node scripts/check-builtin-schemas.mjs\",\n \"schemas:check-published\": \"node scripts/check-published-schemas.mjs\",\n \"commitlint\": \"commitlint --edit\",\n \"semantic-release\": \"semantic-release\",\n \"prepare\": \"node scripts/prepare.mjs\",\n \"prepublishOnly\": \"npm run build\"\n },\n \"keywords\": [\n \"frontmatter\",\n \"metadata\",\n \"json-schema\",\n \"markdown\",\n \"validation\",\n \"cli\",\n \"ci\",\n \"okf\"\n ],\n \"license\": \"MIT\",\n \"overrides\": {\n \"esbuild\": \"^0.28.2\"\n },\n \"dependencies\": {\n \"@apidevtools/json-schema-ref-parser\": \"^11.9.3\",\n \"@asciidoctor/core\": \"^3.0.4\",\n \"@axe-core/playwright\": \"^4.13.0\",\n \"@hawkeyexl/inference\": \"^0.4.0\",\n \"@inquirer/prompts\": \"^7.10.1\",\n \"@types/n3\": \"^1.26.3\",\n \"@xmldom/xmldom\": \"^0.9.12\",\n \"ajv\": \"^8.17.1\",\n \"ajv-draft-04\": \"^1.0.0\",\n \"ajv-formats\": \"^3.0.1\",\n \"commander\": \"^15.0.0\",\n \"fast-glob\": \"^3.3.2\",\n \"github-slugger\": \"^2.0.0\",\n \"mdast-util-to-string\": \"^4.0.0\",\n \"minisearch\": \"^7.2.0\",\n \"n3\": \"^1.26.0\",\n \"parse5\": \"^8.0.1\",\n \"picocolors\": \"^1.1.1\",\n \"picomatch\": \"^4.0.7\",\n \"playwright-core\": \"^1.63.0\",\n \"rdf-validate-shacl\": \"^0.6.5\",\n \"remark-frontmatter\": \"^5.0.0\",\n \"remark-gfm\": \"^4.0.1\",\n \"remark-mdx\": \"^3.1.1\",\n \"remark-parse\": \"^11.0.0\",\n \"smol-toml\": \"^1.8.0\",\n \"unified\": \"^11.0.5\",\n \"unist-util-visit\": \"^5.1.0\",\n \"yaml\": \"^2.6.1\"\n },\n \"devDependencies\": {\n \"@commitlint/cli\": \"^21.2.2\",\n \"@commitlint/config-conventional\": \"^21.2.2\",\n \"@comunica/query-sparql-rdfjs-lite\": \"^5.3.0\",\n \"@eslint/js\": \"^10.0.1\",\n \"@rdfjs/types\": \"^2.0.1\",\n \"@semantic-release/changelog\": \"^6.0.3\",\n \"@semantic-release/commit-analyzer\": \"^13.0.1\",\n \"@semantic-release/git\": \"^10.0.1\",\n \"@semantic-release/github\": \"^12.0.8\",\n \"@semantic-release/npm\": \"^13.1.5\",\n \"@semantic-release/release-notes-generator\": \"^14.1.1\",\n \"@types/jsonld\": \"^1.5.15\",\n \"@types/mdast\": \"^4.0.4\",\n \"@types/node\": \"^26.3.0\",\n \"@types/picomatch\": \"^4.0.3\",\n \"@types/unist\": \"^3.0.3\",\n \"@types/yauzl\": \"^3.4.0\",\n \"@vitest/coverage-v8\": \"^4.1.11\",\n \"eslint\": \"^10.9.1\",\n \"globals\": \"^17.11.0\",\n \"husky\": \"^9.1.7\",\n \"jsonld\": \"^9.0.0\",\n \"rdfxml-streaming-parser\": \"^3.3.0\",\n \"semantic-release\": \"^25.0.9\",\n \"tsup\": \"^8.3.5\",\n \"typescript\": \"^6.0.3\",\n \"typescript-eslint\": \"^8.68.0\",\n \"vitest\": \"^4.1.11\",\n \"yauzl\": \"^3.4.0\"\n },\n \"peerDependencies\": {\n \"@huggingface/transformers\": \">=4\",\n \"node-llama-cpp\": \"^3.19.0\"\n },\n \"peerDependenciesMeta\": {\n \"@huggingface/transformers\": {\n \"optional\": true\n },\n \"node-llama-cpp\": {\n \"optional\": true\n }\n }\n}\n"],"mappings":"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","names":[]}
|