@crewbie/cli 0.1.0-alpha.51 → 0.1.0-alpha.53

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 (52) hide show
  1. package/README.md +11 -2
  2. package/dist/cli.js +19 -1
  3. package/dist/cli.js.map +1 -1
  4. package/dist/config.d.ts +2 -0
  5. package/dist/config.js +3 -1
  6. package/dist/config.js.map +1 -1
  7. package/dist/setup/assessment.d.ts +3 -0
  8. package/dist/setup/assessment.js.map +1 -1
  9. package/dist/setup/code-graph-export.d.ts +13 -0
  10. package/dist/setup/code-graph-export.js +328 -0
  11. package/dist/setup/code-graph-export.js.map +1 -0
  12. package/dist/setup/code-graph.d.ts +62 -0
  13. package/dist/setup/code-graph.js +324 -0
  14. package/dist/setup/code-graph.js.map +1 -0
  15. package/dist/setup/copilot-cli.d.ts +3 -0
  16. package/dist/setup/copilot-cli.js +26 -0
  17. package/dist/setup/copilot-cli.js.map +1 -0
  18. package/dist/setup/init.d.ts +4 -0
  19. package/dist/setup/init.js +16 -1
  20. package/dist/setup/init.js.map +1 -1
  21. package/dist/setup/onboarding.js +22 -8
  22. package/dist/setup/onboarding.js.map +1 -1
  23. package/dist/setup/planning-workflow.d.ts +1 -1
  24. package/dist/setup/planning-workflow.js +18 -10
  25. package/dist/setup/planning-workflow.js.map +1 -1
  26. package/dist/setup/repository-map.js +10 -3
  27. package/dist/setup/repository-map.js.map +1 -1
  28. package/dist/setup/review.js +6 -3
  29. package/dist/setup/review.js.map +1 -1
  30. package/dist/setup/templates.js +8 -7
  31. package/dist/setup/templates.js.map +1 -1
  32. package/dist/specification/acceptance.d.ts +3 -0
  33. package/dist/specification/acceptance.js +34 -0
  34. package/dist/specification/acceptance.js.map +1 -0
  35. package/dist/specification/batch.js +26 -11
  36. package/dist/specification/batch.js.map +1 -1
  37. package/dist/specification/plan-checks.js +2 -1
  38. package/dist/specification/plan-checks.js.map +1 -1
  39. package/dist/specification/planning-analysis.d.ts +24 -0
  40. package/dist/specification/planning-analysis.js +109 -0
  41. package/dist/specification/planning-analysis.js.map +1 -0
  42. package/dist/specification/planning-output.d.ts +34 -0
  43. package/dist/specification/planning-output.js +194 -0
  44. package/dist/specification/planning-output.js.map +1 -0
  45. package/dist/specification/planning.d.ts +1 -16
  46. package/dist/specification/planning.js +14 -57
  47. package/dist/specification/planning.js.map +1 -1
  48. package/dist/structured-output.d.ts +31 -0
  49. package/dist/structured-output.js +92 -0
  50. package/dist/structured-output.js.map +1 -0
  51. package/docs/operations.md +123 -2
  52. package/package.json +1 -1
