opencode-swarm 7.132.2 → 7.134.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 (122) hide show
  1. package/README.md +4 -1
  2. package/dist/agents/agent-output-schema.d.ts +74 -0
  3. package/dist/agents/critic.d.ts +2 -1
  4. package/dist/agents/reviewer.d.ts +1 -1
  5. package/dist/background/completion-observer.d.ts +17 -5
  6. package/dist/background/pending-delegations.d.ts +315 -2
  7. package/dist/background/stage-b-gates.d.ts +2 -0
  8. package/dist/cli/{config-doctor-bp5spb79.js → config-doctor-t5r92674.js} +3 -3
  9. package/dist/cli/{core-wg3re04e.js → core-d6yd2jzv.js} +2 -2
  10. package/dist/cli/{curation-policy-7zp2m9gv.js → curation-policy-3smfn2a3.js} +7 -7
  11. package/dist/cli/{curator-drift-y1wm4atk.js → curator-drift-tsyyf4b4.js} +4 -4
  12. package/dist/cli/{curator-h067mrcc.js → curator-hva8f3nf.js} +31 -29
  13. package/dist/cli/{curator-llm-factory-605d08hf.js → curator-llm-factory-p3aqev12.js} +31 -29
  14. package/dist/cli/{dispatch-3mhgqj2x.js → dispatch-gxbeb2ps.js} +2 -2
  15. package/dist/cli/{evidence-summary-service-jfagmvrh.js → evidence-summary-service-mrzsjpg4.js} +12 -11
  16. package/dist/cli/{gate-evidence-cy2te3x8.js → gate-evidence-b5v1xvxp.js} +4 -4
  17. package/dist/cli/guardrail-explain-k8mcvk61.js +57 -0
  18. package/dist/cli/{guardrail-log-aa112fxv.js → guardrail-log-absma1rv.js} +5 -5
  19. package/dist/cli/{hive-promoter-nv0m5rzk.js → hive-promoter-jwd51gzk.js} +31 -29
  20. package/dist/cli/{index-g4mnf3p5.js → index-1j3682j8.js} +5 -5
  21. package/dist/cli/{index-6ccynjv3.js → index-2njes601.js} +8 -8
  22. package/dist/cli/{index-w9cb5zwh.js → index-2t1n9k7b.js} +4 -4
  23. package/dist/cli/{index-f6480ee6.js → index-3dtjhr26.js} +5259 -1759
  24. package/dist/cli/{index-2tn5h2zp.js → index-4p02dp92.js} +6 -6
  25. package/dist/cli/index-b4z7s917.js +80 -0
  26. package/dist/cli/{index-bvp2v7k1.js → index-b5ek2cge.js} +266 -19
  27. package/dist/cli/index-b8zgtz81.js +123 -0
  28. package/dist/cli/{index-3s9rfnqq.js → index-baawkm48.js} +12 -12
  29. package/dist/cli/{index-fgcmxjp7.js → index-c3e0ymrg.js} +1 -1
  30. package/dist/cli/{index-q27bajqb.js → index-cfkvc5q9.js} +3 -3
  31. package/dist/cli/{index-7mkpsw6g.js → index-dd7ttx8x.js} +1 -1
  32. package/dist/cli/{index-jgfcp9bh.js → index-dgxgvzab.js} +7 -7
  33. package/dist/cli/{index-8d3m0ge3.js → index-eedq2y40.js} +48 -34
  34. package/dist/cli/{index-630badhp.js → index-g87ty4wp.js} +149 -6
  35. package/dist/cli/{index-yvv1wt2h.js → index-hgh01f6h.js} +25 -3
  36. package/dist/cli/{index-9cf1yr67.js → index-j6ywarjp.js} +3 -3
  37. package/dist/cli/{index-mwkwyej1.js → index-jpkxjmfw.js} +5 -5
  38. package/dist/cli/{index-03zyn94g.js → index-k742ecbm.js} +178 -222
  39. package/dist/cli/{index-y5qp59rc.js → index-kapharv7.js} +10 -4
  40. package/dist/cli/{index-djwemsjn.js → index-m2s0gbzt.js} +2 -2
  41. package/dist/cli/{index-4ff0x4cg.js → index-p8hezdtz.js} +1 -1
  42. package/dist/cli/{index-k4tmx21m.js → index-rkyhv4p5.js} +2 -2
  43. package/dist/cli/{index-3x761jqv.js → index-wk1h5ec2.js} +1 -1
  44. package/dist/cli/{index-jj4earrh.js → index-xfejq1p9.js} +1 -1
  45. package/dist/cli/{index-rt5jgktq.js → index-y0kk3rtv.js} +2 -2
  46. package/dist/cli/index-y3v1404y.js +1625 -0
  47. package/dist/cli/index.js +35 -31
  48. package/dist/cli/{knowledge-escalator-j0nceas7.js → knowledge-escalator-mkdac2m7.js} +8 -8
  49. package/dist/cli/{knowledge-events-gpqc62jr.js → knowledge-events-jjc9qbe0.js} +6 -6
  50. package/dist/cli/{knowledge-link-4yd2z8ev.js → knowledge-link-nc4y2zkq.js} +5 -5
  51. package/dist/cli/{knowledge-store-ggxr3ww5.js → knowledge-store-9e0w1kxm.js} +6 -6
  52. package/dist/cli/{knowledge-validator-007smap6.js → knowledge-validator-h1nrn2pk.js} +9 -9
  53. package/dist/cli/pending-delegations-v9e40hfk.js +96 -0
  54. package/dist/cli/{pr-subscriptions-zqbmctwz.js → pr-subscriptions-ztq40hrt.js} +7 -7
  55. package/dist/cli/{scan-cursor-wz4bff7a.js → scan-cursor-mk3tq3sf.js} +7 -7
  56. package/dist/cli/{schema-023gwne7.js → schema-bjb0yzsq.js} +7 -3
  57. package/dist/cli/{scope-persistence-dm5bab50.js → scope-persistence-hz3zmmsv.js} +5 -5
  58. package/dist/cli/{skill-generator-rtsg1m7x.js → skill-generator-p1de0wkr.js} +10 -10
  59. package/dist/cli/worktree-collision-ownership-c4bdnjtx.js +221 -0
  60. package/dist/commands/command-dispatch.d.ts +7 -0
  61. package/dist/commands/index.d.ts +7 -0
  62. package/dist/commands/registry.d.ts +16 -0
  63. package/dist/commands/review.d.ts +21 -0
  64. package/dist/config/agent-names.d.ts +3 -3
  65. package/dist/config/evidence-schema.d.ts +47 -47
  66. package/dist/config/index.d.ts +2 -2
  67. package/dist/config/schema.d.ts +58 -6
  68. package/dist/consensus/contracts.d.ts +3 -3
  69. package/dist/evaluation/ephemeral-agent-dispatcher.d.ts +64 -0
  70. package/dist/evaluation/model-dispatcher.d.ts +11 -5
  71. package/dist/hooks/auto-review.d.ts +30 -65
  72. package/dist/hooks/delegation-gate/worktree-collision-ownership.d.ts +28 -0
  73. package/dist/hooks/delegation-gate/worktree-isolation.d.ts +63 -1
  74. package/dist/hooks/delegation-gate/worktree-merge-status.d.ts +14 -0
  75. package/dist/hooks/delegation-gate/worktree-ownership-tag.d.ts +19 -0
  76. package/dist/hooks/delegation-gate/worktree-provisioning-owner.d.ts +30 -0
  77. package/dist/hooks/delegation-gate.d.ts +15 -6
  78. package/dist/hooks/guardrails/tool-before.d.ts +8 -0
  79. package/dist/hooks/index.d.ts +1 -1
  80. package/dist/hooks/init-orphan-recovery.d.ts +17 -0
  81. package/dist/hooks/review-receipt-collector.d.ts +53 -10
  82. package/dist/hooks/review-receipt-scope.d.ts +74 -0
  83. package/dist/hooks/review-receipt.d.ts +104 -10
  84. package/dist/hooks/reviewer-scope-file-fingerprint.d.ts +21 -0
  85. package/dist/hooks/reviewer-scope-lifecycle.d.ts +19 -0
  86. package/dist/hooks/task-result-classifier.d.ts +6 -0
  87. package/dist/index.d.ts +2 -0
  88. package/dist/index.js +583 -524
  89. package/dist/memory/schema.d.ts +1 -1
  90. package/dist/review/contracts.d.ts +29 -0
  91. package/dist/review/diff-source.d.ts +134 -0
  92. package/dist/review/engine.d.ts +60 -0
  93. package/dist/review/evidence.d.ts +88 -0
  94. package/dist/review/finding-validator.d.ts +77 -0
  95. package/dist/review/phase-runner.d.ts +37 -0
  96. package/dist/review/runtime.d.ts +32 -0
  97. package/dist/scope/scope-binding.d.ts +9 -0
  98. package/dist/services/config-doctor.d.ts +12 -0
  99. package/dist/session/snapshot-writer.d.ts +2 -0
  100. package/dist/state.d.ts +222 -1
  101. package/dist/tools/dispatch-lanes.d.ts +3 -1
  102. package/dist/tools/epic-record-divergence.d.ts +5 -5
  103. package/dist/tools/lean-turbo-review.d.ts +4 -1
  104. package/dist/tools/lean-turbo-run-phase.d.ts +3 -1
  105. package/dist/tools/phase-complete/gates/final-review-gate.d.ts +18 -0
  106. package/dist/tools/phase-complete/gates/index.d.ts +1 -0
  107. package/dist/tools/phase-complete/gates/types.d.ts +10 -0
  108. package/dist/tools/phase-complete.d.ts +13 -1
  109. package/dist/tools/plugin-registration.d.ts +3 -1
  110. package/dist/tools/swarm-command.d.ts +4 -1
  111. package/dist/tools/tool-metadata.d.ts +22 -22
  112. package/dist/turbo/lean/integration.d.ts +18 -2
  113. package/dist/turbo/lean/reviewer.d.ts +19 -3
  114. package/dist/turbo/lean/runner.d.ts +1 -1
  115. package/dist/worktree/merge.d.ts +47 -1
  116. package/package.json +1 -1
  117. package/dist/cli/guardrail-explain-s7vzm6z7.js +0 -55
  118. package/dist/cli/index-y2pfmd0z.js +0 -259
  119. package/dist/cli/pending-delegations-37t4xecr.js +0 -34
  120. package/dist/cli/{index-9f71ye47.js → index-13xxjfhn.js} +3 -3
  121. package/dist/cli/{index-s80bsjkj.js → index-2ghkk9ve.js} +6 -6
  122. package/dist/cli/{index-76kvm9z5.js → index-5nybajn9.js} +3 -3
