@cat-factory/orchestration 0.327.0 → 0.329.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 (48) hide show
  1. package/dist/modules/execution/CredentialWaitController.d.ts +51 -0
  2. package/dist/modules/execution/CredentialWaitController.d.ts.map +1 -0
  3. package/dist/modules/execution/CredentialWaitController.js +140 -0
  4. package/dist/modules/execution/CredentialWaitController.js.map +1 -0
  5. package/dist/modules/execution/ExecutionService.d.ts +1230 -0
  6. package/dist/modules/execution/ExecutionService.d.ts.map +1 -1
  7. package/dist/modules/execution/ExecutionService.js +17 -5
  8. package/dist/modules/execution/ExecutionService.js.map +1 -1
  9. package/dist/modules/execution/ReviewGateController.d.ts +11 -1
  10. package/dist/modules/execution/ReviewGateController.d.ts.map +1 -1
  11. package/dist/modules/execution/ReviewGateController.js +29 -3
  12. package/dist/modules/execution/ReviewGateController.js.map +1 -1
  13. package/dist/modules/execution/RunStateMachine.d.ts +6 -0
  14. package/dist/modules/execution/RunStateMachine.d.ts.map +1 -1
  15. package/dist/modules/execution/RunStateMachine.js +13 -3
  16. package/dist/modules/execution/RunStateMachine.js.map +1 -1
  17. package/dist/modules/execution/StepDecisionController.d.ts.map +1 -1
  18. package/dist/modules/execution/StepDecisionController.js +1 -0
  19. package/dist/modules/execution/StepDecisionController.js.map +1 -1
  20. package/dist/modules/execution/gate-window-controllers.d.ts +15 -0
  21. package/dist/modules/execution/gate-window-controllers.d.ts.map +1 -1
  22. package/dist/modules/execution/gate-window-controllers.js +16 -0
  23. package/dist/modules/execution/gate-window-controllers.js.map +1 -1
  24. package/dist/modules/execution/gate-window-facades.d.ts +4 -2
  25. package/dist/modules/execution/gate-window-facades.d.ts.map +1 -1
  26. package/dist/modules/execution/gate-window-facades.js +5 -4
  27. package/dist/modules/execution/gate-window-facades.js.map +1 -1
  28. package/dist/modules/execution/step-park.logic.d.ts +1 -1
  29. package/dist/modules/execution/step-park.logic.d.ts.map +1 -1
  30. package/dist/modules/execution/step-park.logic.js +5 -0
  31. package/dist/modules/execution/step-park.logic.js.map +1 -1
  32. package/dist/modules/requirements/RequirementReviewService.d.ts +2 -0
  33. package/dist/modules/requirements/RequirementReviewService.d.ts.map +1 -1
  34. package/dist/modules/requirements/RequirementReviewService.js +3 -0
  35. package/dist/modules/requirements/RequirementReviewService.js.map +1 -1
  36. package/dist/modules/requirements/requirements.logic.d.ts +7 -1
  37. package/dist/modules/requirements/requirements.logic.d.ts.map +1 -1
  38. package/dist/modules/requirements/requirements.logic.js +18 -2
  39. package/dist/modules/requirements/requirements.logic.js.map +1 -1
  40. package/dist/modules/review/IterativeReviewService.d.ts +7 -1
  41. package/dist/modules/review/IterativeReviewService.d.ts.map +1 -1
  42. package/dist/modules/review/IterativeReviewService.js +19 -6
  43. package/dist/modules/review/IterativeReviewService.js.map +1 -1
  44. package/dist/modules/review/follow-up-bar.logic.d.ts +32 -0
  45. package/dist/modules/review/follow-up-bar.logic.d.ts.map +1 -0
  46. package/dist/modules/review/follow-up-bar.logic.js +62 -0
  47. package/dist/modules/review/follow-up-bar.logic.js.map +1 -0
  48. package/package.json +11 -11
