scoutline 0.16.0 → 0.17.0

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 (58) hide show
  1. package/README.md +47 -0
  2. package/dist/command-invocation.d.ts +2 -2
  3. package/dist/command-invocation.d.ts.map +1 -1
  4. package/dist/command-invocation.js +1 -1
  5. package/dist/command-invocation.js.map +1 -1
  6. package/dist/commands/research.d.ts +45 -0
  7. package/dist/commands/research.d.ts.map +1 -1
  8. package/dist/commands/research.js +152 -4
  9. package/dist/commands/research.js.map +1 -1
  10. package/dist/commands/search.d.ts +11 -0
  11. package/dist/commands/search.d.ts.map +1 -1
  12. package/dist/commands/search.js +31 -2
  13. package/dist/commands/search.js.map +1 -1
  14. package/dist/commands/usage.d.ts +101 -0
  15. package/dist/commands/usage.d.ts.map +1 -0
  16. package/dist/commands/usage.js +228 -0
  17. package/dist/commands/usage.js.map +1 -0
  18. package/dist/commands/vision.d.ts +28 -0
  19. package/dist/commands/vision.d.ts.map +1 -1
  20. package/dist/commands/vision.js +452 -0
  21. package/dist/commands/vision.js.map +1 -1
  22. package/dist/index.d.ts +25 -2
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +572 -10
  25. package/dist/index.js.map +1 -1
  26. package/dist/lib/batch-assign.d.ts +61 -0
  27. package/dist/lib/batch-assign.d.ts.map +1 -0
  28. package/dist/lib/batch-assign.js +118 -0
  29. package/dist/lib/batch-assign.js.map +1 -0
  30. package/dist/lib/batch-manifest.d.ts +183 -0
  31. package/dist/lib/batch-manifest.d.ts.map +1 -0
  32. package/dist/lib/batch-manifest.js +644 -0
  33. package/dist/lib/batch-manifest.js.map +1 -0
  34. package/dist/lib/batch-runner.d.ts +169 -0
  35. package/dist/lib/batch-runner.d.ts.map +1 -0
  36. package/dist/lib/batch-runner.js +357 -0
  37. package/dist/lib/batch-runner.js.map +1 -0
  38. package/dist/lib/consumption.d.ts +17 -0
  39. package/dist/lib/consumption.d.ts.map +1 -1
  40. package/dist/lib/consumption.js +38 -0
  41. package/dist/lib/consumption.js.map +1 -1
  42. package/dist/lib/context-file.d.ts +90 -0
  43. package/dist/lib/context-file.d.ts.map +1 -0
  44. package/dist/lib/context-file.js +244 -0
  45. package/dist/lib/context-file.js.map +1 -0
  46. package/dist/lib/trigger-detection.d.ts +21 -0
  47. package/dist/lib/trigger-detection.d.ts.map +1 -1
  48. package/dist/lib/trigger-detection.js +63 -0
  49. package/dist/lib/trigger-detection.js.map +1 -1
  50. package/dist/lib/usage-ledger.d.ts +221 -0
  51. package/dist/lib/usage-ledger.d.ts.map +1 -0
  52. package/dist/lib/usage-ledger.js +408 -0
  53. package/dist/lib/usage-ledger.js.map +1 -0
  54. package/dist/node-command-invocation-adapter.d.ts +25 -0
  55. package/dist/node-command-invocation-adapter.d.ts.map +1 -1
  56. package/dist/node-command-invocation-adapter.js +73 -38
  57. package/dist/node-command-invocation-adapter.js.map +1 -1
  58. package/package.json +1 -1
@@ -14,8 +14,15 @@
14
14
  * limits stay in the Adapter media Modules. Vision never uses the
15
15
  * response cache (FR-022).
16
16
  */
17
+ import { randomUUID } from "node:crypto";
18
+ import * as path from "node:path";
19
+ import { existsSync } from "node:fs";
20
+ import { mkdir, readdir, readFile, rename, rm, writeFile } from "node:fs/promises";
17
21
  import { executeProviderOperation } from "../lib/execution.js";
18
22
  import { ValidationError } from "../lib/errors.js";
23
+ import { parseBatchManifest } from "../lib/batch-manifest.js";
24
+ import { assignBatchProviders } from "../lib/batch-assign.js";
25
+ import { runBatch } from "../lib/batch-runner.js";
19
26
  import { defaultAmountForCapability } from "../lib/consumption.js";
20
27
  import { isMiniMaxVisionOperationSupported, SPECIALIZED_VISION_OPERATION_SET, } from "../providers/minimax/vision-conformance.js";
