@dzhechkov/harness-core 0.3.100 → 0.3.102
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/claim-check-hook-policy.d.ts +42 -0
- package/dist/claim-check-hook-policy.d.ts.map +1 -0
- package/dist/claim-check-hook-policy.js +154 -0
- package/dist/claim-check-hook-policy.js.map +1 -0
- package/dist/claim-check.d.ts +21 -0
- package/dist/claim-check.d.ts.map +1 -0
- package/dist/claim-check.js +184 -0
- package/dist/claim-check.js.map +1 -0
- package/dist/feature-adr-claim-gate.d.ts +20 -0
- package/dist/feature-adr-claim-gate.d.ts.map +1 -0
- package/dist/feature-adr-claim-gate.js +28 -0
- package/dist/feature-adr-claim-gate.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/publish.d.ts +17 -0
- package/dist/publish.d.ts.map +1 -1
- package/dist/publish.js +38 -3
- package/dist/publish.js.map +1 -1
- package/package.json +4 -4
- package/src/claim-check-hook-policy.ts +173 -0
- package/src/claim-check.ts +211 -0
- package/src/feature-adr-claim-gate.ts +42 -0
- package/src/index.ts +6 -0
- package/src/publish.ts +53 -3
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/** Options for {@link hookDecision}. */
|
|
2
|
+
export interface HookDecisionOpts {
|
|
3
|
+
/** `'warn'` (DEFAULT — the never-block policy) or `'deny'` (opt-in strict, still doubly guarded). */
|
|
4
|
+
readonly mode?: 'warn' | 'deny';
|
|
5
|
+
/** An `Edit`'s pre-image (`old_string`), used by the new-line deny guard. Absent for a `Write`. */
|
|
6
|
+
readonly oldString?: string;
|
|
7
|
+
}
|
|
8
|
+
/** The decision the `.cjs` adapter renders into hook JSON. */
|
|
9
|
+
export interface HookDecision {
|
|
10
|
+
/** `'allow'` on every default-policy path; `'deny'` only under opt-in strict mode + both guards. */
|
|
11
|
+
readonly action: 'allow' | 'deny';
|
|
12
|
+
/** Model-facing finding report (always ends with the backtick-escape teaching). `null` when clean. */
|
|
13
|
+
readonly additionalContext: string | null;
|
|
14
|
+
/** User-facing summary; populated only when there is a `high` finding. `null` when clean or medium-only. */
|
|
15
|
+
readonly systemMessage: string | null;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* The backtick-escape teaching, appended to EVERY finding report. This is the "escape discoverable
|
|
19
|
+
* from the hook's own output" acceptance criterion — an agent that trips a finding while documenting
|
|
20
|
+
* honesty is told exactly how to comply.
|
|
21
|
+
*/
|
|
22
|
+
export declare const ESCAPE_TEACHING: string;
|
|
23
|
+
/**
|
|
24
|
+
* Is the 1-based `line` inside a fenced ``` ``` ``` code block within `text`?
|
|
25
|
+
* Counts fence toggles strictly BEFORE the line; an odd count ⇒ the line sits inside a fence.
|
|
26
|
+
* Never throws — a non-string / out-of-range line returns `false` (treated as not-fenced).
|
|
27
|
+
*/
|
|
28
|
+
export declare function isFenced(text: string, line: number): boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Is `excerpt` a NEW claim line (guard d)? True when there is no pre-image (`oldString` absent/empty —
|
|
31
|
+
* e.g. a `Write`) or the pre-image does not already contain the excerpt. A trailing clip ellipsis
|
|
32
|
+
* (the engine clips excerpts to 120 chars) is stripped before the containment check so an edited-around
|
|
33
|
+
* long pre-existing line is still recognised. Never throws.
|
|
34
|
+
*/
|
|
35
|
+
export declare function isNewLine(excerpt: string, oldString?: string): boolean;
|
|
36
|
+
/**
|
|
37
|
+
* The pure hook decision. Runs the FROZEN `claimCheck` over the pending text and applies the severity
|
|
38
|
+
* policy. NEVER throws. Under the DEFAULT policy (`mode !== 'deny'`) it NEVER returns `action:'deny'`
|
|
39
|
+
* — there is no code path to a deny unless `mode === 'deny'` AND a `high` finding clears BOTH guards.
|
|
40
|
+
*/
|
|
41
|
+
export declare function hookDecision(text: string, opts?: HookDecisionOpts): HookDecision;
|
|
42
|
+
//# sourceMappingURL=claim-check-hook-policy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claim-check-hook-policy.d.ts","sourceRoot":"","sources":["../src/claim-check-hook-policy.ts"],"names":[],"mappings":"AA2BA,wCAAwC;AACxC,MAAM,WAAW,gBAAgB;IAC/B,qGAAqG;IACrG,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAChC,mGAAmG;IACnG,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,8DAA8D;AAC9D,MAAM,WAAW,YAAY;IAC3B,oGAAoG;IACpG,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC;IAClC,sGAAsG;IACtG,QAAQ,CAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,4GAA4G;IAC5G,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CACvC;AAED;;;;GAIG;AACH,eAAO,MAAM,eAAe,QAIiF,CAAC;AAuB9G;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAgB5D;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAOtE;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,gBAAgB,GAAG,YAAY,CAoDhF"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
//
|
|
3
|
+
// Authoring-time claim-check HOOK POLICY — the pure decision core behind the
|
|
4
|
+
// `.claude/helpers/claim-check-hook.cjs` PreToolUse hook (feature: claim-check-authoring-time).
|
|
5
|
+
//
|
|
6
|
+
// This module does NOT re-implement or fork detection. It is a thin severity-POLICY layer over the
|
|
7
|
+
// FROZEN engine in `./claim-check.ts` (`claimCheck`): it runs `claimCheck(text)` and turns the
|
|
8
|
+
// findings into a hook decision. Its whole job is to resolve the ADR's core tension — a `high`
|
|
9
|
+
// finding (the retracted `100%`/`perfect` framing) must be surfaced, yet an agent legitimately
|
|
10
|
+
// QUOTING that framing while documenting the checker must NEVER be blocked, and the escape (backtick
|
|
11
|
+
// the literal) must be DISCOVERABLE from the output.
|
|
12
|
+
//
|
|
13
|
+
// Resolution (ADR Option A1):
|
|
14
|
+
// • DEFAULT policy (`mode !== 'deny'`) NEVER returns `action:'deny'` — provable by construction, not
|
|
15
|
+
// just by test. This is the load-bearing property NFR-1 names: the hook never blocks the agent.
|
|
16
|
+
// • Every message ALWAYS teaches the backtick escape, so an agent that trips a `high` learns the
|
|
17
|
+
// one-keystroke fix in the same turn and does not thrash.
|
|
18
|
+
// • Opt-in strict mode (`mode:'deny'`) MAY deny a `high` finding, but only when it is (c) NOT inside
|
|
19
|
+
// a fenced code block AND (d) a genuinely NEW line (an excerpt not already present in the Edit's
|
|
20
|
+
// pre-image). Any ambiguity/parse difficulty in the guards falls back to `allow` — never a
|
|
21
|
+
// spurious deny.
|
|
22
|
+
//
|
|
23
|
+
// Pure, never-throw, no I/O — all reading of stdin / files lives in the `.cjs` adapter, mirroring how
|
|
24
|
+
// the `dz claim-check` CLI and `dz publish` gate are thin adapters over the pure engine.
|
|
25
|
+
import { claimCheck } from './claim-check.js';
|
|
26
|
+
/**
|
|
27
|
+
* The backtick-escape teaching, appended to EVERY finding report. This is the "escape discoverable
|
|
28
|
+
* from the hook's own output" acceptance criterion — an agent that trips a finding while documenting
|
|
29
|
+
* honesty is told exactly how to comply.
|
|
30
|
+
*/
|
|
31
|
+
export const ESCAPE_TEACHING = 'If a flagged line is legitimately QUOTING a forbidden claim as an example, wrap the literal in ' +
|
|
32
|
+
'backticks (e.g. a backticked `100% coverage`) — a backticked span reads as a code literal, not an ' +
|
|
33
|
+
'assertion, and is not flagged. That is the fix; do NOT weaken the checker. Otherwise state a ' +
|
|
34
|
+
'measured number vs a baseline, tagged MEASURED and naming a reproducer (npx vitest run, coverage report).';
|
|
35
|
+
/** claimCheck is already never-throw; wrap defensively so hookDecision is never-throw even on abuse. */
|
|
36
|
+
function safeClaimCheck(text) {
|
|
37
|
+
try {
|
|
38
|
+
return claimCheck(text);
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
return { ok: true, findings: [] };
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
function safeBool(fn, fallback) {
|
|
45
|
+
try {
|
|
46
|
+
return fn();
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
return fallback;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
function formatFinding(f) {
|
|
53
|
+
return ' - L' + f.line + ': "' + f.excerpt + '" — ' + f.reason + ' -> ' + f.suggestion;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Is the 1-based `line` inside a fenced ``` ``` ``` code block within `text`?
|
|
57
|
+
* Counts fence toggles strictly BEFORE the line; an odd count ⇒ the line sits inside a fence.
|
|
58
|
+
* Never throws — a non-string / out-of-range line returns `false` (treated as not-fenced).
|
|
59
|
+
*/
|
|
60
|
+
export function isFenced(text, line) {
|
|
61
|
+
if (typeof text !== 'string' || typeof line !== 'number' || !isFinite(line) || line < 1)
|
|
62
|
+
return false;
|
|
63
|
+
const lines = text.split(/\r?\n/);
|
|
64
|
+
const upTo = Math.min(line - 1, lines.length);
|
|
65
|
+
// CommonMark allows BOTH ``` and ~~~ fences, and a fence is closed only by its OWN marker — a
|
|
66
|
+
// ``` inside a ~~~ block is literal content, not a toggle. A naive toggle counter that accepts
|
|
67
|
+
// either marker therefore mis-tracks nesting; track the open marker instead.
|
|
68
|
+
let open = null;
|
|
69
|
+
for (let i = 0; i < upTo; i++) {
|
|
70
|
+
const m = /^\s*(`{3,}|~{3,})/.exec(lines[i] || '');
|
|
71
|
+
if (!m)
|
|
72
|
+
continue;
|
|
73
|
+
const marker = m[1][0];
|
|
74
|
+
if (open === null)
|
|
75
|
+
open = marker;
|
|
76
|
+
else if (open === marker)
|
|
77
|
+
open = null;
|
|
78
|
+
}
|
|
79
|
+
return open !== null;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Is `excerpt` a NEW claim line (guard d)? True when there is no pre-image (`oldString` absent/empty —
|
|
83
|
+
* e.g. a `Write`) or the pre-image does not already contain the excerpt. A trailing clip ellipsis
|
|
84
|
+
* (the engine clips excerpts to 120 chars) is stripped before the containment check so an edited-around
|
|
85
|
+
* long pre-existing line is still recognised. Never throws.
|
|
86
|
+
*/
|
|
87
|
+
export function isNewLine(excerpt, oldString) {
|
|
88
|
+
if (typeof oldString !== 'string' || oldString.length === 0)
|
|
89
|
+
return true;
|
|
90
|
+
if (typeof excerpt !== 'string' || excerpt.length === 0)
|
|
91
|
+
return true;
|
|
92
|
+
let probe = excerpt;
|
|
93
|
+
if (probe.charAt(probe.length - 1) === '…')
|
|
94
|
+
probe = probe.slice(0, -1);
|
|
95
|
+
if (probe.length === 0)
|
|
96
|
+
return true;
|
|
97
|
+
return oldString.indexOf(probe) === -1;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* The pure hook decision. Runs the FROZEN `claimCheck` over the pending text and applies the severity
|
|
101
|
+
* policy. NEVER throws. Under the DEFAULT policy (`mode !== 'deny'`) it NEVER returns `action:'deny'`
|
|
102
|
+
* — there is no code path to a deny unless `mode === 'deny'` AND a `high` finding clears BOTH guards.
|
|
103
|
+
*/
|
|
104
|
+
export function hookDecision(text, opts) {
|
|
105
|
+
const result = safeClaimCheck(text);
|
|
106
|
+
if (!result || result.ok || !Array.isArray(result.findings) || result.findings.length === 0) {
|
|
107
|
+
return { action: 'allow', additionalContext: null, systemMessage: null };
|
|
108
|
+
}
|
|
109
|
+
const denyEnabled = !!(opts && opts.mode === 'deny');
|
|
110
|
+
const oldString = opts ? opts.oldString : undefined;
|
|
111
|
+
const highs = result.findings.filter((f) => f.severity === 'high');
|
|
112
|
+
const mediums = result.findings.filter((f) => f.severity === 'medium');
|
|
113
|
+
const lines = [];
|
|
114
|
+
if (highs.length > 0) {
|
|
115
|
+
lines.push('claim-check flagged ' +
|
|
116
|
+
highs.length +
|
|
117
|
+
' HIGH finding(s) — the retracted perfect/100% framing the Integrity Rule forbids:');
|
|
118
|
+
for (const f of highs)
|
|
119
|
+
lines.push(formatFinding(f));
|
|
120
|
+
}
|
|
121
|
+
if (mediums.length > 0) {
|
|
122
|
+
lines.push('claim-check flagged ' + mediums.length + ' medium finding(s) — untagged accuracy/count claim(s):');
|
|
123
|
+
for (const f of mediums)
|
|
124
|
+
lines.push(formatFinding(f));
|
|
125
|
+
}
|
|
126
|
+
lines.push('');
|
|
127
|
+
lines.push(ESCAPE_TEACHING);
|
|
128
|
+
const additionalContext = lines.join('\n');
|
|
129
|
+
// DEFAULT policy: never deny. A deny is reachable ONLY when denyEnabled AND a high finding clears
|
|
130
|
+
// BOTH guards (outside a fence AND a new line). Any guard exception falls back to allow.
|
|
131
|
+
let action = 'allow';
|
|
132
|
+
if (denyEnabled && highs.length > 0) {
|
|
133
|
+
const blockable = highs.filter((f) => {
|
|
134
|
+
if (safeBool(() => isFenced(text, f.line), false))
|
|
135
|
+
return false;
|
|
136
|
+
return safeBool(() => isNewLine(f.excerpt, oldString), true);
|
|
137
|
+
});
|
|
138
|
+
if (blockable.length > 0)
|
|
139
|
+
action = 'deny';
|
|
140
|
+
}
|
|
141
|
+
let systemMessage = null;
|
|
142
|
+
if (highs.length > 0) {
|
|
143
|
+
systemMessage =
|
|
144
|
+
'claim-check: ' +
|
|
145
|
+
highs.length +
|
|
146
|
+
' HIGH finding(s) (perfect/100% framing) — ' +
|
|
147
|
+
(action === 'deny'
|
|
148
|
+
? 'BLOCKED under DZ_CLAIM_CHECK_HOOK=deny. '
|
|
149
|
+
: 'warning, not a block (set DZ_CLAIM_CHECK_HOOK=deny to enforce). ') +
|
|
150
|
+
'Backtick the literal to quote it as an example, or state a MEASURED number vs a baseline.';
|
|
151
|
+
}
|
|
152
|
+
return { action, additionalContext, systemMessage };
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=claim-check-hook-policy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claim-check-hook-policy.js","sourceRoot":"","sources":["../src/claim-check-hook-policy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/** A single untagged/overstated-claim finding. The pure engine sees only text — no `file` field. */
|
|
2
|
+
export interface ClaimFinding {
|
|
3
|
+
readonly severity: 'high' | 'medium';
|
|
4
|
+
readonly line: number;
|
|
5
|
+
readonly excerpt: string;
|
|
6
|
+
readonly reason: string;
|
|
7
|
+
readonly suggestion: string;
|
|
8
|
+
}
|
|
9
|
+
/** Result of a claim-check pass over one block of text. */
|
|
10
|
+
export interface ClaimCheckResult {
|
|
11
|
+
readonly ok: boolean;
|
|
12
|
+
readonly findings: ClaimFinding[];
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Lint a block of text for untagged or overstated accuracy claims.
|
|
16
|
+
* Pure and never-throws: a non-string or empty input returns `{ ok: true, findings: [] }`.
|
|
17
|
+
*/
|
|
18
|
+
export declare function claimCheck(text: string): ClaimCheckResult;
|
|
19
|
+
/** Convenience: a one-line human summary for CLI output. */
|
|
20
|
+
export declare function summarize(result: ClaimCheckResult): string;
|
|
21
|
+
//# sourceMappingURL=claim-check.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claim-check.d.ts","sourceRoot":"","sources":["../src/claim-check.ts"],"names":[],"mappings":"AAkBA,oGAAoG;AACpG,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAAC;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,2DAA2D;AAC3D,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,QAAQ,EAAE,YAAY,EAAE,CAAC;CACnC;AAuFD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CA6EzD;AAMD,4DAA4D;AAC5D,wBAAgB,SAAS,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAI1D"}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
//
|
|
3
|
+
// Ported from rUv / ruview (`@ruvnet/ruview@0.2.0`, `src/guardrails.js`), (c) rUv / ruview,
|
|
4
|
+
// MIT. Adapted for the dz harness monorepo. The hard-won detection semantics (label-vs-metric
|
|
5
|
+
// disambiguation, short-token `.map`/`map-reduce` guards, the `\b`-free `PERFECT_PCT_RE`, the
|
|
6
|
+
// code-span-scrub asymmetry, and the four-branch check order) are ported VERBATIM with their
|
|
7
|
+
// explanatory comments intact; ONLY the domain vocabulary lists (metric terms, reproducer hints,
|
|
8
|
+
// honest tags) and the human-facing reason/suggestion strings are re-worded from WiFi-sensing
|
|
9
|
+
// (ruview) to a skills/harness monorepo (dz).
|
|
10
|
+
//
|
|
11
|
+
// The dz Integrity Rule (CLAUDE.md) declares "NO shortcuts, fake data, or false claims; ALWAYS
|
|
12
|
+
// verify before claiming success." Today that rule is prose. This module is the static enforcement
|
|
13
|
+
// of it: every quantitative accuracy/coverage/count claim must be tagged MEASURED (with a
|
|
14
|
+
// reproducer) or CLAIMED/SYNTHETIC/ESTIMATED, and the retracted "100% / perfect" framing must
|
|
15
|
+
// never reappear untagged. It is a pure, never-throw, no-I/O module — all file reading lives in the
|
|
16
|
+
// `dz claim-check` CLI adapter and the `dz publish` pre-publish gate, mirroring how `usage.ts`
|
|
17
|
+
// keeps computation pure while the CLI does the reading.
|
|
18
|
+
/** Phrases that signal a quantitative accuracy claim (safe as substrings). */
|
|
19
|
+
const METRIC_TERMS = [
|
|
20
|
+
// Generic accuracy vocabulary kept from ruview.
|
|
21
|
+
'accuracy', 'precision', 'recall',
|
|
22
|
+
'error rate', 'detection rate', 'true positive',
|
|
23
|
+
// dz claim vocabulary — a harness monorepo claims coverage, test counts, catalogue sizes,
|
|
24
|
+
// and performance numbers, not WiFi-sensing PCK/MPJPE.
|
|
25
|
+
'coverage', 'tests passed', 'test count', 'skills', 'commands',
|
|
26
|
+
'packages', 'presets', 'downloads', 'benchmark', 'speedup', 'latency',
|
|
27
|
+
];
|
|
28
|
+
// Short/ambiguous metric tokens (ADR-263 F11): 'map' is usually the English
|
|
29
|
+
// word or a file extension, 'f1'/'o1' collide with finding/option labels.
|
|
30
|
+
// They only count as metric mentions when word-bounded, not a `.map` file
|
|
31
|
+
// reference, and the line (after scrubbing) carries a number — "mAP 62.3" is
|
|
32
|
+
// a claim, "F-numbers map to findings" is not.
|
|
33
|
+
// 'map' additionally must not be a `.map` file suffix or a hyphenated
|
|
34
|
+
// compound ("map-free", "map-reduce") — mAP the metric never appears as either.
|
|
35
|
+
// `\d+ tests` is dz's single most-repeated headline claim ("2136 tests") and was slipping through:
|
|
36
|
+
// the substring term is 'tests passed', so a bare count never fired. Anchor it to a PRECEDING number
|
|
37
|
+
// rather than adding a bare 'test' term — otherwise every `usage.test.ts:42` path reference would
|
|
38
|
+
// register as a metric mention.
|
|
39
|
+
const METRIC_TERMS_SHORT = [
|
|
40
|
+
/(?<![.\w])map\b(?!-)/, /\bf1\b/, /\bauc\b/, /\biou\b/,
|
|
41
|
+
/\b\d[\d,._]*\s+tests?\b/,
|
|
42
|
+
];
|
|
43
|
+
// Finding/option labels (F1, O2, …) count as labels unless the token sits in a
|
|
44
|
+
// metric context: an immediately following score/=/%/digit or colon ("F1: 0.91"),
|
|
45
|
+
// or a number later in the same clause ("F1 reaches 0.91" — an F1-score claim).
|
|
46
|
+
// Bare option refs ("F7 fixes", "O1–O9", "ADR-263 O2") carry no clause number of
|
|
47
|
+
// their own and stay labels. (A surviving 'f1' still only fires as a metric when
|
|
48
|
+
// its scrubbed line actually carries a number — see mentionsMetricTerm.)
|
|
49
|
+
const LABEL_TOKEN_RE = /\b[fo]\d+\b(?!\s*(?:score|=|\d|%|:))(?![^\n.;]*\d)/g;
|
|
50
|
+
const CODE_SPAN_RE = /`[^`]*`/g; // backticked identifiers are code, not claims
|
|
51
|
+
// Markdown link/image TARGETS are machinery, not prose claims. A shields.io badge URL
|
|
52
|
+
// (``) embeds the very words and
|
|
53
|
+
// numbers this checker hunts for, so leaving URLs in produced ~600 findings on this repo — noise
|
|
54
|
+
// that buries the real ones. The link TEXT is kept, so a claim written in prose still fires; the
|
|
55
|
+
// same counts always appear in prose next to the badges. Consequence, accepted knowingly: a number
|
|
56
|
+
// that exists ONLY inside a URL is not checked.
|
|
57
|
+
const MD_URL_RE = /\]\([^)\s]*(?:\s[^)]*)?\)/g;
|
|
58
|
+
const AUTOLINK_RE = /<https?:\/\/[^>]*>|(?<![(<])\bhttps?:\/\/\S+/g;
|
|
59
|
+
/** Strip markdown link/image targets and bare URLs, keeping the surrounding prose. */
|
|
60
|
+
function stripUrls(s) {
|
|
61
|
+
return s.replace(MD_URL_RE, '] ').replace(AUTOLINK_RE, ' ');
|
|
62
|
+
}
|
|
63
|
+
const HAS_NUMBER_RE = /\d/;
|
|
64
|
+
/** Line with code spans and finding/option labels removed. */
|
|
65
|
+
function scrubLine(lower) {
|
|
66
|
+
return lower.replace(CODE_SPAN_RE, ' ').replace(LABEL_TOKEN_RE, ' ');
|
|
67
|
+
}
|
|
68
|
+
function mentionsMetricTerm(lower, scrubbed) {
|
|
69
|
+
if (METRIC_TERMS.some((t) => lower.includes(t)))
|
|
70
|
+
return true;
|
|
71
|
+
if (!HAS_NUMBER_RE.test(scrubbed))
|
|
72
|
+
return false;
|
|
73
|
+
return METRIC_TERMS_SHORT.some((re) => re.test(scrubbed));
|
|
74
|
+
}
|
|
75
|
+
/** Tags that make a claim honest (case-insensitive). */
|
|
76
|
+
// `estimated` agrees with the `estimated: true` honest-uncertainty marker `dz usage` already
|
|
77
|
+
// emits — the two honesty systems must not contradict each other.
|
|
78
|
+
const HONEST_TAGS = ['measured', 'claimed', 'synthetic', 'unvalidated', 'baseline', 'estimated'];
|
|
79
|
+
/** Reproducer references that count as evidence backing a MEASURED claim. */
|
|
80
|
+
const REPRODUCER_HINTS = [
|
|
81
|
+
// Generic evidence hints kept from ruview.
|
|
82
|
+
'baseline', 'reproduce', 'sha256', 'tarball', 'cargo test',
|
|
83
|
+
// Packaging-claim reproducers (npm reviews): the tarball itself.
|
|
84
|
+
'npm pack', 'npm view', 'npm i ', 'npm install',
|
|
85
|
+
// dz reproducers — the actual commands/artifacts that back a dz claim.
|
|
86
|
+
'npm test', 'vitest', 'npm run', 'git rev', 'commit',
|
|
87
|
+
'test output', 'coverage report', 'measured on',
|
|
88
|
+
];
|
|
89
|
+
const PERCENT_RE = /\b(\d{1,3}(?:\.\d+)?)\s?%/g;
|
|
90
|
+
// "perfect" / "100%" framing is the specific retracted claim — always high severity.
|
|
91
|
+
// NOTE: no trailing \b after "%": "%"→" " is non-word→non-word, so a trailing \b
|
|
92
|
+
// never matches and would silently miss "100%". Bare 100% is only damning next to a
|
|
93
|
+
// metric term (see claimCheck); the word phrases are inherently accuracy claims.
|
|
94
|
+
const PERFECT_PCT_RE = /\b100(?:\.0+)?\s?%/;
|
|
95
|
+
const PERFECT_WORD_RE = /perfect accuracy|flawless|never (?:wrong|fails)/i;
|
|
96
|
+
/**
|
|
97
|
+
* Lint a block of text for untagged or overstated accuracy claims.
|
|
98
|
+
* Pure and never-throws: a non-string or empty input returns `{ ok: true, findings: [] }`.
|
|
99
|
+
*/
|
|
100
|
+
export function claimCheck(text) {
|
|
101
|
+
const findings = [];
|
|
102
|
+
if (typeof text !== 'string' || text.length === 0) {
|
|
103
|
+
return { ok: true, findings };
|
|
104
|
+
}
|
|
105
|
+
const lines = text.split(/\r?\n/);
|
|
106
|
+
lines.forEach((raw, i) => {
|
|
107
|
+
const original = raw.trim();
|
|
108
|
+
if (!original)
|
|
109
|
+
return;
|
|
110
|
+
// Analyse the URL-stripped line, but report the ORIGINAL so the excerpt stays recognisable.
|
|
111
|
+
const line = stripUrls(original);
|
|
112
|
+
if (!line.trim())
|
|
113
|
+
return;
|
|
114
|
+
const lower = line.toLowerCase();
|
|
115
|
+
const hasPercent = PERCENT_RE.test(line);
|
|
116
|
+
PERCENT_RE.lastIndex = 0; // reset stateful global regex
|
|
117
|
+
const scrubbed = scrubLine(lower);
|
|
118
|
+
// DELIBERATE DIVERGENCE from ruview, which matched METRIC_TERMS against the UNSCRUBBED line.
|
|
119
|
+
// dz's vocabulary contains path-like words ('packages', 'commands', 'skills'), so a code span
|
|
120
|
+
// such as `packages/x/usage.test.ts:42` registered as a metric mention and produced a false
|
|
121
|
+
// positive on prose that merely cites a file. Matching the code-span-scrubbed line fixes it:
|
|
122
|
+
// "accuracy reached `0.95`" still fires because 'accuracy' sits OUTSIDE the span, while the
|
|
123
|
+
// number check below deliberately keeps reading the un-code-scrubbed line so `0.95` counts.
|
|
124
|
+
const mentionsMetric = mentionsMetricTerm(scrubbed, scrubbed);
|
|
125
|
+
if (!hasPercent && !mentionsMetric)
|
|
126
|
+
return;
|
|
127
|
+
const tagged = HONEST_TAGS.some((t) => lower.includes(t));
|
|
128
|
+
const hasReproducer = REPRODUCER_HINTS.some((h) => lower.includes(h));
|
|
129
|
+
const perfect = PERFECT_WORD_RE.test(line) || (mentionsMetric && PERFECT_PCT_RE.test(line));
|
|
130
|
+
if (perfect && !lower.includes('retract')) {
|
|
131
|
+
findings.push({
|
|
132
|
+
severity: 'high',
|
|
133
|
+
line: i + 1,
|
|
134
|
+
excerpt: clip(original),
|
|
135
|
+
reason: 'States perfect/100% accuracy — this is the exact framing the Integrity Rule forbids.',
|
|
136
|
+
suggestion: 'Replace with a measured number vs a baseline, tagged MEASURED (name the reproducer: npm test, coverage report), or mark the old claim "retracted".',
|
|
137
|
+
});
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
// A quantitative claim needs a number. Digits hidden in a code span still
|
|
141
|
+
// count — "accuracy reached `0.95`" is a claim — so test the line with only
|
|
142
|
+
// finding/option labels stripped, NOT the code-span-scrubbed copy: scrubbing
|
|
143
|
+
// dropped `0.95` and wrongly short-circuited both the untagged and the
|
|
144
|
+
// MEASURED-without-reproducer checks below. A bare metric word in prose
|
|
145
|
+
// ("precision matters here", "every accuracy number must be MEASURED") has no
|
|
146
|
+
// number and is not a taggable claim (ADR-263 F11).
|
|
147
|
+
if (!hasPercent && !HAS_NUMBER_RE.test(lower.replace(LABEL_TOKEN_RE, ' ')))
|
|
148
|
+
return;
|
|
149
|
+
// A metric/percent with no honesty tag at all.
|
|
150
|
+
if (!tagged) {
|
|
151
|
+
findings.push({
|
|
152
|
+
severity: 'medium',
|
|
153
|
+
line: i + 1,
|
|
154
|
+
excerpt: clip(original),
|
|
155
|
+
reason: 'Accuracy claim is not tagged MEASURED / CLAIMED / SYNTHETIC / ESTIMATED.',
|
|
156
|
+
suggestion: 'Tag it. If MEASURED, name the reproducer (npm test, coverage report, git rev, npm view).',
|
|
157
|
+
});
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
// Tagged MEASURED but cites no reproducer — still a gap (reached now even
|
|
161
|
+
// when the only number is inside a code span, e.g. "accuracy `0.97` (MEASURED)").
|
|
162
|
+
if (lower.includes('measured') && !hasReproducer) {
|
|
163
|
+
findings.push({
|
|
164
|
+
severity: 'medium',
|
|
165
|
+
line: i + 1,
|
|
166
|
+
excerpt: clip(original),
|
|
167
|
+
reason: 'Tagged MEASURED but cites no reproducer/evidence.',
|
|
168
|
+
suggestion: 'Add the evidence path: npm test output, a coverage report, npm view, or a git rev/commit.',
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
return { ok: findings.length === 0, findings };
|
|
173
|
+
}
|
|
174
|
+
function clip(s, n = 120) {
|
|
175
|
+
return s.length > n ? `${s.slice(0, n - 1)}…` : s;
|
|
176
|
+
}
|
|
177
|
+
/** Convenience: a one-line human summary for CLI output. */
|
|
178
|
+
export function summarize(result) {
|
|
179
|
+
if (result.ok)
|
|
180
|
+
return 'claim-check: PASS — no untagged or overstated accuracy claims.';
|
|
181
|
+
const high = result.findings.filter((f) => f.severity === 'high').length;
|
|
182
|
+
return `claim-check: ${result.findings.length} finding(s) (${high} high) — accuracy claims need MEASURED/CLAIMED tags + a reproducer.`;
|
|
183
|
+
}
|
|
184
|
+
//# sourceMappingURL=claim-check.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claim-check.js","sourceRoot":"","sources":["../src/claim-check.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/** The finding counts the Step-8 QE agent reported from `dz claim-check`. */
|
|
2
|
+
export interface Step8ClaimCounts {
|
|
3
|
+
readonly findings: number;
|
|
4
|
+
readonly high: number;
|
|
5
|
+
readonly medium: number;
|
|
6
|
+
}
|
|
7
|
+
/** The additive Step-8 result field: the counts (or `null` when not run) plus a human summary line. */
|
|
8
|
+
export interface Step8ClaimGate {
|
|
9
|
+
/** `null` ⇒ the QE agent did not / could not run claim-check — an HONEST gap, never a false zero. */
|
|
10
|
+
readonly claimCheck: Step8ClaimCounts | null;
|
|
11
|
+
/** One-line human summary folded into logs. */
|
|
12
|
+
readonly note: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Turn the claim-check counts the QE agent reported into the additive result field + a note.
|
|
16
|
+
* `null`/absent counts yield an honest "not run" note — never a fabricated "0 findings" that would
|
|
17
|
+
* read like a clean pass. Pure, never-throws. This body is inlined verbatim into the workflow.
|
|
18
|
+
*/
|
|
19
|
+
export declare function step8ClaimGate(counts: Step8ClaimCounts | null): Step8ClaimGate;
|
|
20
|
+
//# sourceMappingURL=feature-adr-claim-gate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feature-adr-claim-gate.d.ts","sourceRoot":"","sources":["../src/feature-adr-claim-gate.ts"],"names":[],"mappings":"AAkBA,6EAA6E;AAC7E,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,uGAAuG;AACvG,MAAM,WAAW,cAAc;IAC7B,qGAAqG;IACrG,QAAQ,CAAC,UAAU,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC7C,+CAA+C;IAC/C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,GAAG,cAAc,CAG9E"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
//
|
|
3
|
+
// feature-adr Step-8 claim-gate — the pure decision core for Deliverable B (feature:
|
|
4
|
+
// claim-check-authoring-time). QE reports are where untagged quantitative claims are BORN ("1094
|
|
5
|
+
// tests pass" with no tag and no reproducer). Step 8 of the feature-adr workflow runs
|
|
6
|
+
// `dz claim-check <FDIR>/08_qe_report.md --json --fail-on none` (in the QE agent's Bash tool, NOT
|
|
7
|
+
// here — this module does NO I/O) and reports the counts. This function folds those counts into an
|
|
8
|
+
// ADDITIVE result field plus a one-line human summary.
|
|
9
|
+
//
|
|
10
|
+
// Advisory only: it never changes the QE grade and never blocks the pipeline (mirroring the publish
|
|
11
|
+
// gate's warn default and the reward-learning "memory/QE side-channels never block" rule).
|
|
12
|
+
//
|
|
13
|
+
// Per the pure-core convention (`feature-adr-routing.ts`), this named function's BODY is inlined
|
|
14
|
+
// byte-equivalently into `.claude/workflows/feature-adr.js` (and its byte-identical
|
|
15
|
+
// skills-feature-adr template mirror); `feature-adr-model-routing.test.ts` asserts the inline copy
|
|
16
|
+
// matches this module body (drift guard). The body is written parser-safe (string `+` concat,
|
|
17
|
+
// explicit `if`/return, object literals — NO template literals) so the same source inlines verbatim.
|
|
18
|
+
/**
|
|
19
|
+
* Turn the claim-check counts the QE agent reported into the additive result field + a note.
|
|
20
|
+
* `null`/absent counts yield an honest "not run" note — never a fabricated "0 findings" that would
|
|
21
|
+
* read like a clean pass. Pure, never-throws. This body is inlined verbatim into the workflow.
|
|
22
|
+
*/
|
|
23
|
+
export function step8ClaimGate(counts) {
|
|
24
|
+
if (!counts)
|
|
25
|
+
return { claimCheck: null, note: 'claim-check: not run (no counts reported)' };
|
|
26
|
+
return { claimCheck: counts, note: counts.findings + ' finding(s) (' + counts.high + ' high) in 08_qe_report.md' };
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=feature-adr-claim-gate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feature-adr-claim-gate.js","sourceRoot":"","sources":["../src/feature-adr-claim-gate.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,EAAE;AACF,qFAAqF;AACrF,iGAAiG;AACjG,sFAAsF;AACtF,kGAAkG;AAClG,mGAAmG;AACnG,uDAAuD;AACvD,EAAE;AACF,oGAAoG;AACpG,2FAA2F;AAC3F,EAAE;AACF,iGAAiG;AACjG,oFAAoF;AACpF,mGAAmG;AACnG,8FAA8F;AAC9F,qGAAqG;AAiBrG;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,MAA+B;IAC5D,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,2CAA2C,EAAE,CAAA;IAC3F,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,QAAQ,GAAG,eAAe,GAAG,MAAM,CAAC,IAAI,GAAG,2BAA2B,EAAE,CAAA;AACpH,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -45,6 +45,12 @@ export type { PluginManifest } from './plugin.js';
|
|
|
45
45
|
export type { SetupOptions, SetupResult, SetupStep } from './setup.js';
|
|
46
46
|
export type { PretrainResult, DetectedTech } from './pretrain.js';
|
|
47
47
|
export type { RecommendationReport, SkillRecommendation } from './recommend.js';
|
|
48
|
+
export { claimCheck, summarize } from './claim-check.js';
|
|
49
|
+
export type { ClaimFinding, ClaimCheckResult } from './claim-check.js';
|
|
50
|
+
export { hookDecision, isFenced, isNewLine, ESCAPE_TEACHING } from './claim-check-hook-policy.js';
|
|
51
|
+
export type { HookDecision, HookDecisionOpts } from './claim-check-hook-policy.js';
|
|
52
|
+
export { step8ClaimGate } from './feature-adr-claim-gate.js';
|
|
53
|
+
export type { Step8ClaimCounts, Step8ClaimGate } from './feature-adr-claim-gate.js';
|
|
48
54
|
export { discoverPackages, publishPackages, bumpPatch, compareVersions, findUnpackagedSkills, orderByDependencies, syncReadmeVersion } from './publish.js';
|
|
49
55
|
export { fetchAllDownloads } from './downloads.js';
|
|
50
56
|
export type { PackageDownloads, DownloadsReport } from './downloads.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -29,6 +29,9 @@ export { DEFAULT_EMBED_MODEL, LEGACY_EMBED_MODEL, DEFAULT_EMBED_DIM, KNOWN_EMBED
|
|
|
29
29
|
export { putBookKnowledge, queryBookKnowledge, bookKbPath } from './book-kb.js';
|
|
30
30
|
export { brainHome, brainBooksPath, brainAgentdbPath, brainRegistryPath, readRegistry, writeRegistry, listBrain, promoteProjectToBrain, updateBrainSource, queryBrain, searchBrainVectors, reindexBrainVectors, rerankHits, groundPrompt, expandKu, buildPrimer, writePrimer, readBookKus, exportBrainSlice, importBrainSlice, registerKusToBrain, } from './brain.js';
|
|
31
31
|
export { generatePlugin } from './plugin.js';
|
|
32
|
+
export { claimCheck, summarize } from './claim-check.js';
|
|
33
|
+
export { hookDecision, isFenced, isNewLine, ESCAPE_TEACHING } from './claim-check-hook-policy.js';
|
|
34
|
+
export { step8ClaimGate } from './feature-adr-claim-gate.js';
|
|
32
35
|
export { discoverPackages, publishPackages, bumpPatch, compareVersions, findUnpackagedSkills, orderByDependencies, syncReadmeVersion } from './publish.js';
|
|
33
36
|
export { fetchAllDownloads } from './downloads.js';
|
|
34
37
|
export { discoverInstalled, checkUpgrades } from './upgrade.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/publish.d.ts
CHANGED
|
@@ -11,6 +11,15 @@ export interface PublishResult {
|
|
|
11
11
|
readonly newVersion: string;
|
|
12
12
|
readonly status: 'published' | 'skipped' | 'error';
|
|
13
13
|
readonly error?: string | undefined;
|
|
14
|
+
/**
|
|
15
|
+
* Pre-publish claim-check summary for this package's README, present only when the
|
|
16
|
+
* opt-in `claimCheck` gate ran (`'warn'`/`'block'`). Additive: absent by default so an
|
|
17
|
+
* unmodified `publishPackages` call is byte-compatible with pre-gate behavior.
|
|
18
|
+
*/
|
|
19
|
+
readonly claimCheck?: {
|
|
20
|
+
readonly findings: number;
|
|
21
|
+
readonly high: number;
|
|
22
|
+
} | undefined;
|
|
14
23
|
}
|
|
15
24
|
/** Full publish report. */
|
|
16
25
|
export interface PublishReport {
|
|
@@ -79,5 +88,13 @@ export declare function publishPackages(monorepoRoot: string, opts?: {
|
|
|
79
88
|
dryRun?: boolean | undefined;
|
|
80
89
|
filter?: string[] | undefined;
|
|
81
90
|
bumpOnly?: boolean | undefined;
|
|
91
|
+
/**
|
|
92
|
+
* Pre-publish claim-check gate over each package's README (ADR-001). Default `'warn'`:
|
|
93
|
+
* records the finding count on the result but NEVER changes publish status — additive, so the
|
|
94
|
+
* existing publish path and its tests are unaffected. `'error'` flips ONLY a package with a
|
|
95
|
+
* `high` finding to `status: 'error'`, leaving the rest of the batch unaffected. `'off'`
|
|
96
|
+
* disables the gate entirely (no `claimCheck` field is emitted).
|
|
97
|
+
*/
|
|
98
|
+
claimGate?: 'off' | 'warn' | 'error' | undefined;
|
|
82
99
|
}): PublishReport;
|
|
83
100
|
//# sourceMappingURL=publish.d.ts.map
|
package/dist/publish.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../src/publish.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../src/publish.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,mDAAmD;AACnD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,GAAG,OAAO,CAAC;IACnD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC;;;;OAIG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE;QAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;CACxF;AAED,2BAA2B;AAC3B,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,QAAQ,EAAE,SAAS,aAAa,EAAE,CAAC;IAC5C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAED,0CAA0C;AAC1C,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAcjD;AAED,mFAAmF;AACnF,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAK5D;AAsBD,oDAAoD;AACpD,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAAE,CAavG;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAqB9D;AAiBD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,SAAS;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAmB3F;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CASzG;AAED,6DAA6D;AAC7D,wBAAgB,eAAe,CAC7B,YAAY,EAAE,MAAM,EACpB,IAAI,GAAE;IACJ,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC9B,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/B;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;CAC7C,GACL,aAAa,CAiIf"}
|