@wildorder/nightshift 0.16.0 → 0.18.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 (109) hide show
  1. package/README.md +289 -1
  2. package/dist/agent-runner.d.ts +95 -5
  3. package/dist/agent-runner.d.ts.map +1 -1
  4. package/dist/agent-runner.js +442 -32
  5. package/dist/agent-runner.js.map +1 -1
  6. package/dist/agent-session.d.ts +123 -0
  7. package/dist/agent-session.d.ts.map +1 -0
  8. package/dist/agent-session.js +114 -0
  9. package/dist/agent-session.js.map +1 -0
  10. package/dist/atomic-write.d.ts +18 -0
  11. package/dist/atomic-write.d.ts.map +1 -0
  12. package/dist/atomic-write.js +74 -0
  13. package/dist/atomic-write.js.map +1 -0
  14. package/dist/author.d.ts +118 -4
  15. package/dist/author.d.ts.map +1 -1
  16. package/dist/author.js +650 -163
  17. package/dist/author.js.map +1 -1
  18. package/dist/causal-analysis.d.ts +216 -0
  19. package/dist/causal-analysis.d.ts.map +1 -0
  20. package/dist/causal-analysis.js +786 -0
  21. package/dist/causal-analysis.js.map +1 -0
  22. package/dist/cli.js +22 -2
  23. package/dist/cli.js.map +1 -1
  24. package/dist/concurrency.d.ts +24 -0
  25. package/dist/concurrency.d.ts.map +1 -0
  26. package/dist/concurrency.js +28 -0
  27. package/dist/concurrency.js.map +1 -0
  28. package/dist/decider-review.d.ts +13 -1
  29. package/dist/decider-review.d.ts.map +1 -1
  30. package/dist/decider-review.js +21 -7
  31. package/dist/decider-review.js.map +1 -1
  32. package/dist/decision-ledger.d.ts +7 -0
  33. package/dist/decision-ledger.d.ts.map +1 -1
  34. package/dist/decision-ledger.js +25 -10
  35. package/dist/decision-ledger.js.map +1 -1
  36. package/dist/detect-package-manager.d.ts +10 -0
  37. package/dist/detect-package-manager.d.ts.map +1 -1
  38. package/dist/detect-package-manager.js +12 -0
  39. package/dist/detect-package-manager.js.map +1 -1
  40. package/dist/index.d.ts +8 -1
  41. package/dist/index.d.ts.map +1 -1
  42. package/dist/index.js +8 -1
  43. package/dist/index.js.map +1 -1
  44. package/dist/manifest.d.ts +24 -5
  45. package/dist/manifest.d.ts.map +1 -1
  46. package/dist/manifest.js +254 -108
  47. package/dist/manifest.js.map +1 -1
  48. package/dist/permits.d.ts +18 -0
  49. package/dist/permits.d.ts.map +1 -1
  50. package/dist/permits.js +155 -0
  51. package/dist/permits.js.map +1 -1
  52. package/dist/preflight.d.ts +3 -0
  53. package/dist/preflight.d.ts.map +1 -1
  54. package/dist/preflight.js +73 -57
  55. package/dist/preflight.js.map +1 -1
  56. package/dist/prompt-telemetry.d.ts +64 -0
  57. package/dist/prompt-telemetry.d.ts.map +1 -0
  58. package/dist/prompt-telemetry.js +112 -0
  59. package/dist/prompt-telemetry.js.map +1 -0
  60. package/dist/provider-telemetry.d.ts +106 -0
  61. package/dist/provider-telemetry.d.ts.map +1 -0
  62. package/dist/provider-telemetry.js +423 -0
  63. package/dist/provider-telemetry.js.map +1 -0
  64. package/dist/review-pass.d.ts +52 -10
  65. package/dist/review-pass.d.ts.map +1 -1
  66. package/dist/review-pass.js +114 -30
  67. package/dist/review-pass.js.map +1 -1
  68. package/dist/run-analytics-report.d.ts +286 -0
  69. package/dist/run-analytics-report.d.ts.map +1 -0
  70. package/dist/run-analytics-report.js +1242 -0
  71. package/dist/run-analytics-report.js.map +1 -0
  72. package/dist/run-analytics.d.ts +844 -0
  73. package/dist/run-analytics.d.ts.map +1 -0
  74. package/dist/run-analytics.js +777 -0
  75. package/dist/run-analytics.js.map +1 -0
  76. package/dist/run-log.d.ts +16 -0
  77. package/dist/run-log.d.ts.map +1 -0
  78. package/dist/run-log.js +32 -0
  79. package/dist/run-log.js.map +1 -0
  80. package/dist/run-program.d.ts +268 -4
  81. package/dist/run-program.d.ts.map +1 -1
  82. package/dist/run-program.js +2508 -762
  83. package/dist/run-program.js.map +1 -1
  84. package/dist/scheduler.d.ts +75 -0
  85. package/dist/scheduler.d.ts.map +1 -0
  86. package/dist/scheduler.js +126 -0
  87. package/dist/scheduler.js.map +1 -0
  88. package/dist/verify-cache.d.ts +64 -0
  89. package/dist/verify-cache.d.ts.map +1 -0
  90. package/dist/verify-cache.js +56 -0
  91. package/dist/verify-cache.js.map +1 -0
  92. package/dist/whole-program-review.d.ts +3 -0
  93. package/dist/whole-program-review.d.ts.map +1 -1
  94. package/dist/whole-program-review.js +8 -1
  95. package/dist/whole-program-review.js.map +1 -1
  96. package/dist/worktree.d.ts +124 -0
  97. package/dist/worktree.d.ts.map +1 -0
  98. package/dist/worktree.js +397 -0
  99. package/dist/worktree.js.map +1 -0
  100. package/dist/write-queue.d.ts +25 -0
  101. package/dist/write-queue.d.ts.map +1 -0
  102. package/dist/write-queue.js +52 -0
  103. package/dist/write-queue.js.map +1 -0
  104. package/package.json +2 -2
  105. package/skills/plan-program/SKILL.md +37 -5
  106. package/dist/worktree-guard.d.ts +0 -40
  107. package/dist/worktree-guard.d.ts.map +0 -1
  108. package/dist/worktree-guard.js +0 -91
  109. package/dist/worktree-guard.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"review-pass.d.ts","sourceRoot":"","sources":["../src/review-pass.ts"],"names":[],"mappings":"AAGA,OAAO,EAML,KAAK,OAAO,EACZ,KAAK,QAAQ,EACd,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AA0CxD,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,qFAAqF;IACrF,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAID,qEAAqE;AACrE,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAoC9D;AA2CD;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAMhE;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAEhE;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,SAAS,OAAO,EAAE,EAC5B,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,GAChC,OAAO,EAAE,CAQX;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAI7D;AAgDD,qFAAqF;AACrF,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,MAAM,MAAM,kBAAkB,GAAG,iBAAiB,GAAG,UAAU,GAAG,QAAQ,CAAC;AAE3E;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,GAAG,kBAAkB,CAUzE;AAED,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAElC,MAAM,MAAM,UAAU,GAClB,WAAW,GACX,aAAa,GACb,gBAAgB,GAChB,aAAa,CAAC;AAElB,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,GAAG,EAAE,OAAO,CAAC;CACd;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,OAAO,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,UAAU,CAAC;IACvB,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,oBAAoB;IACnC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,qFAAqF;IACrF,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC5E,2FAA2F;IAC3F,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC7E;AAMD,4EAA4E;AAC5E,wBAAgB,qBAAqB,IAAI,iBAAiB,CAWzD;AAED,wBAAsB,aAAa,CACjC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,iBAAiB,CAAC,CA+E5B;AA4BD,MAAM,WAAW,uBAAuB;IACtC,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,IAAI,CAAC;CACjB;AAED,+FAA+F;AAC/F,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,uBAAuB,GAC/B,WAAW,EAAE,CA8Bf;AAMD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,iBAAiB,GACzB,MAAM,EAAE,CAyDV"}
