@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.
Files changed (114) hide show
  1. package/dist/commands/audit/provenance.d.ts.map +1 -1
  2. package/dist/commands/audit/provenance.js +4 -3
  3. package/dist/commands/audit/provenance.js.map +1 -1
  4. package/dist/commands/build.d.ts.map +1 -1
  5. package/dist/commands/build.js +2 -1
  6. package/dist/commands/build.js.map +1 -1
  7. package/dist/commands/cache/clear.d.ts +17 -3
  8. package/dist/commands/cache/clear.d.ts.map +1 -1
  9. package/dist/commands/cache/clear.js +17 -3
  10. package/dist/commands/cache/clear.js.map +1 -1
  11. package/dist/commands/cache/index.d.ts.map +1 -1
  12. package/dist/commands/cache/index.js +19 -10
  13. package/dist/commands/cache/index.js.map +1 -1
  14. package/dist/commands/claude/context.d.ts +2 -2
  15. package/dist/commands/claude/context.js +4 -4
  16. package/dist/commands/claude/context.js.map +1 -1
  17. package/dist/commands/claude/index.d.ts +12 -11
  18. package/dist/commands/claude/index.d.ts.map +1 -1
  19. package/dist/commands/claude/index.js +14 -16
  20. package/dist/commands/claude/index.js.map +1 -1
  21. package/dist/commands/claude/marketplace/git-publish.d.ts.map +1 -1
  22. package/dist/commands/claude/marketplace/git-publish.js +19 -10
  23. package/dist/commands/claude/marketplace/git-publish.js.map +1 -1
  24. package/dist/commands/claude/marketplace/validate.js +2 -2
  25. package/dist/commands/claude/marketplace/validate.js.map +1 -1
  26. package/dist/commands/claude/org/skills.js +8 -8
  27. package/dist/commands/claude/org/skills.js.map +1 -1
  28. package/dist/commands/claude/plugin/build.d.ts.map +1 -1
  29. package/dist/commands/claude/plugin/build.js +11 -21
  30. package/dist/commands/claude/plugin/build.js.map +1 -1
  31. package/dist/commands/claude/plugin/plugin-files.js +3 -3
  32. package/dist/commands/claude/plugin/plugin-files.js.map +1 -1
  33. package/dist/commands/consistency-check.d.ts +11 -5
  34. package/dist/commands/consistency-check.d.ts.map +1 -1
  35. package/dist/commands/consistency-check.js +113 -78
  36. package/dist/commands/consistency-check.js.map +1 -1
  37. package/dist/commands/resources/check-progress.d.ts +6 -0
  38. package/dist/commands/resources/check-progress.d.ts.map +1 -1
  39. package/dist/commands/resources/check-progress.js +10 -2
  40. package/dist/commands/resources/check-progress.js.map +1 -1
  41. package/dist/commands/resources/check.d.ts +182 -203
  42. package/dist/commands/resources/check.d.ts.map +1 -1
  43. package/dist/commands/resources/check.js +272 -248
  44. package/dist/commands/resources/check.js.map +1 -1
  45. package/dist/commands/resources/index.d.ts.map +1 -1
  46. package/dist/commands/resources/index.js +140 -23
  47. package/dist/commands/resources/index.js.map +1 -1
  48. package/dist/commands/resources/query.d.ts +2 -2
  49. package/dist/commands/resources/query.d.ts.map +1 -1
  50. package/dist/commands/resources/query.js +20 -10
  51. package/dist/commands/resources/query.js.map +1 -1
  52. package/dist/commands/skill/test/run.js +3 -3
  53. package/dist/commands/skill/test/run.js.map +1 -1
  54. package/dist/commands/skills/build.d.ts +34 -21
  55. package/dist/commands/skills/build.d.ts.map +1 -1
  56. package/dist/commands/skills/build.js +99 -50
  57. package/dist/commands/skills/build.js.map +1 -1
  58. package/dist/commands/skills/skill-discovery.d.ts +15 -13
  59. package/dist/commands/skills/skill-discovery.d.ts.map +1 -1
  60. package/dist/commands/skills/skill-discovery.js +23 -4
  61. package/dist/commands/skills/skill-discovery.js.map +1 -1
  62. package/dist/commands/validate.d.ts.map +1 -1
  63. package/dist/commands/validate.js +31 -8
  64. package/dist/commands/validate.js.map +1 -1
  65. package/dist/commands/verify.d.ts +10 -4
  66. package/dist/commands/verify.d.ts.map +1 -1
  67. package/dist/commands/verify.js +92 -65
  68. package/dist/commands/verify.js.map +1 -1
  69. package/dist/report-schemas.d.ts.map +1 -1
  70. package/dist/report-schemas.js +0 -2
  71. package/dist/report-schemas.js.map +1 -1
  72. package/dist/skill-resolution/classify.js +2 -2
  73. package/dist/skill-resolution/classify.js.map +1 -1
  74. package/dist/skill-resolution/resolve-skill-reference.d.ts.map +1 -1
  75. package/dist/skill-resolution/resolve-skill-reference.js +48 -52
  76. package/dist/skill-resolution/resolve-skill-reference.js.map +1 -1
  77. package/dist/utils/claude-context-lens.d.ts +34 -0
  78. package/dist/utils/claude-context-lens.d.ts.map +1 -0
  79. package/dist/utils/claude-context-lens.js +39 -0
  80. package/dist/utils/claude-context-lens.js.map +1 -0
  81. package/dist/utils/projection-lenses.d.ts +98 -0
  82. package/dist/utils/projection-lenses.d.ts.map +1 -0
  83. package/dist/utils/projection-lenses.js +203 -0
  84. package/dist/utils/projection-lenses.js.map +1 -0
  85. package/dist/utils/projection-query.d.ts +38 -14
  86. package/dist/utils/projection-query.d.ts.map +1 -1
  87. package/dist/utils/projection-query.js +78 -17
  88. package/dist/utils/projection-query.js.map +1 -1
  89. package/dist/utils/projection-store.d.ts +61 -42
  90. package/dist/utils/projection-store.d.ts.map +1 -1
  91. package/dist/utils/projection-store.js +155 -59
  92. package/dist/utils/projection-store.js.map +1 -1
  93. package/dist/utils/relation-limits.d.ts +50 -0
  94. package/dist/utils/relation-limits.d.ts.map +1 -0
  95. package/dist/utils/relation-limits.js +50 -0
  96. package/dist/utils/relation-limits.js.map +1 -0
  97. package/dist/utils/skill-discovery.d.ts.map +1 -1
  98. package/dist/utils/skill-discovery.js +2 -1
  99. package/dist/utils/skill-discovery.js.map +1 -1
  100. package/dist/utils/skill-packaging-config.d.ts +38 -3
  101. package/dist/utils/skill-packaging-config.d.ts.map +1 -1
  102. package/dist/utils/skill-packaging-config.js +28 -3
  103. package/dist/utils/skill-packaging-config.js.map +1 -1
  104. package/package.json +16 -16
  105. package/schemas/resources-check.json +43 -0
  106. package/dist/commands/claude/budget.d.ts +0 -269
  107. package/dist/commands/claude/budget.d.ts.map +0 -1
  108. package/dist/commands/claude/budget.js +0 -507
  109. package/dist/commands/claude/budget.js.map +0 -1
  110. package/dist/utils/context-budget-issues.d.ts +0 -108
  111. package/dist/utils/context-budget-issues.d.ts.map +0 -1
  112. package/dist/utils/context-budget-issues.js +0 -280
  113. package/dist/utils/context-budget-issues.js.map +0 -1
  114. package/schemas/claude-budget.json +0 -197
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vibe-agent-toolkit/cli",
3
- "version": "0.2.0-rc.8",
3
+ "version": "0.2.0-rc.9",
4
4
  "description": "Command-line interface for vibe-agent-toolkit",