21
28
  const DEFAULT_PROMPTS = {
@@ -82,6 +89,11 @@ Commands:
82
89
  chart <image> [prompt] Analyze data visualizations${chartSuffix}
83
90
  diff <expected> <actual> [prompt] Compare two UI screenshots${diffSuffix}
84
91
  video <video> [prompt] Analyze video content${videoSuffix}
92
+ batch <manifest|glob> [options] Run many inputs through the shared
93
+ batch runner (one op per media file,
94
+ distributed across eligible vision
95
+ providers, routing preferences
96
+ ignored; concurrency default 1)
85
97
 
86
98
  Options:
87
99
  --language <lang> Programming language hint (extract-text)
@@ -90,6 +102,15 @@ Options:
90
102
  --focus <focus> Analysis focus (chart)
91
103
  --output <type> Output type for ui-to-code: code, prompt, spec, description
92
104
 
105
+ Vision batch options (batch subcommand only):
106
+ --out <dir> Output directory (required for more than one input;
107
+ created if missing; writes one JSON file per input
108
+ plus <dir>/summary.json)
109
+ --prompt <tpl> Glob-mode prompt template ({filename}/{filepath});
110
+ manifest mode uses the manifest's promptTemplate
111
+ --concurrency <n> Parallel operations (integer 1-8; default 1)
112
+ --dry-run Validate inputs and preview the assignment only
113
+
93
114
  Constraints:
94
115
  Z.AI images: <=5MB, JPG/PNG/JPEG ; Z.AI videos: <=8MB, MP4/MOV/M4V (URLs supported)
95
116
  MiniMax images: <=50MB, JPG/JPEG/PNG/WebP
@@ -103,6 +124,7 @@ Examples:
103
124
  scoutline vision diagram ./arch.png --type architecture
104
125
  scoutline vision diff ./expected.png ./actual.png "Check alignment"
105
126
  scoutline vision video ./demo.mp4 "Summarize the key steps"
127
+ scoutline vision batch './shots/*.png' --out ./out --prompt "Describe {filename}"
106
128
  `.trim();
107
129
  }
108
130
  export const VISION_HELP = buildVisionHelp();
@@ -241,4 +263,434 @@ export async function video(videoSource, prompt, deps, context) {
241
263
  const result = await runVision({ operation: "video", source: videoSource, instruction }, deps);
242
264
  return { kind: "data", data: result };
243
265
  }
266
+ /**
267
+ * D10 media-extension filter: the UNION of the enrolled vision
268
+ * providers' extension sets (Z.AI image `.jpg/.jpeg/.png` + video
269
+ * `.mp4/.mov/.m4v/.avi/.webm/.wmv`, MiniMax image `.jpg/.jpeg/.png/
270
+ * .webp`) so no file any eligible provider accepts is silently dropped
271
+ * at expansion — a provider that cannot accept a given op's file
272
+ * rejects it inside the handler as a per-op failure.
273
+ */
274
+ const VISION_BATCH_ZAI_IMAGE_EXTENSIONS = new Set([
275
+ ".jpg",
276
+ ".jpeg",
277
+ ".png",
278
+ ]);
279
+ /**
280
+ * Image extensions any ELIGIBLE provider accepts for an image
281
+ * operation: Z.AI's `.jpg/.jpeg/.png` plus MiniMax's `.webp`. Kept as a
282
+ * per-operation union (not the full media union) so dry-run extension
283
+ * validation can be operation-aware (review fix).
284
+ */
285
+ const VISION_BATCH_IMAGE_EXTENSIONS = new Set([
286
+ ...VISION_BATCH_ZAI_IMAGE_EXTENSIONS,
287
+ ".webp",
288
+ ]);
289
+ /** Video extensions (D10): these infer the `video` subcommand. */
290
+ const VISION_BATCH_VIDEO_EXTENSIONS = new Set([
291
+ ".mp4",
292
+ ".mov",
293
+ ".m4v",
294
+ ".avi",
295
+ ".webm",
296
+ ".wmv",
297
+ ]);
298
+ /**
299
+ * D10 media-extension filter: the UNION of the enrolled vision
300
+ * providers' image and video sets so no file any eligible provider
301
+ * accepts is silently dropped at expansion — a provider that cannot
302
+ * accept a given op's file rejects it inside the handler as a per-op
303
+ * failure.
304
+ */
305
+ const VISION_BATCH_MEDIA_EXTENSIONS = new Set([
306
+ ...VISION_BATCH_IMAGE_EXTENSIONS,
307
+ ...VISION_BATCH_VIDEO_EXTENSIONS,
308
+ ]);
309
+ /**
310
+ * Per-operation dry-run extension set (review fix): `video` sources are
311
+ * video files, `diff` is advertised only by Z.AI (its image set —
312
+ * MiniMax's `.webp` never applies), and every other vision operation is
313
+ * an image operation served by the image union. Keeps `--dry-run` from
314
+ * reporting ready for media the real handler will reject, while
315
+ * provider-specific acceptance WITHIN an operation class (e.g. `.webp`
316
+ * on Z.AI analyze) still defers to the handler per D10's rationale.
317
+ */
318
+ function visionBatchAcceptedExtensions(subcommand) {
319
+ if (subcommand === "video")
320
+ return VISION_BATCH_VIDEO_EXTENSIONS;
321
+ if (subcommand === "diff")
322
+ return VISION_BATCH_ZAI_IMAGE_EXTENSIONS;
323
+ return VISION_BATCH_IMAGE_EXTENSIONS;
324
+ }
325
+ /** Flags `vision batch` itself accepts (the D1 surface; strict). */
326
+ const VISION_BATCH_FLAGS = new Set([
327
+ "help",
328
+ "h",
329
+ "out",
330
+ "prompt",
331
+ "concurrency",
332
+ "dry-run",
333
+ ]);
334
+ function isPlainRecord(value) {
335
+ return typeof value === "object" && value !== null && !Array.isArray(value);
336
+ }
337
+ /**
338
+ * D10 op-name sanitization: runs of characters outside `[A-Za-z0-9._-]`
339
+ * collapse to one `_`, the result truncates to 64 chars (D2's op-name
340
+ * ceiling).
341
+ */
342
+ function sanitizeVisionBatchName(basename) {
343
+ return basename.replace(/[^A-Za-z0-9._-]+/g, "_").slice(0, 64);
344
+ }
345
+ /**
346
+ * Hand-rolled single-directory glob matcher: `*` and `?` only (no
347
+ * `**` — the wrapper rejects recursive globs up front), anchored to
348
+ * the full leaf segment.
349
+ */
350
+ function visionBatchGlobToRegExp(pattern) {
351
+ let source = "";
352
+ for (const ch of pattern) {
353
+ if (ch === "*") {
354
+ source += "[^/]*";
355
+ }
356
+ else if (ch === "?") {
357
+ source += "[^/]";
358
+ }
359
+ else {
360
+ source += ch.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
361
+ }
362
+ }
363
+ return new RegExp(`^${source}$`);
364
+ }
365
+ /**
366
+ * Expand a single-directory glob into op inputs (D10): lexicographic
367
+ * order, media-extension filter, extension-driven subcommand
368
+ * inference, name sanitization with collision rejection naming both
369
+ * files. Zero matches reject — an empty batch is never run.
370
+ */
371
+ async function expandVisionBatchGlob(glob) {
372
+ if (glob.includes("**")) {
373
+ throw new ValidationError(`vision batch globs are single-directory only: "**" is not supported ("${glob}")`, "Point the glob at one directory, e.g. 'shots/*.png'.");
374
+ }
375
+ const directory = path.dirname(glob);
376
+ const leaf = path.basename(glob);
377
+ let entries;
378
+ try {
379
+ entries = await readdir(directory, { withFileTypes: true });
380
+ }
381
+ catch (error) {
382
+ const message = error instanceof Error ? error.message : String(error);
383
+ throw new ValidationError(`failed to expand vision batch glob "${glob}": ${message}`);
384
+ }
385
+ const matcher = visionBatchGlobToRegExp(leaf);
386
+ const inputs = [];
387
+ for (const name of entries
388
+ .filter((entry) => entry.isFile() && matcher.test(entry.name))
389
+ .map((entry) => entry.name)
390
+ .sort()) {
391
+ const ext = path.extname(name).toLowerCase();
392
+ // The union filter: a non-media extension never becomes an op.
393
+ if (!VISION_BATCH_MEDIA_EXTENSIONS.has(ext))
394
+ continue;
395
+ inputs.push({
396
+ file: path.resolve(directory, name),
397
+ opName: sanitizeVisionBatchName(name),
398
+ subcommand: VISION_BATCH_VIDEO_EXTENSIONS.has(ext) ? "video" : "analyze",
399
+ });
400
+ }
401
+ if (inputs.length === 0) {
402
+ throw new ValidationError(`vision batch glob "${glob}" matched no media files`, `Accepted extensions: ${[...VISION_BATCH_MEDIA_EXTENSIONS].sort().join(" ")}.`);
403
+ }
404
+ const seen = new Map();
405
+ for (const input of inputs) {
406
+ const prior = seen.get(input.opName);
407
+ if (prior !== undefined) {
408
+ throw new ValidationError(`vision batch name collision: "${prior}" and "${input.file}" both sanitize to "${input.opName}"`, "Rename one of the inputs so every op name is unique.");
409
+ }
410
+ seen.set(input.opName, input.file);
411
+ }
412
+ return inputs;
413
+ }
414
+ /**
415
+ * `{filename}` → basename, `{filepath}` → the op's source path (an
416
+ * absolute path in glob mode; the manifest's own `source` verbatim in
417
+ * manifest mode). Callback replacements insert the source text
418
+ * LITERALLY — a replacement string would treat `$&`, `$\``, or `$'` in
419
+ * a filename as replacement tokens and corrupt the prompt.
420
+ */
421
+ function substituteVisionBatchPrompt(template, source) {
422
+ return template
423
+ .replaceAll("{filename}", () => path.basename(source))
424
+ .replaceAll("{filepath}", () => source);
425
+ }
426
+ /**
427
+ * `--concurrency` for vision batch: integer in 1..8 with a default of 1
428
+ * (D8 — vision is credit-heavy), validated at the wrapper so the error
429
+ * names vision batch's own default.
430
+ */
431
+ function parseVisionBatchConcurrency(raw) {
432
+ if (raw === undefined)
433
+ return 1;
434
+ const value = typeof raw === "string" ? Number(raw) : Number.NaN;
435
+ if (!Number.isInteger(value) || value < 1 || value > 8) {
436
+ throw new ValidationError("vision batch concurrency must be an integer between 1 and 8", "Omit --concurrency for the default of 1, or pass an integer in 1..8.");
437
+ }
438
+ return value;
439
+ }
440
+ /**
441
+ * `vision batch <manifest|glob>` (batch-runner DESIGN D10, Ticket 7).
442
+ *
443
+ * The wrapper NEVER resolves a vision provider and never calls
444
+ * `descriptor.create()` — per-op assignment happens inside the shared
445
+ * runner (D4), exactly as in `scoutline batch`. It owns: strict flag
446
+ * surface, input discrimination (manifest vs glob), glob expansion
447
+ * (single directory, lexicographic, media union, sanitization,
448
+ * collisions), `promptTemplate` extraction from the RAW manifest JSON
449
+ * before the strict D2 parse (a wrapper field, not a D2 schema field),
450
+ * the `--out` contract (per-input `output` targets + the wrapper's own
451
+ * `<out>/summary.json` write after the runner returns — the only extra
452
+ * write path), concurrency default 1, and the dry-run boundary
453
+ * (existence + extension validation only; media size validation stays
454
+ * in the handler). The shared runner still performs the ONE stdout
455
+ * write (the summary envelope); the wrapper adds none.
456
+ */
457
+ export async function handleVisionBatch(positional, flags, outputMode, deps, handlers) {
458
+ // Unknown flags reject BEFORE the help short-circuit (the
459
+ // handleBatch precedent: parseArgs would otherwise swallow the
460
+ // input into the unknown flag and render help instead of naming
461
+ // the offender).
462
+ for (const key of Object.keys(flags)) {
463
+ if (!VISION_BATCH_FLAGS.has(key)) {
464
+ throw new ValidationError(`unknown vision batch flag "--${key}"`, 'Run "scoutline vision --help" for the accepted flags.');
465
+ }
466
+ }
467
+ // Boolean-only flags never take a value: `--dry-run false` would
468
+ // otherwise silently disable the safety boundary and RUN providers.
469
+ if (flags["dry-run"] !== undefined && flags["dry-run"] !== true) {
470
+ throw new ValidationError("--dry-run is a boolean flag and takes no value", "Pass the bare --dry-run to enable it, or omit it.");
471
+ }
472
+ // A valueless `--prompt` must reject rather than silently fall back
473
+ // to the default prompt (the template is the user's whole intent).
474
+ if (flags.prompt === true) {
475
+ throw new ValidationError("--prompt requires a template", 'Pass e.g. --prompt "Describe {filename} in detail."');
476
+ }
477
+ if (flags.help || flags.h || positional.length === 0) {
478
+ deps.invocation.writeStdout(VISION_HELP);
479
+ return 0;
480
+ }
481
+ if (positional.length > 1) {
482
+ throw new ValidationError("vision batch takes exactly one input (a manifest file or a single-directory glob)");
483
+ }
484
+ const dryRun = flags["dry-run"] === true;
485
+ if (flags.out === true) {
486
+ throw new ValidationError("--out requires a directory path");
487
+ }
488
+ const outDir = typeof flags.out === "string" ? flags.out : undefined;
489
+ const concurrency = parseVisionBatchConcurrency(flags.concurrency);
490
+ const input = positional[0] ?? "";
491
+ // `--out <dir>` creates its directory (recursively) so the strict D2
492
+ // dirname-existence check passes for the wrapper-generated targets —
493
+ // the user is never required to pre-create the output directory.
494
+ if (outDir !== undefined) {
495
+ try {
496
+ await mkdir(outDir, { recursive: true });
497
+ }
498
+ catch (error) {
499
+ const message = error instanceof Error ? error.message : String(error);
500
+ throw new ValidationError(`failed to create vision batch --out directory "${outDir}": ${message}`);
501
+ }
502
+ }
503
+ /**
504
+ * The wrapper's own `<out>/summary.json` write reserves the name: an
505
+ * op whose per-input target would land on `summary.json` would be
506
+ * silently overwritten by (or silently overwrite) the summary, losing
507
+ * one captured result.
508
+ */
509
+ const assertNotReservedOpName = (opName, detail) => {
510
+ if (outDir !== undefined && opName === "summary") {
511
+ throw new ValidationError(`vision batch operation name "summary" is reserved when --out is used ` +
512
+ `(the wrapper writes ${path.join(outDir, "summary.json")}); ${detail}`, "Rename the input or manifest operation so per-input results do not collide with summary.json.");
513
+ }
514
+ };
515
+ let manifest;
516
+ let manifestPromptTemplate;
517
+ // Input discrimination (D10): a `.json` path without glob
518
+ // metacharacters is a manifest; everything else is a glob.
519
+ const looksLikeManifest = !input.includes("*") && !input.includes("?") && input.toLowerCase().endsWith(".json");
520
+ if (looksLikeManifest) {
521
+ let rawText;
522
+ try {
523
+ rawText = await readFile(input, "utf8");
524
+ }
525
+ catch (error) {
526
+ const message = error instanceof Error ? error.message : String(error);
527
+ throw new ValidationError(`failed to read vision batch manifest "${input}": ${message}`);
528
+ }
529
+ let raw;
530
+ try {
531
+ raw = JSON.parse(rawText);
532
+ }
533
+ catch (error) {
534
+ const message = error instanceof Error ? error.message : String(error);
535
+ throw new ValidationError(`vision batch manifest is not valid JSON: ${message}`);
536
+ }
537
+ if (!isPlainRecord(raw)) {
538
+ throw new ValidationError("vision batch manifest must be a JSON object");
539
+ }
540
+ // `promptTemplate` is a WRAPPER-level field, not a D2 schema field:
541
+ // extract it from the raw JSON BEFORE the strict parse so plain
542
+ // `batch` manifests still reject it as an unknown top-level field.
543
+ if ("promptTemplate" in raw) {
544
+ if (typeof raw.promptTemplate !== "string") {
545
+ throw new ValidationError('vision batch manifest "promptTemplate" must be a string');
546
+ }
547
+ manifestPromptTemplate = raw.promptTemplate;
548
+ delete raw.promptTemplate;
549
+ }
550
+ // Wrapper shape gate (D10): exactly one op, and it must be vision.
551
+ if (!Array.isArray(raw.operations)) {
552
+ throw new ValidationError("vision batch manifest must carry an operations array");
553
+ }
554
+ if (raw.operations.length !== 1) {
555
+ throw new ValidationError(`vision batch manifest must contain exactly one operation (found ${raw.operations.length})`);
556
+ }
557
+ const rawOp = raw.operations[0];
558
+ if (!isPlainRecord(rawOp) || rawOp.command !== "vision") {
559
+ throw new ValidationError('vision batch manifest operation must have "command": "vision"');
560
+ }
561
+ // Reserved-name gate runs BEFORE the strict parse: a manifest op
562
+ // named "summary" with --out would collide with summary.json.
563
+ if (typeof rawOp.name === "string") {
564
+ assertNotReservedOpName(rawOp.name, `manifest operation "${rawOp.name}"`);
565
+ }
566
+ // `--out` overrides the op's own output target (never rejected),
567
+ // set BEFORE the strict parse so the D2 dirname-existence check
568
+ // covers it.
569
+ if (outDir !== undefined && typeof rawOp.name === "string") {
570
+ rawOp.output = path.join(outDir, `${rawOp.name}.json`);
571
+ }
572
+ manifest = parseBatchManifest(raw, {
573
+ descriptors: deps.providerDescriptors,
574
+ dirExists: (dir) => existsSync(dir),
575
+ });
576
+ // `promptTemplate` overrides `input.prompt`, substituted against
577
+ // the op's own `source`.
578
+ if (manifestPromptTemplate !== undefined) {
579
+ const op = manifest.operations[0];
580
+ if (typeof op.input.source !== "string" &&
581
+ (manifestPromptTemplate.includes("{filename}") ||
582
+ manifestPromptTemplate.includes("{filepath}"))) {
583
+ // Review fix: {filename}/{filepath} substitute against the op's
584
+ // own single `input.source` (D10); diff carries expected/actual
585
+ // instead — leaving tokens unsubstituted would send them to the
586
+ // provider verbatim. Token-free templates need no substitution
587
+ // and pass through untouched.
588
+ throw new ValidationError(`vision batch promptTemplate {filename}/{filepath} need a single input.source, but subcommand "${op.input.subcommand}" uses expected/actual`, "Use the literal file names in the template, or drop {filename}/{filepath}.");
589
+ }
590
+ const substituted = typeof op.input.source === "string"
591
+ ? substituteVisionBatchPrompt(manifestPromptTemplate, op.input.source)
592
+ : manifestPromptTemplate;
593
+ manifest = {
594
+ schemaVersion: 1,
595
+ operations: [{ ...op, input: { ...op.input, prompt: substituted } }],
596
+ };
597
+ }
598
+ }
599
+ else {
600
+ const inputs = await expandVisionBatchGlob(input);
601
+ for (const entry of inputs) {
602
+ assertNotReservedOpName(entry.opName, `input file "${entry.file}"`);
603
+ }
604
+ if (inputs.length > 1 && outDir === undefined) {
605
+ throw new ValidationError(`--out is required when the vision batch input matches more than one file (matched ${inputs.length})`, "Pass --out <dir>; per-input results land next to <dir>/summary.json.");
606
+ }
607
+ // `--prompt` is glob-mode only (manifest mode ignores it — the
608
+ // manifest's `promptTemplate` is the only template source there).
609
+ const promptTemplate = typeof flags.prompt === "string" ? flags.prompt : undefined;
610
+ const raw = {
611
+ schemaVersion: 1,
612
+ operations: inputs.map((entry) => ({
613
+ name: entry.opName,
614
+ command: "vision",
615
+ input: {
616
+ subcommand: entry.subcommand,
617
+ source: entry.file,
618
+ ...(promptTemplate !== undefined
619
+ ? { prompt: substituteVisionBatchPrompt(promptTemplate, entry.file) }
620
+ : {}),
621
+ },
622
+ ...(outDir !== undefined ? { output: path.join(outDir, `${entry.opName}.json`) } : {}),
623
+ })),
624
+ };
625
+ manifest = parseBatchManifest(raw, {
626
+ descriptors: deps.providerDescriptors,
627
+ dirExists: (dir) => existsSync(dir),
628
+ });
629
+ }
630
+ // Dry-run boundary (D10): existence + extension validation ONLY —
631
+ // media SIZE validation stays inside the handler. Local paths only;
632
+ // URL sources are the provider's to validate. A `diff` op validates
633
+ // BOTH of its sources (`expected` + `actual`), not `input.source`,
634
+ // which diff ops do not carry.
635
+ if (dryRun) {
636
+ for (const op of manifest.operations) {
637
+ const input = op.input;
638
+ const sources = input.subcommand === "diff" ? [input.expected, input.actual] : [input.source];
639
+ for (const source of sources) {
640
+ if (typeof source !== "string" || /^https?:\/\//i.test(source))
641
+ continue;
642
+ if (!existsSync(source)) {
643
+ throw new ValidationError(`vision batch dry run: input file not found: "${source}"`, "Fix the source path, or drop --dry-run to let the handler report it per op.");
644
+ }
645
+ const ext = path.extname(source).toLowerCase();
646
+ const accepted = visionBatchAcceptedExtensions(input.subcommand);
647
+ if (!accepted.has(ext)) {
648
+ throw new ValidationError(`vision batch dry run: extension "${ext || "(none)"}" is not accepted for vision subcommand "${input.subcommand}" (source "${source}")`, `Accepted extensions for ${input.subcommand}: ${[...accepted].sort().join(" ")}.`);
649
+ }
650
+ }
651
+ }
652
+ }
653
+ // Per-op assignment happens HERE (D4), never at the `handleVision`
654
+ // seam: precedence per-op pin > global --provider > distribution.
655
+ const assignments = assignBatchProviders(manifest, {
656
+ descriptors: deps.providerDescriptors,
657
+ env: deps.env,
658
+ globalProvider: deps.provider,
659
+ });
660
+ const { envelope, exitCode } = await runBatch(manifest, assignments, {
661
+ handlerDeps: deps,
662
+ handlers,
663
+ invocation: deps.invocation,
664
+ outputMode,
665
+ now: deps.now,
666
+ }, { concurrency, dryRun });
667
+ // The wrapper's one extra write path: `<out>/summary.json` after the
668
+ // runner returns, through the SAME write-temp-then-rename seam the
669
+ // runner uses for per-op outputs so a concurrent reader never
670
+ // observes a truncated summary. Dry runs write nothing (D7), so the
671
+ // summary file appears only in real runs.
672
+ if (outDir !== undefined && !dryRun) {
673
+ const summaryPath = path.join(outDir, "summary.json");
674
+ // Unique temp name (review fix, mirroring the runner's per-op
675
+ // temps): a fixed "<summary>.tmp" is predictable — a concurrent
676
+ // vision batch run against the same --out would clobber it, and a
677
+ // failed write's cleanup could then remove the other run's temp.
678
+ const tempPath = `${summaryPath}.tmp-${randomUUID()}`;
679
+ try {
680
+ await writeFile(tempPath, `${JSON.stringify(envelope, null, 2)}\n`, "utf8");
681
+ await rename(tempPath, summaryPath);
682
+ }
683
+ catch (error) {
684
+ try {
685
+ await rm(tempPath, { force: true });
686
+ }
687
+ catch {
688
+ // Best-effort cleanup of an already-failing write.
689
+ }
690
+ const message = error instanceof Error ? error.message : String(error);
691
+ throw new ValidationError(`failed to write vision batch summary "${summaryPath}": ${message}`);
692
+ }
693
+ }
694
+ return exitCode;
695
+ }
244
696
  //# sourceMappingURL=vision.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"vision.js","sourceRoot":"","sources":["../../src/commands/vision.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vision.js","sourceRoot":"","sources":["../../src/commands/vision.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -226,6 +226,28 @@ export declare function parseAndValidateType(raw: unknown): "video" | undefined;
226
226
  * envelope with exit 1.
227
227
  */
228
228
  export declare function handleCache(args: string[], outputMode: OutputMode, deps: HandlerDependencies): Promise<number>;
229
+ /**
230
+ * `scoutline usage [--days N] [--provider <id>]` — report the local
231
+ * usage ledger (usage-ledger plan, Ticket 5). Credential-free and
232
+ * read-only: like `cache` it bypasses Provider resolution entirely, and
233
+ * like `handleCache` it keeps the injection-free posture — the ledger
234
+ * path resolves at handler time via
235
+ * `resolveConfigRootPure(deps.env, ...)` (no new `MainDependencies`
236
+ * field, no injected reader object). Production reads
237
+ * `readUsageLedger(resolveUsageLedgerPath(...))` with DEFAULT deps
238
+ * (real reader, no `onWarning`) so DESIGN D8's silent-on-corrupt
239
+ * contract holds: a missing, corrupt, or wrong-version ledger yields an
240
+ * empty window with exit 0 and no stderr noise.
241
+ *
242
+ * Flag contract (DESIGN D8): `--days` must be an integer ≥ 1 (unlike
243
+ * `--count`, 0 is invalid) and defaults to 7; `--provider` must be a
244
+ * known registry id (unknown ids are a VALIDATION_ERROR listing the
245
+ * accepted ids; a known-but-unrecorded id is an empty result, exit 0).
246
+ * `--provider` may appear before or after the command token —
247
+ * `extractGlobalOptions` strips it either way, so the handler recovers
248
+ * it from `deps.provider` (same recovery as `cache prune`).
249
+ */
250
+ export declare function handleUsage(args: string[], outputMode: OutputMode, deps: HandlerDependencies): Promise<number>;
229
251
  export interface MainDependencies {
230
252
  readonly invocation: CommandInvocationAdapter;
231
253
  readonly env: NodeJS.ProcessEnv;
@@ -393,8 +415,9 @@ export interface MainDependencies {
393
415
  readonly verificationRecords?: Partial<Record<ProviderId, ProviderVerificationSummary>>;
394
416
  /**
395
417
  * Optional injectable consumption sink (PB-T2 — Plan B). Production
396
- * defaults to `createQuotaStoreConsumptionSink({ store: quotaStore })`
397
- * (writes through PB-T1's store, advancing `locallyUpdatedAt` and
418
+ * defaults to `createCompositeConsumptionSink(quotaStoreSink,
419
+ * usageLedgerSink)` — the PB-T1 snapshot store (advancing
420
+ * `locallyUpdatedAt` and
398
421
  * adjusting the matching category's count set); tests inject an
399
422
  * in-memory double so event-sequence assertions stay hermetic.
400
423
  *
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAmDH,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAiBxE,OAAO,EAA8B,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAW9E,OAAO,EAEL,KAAK,wBAAwB,EAE9B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAwB,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAI1E,OAAO,EAOL,KAAK,eAAe,EACrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAIL,KAAK,0BAA0B,EAC/B,KAAK,cAAc,EAEpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAGL,KAAK,UAAU,EACf,KAAK,UAAU,EAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AACjF,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,sBAAsB,CAAC;AAY9B,OAAO,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAK3E,OAAO,EAIL,KAAK,gBAAgB,EACrB,KAAK,WAAW,EACjB,MAAM,oBAAoB,CAAC;AA0T5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,UAAU,EAAE,wBAAwB,CAAC;IAC9C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAC3B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,mBAAmB,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAC5D,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,CAAC,CAAC,CAAC;IACnE;;;;;;;;OAQG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC;IACpC,QAAQ,CAAC,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,QAAQ,CAAC,YAAY,EAAE,MAAM,MAAM,CAAC;IACpC,QAAQ,CAAC,eAAe,EAAE,aAAa,CAAC;IACxC,QAAQ,CAAC,eAAe,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,QAAQ,CAAC,gBAAgB,EAAE,MAAM,MAAM,CAAC;IACxC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC;IACpC,QAAQ,CAAC,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,QAAQ,CAAC,YAAY,EAAE,MAAM,MAAM,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC;IACnC,QAAQ,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,QAAQ,CAAC,WAAW,EAAE,MAAM,MAAM,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,QAAQ,CAAC,SAAS,EAAE,MAAM,MAAM,CAAC;IACjC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IACtC,QAAQ,CAAC,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,QAAQ,CAAC,cAAc,EAAE,MAAM,MAAM,CAAC;IACtC;;;;;;OAMG;IACH,QAAQ,CAAC,yBAAyB,CAAC,EAAE,CACnC,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,KAClB,CAAC,KAAK,EAAE,MAAM,IAAI,KAAK,MAAM,IAAI,CAAC;IACvC;;;;;OAKG;IACH,QAAQ,CAAC,oBAAoB,CAAC,EAAE,0BAA0B,CAAC;IAC3D;;;;;;;OAOG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,eAAe,CAAC;IACnC;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;IACjC;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;IACjC;;;;;;;OAOG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,2BAA2B,CAAC,CAAC,CAAC;IACxF;;;;;;;OAOG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,SAAS,EAAE,cAAc,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAClF;AAiND;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAuBtE;AAID;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,CAgB9F;AAID;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,CAatE;AAinDD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,EAAE,EACd,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,mBAAmB,GACxB,OAAO,CAAC,MAAM,CAAC,CA2HjB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,EAAE,EACd,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,mBAAmB,GACxB,OAAO,CAAC,MAAM,CAAC,CAmFjB;AAmID,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,UAAU,EAAE,wBAAwB,CAAC;IAC9C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IAChC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IAC5B;;;;OAIG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAC7D;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,OAAO,CAAC,eAAe,CAAC,CAAC;IAC9D;;;;;;OAMG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC;;;;OAIG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,aAAa,CAAC;IACrC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,MAAM,CAAC;IACrC;;;;;;OAMG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,aAAa,CAAC;IACzC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,MAAM,CAAC;IACzC;;;;;;OAMG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,aAAa,CAAC;IACrC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,MAAM,CAAC;IACrC;;;;;;OAMG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,aAAa,CAAC;IACpC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,MAAM,CAAC;IACpC;;;;;;OAMG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC;IAClC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,MAAM,CAAC;IAClC;;;;;;OAMG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC;IACvC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,MAAM,CAAC;IACvC;;;;;;;;;OASG;IACH,QAAQ,CAAC,yBAAyB,CAAC,EAAE,CACnC,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,KAClB,CAAC,KAAK,EAAE,MAAM,IAAI,KAAK,MAAM,IAAI,CAAC;IACvC;;;;;OAKG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;IACnC;;;;;;OAMG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,gBAAgB,CAAC,aAAa,CAAC,CAAC;IAC3D;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,oBAAoB,CAAC,EAAE,0BAA0B,CAAC;IAC3D;;;;;;;;OAQG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,cAAc,CAAC;IACzC;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;IACjC;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,2BAA2B,CAAC,CAAC,CAAC;IACxF;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,eAAe,CAAC;IACnC;;;;;;;;;;;;;;;OAeG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;IACjC;;;;;;;OAOG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,SAAS,EAAE,cAAc,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAClF;AAqCD,wBAAsB,IAAI,CACxB,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,YAAY,EAAE,gBAAgB,GAC7B,OAAO,CAAC,MAAM,CAAC,CAgpBjB"}