@@ -0,0 +1,328 @@
1
+ import { constants } from "node:fs";
2
+ import { lstat, open } from "node:fs/promises";
3
+ const DEFAULT_LIMITS = { maxBytes: 256_000_000, maxValueBytes: 1_000_000, maxDepth: 64 };
4
+ const CHUNK_BYTES = 64 * 1024;
5
+ class ExportError extends Error {
6
+ }
7
+ function invalid() {
8
+ throw new ExportError("Invalid CodeGraph export JSON. No assessment was sent; raw tool output was withheld.");
9
+ }
10
+ function valueBudget(bytes, limit) {
11
+ if (bytes > limit)
12
+ throw new ExportError(`CodeGraph export value is ${bytes} bytes; the buffered value limit is ${limit} bytes. No assessment was sent.`);
13
+ }
14
+ const whitespace = (code) => code === 32 || code === 9 || code === 10 || code === 13;
15
+ const numberCharacter = (code) => code >= 48 && code <= 57 || code === 45 || code === 43 || code === 46 || code === 69 || code === 101;
16
+ /** Synchronous chunk scanning: no per-character promises and no whole-export string. */
17
+ class Tokenizer {
18
+ limit;
19
+ mode;
20
+ parts = [];
21
+ bytes = 0;
22
+ escaped = false;
23
+ hexLeft = 0;
24
+ literal = "";
25
+ literalOffset = 0;
26
+ constructor(limit) {
27
+ this.limit = limit;
28
+ }
29
+ append(part) {
30
+ this.bytes += Buffer.byteLength(part);
31
+ valueBudget(this.bytes, this.limit);
32
+ this.parts.push(part);
33
+ }
34
+ complete(kind) {
35
+ const token = { kind, raw: this.parts.join(""), bytes: this.bytes };
36
+ this.parts = [];
37
+ this.bytes = 0;
38
+ this.mode = undefined;
39
+ if (kind === "number" && !/^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?$/.test(token.raw))
40
+ invalid();
41
+ return token;
42
+ }
43
+ *write(text) {
44
+ let offset = 0;
45
+ while (offset < text.length) {
46
+ let start = offset;
47
+ if (this.mode === undefined) {
48
+ const char = text[offset];
49
+ if (whitespace(text.charCodeAt(offset))) {
50
+ do {
51
+ offset++;
52
+ } while (offset < text.length && whitespace(text.charCodeAt(offset)));
53
+ yield { kind: "whitespace", raw: text.slice(start, offset), bytes: offset - start };
54
+ continue;
55
+ }
56
+ if ("{}[]:,".includes(char)) {
57
+ offset++;
58
+ yield { kind: "punctuation", raw: char, bytes: 1 };
59
+ continue;
60
+ }
61
+ if (char === '"') {
62
+ this.mode = "string";
63
+ offset++;
64
+ }
65
+ else if (char === "-" || char >= "0" && char <= "9")
66
+ this.mode = "number";
67
+ else if (char === "t" || char === "f" || char === "n") {
68
+ this.mode = "literal";
69
+ this.literal = char === "t" ? "true" : char === "f" ? "false" : "null";
70
+ this.literalOffset = 0;
71
+ }
72
+ else
73
+ invalid();
74
+ }
75
+ if (this.mode === "string") {
76
+ let complete = false;
77
+ while (offset < text.length) {
78
+ const char = text[offset++];
79
+ if (this.hexLeft) {
80
+ if (!/^[0-9a-fA-F]$/.test(char))
81
+ invalid();
82
+ this.hexLeft--;
83
+ }
84
+ else if (this.escaped) {
85
+ this.escaped = false;
86
+ if (char === "u")
87
+ this.hexLeft = 4;
88
+ else if (!'"\\/bfnrt'.includes(char))
89
+ invalid();
90
+ }
91
+ else if (char === "\\")
92
+ this.escaped = true;
93
+ else if (char === '"') {
94
+ complete = true;
95
+ break;
96
+ }
97
+ else if (char.charCodeAt(0) < 32)
98
+ invalid();
99
+ }
100
+ this.append(text.slice(start, offset));
101
+ if (complete)
102
+ yield this.complete("string");
103
+ }
104
+ else if (this.mode === "number") {
105
+ while (offset < text.length && numberCharacter(text.charCodeAt(offset)))
106
+ offset++;
107
+ this.append(text.slice(start, offset));
108
+ if (offset < text.length)
109
+ yield this.complete("number");
110
+ }
111
+ else if (this.mode === "literal") {
112
+ while (offset < text.length && this.literalOffset < this.literal.length) {
113
+ if (text[offset++] !== this.literal[this.literalOffset++])
114
+ invalid();
115
+ }
116
+ this.append(text.slice(start, offset));
117
+ if (this.literalOffset === this.literal.length)
118
+ yield this.complete("literal");
119
+ }
120
+ }
121
+ }
122
+ *finish() {
123
+ if (this.mode === "number")
124
+ yield this.complete("number");
125
+ else if (this.mode !== undefined)
126
+ invalid();
127
+ }
128
+ }
129
+ /** Validates all JSON, while retaining just one graph record. Metadata is discarded token by token. */
130
+ class GraphParser {
131
+ kind;
132
+ limit;
133
+ maxDepth;
134
+ stack = [];
135
+ keys = new Set();
136
+ keyBytes = 0;
137
+ started = false;
138
+ finished = false;
139
+ capture;
140
+ constructor(kind, limit, maxDepth) {
141
+ this.kind = kind;
142
+ this.limit = limit;
143
+ this.maxDepth = maxDepth;
144
+ }
145
+ append(token) {
146
+ if (!this.capture)
147
+ return;
148
+ this.capture.bytes += token.bytes;
149
+ valueBudget(this.capture.bytes, this.limit);
150
+ this.capture.parts.push(token.raw);
151
+ }
152
+ valueFinished() {
153
+ const parent = this.stack.at(-1);
154
+ if (parent)
155
+ parent.state = "commaOrEnd";
156
+ else
157
+ this.finished = true;
158
+ }
159
+ push(frame) {
160
+ if (this.stack.length >= this.maxDepth)
161
+ throw new ExportError(`CodeGraph export exceeds the nesting limit of ${this.maxDepth}. No assessment was sent.`);
162
+ this.stack.push(frame);
163
+ }
164
+ accept(token) {
165
+ this.append(token);
166
+ if (token.kind === "whitespace")
167
+ return;
168
+ if (this.finished)
169
+ invalid();
170
+ if (!this.started) {
171
+ if (token.raw !== "{")
172
+ invalid();
173
+ this.started = true;
174
+ this.push({ type: "object", state: "keyOrEnd" });
175
+ return;
176
+ }
177
+ const frame = this.stack.at(-1);
178
+ const objectEnd = token.raw === "}" && frame.type === "object" && (frame.state === "keyOrEnd" || frame.state === "commaOrEnd");
179
+ const arrayEnd = token.raw === "]" && frame.type === "array" && (frame.state === "valueOrEnd" || frame.state === "commaOrEnd");
180
+ if (objectEnd || arrayEnd) {
181
+ let result;
182
+ if (this.capture?.depth === this.stack.length) {
183
+ // Even unselected records have a size limit and must be valid object JSON.
184
+ if (this.capture.kind === this.kind) {
185
+ try {
186
+ result = JSON.parse(this.capture.parts.join(""));
187
+ }
188
+ catch {
189
+ invalid();
190
+ }
191
+ }
192
+ this.capture = undefined;
193
+ }
194
+ this.stack.pop();
195
+ this.valueFinished();
196
+ return result;
197
+ }
198
+ if (frame.type === "object" && (frame.state === "keyOrEnd" || frame.state === "key")) {
199
+ if (token.kind !== "string")
200
+ invalid();
201
+ if (this.stack.length === 1) {
202
+ const key = JSON.parse(token.raw);
203
+ if (this.keys.has(key))
204
+ invalid();
205
+ // Include an allowance per entry so many tiny distinct names cannot grow the Set without bound.
206
+ this.keyBytes += token.bytes + 32;
207
+ valueBudget(this.keyBytes, this.limit);
208
+ this.keys.add(key);
209
+ frame.key = key;
210
+ }
211
+ frame.state = "colon";
212
+ return;
213
+ }
214
+ if (frame.state === "colon") {
215
+ if (token.raw !== ":")
216
+ invalid();
217
+ frame.state = "value";
218
+ return;
219
+ }
220
+ if (frame.state === "commaOrEnd") {
221
+ if (token.raw !== ",")
222
+ invalid();
223
+ frame.state = frame.type === "object" ? "key" : "value";
224
+ return;
225
+ }
226
+ if (frame.state !== "value" && frame.state !== "valueOrEnd")
227
+ invalid();
228
+ const graph = this.stack.length === 1 && frame.type === "object" && (frame.key === "nodes" || frame.key === "edges") ? frame.key : undefined;
229
+ if (graph && token.raw !== "[")
230
+ invalid();
231
+ if (frame.type === "array" && frame.graph) {
232
+ if (token.raw !== "{")
233
+ invalid();
234
+ this.capture = { depth: this.stack.length + 1, parts: [], bytes: 0, kind: frame.graph };
235
+ this.append(token);
236
+ }
237
+ if (token.raw === "{")
238
+ this.push({ type: "object", state: "keyOrEnd" });
239
+ else if (token.raw === "[")
240
+ this.push({ type: "array", state: "valueOrEnd", ...(graph ? { graph } : {}) });
241
+ else if (token.kind === "string" || token.kind === "number" || token.kind === "literal")
242
+ this.valueFinished();
243
+ else
244
+ invalid();
245
+ return;
246
+ }
247
+ finish() {
248
+ if (!this.finished || this.stack.length || !this.keys.has("nodes") || !this.keys.has("edges"))
249
+ invalid();
250
+ }
251
+ }
252
+ /**
253
+ * Stream one record array; consume the generator fully to validate the entire export.
254
+ * Run separate passes for nodes and edges so their order in the export is immaterial.
255
+ * Optional lower limits are for offline tests, not CLI-configurable budget increases.
256
+ */
257
+ export async function* readCodeGraphRecords(path, kind, options = {}) {
258
+ const limits = { ...DEFAULT_LIMITS, ...options };
259
+ for (const key of ["maxBytes", "maxValueBytes", "maxDepth"]) {
260
+ if (!Number.isSafeInteger(limits[key]) || limits[key] <= 0 || limits[key] > DEFAULT_LIMITS[key])
261
+ throw new ExportError("Invalid CodeGraph export reader limits.");
262
+ }
263
+ let handle;
264
+ try {
265
+ const before = await lstat(path);
266
+ if (!before.isFile())
267
+ throw new ExportError("CodeGraph export must be a regular file (symlinks are not allowed). No assessment was sent.");
268
+ if (before.size > limits.maxBytes)
269
+ throw new ExportError(`CodeGraph export is ${before.size} bytes; the input limit is ${limits.maxBytes} bytes. No assessment was sent.`);
270
+ handle = await open(path, constants.O_RDONLY | (constants.O_NOFOLLOW ?? 0) | (constants.O_NONBLOCK ?? 0));
271
+ const initial = await handle.stat();
272
+ if (!initial.isFile())
273
+ throw new ExportError("CodeGraph export must be a regular file (symlinks are not allowed). No assessment was sent.");
274
+ if (initial.size > limits.maxBytes)
275
+ throw new ExportError(`CodeGraph export is ${initial.size} bytes; the input limit is ${limits.maxBytes} bytes. No assessment was sent.`);
276
+ if (initial.dev !== before.dev || initial.ino !== before.ino || initial.size !== before.size)
277
+ throw new ExportError("CodeGraph export changed while opening it. No assessment was sent.");
278
+ const decoder = new TextDecoder("utf-8", { fatal: true, ignoreBOM: true });
279
+ const tokenizer = new Tokenizer(limits.maxValueBytes);
280
+ const parser = new GraphParser(kind, limits.maxValueBytes, limits.maxDepth);
281
+ const buffer = Buffer.alloc(CHUNK_BYTES);
282
+ let total = 0;
283
+ while (true) {
284
+ const { bytesRead } = await handle.read(buffer, 0, buffer.length, null);
285
+ if (!bytesRead)
286
+ break;
287
+ total += bytesRead;
288
+ if (total > limits.maxBytes)
289
+ throw new ExportError(`CodeGraph export is at least ${total} bytes; the input limit is ${limits.maxBytes} bytes. No assessment was sent.`);
290
+ let text;
291
+ try {
292
+ text = decoder.decode(buffer.subarray(0, bytesRead), { stream: true });
293
+ }
294
+ catch {
295
+ invalid();
296
+ }
297
+ for (const token of tokenizer.write(text)) {
298
+ const value = parser.accept(token);
299
+ if (value !== undefined)
300
+ yield value;
301
+ }
302
+ }
303
+ try {
304
+ decoder.decode();
305
+ }
306
+ catch {
307
+ invalid();
308
+ }
309
+ for (const token of tokenizer.finish()) {
310
+ const value = parser.accept(token);
311
+ if (value !== undefined)
312
+ yield value;
313
+ }
314
+ parser.finish();
315
+ const final = await handle.stat();
316
+ if (total !== initial.size || final.size !== initial.size || final.mtimeMs !== initial.mtimeMs || final.ctimeMs !== initial.ctimeMs)
317
+ throw new ExportError("CodeGraph export changed while reading it. No assessment was sent.");
318
+ }
319
+ catch (error) {
320
+ if (error instanceof ExportError)
321
+ throw error;
322
+ throw new ExportError("Unable to read the CodeGraph export safely. No assessment was sent; file details were withheld.");
323
+ }
324
+ finally {
325
+ await handle?.close().catch(() => { });
326
+ }
327
+ }
328
+ //# sourceMappingURL=code-graph-export.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-graph-export.js","sourceRoot":"","sources":["../../src/setup/code-graph-export.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ declare const RELATIONS: readonly ["CALLS", "IMPORTS_FROM", "INHERITS", "IMPLEMENTS", "TESTED_BY", "DEPENDS_ON"];
2
+ type Relation = typeof RELATIONS[number];
3
+ export interface CodeGraphEvidence {
4
+ provider: "code-review-graph";
5
+ version: string;
6
+ collectedAt: string;
7
+ snapshotHash: string;
8
+ scope: string;
9
+ coverage: {
10
+ candidates: number;
11
+ copied: number;
12
+ indexed: number;
13
+ omitted: number;
14
+ unindexed: number;
15
+ partial: boolean;
16
+ };
17
+ languages: {
18
+ extension: string;
19
+ files: number;
20
+ }[];
21
+ files: {
22
+ path: string;
23
+ symbols: number;
24
+ maxSymbolLines: number;
25
+ incoming: number;
26
+ outgoing: number;
27
+ testLinks: number;
28
+ }[];
29
+ filesOmitted: number;
30
+ relationships: {
31
+ kind: Relation;
32
+ count: number;
33
+ }[];
34
+ dependencies: {
35
+ from: string;
36
+ to: string;
37
+ kind: Relation;
38
+ count: number;
39
+ }[];
40
+ dependenciesOmitted: number;
41
+ warnings: string[];
42
+ }
43
+ export interface CodeGraphRunOptions {
44
+ cwd: string;
45
+ env: NodeJS.ProcessEnv;
46
+ }
47
+ export interface CodeGraphOptions {
48
+ executable?: string;
49
+ /** Injectable transport for offline tests; not a CLI option. */
50
+ run?: (executable: string, args: string[], options: CodeGraphRunOptions) => Promise<string>;
51
+ }
52
+ interface GraphMetadata {
53
+ version: string;
54
+ collectedAt: string;
55
+ snapshotHash: string;
56
+ candidates: number;
57
+ partial: boolean;
58
+ }
59
+ /** Only validated file paths and numeric structure leave the collector. No names, docstrings, source or signatures. */
60
+ export declare function summarizeCodeGraph(value: unknown, snapshot: string, paths: string[], metadata: GraphMetadata): CodeGraphEvidence;
61
+ export declare function collectCodeGraph(root: string, files: string[], options?: CodeGraphOptions): Promise<CodeGraphEvidence>;
62
+ export {};