5
5
  "type": "module",
6
6
  "bin": {
@@ -48,16 +48,16 @@
48
48
  "//dependencies-note": "DO NOT add example agent packages or adopter packages here. Adopter packages (like vat-development-agents) depend on the CLI binary at build time — declaring them as deps creates a circular build dependency. They are built in a second turbo pass via package#task overrides in turbo.json.",
49
49
  "dependencies": {
50
50
  "@anthropic-ai/sdk": "^0.71.2",
51
- "@vibe-agent-toolkit/agent-config": "0.2.0-rc.8",
52
- "@vibe-agent-toolkit/agent-skills": "0.2.0-rc.8",
53
- "@vibe-agent-toolkit/claude-marketplace": "0.2.0-rc.8",
54
- "@vibe-agent-toolkit/discovery": "0.2.0-rc.8",
55
- "@vibe-agent-toolkit/gateway-mcp": "0.2.0-rc.8",
56
- "@vibe-agent-toolkit/projection-sqlite": "0.2.0-rc.8",
57
- "@vibe-agent-toolkit/resources": "0.2.0-rc.8",
58
- "@vibe-agent-toolkit/schema": "0.2.0-rc.8",
59
- "@vibe-agent-toolkit/utils": "0.2.0-rc.8",
60
- "adm-zip": "^0.6.0",
51
+ "@vibe-agent-toolkit/agent-config": "0.2.0-rc.9",
52
+ "@vibe-agent-toolkit/agent-skills": "0.2.0-rc.9",
53
+ "@vibe-agent-toolkit/claude-marketplace": "0.2.0-rc.9",
54
+ "@vibe-agent-toolkit/discovery": "0.2.0-rc.9",
55
+ "@vibe-agent-toolkit/gateway-mcp": "0.2.0-rc.9",
56
+ "@vibe-agent-toolkit/projection-sqlite": "0.2.0-rc.9",
57
+ "@vibe-agent-toolkit/resources": "0.2.0-rc.9",
58
+ "@vibe-agent-toolkit/schema": "0.2.0-rc.9",
59
+ "@vibe-agent-toolkit/utils": "0.2.0-rc.9",
60
+ "adm-zip": "^0.6.1",
61
61
  "commander": "^12.1.0",
62
62
  "picomatch": "^4.0.3",
63
63
  "semver": "^7.8.5",
@@ -67,9 +67,9 @@
67
67
  },
68
68
  "devDependencies": {
69
69
  "@types/tar": "^6.1.13",
70
- "@vibe-agent-toolkit/dev-tools": "0.2.0-rc.8",
71
- "@vibe-agent-toolkit/rag": "0.2.0-rc.8",
72
- "@vibe-agent-toolkit/rag-lancedb": "0.2.0-rc.8"
70
+ "@vibe-agent-toolkit/dev-tools": "0.2.0-rc.9",
71
+ "@vibe-agent-toolkit/rag": "0.2.0-rc.9",
72
+ "@vibe-agent-toolkit/rag-lancedb": "0.2.0-rc.9"
73
73
  },
74
74
  "publishConfig": {
75
75
  "access": "public"
@@ -80,8 +80,8 @@
80
80
  },
81
81
  "//peerDependencies-note": "The RAG backends are OPTIONAL PEERS, never optionalDependencies. `optionalDependencies` are INSTALLED BY DEFAULT by npm and pnpm alike - 'optional' there means the install may fail without failing the build, not that it is skipped - so declaring them that way shipped ~287 MB unpacked (onnxruntime-web 137.5 MB, a LanceDB platform binary 97.8 MB, gpt-tokenizer 42.2 MB, apache-arrow 5.3 MB, protobufjs 3.0 MB; measured on darwin-arm64 against this release's pins, and the platform binary is larger on win32-x64) to every adopter, contradicting the seam in src/utils/optional-backend.ts that exists precisely to keep them out. Optional peers are NOT auto-installed, so the manifest now says what that module already says: these ship separately, and an absent one is a legible error naming the package to install. projection-sqlite is deliberately NOT in this group: it has zero third-party dependencies (only node:sqlite, which is built into Node) and a 152 KB dist, so the platform-binary argument that justifies the seam is simply false for it. It is also what `vat resources query` builds its ephemeral in-memory store from, and a query surface that works only where a backend was separately installed is the capability gate the projection design forbids.",
82
82
  "peerDependencies": {
83
- "@vibe-agent-toolkit/rag": "0.2.0-rc.8",
84
- "@vibe-agent-toolkit/rag-lancedb": "0.2.0-rc.8"
83
+ "@vibe-agent-toolkit/rag": "0.2.0-rc.9",
84
+ "@vibe-agent-toolkit/rag-lancedb": "0.2.0-rc.9"
85
85
  },
86
86
  "peerDependenciesMeta": {
87
87
  "@vibe-agent-toolkit/rag": {
@@ -123,6 +123,44 @@
123
123
  "type": "number",
124
124
  "minimum": 0
125
125
  },
126
+ "lensesEvaluated": {
127
+ "type": "array",
128
+ "items": {
129
+ "type": "string"
130
+ }
131
+ },
132
+ "boundsStatement": {
133
+ "type": "string"
134
+ },
135
+ "limits": {
136
+ "type": "array",
137
+ "items": {
138
+ "type": "object",
139
+ "properties": {
140
+ "id": {
141
+ "type": "string"
142
+ },
143
+ "direction": {
144
+ "type": "string",
145
+ "enum": [
146
+ "over-report",
147
+ "under-report",
148
+ "scope",
149
+ "assumption"
150
+ ]
151
+ },
152
+ "statement": {
153
+ "type": "string"
154
+ }
155
+ },
156
+ "required": [
157
+ "id",
158
+ "direction",
159
+ "statement"
160
+ ],
161
+ "additionalProperties": false
162
+ }
163
+ },
126
164
  "checksRun": {
127
165
  "type": "integer",
128
166
  "minimum": 0
@@ -146,6 +184,10 @@
146
184
  "broken": {
147
185
  "type": "boolean",
148
186
  "const": true
187
+ },
188
+ "builtin": {
189
+ "type": "boolean",
190
+ "const": true
149
191
  }
150
192
  },
151
193
  "required": [
@@ -161,6 +203,7 @@
161
203
  "population",
162
204
  "populationSecs",
163
205
  "lensSecs",
206
+ "lensesEvaluated",
164
207
  "checksRun",
165
208
  "checks"
166
209
  ],
@@ -1,269 +0,0 @@
1
- /**
2
- * `vat claude budget [paths...]` — is the always-loaded context at a working
3
- * location over its budget?
4
- *
5
- * ## Why this is a command and not a check inside `vat resources validate`
6
- *
7
- * It used to be one: default-on, with a `--no-context-budget` opt-out. That is
8
- * gone, in both directions — `vat resources validate` has no knowledge of the
9
- * budget at all any more, not a flag, not a default. The ruling behind the move
10
- * is short: *a validation run must not emit findings nobody asked for.* An
11
- * `info` finding attached to a lane people run for link and anchor errors is a
12
- * finding they scroll past, and a check people scroll past is a check they
13
- * eventually silence.
14
- *
15
- * ## The sibling split: `context` QUERIES, `budget` CHECKS
16
- *
17
- * `vat claude context` answers a question and
18
- * never gates — totals, admissions, the declared limits, no verdict, always
19
- * exit 0. This command is the other half of that pair: it applies a THRESHOLD,
20
- * produces findings with severities an adopter can configure, and lets an
21
- * adopter who promotes the code to `error` fail their build with it. Two verbs
22
- * because they are two acts, and folding a verdict into the query would make
23
- * the query's number a number people learn to stop reading.
24
- *
25
- * ## Everything below is orchestration — deliberately
26
- *
27
- * Which directories exist, what each pays, and whether that is over budget are
28
- * all decided in `@vibe-agent-toolkit/resources` (`buildClaudeContextPopulation`
29
- * and `sweepAlwaysLoadedBudgets`); the wording and grouping of the findings in
30
- * `utils/context-budget-issues.ts`; severity resolution in the two shared
31
- * filters every other lane runs. This module populates one tree, calls them in
32
- * order, and renders. It decides nothing about context loading of its own,
33
- * which is the CLI-stays-dumb rule applied to the lane where the temptation is
34
- * strongest.
35
- *
36
- * ⛔ The threshold is never re-spelled here. It is a MEASURED quantity that
37
- * lives beside the detector (`DEFAULT_ALWAYS_LOADED_CONTEXT_TOKENS`), and a
38
- * literal in this package would be a second source of truth that nothing
39
- * compares.
40
- *
41
- * ## The stated bounds ride ONCE on the REPORT, in every format
42
- *
43
- * The sibling query publishes 23 stated limits; this command applies a threshold
44
- * to the same measurement, so it publishes {@link ALWAYS_LOADED_BUDGET_LIMITS}
45
- * and {@link CLAUDE_CONTEXT_BOUNDS_STATEMENT} beside its verdict — the half that
46
- * GATES is the half whose bounds a reader most needs. Both are imported, never
47
- * restated: the sentence is domain content owned beside the list it frames.
48
- *
49
- * ⛔ They belong to the REPORT, never to a finding. A per-finding copy is the
50
- * defect this lane already shipped once on the query side, and it is invisible to
51
- * any assertion that checks presence rather than counting occurrences.
52
- */
53
- import { type BudgetSweep } from '@vibe-agent-toolkit/resources';
54
- import { type Report, type ValidationIssue } from '@vibe-agent-toolkit/schema';
55
- import { Command } from 'commander';
56
- import { z } from 'zod';
57
- /** How the report is rendered. `text` is for a person; the other two are for a program. */
58
- export type BudgetOutputFormat = 'text' | 'yaml' | 'json';
59
- /** Flags `vat claude budget` accepts. */
60
- export interface ClaudeBudgetOptions {
61
- format?: BudgetOutputFormat;
62
- debug?: boolean;
63
- }
64
- /**
65
- * What one run reports beyond its findings.
66
- *
67
- * The sweep counters describe the WHOLE tree, not the scope: a scope narrows
68
- * what is reported, never what was measured. The envelope's `examined` is the
69
- * working-location count for the same reason — "9 chains checked, none over
70
- * budget" and "nothing was checked" are different answers and must not render
71
- * identically.
72
- */
73
- export declare const BudgetDataSchema: z.ZodObject<{
74
- root: z.ZodString;
75
- /** The budget every chain was measured against, in tokens. */
76
- threshold: z.ZodNumber;
77
- /** The root-relative directories asked about. `''` is the whole tree. */
78
- scope: z.ZodArray<z.ZodString, "many">;
79
- /** Requested paths that named no working location — see `scopeSweepToPaths`. */
80
- unmatchedScope: z.ZodArray<z.ZodString, "many">;
81
- /** Distinct instruction chains among the working locations — the queries the sweep really issued. */
82
- distinctChains: z.ZodNumber;
83
- /** Locations whose representative the projection never realized. Counted, never zeroed. */
84
- skippedUnknownLocations: z.ZodNumber;
85
- /**
86
- * What this verdict does not settle, in either direction. Stated ONCE.
87
- *
88
- * ⛔ On the report beside `threshold`, never on a finding. These bound the
89
- * MEASUREMENT METHOD, not any one chain — a finding carrying its own copy
90
- * reads as though that chain had caveats of its own, and repeated across a
91
- * sweep it is pure byte-identical duplication.
92
- */
93
- boundsStatement: z.ZodString;
94
- /** The signed over/under-report bounds on the method. Stated ONCE. */
95
- limits: z.ZodArray<z.ZodObject<{
96
- id: z.ZodString;
97
- direction: z.ZodEnum<["over-report", "under-report", "scope", "assumption"]>;
98
- statement: z.ZodString;
99
- }, "strict", z.ZodTypeAny, {
100
- id: string;
101
- direction: "scope" | "over-report" | "under-report" | "assumption";
102
- statement: string;
103
- }, {
104
- id: string;
105
- direction: "scope" | "over-report" | "under-report" | "assumption";
106
- statement: string;
107
- }>, "many">;
108
- }, "strict", z.ZodTypeAny, {
109
- root: string;
110
- scope: string[];
111
- threshold: number;
112
- unmatchedScope: string[];
113
- distinctChains: number;
114
- skippedUnknownLocations: number;
115
- boundsStatement: string;
116
- limits: {
117
- id: string;
118
- direction: "scope" | "over-report" | "under-report" | "assumption";
119
- statement: string;
120
- }[];
121
- }, {
122
- root: string;
123
- scope: string[];
124
- threshold: number;
125
- unmatchedScope: string[];
126
- distinctChains: number;
127
- skippedUnknownLocations: number;
128
- boundsStatement: string;
129
- limits: {
130
- id: string;
131
- direction: "scope" | "over-report" | "under-report" | "assumption";
132
- statement: string;
133
- }[];
134
- }>;
135
- export type BudgetData = z.infer<typeof BudgetDataSchema>;
136
- /** The document this command publishes. */
137
- export declare const BUDGET_REPORT_SCHEMA: import("@vibe-agent-toolkit/schema").ReportZodSchema<z.ZodObject<{
138
- root: z.ZodString;
139
- /** The budget every chain was measured against, in tokens. */
140
- threshold: z.ZodNumber;
141
- /** The root-relative directories asked about. `''` is the whole tree. */
142
- scope: z.ZodArray<z.ZodString, "many">;
143
- /** Requested paths that named no working location — see `scopeSweepToPaths`. */
144
- unmatchedScope: z.ZodArray<z.ZodString, "many">;
145
- /** Distinct instruction chains among the working locations — the queries the sweep really issued. */
146
- distinctChains: z.ZodNumber;
147
- /** Locations whose representative the projection never realized. Counted, never zeroed. */
148
- skippedUnknownLocations: z.ZodNumber;
149
- /**
150
- * What this verdict does not settle, in either direction. Stated ONCE.
151
- *
152
- * ⛔ On the report beside `threshold`, never on a finding. These bound the
153
- * MEASUREMENT METHOD, not any one chain — a finding carrying its own copy
154
- * reads as though that chain had caveats of its own, and repeated across a
155
- * sweep it is pure byte-identical duplication.
156
- */
157
- boundsStatement: z.ZodString;
158
- /** The signed over/under-report bounds on the method. Stated ONCE. */
159
- limits: z.ZodArray<z.ZodObject<{
160
- id: z.ZodString;
161
- direction: z.ZodEnum<["over-report", "under-report", "scope", "assumption"]>;
162
- statement: z.ZodString;
163
- }, "strict", z.ZodTypeAny, {
164
- id: string;
165
- direction: "scope" | "over-report" | "under-report" | "assumption";
166
- statement: string;
167
- }, {
168
- id: string;
169
- direction: "scope" | "over-report" | "under-report" | "assumption";
170
- statement: string;
171
- }>, "many">;
172
- }, "strict", z.ZodTypeAny, {
173
- root: string;
174
- scope: string[];
175
- threshold: number;
176
- unmatchedScope: string[];
177
- distinctChains: number;
178
- skippedUnknownLocations: number;
179
- boundsStatement: string;
180
- limits: {
181
- id: string;
182
- direction: "scope" | "over-report" | "under-report" | "assumption";
183
- statement: string;
184
- }[];
185
- }, {
186
- root: string;
187
- scope: string[];
188
- threshold: number;
189
- unmatchedScope: string[];
190
- distinctChains: number;
191
- skippedUnknownLocations: number;
192
- boundsStatement: string;
193
- limits: {
194
- id: string;
195
- direction: "scope" | "over-report" | "under-report" | "assumption";
196
- statement: string;
197
- }[];
198
- }>>;
199
- /**
200
- * The report one run emits: one finding per over-budget chain — plus, ahead of
201
- * them, the run-integrity refusal when part of what was asked about was never
202
- * measured. See {@link buildReport}: the second kind is DERIVED there rather
203
- * than passed in, so no report can carry an unmatched path and a clean status.
204
- */
205
- export type BudgetReport = Report<BudgetData>;
206
- /**
207
- * Create the `vat claude budget [paths...]` command.
208
- *
209
- * @returns The configured Commander command
210
- */
211
- export declare function createBudgetCommand(): Command;
212
- /**
213
- * Action handler for `vat claude budget [paths...]`.
214
- *
215
- * @param pathArgs - Directories to check; empty means the whole tree
216
- * @param options - The command's flags
217
- */
218
- export declare function claudeBudgetCommand(pathArgs: readonly string[], options: ClaudeBudgetOptions): Promise<void>;
219
- /** Everything {@link buildReport} needs, bundled past the lint gate's parameter ceiling. */
220
- export interface ReportInput {
221
- readonly root: string;
222
- readonly threshold: number;
223
- readonly scope: readonly string[];
224
- readonly sweep: BudgetSweep;
225
- readonly scoped: {
226
- readonly unmatchedScope: readonly string[];
227
- };
228
- /** The BUDGET findings only. The run-integrity refusal is derived, not passed. */
229
- readonly findings: readonly ValidationIssue[];
230
- }
231
- /**
232
- * Assemble the report from the run's parts.
233
- *
234
- * ⛔ The counters come from the UNSCOPED sweep. They answer "what was measured",
235
- * and a scope changes only what is reported — sourcing them from the narrowed
236
- * view would let `vat claude budget docs` claim the tree has one chain.
237
- *
238
- * ⛔ This is the ONE place the stated bounds enter the machine-readable output,
239
- * and keeping it a single assignment is what makes "stated once" structural
240
- * rather than a habit: there is no per-finding site left where a copy could be
241
- * reintroduced. They are attached unconditionally — a run that flagged nothing
242
- * used the same method, and a reader acting on "within budget" needs them most.
243
- *
244
- * ⛔ Exported so it can be TESTED. What has to be pinned is a COUNT — that the
245
- * block appears exactly once across a MULTI-finding report — and a presence
246
- * check passes identically with a copy per finding.
247
- *
248
- * ⛔ The run-integrity refusal is DERIVED here from `scoped.unmatchedScope`
249
- * rather than assembled by the caller, which is what makes "a run that checked
250
- * nothing never reports success" unrepresentable instead of merely observed:
251
- * there is no pipeline step left in which a later edit could drop it. See
252
- * {@link nothingCheckedFindings}.
253
- *
254
- * @param input - The run's parts
255
- * @returns The report, ready to serialize
256
- */
257
- export declare function buildReport(input: ReportInput): BudgetReport;
258
- /**
259
- * Render the report for a person.
260
- *
261
- * ⛔ Exported so the "stated once" property can be pinned in TEXT as well as in
262
- * json. The two renderings are separate code paths and this lane has already
263
- * shipped a defect where they disagreed while each looked right alone.
264
- *
265
- * @param report - The report
266
- * @returns The text rendering, newline-terminated
267
- */
268
- export declare function renderReportText(report: BudgetReport): string;
269
- //# sourceMappingURL=budget.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"budget.d.ts","sourceRoot":"","sources":["../../../src/commands/claude/budget.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AAEH,OAAO,EAML,KAAK,WAAW,EACjB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAKL,KAAK,MAAM,EAGX,KAAK,eAAe,EACrB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAuBxB,2FAA2F;AAC3F,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAE1D,yCAAyC;AACzC,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AASD;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB;;IAE3B,8DAA8D;;IAE9D,yEAAyE;;IAEzE,gFAAgF;;IAEhF,qGAAqG;;IAErG,2FAA2F;;IAE3F;;;;;;;OAOG;;IAEH,sEAAsE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAE7D,CAAC;AAEZ,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,2CAA2C;AAC3C,eAAO,MAAM,oBAAoB;;IA1B/B,8DAA8D;;IAE9D,yEAAyE;;IAEzE,gFAAgF;;IAEhF,qGAAqG;;IAErG,2FAA2F;;IAE3F;;;;;;;OAOG;;IAEH,sEAAsE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAON,CAAC;AAEnE;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAE9C;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAwE7C;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,SAAS,MAAM,EAAE,EAC3B,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAqCf;AAED,4FAA4F;AAC5F,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,CAAC;IAChE,kFAAkF;IAClF,QAAQ,CAAC,QAAQ,EAAE,SAAS,eAAe,EAAE,CAAC;CAC/C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,YAAY,CAmB5D;AAsID;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAY7D"}