@vibe-agent-toolkit/cli 0.2.0-rc.8 → 0.2.0-rc.9
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/commands/audit/provenance.d.ts.map +1 -1
- package/dist/commands/audit/provenance.js +4 -3
- package/dist/commands/audit/provenance.js.map +1 -1
- package/dist/commands/build.d.ts.map +1 -1
- package/dist/commands/build.js +2 -1
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/cache/clear.d.ts +17 -3
- package/dist/commands/cache/clear.d.ts.map +1 -1
- package/dist/commands/cache/clear.js +17 -3
- package/dist/commands/cache/clear.js.map +1 -1
- package/dist/commands/cache/index.d.ts.map +1 -1
- package/dist/commands/cache/index.js +19 -10
- package/dist/commands/cache/index.js.map +1 -1
- package/dist/commands/claude/context.d.ts +2 -2
- package/dist/commands/claude/context.js +4 -4
- package/dist/commands/claude/context.js.map +1 -1
- package/dist/commands/claude/index.d.ts +12 -11
- package/dist/commands/claude/index.d.ts.map +1 -1
- package/dist/commands/claude/index.js +14 -16
- package/dist/commands/claude/index.js.map +1 -1
- package/dist/commands/claude/marketplace/git-publish.d.ts.map +1 -1
- package/dist/commands/claude/marketplace/git-publish.js +19 -10
- package/dist/commands/claude/marketplace/git-publish.js.map +1 -1
- package/dist/commands/claude/marketplace/validate.js +2 -2
- package/dist/commands/claude/marketplace/validate.js.map +1 -1
- package/dist/commands/claude/org/skills.js +8 -8
- package/dist/commands/claude/org/skills.js.map +1 -1
- package/dist/commands/claude/plugin/build.d.ts.map +1 -1
- package/dist/commands/claude/plugin/build.js +11 -21
- package/dist/commands/claude/plugin/build.js.map +1 -1
- package/dist/commands/claude/plugin/plugin-files.js +3 -3
- package/dist/commands/claude/plugin/plugin-files.js.map +1 -1
- package/dist/commands/consistency-check.d.ts +11 -5
- package/dist/commands/consistency-check.d.ts.map +1 -1
- package/dist/commands/consistency-check.js +113 -78
- package/dist/commands/consistency-check.js.map +1 -1
- package/dist/commands/resources/check-progress.d.ts +6 -0
- package/dist/commands/resources/check-progress.d.ts.map +1 -1
- package/dist/commands/resources/check-progress.js +10 -2
- package/dist/commands/resources/check-progress.js.map +1 -1
- package/dist/commands/resources/check.d.ts +182 -203
- package/dist/commands/resources/check.d.ts.map +1 -1
- package/dist/commands/resources/check.js +272 -248
- package/dist/commands/resources/check.js.map +1 -1
- package/dist/commands/resources/index.d.ts.map +1 -1
- package/dist/commands/resources/index.js +140 -23
- package/dist/commands/resources/index.js.map +1 -1
- package/dist/commands/resources/query.d.ts +2 -2
- package/dist/commands/resources/query.d.ts.map +1 -1
- package/dist/commands/resources/query.js +20 -10
- package/dist/commands/resources/query.js.map +1 -1
- package/dist/commands/skill/test/run.js +3 -3
- package/dist/commands/skill/test/run.js.map +1 -1
- package/dist/commands/skills/build.d.ts +34 -21
- package/dist/commands/skills/build.d.ts.map +1 -1
- package/dist/commands/skills/build.js +99 -50
- package/dist/commands/skills/build.js.map +1 -1
- package/dist/commands/skills/skill-discovery.d.ts +15 -13
- package/dist/commands/skills/skill-discovery.d.ts.map +1 -1
- package/dist/commands/skills/skill-discovery.js +23 -4
- package/dist/commands/skills/skill-discovery.js.map +1 -1
- package/dist/commands/validate.d.ts.map +1 -1
- package/dist/commands/validate.js +31 -8
- package/dist/commands/validate.js.map +1 -1
- package/dist/commands/verify.d.ts +10 -4
- package/dist/commands/verify.d.ts.map +1 -1
- package/dist/commands/verify.js +92 -65
- package/dist/commands/verify.js.map +1 -1
- package/dist/report-schemas.d.ts.map +1 -1
- package/dist/report-schemas.js +0 -2
- package/dist/report-schemas.js.map +1 -1
- package/dist/skill-resolution/classify.js +2 -2
- package/dist/skill-resolution/classify.js.map +1 -1
- package/dist/skill-resolution/resolve-skill-reference.d.ts.map +1 -1
- package/dist/skill-resolution/resolve-skill-reference.js +48 -52
- package/dist/skill-resolution/resolve-skill-reference.js.map +1 -1
- package/dist/utils/claude-context-lens.d.ts +34 -0
- package/dist/utils/claude-context-lens.d.ts.map +1 -0
- package/dist/utils/claude-context-lens.js +39 -0
- package/dist/utils/claude-context-lens.js.map +1 -0
- package/dist/utils/projection-lenses.d.ts +98 -0
- package/dist/utils/projection-lenses.d.ts.map +1 -0
- package/dist/utils/projection-lenses.js +203 -0
- package/dist/utils/projection-lenses.js.map +1 -0
- package/dist/utils/projection-query.d.ts +38 -14
- package/dist/utils/projection-query.d.ts.map +1 -1
- package/dist/utils/projection-query.js +78 -17
- package/dist/utils/projection-query.js.map +1 -1
- package/dist/utils/projection-store.d.ts +61 -42
- package/dist/utils/projection-store.d.ts.map +1 -1
- package/dist/utils/projection-store.js +155 -59
- package/dist/utils/projection-store.js.map +1 -1
- package/dist/utils/relation-limits.d.ts +50 -0
- package/dist/utils/relation-limits.d.ts.map +1 -0
- package/dist/utils/relation-limits.js +50 -0
- package/dist/utils/relation-limits.js.map +1 -0
- package/dist/utils/skill-discovery.d.ts.map +1 -1
- package/dist/utils/skill-discovery.js +2 -1
- package/dist/utils/skill-discovery.js.map +1 -1
- package/dist/utils/skill-packaging-config.d.ts +38 -3
- package/dist/utils/skill-packaging-config.d.ts.map +1 -1
- package/dist/utils/skill-packaging-config.js +28 -3
- package/dist/utils/skill-packaging-config.js.map +1 -1
- package/package.json +16 -16
- package/schemas/resources-check.json +43 -0
- package/dist/commands/claude/budget.d.ts +0 -269
- package/dist/commands/claude/budget.d.ts.map +0 -1
- package/dist/commands/claude/budget.js +0 -507
- package/dist/commands/claude/budget.js.map +0 -1
- package/dist/utils/context-budget-issues.d.ts +0 -108
- package/dist/utils/context-budget-issues.d.ts.map +0 -1
- package/dist/utils/context-budget-issues.js +0 -280
- package/dist/utils/context-budget-issues.js.map +0 -1
- package/schemas/claude-budget.json +0 -197
|
@@ -1,167 +1,34 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `vat resources check` — run the project's own
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* `
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
* The same class one level further out, and the one that shipped. `checksRun` is
|
|
32
|
-
* the denominator of RULES; nothing counted the ROWS, so a repository whose
|
|
33
|
-
* enumeration came back empty — a broad `.gitignore`, a shallow or sparse CI
|
|
34
|
-
* checkout, a root that resolved somewhere else — ran every declared check over
|
|
35
|
-
* nothing and reported `status: success` on exit 0 with empty stderr. Population
|
|
36
|
-
* declines ignored members rather than flagging them, so the tables held no
|
|
37
|
-
* trace of it either.
|
|
38
|
-
*
|
|
39
|
-
* So the population's size is published (`membersEnumerated`), and a run whose
|
|
40
|
-
* checks executed over zero members is an ERROR under the same non-overridable
|
|
41
|
-
* code as a broken statement — see {@link emptyCorpusFinding}. A gate that
|
|
42
|
-
* asserts nothing over nothing has not passed.
|
|
43
|
-
*
|
|
44
|
-
* ## 🔑 An unknown `--check` name is a refusal, not an empty pass
|
|
45
|
-
*
|
|
46
|
-
* The same failure class one flag over: a filter that matched nothing ran nothing
|
|
47
|
-
* and exited 0. `requireDeclaredCheck` refuses it before the crawl, naming the
|
|
48
|
-
* declared set. A gate that cannot fail is worse than no gate.
|
|
49
|
-
*
|
|
50
|
-
* ## 🔑 NO checks at all is the same refusal, and the one that shipped longest
|
|
51
|
-
*
|
|
52
|
-
* A project with a valid config and no `checks:` block reported `status:
|
|
53
|
-
* success`, `checksRun: 0`, exit 0 — so DELETING the `checks:` block silently
|
|
54
|
-
* deleted the gate and nothing anywhere said so. A gate that checked nothing is
|
|
55
|
-
* indistinguishable from a gate that was removed, and the entire argument for
|
|
56
|
-
* having these gates is that you never let those two look alike. It is now a
|
|
57
|
-
* `RESOURCE_CHECK_BROKEN` error like the other three — see
|
|
58
|
-
* {@link noCheckRanFinding}, and `RUN_INTEGRITY_CODE` for why one code
|
|
59
|
-
* covers all four. Declaring no checks is a legitimate CHOICE; running a gate
|
|
60
|
-
* that can only pass is not, so the remedy is to take the command out of the
|
|
61
|
-
* pipeline.
|
|
62
|
-
*
|
|
63
|
-
* ## 🔑 SQL is the surface a user OPTED IN to, so no BUILT-IN check may be SQL
|
|
64
|
-
*
|
|
65
|
-
* Every check this verb runs is adopter-declared: {@link checkCommand} reads
|
|
66
|
-
* `config?.resources?.checks` and nothing else, and warns loudly when a project
|
|
67
|
-
* declares none. There are no built-ins, and the one way to end that quietly is
|
|
68
|
-
* to author the first one as SQL. A default-on rule written as a statement makes
|
|
69
|
-
* the engine, the projection and the population mandatory for everyone who
|
|
70
|
-
* inherits it, without anybody deciding that. So: **built-ins are TypeScript
|
|
71
|
-
* predicates over the projection's row model.** SQL stays the two places a user
|
|
72
|
-
* asked for it — this verb's declared checks, and `vat resources query`.
|
|
73
|
-
*
|
|
74
|
-
* ⚠️ The engine today is `node:sqlite`, built into Node, so the thing at stake is
|
|
75
|
-
* not an install — it is the POPULATION. On an ~11,700-member adopter tree
|
|
76
|
-
* building the projection is **>99.9%** of a check run (16.5 s cold, ~1.3 s from
|
|
77
|
-
* the store) against **0.0008–0.004 s** for the statements themselves; see
|
|
78
|
-
* `vat-knowledge-resources.md`, which carries that measurement. That is exactly
|
|
79
|
-
* the cost "What this does NOT do" below refuses to put on every adopter's
|
|
80
|
-
* pre-commit path, and a default-on SQL check would put it there without the
|
|
81
|
-
* decision. The INSTALL cost is deferred rather than gone: the open question
|
|
82
|
-
* about a columnar engine is a 108 MB platform binding on a published toolkit,
|
|
83
|
-
* and this invariant is what keeps that question still answerable either way.
|
|
84
|
-
*
|
|
85
|
-
* ## 🔑 The DEFAULT check set belongs to the pipeline, not to the config file
|
|
86
|
-
*
|
|
87
|
-
* A directory with no `vibe-agent-toolkit.config.yaml` must run exactly the same
|
|
88
|
-
* default-on checks as one with a config; config only ADDS to that set or
|
|
89
|
-
* OVERRIDES a severity in it. This is load-bearing rather than a convenience:
|
|
90
|
-
* *"'default-on error' is meaningless as a category if being default-on requires
|
|
91
|
-
* a config file to say so."*
|
|
92
|
-
*
|
|
93
|
-
* It is therefore a constraint on WHERE the defaults live in code, not only on
|
|
94
|
-
* what they are. They cannot be defaulted into the parsed config object, because
|
|
95
|
-
* an absent config is `undefined` and every default would vanish with it — for
|
|
96
|
-
* the project that never wrote one, which is the population the category exists
|
|
97
|
-
* for. The rest of VAT already behaves this way and is the shape to match:
|
|
98
|
-
* `vat audit` completes its entire scan first and reads config only to apply
|
|
99
|
-
* severity overrides, warning and CONTINUING when the file cannot be read; and
|
|
100
|
-
* `loadResourcesWithConfig` hands `vat resources validate` a registry whose
|
|
101
|
-
* built-in validators run whether `loadConfig` returned a config or nothing.
|
|
102
|
-
* This verb has no defaults yet, so the invariant is a rule for the first one —
|
|
103
|
-
* and the day it is written is the easiest day to break it.
|
|
104
|
-
*
|
|
105
|
-
* ## Keeping a TypeScript check and its SQL twin: two good reasons, one trap
|
|
106
|
-
*
|
|
107
|
-
* The proposal was "write the predicate twice, in TypeScript and in SQL, and run
|
|
108
|
-
* whichever is faster". Two thirds of it are worth having.
|
|
109
|
-
*
|
|
110
|
-
* ✅ **As documentation.** An SQL twin is executable documentation of the row
|
|
111
|
-
* model, and strictly better than prose about it: prose can describe a column
|
|
112
|
-
* that no longer exists and never say so, while a statement stops compiling —
|
|
113
|
-
* which this verb reports as `RESOURCE_CHECK_BROKEN` rather than as a skip.
|
|
114
|
-
*
|
|
115
|
-
* ✅ **As a differential oracle.** Run both over the frozen corpus and assert
|
|
116
|
-
* IDENTICAL findings. That is the only thing which makes a dual implementation
|
|
117
|
-
* better than a single one rather than worse: two implementations with no
|
|
118
|
-
* mandatory differential test are simply two places for one rule to be wrong.
|
|
119
|
-
* Apply it selectively, to genuinely relational checks — done by default, every
|
|
120
|
-
* new rule costs three artifacts instead of one.
|
|
121
|
-
*
|
|
122
|
-
* ⛔ **As a runtime optimizer — rejected, on two INDEPENDENT grounds.** It would
|
|
123
|
-
* essentially never choose SQL: `buildResourceProjection` hands the rows back in
|
|
124
|
-
* memory before the ephemeral database exists at all, so the TypeScript arm is a
|
|
125
|
-
* for-loop over data already in hand, and the SQL arm's whole measured share of a
|
|
126
|
-
* run is the 0.0008–0.004 s above. A scheduler would be choosing between two
|
|
127
|
-
* arms of the 0.1%. And it reintroduces the dependency through the back door: an
|
|
128
|
-
* optimizer that MAY choose SQL means SQL MAY be needed at check time, which for
|
|
129
|
-
* anyone shipping the thing is the same as needed. **Optionality is not a
|
|
130
|
-
* property you can keep while also letting a scheduler reach for the optional
|
|
131
|
-
* thing.**
|
|
132
|
-
*
|
|
133
|
-
* ## 🔑 Adopter SQL runs UNSANDBOXED on purpose — and contributed SQL is not adopter SQL
|
|
134
|
-
*
|
|
135
|
-
* What a statement may BE is gated hard, and documented where it is enforced:
|
|
136
|
-
* `assertIsQuery` and `detachForeignSchemas` in
|
|
137
|
-
* `packages/projection-sqlite/src/store.ts` refuse `ATTACH` and `PRAGMA`, with
|
|
138
|
-
* the measured cross-repository leak that motivated both, and CHANGELOG.md's
|
|
139
|
-
* `--budget` entry carries why nothing inside this process can interrupt a
|
|
140
|
-
* runaway statement. Read those; do not restate them here.
|
|
141
|
-
*
|
|
142
|
-
* What is written down nowhere else is that everything PAST those gates is
|
|
143
|
-
* unsandboxed deliberately. A `.sql` file the adopter points their own config at
|
|
144
|
-
* is adopter code, at the same trust boundary as their eslint config: they wrote
|
|
145
|
-
* it or they chose to inherit it, and VAT is not the thing standing between a
|
|
146
|
-
* project and its own repository.
|
|
147
|
-
*
|
|
148
|
-
* 🚨 That reasoning covers exactly ONE trust domain, and the rule scoping it is
|
|
149
|
-
* the other half: **contributed SQL is a reviewed EXAMPLE, never an
|
|
150
|
-
* auto-executed check.** A contribution channel is third-party text, and a
|
|
151
|
-
* statement arriving through one has none of the "they chose it" the paragraph
|
|
152
|
-
* above rests on. Ship it as documentation an adopter copies into their own
|
|
153
|
-
* `resources.checks` deliberately. One paragraph must not be stretched to cover
|
|
154
|
-
* both domains.
|
|
155
|
-
*
|
|
156
|
-
* ## What this does NOT do
|
|
157
|
-
*
|
|
158
|
-
* It does not fold into `vat resources validate`. That command is on every
|
|
159
|
-
* adopter's pre-commit path, and adding a store-backed population to it is a
|
|
160
|
-
* cost and a risk that deserves its own decision with its own evidence. Wiring
|
|
161
|
-
* this into CI is one line in a workflow; making it unavoidable is not this
|
|
162
|
-
* change's call to make.
|
|
2
|
+
* `vat resources check` — run the project's own assertions over its resource
|
|
3
|
+
* projection, as a gate.
|
|
4
|
+
*
|
|
5
|
+
* The invariants this file implements are written down once, in
|
|
6
|
+
* `docs/architecture/cli.md` under "`vat resources check [path]`". Read that
|
|
7
|
+
* before changing anything here; the headlines, so a reader knows when to:
|
|
8
|
+
*
|
|
9
|
+
* - 🔑 **Four ways to check nothing are all refusals**, at error severity under
|
|
10
|
+
* the non-overridable `RESOURCE_CHECK_BROKEN`: a statement that will not run
|
|
11
|
+
* (the `catch` in `runUnits`), a corpus that enumerated empty
|
|
12
|
+
* ({@link emptyCorpusFinding}), a `--check` name nothing declares
|
|
13
|
+
* (`requireKnownCheck`), and not one check executed at all
|
|
14
|
+
* ({@link noCheckRanFinding}, derived in {@link buildCheckOutputData} so an
|
|
15
|
+
* emptied `BUILTIN_CHECKS` cannot publish a clean document).
|
|
16
|
+
* - ⚠️ That last one does NOT make the step always able to fail: the only
|
|
17
|
+
* built-in ships at `info`. Do not invent a second refusal for it — that
|
|
18
|
+
* would refuse the no-config run the default set exists to serve.
|
|
19
|
+
* - 🔑 **No built-in check may be SQL.** {@link checkCommand} reads
|
|
20
|
+
* `config?.resources?.checks` and nothing else for statements; built-ins are
|
|
21
|
+
* TypeScript predicates over the row model, and a built-in's `sqlTwin` is
|
|
22
|
+
* documentation an adopter copies, never executed here.
|
|
23
|
+
* - 🔑 **The default set belongs to the pipeline, not the config file.**
|
|
24
|
+
* `BUILTIN_CHECKS` reaches {@link runProjectChecks} as a REQUIRED `builtins`
|
|
25
|
+
* argument via {@link runOutcome}; nothing on that path reads `config`.
|
|
26
|
+
* - 🚨 **Adopter SQL runs unsandboxed on purpose, and contributed SQL is not
|
|
27
|
+
* adopter SQL** — a contributed statement ships as a reviewed example.
|
|
28
|
+
* - ⛔ A TypeScript/SQL twin is documentation and a differential oracle, never
|
|
29
|
+
* a runtime optimizer to schedule between.
|
|
163
30
|
*/
|
|
164
|
-
import { type ResourceCheck } from '@vibe-agent-toolkit/resources';
|
|
31
|
+
import { type BoundBuiltinCheck, type ResourceCheck } from '@vibe-agent-toolkit/resources';
|
|
165
32
|
import { type Report, type ValidationIssue } from '@vibe-agent-toolkit/schema';
|
|
166
33
|
import { z } from 'zod';
|
|
167
34
|
import { type SeverityOverrides } from '../../utils/issue-severity.js';
|
|
@@ -199,33 +66,27 @@ interface CheckOptions {
|
|
|
199
66
|
/**
|
|
200
67
|
* What one declared check cost, and what it found.
|
|
201
68
|
*
|
|
202
|
-
*
|
|
203
|
-
*
|
|
204
|
-
*
|
|
205
|
-
*
|
|
206
|
-
* check in the run, so folding that shared setup into each rule would make N
|
|
207
|
-
* cheap rules look expensive and make the per-rule numbers sum to N times a cost
|
|
208
|
-
* paid once. It is published separately instead — `populationSecs` beside
|
|
209
|
-
* `population` in the document — so a reader can reconcile the parts against
|
|
210
|
-
* `durationSecs` rather than inferring the remainder and attributing it to
|
|
211
|
-
* whichever rule they happen to be reading.
|
|
212
|
-
*
|
|
213
|
-
* 🪤 This repo has already shipped the opposite mistake once, in another
|
|
214
|
-
* instrument: `parse ab` reported a pooled arm BACKWARDS because its estimate
|
|
215
|
-
* was thread-summed, and the report surfaced no caveat that would have told the
|
|
216
|
-
* reader. A shared cost silently attributed to one participant is the same
|
|
217
|
-
* defect wearing different clothes. If you ever want the population inside these
|
|
218
|
-
* numbers, divide it out explicitly and say so in the field name.
|
|
69
|
+
* 🚨 **The population is charged to NOBODY, and that is deliberate.**
|
|
70
|
+
* {@link durationMs} is the STATEMENT alone; the shared setup is published as
|
|
71
|
+
* `populationSecs`. Why, and the pooled-arm defect this avoids:
|
|
72
|
+
* `docs/architecture/cli.md`, "The population is charged to NOBODY".
|
|
219
73
|
*/
|
|
220
74
|
export interface CheckCost {
|
|
221
|
-
/** The check's key in `resources.checks
|
|
75
|
+
/** The check's key in `resources.checks`, or a built-in's name. */
|
|
222
76
|
readonly name: string;
|
|
223
|
-
/** Wall time of this check's
|
|
77
|
+
/** Wall time of this check's selection, and of nothing it shares with others. */
|
|
224
78
|
readonly durationMs: number;
|
|
225
|
-
/** Rows the
|
|
79
|
+
/** Rows the selection returned — the violations it found. Absent when it did not run. */
|
|
226
80
|
readonly rows?: number;
|
|
227
|
-
/** Set when the
|
|
81
|
+
/** Set when the check threw. One that did not complete has no row count. */
|
|
228
82
|
readonly broken?: true;
|
|
83
|
+
/**
|
|
84
|
+
* Set when VAT supplied this check rather than the project. 🔑 Without it a
|
|
85
|
+
* reader whose config declares nothing finds a rule they never wrote in
|
|
86
|
+
* `checks[]` with no way to tell a default from a stale declaration — or, when
|
|
87
|
+
* a project declares a check of the same name, to tell the two entries apart.
|
|
88
|
+
*/
|
|
89
|
+
readonly builtin?: true;
|
|
229
90
|
}
|
|
230
91
|
/** What one run of the checks produced. */
|
|
231
92
|
interface CheckOutcome extends ProjectionProvenance, PopulationExtent {
|
|
@@ -260,8 +121,40 @@ export declare const CheckDataSchema: z.ZodObject<{
|
|
|
260
121
|
population: z.ZodEnum<["derived", "store"]>;
|
|
261
122
|
/** What the population cost — charged to no check, see `CheckCost`. */
|
|
262
123
|
populationSecs: z.ZodNumber;
|
|
263
|
-
/** What evaluating the
|
|
124
|
+
/** What evaluating the lenses cost, paid before the first statement ran. */
|
|
264
125
|
lensSecs: z.ZodNumber;
|
|
126
|
+
/**
|
|
127
|
+
* Which lenses that covers — the derived relations this run's checks could
|
|
128
|
+
* actually read. 🔑 An empty list says "no check asked for a derived relation"
|
|
129
|
+
* rather than "a lens stopped running"; without it `lensSecs: 0` is the same
|
|
130
|
+
* document either way, and a gate whose rules silently read empty relations is
|
|
131
|
+
* a gate that cannot fail.
|
|
132
|
+
*/
|
|
133
|
+
lensesEvaluated: z.ZodArray<z.ZodString, "many">;
|
|
134
|
+
/**
|
|
135
|
+
* The prose frame {@link CheckDataSchema.limits} is read under. Present
|
|
136
|
+
* exactly when a lens with stated bounds was evaluated.
|
|
137
|
+
*/
|
|
138
|
+
boundsStatement: z.ZodOptional<z.ZodString>;
|
|
139
|
+
/**
|
|
140
|
+
* What the derived rows this run could read do NOT settle — signed and
|
|
141
|
+
* directional, the same list `vat claude context` publishes beside its own
|
|
142
|
+
* answer. Absent when no bounded lens ran: an empty list would claim nothing
|
|
143
|
+
* bounds the answer, which is stronger than "the answer holds no such row".
|
|
144
|
+
*/
|
|
145
|
+
limits: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
146
|
+
id: z.ZodString;
|
|
147
|
+
direction: z.ZodEnum<["over-report", "under-report", "scope", "assumption"]>;
|
|
148
|
+
statement: z.ZodString;
|
|
149
|
+
}, "strict", z.ZodTypeAny, {
|
|
150
|
+
id: string;
|
|
151
|
+
direction: "scope" | "over-report" | "under-report" | "assumption";
|
|
152
|
+
statement: string;
|
|
153
|
+
}, {
|
|
154
|
+
id: string;
|
|
155
|
+
direction: "scope" | "over-report" | "under-report" | "assumption";
|
|
156
|
+
statement: string;
|
|
157
|
+
}>, "many">>;
|
|
265
158
|
/** The number of rules that EXECUTED. Derived from `checks`, never carried beside it. */
|
|
266
159
|
checksRun: z.ZodNumber;
|
|
267
160
|
/** What each rule cost, directly under the denominator it is the breakdown of. */
|
|
@@ -272,20 +165,25 @@ export declare const CheckDataSchema: z.ZodObject<{
|
|
|
272
165
|
/** Rows the statement returned. ABSENT, never 0, when the statement did not complete. */
|
|
273
166
|
rows: z.ZodOptional<z.ZodNumber>;
|
|
274
167
|
broken: z.ZodOptional<z.ZodLiteral<true>>;
|
|
168
|
+
/** Present and `true` only for a rule VAT supplied — see {@link CheckCost.builtin}. */
|
|
169
|
+
builtin: z.ZodOptional<z.ZodLiteral<true>>;
|
|
275
170
|
}, "strict", z.ZodTypeAny, {
|
|
276
171
|
name: string;
|
|
277
172
|
durationSecs: number;
|
|
278
173
|
rows?: number | undefined;
|
|
279
174
|
broken?: true | undefined;
|
|
175
|
+
builtin?: true | undefined;
|
|
280
176
|
}, {
|
|
281
177
|
name: string;
|
|
282
178
|
durationSecs: number;
|
|
283
179
|
rows?: number | undefined;
|
|
284
180
|
broken?: true | undefined;
|
|
181
|
+
builtin?: true | undefined;
|
|
285
182
|
}>, "many">;
|
|
286
183
|
}, "strict", z.ZodTypeAny, {
|
|
287
184
|
root: string;
|
|
288
185
|
population: "derived" | "store";
|
|
186
|
+
lensesEvaluated: string[];
|
|
289
187
|
populationSecs: number;
|
|
290
188
|
lensSecs: number;
|
|
291
189
|
checksRun: number;
|
|
@@ -294,10 +192,18 @@ export declare const CheckDataSchema: z.ZodObject<{
|
|
|
294
192
|
durationSecs: number;
|
|
295
193
|
rows?: number | undefined;
|
|
296
194
|
broken?: true | undefined;
|
|
195
|
+
builtin?: true | undefined;
|
|
297
196
|
}[];
|
|
197
|
+
boundsStatement?: string | undefined;
|
|
198
|
+
limits?: {
|
|
199
|
+
id: string;
|
|
200
|
+
direction: "scope" | "over-report" | "under-report" | "assumption";
|
|
201
|
+
statement: string;
|
|
202
|
+
}[] | undefined;
|
|
298
203
|
}, {
|
|
299
204
|
root: string;
|
|
300
205
|
population: "derived" | "store";
|
|
206
|
+
lensesEvaluated: string[];
|
|
301
207
|
populationSecs: number;
|
|
302
208
|
lensSecs: number;
|
|
303
209
|
checksRun: number;
|
|
@@ -306,7 +212,14 @@ export declare const CheckDataSchema: z.ZodObject<{
|
|
|
306
212
|
durationSecs: number;
|
|
307
213
|
rows?: number | undefined;
|
|
308
214
|
broken?: true | undefined;
|
|
215
|
+
builtin?: true | undefined;
|
|
309
216
|
}[];
|
|
217
|
+
boundsStatement?: string | undefined;
|
|
218
|
+
limits?: {
|
|
219
|
+
id: string;
|
|
220
|
+
direction: "scope" | "over-report" | "under-report" | "assumption";
|
|
221
|
+
statement: string;
|
|
222
|
+
}[] | undefined;
|
|
310
223
|
}>;
|
|
311
224
|
export type CheckData = z.infer<typeof CheckDataSchema>;
|
|
312
225
|
/** The document this command publishes. */
|
|
@@ -316,8 +229,40 @@ export declare const CHECK_REPORT_SCHEMA: import("@vibe-agent-toolkit/schema").R
|
|
|
316
229
|
population: z.ZodEnum<["derived", "store"]>;
|
|
317
230
|
/** What the population cost — charged to no check, see `CheckCost`. */
|
|
318
231
|
populationSecs: z.ZodNumber;
|
|
319
|
-
/** What evaluating the
|
|
232
|
+
/** What evaluating the lenses cost, paid before the first statement ran. */
|
|
320
233
|
lensSecs: z.ZodNumber;
|
|
234
|
+
/**
|
|
235
|
+
* Which lenses that covers — the derived relations this run's checks could
|
|
236
|
+
* actually read. 🔑 An empty list says "no check asked for a derived relation"
|
|
237
|
+
* rather than "a lens stopped running"; without it `lensSecs: 0` is the same
|
|
238
|
+
* document either way, and a gate whose rules silently read empty relations is
|
|
239
|
+
* a gate that cannot fail.
|
|
240
|
+
*/
|
|
241
|
+
lensesEvaluated: z.ZodArray<z.ZodString, "many">;
|
|
242
|
+
/**
|
|
243
|
+
* The prose frame {@link CheckDataSchema.limits} is read under. Present
|
|
244
|
+
* exactly when a lens with stated bounds was evaluated.
|
|
245
|
+
*/
|
|
246
|
+
boundsStatement: z.ZodOptional<z.ZodString>;
|
|
247
|
+
/**
|
|
248
|
+
* What the derived rows this run could read do NOT settle — signed and
|
|
249
|
+
* directional, the same list `vat claude context` publishes beside its own
|
|
250
|
+
* answer. Absent when no bounded lens ran: an empty list would claim nothing
|
|
251
|
+
* bounds the answer, which is stronger than "the answer holds no such row".
|
|
252
|
+
*/
|
|
253
|
+
limits: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
254
|
+
id: z.ZodString;
|
|
255
|
+
direction: z.ZodEnum<["over-report", "under-report", "scope", "assumption"]>;
|
|
256
|
+
statement: z.ZodString;
|
|
257
|
+
}, "strict", z.ZodTypeAny, {
|
|
258
|
+
id: string;
|
|
259
|
+
direction: "scope" | "over-report" | "under-report" | "assumption";
|
|
260
|
+
statement: string;
|
|
261
|
+
}, {
|
|
262
|
+
id: string;
|
|
263
|
+
direction: "scope" | "over-report" | "under-report" | "assumption";
|
|
264
|
+
statement: string;
|
|
265
|
+
}>, "many">>;
|
|
321
266
|
/** The number of rules that EXECUTED. Derived from `checks`, never carried beside it. */
|
|
322
267
|
checksRun: z.ZodNumber;
|
|
323
268
|
/** What each rule cost, directly under the denominator it is the breakdown of. */
|
|
@@ -328,20 +273,25 @@ export declare const CHECK_REPORT_SCHEMA: import("@vibe-agent-toolkit/schema").R
|
|
|
328
273
|
/** Rows the statement returned. ABSENT, never 0, when the statement did not complete. */
|
|
329
274
|
rows: z.ZodOptional<z.ZodNumber>;
|
|
330
275
|
broken: z.ZodOptional<z.ZodLiteral<true>>;
|
|
276
|
+
/** Present and `true` only for a rule VAT supplied — see {@link CheckCost.builtin}. */
|
|
277
|
+
builtin: z.ZodOptional<z.ZodLiteral<true>>;
|
|
331
278
|
}, "strict", z.ZodTypeAny, {
|
|
332
279
|
name: string;
|
|
333
280
|
durationSecs: number;
|
|
334
281
|
rows?: number | undefined;
|
|
335
282
|
broken?: true | undefined;
|
|
283
|
+
builtin?: true | undefined;
|
|
336
284
|
}, {
|
|
337
285
|
name: string;
|
|
338
286
|
durationSecs: number;
|
|
339
287
|
rows?: number | undefined;
|
|
340
288
|
broken?: true | undefined;
|
|
289
|
+
builtin?: true | undefined;
|
|
341
290
|
}>, "many">;
|
|
342
291
|
}, "strict", z.ZodTypeAny, {
|
|
343
292
|
root: string;
|
|
344
293
|
population: "derived" | "store";
|
|
294
|
+
lensesEvaluated: string[];
|
|
345
295
|
populationSecs: number;
|
|
346
296
|
lensSecs: number;
|
|
347
297
|
checksRun: number;
|
|
@@ -350,10 +300,18 @@ export declare const CHECK_REPORT_SCHEMA: import("@vibe-agent-toolkit/schema").R
|
|
|
350
300
|
durationSecs: number;
|
|
351
301
|
rows?: number | undefined;
|
|
352
302
|
broken?: true | undefined;
|
|
303
|
+
builtin?: true | undefined;
|
|
353
304
|
}[];
|
|
305
|
+
boundsStatement?: string | undefined;
|
|
306
|
+
limits?: {
|
|
307
|
+
id: string;
|
|
308
|
+
direction: "scope" | "over-report" | "under-report" | "assumption";
|
|
309
|
+
statement: string;
|
|
310
|
+
}[] | undefined;
|
|
354
311
|
}, {
|
|
355
312
|
root: string;
|
|
356
313
|
population: "derived" | "store";
|
|
314
|
+
lensesEvaluated: string[];
|
|
357
315
|
populationSecs: number;
|
|
358
316
|
lensSecs: number;
|
|
359
317
|
checksRun: number;
|
|
@@ -362,7 +320,14 @@ export declare const CHECK_REPORT_SCHEMA: import("@vibe-agent-toolkit/schema").R
|
|
|
362
320
|
durationSecs: number;
|
|
363
321
|
rows?: number | undefined;
|
|
364
322
|
broken?: true | undefined;
|
|
323
|
+
builtin?: true | undefined;
|
|
365
324
|
}[];
|
|
325
|
+
boundsStatement?: string | undefined;
|
|
326
|
+
limits?: {
|
|
327
|
+
id: string;
|
|
328
|
+
direction: "scope" | "over-report" | "under-report" | "assumption";
|
|
329
|
+
statement: string;
|
|
330
|
+
}[] | undefined;
|
|
366
331
|
}>>;
|
|
367
332
|
export type CheckReport = Report<CheckData>;
|
|
368
333
|
/**
|
|
@@ -404,34 +369,38 @@ export type CheckReport = Report<CheckData>;
|
|
|
404
369
|
*/
|
|
405
370
|
export declare function buildCheckOutputData(input: CheckPayloadInput): CheckReport;
|
|
406
371
|
/**
|
|
407
|
-
* Refuse a `--check` name
|
|
408
|
-
*
|
|
409
|
-
* 🔑 **An unknown name used to be a silent green.** The filter was a bare
|
|
410
|
-
* `if (only !== undefined && name !== only) continue;` and nothing compared the
|
|
411
|
-
* flag against the declared keys, so `--check nope` filtered every check away,
|
|
412
|
-
* ran none, and exited 0 with `checksRun: 0` and `issues: []` on empty stderr.
|
|
413
|
-
* The loud "no checks are declared" warning never fired, because it asks whether
|
|
414
|
-
* the `checks` MAP is empty, never whether the FILTER matched anything.
|
|
372
|
+
* Refuse a `--check` name that names neither a built-in nor a declared check.
|
|
415
373
|
*
|
|
416
|
-
*
|
|
417
|
-
*
|
|
418
|
-
* and
|
|
374
|
+
* 🔑 **An unknown name is otherwise a silent green.** With nothing comparing the
|
|
375
|
+
* flag against the known names, `--check nope` filters every check away, runs
|
|
376
|
+
* none, and exits 0 with `checksRun: 0` and `issues: []` on empty stderr — and
|
|
377
|
+
* the "no checks are declared" warning does not fire, because it asks whether
|
|
378
|
+
* the `checks` MAP is empty, never whether the FILTER matched anything. Not a
|
|
379
|
+
* hypothetical typo: rename or delete a check and the CI step keeps passing
|
|
380
|
+
* forever while asserting nothing.
|
|
419
381
|
*
|
|
420
382
|
* Thrown rather than reported as a finding, because it is an OPERATOR error and
|
|
421
383
|
* not a content violation — the two have different exit codes in this command's
|
|
422
384
|
* contract (2 versus 1) and different audiences. Thrown before the projection is
|
|
423
385
|
* populated, so a mistyped flag costs no crawl.
|
|
424
386
|
*
|
|
387
|
+
* 🔑 **A built-in is nameable here exactly like a declared one.** A guard that
|
|
388
|
+
* only knew the config would refuse the very rules that run when there is no
|
|
389
|
+
* config at all. The refusal names both sets.
|
|
390
|
+
*
|
|
391
|
+
* @param builtinNames - The default set's names — {@link BUILTIN_CHECK_NAMES} in
|
|
392
|
+
* production, and passed in rather than imported here so a test can prove the
|
|
393
|
+
* guard rather than restate the constant
|
|
425
394
|
* @param checks - The project's `resources.checks`
|
|
426
395
|
* @param only - The `--check` value, or undefined
|
|
427
|
-
* @throws When `only` names no
|
|
396
|
+
* @throws When `only` names no check this run would attempt
|
|
428
397
|
*/
|
|
429
|
-
export declare function
|
|
398
|
+
export declare function requireKnownCheck(builtinNames: readonly string[], checks: Readonly<Record<string, ResourceCheck>>, only: string | undefined): void;
|
|
430
399
|
/**
|
|
431
400
|
* Name every `CUSTOM:` severity override that overrides nothing.
|
|
432
401
|
*
|
|
433
402
|
* 🔑 **The same silent-green shape as an unknown `--check` name, one surface
|
|
434
|
-
* over.** {@link
|
|
403
|
+
* over.** {@link requireKnownCheck} refuses `--check nope` because a filter
|
|
435
404
|
* that matched nothing ran nothing and exited 0. A `validation.severity` entry
|
|
436
405
|
* keyed `CUSTOM:<name>` for a check that is not declared is the mirror image: it
|
|
437
406
|
* parses (the schema validates the KEY's shape and cannot see
|
|
@@ -534,8 +503,14 @@ export declare function buildInterruptedCheckInput(options: {
|
|
|
534
503
|
durationMs: number;
|
|
535
504
|
}): CheckPayloadInput;
|
|
536
505
|
/**
|
|
537
|
-
* Run
|
|
538
|
-
* verb's logic, with
|
|
506
|
+
* Run this project's checks — VAT's default set plus whatever the project
|
|
507
|
+
* declared — and resolve their severities: the whole of this verb's logic, with
|
|
508
|
+
* the database taken out.
|
|
509
|
+
*
|
|
510
|
+
* 🔑 **`builtins` is a required argument beside `checks`, never a default inside
|
|
511
|
+
* this function.** That is what makes "the default set belongs to the pipeline,
|
|
512
|
+
* not to the config file" a property of the signature — nobody can get the
|
|
513
|
+
* defaults by omitting an argument or lose them by supplying no config.
|
|
539
514
|
*
|
|
540
515
|
* Exported and pure so the loop is provable without a spawn. It was not: every
|
|
541
516
|
* spawned case declared ONE check (the `--check` case declares two and filters
|
|
@@ -548,8 +523,11 @@ export declare function buildInterruptedCheckInput(options: {
|
|
|
548
523
|
* trust.
|
|
549
524
|
*
|
|
550
525
|
* @param options - The run
|
|
526
|
+
* @param options.builtins - The default set, already bound to this run's
|
|
527
|
+
* projection. Required, and `[]` is a deliberate statement rather than an
|
|
528
|
+
* omission
|
|
551
529
|
* @param options.checks - The declared checks
|
|
552
|
-
* @param options.only - A single check
|
|
530
|
+
* @param options.only - A single check name, or undefined for all
|
|
553
531
|
* @param options.ask - Runs one statement against the populated projection
|
|
554
532
|
* @param options.validation - The project's severity overrides, or undefined
|
|
555
533
|
* @param options.membersEnumerated - How many members the population enumerated.
|
|
@@ -564,7 +542,8 @@ export declare function buildInterruptedCheckInput(options: {
|
|
|
564
542
|
* unit case run with nobody watching
|
|
565
543
|
* @returns The resolved findings, and one cost record per check that ran
|
|
566
544
|
*/
|
|
567
|
-
export declare function
|
|
545
|
+
export declare function runProjectChecks(options: {
|
|
546
|
+
builtins: readonly BoundBuiltinCheck[];
|
|
568
547
|
checks: Readonly<Record<string, ResourceCheck>>;
|
|
569
548
|
only: string | undefined;
|
|
570
549
|
ask: AskProjection;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../../src/commands/resources/check.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../../src/commands/resources/check.ts"],"names":[],"mappings":"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"}
|