package/dist/state.d.ts CHANGED
@@ -64,6 +64,62 @@ export interface PrSubscriptionState {
64
64
  * Transitions must be forward-only: idle → coder_delegated → pre_check_passed → reviewer_run → tests_run → complete
65
65
  */
66
66
  export type TaskWorkflowState = 'idle' | 'coder_delegated' | 'pre_check_passed' | 'reviewer_run' | 'tests_run' | 'complete';
67
+ /**
68
+ * Upper bound for per-session task file-attribution entries.
69
+ *
70
+ * Runtime concurrency is capped well below this value. When the map is full,
71
+ * only workflow-complete entries may be reclaimed; live task attribution is
72
+ * never evicted to make room.
73
+ */
74
+ export declare const MAX_TRACKED_TASK_FILE_ATTRIBUTIONS = 128;
75
+ /** Exact lifecycle state for one coder generation and its paired reviewer. */
76
+ export interface ReviewerScopeGeneration {
77
+ taskId: string;
78
+ coderCallID: string;
79
+ generation: number;
80
+ sessionIncarnation: string;
81
+ background: boolean;
82
+ declaredFiles: string[];
83
+ modifiedFiles: string[];
84
+ modifiedFileFingerprints: import('./hooks/reviewer-scope-file-fingerprint.js').ReviewerScopeFileFingerprint[];
85
+ status: 'collecting' | 'ready' | 'claimed';
86
+ createdAt: number;
87
+ readyAt?: number;
88
+ reviewerCallID?: string;
89
+ reviewerDispatchScope?: ReviewerScopeDispatchSnapshot;
90
+ }
91
+ export interface ReviewerScopeDispatchSnapshot {
92
+ hash: string;
93
+ description: string;
94
+ files: string[];
95
+ headSha: string;
96
+ taskId: string;
97
+ coderCallID: string;
98
+ generation: number;
99
+ sessionIncarnation: string;
100
+ }
101
+ export interface ReviewerScopeGenerationIdentity {
102
+ generation: number;
103
+ coderCallID: string;
104
+ sessionIncarnation: string;
105
+ }
106
+ /**
107
+ * Immutable ownership provenance retained after a background generation's
108
+ * reviewer consumes the live handoff. Delayed sibling completion ingestion may
109
+ * consult this bounded history, but only exact fingerprints and overlapping
110
+ * dispatch intervals can establish ownership.
111
+ */
112
+ export interface ReviewerScopeOwnershipTombstone extends ReviewerScopeGenerationIdentity {
113
+ parentSessionID: string;
114
+ taskId: string;
115
+ background: true;
116
+ declaredFiles: string[];
117
+ modifiedFiles: string[];
118
+ modifiedFileFingerprints: import('./hooks/reviewer-scope-file-fingerprint.js').ReviewerScopeFileFingerprint[];
119
+ createdAt: number;
120
+ readyAt: number;
121
+ consumedAt: number;
122
+ }
67
123
  /**
68
124
  * Represents per-session state for guardrail tracking.
69
125
  * Budget fields (toolCallCount, consecutiveErrors, etc.) have moved to InvocationWindow.
@@ -170,8 +226,23 @@ export interface AgentSessionState {
170
226
  lastScopeViolation: string | null;
171
227
  /** Flag for one-shot scope violation warning injection in messagesTransform */
172
228
  scopeViolationDetected?: boolean;
173
- /** Files modified by the current coder task (populated by guardrails toolBefore/toolAfter, reset on new coder delegation) */
229
+ /** Task-keyed files modified by coder work. Bounded by MAX_TRACKED_TASK_FILE_ATTRIBUTIONS. */
230
+ modifiedFilesByTask: Map<string, string[]>;
231
+ /**
232
+ * Compatibility projection for callers that still inspect the active task.
233
+ * Helpers in this module keep it synchronized only with `currentTaskId`.
234
+ */
174
235
  modifiedFilesThisCoderTask: string[];
236
+ /** Bounded coder generations awaiting exact reviewer claims. */
237
+ reviewerScopeGenerations?: Map<string, ReviewerScopeGeneration>;
238
+ /** Monotonic per-session generation source; call identity remains authoritative. */
239
+ reviewerScopeGenerationCounter?: number;
240
+ /** Non-reused identity for this in-memory parent-session incarnation. */
241
+ reviewerScopeIncarnation?: string;
242
+ /** Latest generation token by task, retained through async validation. */
243
+ reviewerScopeLatestGenerationByTask?: Map<string, ReviewerScopeGenerationIdentity>;
244
+ /** Bounded recent background ownership retained after reviewer consumption. */
245
+ reviewerScopeOwnershipHistory?: Map<string, ReviewerScopeOwnershipTombstone>;
175
246
  /** Number of coder revisions in the current task (incremented on each coder delegation completion) */
176
247
  coderRevisions: number;
177
248
  /** Flag set when coder revisions hit the configured ceiling */
@@ -449,6 +520,127 @@ export declare function resetSwarmState(): void;
449
520
  * propagate to caller (no try/catch wrapper).
450
521
  */
451
522
  export declare function resetSwarmStatePreservingSingletons(): void;
523
+ /** Match the Stage-B scope builder's hard file-count ceiling. */
524
+ export declare const MAX_REVIEWER_SCOPE_GENERATION_FILES = 256;
525
+ /** One parent session may retain at most this many parallel task generations. */
526
+ export declare const MAX_REVIEWER_SCOPE_GENERATIONS = 256;
527
+ /** Recent consumed owners are bounded to the maximum parallel generation set. */
528
+ export declare const MAX_REVIEWER_SCOPE_OWNERSHIP_HISTORY = 256;
529
+ /** Generation expiry never exceeds the parent session's normal idle TTL. */
530
+ export declare const REVIEWER_SCOPE_GENERATION_TTL_MS = 7200000;
531
+ /** Begin one exact coder generation after the full blocking before-chain passes. */
532
+ export declare function startReviewerScopeGeneration(input: {
533
+ parentSessionID: string;
534
+ taskId: string;
535
+ coderCallID: string;
536
+ background?: boolean;
537
+ declaredFiles?: string[];
538
+ createdAt?: number;
539
+ }): ReviewerScopeGeneration | null;
540
+ /** Route one child-observed write to its exact parent/task/coder generation. */
541
+ export declare function recordReviewerScopeGenerationFile(input: {
542
+ parentSessionID: string;
543
+ taskId: string;
544
+ coderCallID: string;
545
+ file: string;
546
+ now?: number;
547
+ }): boolean;
548
+ /**
549
+ * Record the bounded post-write state only after a guarded child write returns
550
+ * successfully. Pre-write routing in modifiedFiles remains authorization metadata.
551
+ */
552
+ export declare function recordReviewerScopeGenerationFileFingerprint(input: {
553
+ parentSessionID: string;
554
+ taskId: string;
555
+ coderCallID: string;
556
+ fingerprint: import('./hooks/reviewer-scope-file-fingerprint.js').ReviewerScopeFileFingerprint;
557
+ }): boolean;
558
+ /** Mark the exact coder call terminal; background running placeholders do not call this. */
559
+ export declare function markReviewerScopeGenerationReady(input: {
560
+ parentSessionID: string;
561
+ taskId: string;
562
+ coderCallID: string;
563
+ readyAt?: number;
564
+ }): boolean;
565
+ /** Read one exact coder generation for terminal guardrail/evidence checks. */
566
+ export declare function getReviewerScopeGenerationForCoderCall(input: {
567
+ parentSessionID: string;
568
+ taskId?: string;
569
+ coderCallID: string;
570
+ now?: number;
571
+ }): ReviewerScopeGeneration | null;
572
+ /** Inspect the only ready generation for a task without claiming it. */
573
+ export declare function peekReadyReviewerScopeGeneration(input: {
574
+ parentSessionID: string;
575
+ taskId: string;
576
+ now?: number;
577
+ }): ReviewerScopeGeneration | null;
578
+ /**
579
+ * Claim the only ready generation for an exact task after every blocking
580
+ * reviewer before-hook has passed. Ambiguity fails closed to no receipt.
581
+ */
582
+ export declare function claimReviewerScopeGeneration(input: {
583
+ parentSessionID: string;
584
+ taskId: string;
585
+ reviewerCallID: string;
586
+ now?: number;
587
+ }): ReviewerScopeGeneration | null;
588
+ /** Bind the immutable scope captured immediately before the reviewer Task dispatch. */
589
+ export declare function attachReviewerScopeGenerationDispatchSnapshot(input: {
590
+ parentSessionID: string;
591
+ taskId: string;
592
+ reviewerCallID: string;
593
+ snapshot: ReviewerScopeDispatchSnapshot;
594
+ }): boolean;
595
+ /** Terminal one-shot consumption by exact task and reviewer Task call. */
596
+ export declare function takeReviewerScopeGeneration(input: {
597
+ parentSessionID: string;
598
+ taskId: string;
599
+ reviewerCallID: string;
600
+ now?: number;
601
+ }): ReviewerScopeGeneration | null;
602
+ /** Read bounded immutable ownership history for delayed background ingestion. */
603
+ export declare function getReviewerScopeOwnershipHistory(input: {
604
+ parentSessionID: string;
605
+ }): ReviewerScopeOwnershipTombstone[];
606
+ /** Inspect one exact reviewer claim without consuming retryable state. */
607
+ export declare function peekReviewerScopeGenerationClaim(input: {
608
+ parentSessionID: string;
609
+ taskId: string;
610
+ reviewerCallID: string;
611
+ now?: number;
612
+ }): ReviewerScopeGeneration | null;
613
+ /** Clear one exact terminal/stale reviewer claim without touching parallel tasks. */
614
+ export declare function discardReviewerScopeGenerationClaim(input: {
615
+ parentSessionID: string;
616
+ taskId?: string;
617
+ reviewerCallID: string;
618
+ }): boolean;
619
+ /**
620
+ * Detect a concurrently collecting coder generation whose declaration overlaps
621
+ * this exact coder call. Shared declared paths cannot be attributed safely from
622
+ * one workspace snapshot, even when child write routing observed both calls.
623
+ */
624
+ export declare function reviewerScopeGenerationHasDeclaredOverlap(input: {
625
+ parentSessionID: string;
626
+ taskId: string;
627
+ coderCallID: string;
628
+ declaredFiles: string[];
629
+ }): boolean;
630
+ /** Clear one exact collecting/ready coder generation on terminal error/stale. */
631
+ export declare function discardReviewerScopeGenerationForCoderCall(input: {
632
+ parentSessionID: string;
633
+ taskId?: string;
634
+ coderCallID: string;
635
+ }): boolean;
636
+ /** Validate an async result against the latest coder generation for its task. */
637
+ export declare function isReviewerScopeGenerationCurrent(input: {
638
+ parentSessionID: string;
639
+ taskId: string;
640
+ coderCallID: string;
641
+ generation: number;
642
+ sessionIncarnation: string;
643
+ }): boolean;
452
644
  /**
453
645
  * Evict every agent session whose last tool activity is older than
454
646
  * staleDurationMs, and drop the delegation chain keyed by that same sessionID
@@ -558,6 +750,35 @@ export declare function pruneOldWindows(sessionId: string, maxAgeMs?: number, ma
558
750
  * @param agentName - Agent name to record (will be normalized)
559
751
  */
560
752
  export declare function recordPhaseAgentDispatch(sessionId: string, agentName: string): void;
753
+ /**
754
+ * Atomically replace one task's attributed file list.
755
+ *
756
+ * Returns false without mutation when the task id is invalid or the bounded
757
+ * map has no reclaimable workflow-complete slot.
758
+ */
759
+ export declare function recordModifiedFilesForTask(session: AgentSessionState, taskId: string, files: readonly string[]): boolean;
760
+ /**
761
+ * Add one file to a task's attribution without disturbing its existing files.
762
+ */
763
+ export declare function recordModifiedFileForTask(session: AgentSessionState, taskId: string, file: string): boolean;
764
+ /**
765
+ * Return a defensive copy of the files attributed to one task.
766
+ */
767
+ export declare function getModifiedFilesForTask(session: AgentSessionState, taskId: string): string[];
768
+ /**
769
+ * Reset one task's attribution. `remove` is used at terminal cleanup; the
770
+ * default keeps an empty live-task slot ready for subsequent writes.
771
+ */
772
+ export declare function resetModifiedFilesForTask(session: AgentSessionState, taskId: string, options?: {
773
+ remove?: boolean;
774
+ }): boolean;
775
+ /**
776
+ * Apply task-completion retention rules.
777
+ *
778
+ * Non-Epic sessions release attribution at the workflow-complete boundary.
779
+ * Epic sessions retain it until `epic_record_divergence` consumes the entry.
780
+ */
781
+ export declare function completeModifiedFilesForTask(session: AgentSessionState, taskId: string): void;
561
782
  /**
562
783
  * Advance a task's workflow state. Validates forward-only transitions.
563
784
  * Throws 'INVALID_TASK_STATE_TRANSITION: [taskId] [current] → [requested]' on illegal transition.
@@ -67,7 +67,7 @@ declare function validatePrReviewMicroDispatch(args: DispatchLanesAsyncArgs, dep
67
67
  export type DispatchLanesArgs = z.infer<typeof DispatchLanesArgsSchema>;
68
68
  export type DispatchLanesAsyncArgs = z.infer<typeof DispatchLanesAsyncArgsSchema>;
69
69
  export type CollectLaneResultsArgs = z.infer<typeof CollectLaneResultsArgsSchema>;
70
- export type DispatchLaneStatus = 'pending' | 'completed' | 'failed' | 'rejected' | 'cancelled' | 'stale' | 'consumed';
70
+ export type DispatchLaneStatus = 'pending' | 'completed' | 'failed' | 'rejected' | 'cancelled' | 'stale' | 'ingesting' | 'consumed';
71
71
  export interface DispatchLaneResult {
72
72
  id: string;
73
73
  agent: string;
@@ -256,6 +256,7 @@ export declare const _test_exports: {
256
256
  applyCommonPrompt: typeof applyCommonPrompt;
257
257
  applyExplorerFormatSuffix: typeof applyExplorerFormatSuffix;
258
258
  applyPrWorkflowPromptContract: typeof applyPrWorkflowPromptContract;
259
+ buildCollectResult: typeof buildCollectResult;
259
260
  buildReadOnlyTools: typeof buildReadOnlyTools;
260
261
  buildLaneSessionCreateArgs: typeof buildLaneSessionCreateArgs;
261
262
  extractAssistantTranscript: typeof extractAssistantTranscript;
@@ -341,6 +342,7 @@ declare function extractAssistantTranscript(messages: Array<{
341
342
  transcriptIncomplete: boolean;
342
343
  };
343
344
  declare function nextCollectPollInterval(currentMs: number): number;
345
+ declare function buildCollectResult(batchId: string, records: BackgroundDelegationRecord[], includePending: boolean): CollectLaneResultsResult;
344
346
  declare function recordToLaneResult(record: BackgroundDelegationRecord, batchId: string): DispatchLaneResult;
345
347
  declare function buildReadOnlyTools(): ReadOnlyToolPermissions;
346
348
  type ApplyCommonPromptResult = {
@@ -6,10 +6,8 @@
6
6
  *
7
7
  * 1. Reads the task's DECLARED scope from `.swarm/scopes/scope-{taskId}.json`
8
8
  * (the same on-disk record `readScopeFromDisk` consults).
9
- * 2. Reads the ACTUAL files the coder modified from the session's
10
- * `modifiedFilesThisCoderTask` populated by the guardrails write hook
11
- * and reset by Lean Turbo at task-boundaries, so it captures THIS
12
- * task's writes only.
9
+ * 2. Reads the ACTUAL files attributed to this exact task by the guardrails
10
+ * write hook and background-completion ingestion.
13
11
  * 3. Appends one record to `.swarm/epic/divergence.jsonl` via
14
12
  * `recordTaskDivergence`. The calibration engine reads that file on the
15
13
  * next `epic_decide_phase` invocation (the architect-facing decide
@@ -28,7 +26,7 @@
28
26
  import type { ToolDefinition } from '@opencode-ai/plugin/tool';
29
27
  import { loadPlanJsonOnly as loadPlanJsonOnly_import } from '../plan/manager.js';
30
28
  import { readScopeFromDisk as readScopeFromDisk_import } from '../scope/scope-persistence.js';
31
- import { getAgentSession as getAgentSession_import, hasActiveEpicMode as hasActiveEpicMode_import } from '../state.js';
29
+ import { getAgentSession as getAgentSession_import, getModifiedFilesForTask as getModifiedFilesForTask_import, hasActiveEpicMode as hasActiveEpicMode_import, resetModifiedFilesForTask as resetModifiedFilesForTask_import } from '../state.js';
32
30
  import { recordTaskDivergence as recordTaskDivergence_import } from '../turbo/epic/divergence-recorder.js';
33
31
  export interface EpicRecordDivergenceArgs {
34
32
  directory: string;
@@ -65,6 +63,8 @@ export interface EpicRecordDivergenceResult {
65
63
  export declare const _internals: {
66
64
  hasActiveEpicMode: typeof hasActiveEpicMode_import;
67
65
  getAgentSession: typeof getAgentSession_import;
66
+ getModifiedFilesForTask: typeof getModifiedFilesForTask_import;
67
+ resetModifiedFilesForTask: typeof resetModifiedFilesForTask_import;
68
68
  readScopeFromDisk: typeof readScopeFromDisk_import;
69
69
  loadPlanJsonOnly: typeof loadPlanJsonOnly_import;
70
70
  recordTaskDivergence: typeof recordTaskDivergence_import;
@@ -4,6 +4,8 @@
4
4
  * Dispatches a read-only reviewer agent to evaluate a completed Lean Turbo phase.
5
5
  */
6
6
  import type { ToolDefinition } from '@opencode-ai/plugin/tool';
7
+ import type { ReviewModelDispatcher } from '../review/contracts.js';
8
+ import type { ReviewAgentModelRegistry } from '../review/runtime.js';
7
9
  import { type PhaseReviewerResult } from '../turbo/lean/reviewer';
8
10
  /**
9
11
  * Arguments for the lean_turbo_review tool
@@ -27,8 +29,9 @@ export interface LeanTurboReviewResult {
27
29
  * Execute the lean_turbo_review tool.
28
30
  * Dispatches a read-only reviewer agent to evaluate a completed Lean Turbo phase.
29
31
  */
30
- export declare function executeLeanTurboReview(args: LeanTurboReviewArgs): Promise<LeanTurboReviewResult>;
32
+ export declare function executeLeanTurboReview(args: LeanTurboReviewArgs, dispatcher?: ReviewModelDispatcher, generatedAgentNames?: readonly string[], agentModelRegistry?: ReviewAgentModelRegistry, activeAgentName?: string): Promise<LeanTurboReviewResult>;
31
33
  /**
32
34
  * Tool definition for lean_turbo_review
33
35
  */
36
+ export declare function createLeanTurboReviewTool(dispatcher?: ReviewModelDispatcher, generatedAgentNames?: readonly string[], agentModelRegistry?: ReviewAgentModelRegistry, getActiveAgentName?: (sessionID: string) => string | undefined): ToolDefinition;
34
37
  export declare const lean_turbo_review: ToolDefinition;
@@ -36,6 +36,7 @@ export interface LeanTurboRunPhaseResult {
36
36
  /**
37
37
  * Test-only dependency-injection seam.
38
38
  * Allows tests to inject mocks without mock.module leakage.
39
+ * @tool-opt-out Test-only dependency-injection seam; not a public tool.
39
40
  */
40
41
  export declare const _internals: {
41
42
  LeanTurboRunner: typeof LeanTurboRunner_import;
@@ -45,8 +46,9 @@ export declare const _internals: {
45
46
  * Execute the lean_turbo_run_phase tool.
46
47
  * Creates a LeanTurboRunner and executes the specified phase.
47
48
  */
48
- export declare function executeLeanTurboRunPhase(args: LeanTurboRunPhaseArgs): Promise<LeanTurboRunPhaseResult>;
49
+ export declare function executeLeanTurboRunPhase(args: LeanTurboRunPhaseArgs, generatedAgentNames?: readonly string[]): Promise<LeanTurboRunPhaseResult>;
49
50
  /**
50
51
  * Tool definition for lean_turbo_run_phase
51
52
  */
53
+ export declare function createLeanTurboRunPhaseTool(generatedAgentNames?: readonly string[]): ToolDefinition;
52
54
  export declare const lean_turbo_run_phase: ToolDefinition;
@@ -0,0 +1,18 @@
1
+ import { collectReviewDiff } from '../../../review/diff-source.js';
2
+ import type { GateContext, GateResult } from './types.js';
3
+ /**
4
+ * Evidence-only final review gate.
5
+ *
6
+ * The model dispatch belongs to the phase_complete tool body. This gate performs
7
+ * one bounded, model-free scope collection at the terminal decision point, then
8
+ * verifies that the persisted artifact and in-memory result both describe that
9
+ * current scope and that the configured blocking policy is satisfied.
10
+ */
11
+ export declare function runFinalReviewGate(ctx: GateContext): Promise<GateResult>;
12
+ /**
13
+ * File-scoped injection seam. Production always uses the bounded Git collector;
14
+ * tests replace only this boundary to avoid process-global module mocks.
15
+ */
16
+ export declare const _internals: {
17
+ collectReviewDiff: typeof collectReviewDiff;
18
+ };
@@ -6,6 +6,7 @@ export { runArchitectureSupervisorGate } from './architecture-supervisor-gate.js
6
6
  export { runCompletionVerifyGate } from './completion-verify-gate.js';
7
7
  export { runDriftGate } from './drift-gate.js';
8
8
  export { runFinalCouncilGate } from './final-council-gate.js';
9
+ export { runFinalReviewGate } from './final-review-gate.js';
9
10
  export { runHallucinationGate } from './hallucination-gate.js';
10
11
  export { runMutationGate } from './mutation-gate.js';
11
12
  export { runPhaseCouncilGate } from './phase-council-gate.js';
@@ -40,4 +40,14 @@ export interface GateContext {
40
40
  loadedRetroBundle?: import('../../../config/evidence-schema').EvidenceBundle | null;
41
41
  /** Task id for the accepted retrospective bundle, if one was loaded */
42
42
  loadedRetroTaskId?: string | null;
43
+ /** Exact scope produced by the model-dispatching phase_complete body. */
44
+ autoReviewScopeHash?: string;
45
+ /** Completeness of the freshly collected in-memory review scope. */
46
+ autoReviewScopeComplete?: boolean;
47
+ /** Distinguishes ordinary phase review from the final durable plan phase. */
48
+ autoReviewTrigger?: 'phase_completion' | 'plan_completion';
49
+ /** Fresh in-memory disposition from the review run owned by phase_complete. */
50
+ autoReviewBlocked?: boolean;
51
+ /** Machine-readable reason from the current review run, when blocked. */
52
+ autoReviewBlockReason?: import('../../../review/engine').ReviewEngineResult['blockReason'];
43
53
  }
@@ -3,6 +3,8 @@
3
3
  * Core implementation - gathers data, enforces policy, writes event, resets state.
4
4
  */
5
5
  import type { ToolDefinition } from '@opencode-ai/plugin/tool';
6
+ import type { ReviewModelDispatcher } from '../review/contracts.js';
7
+ import type { ReviewAgentModelRegistry } from '../review/runtime.js';
6
8
  /**
7
9
  * Arguments for the phase_complete tool
8
10
  */
@@ -24,6 +26,14 @@ export interface PhaseCompleteArgs {
24
26
  /** Calling agent identity (from tool ctx) — gates the override to the architect. */
25
27
  callerAgent?: string;
26
28
  }
29
+ export interface PhaseCompleteRuntime {
30
+ reviewModelDispatcher?: ReviewModelDispatcher;
31
+ generatedAgentNames?: readonly string[];
32
+ reviewAgentModelRegistry?: ReviewAgentModelRegistry;
33
+ getActiveAgentName?: (sessionID: string) => string | undefined;
34
+ }
35
+ declare function resolvePhaseReviewAgentNames(runtime: PhaseCompleteRuntime): Iterable<string>;
36
+ /** @tool-opt-out Output-size constant, not a tool definition. */
27
37
  export declare const MAX_OUTPUT_BYTES = 512000;
28
38
  declare function allCompletedTasksHavePassedGateEvidence(directory: string, tasks: Array<{
29
39
  id: string;
@@ -33,7 +43,7 @@ declare function allCompletedTasksHavePassedGateEvidence(directory: string, task
33
43
  * Execute the phase_complete tool
34
44
  * Gathers data, enforces policy, writes event, resets state
35
45
  */
36
- export declare function executePhaseComplete(args: PhaseCompleteArgs, workingDirectory?: string, directory?: string): Promise<string>;
46
+ export declare function executePhaseComplete(args: PhaseCompleteArgs, workingDirectory?: string, directory?: string, runtime?: PhaseCompleteRuntime): Promise<string>;
37
47
  /** @internal exported for testing only */
38
48
  export declare function _buildOutputJson(outputData: {
39
49
  phase: number;
@@ -50,8 +60,10 @@ export declare function _buildOutputJson(outputData: {
50
60
  /**
51
61
  * Tool definition for phase_complete
52
62
  */
63
+ export declare function createPhaseCompleteTool(runtime?: PhaseCompleteRuntime): ToolDefinition;
53
64
  export declare const phase_complete: ToolDefinition;
54
65
  export declare const _test_exports: {
55
66
  allCompletedTasksHavePassedGateEvidence: typeof allCompletedTasksHavePassedGateEvidence;
67
+ resolvePhaseReviewAgentNames: typeof resolvePhaseReviewAgentNames;
56
68
  };
57
69
  export {};
@@ -12,6 +12,8 @@ import type { ToolDefinition } from '@opencode-ai/plugin/tool';
12
12
  import type { AgentDefinition } from '../agents/index.js';
13
13
  import type { PluginConfig } from '../config/index.js';
14
14
  import type { EvaluationModelDispatcher } from '../evaluation/model-dispatcher.js';
15
+ import type { ReviewModelDispatcher } from '../review/contracts.js';
16
+ import type { ReviewAgentModelRegistry } from '../review/runtime.js';
15
17
  /**
16
18
  * Construct the plugin tool object: one handler per manifest entry, with
17
19
  * `swarm_command` overridden by its dependency-injected instance.
@@ -22,4 +24,4 @@ import type { EvaluationModelDispatcher } from '../evaluation/model-dispatcher.j
22
24
  *
23
25
  * Knowledge tools are conditionally excluded when config.knowledge.enabled = false.
24
26
  */
25
- export declare function buildPluginToolObject(agents: Record<string, AgentDefinition>, config?: PluginConfig, evaluationModelDispatcher?: EvaluationModelDispatcher): Record<string, ToolDefinition>;
27
+ export declare function buildPluginToolObject(agents: Record<string, AgentDefinition>, config?: PluginConfig, evaluationModelDispatcher?: EvaluationModelDispatcher, reviewModelDispatcher?: ReviewModelDispatcher, generatedAgentNames?: Iterable<string>, reviewAgentModelRegistry?: ReviewAgentModelRegistry, getActiveAgentName?: (sessionID: string) => string | undefined): Record<string, ToolDefinition>;
@@ -1,5 +1,8 @@
1
1
  import type { AgentDefinition } from '../agents/index.js';
2
+ import type { AutoReviewConfig } from '../config/schema.js';
2
3
  import type { EvaluationModelDispatcher } from '../evaluation/model-dispatcher.js';
4
+ import type { ReviewModelDispatcher } from '../review/contracts.js';
5
+ import type { ReviewAgentModelRegistry } from '../review/runtime.js';
3
6
  import { createSwarmTool } from './create-tool.js';
4
- export declare function createSwarmCommandTool(agents: Record<string, AgentDefinition>, evaluationModelDispatcher?: EvaluationModelDispatcher): ReturnType<typeof createSwarmTool>;
7
+ export declare function createSwarmCommandTool(agents: Record<string, AgentDefinition>, evaluationModelDispatcher?: EvaluationModelDispatcher, reviewModelDispatcher?: ReviewModelDispatcher, autoReviewConfig?: AutoReviewConfig, reviewAgentModelRegistry?: ReviewAgentModelRegistry, getActiveAgentName?: (sessionID: string) => string | undefined): ReturnType<typeof createSwarmTool>;
5
8
  export declare const swarm_command: ReturnType<typeof createSwarmTool>;
@@ -34,7 +34,7 @@ export interface ToolMeta {
34
34
  export declare const TOOL_METADATA: {
35
35
  diff: {
36
36
  description: string;
37
- agents: ("reviewer" | "test_engineer" | "coder" | "critic_oversight" | "architect")[];
37
+ agents: ("reviewer" | "test_engineer" | "coder" | "critic_oversight" | "critic_finding_validator" | "architect")[];
38
38
  prWorkflow: {
39
39
  modes: ("PR_REVIEW" | "PR_FEEDBACK")[];
40
40
  capability: "observe";
@@ -42,7 +42,7 @@ export declare const TOOL_METADATA: {
42
42
  };
43
43
  diff_summary: {
44
44
  description: string;
45
- agents: ("reviewer" | "critic_oversight" | "architect")[];
45
+ agents: ("reviewer" | "critic_oversight" | "critic_finding_validator" | "architect")[];
46
46
  prWorkflow: {
47
47
  modes: ("PR_REVIEW" | "PR_FEEDBACK")[];
48
48
  capability: "observe";
@@ -58,7 +58,7 @@ export declare const TOOL_METADATA: {
58
58
  };
59
59
  placeholder_scan: {
60
60
  description: string;
61
- agents: ("reviewer" | "architect")[];
61
+ agents: ("reviewer" | "critic_finding_validator" | "architect")[];
62
62
  prWorkflow: {
63
63
  modes: ("PR_REVIEW" | "PR_FEEDBACK")[];
64
64
  capability: "observe";
@@ -66,7 +66,7 @@ export declare const TOOL_METADATA: {
66
66
  };
67
67
  imports: {
68
68
  description: string;
69
- agents: ("reviewer" | "test_engineer" | "coder" | "docs" | "sme" | "critic" | "critic_sounding_board" | "critic_drift_verifier" | "critic_hallucination_verifier" | "architect" | "researcher" | "docs_design")[];
69
+ agents: ("reviewer" | "test_engineer" | "coder" | "docs" | "sme" | "critic" | "critic_sounding_board" | "critic_drift_verifier" | "critic_hallucination_verifier" | "critic_finding_validator" | "architect" | "researcher" | "docs_design")[];
70
70
  prWorkflow: {
71
71
  modes: ("PR_REVIEW" | "PR_FEEDBACK")[];
72
72
  capability: "observe";
@@ -74,7 +74,7 @@ export declare const TOOL_METADATA: {
74
74
  };
75
75
  lint: {
76
76
  description: string;
77
- agents: ("reviewer" | "coder" | "architect")[];
77
+ agents: ("reviewer" | "coder" | "critic_finding_validator" | "architect")[];
78
78
  prWorkflow: {
79
79
  modes: "PR_REVIEW"[];
80
80
  capability: "validate";
@@ -82,7 +82,7 @@ export declare const TOOL_METADATA: {
82
82
  };
83
83
  secretscan: {
84
84
  description: string;
85
- agents: ("reviewer" | "critic_oversight" | "architect")[];
85
+ agents: ("reviewer" | "critic_oversight" | "critic_finding_validator" | "architect")[];
86
86
  prWorkflow: {
87
87
  modes: "PR_REVIEW"[];
88
88
  capability: "validate";
@@ -90,7 +90,7 @@ export declare const TOOL_METADATA: {
90
90
  };
91
91
  sast_scan: {
92
92
  description: string;
93
- agents: ("reviewer" | "critic_oversight" | "architect")[];
93
+ agents: ("reviewer" | "critic_oversight" | "critic_finding_validator" | "architect")[];
94
94
  prWorkflow: {
95
95
  modes: "PR_REVIEW"[];
96
96
  capability: "validate";
@@ -102,7 +102,7 @@ export declare const TOOL_METADATA: {
102
102
  };
103
103
  pre_check_batch: {
104
104
  description: string;
105
- agents: ("reviewer" | "architect")[];
105
+ agents: ("reviewer" | "critic_finding_validator" | "architect")[];
106
106
  };
107
107
  quality_budget: {
108
108
  description: string;
@@ -114,11 +114,11 @@ export declare const TOOL_METADATA: {
114
114
  };
115
115
  symbols: {
116
116
  description: string;
117
- agents: ("reviewer" | "test_engineer" | "coder" | "docs" | "designer" | "sme" | "critic" | "critic_sounding_board" | "critic_drift_verifier" | "critic_hallucination_verifier" | "architect" | "researcher" | "docs_design" | "spec_writer")[];
117
+ agents: ("reviewer" | "test_engineer" | "coder" | "docs" | "designer" | "sme" | "critic" | "critic_sounding_board" | "critic_drift_verifier" | "critic_hallucination_verifier" | "critic_finding_validator" | "architect" | "researcher" | "docs_design" | "spec_writer")[];
118
118
  };
119
119
  complexity_hotspots: {
120
120
  description: string;
121
- agents: ("reviewer" | "test_engineer" | "explorer" | "sme" | "critic" | "critic_sounding_board" | "critic_drift_verifier" | "critic_hallucination_verifier" | "critic_oversight" | "architect" | "researcher")[];
121
+ agents: ("reviewer" | "test_engineer" | "explorer" | "sme" | "critic" | "critic_sounding_board" | "critic_drift_verifier" | "critic_hallucination_verifier" | "critic_oversight" | "critic_finding_validator" | "architect" | "researcher")[];
122
122
  };
123
123
  schema_drift: {
124
124
  description: string;
@@ -186,7 +186,7 @@ export declare const TOOL_METADATA: {
186
186
  };
187
187
  pkg_audit: {
188
188
  description: string;
189
- agents: ("reviewer" | "test_engineer" | "critic_hallucination_verifier" | "critic_oversight" | "architect")[];
189
+ agents: ("reviewer" | "test_engineer" | "critic_hallucination_verifier" | "critic_oversight" | "critic_finding_validator" | "architect")[];
190
190
  prWorkflow: {
191
191
  modes: "PR_REVIEW"[];
192
192
  capability: "validate";
@@ -214,7 +214,7 @@ export declare const TOOL_METADATA: {
214
214
  };
215
215
  test_runner: {
216
216
  description: string;
217
- agents: ("reviewer" | "test_engineer" | "architect")[];
217
+ agents: ("reviewer" | "test_engineer" | "critic_finding_validator" | "architect")[];
218
218
  prWorkflow: {
219
219
  modes: "PR_REVIEW"[];
220
220
  capability: "validate";
@@ -222,7 +222,7 @@ export declare const TOOL_METADATA: {
222
222
  };
223
223
  test_impact: {
224
224
  description: string;
225
- agents: ("reviewer" | "test_engineer" | "critic_oversight" | "architect")[];
225
+ agents: ("reviewer" | "test_engineer" | "critic_oversight" | "critic_finding_validator" | "architect")[];
226
226
  prWorkflow: {
227
227
  modes: ("PR_REVIEW" | "PR_FEEDBACK")[];
228
228
  capability: "observe";
@@ -242,7 +242,7 @@ export declare const TOOL_METADATA: {
242
242
  };
243
243
  git_blame: {
244
244
  description: string;
245
- agents: ("reviewer" | "explorer" | "architect")[];
245
+ agents: ("reviewer" | "explorer" | "critic_finding_validator" | "architect")[];
246
246
  prWorkflow: {
247
247
  modes: ("PR_REVIEW" | "PR_FEEDBACK")[];
248
248
  capability: "observe";
@@ -258,7 +258,7 @@ export declare const TOOL_METADATA: {
258
258
  };
259
259
  retrieve_summary: {
260
260
  description: string;
261
- agents: ("reviewer" | "test_engineer" | "coder" | "docs" | "designer" | "sme" | "critic" | "critic_sounding_board" | "critic_drift_verifier" | "critic_hallucination_verifier" | "critic_architecture_supervisor" | "architect" | "docs_design" | "spec_writer")[];
261
+ agents: ("reviewer" | "test_engineer" | "coder" | "docs" | "designer" | "sme" | "critic" | "critic_sounding_board" | "critic_drift_verifier" | "critic_hallucination_verifier" | "critic_architecture_supervisor" | "critic_finding_validator" | "architect" | "docs_design" | "spec_writer")[];
262
262
  prWorkflow: {
263
263
  modes: ("PR_REVIEW" | "PR_FEEDBACK")[];
264
264
  capability: "observe";
@@ -338,7 +338,7 @@ export declare const TOOL_METADATA: {
338
338
  };
339
339
  knowledge_recall: {
340
340
  description: string;
341
- agents: ("reviewer" | "test_engineer" | "coder" | "docs" | "designer" | "explorer" | "sme" | "critic" | "critic_sounding_board" | "critic_drift_verifier" | "critic_hallucination_verifier" | "critic_architecture_supervisor" | "critic_oversight" | "architect" | "docs_design" | "curator_init" | "curator_phase" | "skill_improver" | "spec_writer")[];
341
+ agents: ("reviewer" | "test_engineer" | "coder" | "docs" | "designer" | "explorer" | "sme" | "critic" | "critic_sounding_board" | "critic_drift_verifier" | "critic_hallucination_verifier" | "critic_architecture_supervisor" | "critic_oversight" | "critic_finding_validator" | "architect" | "docs_design" | "curator_init" | "curator_phase" | "skill_improver" | "spec_writer")[];
342
342
  };
343
343
  knowledge_remove: {
344
344
  description: string;
@@ -354,7 +354,7 @@ export declare const TOOL_METADATA: {
354
354
  };
355
355
  search: {
356
356
  description: string;
357
- agents: ("reviewer" | "test_engineer" | "coder" | "docs" | "designer" | "explorer" | "sme" | "critic_hallucination_verifier" | "critic_oversight" | "architect" | "researcher" | "docs_design" | "skill_improver" | "spec_writer")[];
357
+ agents: ("reviewer" | "test_engineer" | "coder" | "docs" | "designer" | "explorer" | "sme" | "critic_hallucination_verifier" | "critic_oversight" | "critic_finding_validator" | "architect" | "researcher" | "docs_design" | "skill_improver" | "spec_writer")[];
358
358
  };
359
359
  ast_grep: {
360
360
  description: string;
@@ -394,11 +394,11 @@ export declare const TOOL_METADATA: {
394
394
  };
395
395
  batch_symbols: {
396
396
  description: string;
397
- agents: ("reviewer" | "explorer" | "critic_hallucination_verifier" | "critic_oversight" | "architect")[];
397
+ agents: ("reviewer" | "explorer" | "critic_hallucination_verifier" | "critic_oversight" | "critic_finding_validator" | "architect")[];
398
398
  };
399
399
  suggest_patch: {
400
400
  description: string;
401
- agents: ("reviewer" | "architect")[];
401
+ agents: ("reviewer" | "critic_finding_validator" | "architect")[];
402
402
  };
403
403
  req_coverage: {
404
404
  description: string;
@@ -410,7 +410,7 @@ export declare const TOOL_METADATA: {
410
410
  };
411
411
  repo_map: {
412
412
  description: string;
413
- agents: ("reviewer" | "coder" | "explorer" | "critic" | "critic_sounding_board" | "critic_drift_verifier" | "critic_hallucination_verifier" | "critic_architecture_supervisor" | "critic_oversight" | "architect")[];
413
+ agents: ("reviewer" | "coder" | "explorer" | "critic" | "critic_sounding_board" | "critic_drift_verifier" | "critic_hallucination_verifier" | "critic_architecture_supervisor" | "critic_oversight" | "critic_finding_validator" | "architect")[];
414
414
  prWorkflow: {
415
415
  modes: ("PR_REVIEW" | "PR_FEEDBACK")[];
416
416
  capability: "observe";
@@ -478,7 +478,7 @@ export declare const TOOL_METADATA: {
478
478
  };
479
479
  knowledge_receipt: {
480
480
  description: string;
481
- agents: ("reviewer" | "test_engineer" | "coder" | "docs" | "designer" | "sme" | "critic" | "critic_sounding_board" | "critic_drift_verifier" | "critic_hallucination_verifier" | "critic_architecture_supervisor" | "architect" | "docs_design" | "curator_init" | "curator_phase" | "skill_improver" | "spec_writer")[];
481
+ agents: ("reviewer" | "test_engineer" | "coder" | "docs" | "designer" | "sme" | "critic" | "critic_sounding_board" | "critic_drift_verifier" | "critic_hallucination_verifier" | "critic_architecture_supervisor" | "critic_finding_validator" | "architect" | "docs_design" | "curator_init" | "curator_phase" | "skill_improver" | "spec_writer")[];
482
482
  };
483
483
  knowledge_archive: {
484
484
  description: string;
@@ -494,7 +494,7 @@ export declare const TOOL_METADATA: {
494
494
  };
495
495
  swarm_command: {
496
496
  description: string;
497
- agents: ("reviewer" | "test_engineer" | "coder" | "docs" | "designer" | "explorer" | "sme" | "critic" | "architect" | "researcher" | "docs_design")[];
497
+ agents: ("reviewer" | "test_engineer" | "coder" | "docs" | "designer" | "explorer" | "sme" | "critic" | "critic_finding_validator" | "architect" | "researcher" | "docs_design")[];
498
498
  };
499
499
  dispatch_lanes: {
500
500
  description: string;