@@ -65,6 +65,7 @@ export declare class ExecutionService {
65
65
  private readonly startStepDispatch;
66
66
  /** The pre-dispatch input gate; see {@link InputGateController}. */
67
67
  private readonly inputGate;
68
+ private readonly credentialWait;
68
69
  /** Bound collaborators for the shared pre-dispatch preamble ({@link runStepPreamble}). */
69
70
  private stepPreambleDepsCache?;
70
71
  /** The three doors onto "what personal subscriptions would a run started here lease". */
@@ -247,6 +248,1235 @@ export declare class ExecutionService {
247
248
  * otherwise performs one agent step via the shared {@link stepInstance} logic.
248
249
  */
249
250
  advanceInstance(workspaceId: string, executionId: string, options?: AdvanceOptions): Promise<AdvanceResult>;
251
+ /** Resume a step parked on a lapsed personal credential; see {@link CredentialWaitController}. */
252
+ resumeCredentialWait(ws: string, id: string, actor: string | null, renew: () => Promise<void>): Promise<{
253
+ projected?: boolean | undefined;
254
+ id: string;
255
+ blockId: string;
256
+ pipelineId: string;
257
+ pipelineName: string;
258
+ steps: {
259
+ runId?: string | undefined;
260
+ agentKind: string;
261
+ state: "done" | "pending" | "waiting_decision" | "working";
262
+ progress: number;
263
+ metrics?: {
264
+ calls: number;
265
+ promptTokens: number;
266
+ cacheReadTokens?: number | undefined;
267
+ cacheWriteTokens?: number | undefined;
268
+ completionTokens: number;
269
+ peakCompletionTokens: number;
270
+ maxOutputTokens: number | null;
271
+ truncatedCalls: number;
272
+ upstreamMs: number;
273
+ overheadMs: number;
274
+ errors: number;
275
+ warnings: number;
276
+ carryCostTokens?: number | undefined;
277
+ costEstimate?: number | null | undefined;
278
+ costCurrency?: string | undefined;
279
+ byPhase?: {
280
+ phase: string;
281
+ calls: number;
282
+ promptTokens: number;
283
+ cacheReadTokens: number;
284
+ cacheWriteTokens: number;
285
+ completionTokens: number;
286
+ carryCostTokens: number;
287
+ errors: number;
288
+ costEstimate?: number | null | undefined;
289
+ }[] | undefined;
290
+ } | null | undefined;
291
+ usageBilling?: "metered" | "subscription" | undefined;
292
+ gate?: {
293
+ phase: "checking" | "working";
294
+ attempts: number;
295
+ maxAttempts: number;
296
+ headSha?: string | null | undefined;
297
+ headShas?: {
298
+ [x: string]: string;
299
+ } | null | undefined;
300
+ conflictTarget?: {
301
+ repo: string;
302
+ frameId?: string | undefined;
303
+ branch?: string | undefined;
304
+ } | null | undefined;
305
+ lastVerdict?: "fail" | "pass" | "pending" | null | undefined;
306
+ config?: {
307
+ [x: string]: string | number | boolean | string[];
308
+ } | null | undefined;
309
+ lastFailureSummary?: string | null | undefined;
310
+ failingChecks?: {
311
+ name: string;
312
+ conclusion: string | null;
313
+ url?: string | null | undefined;
314
+ repo?: string | undefined;
315
+ }[] | null | undefined;
316
+ lastDispatchedInstructions?: string | null | undefined;
317
+ watchSince?: number | null | undefined;
318
+ watchWindowMinutes?: number | null | undefined;
319
+ regressedSignals?: {
320
+ kind: "monitor" | "slo";
321
+ id: string;
322
+ name: string;
323
+ state: "alert" | "no_data" | "ok" | "warn";
324
+ detail?: string | undefined;
325
+ }[] | null | undefined;
326
+ attemptLog?: {
327
+ attempt: number;
328
+ at: number;
329
+ outcome: "completed" | "failed";
330
+ headSha?: string | null | undefined;
331
+ instructions?: string | null | undefined;
332
+ failingChecks?: {
333
+ name: string;
334
+ conclusion: string | null;
335
+ url?: string | null | undefined;
336
+ repo?: string | undefined;
337
+ }[] | null | undefined;
338
+ summary?: string | null | undefined;
339
+ }[] | null | undefined;
340
+ lastApprovals?: number | null | undefined;
341
+ requiredApprovingReviewCount?: number | null | undefined;
342
+ pendingThreadIds?: string[] | null | undefined;
343
+ lastAddressedCommentAt?: number | null | undefined;
344
+ humanReviewGraceMinutes?: number | null | undefined;
345
+ pendingFix?: {
346
+ instructions: string;
347
+ at: number;
348
+ } | null | undefined;
349
+ } | null | undefined;
350
+ test?: {
351
+ phase: "fixing" | "testing";
352
+ attempts: number;
353
+ maxAttempts: number;
354
+ lastReport?: {
355
+ greenlight: boolean;
356
+ summary: string;
357
+ tested: string[];
358
+ outcomes: {
359
+ name: string;
360
+ status: "failed" | "passed" | "skipped";
361
+ detail?: string | undefined;
362
+ }[];
363
+ concerns: {
364
+ title: string;
365
+ detail: string;
366
+ severity: "critical" | "high" | "low" | "medium";
367
+ }[];
368
+ requirementVerdicts?: {
369
+ requirementId: string;
370
+ status: "met" | "not_covered" | "not_met";
371
+ detail?: string | undefined;
372
+ }[] | undefined;
373
+ environment?: "ephemeral" | "local" | undefined;
374
+ screenshots?: {
375
+ view: string;
376
+ artifactId: string;
377
+ hash?: string | undefined;
378
+ width?: number | undefined;
379
+ height?: number | undefined;
380
+ referenceArtifactId?: string | undefined;
381
+ }[] | undefined;
382
+ abort?: {
383
+ reason: string;
384
+ } | null | undefined;
385
+ } | null | undefined;
386
+ attemptLog?: {
387
+ attempt: number;
388
+ at: number;
389
+ outcome: "completed" | "failed";
390
+ summary?: string | null | undefined;
391
+ concerns?: {
392
+ title: string;
393
+ detail: string;
394
+ severity: "critical" | "high" | "low" | "medium";
395
+ }[] | null | undefined;
396
+ }[] | null | undefined;
397
+ infraSetup?: {
398
+ started: boolean;
399
+ dockerAvailable?: boolean | null | undefined;
400
+ dockerWorkload?: "undetermined" | "unusable" | "usable" | null | undefined;
401
+ dockerEgress?: "blocked" | "reachable" | "undetermined" | null | undefined;
402
+ composePath?: string | null | undefined;
403
+ at: number;
404
+ durationMs?: number | null | undefined;
405
+ logs?: string | null | undefined;
406
+ error?: string | null | undefined;
407
+ } | null | undefined;
408
+ } | null | undefined;
409
+ testerQuality?: {
410
+ enabled: boolean;
411
+ attempts: number;
412
+ maxAttempts: number;
413
+ gating?: {
414
+ enabled: boolean;
415
+ minComplexity?: number | undefined;
416
+ minRisk?: number | undefined;
417
+ minImpact?: number | undefined;
418
+ onMissingEstimate: "run" | "skip";
419
+ } | null | undefined;
420
+ verdicts: {
421
+ adequate: boolean;
422
+ feedback: string;
423
+ gaps: string[];
424
+ at: number;
425
+ model?: string | null | undefined;
426
+ }[];
427
+ exceeded?: boolean | undefined;
428
+ } | null | undefined;
429
+ humanTest?: {
430
+ phase: "awaiting_human" | "fixing" | "passed" | "provisioning" | "resolving_conflicts";
431
+ environment?: {
432
+ id: string;
433
+ url: string | null;
434
+ status: "expired" | "failed" | "provisioning" | "ready" | "tearing_down" | "torn_down";
435
+ expiresAt?: number | null | undefined;
436
+ } | null | undefined;
437
+ degradedReason?: string | null | undefined;
438
+ attempts: number;
439
+ maxAttempts: number;
440
+ headSha?: string | null | undefined;
441
+ rounds?: {
442
+ kind: "fix" | "pull-main";
443
+ findings: string;
444
+ helperKind: string;
445
+ jobId?: string | null | undefined;
446
+ outcome?: "completed" | "failed" | null | undefined;
447
+ at: number;
448
+ }[] | undefined;
449
+ pendingAction?: {
450
+ type: "confirm" | "pull-main" | "recreate" | "request-fix";
451
+ findings?: string | undefined;
452
+ } | null | undefined;
453
+ } | null | undefined;
454
+ visualConfirm?: {
455
+ phase: "approved" | "awaiting_human" | "fixing";
456
+ pairs?: {
457
+ view: string;
458
+ actualArtifactId?: string | null | undefined;
459
+ referenceArtifactId?: string | null | undefined;
460
+ referenceOrigin?: "design" | "upload" | null | undefined;
461
+ }[] | undefined;
462
+ degradedReason?: string | null | undefined;
463
+ designReferences?: {
464
+ documents: number;
465
+ images: number;
466
+ dropped?: number | undefined;
467
+ gaps?: {
468
+ title: string;
469
+ reason: "failed" | "none" | "not_retained" | "partial" | "storage_unavailable" | null;
470
+ dropped?: number | undefined;
471
+ }[] | undefined;
472
+ } | null | undefined;
473
+ attempts: number;
474
+ maxAttempts: number;
475
+ rounds?: {
476
+ findings: string;
477
+ helperKind: string;
478
+ jobId?: string | null | undefined;
479
+ outcome?: "completed" | "failed" | null | undefined;
480
+ at: number;
481
+ }[] | undefined;
482
+ pendingAction?: {
483
+ type: "approve" | "recapture" | "request-fix";
484
+ findings?: string | undefined;
485
+ } | null | undefined;
486
+ } | null | undefined;
487
+ environment?: {
488
+ id: string;
489
+ url: string | null;
490
+ status: "expired" | "failed" | "provisioning" | "ready" | "tearing_down" | "torn_down";
491
+ expiresAt?: number | null | undefined;
492
+ lastError?: string | null | undefined;
493
+ statusNote?: string | null | undefined;
494
+ provisionType?: "cloudflare" | "custom" | "docker-compose" | "infraless" | "kubernetes" | null | undefined;
495
+ engine?: "cloudflare" | "local-docker" | "local-k3s" | "none" | "remote-custom" | "remote-kubernetes" | null | undefined;
496
+ } | null | undefined;
497
+ subtasks?: {
498
+ completed: number;
499
+ inProgress: number;
500
+ total: number;
501
+ items?: {
502
+ label: string;
503
+ status: "completed" | "in_progress" | "pending";
504
+ }[] | undefined;
505
+ } | undefined;
506
+ container?: {
507
+ status: "destroyed" | "errored" | "starting" | "up";
508
+ phase?: string | null | undefined;
509
+ id?: string | null | undefined;
510
+ url?: string | null | undefined;
511
+ } | null | undefined;
512
+ delegated?: {
513
+ executor: string;
514
+ status: "cancelled" | "done" | "failed" | "running" | "starting";
515
+ correlationKey: string;
516
+ poll?: {
517
+ intervalMs: number;
518
+ maxDurationMs: number;
519
+ } | null | undefined;
520
+ externalId?: string | null | undefined;
521
+ url?: string | null | undefined;
522
+ phase?: string | null | undefined;
523
+ branches?: {
524
+ base: string;
525
+ work: string;
526
+ } | null | undefined;
527
+ repo?: {
528
+ owner: string;
529
+ name: string;
530
+ } | null | undefined;
531
+ branch?: string | null | undefined;
532
+ attempts: {
533
+ startedAt: number;
534
+ externalId?: string | null | undefined;
535
+ url?: string | null | undefined;
536
+ outcome?: string | null | undefined;
537
+ usageReported?: boolean | undefined;
538
+ }[];
539
+ note?: string | null | undefined;
540
+ } | null | undefined;
541
+ search?: {
542
+ available: boolean;
543
+ provider: "brave" | "searxng" | null;
544
+ } | null | undefined;
545
+ decision: {
546
+ id: string;
547
+ question: string;
548
+ options: string[];
549
+ chosen: string | null;
550
+ } | null;
551
+ requiresApproval?: boolean | undefined;
552
+ approval?: {
553
+ id: string;
554
+ status: "approved" | "changes_requested" | "pending" | "rejected";
555
+ proposal: string;
556
+ feedback?: string | undefined;
557
+ comments?: {
558
+ quotedSource?: string | undefined;
559
+ srcStart?: number | undefined;
560
+ srcEnd?: number | undefined;
561
+ anchorId?: string | undefined;
562
+ severity?: "blocker" | "major" | "minor" | undefined;
563
+ body: string;
564
+ }[] | undefined;
565
+ requiredApprovals?: number | undefined;
566
+ approverPolicy?: {
567
+ roles?: ("admin" | "member" | "viewer")[] | undefined;
568
+ userIds?: string[] | undefined;
569
+ } | undefined;
570
+ approvals?: {
571
+ actorId: string;
572
+ actorLabel?: string | undefined;
573
+ at: number;
574
+ }[] | undefined;
575
+ } | null | undefined;
576
+ companion?: {
577
+ threshold: number;
578
+ maxAttempts: number;
579
+ attempts: number;
580
+ verdicts: {
581
+ rating: number;
582
+ threshold: number;
583
+ passed: boolean;
584
+ feedback: string;
585
+ comments?: {
586
+ quotedSource?: string | undefined;
587
+ srcStart?: number | undefined;
588
+ srcEnd?: number | undefined;
589
+ anchorId?: string | undefined;
590
+ severity?: "blocker" | "major" | "minor" | undefined;
591
+ body: string;
592
+ }[] | undefined;
593
+ }[];
594
+ exceeded?: boolean | undefined;
595
+ capSettledByPolicy?: boolean | undefined;
596
+ stalled?: boolean | undefined;
597
+ } | null | undefined;
598
+ reviewCapSettledByPolicy?: boolean | undefined;
599
+ autoAnsweredByPolicy?: boolean | undefined;
600
+ followUps?: {
601
+ enabled: boolean;
602
+ items: {
603
+ id: string;
604
+ kind: "follow_up" | "question";
605
+ title: string;
606
+ detail: string;
607
+ suggestedAction?: string | null | undefined;
608
+ status: "answered" | "closed" | "dismissed" | "filed" | "pending" | "queued";
609
+ answer?: string | null | undefined;
610
+ sentToCoder?: boolean | undefined;
611
+ dismissedByPolicy?: boolean | undefined;
612
+ sendBackDropped?: boolean | undefined;
613
+ ticketExternalId?: string | null | undefined;
614
+ ticketUrl?: string | null | undefined;
615
+ createdAt: number;
616
+ updatedAt: number;
617
+ }[];
618
+ loops: number;
619
+ maxLoops: number;
620
+ } | null | undefined;
621
+ forkDecision?: {
622
+ status: "answering" | "awaiting_choice" | "chosen" | "proposing" | "single_path" | "skipped";
623
+ seamSummary?: string | null | undefined;
624
+ forks: {
625
+ id: string;
626
+ title: string;
627
+ summary: string;
628
+ approach: string;
629
+ tradeoffs: string[];
630
+ riskNotes?: string | null | undefined;
631
+ recommended?: boolean | undefined;
632
+ }[];
633
+ singlePathReason?: string | null | undefined;
634
+ chat: {
635
+ id: string;
636
+ role: "assistant" | "human";
637
+ text: string;
638
+ createdAt: number;
639
+ }[];
640
+ maxChatTurns: number;
641
+ chosen?: {
642
+ forkId?: string | null | undefined;
643
+ custom?: string | null | undefined;
644
+ note?: string | null | undefined;
645
+ at: number;
646
+ } | null | undefined;
647
+ model?: string | null | undefined;
648
+ } | null | undefined;
649
+ judge?: {
650
+ status: "awaiting_decision" | "bouncing" | "evaluating" | "failed" | "passed" | "skipped";
651
+ rubricId?: string | null | undefined;
652
+ rubricName?: string | null | undefined;
653
+ rubricOverridden: boolean;
654
+ verdict?: {
655
+ score: number;
656
+ summary: string;
657
+ findings: {
658
+ title: string;
659
+ detail?: string | undefined;
660
+ severity: "critical" | "high" | "low" | "medium";
661
+ where?: string | undefined;
662
+ }[];
663
+ } | null | undefined;
664
+ threshold?: number | null | undefined;
665
+ disposition?: "bounce" | "fail" | "park" | "pass" | null | undefined;
666
+ bounces: number;
667
+ maxBounces: number;
668
+ model?: string | null | undefined;
669
+ modelPin?: {
670
+ requested: string;
671
+ status: "applied" | "overridden" | "unavailable";
672
+ } | null | undefined;
673
+ rounds: {
674
+ round: number;
675
+ at: number;
676
+ verdict: {
677
+ score: number;
678
+ summary: string;
679
+ findings: {
680
+ title: string;
681
+ detail?: string | undefined;
682
+ severity: "critical" | "high" | "low" | "medium";
683
+ where?: string | undefined;
684
+ }[];
685
+ };
686
+ disposition: "bounce" | "fail" | "park" | "pass";
687
+ model?: string | null | undefined;
688
+ }[];
689
+ note?: string | null | undefined;
690
+ capSettledByPolicy?: boolean | undefined;
691
+ resolution?: {
692
+ choice: "bounce" | "proceed" | "stop";
693
+ feedback?: string | null | undefined;
694
+ at: number;
695
+ } | null | undefined;
696
+ } | null | undefined;
697
+ ralph?: {
698
+ phase: "iterating";
699
+ attempts: number;
700
+ maxIterations: number;
701
+ validationCommand: string;
702
+ progressPath?: string | null | undefined;
703
+ lastExitCode?: number | null | undefined;
704
+ lastValidationTail?: string | null | undefined;
705
+ noProgressStreak?: number | null | undefined;
706
+ attemptLog?: {
707
+ attempt: number;
708
+ at: number;
709
+ validationPassed: boolean;
710
+ exitCode?: number | null | undefined;
711
+ outputTail?: string | null | undefined;
712
+ summary?: string | null | undefined;
713
+ headSha?: string | null | undefined;
714
+ }[] | null | undefined;
715
+ droppedAttempts?: number | null | undefined;
716
+ } | null | undefined;
717
+ validation?: {
718
+ passed: boolean;
719
+ attempts: number;
720
+ maxAttempts: number;
721
+ outcomes: {
722
+ label: string;
723
+ command: string;
724
+ exitCode: number;
725
+ passed: boolean;
726
+ outputTail?: string | undefined;
727
+ durationMs?: number | undefined;
728
+ timedOut?: boolean | undefined;
729
+ }[];
730
+ at?: number | undefined;
731
+ } | null | undefined;
732
+ validationConfigUnreadable?: boolean | null | undefined;
733
+ reproduction?: {
734
+ status: "declared_infeasible" | "inconclusive" | "reproduced";
735
+ command: string;
736
+ testPaths: string[];
737
+ omittedTestPaths?: number | undefined;
738
+ base?: {
739
+ exitCode: number;
740
+ passed: boolean;
741
+ outputTail?: string | undefined;
742
+ durationMs?: number | undefined;
743
+ timedOut?: boolean | undefined;
744
+ setupFailed?: boolean | undefined;
745
+ } | undefined;
746
+ final?: {
747
+ exitCode: number;
748
+ passed: boolean;
749
+ outputTail?: string | undefined;
750
+ durationMs?: number | undefined;
751
+ timedOut?: boolean | undefined;
752
+ setupFailed?: boolean | undefined;
753
+ } | undefined;
754
+ attempts: number;
755
+ maxAttempts: number;
756
+ reason?: string | undefined;
757
+ alternativeVerification?: string | undefined;
758
+ note?: string | undefined;
759
+ at: number;
760
+ } | null | undefined;
761
+ pendingForkChat?: {
762
+ messageId: string;
763
+ } | null | undefined;
764
+ prReview?: {
765
+ status: "awaiting_selection" | "challenging" | "done" | "fixing" | "posting" | "reviewing" | "skipped";
766
+ summary?: string | null | undefined;
767
+ slices: {
768
+ id: string;
769
+ title: string;
770
+ rationale: string;
771
+ paths: string[];
772
+ }[];
773
+ sliceReviews: {
774
+ label: string;
775
+ status: "completed" | "in_progress";
776
+ report?: string | null | undefined;
777
+ }[];
778
+ resumeAttempts: number;
779
+ resumePendingSlices?: string[] | undefined;
780
+ findings: {
781
+ id: string;
782
+ sliceId?: string | null | undefined;
783
+ path: string;
784
+ line?: number | null | undefined;
785
+ side?: "LEFT" | "RIGHT" | null | undefined;
786
+ severity: "blocker" | "high" | "low" | "medium" | "nit";
787
+ category: "correctness" | "maintainability" | "other" | "performance" | "security" | "style" | "test";
788
+ title: string;
789
+ detail: string;
790
+ suggestedFix?: string | null | undefined;
791
+ challenge?: {
792
+ status: "amended" | "failed" | "investigating" | "queued" | "retracted" | "upheld";
793
+ question?: string | null | undefined;
794
+ justification?: string | null | undefined;
795
+ } | null | undefined;
796
+ }[];
797
+ selectedFindingIds: string[];
798
+ resolution?: "finish" | "fix" | "post" | null | undefined;
799
+ prUrl?: string | null | undefined;
800
+ model?: string | null | undefined;
801
+ reviewedHeadSha?: string | null | undefined;
802
+ postReport?: {
803
+ attempted: number;
804
+ posted: number;
805
+ folded: number;
806
+ bodyPosted?: boolean | null | undefined;
807
+ bodyError?: string | null | undefined;
808
+ failures: {
809
+ findingId: string;
810
+ path: string;
811
+ line?: number | null | undefined;
812
+ reason: string;
813
+ }[];
814
+ attempt?: number | undefined;
815
+ } | null | undefined;
816
+ postedFindingIds: string[];
817
+ postedBody: boolean;
818
+ postAttempts: number;
819
+ } | null | undefined;
820
+ bugFishing?: {
821
+ status: "awaiting_triage" | "done" | "fishing";
822
+ phases: {
823
+ id: string;
824
+ title: string;
825
+ goal: string;
826
+ status: "completed" | "failed" | "fishing" | "pending";
827
+ summary?: string | null | undefined;
828
+ settledAt?: number | null | undefined;
829
+ failureReason?: string | null | undefined;
830
+ territoryId?: string | null | undefined;
831
+ territoryLabel?: string | null | undefined;
832
+ coverage?: {
833
+ filesRead: number;
834
+ manifestFiles: number;
835
+ offManifest: number;
836
+ source: "self-reported";
837
+ } | null | undefined;
838
+ outOfScopeFindings?: number | undefined;
839
+ }[];
840
+ currentPhaseIndex: number;
841
+ findings: {
842
+ id: string;
843
+ phaseId: string;
844
+ territoryId?: string | null | undefined;
845
+ path: string;
846
+ line?: number | null | undefined;
847
+ severity: "critical" | "high" | "low" | "medium";
848
+ kind: "bug" | "edge-case" | "footgun" | "logic-gap" | "other" | "requirement-gap";
849
+ confidence: "high" | "low" | "medium";
850
+ title: string;
851
+ detail: string;
852
+ failureScenario?: string | null | undefined;
853
+ evidence?: string | null | undefined;
854
+ suggestedFix?: string | null | undefined;
855
+ spawn?: {
856
+ status: "failed" | "pending" | "spawned";
857
+ taskId: string;
858
+ executionId?: string | null | undefined;
859
+ pipelineId: string;
860
+ requestedBy?: string | null | undefined;
861
+ requestedAt: number;
862
+ failureReason?: string | null | undefined;
863
+ } | null | undefined;
864
+ dismissed: boolean;
865
+ }[];
866
+ territories?: {
867
+ id: string;
868
+ label: string;
869
+ roots: string[];
870
+ fileCount: number;
871
+ approxTokens: number;
872
+ source: "blueprint" | "directory" | "whole-codebase";
873
+ subtreeShas: string[];
874
+ }[] | undefined;
875
+ plan?: {
876
+ passBudget: number;
877
+ plannedCells: number;
878
+ unfished: {
879
+ territoryId: string;
880
+ territoryLabel: string;
881
+ phaseId: string;
882
+ phaseTitle: string;
883
+ }[];
884
+ treeTruncated: boolean;
885
+ surveyUnavailableReason?: string | null | undefined;
886
+ } | null | undefined;
887
+ model?: string | null | undefined;
888
+ defaultFixPipelineId?: string | null | undefined;
889
+ } | null | undefined;
890
+ pendingPrReviewPost?: boolean | null | undefined;
891
+ challengeJobs?: {
892
+ findingId: string;
893
+ question?: string | null | undefined;
894
+ epoch?: number | undefined;
895
+ jobId?: string | undefined;
896
+ model?: string | undefined;
897
+ subscriptionTokenId?: string | undefined;
898
+ initiatedByUserId?: string | undefined;
899
+ evictionRecoveries?: number | undefined;
900
+ }[] | undefined;
901
+ rework?: {
902
+ previousProposal: string;
903
+ feedback: string;
904
+ comments?: {
905
+ quotedSource?: string | undefined;
906
+ srcStart?: number | undefined;
907
+ srcEnd?: number | undefined;
908
+ anchorId?: string | undefined;
909
+ severity?: "blocker" | "major" | "minor" | undefined;
910
+ body: string;
911
+ }[] | undefined;
912
+ requestedBy: "human" | "reviewer";
913
+ } | null | undefined;
914
+ pendingIncorporation?: {
915
+ feedback?: string | undefined;
916
+ after?: "proceed" | "rereview" | undefined;
917
+ } | null | undefined;
918
+ pendingRecommendation?: {
919
+ itemIds: string[];
920
+ note?: string | undefined;
921
+ } | null | undefined;
922
+ pendingInterview?: {
923
+ proceed?: boolean | undefined;
924
+ } | null | undefined;
925
+ consensus?: {
926
+ enabled: boolean;
927
+ strategy: "debate" | "ranked-voting" | "specialist-panel";
928
+ participants: {
929
+ id: string;
930
+ role: string;
931
+ systemFraming?: string | undefined;
932
+ modelId?: string | undefined;
933
+ }[];
934
+ synthesizerModelId?: string | undefined;
935
+ rounds?: number | undefined;
936
+ gating?: {
937
+ enabled: boolean;
938
+ minComplexity?: number | undefined;
939
+ minRisk?: number | undefined;
940
+ minImpact?: number | undefined;
941
+ onMissingEstimate: "consensus" | "standard";
942
+ } | undefined;
943
+ groupIds?: string[] | undefined;
944
+ selectedGroup?: {
945
+ id: string;
946
+ name: string;
947
+ } | undefined;
948
+ } | null | undefined;
949
+ gating?: {
950
+ enabled: boolean;
951
+ minComplexity?: number | undefined;
952
+ minRisk?: number | undefined;
953
+ minImpact?: number | undefined;
954
+ onMissingEstimate: "run" | "skip";
955
+ } | null | undefined;
956
+ stepOptions?: {
957
+ autoRecommend?: boolean | undefined;
958
+ skillId?: string | undefined;
959
+ maxOutputTokens?: number | undefined;
960
+ agentVariantId?: string | undefined;
961
+ binaryOutput?: {
962
+ storageServiceId: string;
963
+ contextServiceIds?: string[] | undefined;
964
+ generatorIds?: string[] | undefined;
965
+ modalities?: ("3d-model" | "3d-scene" | "audio" | "document" | "image" | "video")[] | undefined;
966
+ mediaTypes?: string[] | undefined;
967
+ generation?: import("@cat-factory/contracts").BinaryGenerationOptions | undefined;
968
+ comparison?: {
969
+ perGenerator?: number | undefined;
970
+ multiSelect?: true | undefined;
971
+ } | undefined;
972
+ } | undefined;
973
+ retainEnvironment?: boolean | undefined;
974
+ deployFix?: {
975
+ enabled?: boolean | undefined;
976
+ maxAttempts?: number | undefined;
977
+ } | undefined;
978
+ environmentInvestigation?: import("@cat-factory/contracts").EnvironmentInvestigationConfig | undefined;
979
+ gateConfig?: {
980
+ approvers?: {
981
+ roles?: ("admin" | "member" | "viewer")[] | undefined;
982
+ userIds?: string[] | undefined;
983
+ } | undefined;
984
+ minApprovals?: number | undefined;
985
+ fields?: {
986
+ [x: string]: string | number | boolean | string[];
987
+ } | undefined;
988
+ } | undefined;
989
+ condition?: {
990
+ serviceScope: "backend" | "frontend";
991
+ } | undefined;
992
+ } | null | undefined;
993
+ skipped?: boolean | undefined;
994
+ skipReason?: "condition" | "gated" | "no_pull_request" | "producer_skipped" | "run_complete" | undefined;
995
+ noBusinessSpecs?: boolean | undefined;
996
+ technicalCorroborated?: boolean | undefined;
997
+ output?: string | undefined;
998
+ outputIsRendered?: boolean | undefined;
999
+ custom?: unknown;
1000
+ hasOutput?: boolean | undefined;
1001
+ model?: string | undefined;
1002
+ subscriptionTokenId?: string | undefined;
1003
+ initiatedByUserId?: string | undefined;
1004
+ selectedFragmentIds?: string[] | undefined;
1005
+ fragmentAdherence?: {
1006
+ fragmentId?: string | undefined;
1007
+ title?: string | undefined;
1008
+ rating: number;
1009
+ assessment: string;
1010
+ relatedFindings: string[];
1011
+ }[] | undefined;
1012
+ effortReport?: {
1013
+ difficulty: number;
1014
+ summary?: string | undefined;
1015
+ reducedEffectiveness?: string | undefined;
1016
+ obstacles?: string[] | undefined;
1017
+ } | undefined;
1018
+ skillVersions?: {
1019
+ skillId: string;
1020
+ commit: string | null;
1021
+ sha: string;
1022
+ }[] | undefined;
1023
+ toolServers?: {
1024
+ wired: {
1025
+ id: string;
1026
+ label: string;
1027
+ transport: "http" | "stdio";
1028
+ tools?: string[] | undefined;
1029
+ }[];
1030
+ unavailable: {
1031
+ id: string;
1032
+ label: string;
1033
+ reason: "consensus_panel" | "harness_unsupported" | "missing_secret" | "oauth_not_connected" | "oauth_token_failed" | "over_budget" | "reserved_secret" | "transport_unsupported" | "unusable_secret";
1034
+ }[];
1035
+ agentKind: string;
1036
+ observed?: {
1037
+ id: string;
1038
+ status: "failed" | "needs_auth" | "ready" | "unknown";
1039
+ toolCount?: number | undefined;
1040
+ }[] | undefined;
1041
+ } | undefined;
1042
+ contextDocuments?: {
1043
+ title: string;
1044
+ externalId: string;
1045
+ url: string;
1046
+ origin: "confluence" | "figma" | "github" | "linear" | "notion" | "upload" | "zeplin";
1047
+ freshness?: {
1048
+ status: "confirmed";
1049
+ version: string;
1050
+ change: "reimported" | "revision_only" | "unchanged";
1051
+ } | {
1052
+ status: "not-applicable";
1053
+ } | {
1054
+ status: "unconfirmed";
1055
+ reason: "credentials_unreadable" | "not_connected" | "source_unreachable" | "unversioned";
1056
+ } | undefined;
1057
+ }[] | undefined;
1058
+ promptRevision?: number | undefined;
1059
+ promptVariant?: {
1060
+ id: string;
1061
+ applied: "addition-only" | "full" | "superseded" | "withdrawn";
1062
+ fingerprint?: string | undefined;
1063
+ } | undefined;
1064
+ foundationalServices?: {
1065
+ declared: string[];
1066
+ unknown: string[];
1067
+ } | undefined;
1068
+ binaryOutputs?: {
1069
+ stored: {
1070
+ service: string;
1071
+ location: string;
1072
+ entity?: string | undefined;
1073
+ contentType?: string | undefined;
1074
+ description?: string | undefined;
1075
+ dimensions?: {
1076
+ width: number;
1077
+ height: number;
1078
+ } | undefined;
1079
+ generator?: string | undefined;
1080
+ processedBy?: string | undefined;
1081
+ modality?: "3d-model" | "3d-scene" | "audio" | "document" | "image" | "video" | undefined;
1082
+ }[];
1083
+ unknownServices: string[];
1084
+ unknownGenerators: string[];
1085
+ generatorsUnverified?: true | undefined;
1086
+ invalidEntries: number;
1087
+ omitted: number;
1088
+ parseFailed?: boolean | undefined;
1089
+ undeclared?: boolean | undefined;
1090
+ } | undefined;
1091
+ binaryCandidates?: {
1092
+ status: "awaiting_choice" | "chosen" | "no_choice";
1093
+ candidates: {
1094
+ id: string;
1095
+ label?: string | undefined;
1096
+ generator?: string | undefined;
1097
+ subject?: string | undefined;
1098
+ service: string;
1099
+ location: string;
1100
+ contentType?: string | undefined;
1101
+ previewUrl?: string | undefined;
1102
+ note?: string | undefined;
1103
+ }[];
1104
+ noChoiceReason?: "no_candidates" | "parse_failed" | "undeclared" | null | undefined;
1105
+ choice?: {
1106
+ kept: {
1107
+ candidateId: string;
1108
+ storeAs?: string | undefined;
1109
+ }[];
1110
+ discarded: string[];
1111
+ note?: string | null | undefined;
1112
+ automatic?: true | undefined;
1113
+ at: number;
1114
+ } | null | undefined;
1115
+ multiSelect?: boolean | undefined;
1116
+ invalidEntries: number;
1117
+ omitted: number;
1118
+ unusablePreviews: number;
1119
+ } | null | undefined;
1120
+ credentialWait?: {
1121
+ raisedAt: number;
1122
+ } | null | undefined;
1123
+ jobId?: string | undefined;
1124
+ startedAt?: number | null | undefined;
1125
+ finishedAt?: number | null | undefined;
1126
+ firstStartedAt?: number | null | undefined;
1127
+ attempts?: number | undefined;
1128
+ dispatches?: {
1129
+ agentKind: string;
1130
+ count: number;
1131
+ }[] | undefined;
1132
+ lastActivityAt?: number | null | undefined;
1133
+ pausedAt?: number | null | undefined;
1134
+ evictionRecoveries?: number | undefined;
1135
+ transientEvictionRecoveries?: number | undefined;
1136
+ branchContentionRecoveries?: number | undefined;
1137
+ delegatedRetries?: number | undefined;
1138
+ firstEvictionDetail?: string | undefined;
1139
+ deployProvisioning?: {
1140
+ type: "cloudflare" | "custom" | "docker-compose" | "infraless" | "kubernetes";
1141
+ manifestSource?: {
1142
+ type: "colocated";
1143
+ path: string;
1144
+ renderer?: "kustomize" | "raw" | undefined;
1145
+ } | {
1146
+ type: "separate";
1147
+ repo: string;
1148
+ ref?: string | undefined;
1149
+ path: string;
1150
+ renderer?: "kustomize" | "raw" | undefined;
1151
+ } | undefined;
1152
+ composePath?: string | undefined;
1153
+ localDevOnly?: boolean | undefined;
1154
+ composeBuild?: boolean | undefined;
1155
+ recipe?: {
1156
+ composeFiles?: (string | {
1157
+ kind: "path";
1158
+ path: string;
1159
+ } | {
1160
+ kind: "inline";
1161
+ content: string;
1162
+ path?: string | undefined;
1163
+ } | {
1164
+ kind: "repo";
1165
+ repo: string;
1166
+ path: string;
1167
+ ref?: string | undefined;
1168
+ provider?: "github" | "gitlab" | undefined;
1169
+ })[] | undefined;
1170
+ composeProfiles?: string[] | undefined;
1171
+ envFiles?: {
1172
+ template: string;
1173
+ target: string;
1174
+ }[] | undefined;
1175
+ externalNetworks?: string[] | undefined;
1176
+ sharedStackRefs?: string[] | undefined;
1177
+ prerequisites?: {
1178
+ check: "disk-space" | "docker-daemon" | "env-secrets-marker" | "hosts-entries" | "http-reachable" | "memory" | "mkcert-ca" | "registry-auth" | "tcp-reachable";
1179
+ params?: {
1180
+ minGib?: number | undefined;
1181
+ registry?: string | undefined;
1182
+ host?: string | undefined;
1183
+ port?: number | undefined;
1184
+ url?: string | undefined;
1185
+ expectStatus?: number | undefined;
1186
+ expectBodyContains?: string | undefined;
1187
+ hostnames?: string[] | undefined;
1188
+ file?: string | undefined;
1189
+ marker?: string | undefined;
1190
+ } | undefined;
1191
+ required?: boolean | undefined;
1192
+ remediation?: string | undefined;
1193
+ label?: string | undefined;
1194
+ }[] | undefined;
1195
+ setupSteps?: ({
1196
+ kind: "compose-exec";
1197
+ name: string;
1198
+ service: string;
1199
+ command: string[];
1200
+ stdinFile?: string | undefined;
1201
+ user?: string | undefined;
1202
+ workdir?: string | undefined;
1203
+ timeoutMs?: number | undefined;
1204
+ } | {
1205
+ kind: "copy-file";
1206
+ name: string;
1207
+ from: string;
1208
+ to: string;
1209
+ timeoutMs?: number | undefined;
1210
+ } | {
1211
+ kind: "wait-http";
1212
+ name: string;
1213
+ url: string;
1214
+ expectStatus?: number | undefined;
1215
+ expectBodyContains?: string | undefined;
1216
+ intervalMs?: number | undefined;
1217
+ timeoutMs?: number | undefined;
1218
+ } | {
1219
+ kind: "wait-file";
1220
+ name: string;
1221
+ path: string;
1222
+ service?: string | undefined;
1223
+ intervalMs?: number | undefined;
1224
+ timeoutMs?: number | undefined;
1225
+ } | {
1226
+ kind: "host-command";
1227
+ name: string;
1228
+ command: string[];
1229
+ workdir?: string | undefined;
1230
+ timeoutMs?: number | undefined;
1231
+ })[] | undefined;
1232
+ healthGate?: {
1233
+ kind: "compose-healthy";
1234
+ } | {
1235
+ kind: "http";
1236
+ url: string;
1237
+ expectStatus?: number | undefined;
1238
+ expectBodyContains?: string | undefined;
1239
+ intervalMs?: number | undefined;
1240
+ timeoutMs?: number | undefined;
1241
+ } | {
1242
+ kind: "compose-exec";
1243
+ service: string;
1244
+ command: string[];
1245
+ intervalMs?: number | undefined;
1246
+ timeoutMs?: number | undefined;
1247
+ } | undefined;
1248
+ teardownSteps?: ({
1249
+ kind: "compose-exec";
1250
+ name: string;
1251
+ service: string;
1252
+ command: string[];
1253
+ stdinFile?: string | undefined;
1254
+ user?: string | undefined;
1255
+ workdir?: string | undefined;
1256
+ timeoutMs?: number | undefined;
1257
+ } | {
1258
+ kind: "copy-file";
1259
+ name: string;
1260
+ from: string;
1261
+ to: string;
1262
+ timeoutMs?: number | undefined;
1263
+ } | {
1264
+ kind: "wait-http";
1265
+ name: string;
1266
+ url: string;
1267
+ expectStatus?: number | undefined;
1268
+ expectBodyContains?: string | undefined;
1269
+ intervalMs?: number | undefined;
1270
+ timeoutMs?: number | undefined;
1271
+ } | {
1272
+ kind: "wait-file";
1273
+ name: string;
1274
+ path: string;
1275
+ service?: string | undefined;
1276
+ intervalMs?: number | undefined;
1277
+ timeoutMs?: number | undefined;
1278
+ } | {
1279
+ kind: "host-command";
1280
+ name: string;
1281
+ command: string[];
1282
+ workdir?: string | undefined;
1283
+ timeoutMs?: number | undefined;
1284
+ })[] | undefined;
1285
+ } | undefined;
1286
+ manifestId?: string | undefined;
1287
+ manifestPath?: string | undefined;
1288
+ images?: {
1289
+ name: string;
1290
+ newNameTemplate?: string | undefined;
1291
+ newTagTemplate?: string | undefined;
1292
+ digestTemplate?: string | undefined;
1293
+ }[] | undefined;
1294
+ helmReleases?: {
1295
+ name: string;
1296
+ chart: string;
1297
+ repo?: string | undefined;
1298
+ version: string;
1299
+ namespaceTemplate?: string | undefined;
1300
+ values?: {
1301
+ [x: string]: unknown;
1302
+ } | undefined;
1303
+ set?: {
1304
+ path: string;
1305
+ valueTemplate: string;
1306
+ }[] | undefined;
1307
+ valuesSecretRefs?: {
1308
+ path: string;
1309
+ secretRef: {
1310
+ key: string;
1311
+ };
1312
+ }[] | undefined;
1313
+ scope?: "per-environment" | "shared" | undefined;
1314
+ }[] | undefined;
1315
+ secretInjections?: ({
1316
+ mode: "secret";
1317
+ secretName: string;
1318
+ secretType?: string | undefined;
1319
+ entries: {
1320
+ key: string;
1321
+ secretRef?: {
1322
+ key: string;
1323
+ } | undefined;
1324
+ valueTemplate?: string | undefined;
1325
+ }[];
1326
+ } | {
1327
+ mode: "generatorEnvFile";
1328
+ envFilePath: string;
1329
+ entries: {
1330
+ key: string;
1331
+ secretRef?: {
1332
+ key: string;
1333
+ } | undefined;
1334
+ valueTemplate?: string | undefined;
1335
+ }[];
1336
+ })[] | undefined;
1337
+ } | undefined;
1338
+ deployEnvs?: {
1339
+ [x: string]: {
1340
+ status: "failed" | "ready" | "skipped";
1341
+ url?: string | null | undefined;
1342
+ environmentId?: string | null | undefined;
1343
+ error?: string | null | undefined;
1344
+ };
1345
+ } | undefined;
1346
+ deployFrameId?: string | undefined;
1347
+ deployPrimaryFrameId?: string | undefined;
1348
+ deployWait?: {
1349
+ frameId: string;
1350
+ environmentId: string;
1351
+ startedAt: number;
1352
+ polls: number;
1353
+ } | undefined;
1354
+ deployFix?: {
1355
+ phase: "fixing" | "retrying";
1356
+ attempts: number;
1357
+ maxAttempts: number;
1358
+ frameId: string;
1359
+ reason: string;
1360
+ lastError: string;
1361
+ cycle?: number | null | undefined;
1362
+ attemptLog?: {
1363
+ attempt: number;
1364
+ cycle?: number | null | undefined;
1365
+ at: number;
1366
+ outcome: "completed" | "failed";
1367
+ reason: string;
1368
+ error: string;
1369
+ summary?: string | null | undefined;
1370
+ }[] | null | undefined;
1371
+ droppedAttempts?: number | null | undefined;
1372
+ } | undefined;
1373
+ environmentInvestigation?: import("@cat-factory/contracts").EnvironmentInvestigationState | undefined;
1374
+ disposeEnvs?: {
1375
+ [x: string]: {
1376
+ status: "failed" | "none" | "reclaimed";
1377
+ environmentId?: string | null | undefined;
1378
+ confirmation?: "confirmed" | "still_standing" | "unconfirmed" | "unverifiable" | null | undefined;
1379
+ error?: string | null | undefined;
1380
+ };
1381
+ } | undefined;
1382
+ }[];
1383
+ currentStep: number;
1384
+ status: "blocked" | "done" | "failed" | "paused" | "running";
1385
+ failure?: {
1386
+ kind: "agent" | "cancelled" | "companion_rejected" | "delegated_failed" | "dispatch" | "environment" | "evicted" | "harness_shutdown" | "job_failed" | "preflight" | "rejected" | "stalled" | "state_unreadable" | "timeout" | "unknown";
1387
+ message: string;
1388
+ detail: string | null;
1389
+ hint: string | null;
1390
+ reason?: string | null | undefined;
1391
+ occurredAt: number;
1392
+ lastSubtasks: {
1393
+ completed: number;
1394
+ inProgress: number;
1395
+ total: number;
1396
+ items?: {
1397
+ label: string;
1398
+ status: "completed" | "in_progress" | "pending";
1399
+ }[] | undefined;
1400
+ } | null;
1401
+ stepIndex?: number | undefined;
1402
+ } | null | undefined;
1403
+ failureHistory?: {
1404
+ kind: "agent" | "cancelled" | "companion_rejected" | "delegated_failed" | "dispatch" | "environment" | "evicted" | "harness_shutdown" | "job_failed" | "preflight" | "rejected" | "stalled" | "state_unreadable" | "timeout" | "unknown";
1405
+ message: string;
1406
+ detail: string | null;
1407
+ hint: string | null;
1408
+ reason?: string | null | undefined;
1409
+ occurredAt: number;
1410
+ lastSubtasks: {
1411
+ completed: number;
1412
+ inProgress: number;
1413
+ total: number;
1414
+ items?: {
1415
+ label: string;
1416
+ status: "completed" | "in_progress" | "pending";
1417
+ }[] | undefined;
1418
+ } | null;
1419
+ stepIndex?: number | undefined;
1420
+ }[] | undefined;
1421
+ outputHistory?: {
1422
+ stepIndex: number;
1423
+ occurredAt: number;
1424
+ output: string;
1425
+ truncated?: boolean | undefined;
1426
+ }[] | undefined;
1427
+ notes?: string[] | undefined;
1428
+ frontendBindings?: {
1429
+ envVar: string;
1430
+ serviceUrl?: string | undefined;
1431
+ serviceAddress?: string | undefined;
1432
+ }[] | undefined;
1433
+ initiatedBy?: string | null | undefined;
1434
+ initiatedByRole?: "admin" | "member" | "viewer" | null | undefined;
1435
+ initiatedByExternalIdentity?: string | null | undefined;
1436
+ mode?: "dry_run" | "live" | undefined;
1437
+ intakeOrigin?: "public-api" | "schedule" | "tracker" | "ui" | undefined;
1438
+ createdAt?: number | undefined;
1439
+ rev?: number | undefined;
1440
+ diagnostics?: {
1441
+ lastDispatch?: {
1442
+ stepIndex: number;
1443
+ agentKind: string;
1444
+ model?: string | null | undefined;
1445
+ executionBackend?: string | undefined;
1446
+ failure?: {
1447
+ kind: string;
1448
+ reason?: string | undefined;
1449
+ at: number;
1450
+ } | undefined;
1451
+ repo?: {
1452
+ owner: string;
1453
+ name: string;
1454
+ baseBranch?: string | undefined;
1455
+ provider?: string | undefined;
1456
+ } | undefined;
1457
+ at: number;
1458
+ } | undefined;
1459
+ host?: {
1460
+ platform?: string | undefined;
1461
+ } | undefined;
1462
+ } | undefined;
1463
+ inputGate?: {
1464
+ status: "blocked" | "not_applicable" | "off" | "overridden" | "passed";
1465
+ mode: "advisory" | "off" | "standard";
1466
+ issues: {
1467
+ code: "description_missing" | "description_placeholder" | "description_thin" | "reproduction_missing" | "required_field_missing" | "review_target_missing" | "success_criteria_missing";
1468
+ severity: "advisory" | "blocking";
1469
+ field?: {
1470
+ key: string;
1471
+ label: string;
1472
+ } | undefined;
1473
+ }[];
1474
+ checkedAt: number;
1475
+ overriddenBy?: string | null | undefined;
1476
+ overriddenAt?: number | undefined;
1477
+ } | undefined;
1478
+ }>;
1479
+ private advanceOnce;
250
1480
  /**
251
1481
  * The preamble's bound collaborators. Built lazily and memoised because two of them
252
1482
  * (`RunDispatcher`'s methods) resolve through a field assigned after this one in the