@beignet/cli 0.0.50 → 0.0.52

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 (105) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/README.md +64 -22
  3. package/dist/analysis/layers.d.ts.map +1 -1
  4. package/dist/analysis/layers.js +4 -2
  5. package/dist/analysis/layers.js.map +1 -1
  6. package/dist/analysis/port-wiring.d.ts.map +1 -1
  7. package/dist/analysis/port-wiring.js +2 -1
  8. package/dist/analysis/port-wiring.js.map +1 -1
  9. package/dist/analysis/source-files.d.ts +15 -0
  10. package/dist/analysis/source-files.d.ts.map +1 -0
  11. package/dist/analysis/source-files.js +52 -0
  12. package/dist/analysis/source-files.js.map +1 -0
  13. package/dist/analysis/workspace.d.ts.map +1 -1
  14. package/dist/analysis/workspace.js +21 -25
  15. package/dist/analysis/workspace.js.map +1 -1
  16. package/dist/app-map-changes.d.ts.map +1 -1
  17. package/dist/app-map-changes.js +5 -7
  18. package/dist/app-map-changes.js.map +1 -1
  19. package/dist/app-map.d.ts.map +1 -1
  20. package/dist/app-map.js +33 -30
  21. package/dist/app-map.js.map +1 -1
  22. package/dist/check.d.ts +12 -0
  23. package/dist/check.d.ts.map +1 -1
  24. package/dist/check.js +92 -25
  25. package/dist/check.js.map +1 -1
  26. package/dist/git-changes.d.ts +17 -1
  27. package/dist/git-changes.d.ts.map +1 -1
  28. package/dist/git-changes.js +118 -84
  29. package/dist/git-changes.js.map +1 -1
  30. package/dist/index.d.ts +2 -0
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.js +35 -6
  33. package/dist/index.js.map +1 -1
  34. package/dist/inspect.d.ts.map +1 -1
  35. package/dist/inspect.js +436 -112
  36. package/dist/inspect.js.map +1 -1
  37. package/dist/lint.d.ts.map +1 -1
  38. package/dist/lint.js +3 -6
  39. package/dist/lint.js.map +1 -1
  40. package/dist/make.d.ts.map +1 -1
  41. package/dist/make.js +0 -2
  42. package/dist/make.js.map +1 -1
  43. package/dist/mcp.d.ts.map +1 -1
  44. package/dist/mcp.js +23 -5
  45. package/dist/mcp.js.map +1 -1
  46. package/dist/operational-process.d.ts +1 -0
  47. package/dist/operational-process.d.ts.map +1 -1
  48. package/dist/operational-process.js.map +1 -1
  49. package/dist/operational-runner.js +1 -0
  50. package/dist/operational-runner.js.map +1 -1
  51. package/dist/outbox.d.ts +1 -0
  52. package/dist/outbox.d.ts.map +1 -1
  53. package/dist/outbox.js +58 -12
  54. package/dist/outbox.js.map +1 -1
  55. package/dist/templates/agents.d.ts.map +1 -1
  56. package/dist/templates/agents.js +43 -15
  57. package/dist/templates/agents.js.map +1 -1
  58. package/dist/templates/base.js +5 -5
  59. package/dist/templates/db/mysql.d.ts.map +1 -1
  60. package/dist/templates/db/mysql.js +51 -22
  61. package/dist/templates/db/mysql.js.map +1 -1
  62. package/dist/templates/db/postgres.d.ts.map +1 -1
  63. package/dist/templates/db/postgres.js +60 -20
  64. package/dist/templates/db/postgres.js.map +1 -1
  65. package/dist/templates/db/sqlite.d.ts.map +1 -1
  66. package/dist/templates/db/sqlite.js +51 -23
  67. package/dist/templates/db/sqlite.js.map +1 -1
  68. package/dist/templates/shadcn.js +1 -1
  69. package/dist/templates/shadcn.js.map +1 -1
  70. package/dist/templates/shared.js +4 -4
  71. package/dist/templates/shared.js.map +1 -1
  72. package/dist/templates/testing.d.ts.map +1 -1
  73. package/dist/templates/testing.js +7 -19
  74. package/dist/templates/testing.js.map +1 -1
  75. package/dist/test-discovery.d.ts +9 -0
  76. package/dist/test-discovery.d.ts.map +1 -0
  77. package/dist/test-discovery.js +40 -0
  78. package/dist/test-discovery.js.map +1 -0
  79. package/package.json +7 -5
  80. package/skills/app-structure/SKILL.md +37 -10
  81. package/src/analysis/layers.ts +4 -2
  82. package/src/analysis/port-wiring.ts +2 -1
  83. package/src/analysis/source-files.ts +61 -0
  84. package/src/analysis/workspace.ts +27 -31
  85. package/src/app-map-changes.ts +10 -8
  86. package/src/app-map.ts +43 -32
  87. package/src/check.ts +115 -25
  88. package/src/git-changes.ts +218 -86
  89. package/src/index.ts +53 -8
  90. package/src/inspect.ts +627 -146
  91. package/src/lint.ts +6 -5
  92. package/src/make.ts +0 -2
  93. package/src/mcp.ts +34 -11
  94. package/src/operational-process.ts +1 -0
  95. package/src/operational-runner.ts +1 -0
  96. package/src/outbox.ts +63 -12
  97. package/src/templates/agents.ts +43 -15
  98. package/src/templates/base.ts +5 -5
  99. package/src/templates/db/mysql.ts +51 -22
  100. package/src/templates/db/postgres.ts +60 -20
  101. package/src/templates/db/sqlite.ts +51 -23
  102. package/src/templates/shadcn.ts +1 -1
  103. package/src/templates/shared.ts +4 -4
  104. package/src/templates/testing.ts +12 -19
  105. package/src/test-discovery.ts +53 -0