1
+ {"version":3,"file":"review-pass.d.ts","sourceRoot":"","sources":["../src/review-pass.ts"],"names":[],"mappings":"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"}
@@ -233,7 +233,45 @@ export function findingDestination(severity) {
233
233
  return "report";
234
234
  }
235
235
  }
236
- export const REVIEW_ROUND_CAP = 2; // charter says two or three; a constant, never a config key
236
+ /** Test critique gets one reviewer-then-fix cycle at every size (SC-16). */
237
+ export const TEST_CRITIQUE_CYCLES = 1;
238
+ /**
239
+ * Total, never-throwing normalization of the manifest's optional free-string
240
+ * `size` (`manifest.ts`). Accepts the `plan-program` skill's `S`/`M`/`L` in
241
+ * any case with surrounding whitespace, and the long forms a human might
242
+ * type by hand. Anything else — absent, empty, "XL", a sentence — is M, the
243
+ * middle, because an unknown size must not silently buy or lose a cycle.
244
+ */
245
+ export function normalizeWorkstreamSize(size) {
246
+ switch (size?.trim().toLowerCase()) {
247
+ case "s":
248
+ case "small":
249
+ return "S";
250
+ case "l":
251
+ case "large":
252
+ return "L";
253
+ default:
254
+ return "M";
255
+ }
256
+ }
257
+ /**
258
+ * The spec-critique cycle budget and the sentence the run report prints to
259
+ * disclose it (SC-16). Constants, never config keys.
260
+ * S, M -> 1 "size S — one reviewer-then-fix cycle (S and M get one, L gets two)"
261
+ * L -> 2 "size L — two reviewer-then-fix cycles"
262
+ */
263
+ export function specCritiqueBudget(size) {
264
+ const normalized = normalizeWorkstreamSize(size);
265
+ if (normalized === "L") {
266
+ return { cycles: 2, note: "size L — two reviewer-then-fix cycles" };
267
+ }
268
+ return {
269
+ cycles: 1,
270
+ note: `size ${normalized} — one reviewer-then-fix cycle (S and M get one, L gets two)`,
271
+ };
272
+ }
273
+ /** Test critique's cycle budget note — the constant string every size shares (SC-16). */
274
+ export const TEST_CRITIQUE_CYCLE_NOTE = "one cycle for every size";
237
275
  function emptySeverityCounts() {
238
276
  return countBySeverity([]);
239
277
  }
@@ -248,21 +286,26 @@ export function reviewerAbsentOutcome() {
248
286
  errors: [],
249
287
  writerNotes: [],
250
288
  severityCounts: emptySeverityCounts(),
289
+ fixesRun: 0,
290
+ cyclesAllotted: 0,
291
+ cycleNote: "",
292
+ openReReadAfterFix: true,
251
293
  };
252
294
  }