@@ -1,6 +1,6 @@
1
1
  import { createHash } from "node:crypto";
2
2
  import { createReadStream } from "node:fs";
3
- import { lstat, readlink } from "node:fs/promises";
3
+ import { lstat, readlink, realpath } from "node:fs/promises";
4
4
  import path from "node:path";
5
5
  import { spawnCommand } from "./db.js";
6
6
  const emptyTreeObjectIds = {
@@ -12,27 +12,20 @@ export async function readGitChangeSet(options) {
12
12
  if (options.base !== undefined && options.base.length === 0) {
13
13
  throw new Error("Git base must not be empty.");
14
14
  }
15
- const repositoryRoot = path.resolve(await gitText(options.cwd, ["rev-parse", "--show-toplevel"]));
16
- const head = await resolveHeadCommit(repositoryRoot);
15
+ const repositoryRoot = path.resolve(await gitText(options.cwd, ["rev-parse", "--show-toplevel"], options.signal));
16
+ const head = await resolveHeadCommit(repositoryRoot, options.signal);
17
17
  let comparison;
18
18
  let comparisonCommit;
19
19
  if (options.base !== undefined) {
20
20
  if (!head) {
21
21
  throw new Error(`Cannot compare --base ${JSON.stringify(options.base)} because this repository does not have a HEAD commit.`);
22
22
  }
23
- const baseCommit = await gitText(repositoryRoot, [
24
- "rev-parse",
25
- "--verify",
26
- "--end-of-options",
27
- `${options.base}^{commit}`,
28
- ]).catch(() => {
23
+ const baseCommit = await gitText(repositoryRoot, ["rev-parse", "--verify", "--end-of-options", `${options.base}^{commit}`], options.signal).catch(() => {
24
+ options.signal?.throwIfAborted();
29
25
  throw new Error(`Could not resolve local Git base ${JSON.stringify(options.base)}. Fetch it before running Beignet; changed mapping never accesses the network.`);
30
26
  });
31
- const mergeBase = await gitText(repositoryRoot, [
32
- "merge-base",
33
- baseCommit,
34
- head,
35
- ]).catch(() => {
27
+ const mergeBase = await gitText(repositoryRoot, ["merge-base", baseCommit, head], options.signal).catch(() => {
28
+ options.signal?.throwIfAborted();
36
29
  throw new Error(`Could not find a merge base between ${JSON.stringify(options.base)} and HEAD.`);
37
30
  });
38
31
  comparisonCommit = mergeBase;
@@ -45,7 +38,8 @@ export async function readGitChangeSet(options) {
45
38
  };
46
39
  }
47
40
  else {
48
- comparisonCommit = head ?? (await emptyTreeObjectId(repositoryRoot));
41
+ comparisonCommit =
42
+ head ?? (await emptyTreeObjectId(repositoryRoot, options.signal));
49
43
  comparison = {
50
44
  mode: "worktree",
51
45
  comparisonCommit,
@@ -53,42 +47,50 @@ export async function readGitChangeSet(options) {
53
47
  };
54
48
  }
55
49
  const committed = comparison.mode === "base"
56
- ? await gitDiffOutput(repositoryRoot, [
57
- comparison.mergeBase,
58
- comparison.head,
59
- ])
50
+ ? await gitDiffOutput(repositoryRoot, [comparison.mergeBase, comparison.head], options.signal)
60
51
  : "";
61
- const staged = await gitDiffOutput(repositoryRoot, [
62
- "--cached",
63
- head ?? comparisonCommit,
64
- ]);
65
- const unstaged = await gitDiffOutput(repositoryRoot, []);
66
- const untracked = await gitOutput(repositoryRoot, [
67
- "ls-files",
68
- "--others",
69
- "--exclude-standard",
70
- "-z",
71
- ]);
52
+ const staged = await gitDiffOutput(repositoryRoot, ["--cached", head ?? comparisonCommit], options.signal);
53
+ const unstaged = await gitDiffOutput(repositoryRoot, [], options.signal);
54
+ const untracked = await gitOutput(repositoryRoot, ["ls-files", "--others", "--exclude-standard", "-z"], options.signal);
72
55
  const files = mergeChangedFiles(parseNameStatus(committed), parseNameStatus(staged), parseNameStatus(unstaged), parseUntracked(untracked));
73
56
  return { repositoryRoot, comparison, files };
74
57
  }
75
- async function emptyTreeObjectId(repositoryRoot) {
76
- const objectFormat = (await tryGitText(repositoryRoot, [
77
- "rev-parse",
78
- "--show-object-format=storage",
79
- ])) ?? "sha1";
58
+ /** Capture Git-backed source state, or report that no worktree is available. */
59
+ export async function readGitSourceSnapshot(options) {
60
+ try {
61
+ const changeSet = await readGitChangeSet(options);
62
+ const repositoryChangeHash = await hashGitChanges(changeSet, changeSet.files, options.signal);
63
+ options.signal?.throwIfAborted();
64
+ return {
65
+ kind: "git",
66
+ repositoryRoot: changeSet.repositoryRoot,
67
+ comparison: changeSet.comparison,
68
+ repositoryChangeHash,
69
+ };
70
+ }
71
+ catch (error) {
72
+ options.signal?.throwIfAborted();
73
+ if (await hasGitMetadata(options.cwd, options.signal))
74
+ throw error;
75
+ options.signal?.throwIfAborted();
76
+ return { kind: "unavailable", reason: "not-a-git-worktree" };
77
+ }
78
+ }
79
+ async function emptyTreeObjectId(repositoryRoot, signal) {
80
+ const objectFormat = (await tryGitText(repositoryRoot, ["rev-parse", "--show-object-format=storage"], signal)) ?? "sha1";
80
81
  const objectId = emptyTreeObjectIds[objectFormat];
81
82
  if (!objectId) {
82
83
  throw new Error(`Unsupported Git object format ${JSON.stringify(objectFormat)}.`);
83
84
  }
84
85
  return objectId;
85
86
  }
86
- export async function hashGitChanges(changeSet, files = changeSet.files) {
87
+ export async function hashGitChanges(changeSet, files = changeSet.files, signal) {
87
88
  const hash = createHash("sha256");
88
- const indexEntries = await readGitIndexEntries(changeSet.repositoryRoot);
89
+ const indexEntries = await readGitIndexEntries(changeSet.repositoryRoot, signal);
89
90
  hash.update(JSON.stringify(changeSet.comparison));
90
91
  hash.update("\0");
91
92
  for (const file of [...files].sort(compareChangedFiles)) {
93
+ signal?.throwIfAborted();
92
94
  hash.update(JSON.stringify({
93
95
  status: file.status,
94
96
  path: file.path,
@@ -100,14 +102,14 @@ export async function hashGitChanges(changeSet, files = changeSet.files) {
100
102
  hash.update("\0index\0");
101
103
  hash.update(indexEntries.get(relativePath) ?? "missing");
102
104
  hash.update("\0worktree\0");
103
- await hashCurrentPath(hash, changeSet.repositoryRoot, relativePath);
105
+ await hashCurrentPath(hash, changeSet.repositoryRoot, relativePath, signal);
104
106
  hash.update("\0");
105
107
  }
106
108
  }
107
109
  return `sha256:${hash.digest("hex")}`;
108
110
  }
109
- async function readGitIndexEntries(repositoryRoot) {
110
- const output = await gitOutput(repositoryRoot, ["ls-files", "--stage", "-z"]);
111
+ async function readGitIndexEntries(repositoryRoot, signal) {
112
+ const output = await gitOutput(repositoryRoot, ["ls-files", "--stage", "-z"], signal);
111
113
  const entries = new Map();
112
114
  for (const field of output.split("\0").filter(Boolean)) {
113
115
  const separator = field.indexOf("\t");
@@ -122,39 +124,35 @@ async function readGitIndexEntries(repositoryRoot) {
122
124
  }
123
125
  return new Map([...entries].map(([file, values]) => [file, [...values].sort().join("\0")]));
124
126
  }
125
- async function hashCurrentPath(hash, repositoryRoot, relativePath) {
127
+ async function hashCurrentPath(hash, repositoryRoot, relativePath, signal) {
128
+ signal?.throwIfAborted();
126
129
  const absolutePath = path.join(repositoryRoot, relativePath);
127
130
  let stats;
128
131
  try {
129
132
  stats = await lstat(absolutePath);
130
133
  }
131
134
  catch (error) {
135
+ signal?.throwIfAborted();
132
136
  if (error.code === "ENOENT") {
133
137
  hash.update("missing");
134
138
  return;
135
139
  }
136
140
  throw error;
137
141
  }
142
+ signal?.throwIfAborted();
138
143
  if (stats.isSymbolicLink()) {
144
+ const target = await readlink(absolutePath);
145
+ signal?.throwIfAborted();
139
146
  hash.update("symlink\0");
140
147
  hash.update(String(stats.mode));
141
148
  hash.update("\0");
142
- hash.update(await readlink(absolutePath));
149
+ hash.update(target);
143
150
  return;
144
151
  }
145
152
  if (stats.isDirectory()) {
146
153
  hash.update("directory\0");
147
- const head = await tryGitText(absolutePath, [
148
- "rev-parse",
149
- "--verify",
150
- "HEAD^{commit}",
151
- ]);
152
- const status = await tryGitOutput(absolutePath, [
153
- "status",
154
- "--porcelain=v1",
155
- "-z",
156
- "--untracked-files=all",
157
- ]);
154
+ const head = await tryGitText(absolutePath, ["rev-parse", "--verify", "HEAD^{commit}"], signal);
155
+ const status = await tryGitOutput(absolutePath, ["status", "--porcelain=v1", "-z", "--untracked-files=all"], signal);
158
156
  hash.update(head ?? "unknown-head");
159
157
  hash.update("\0");
160
158
  hash.update(status ?? "unknown-status");
@@ -167,8 +165,49 @@ async function hashCurrentPath(hash, repositoryRoot, relativePath) {
167
165
  hash.update("file\0");
168
166
  hash.update(String(stats.mode));
169
167
  hash.update("\0");
170
- for await (const chunk of createReadStream(absolutePath)) {
171
- hash.update(chunk);
168
+ try {
169
+ for await (const chunk of createReadStream(absolutePath, { signal })) {
170
+ hash.update(chunk);
171
+ }
172
+ }
173
+ catch (error) {
174
+ signal?.throwIfAborted();
175
+ throw error;
176
+ }
177
+ signal?.throwIfAborted();
178
+ }
179
+ async function hasGitMetadata(cwd, signal) {
180
+ signal?.throwIfAborted();
181
+ if (process.env.GIT_DIR || process.env.GIT_WORK_TREE)
182
+ return true;
183
+ let root = path.resolve(cwd);
184
+ try {
185
+ root = await realpath(root);
186
+ }
187
+ catch (error) {
188
+ signal?.throwIfAborted();
189
+ const code = error.code;
190
+ if (code !== "ENOENT" && code !== "ENOTDIR")
191
+ throw error;
192
+ }
193
+ let current = root;
194
+ while (true) {
195
+ signal?.throwIfAborted();
196
+ try {
197
+ await lstat(path.join(current, ".git"));
198
+ signal?.throwIfAborted();
199
+ return true;
200
+ }
201
+ catch (error) {
202
+ signal?.throwIfAborted();
203
+ const code = error.code;
204
+ if (code !== "ENOENT" && code !== "ENOTDIR")
205
+ throw error;
206
+ }
207
+ const parent = path.dirname(current);
208
+ if (parent === current)
209
+ return false;
210
+ current = parent;
172
211
  }
173
212
  }
174
213
  function parseNameStatus(output) {
@@ -280,65 +319,60 @@ function compareChangedFiles(left, right) {
280
319
  function normalizeGitPath(file) {
281
320
  return process.platform === "win32" ? file.replaceAll("\\", "/") : file;
282
321
  }
283
- async function gitText(cwd, args) {
284
- return (await gitOutput(cwd, args)).trim();
322
+ async function gitText(cwd, args, signal) {
323
+ return stripFinalLineEnding(await gitOutput(cwd, args, signal));
324
+ }
325
+ function stripFinalLineEnding(output) {
326
+ if (output.endsWith("\n"))
327
+ return output.slice(0, -1);
328
+ return output;
285
329
  }
286
- async function resolveHeadCommit(repositoryRoot) {
287
- const head = await runGit(repositoryRoot, [
288
- "rev-parse",
289
- "--verify",
290
- "HEAD^{commit}",
291
- ]);
330
+ async function resolveHeadCommit(repositoryRoot, signal) {
331
+ const head = await runGit(repositoryRoot, ["rev-parse", "--verify", "HEAD^{commit}"], signal);
292
332
  if (head.exitCode === 0)
293
333
  return head.stdout.trim();
294
- const symbolicHead = await runGit(repositoryRoot, [
295
- "symbolic-ref",
296
- "--quiet",
297
- "HEAD",
298
- ]);
334
+ const symbolicHead = await runGit(repositoryRoot, ["symbolic-ref", "--quiet", "HEAD"], signal);
299
335
  if (symbolicHead.exitCode !== 0) {
300
336
  throw gitCommandError(["rev-parse", "--verify", "HEAD^{commit}"], head);
301
337
  }
302
338
  const ref = symbolicHead.stdout.trim();
303
- const refExists = await runGit(repositoryRoot, [
304
- "show-ref",
305
- "--verify",
306
- "--quiet",
307
- ref,
308
- ]);
339
+ const refExists = await runGit(repositoryRoot, ["show-ref", "--verify", "--quiet", ref], signal);
309
340
  if (refExists.exitCode === 1)
310
341
  return undefined;
311
342
  throw gitCommandError(["rev-parse", "--verify", "HEAD^{commit}"], head);
312
343
  }
313
- async function tryGitText(cwd, args) {
344
+ async function tryGitText(cwd, args, signal) {
314
345
  try {
315
- return await gitText(cwd, args);
346
+ return await gitText(cwd, args, signal);
316
347
  }
317
348
  catch {
349
+ signal?.throwIfAborted();
318
350
  return undefined;
319
351
  }
320
352
  }
321
- async function tryGitOutput(cwd, args) {
353
+ async function tryGitOutput(cwd, args, signal) {
322
354
  try {
323
- return await gitOutput(cwd, args);
355
+ return await gitOutput(cwd, args, signal);
324
356
  }
325
357
  catch {
358
+ signal?.throwIfAborted();
326
359
  return undefined;
327
360
  }
328
361
  }
329
- async function gitOutput(cwd, args) {
330
- const result = await runGit(cwd, args);
362
+ async function gitOutput(cwd, args, signal) {
363
+ const result = await runGit(cwd, args, signal);
331
364
  if (result.exitCode !== 0)
332
365
  throw gitCommandError(args, result);
333
366
  return result.stdout;
334
367
  }
335
- async function runGit(cwd, args) {
368
+ async function runGit(cwd, args, signal) {
336
369
  const result = await spawnCommand("git", args, cwd, {
337
370
  captureOutput: true,
338
371
  maxOutputBytes: maxGitOutputBytes,
372
+ signal,
339
373
  });
340
374
  if (result.outputTruncated) {
341
- throw new Error(`Git output exceeded ${maxGitOutputBytes} bytes; changed mapping cannot produce a complete report.`);
375
+ throw new Error(`Git output exceeded ${maxGitOutputBytes} bytes; source inspection cannot produce a complete report.`);
342
376
  }
343
377
  return {
344
378
  ...result,
@@ -350,7 +384,7 @@ function gitCommandError(args, result) {
350
384
  const detail = result.stderr.trim() || result.stdout.trim();
351
385
  return new Error(`Git command failed: git ${args.join(" ")}${detail ? `\n${detail}` : ""}`);
352
386
  }
353
- async function gitDiffOutput(repositoryRoot, comparisonArgs) {
387
+ async function gitDiffOutput(repositoryRoot, comparisonArgs, signal) {
354
388
  return gitOutput(repositoryRoot, [
355
389
  "diff",
356
390
  "--no-ext-diff",
@@ -362,6 +396,6 @@ async function gitDiffOutput(repositoryRoot, comparisonArgs) {
362
396
  "--find-copies-harder",
363
397
  ...comparisonArgs,
364
398
  "--",
365
- ]);
399
+ ], signal);
366
400
  }
367
401
  //# sourceMappingURL=git-changes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"git-changes.js","sourceRoot":"","sources":["../src/git-changes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"git-changes.js","sourceRoot":"","sources":["../src/git-changes.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -3,6 +3,8 @@ import { type CommandContext, type StricliDynamicCommandContext, type StricliPro
3
3
  type CliContext = CommandContext & {
4
4
  readonly process: StricliProcess;
5
5
  };
6
+ /** Every canonical CLI command path, derived from runtime routing definitions. */
7
+ export declare const cliCommandPaths: readonly (readonly string[])[];
6
8
  export declare function main(inputs?: string[], context?: StricliDynamicCommandContext<CliContext>): Promise<void>;
7
9
  export {};
8
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAGA,OAAO,EAIL,KAAK,cAAc,EAInB,KAAK,4BAA4B,EACjC,KAAK,cAAc,EAEpB,MAAM,eAAe,CAAC;AAsCvB,KAAK,UAAU,GAAG,cAAc,GAAG;IACjC,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;CAClC,CAAC;AA46FF,wBAAsB,IAAI,CACxB,MAAM,WAAwB,EAC9B,OAAO,GAAE,4BAA4B,CAAC,UAAU,CAAe,GAC9D,OAAO,CAAC,IAAI,CAAC,CAiBf"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAGA,OAAO,EAIL,KAAK,cAAc,EAKnB,KAAK,4BAA4B,EACjC,KAAK,cAAc,EAEpB,MAAM,eAAe,CAAC;AAsCvB,KAAK,UAAU,GAAG,cAAc,GAAG;IACjC,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;CAClC,CAAC;AAy3EF,kFAAkF;AAClF,eAAO,MAAM,eAAe,EAAE,SAAS,CAAC,SAAS,MAAM,EAAE,CAAC,EAGY,CAAC;AAwlBvE,wBAAsB,IAAI,CACxB,MAAM,WAAwB,EAC9B,OAAO,GAAE,4BAA4B,CAAC,UAAU,CAAe,GAC9D,OAAO,CAAC,IAAI,CAAC,CAoBf"}
package/dist/index.js CHANGED
@@ -179,7 +179,13 @@ const outboxDrainFlagParameters = {
179
179
  kind: "parsed",
180
180
  parse: parsePositiveInteger,
181
181
  optional: true,
182
- brief: "Maximum messages to claim in one drain pass.",
182
+ brief: "Maximum eligible messages to handle in one drain pass.",
183
+ },
184
+ concurrency: {
185
+ kind: "parsed",
186
+ parse: parsePositiveInteger,
187
+ optional: true,
188
+ brief: "Maximum concurrent deliveries; values above one are unordered.",
183
189
  },
184
190
  cwd: cwdFlag,
185
191
  };
@@ -704,7 +710,7 @@ const doctorCommand = buildCommand({
704
710
  const checkCommand = buildCommand({
705
711
  docs: {
706
712
  brief: "Run the full app validation loop as one command.",
707
- fullDescription: "Runs beignet lint, beignet doctor --strict, optional disconnected or connected preflight, and the app's lint, typecheck, and test package scripts through the detected package manager. Every step runs even when an earlier one fails, so one run reports everything. Missing package scripts are skipped, not failed.",
713
+ fullDescription: "Runs beignet lint, beignet doctor --strict, optional disconnected or connected preflight, and the app's lint, typecheck, and test package scripts through the detected package manager. Every step runs even when an earlier one fails, so one run reports everything. Missing package scripts are skipped, not failed. Inside Git, the command fingerprints source before and after validation and fails stale results whose ending fingerprint differs from the baseline.",
708
714
  },
709
715
  parameters: {
710
716
  flags: {
@@ -732,7 +738,7 @@ const checkCommand = buildCommand({
732
738
  },
733
739
  },
734
740
  loader: async () => {
735
- const { checkApp, formatCheckStep, formatCheckSummary } = await import("./check.js");
741
+ const { checkApp, formatCheckProvenance, formatCheckStep, formatCheckSummary, } = await import("./check.js");
736
742
  return async function runCheck(flags) {
737
743
  const color = useColor();
738
744
  const result = await checkApp({
@@ -750,7 +756,7 @@ const checkCommand = buildCommand({
750
756
  });
751
757
  writeOutput(this, flags.json
752
758
  ? JSON.stringify(result, null, 2)
753
- : `\n${formatCheckSummary(result, { color })}`);
759
+ : `\n${formatCheckProvenance(result, { color })}\n${formatCheckSummary(result, { color })}`);
754
760
  if (!result.ok) {
755
761
  this.process.exitCode = 1;
756
762
  }
@@ -1046,10 +1052,14 @@ const outboxDrainCommand = buildCommand({
1046
1052
  cwd: flags.cwd,
1047
1053
  modulePath: flags.module,
1048
1054
  batchSize: flags.batchSize,
1055
+ concurrency: flags.concurrency,
1049
1056
  });
1050
1057
  writeOutput(this, flags.json
1051
1058
  ? JSON.stringify(result, null, 2)
1052
1059
  : outboxDrainNextSteps(result));
1060
+ if (result.result.settlementFailed > 0 || result.result.leaseLost > 0) {
1061
+ this.process.exitCode = 1;
1062
+ }
1053
1063
  };
1054
1064
  },
1055
1065
  });
@@ -1632,6 +1642,21 @@ Run npm create beignet@latest (or bun create beignet) to scaffold a new app.`,
1632
1642
  task: taskRoutes,
1633
1643
  },
1634
1644
  });
1645
+ const completionProposalCommandPath = ["completion", "propose"];
1646
+ function commandPathsFromRouteMap(routeMap, prefix = []) {
1647
+ return routeMap.getAllEntries().flatMap((entry) => {
1648
+ const path = [...prefix, entry.name["convert-camel-to-kebab"]];
1649
+ if ("getAllEntries" in entry.target) {
1650
+ return commandPathsFromRouteMap(entry.target, path);
1651
+ }
1652
+ return [path];
1653
+ });
1654
+ }
1655
+ /** Every canonical CLI command path, derived from runtime routing definitions. */
1656
+ export const cliCommandPaths = [
1657
+ ...commandPathsFromRouteMap(rootRoutes),
1658
+ completionProposalCommandPath,
1659
+ ].sort((left, right) => left.join(" ").localeCompare(right.join(" ")));
1635
1660
  const cli = buildApplication(rootRoutes, {
1636
1661
  name: "beignet",
1637
1662
  versionInfo: {
@@ -1678,7 +1703,10 @@ Result:
1678
1703
  claimed: ${result.result.claimed}
1679
1704
  delivered: ${result.result.delivered}
1680
1705
  retried: ${result.result.retried}
1681
- deadLettered: ${result.result.deadLettered}`;
1706
+ deadLettered: ${result.result.deadLettered}
1707
+ abandonedDeadLettered: ${result.result.abandonedDeadLettered}
1708
+ settlementFailed: ${result.result.settlementFailed}
1709
+ leaseLost: ${result.result.leaseLost}`;
1682
1710
  }
1683
1711
  function formatOutboxDate(value) {
1684
1712
  if (!value)
@@ -2028,7 +2056,8 @@ export async function main(inputs = process.argv.slice(2), context = { process }
2028
2056
  // Shell completion scripts call `beignet completion propose <words...>`.
2029
2057
  // Handle it before stricli parses the inputs: the trailing words are a
2030
2058
  // partial command line, not flags for this CLI.
2031
- if (inputs[0] === "completion" && inputs[1] === "propose") {
2059
+ if (inputs[0] === completionProposalCommandPath[0] &&
2060
+ inputs[1] === completionProposalCommandPath[1]) {
2032
2061
  await writeCompletionProposals(inputs.slice(2), context);
2033
2062
  return;
2034
2063
  }