253
295
  export async function runReviewPass(options) {
254
- const cap = options.cap ?? REVIEW_ROUND_CAP;
296
+ const { cycles, cycleNote } = options;
255
297
  const seen = new Set();
256
298
  const latest = new Map();
257
299
  const errors = [];
258
300
  const writerNotes = [];
301
+ let fixesRun = 0;
259
302
  let priorOpen = [];
260
- let round = 1;
303
+ let cycle = 1;
261
304
  for (;;) {
262
- const result = await options.review(round, priorOpen);
305
+ const result = await options.review(cycle, priorOpen);
263
306
  errors.push(...result.errors);
264
307
  if (!result.ran) {
265
- if (round === 1) {
308
+ if (cycle === 1) {
266
309
  return {
267
310
  ran: false,
268
311
  roundsRun: 0,
@@ -272,55 +315,77 @@ export async function runReviewPass(options) {
272
315
  errors,
273
316
  writerNotes,
274
317
  severityCounts: emptySeverityCounts(),
318
+ fixesRun,
319
+ cyclesAllotted: cycles,
320
+ cycleNote,
321
+ openReReadAfterFix: true,
275
322
  };
276
323
  }
277
324
  return finish({
278
325
  ran: true,
279
- roundsRun: round - 1,
326
+ roundsRun: cycle - 1,
280
327
  stopReason: "reviewer-error",
281
328
  open: priorOpen,
282
329
  errors,
283
330
  writerNotes,
284
331
  seen,
285
332
  latest,
333
+ fixesRun,
334
+ cyclesAllotted: cycles,
335
+ cycleNote,
336
+ // A fix ran on `priorOpen` but the reviewer errored before reading
337
+ // the result — no post-fix re-read confirmed the fixer's work, so
338
+ // this is a raised-and-handed-to-fix residue, not a fresh read.
339
+ openReReadAfterFix: false,
286
340
  });
287
341
  }
288
342
  for (const finding of result.findings) {
289
343
  latest.set(fingerprint(finding), finding);
290
344
  }
291
- const roundFingerprints = new Set(result.findings.map((f) => fingerprint(f)));
292
- const newFingerprints = [...roundFingerprints].filter((fp) => !seen.has(fp));
345
+ const cycleFingerprints = new Set(result.findings.map((f) => fingerprint(f)));
346
+ const newFingerprints = [...cycleFingerprints].filter((fp) => !seen.has(fp));
293
347
  if (newFingerprints.length === 0) {
294
348
  return finish({
295
349
  ran: true,
296
- roundsRun: round,
350
+ roundsRun: cycle,
297
351
  stopReason: "converged",
298
352
  open: result.findings,
299
353
  errors,
300
354
  writerNotes,
301
355
  seen,
302
356
  latest,
357
+ fixesRun,
358
+ cyclesAllotted: cycles,
359
+ cycleNote,
360
+ // `open` is this cycle's own fresh read — a genuine re-read, whether
361
+ // or not an earlier cycle fixed something.
362
+ openReReadAfterFix: true,
303
363
  });
304
364
  }
305
- if (round === cap) {
365
+ for (const fp of newFingerprints)
366
+ seen.add(fp);
367
+ const response = await options.respond(cycle, result.findings);
368
+ fixesRun += 1;
369
+ if (response.note !== undefined)
370
+ writerNotes.push(response.note);
371
+ priorOpen = result.findings;
372
+ if (cycle === cycles) {
306
373
  return finish({
307
374
  ran: true,
308
- roundsRun: round,
309
- stopReason: "cap-reached",
310
- open: result.findings,
375
+ roundsRun: cycle,
376
+ stopReason: "cycles-spent",
377
+ open: priorOpen,
311
378
  errors,
312
379
  writerNotes,
313
380
  seen,
314
381
  latest,
382
+ fixesRun,
383
+ cyclesAllotted: cycles,
384
+ cycleNote,
385
+ openReReadAfterFix: false,
315
386
  });
316
387
  }
317
- for (const fp of newFingerprints)
318
- seen.add(fp);
319
- const response = await options.respond(round, result.findings);
320
- if (response.note !== undefined)
321
- writerNotes.push(response.note);
322
- priorOpen = result.findings;
323
- round += 1;
388
+ cycle += 1;
324
389
  }
325
390
  }
326
391
  function finish(args) {
@@ -335,6 +400,10 @@ function finish(args) {
335
400
  errors: args.errors,
336
401
  writerNotes: args.writerNotes,
337
402
  severityCounts: countBySeverity([...args.latest.values()]),
403
+ fixesRun: args.fixesRun,
404
+ cyclesAllotted: args.cyclesAllotted,
405
+ cycleNote: args.cycleNote,
406
+ openReReadAfterFix: args.openReReadAfterFix,
338
407
  };
339
408
  }
340
409
  /** Blocker/major findings -> finding-recorded events; minor/advisory dropped (report-only). */
@@ -372,10 +441,14 @@ function describeSubjects(findings) {
372
441
  /**
373
442
  * A human-facing summary of one completed (or absent) pass, for the run
374
443
  * report. `label` is the pass name the stage supplies ("Spec critique",
375
- * "Test critique"). Returns markdown lines; the caller splices them under
376
- * its own section heading.
444
+ * "Test critique"). `verifyStepLabel` names what ends each cycle "runner
445
+ * verify" (the configured verify suite, the build side) or "runner spec
446
+ * check" (the runner's own deterministic artifact/scope/change gate, the
447
+ * authoring side, §3.7.3) — defaulting to the build side's phrase since that
448
+ * is the more common caller. Returns markdown lines; the caller splices them
449
+ * under its own section heading.
377
450
  */
378
- export function renderPassReport(label, outcome) {
451
+ export function renderPassReport(label, outcome, verifyStepLabel = "runner verify") {
379
452
  if (outcome.stopReason === "no-reviewer") {
380
453
  return [
381
454
  `**${label}:** disabled — no reviewer is configured, and the pass was`,
@@ -389,15 +462,20 @@ export function renderPassReport(label, outcome) {
389
462
  ];
390
463
  }
391
464
  const lines = [];
392
- const roundWord = outcome.roundsRun === 1 ? "round" : "rounds";
393
- if (outcome.stopReason === "converged") {
394
- lines.push(`**${label}:** converged after ${outcome.roundsRun} ${roundWord}.`);
465
+ const cycleWord = outcome.cyclesAllotted === 1 ? "cycle" : "cycles";
466
+ lines.push(`**${label}:** reviewer -> decider triage -> one fix -> ${verifyStepLabel}. ` +
467
+ `Ran ${outcome.roundsRun} of ${outcome.cyclesAllotted} ${cycleWord} (${outcome.cycleNote}).`);
468
+ if (outcome.stopReason === "converged" && outcome.fixesRun === 0) {
469
+ lines.push("The reviewer raised nothing, so no fix pass ran.");
395
470
  }
396
- else if (outcome.stopReason === "cap-reached") {
397
- lines.push(`**${label}:** ran ${outcome.roundsRun} ${roundWord} and hit the round cap; the reviewer was still finding new issues.`);
471
+ else if (outcome.stopReason === "converged") {
472
+ lines.push("A later read raised nothing new.");
473
+ }
474
+ else if (outcome.stopReason === "cycles-spent") {
475
+ lines.push("The pass used its whole cycle budget.");
398
476
  }
399
477
  else {
400
- lines.push(`**${label}:** ran ${outcome.roundsRun} ${roundWord}; the reviewer did not produce a further readable read, so the last verified round stands.`);
478
+ lines.push("The reviewer did not produce a further readable read, so the last verified cycle stands.");
401
479
  }
402
480
  const counts = outcome.severityCounts;
403
481
  lines.push(`Findings raised: ${counts.blocker} blocker, ${counts.major} major, ${counts.minor} minor, ${counts.advisory} advisory.`);
@@ -405,7 +483,13 @@ export function renderPassReport(label, outcome) {
405
483
  lines.push(`Fixed: ${describeSubjects(outcome.resolved)}.`);
406
484
  }
407
485
  if (outcome.open.length > 0) {
408
- lines.push(`Still open: ${describeSubjects(outcome.open)}.`);
486
+ if (outcome.openReReadAfterFix) {
487
+ lines.push(`Still open: ${describeSubjects(outcome.open)}.`);
488
+ }
489
+ else {
490
+ lines.push(`Raised and handed to one fix pass (no reviewer re-read the fix): ${describeSubjects(outcome.open)}.`);
491
+ lines.push("The fixer's account of what it fixed and declined is below; each of these is a ledger entry a human can act on.");
492
+ }
409
493
  const unverifiable = outcome.open.filter((f) => !hasRoutableEvidence(f));
410
494
  if (unverifiable.length > 0) {
411
495
  lines.push(`Unverifiable evidence (reported, not routed): ${describeSubjects(unverifiable)}.`);
@@ -1 +1 @@
1
- {"version":3,"file":"review-pass.js","sourceRoot":"","sources":["../src/review-pass.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAC/D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,eAAe,EACf,WAAW,EACX,kBAAkB,EAClB,cAAc,GAIf,MAAM,eAAe,CAAC;AAGvB;;;;;;;GAOG;AAEH,MAAM,cAAc,GAAG,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;IAClD,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;QAC3B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACvB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;QACrB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC9B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAC/B,CAAC;IACF,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;QAC1B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACxB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAC9B,CAAC;IACF,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC;QAC9B,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QAC1C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;KAClB,CAAC;CACH,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7B,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,cAA2C,CAAC;IAC7D,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC;IACpC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC;IACjC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC5B,CAAC,CAAC;AAQH,MAAM,aAAa,GAAG,2CAA2C,CAAC;AAElE,qEAAqE;AACrE,MAAM,UAAU,eAAe,CAAC,MAAc;IAC5C,MAAM,MAAM,GAAmB,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IAE5D,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;QACnD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;QAC9B,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,EAAE;YAAE,SAAS;QAEhD,IAAI,IAAa,CAAC;QAClB,IAAI,CAAC;YACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,MAAM,CAAC,IAAI,CAChB,qCAAsC,KAAe,CAAC,OAAO,EAAE,CAChE,CAAC;YACF,SAAS;QACX,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;YACzD,SAAS;QACX,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;YAC9B,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YAChD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM;qBAC/B,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,QAAQ,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;qBACvE,IAAI,CAAC,IAAI,CAAC,CAAC;gBACd,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,KAAK,0BAA0B,MAAM,EAAE,CAAC,CAAC;gBACxE,OAAO;YACT,CAAC;YACD,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAID;;;;;GAKG;AACH,SAAS,SAAS,CAAC,MAAqB;IACtC,OAAO;QACL,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;QAC3D,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC;QACzC,GAAG,CAAC,MAAM,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC;QACnF,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;KAC5D,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,MAAyC;IAC3D,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC/B,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,GAAG,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;YACpE,GAAG,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;SACrE,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO;YACL,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;SAClE,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;AAC7E,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,IAAY;IACrD,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAChD,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC,CAAC,kBAAkB;IAC/C,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,GAAG,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC,CAAC,yBAAyB;IACvF,IAAI,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC,CAAC,8BAA8B;IACjE,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,IAAY;IACrD,OAAO,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AACrE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAC5B,QAA4B,EAC5B,MAAiC;IAEjC,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAChC,GAAG,OAAO;QACV,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACtC,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU;gBAAE,OAAO,IAAI,CAAC;YAC1C,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;QACpE,CAAC,CAAC;KACH,CAAC,CAAC,CAAC;AACN,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,MAAM,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC;IAC5B,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC,CAAC,2BAA2B;IAC7D,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC;AACrF,CAAC;AAED,MAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;yBAsBQ,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;;;yBAGzB,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;CAmBrD,CAAC,IAAI,EAAE,CAAC;AAET,qFAAqF;AACrF,MAAM,UAAU,gBAAgB;IAC9B,OAAO,QAAQ,CAAC;AAClB,CAAC;AAID;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAAkB;IACnD,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,SAAS;YACZ,OAAO,iBAAiB,CAAC;QAC3B,KAAK,OAAO;YACV,OAAO,UAAU,CAAC;QACpB,KAAK,OAAO,CAAC;QACb,KAAK,UAAU;YACb,OAAO,QAAQ,CAAC;IACpB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,CAAC,4DAA4D;AAiC/F,SAAS,mBAAmB;IAC1B,OAAO,eAAe,CAAC,EAAE,CAAC,CAAC;AAC7B,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,qBAAqB;IACnC,OAAO;QACL,GAAG,EAAE,KAAK;QACV,SAAS,EAAE,CAAC;QACZ,UAAU,EAAE,aAAa;QACzB,IAAI,EAAE,EAAE;QACR,QAAQ,EAAE,EAAE;QACZ,MAAM,EAAE,EAAE;QACV,WAAW,EAAE,EAAE;QACf,cAAc,EAAE,mBAAmB,EAAE;KACtC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,OAA6B;IAE7B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,gBAAgB,CAAC;IAC5C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,MAAM,GAAG,IAAI,GAAG,EAAmB,CAAC;IAC1C,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,WAAW,GAAa,EAAE,CAAC;IAEjC,IAAI,SAAS,GAAc,EAAE,CAAC;IAC9B,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,SAAS,CAAC;QACR,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QACtD,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QAE9B,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;YAChB,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;gBAChB,OAAO;oBACL,GAAG,EAAE,KAAK;oBACV,SAAS,EAAE,CAAC;oBACZ,UAAU,EAAE,gBAAgB;oBAC5B,IAAI,EAAE,EAAE;oBACR,QAAQ,EAAE,EAAE;oBACZ,MAAM;oBACN,WAAW;oBACX,cAAc,EAAE,mBAAmB,EAAE;iBACtC,CAAC;YACJ,CAAC;YACD,OAAO,MAAM,CAAC;gBACZ,GAAG,EAAE,IAAI;gBACT,SAAS,EAAE,KAAK,GAAG,CAAC;gBACpB,UAAU,EAAE,gBAAgB;gBAC5B,IAAI,EAAE,SAAS;gBACf,MAAM;gBACN,WAAW;gBACX,IAAI;gBACJ,MAAM;aACP,CAAC,CAAC;QACL,CAAC;QAED,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACtC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;QAC5C,CAAC;QAED,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9E,MAAM,eAAe,GAAG,CAAC,GAAG,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAE7E,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,OAAO,MAAM,CAAC;gBACZ,GAAG,EAAE,IAAI;gBACT,SAAS,EAAE,KAAK;gBAChB,UAAU,EAAE,WAAW;gBACvB,IAAI,EAAE,MAAM,CAAC,QAAQ;gBACrB,MAAM;gBACN,WAAW;gBACX,IAAI;gBACJ,MAAM;aACP,CAAC,CAAC;QACL,CAAC;QAED,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;YAClB,OAAO,MAAM,CAAC;gBACZ,GAAG,EAAE,IAAI;gBACT,SAAS,EAAE,KAAK;gBAChB,UAAU,EAAE,aAAa;gBACzB,IAAI,EAAE,MAAM,CAAC,QAAQ;gBACrB,MAAM;gBACN,WAAW;gBACX,IAAI;gBACJ,MAAM;aACP,CAAC,CAAC;QACL,CAAC;QAED,KAAK,MAAM,EAAE,IAAI,eAAe;YAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC/C,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC/D,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS;YAAE,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEjE,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;QAC5B,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;AACH,CAAC;AAED,SAAS,MAAM,CAAC,IASf;IACC,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvE,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAC/C,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CACzD,CAAC;IACF,OAAO;QACL,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,QAAQ;QACR,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,cAAc,EAAE,eAAe,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;KAC3D,CAAC;AACJ,CAAC;AASD,+FAA+F;AAC/F,MAAM,UAAU,sBAAsB,CACpC,OAAgC;IAEhC,MAAM,MAAM,GAAkB,EAAE,CAAC;IAEjC,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACvC,MAAM,WAAW,GAAG,kBAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACzD,IAAI,WAAW,KAAK,QAAQ;YAAE,SAAS;QAEvC,kEAAkE;QAClE,uEAAuE;QACvE,6EAA6E;QAC7E,uEAAuE;QACvE,MAAM,EAAE,GAAG,WAAW,CAAC,EAAE,GAAG,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;QAE3E,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,kBAAkB;YACxB,EAAE,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;YAC/B,EAAE;YACF,UAAU,EAAE,OAAO,CAAC,YAAY;YAChC,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;YAC7D,GAAG,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC;YAC/E,OAAO,EAAE,UAAU;SACpB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,gBAAgB,CAAC,QAA4B;IACpD,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/D,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAC9B,KAAa,EACb,OAA0B;IAE1B,IAAI,OAAO,CAAC,UAAU,KAAK,aAAa,EAAE,CAAC;QACzC,OAAO;YACL,KAAK,KAAK,4DAA4D;YACtE,2DAA2D;SAC5D,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,UAAU,KAAK,gBAAgB,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QAC5D,OAAO;YACL,KAAK,KAAK,6DAA6D;YACvE,4CAA4C;SAC7C,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;IAE/D,IAAI,OAAO,CAAC,UAAU,KAAK,WAAW,EAAE,CAAC;QACvC,KAAK,CAAC,IAAI,CACR,KAAK,KAAK,uBAAuB,OAAO,CAAC,SAAS,IAAI,SAAS,GAAG,CACnE,CAAC;IACJ,CAAC;SAAM,IAAI,OAAO,CAAC,UAAU,KAAK,aAAa,EAAE,CAAC;QAChD,KAAK,CAAC,IAAI,CACR,KAAK,KAAK,WAAW,OAAO,CAAC,SAAS,IAAI,SAAS,oEAAoE,CACxH,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CACR,KAAK,KAAK,WAAW,OAAO,CAAC,SAAS,IAAI,SAAS,4FAA4F,CAChJ,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IACtC,KAAK,CAAC,IAAI,CACR,oBAAoB,MAAM,CAAC,OAAO,aAAa,MAAM,CAAC,KAAK,WAAW,MAAM,CAAC,KAAK,WAAW,MAAM,CAAC,QAAQ,YAAY,CACzH,CAAC;IAEF,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,UAAU,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC9D,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,eAAe,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC7D,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC;QACzE,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,KAAK,CAAC,IAAI,CACR,iDAAiD,gBAAgB,CAAC,YAAY,CAAC,GAAG,CACnF,CAAC;QACJ,CAAC;QACD,IAAI,OAAO,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,KAAK,CAAC,IAAI,CAAC,mBAAmB,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IACzC,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"review-pass.js","sourceRoot":"","sources":["../src/review-pass.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,286 @@
1
+ import { type Bucket, type Coverage, type RunAnalytics } from "./run-analytics.js";
2
+ /**
3
+ * WS-04: reads the WS-01/WS-02/WS-03 observation contract back and turns it
4
+ * into an answer a human can act on. Everything here is pure, deterministic
5
+ * arithmetic over already-recorded observations (SC-09) — it never decides
6
+ * *why* a bucket is large (WS-05's optional, evidence-cited job), never
7
+ * grades a run, and never emits a score. See
8
+ * tasks/run-analytics/ws-04-time-analytics-report.md for the full contract.
9
+ *
10
+ * WS-06 extends this same pure layer to count overlap correctly and to
11
+ * surface concurrency: a cumulative (non-conserved) figure beside every
12
+ * conserved one, a critical path reconstructed from observed time, and the
13
+ * per-cause scheduling waits WS-03/WS-04/WS-05 record. See
14
+ * tasks/turbo-boost/ws-06-concurrency-aware-analytics.md.
15
+ */
16
+ export interface IntervalDiagnostic {
17
+ kind: "overlap" | "invalid-interval" | "unresolved-parent" | "interval-exceeds-total" | "open-span"
18
+ /** Two scheduling points share a (workstream, kind, cause) that the
19
+ * emitters guarantee is unique — reported, never silently merged. */
20
+ | "duplicate-scheduling-point"
21
+ /** `scheduled − ready` disagreed with the `concurrency-cap` wait beyond
22
+ * the tolerance, or a scheduled instant had no ready instant. */
23
+ | "scheduling-identity"
24
+ /** A scheduling point was malformed and could not be used: no
25
+ * `dimensions.workstream`, a wait with no `waitCause`, or a missing,
26
+ * negative or non-finite `value`/`atOffsetMs`. The point is skipped;
27
+ * `invalid-interval` is the span-side analogue and is not reused here. */
28
+ | "scheduling-observation";
29
+ message: string;
30
+ spanIds: string[];
31
+ /** Point ids for a point-derived diagnostic; `spanIds` stays empty there. */
32
+ pointIds?: string[];
33
+ }
34
+ export interface BucketSummary {
35
+ bucket: Bucket;
36
+ /** The conserved partition: this bucket's share of the wall-clock union of
37
+ * top-level spans. Σ over all ten buckets === totalElapsedMs, always. */
38
+ durationMs: number;
39
+ /** The non-conserved sum of every top-level interval in this bucket, using
40
+ * the same clamped intervals as `durationMs`. Equal to `durationMs` when
41
+ * nothing overlapped; larger when concurrent flows shared wall-clock time
42
+ * this bucket also covers. Never summed across buckets. */
43
+ cumulativeMs: number;
44
+ /** 0–100, of `totalElapsedMs`; 0 when `totalElapsedMs` is 0. */
45
+ percent: number;
46
+ /** Count of top-level spans whose own `bucket` equals this one — not a sub-interval count. */
47
+ spanCount: number;
48
+ }
49
+ export interface DrillDownSpan {
50
+ id: string;
51
+ stage: string;
52
+ workstream?: string;
53
+ role?: string;
54
+ outcome?: string;
55
+ durationMs: number;
56
+ }
57
+ export interface DrillDownGroup {
58
+ ownerSpanId: string;
59
+ ownerStage: string;
60
+ spans: DrillDownSpan[];
61
+ }
62
+ export interface Ranked {
63
+ key: string;
64
+ durationMs: number;
65
+ count: number;
66
+ }
67
+ export interface VerifyCommandSummary {
68
+ command: string;
69
+ invocations: number;
70
+ totalMs: number;
71
+ largestMs: number;
72
+ }
73
+ export interface DispositionSummary {
74
+ outcome: string;
75
+ count: number;
76
+ durationMs: number;
77
+ }
78
+ export interface RerunGroup {
79
+ key: string;
80
+ count: number;
81
+ durationMs: number;
82
+ }
83
+ export interface RoleProviderInfo {
84
+ role: string;
85
+ provider?: {
86
+ value?: string;
87
+ coverage: Coverage;
88
+ };
89
+ model?: {
90
+ value?: string;
91
+ coverage: Coverage;
92
+ };
93
+ }
94
+ export interface CoverageSummary {
95
+ counts: Record<Coverage, number>;
96
+ /** Roles whose provider-telemetry is `unavailable` — expected coverage for a non-Claude role, never a missing-time signal. */
97
+ unavailableRoles: string[];
98
+ byRole: RoleProviderInfo[];
99
+ }
100
+ export interface PromptComponentSummary {
101
+ label: string;
102
+ bytes: number;
103
+ }
104
+ export interface AgentAttemptSummary {
105
+ spanId: string;
106
+ stage: string;
107
+ workstream?: string;
108
+ attemptSeat?: string;
109
+ attemptIndex?: number;
110
+ durationMs: number;
111
+ }
112
+ export interface EvidenceSample {
113
+ kind: string;
114
+ locality: "local";
115
+ ref: string;
116
+ note?: string;
117
+ }
118
+ export interface WaitObservation {
119
+ workstream: string;
120
+ /** Read from `dimensions.waitCause`, or `"dependency-landing"` when derived. */
121
+ cause: string;
122
+ waitedMs: number;
123
+ /** The instant the wait ended; its interval is [endMs − waitedMs, endMs). */
124
+ endMs: number;
125
+ /** true = computed by this layer (§3.4); false = read from an emitted point. */
126
+ derived: boolean;
127
+ /** The emitted point's id, for citation. Absent when `derived`. */
128
+ pointId?: string;
129
+ }
130
+ export interface WaitCauseTotal {
131
+ cause: string;
132
+ totalMs: number;
133
+ /** Distinct workstreams that waited on this cause. */
134
+ workstreams: number;
135
+ derived: boolean;
136
+ }
137
+ export interface WorkstreamSchedule {
138
+ workstream: string;
139
+ /** `workstream-ready`'s offset. Absent when the run never recorded one. */
140
+ readyMs?: number;
141
+ /** `readyMs − specPendingMs` — the instant this workstream's dependencies
142
+ * had settled, derived per §3.4. Absent when `readyMs` is. */
143
+ depsReadyMs?: number;
144
+ /** `workstream-scheduled`'s offset. Absent is honest (rule 7, §3.3). */
145
+ scheduledMs?: number;
146
+ /** `scheduledMs − readyMs`, only when both were observed. */
147
+ queuedMs?: number;
148
+ /** This workstream's waits, sorted by cause. Never summed into a total. */
149
+ waits: WaitObservation[];
150
+ }
151
+ export interface CriticalPathLeg {
152
+ startMs: number;
153
+ endMs: number;
154
+ durationMs: number;
155
+ kind: "stage" | "wait" | "gap";
156
+ /** Absent for a run-level leg and for a gap. */
157
+ workstream?: string;
158
+ /** `kind === "stage"`. */
159
+ stage?: string;
160
+ spanId?: string;
161
+ /** `kind === "wait"`. */
162
+ waitCause?: string;
163
+ /** The emitted point behind a wait leg; absent when the wait was derived. */
164
+ pointId?: string;
165
+ /** Set on a leg whose owner took the wall clock over from another flow.
166
+ * `fromWorkstream` is the flow that held the clock immediately before this
167
+ * leg, chosen from observed intervals — it is not a recorded causal edge
168
+ * (§3.6). `cause` is this leg's own workstream's observed wait across the
169
+ * boundary when `causeObserved`, and the literal `"concurrent-work"`
170
+ * otherwise. `pointId` cites the wait point when one was observed. */
171
+ handoff?: {
172
+ fromWorkstream?: string;
173
+ cause: string;
174
+ causeObserved: boolean;
175
+ pointId?: string;
176
+ };
177
+ }
178
+ export interface ConcurrencySummary {
179
+ /** Time-weighted mean distinct workstreams live; 1 for a serial run. */
180
+ meanWorkstreamConcurrency: number;
181
+ peakWorkstreamConcurrency: number;
182
+ overlappedMs: number;
183
+ /** Non-conserved sums — see §3.1. */
184
+ cumulativeAgentMs: number;
185
+ agentSpanCount: number;
186
+ cumulativeVerificationMs: number;
187
+ verificationSpanCount: number;
188
+ cumulativeWorkstreamMs: number;
189
+ /** The derived baseline from §3.4 — `min` over observed workstreams of
190
+ * `ready − specPending`. Absent when no `workstream-ready` was observed.
191
+ * Present so a reader can recompute every `dependency-landing` by hand. */
192
+ schedulerStartMs?: number;
193
+ /** By workstream id, ascending. */
194
+ schedules: WorkstreamSchedule[];
195
+ /** Per-cause totals — NOT a partition, and deliberately with no run total.
196
+ * Known causes in `KNOWN_WAIT_CAUSES` order, then derived, then any
197
+ * unknown cause alphabetically. */
198
+ waitsByCause: WaitCauseTotal[];
199
+ /** Chronological; tiles [0, totalElapsedMs) exactly. */
200
+ criticalPath: CriticalPathLeg[];
201
+ }
202
+ export interface RunAnalyticsSummary {
203
+ totalElapsedMs: number;
204
+ /** The union of top-level span intervals — never a sum, so overlaps are never double-counted (SC-03). */
205
+ attributedMs: number;
206
+ unattributedMs: number;
207
+ /** In `BUCKETS` order; `unattributed` is the residual and always the last entry. */
208
+ buckets: BucketSummary[];
209
+ diagnostics: IntervalDiagnostic[];
210
+ drillDowns: DrillDownGroup[];
211
+ /** The six `KNOWN_OUTCOMES` (always present, `{count: 0}` when unreached), plus any open-vocabulary extras, alphabetized. */
212
+ dispositions: DispositionSummary[];
213
+ rerun: {
214
+ agent: {
215
+ totalMs: number;
216
+ byReason: RerunGroup[];
217
+ };
218
+ verification: {
219
+ totalMs: number;
220
+ byPhase: RerunGroup[];
221
+ byCommand: RerunGroup[];
222
+ };
223
+ };
224
+ rankings: {
225
+ byStage: Ranked[];
226
+ byWorkstream: Ranked[];
227
+ byRole: Ranked[];
228
+ /** Duration totals by provider/model identity (§3.5), joined from role duration totals via WS-03's `provider-telemetry` points. `"unavailable"` when a role's provider telemetry is unavailable — never a dropped or blanked total. */
229
+ byProvider: Ranked[];
230
+ byModel: Ranked[];
231
+ byVerifyCommand: VerifyCommandSummary[];
232
+ largestAgentAttempt?: AgentAttemptSummary;
233
+ };
234
+ coverage: CoverageSummary;
235
+ /** Largest prompt-component labels by exact bytes, descending; capped, never a claim of totality. */
236
+ promptComponents: PromptComponentSummary[];
237
+ /** The non-conserved `analytics-overhead` footnote (WS-02) — never folded into any bucket. */
238
+ analyticsOverheadMs?: number;
239
+ /** Present only when the aggregated artifact already carries a `publish-duration` point (D5) — never the current run's own report. */
240
+ publish?: {
241
+ durationMs: number;
242
+ invocations: number;
243
+ };
244
+ evidence: EvidenceSample[];
245
+ evidenceTotalCount: number;
246
+ /** Always present — see §3.8. All-zero/empty for a run with no workstream
247
+ * spans and no scheduling points; rendering is gated on `peakWorkstreamConcurrency > 1`. */
248
+ concurrency: ConcurrencySummary;
249
+ }
250
+ /**
251
+ * Deterministically reconciles a `RunAnalytics` artifact into conserved
252
+ * wall-clock and repetition analytics (SC-09). Pure: no clock, no I/O, no
253
+ * randomness. A shuffled `spans`/`points` array yields a byte-identical
254
+ * summary, because every grouping keys off span/point fields — never array
255
+ * position — and every list is explicitly sorted before it is returned.
256
+ */
257
+ export declare function aggregateRunAnalytics(artifact: RunAnalytics): RunAnalyticsSummary;
258
+ /**
259
+ * Renders the aggregated summary into the "Where the time went" section
260
+ * (SC-10, SC-11) — human-first, concise, and never a score or a grade.
261
+ */
262
+ export declare function renderWhereTheTimeWent(summary: RunAnalyticsSummary): string[];
263
+ /**
264
+ * The run's own fail-open isolation boundary for analytics (D4, SC-13):
265
+ * always returns a `## Where the time went` section, never throws. A throw
266
+ * from `aggregate` (real or injected via `deps`, for tests), an `undefined`
267
+ * snapshot, or a throw while *obtaining* the snapshot all degrade to an
268
+ * explicit "analytics unavailable" placeholder — never suppress the rest of
269
+ * the report, which is built independently of this function's output.
270
+ *
271
+ * `artifact` accepts either a plain value (the common case, and every
272
+ * existing pure test) or a thunk. The thunk form matters at the real call
273
+ * site: `recorder.snapshot()` is documented as non-throwing, but evaluating
274
+ * it as a plain argument — `renderAnalyticsSection(recorder.snapshot())` —
275
+ * would run it *before* this function's own try/catch is reached, so any
276
+ * violation of that contract (a bug, or a test double standing in for the
277
+ * recorder) would still escape this boundary and, through the caller's own
278
+ * try/catch, suppress the whole report. Wrapping it in a thunk —
279
+ * `renderAnalyticsSection(() => recorder.snapshot())` — keeps that call
280
+ * inside the try below, so this function's "never throws" is true no matter
281
+ * what actually produced the artifact.
282
+ */
283
+ export declare function renderAnalyticsSection(artifact: RunAnalytics | undefined | (() => RunAnalytics | undefined), deps?: {
284
+ aggregate?: typeof aggregateRunAnalytics;
285
+ }): string[];
286
+ //# sourceMappingURL=run-analytics-report.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-analytics-report.d.ts","sourceRoot":"","sources":["../src/run-analytics-report.ts"],"names":[],"mappings":"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"}