baxian 1.2.61 → 2.0.1

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 (245) hide show
  1. package/README.md +7 -4
  2. package/README.zh-CN.md +7 -4
  3. package/dist/agent/bootstrap-poller.d.ts +1 -1
  4. package/dist/agent/bootstrap-poller.d.ts.map +1 -1
  5. package/dist/agent/bootstrap-poller.js.map +1 -1
  6. package/dist/agent/bootstrap.d.ts +1 -1
  7. package/dist/agent/bootstrap.d.ts.map +1 -1
  8. package/dist/agent/bootstrap.js +6 -2
  9. package/dist/agent/bootstrap.js.map +1 -1
  10. package/dist/agent/branch.d.ts +1 -3
  11. package/dist/agent/branch.d.ts.map +1 -1
  12. package/dist/agent/branch.js +2 -2
  13. package/dist/agent/branch.js.map +1 -1
  14. package/dist/agent/dispatch-reconciler.d.ts +0 -1
  15. package/dist/agent/dispatch-reconciler.d.ts.map +1 -1
  16. package/dist/agent/dispatch-reconciler.js +15 -49
  17. package/dist/agent/dispatch-reconciler.js.map +1 -1
  18. package/dist/agent/manager.d.ts +212 -90
  19. package/dist/agent/manager.d.ts.map +1 -1
  20. package/dist/agent/manager.js +2983 -1574
  21. package/dist/agent/manager.js.map +1 -1
  22. package/dist/agent/net-exec.d.ts +3 -0
  23. package/dist/agent/net-exec.d.ts.map +1 -1
  24. package/dist/agent/net-exec.js +6 -0
  25. package/dist/agent/net-exec.js.map +1 -1
  26. package/dist/agent/pane-streamer-manager.d.ts +6 -6
  27. package/dist/agent/pane-streamer-manager.d.ts.map +1 -1
  28. package/dist/agent/pane-streamer-manager.js.map +1 -1
  29. package/dist/agent/pane-streamer.d.ts +2 -2
  30. package/dist/agent/pane-streamer.d.ts.map +1 -1
  31. package/dist/agent/pane-streamer.js +46 -36
  32. package/dist/agent/pane-streamer.js.map +1 -1
  33. package/dist/agent/phase-signal-watcher.d.ts +20 -2
  34. package/dist/agent/phase-signal-watcher.d.ts.map +1 -1
  35. package/dist/agent/phase-signal-watcher.js +135 -17
  36. package/dist/agent/phase-signal-watcher.js.map +1 -1
  37. package/dist/agent/phase-signal.d.ts +9 -7
  38. package/dist/agent/phase-signal.d.ts.map +1 -1
  39. package/dist/agent/phase-signal.js +18 -9
  40. package/dist/agent/phase-signal.js.map +1 -1
  41. package/dist/agent/preflight.d.ts +4 -1
  42. package/dist/agent/preflight.d.ts.map +1 -1
  43. package/dist/agent/preflight.js +46 -45
  44. package/dist/agent/preflight.js.map +1 -1
  45. package/dist/agent/prompt.d.ts +8 -5
  46. package/dist/agent/prompt.d.ts.map +1 -1
  47. package/dist/agent/prompt.js +34 -30
  48. package/dist/agent/prompt.js.map +1 -1
  49. package/dist/agent/repo-store.d.ts +8 -1
  50. package/dist/agent/repo-store.d.ts.map +1 -1
  51. package/dist/agent/repo-store.js +70 -15
  52. package/dist/agent/repo-store.js.map +1 -1
  53. package/dist/agent/review-transport.d.ts +20 -1
  54. package/dist/agent/review-transport.d.ts.map +1 -1
  55. package/dist/agent/review-transport.js +68 -20
  56. package/dist/agent/review-transport.js.map +1 -1
  57. package/dist/agent/root-agent-runtime.d.ts +80 -0
  58. package/dist/agent/root-agent-runtime.d.ts.map +1 -0
  59. package/dist/agent/root-agent-runtime.js +635 -0
  60. package/dist/agent/root-agent-runtime.js.map +1 -0
  61. package/dist/agent/root-recovery-coordinator.d.ts +125 -0
  62. package/dist/agent/root-recovery-coordinator.d.ts.map +1 -0
  63. package/dist/agent/root-recovery-coordinator.js +1579 -0
  64. package/dist/agent/root-recovery-coordinator.js.map +1 -0
  65. package/dist/agent/runner.d.ts +1 -0
  66. package/dist/agent/runner.d.ts.map +1 -1
  67. package/dist/agent/runner.js +103 -7
  68. package/dist/agent/runner.js.map +1 -1
  69. package/dist/agent/tmux-probe-poller.d.ts +1 -0
  70. package/dist/agent/tmux-probe-poller.d.ts.map +1 -1
  71. package/dist/agent/tmux-probe-poller.js +16 -10
  72. package/dist/agent/tmux-probe-poller.js.map +1 -1
  73. package/dist/agent/tmux.d.ts +3 -0
  74. package/dist/agent/tmux.d.ts.map +1 -1
  75. package/dist/agent/tmux.js +11 -5
  76. package/dist/agent/tmux.js.map +1 -1
  77. package/dist/api/agents.d.ts.map +1 -1
  78. package/dist/api/agents.js +42 -1
  79. package/dist/api/agents.js.map +1 -1
  80. package/dist/api/config.d.ts.map +1 -1
  81. package/dist/api/config.js +88 -17
  82. package/dist/api/config.js.map +1 -1
  83. package/dist/api/hosts.d.ts.map +1 -1
  84. package/dist/api/hosts.js +71 -15
  85. package/dist/api/hosts.js.map +1 -1
  86. package/dist/api/platform-guard.d.ts +10 -2
  87. package/dist/api/platform-guard.d.ts.map +1 -1
  88. package/dist/api/platform-guard.js +112 -10
  89. package/dist/api/platform-guard.js.map +1 -1
  90. package/dist/api/projects.d.ts.map +1 -1
  91. package/dist/api/projects.js +57 -16
  92. package/dist/api/projects.js.map +1 -1
  93. package/dist/api/tasks.d.ts.map +1 -1
  94. package/dist/api/tasks.js +21 -36
  95. package/dist/api/tasks.js.map +1 -1
  96. package/dist/app.d.ts +6 -4
  97. package/dist/app.d.ts.map +1 -1
  98. package/dist/app.js +6 -0
  99. package/dist/app.js.map +1 -1
  100. package/dist/cli.d.ts +1 -1
  101. package/dist/cli.d.ts.map +1 -1
  102. package/dist/cli.js +49 -7
  103. package/dist/cli.js.map +1 -1
  104. package/dist/config/hot-reload.d.ts +11 -2
  105. package/dist/config/hot-reload.d.ts.map +1 -1
  106. package/dist/config/hot-reload.js +43 -8
  107. package/dist/config/hot-reload.js.map +1 -1
  108. package/dist/config/loader.d.ts.map +1 -1
  109. package/dist/config/loader.js +23 -2
  110. package/dist/config/loader.js.map +1 -1
  111. package/dist/config/normalizer.d.ts.map +1 -1
  112. package/dist/config/normalizer.js +18 -0
  113. package/dist/config/normalizer.js.map +1 -1
  114. package/dist/config/validator.d.ts +3 -1
  115. package/dist/config/validator.d.ts.map +1 -1
  116. package/dist/config/validator.js +247 -54
  117. package/dist/config/validator.js.map +1 -1
  118. package/dist/event/handlers.d.ts.map +1 -1
  119. package/dist/event/handlers.js +615 -1069
  120. package/dist/event/handlers.js.map +1 -1
  121. package/dist/event/server-handlers.d.ts.map +1 -1
  122. package/dist/event/server-handlers.js +787 -487
  123. package/dist/event/server-handlers.js.map +1 -1
  124. package/dist/index.d.ts +4 -1
  125. package/dist/index.d.ts.map +1 -1
  126. package/dist/index.js +99 -79
  127. package/dist/index.js.map +1 -1
  128. package/dist/platform/command-renderer.d.ts +1 -0
  129. package/dist/platform/command-renderer.d.ts.map +1 -1
  130. package/dist/platform/command-renderer.js +16 -2
  131. package/dist/platform/command-renderer.js.map +1 -1
  132. package/dist/platform/comment-cursor.d.ts +9 -0
  133. package/dist/platform/comment-cursor.d.ts.map +1 -1
  134. package/dist/platform/comment-cursor.js +63 -5
  135. package/dist/platform/comment-cursor.js.map +1 -1
  136. package/dist/platform/driver-host.d.ts.map +1 -1
  137. package/dist/platform/driver-host.js +0 -2
  138. package/dist/platform/driver-host.js.map +1 -1
  139. package/dist/platform/driver-spec.d.ts.map +1 -1
  140. package/dist/platform/driver-spec.js +17 -6
  141. package/dist/platform/driver-spec.js.map +1 -1
  142. package/dist/platform/feedback.d.ts.map +1 -1
  143. package/dist/platform/feedback.js +0 -9
  144. package/dist/platform/feedback.js.map +1 -1
  145. package/dist/platform/git-driver.d.ts +3 -0
  146. package/dist/platform/git-driver.d.ts.map +1 -1
  147. package/dist/platform/git-driver.js +45 -3
  148. package/dist/platform/git-driver.js.map +1 -1
  149. package/dist/platform/platform-poller.d.ts +18 -5
  150. package/dist/platform/platform-poller.d.ts.map +1 -1
  151. package/dist/platform/platform-poller.js +283 -38
  152. package/dist/platform/platform-poller.js.map +1 -1
  153. package/dist/platform/plugins/github/baxian-plugin.json +1 -1
  154. package/dist/platform/plugins/github/driver.json +14 -3
  155. package/dist/platform/plugins/github/skills/baxian-cli-gh/SKILL.md +7 -6
  156. package/dist/platform/plugins/github/skills/baxian-cli-gh/agents/openai.yaml +2 -0
  157. package/dist/platform/pr-binding.d.ts.map +1 -1
  158. package/dist/platform/pr-binding.js +0 -2
  159. package/dist/platform/pr-binding.js.map +1 -1
  160. package/dist/platform/pr-conversation-cache.d.ts.map +1 -0
  161. package/dist/platform/pr-conversation-cache.js.map +1 -0
  162. package/dist/platform/row-schema.d.ts.map +1 -1
  163. package/dist/platform/row-schema.js +1 -0
  164. package/dist/platform/row-schema.js.map +1 -1
  165. package/dist/platform/startup.d.ts +29 -1
  166. package/dist/platform/startup.d.ts.map +1 -1
  167. package/dist/platform/startup.js +82 -4
  168. package/dist/platform/startup.js.map +1 -1
  169. package/dist/platform/types.d.ts +2 -0
  170. package/dist/platform/types.d.ts.map +1 -1
  171. package/dist/platform/types.js +6 -4
  172. package/dist/platform/types.js.map +1 -1
  173. package/dist/platform/verdict-engine.d.ts.map +1 -1
  174. package/dist/platform/verdict-engine.js +0 -2
  175. package/dist/platform/verdict-engine.js.map +1 -1
  176. package/dist/shared/constants.d.ts +7 -1
  177. package/dist/shared/constants.d.ts.map +1 -1
  178. package/dist/shared/constants.js +5 -0
  179. package/dist/shared/constants.js.map +1 -1
  180. package/dist/shared/types.d.ts +98 -7
  181. package/dist/shared/types.d.ts.map +1 -1
  182. package/dist/shared/types.js +18 -0
  183. package/dist/shared/types.js.map +1 -1
  184. package/dist/skills/baxian-pr-feedback/SKILL.md +5 -15
  185. package/dist/skills/baxian-pr-recheck/SKILL.md +5 -44
  186. package/dist/skills/baxian-pr-review/SKILL.md +6 -43
  187. package/dist/skills/baxian-research/SKILL.md +1 -1
  188. package/dist/skills/baxian-server-feedback/SKILL.md +7 -5
  189. package/dist/skills/baxian-server-review/SKILL.md +2 -2
  190. package/dist/skills/baxian-signals/SKILL.md +11 -7
  191. package/dist/skills/baxian-task-check/SKILL.md +3 -5
  192. package/dist/state/agent-store.js +0 -2
  193. package/dist/state/agent-store.js.map +1 -1
  194. package/dist/state/init.d.ts.map +1 -1
  195. package/dist/state/init.js +1 -0
  196. package/dist/state/init.js.map +1 -1
  197. package/dist/state/lock.d.ts +6 -0
  198. package/dist/state/lock.d.ts.map +1 -1
  199. package/dist/state/lock.js +8 -0
  200. package/dist/state/lock.js.map +1 -1
  201. package/dist/state/review-store.d.ts +21 -1
  202. package/dist/state/review-store.d.ts.map +1 -1
  203. package/dist/state/review-store.js +132 -0
  204. package/dist/state/review-store.js.map +1 -1
  205. package/dist/state/root-recovery-store.d.ts +107 -0
  206. package/dist/state/root-recovery-store.d.ts.map +1 -0
  207. package/dist/state/root-recovery-store.js +400 -0
  208. package/dist/state/root-recovery-store.js.map +1 -0
  209. package/dist/state/task-store.d.ts +6 -0
  210. package/dist/state/task-store.d.ts.map +1 -1
  211. package/dist/state/task-store.js +266 -21
  212. package/dist/state/task-store.js.map +1 -1
  213. package/dist/terminal/attach.d.ts +3 -3
  214. package/dist/terminal/attach.d.ts.map +1 -1
  215. package/dist/terminal/attach.js.map +1 -1
  216. package/dist/terminal/stream-ws.d.ts.map +1 -1
  217. package/dist/terminal/stream-ws.js.map +1 -1
  218. package/dist/web/assets/index-BXfgaFNm.js +18 -0
  219. package/dist/web/index.html +1 -1
  220. package/package.json +1 -1
  221. package/dist/github/mapper.d.ts +0 -9
  222. package/dist/github/mapper.d.ts.map +0 -1
  223. package/dist/github/mapper.js +0 -25
  224. package/dist/github/mapper.js.map +0 -1
  225. package/dist/github/poller.d.ts +0 -73
  226. package/dist/github/poller.d.ts.map +0 -1
  227. package/dist/github/poller.js +0 -556
  228. package/dist/github/poller.js.map +0 -1
  229. package/dist/github/pr-conversation-cache.d.ts.map +0 -1
  230. package/dist/github/pr-conversation-cache.js.map +0 -1
  231. package/dist/github/pr-conversation.d.ts +0 -7
  232. package/dist/github/pr-conversation.d.ts.map +0 -1
  233. package/dist/github/pr-conversation.js +0 -175
  234. package/dist/github/pr-conversation.js.map +0 -1
  235. package/dist/github/resolver.d.ts +0 -8
  236. package/dist/github/resolver.d.ts.map +0 -1
  237. package/dist/github/resolver.js +0 -28
  238. package/dist/github/resolver.js.map +0 -1
  239. package/dist/state/post-approve-store.d.ts +0 -23
  240. package/dist/state/post-approve-store.d.ts.map +0 -1
  241. package/dist/state/post-approve-store.js +0 -82
  242. package/dist/state/post-approve-store.js.map +0 -1
  243. package/dist/web/assets/index-CUJtd0bC.js +0 -16
  244. /package/dist/{github → platform}/pr-conversation-cache.d.ts +0 -0
  245. /package/dist/{github → platform}/pr-conversation-cache.js +0 -0
@@ -1,13 +1,13 @@
1
1
  import { type AgentGitPreflight } from './preflight.js';
2
- import type { AfterDone, BaxianConfig, AgentConfig, AgentBindingFacts, HostConfig, ProjectConfig, ReviewMode, ReviewPhase, SpecDocument, TaskState, TaskStatus } from '../shared/index.js';
2
+ import type { AfterDone, BaxianConfig, AgentConfig, AgentRuntimeConfig, AgentBindingFacts, HostConfig, ProjectConfig, ReviewMode, ReviewDispatchLease, ReviewPhase, ReviewRound, ServerSignalKind, ServerSignalRecovery, ServerSignalRecoveryReason, SpecDocument, TaskPhase, TaskGenerationGuard, TaskState, TaskStatus } from '../shared/index.js';
3
3
  import { GitDriver } from '../platform/git-driver.js';
4
4
  import type { PluginRegistry } from '../platform/plugin-registry.js';
5
5
  import type { NormalizedRow } from '../platform/row-schema.js';
6
6
  import { type PrRejection } from '../platform/pr-binding.js';
7
7
  import { type PendingFeedbackResult } from '../platform/feedback.js';
8
+ import { type PlatformBindingMismatch } from '../platform/startup.js';
8
9
  import type { AgentStore } from '../state/agent-store.js';
9
10
  import type { TaskStore } from '../state/task-store.js';
10
- import { PostApproveStore, type PostApproveCompletion } from '../state/post-approve-store.js';
11
11
  import type { LockManager } from '../state/lock.js';
12
12
  import type { EventBus } from '../event/bus.js';
13
13
  import type { ErrorRecordStore } from '../state/error-record-store.js';
@@ -20,8 +20,10 @@ import type { PaneStreamerManager } from './pane-streamer-manager.js';
20
20
  import { PhaseSignalWatcher, type NeedInputCommitIntent, type NeedInputCommitResult } from './phase-signal-watcher.js';
21
21
  import type { PhaseSignalKind } from './phase-signal.js';
22
22
  import { ReviewTransport } from './review-transport.js';
23
- import type { ReviewStore } from '../state/review-store.js';
24
- import { type PostMergeCleanupContext, type PlatformCliDescriptor } from './prompt.js';
23
+ import { type ReviewStore } from '../state/review-store.js';
24
+ import { type PostMergeCleanupContext, type PlatformCliDescriptor, type ServerFeedbackCorrectionPrompt } from './prompt.js';
25
+ import { ApiError } from '../errors.js';
26
+ export declare function isBenignDispatchConflict(err: unknown): err is ApiError;
25
27
  export interface EnsureSessionResult {
26
28
  ok: true;
27
29
  createdSession: boolean;
@@ -73,6 +75,8 @@ export declare class DispatchTerminalError extends Error {
73
75
  constructor(reason: DispatchTerminalReason, message: string, replDrained?: boolean);
74
76
  }
75
77
  export type EnsureSessionMode = 'create' | 'runtime' | 'recover';
78
+ export type RedispatchCurrentPhaseGuard = TaskGenerationGuard;
79
+ export type RedispatchCurrentPhaseResult = 'dispatched' | 'stale' | 'unsupported';
76
80
  export type DeletionClaimOutcome = {
77
81
  ok: true;
78
82
  } | {
@@ -93,9 +97,9 @@ export type DeletionClaimOutcome = {
93
97
  code: 'already-deleting';
94
98
  agentId: string;
95
99
  };
96
- export declare function buildLaunchCommand(agent: AgentConfig): string;
97
- export declare function launchCommandIn(dir: string, agent: AgentConfig): string;
98
- export declare function skillSubdirFor(runtime: AgentConfig['runtime']): string;
100
+ export declare function buildLaunchCommand(agent: AgentRuntimeConfig): string;
101
+ export declare function launchCommandIn(dir: string, agent: AgentRuntimeConfig): string;
102
+ export declare function skillSubdirFor(runtime: AgentRuntimeConfig['runtime']): string;
99
103
  export interface AgentManagerDeps {
100
104
  config: BaxianConfig;
101
105
  agentStore: AgentStore;
@@ -108,7 +112,6 @@ export interface AgentManagerDeps {
108
112
  imageStagingRoot?: string;
109
113
  repoStoreFactory?: (runner: CommandRunner, repoSlug: string, mode: AgentConfig['mode'], host: HostConfig | undefined, cache: RepoStoreCache, agentId: string, workdir?: string) => RepoStore;
110
114
  paneStreamerManager?: PaneStreamerManager;
111
- postApproveStore?: PostApproveStore;
112
115
  pluginRegistry?: PluginRegistry;
113
116
  platformDefaultBranchOf?: (projectId: string) => string | undefined;
114
117
  phaseSignalWatcher?: PhaseSignalWatcher;
@@ -123,13 +126,10 @@ export interface AgentManagerDeps {
123
126
  needInputRetryIntervalMs?: number;
124
127
  dispatchSettleTimeoutMs?: number;
125
128
  }
126
- export declare class PlatformCloseError extends Error {
127
- readonly step: 'close' | 'deleteBranch';
128
- constructor(step: 'close' | 'deleteBranch', cause: unknown);
129
- }
130
129
  export declare class PlatformMergeRecheckError extends Error {
130
+ readonly kind: 'pending-feedback' | 'provenance-invalid';
131
131
  readonly reason: string;
132
- constructor(reason: string);
132
+ constructor(kind: 'pending-feedback' | 'provenance-invalid', reason: string);
133
133
  }
134
134
  export interface TransitionResult {
135
135
  task: TaskState;
@@ -151,6 +151,8 @@ interface SessionDispatchOpts {
151
151
  total: number;
152
152
  };
153
153
  serverPriorFindings?: string;
154
+ serverFindingsDigest?: string;
155
+ serverFeedbackCorrection?: ServerFeedbackCorrectionPrompt;
154
156
  serverPriorResponse?: string;
155
157
  specDocuments?: readonly SpecDocument[];
156
158
  armBeforeInject?: (ctx: DispatchArmContext) => Promise<boolean>;
@@ -158,13 +160,15 @@ interface SessionDispatchOpts {
158
160
  interface StartSessionOpts extends SessionDispatchOpts {
159
161
  preserveBindingOnFailure?: boolean;
160
162
  dispatchPassToken?: string;
163
+ dispatchReviewLease?: Pick<ReviewDispatchLease, 'generation' | 'claimId' | 'signalToken' | 'headSha' | 'passToken' | 'failToken' | 'effectiveRound' | 'qaPhase'>;
161
164
  dispatchPendingBudget?: {
162
165
  since: number;
163
166
  budgetAlerted?: boolean;
164
167
  };
165
168
  }
166
169
  export interface ContinueSessionOpts extends SessionDispatchOpts {
167
- postApproveRedispatchCount?: number;
170
+ postApproveEpisode?: PostApproveEpisodeKey;
171
+ serverReviewCheckout?: 'base';
168
172
  serverAfterDone?: {
169
173
  kind: 'branch' | 'pr';
170
174
  branch: string;
@@ -185,6 +189,12 @@ export interface MergePrOpts {
185
189
  matchHeadSha?: string;
186
190
  humanOverride?: boolean;
187
191
  }
192
+ export interface PostApproveEpisodeKey {
193
+ generation: string;
194
+ token: string;
195
+ headSha: string;
196
+ }
197
+ type ReviewDispatchFence = Pick<ReviewDispatchLease, 'generation' | 'signalToken' | 'headSha' | 'passToken' | 'failToken' | 'effectiveRound' | 'qaPhase'>;
188
198
  export type CodeInterdiffResult = {
189
199
  ok: true;
190
200
  diff: string;
@@ -196,8 +206,18 @@ export type CodeInterdiffResult = {
196
206
  reason: 'released';
197
207
  };
198
208
  export interface ServerReviewDriver {
199
- dispatchCodeReview(task: TaskState): Promise<boolean>;
200
- dispatchSpecReview(task: TaskState): Promise<boolean>;
209
+ dispatchCodeReview(task: TaskState, opts?: {
210
+ bumpRound?: boolean;
211
+ expectedTask?: TaskGenerationGuard;
212
+ onSideEffect?: () => void;
213
+ settlePermit?: unknown;
214
+ }): Promise<boolean>;
215
+ dispatchSpecReview(task: TaskState, opts?: {
216
+ bumpRound?: boolean;
217
+ expectedTask?: TaskGenerationGuard;
218
+ onSideEffect?: () => void;
219
+ settlePermit?: unknown;
220
+ }): Promise<boolean>;
201
221
  }
202
222
  export declare function canDispatchWithBinding(binding: AgentBindingFacts | null | undefined): boolean;
203
223
  export declare const RECOVERABLE_QA_DISPATCH_HOLD_PHASES: Set<string>;
@@ -210,6 +230,14 @@ export interface PendingDispatchRetry {
210
230
  since: number;
211
231
  budgetAlerted?: boolean;
212
232
  }
233
+ export interface PostApproveCompletion {
234
+ token: string;
235
+ approvedHeadSha: string;
236
+ generation: string;
237
+ updatedAt: string;
238
+ redispatchCount?: number;
239
+ pendingRedispatch?: boolean;
240
+ }
213
241
  export declare class AgentManager {
214
242
  private config;
215
243
  protected agentStore: AgentStore;
@@ -221,7 +249,6 @@ export declare class AgentManager {
221
249
  protected repoStoreFactory?: AgentManagerDeps['repoStoreFactory'];
222
250
  protected repoCache: RepoStoreCache;
223
251
  protected paneStreamerManager?: PaneStreamerManager;
224
- protected postApproveStore: PostApproveStore;
225
252
  protected pluginRegistry?: PluginRegistry;
226
253
  private platformDefaultBranchOf?;
227
254
  private readonly platformDriverExec;
@@ -235,6 +262,7 @@ export declare class AgentManager {
235
262
  protected dispatchSettleTimeoutMs: number;
236
263
  protected dispatchAckResendIntervalMs: number;
237
264
  private taskMutationQueue;
265
+ private agentOperationQueues;
238
266
  private agentIndex;
239
267
  private platformRunner;
240
268
  private imageStagingRoot;
@@ -247,6 +275,7 @@ export declare class AgentManager {
247
275
  protected manualCompactWaitMs: number;
248
276
  protected runtimeLivenessProbeMs: number;
249
277
  protected cleanComposerWaitMs: number;
278
+ protected platformVerificationRetryDelayMs: number;
250
279
  protected readyStableSamples: number;
251
280
  protected readyStableSpacingMs: number;
252
281
  private pendingDispatchRetryByTask;
@@ -260,22 +289,36 @@ export declare class AgentManager {
260
289
  private divergedAgents;
261
290
  private deletionGeneration;
262
291
  private compactInFlight;
292
+ private configInterventionKeys;
263
293
  constructor(deps: AgentManagerDeps);
264
294
  private withTaskLock;
295
+ private withAgentOperationLease;
265
296
  private resolveTaskLockToken;
266
297
  private assertTaskLockOwner;
267
298
  private assertTaskGeneration;
268
299
  getReviewStore(): ReviewStore | undefined;
300
+ putReviewRoundIfCurrent(taskId: string, data: ReviewRound, expectedTask: TaskGenerationGuard): Promise<boolean>;
301
+ deleteReviewExchangeIfCurrent(taskId: string, agent: AgentConfig, artifact: 'findings' | 'response', expectedTask: TaskGenerationGuard, expectedRecovery?: Pick<ServerSignalRecovery, 'mode' | 'signalKind' | 'phase' | 'round' | 'sourceToken' | 'failureSignature' | 'createdAt'>): Promise<boolean>;
269
302
  setServerReviewDriver(driver: ServerReviewDriver): void;
270
303
  effectiveReviewMode(projectId: string): ReviewMode;
271
304
  resolveAfterDone(task: TaskState): AfterDone;
272
305
  private coerceAfterDone;
306
+ commitServerAfterDone(taskId: string, expectedTask?: TaskGenerationGuard): Promise<AfterDone>;
273
307
  getReviewTransport(): ReviewTransport;
274
308
  private prepareDispatchArtifacts;
275
309
  private bindingWorkdirCache;
276
310
  refreshWorkdirCacheFor(agentId: string): Promise<string | undefined>;
277
311
  private safeEmit;
278
312
  private emitIntervention;
313
+ emitConfigIntervention(projectId: string, data: Record<string, unknown> & {
314
+ phase: string;
315
+ }): Promise<void>;
316
+ configInterventionKey(projectId: string, data: Record<string, unknown> & {
317
+ phase: string;
318
+ }): string;
319
+ platformBindingInterventionKey(task: TaskState, mismatch: PlatformBindingMismatch): string;
320
+ retainConfigInterventionKeys(keys: ReadonlySet<string>): void;
321
+ emitPlatformBindingIntervention(task: TaskState, mismatch: PlatformBindingMismatch): Promise<void>;
279
322
  private recordError;
280
323
  replaceConfig(validated: BaxianConfig): void;
281
324
  getConfig(): BaxianConfig;
@@ -285,6 +328,14 @@ export declare class AgentManager {
285
328
  tryClaimDeletion(agentIds: readonly string[]): string | null;
286
329
  scanActiveThenClaimDeletion(targets: readonly string[]): Promise<DeletionClaimOutcome>;
287
330
  releaseDeletionClaim(agentIds: readonly string[]): void;
331
+ listActiveParticipantSeats(): Promise<Array<{
332
+ taskId: string;
333
+ projectId: string;
334
+ participants: Array<{
335
+ agentId: string;
336
+ expectedRole?: AgentConfig['role'];
337
+ }>;
338
+ }>>;
288
339
  bumpDeletionGeneration(agentId: string): void;
289
340
  deletionGenerationOf(agentId: string): number;
290
341
  private deletionGateOpen;
@@ -341,7 +392,9 @@ export declare class AgentManager {
341
392
  allowAwaitingHuman?: boolean;
342
393
  clearAwaitingHuman?: boolean;
343
394
  fromCancelCleanup?: boolean;
344
- expectedTask?: Pick<TaskState, 'status' | 'phase' | 'signalToken'>;
395
+ expectedTask?: Partial<TaskGenerationGuard>;
396
+ expectedReviewDispatch?: Pick<ReviewDispatchLease, 'generation' | 'claimId' | 'signalToken'>;
397
+ expectedPostApproveEpisode?: PostApproveEpisodeKey;
345
398
  expectedHold?: {
346
399
  phase: string | undefined;
347
400
  since: string | undefined;
@@ -355,6 +408,7 @@ export declare class AgentManager {
355
408
  reconcileTaskBranches(): Promise<void>;
356
409
  private readonly needInputRetry;
357
410
  private readonly needInputRetryInFlight;
411
+ private readonly gitReviewQaConfigAlerted;
358
412
  private readonly needInputWritesInFlight;
359
413
  private needInputWriteSeq;
360
414
  private readonly needInputArmLocks;
@@ -376,6 +430,7 @@ export declare class AgentManager {
376
430
  private confirmNeedInputAnswered;
377
431
  notifyHumanTerminalInput(agentId: string): Promise<void>;
378
432
  clearAwaitingHuman(agentId: string, opts?: {
433
+ expectedTaskId?: string;
379
434
  expectedHold?: {
380
435
  phase?: string;
381
436
  since?: string;
@@ -407,7 +462,12 @@ export declare class AgentManager {
407
462
  private markPaneCancelClearing;
408
463
  private claimCancelCleanup;
409
464
  private releaseCancelCleanup;
410
- failTaskForDispatchError(taskId: string, phase: string, agentId: string, err: DispatchTerminalError): Promise<void>;
465
+ failTaskForDispatchError(taskId: string, phase: string, agentId: string, err: DispatchTerminalError, opts?: {
466
+ expectedPostApproveEpisode?: PostApproveEpisodeKey;
467
+ expectedReviewDispatch?: ReviewDispatchFence;
468
+ expectedTask?: TaskGenerationGuard;
469
+ expectedLockToken?: string;
470
+ }): Promise<void>;
411
471
  failTasksForAgent(agentId: string, reason: string, opts?: {
412
472
  deferPartnerCleanup?: boolean;
413
473
  }): Promise<{
@@ -423,10 +483,12 @@ export declare class AgentManager {
423
483
  phase: string | undefined;
424
484
  since: string | undefined;
425
485
  nonce: string | undefined;
426
- }): Promise<boolean>;
427
- redispatchTaskPromptAfterReplRestart(agentId: string, taskId: string): Promise<boolean>;
486
+ }, extraCurrent?: (fresh: TaskState) => Promise<boolean>): Promise<boolean>;
487
+ private runRotatedReplay;
488
+ redispatchTaskPromptAfterReplRestart(agentId: string, taskId: string, expected?: RedispatchCurrentPhaseGuard): Promise<boolean>;
489
+ redispatchCurrentTaskPhase(taskId: string, expected: RedispatchCurrentPhaseGuard): Promise<RedispatchCurrentPhaseResult>;
428
490
  private replayApprovedHolderAfterReplRestart;
429
- private rebuildPostApproveCompletion;
491
+ private holdIncompleteGitPostApproveEpisode;
430
492
  prepareRemoveTargets(agentId: string): {
431
493
  targets: string[];
432
494
  };
@@ -440,26 +502,23 @@ export declare class AgentManager {
440
502
  projectId: string;
441
503
  }>;
442
504
  getProjectConfig(projectId: string): ProjectConfig | undefined;
443
- getProjectByRepo(repo: string): ProjectConfig | undefined;
444
- getProjectByRepoIdentity(repoKey: string): ProjectConfig | undefined;
445
505
  platformDriverFor(projectId: string): GitDriver | undefined;
446
506
  private findAgentGroup;
447
507
  private longestDevWorkdirInProject;
448
508
  getTask(taskId: string): Promise<TaskState | null>;
449
509
  getAgentState(agentId: string): Promise<AgentBindingFacts | null>;
450
510
  getPostApproveCompletion(taskId: string): Promise<PostApproveCompletion | null>;
451
- private gitCompletionOf;
452
- private stripGitCompletionFields;
453
- setPostApproveCompletion(taskId: string, value: {
454
- token: string;
455
- approvedHeadSha: string;
456
- redispatchCount?: number;
457
- pendingRedispatch?: boolean;
458
- }, opts?: {
459
- clearRevocation?: boolean;
511
+ private completionOf;
512
+ private postApproveEpisodeMatches;
513
+ armGitPostApproveEpisode(taskId: string, expected: PostApproveEpisodeKey, opts?: {
514
+ recovered?: boolean;
460
515
  }): Promise<boolean>;
461
- confirmPostApprovePromptDelivered(taskId: string, token: string): Promise<void>;
462
- markPostApproveSignalReceived(taskId: string, token: string): Promise<void>;
516
+ rotateGitPostApproveEpisode(taskId: string, expected: PostApproveEpisodeKey, redispatchCount: number): Promise<PostApproveEpisodeKey | null>;
517
+ private stripPostApproveFields;
518
+ private stripPostApproveEpisodeFields;
519
+ private stripGitStatusScopedState;
520
+ confirmPostApprovePromptDelivered(taskId: string, expected: string | PostApproveEpisodeKey): Promise<void>;
521
+ markPostApproveSignalReceived(taskId: string, expected: string | PostApproveEpisodeKey): Promise<void>;
463
522
  clearPostApproveCompletion(taskId: string): Promise<void>;
464
523
  updatePostApproveCompletionIfToken(taskId: string, expectedToken: string, patch: {
465
524
  redispatchCount?: number;
@@ -469,13 +528,16 @@ export declare class AgentManager {
469
528
  key: string;
470
529
  versionTime: number;
471
530
  };
531
+ expectedGeneration?: string;
532
+ expectedHeadSha?: string;
472
533
  }): Promise<boolean>;
473
534
  revokePostApproveCompletion(taskId: string, reason: 'request-changes' | 'redispatch-cap', opts?: {
474
535
  expectedToken?: string;
475
536
  expectedHeadSha?: string;
537
+ expectedGeneration?: string;
476
538
  }): Promise<boolean>;
477
- clearPostApproveCompletionIfMatches(taskId: string, token: string): Promise<boolean>;
478
- completeApprovedPassToMergeReady(taskId: string, expectedToken: string): Promise<{
539
+ clearPostApproveCompletionIfMatches(taskId: string, expected: string | PostApproveEpisodeKey): Promise<boolean>;
540
+ completeApprovedPassToMergeReady(taskId: string, expected: string | PostApproveEpisodeKey): Promise<{
479
541
  task: TaskState;
480
542
  } | {
481
543
  refused: 'stale' | 'pending';
@@ -500,10 +562,44 @@ export declare class AgentManager {
500
562
  taskIds: string[];
501
563
  }>;
502
564
  }>;
503
- flushGitOutbox(): Promise<void>;
504
- clearReviewDispatchPending(taskId: string, expectedToken: string): Promise<void>;
565
+ flushTaskOutboxes(): Promise<void>;
566
+ private gitReviewLeaseMatches;
567
+ private gitReviewQaConfigUsable;
568
+ beginGitReviewPass(taskId: string, opts: {
569
+ fromStatus: TaskStatus[];
570
+ headSha: string;
571
+ bumpRound: boolean;
572
+ qaPhase?: 'review' | 'recheck';
573
+ expectSignalToken?: string;
574
+ expectPhase?: TaskPhase;
575
+ expectedTask?: TaskGenerationGuard;
576
+ allowDuringComplete?: boolean;
577
+ patch?: Partial<Pick<TaskState, 'prNumber' | 'prUrl' | 'latestHeadSha' | 'branch' | 'baseBranch' | 'replyActorId' | 'replyActorStatus' | 'pendingPrSignalToken'>>;
578
+ }): Promise<TransitionResult | null>;
579
+ claimGitReviewDispatch(taskId: string, expectedGeneration?: string, expectedTask?: TaskGenerationGuard): Promise<{
580
+ task: TaskState;
581
+ lease: ReviewDispatchLease & {
582
+ phase: 'claimed';
583
+ claimId: string;
584
+ claimedAt: string;
585
+ };
586
+ } | null>;
587
+ approveGitReviewPass(taskId: string, opts: {
588
+ expectedSignalToken: string;
589
+ headSha: string;
590
+ reviewRound: number;
591
+ prNumber?: number;
592
+ prUrl?: string;
593
+ provenance: NonNullable<TaskState['passProvenance']>;
594
+ }): Promise<TaskState | null>;
595
+ private resetGitReviewDispatchClaim;
596
+ private markGitReviewDispatchUncertain;
597
+ private confirmUncertainGitReviewDispatch;
598
+ private completeGitReviewDispatch;
599
+ private recoverPendingGitReviewDispatchHold;
600
+ recoverClaimedGitReviewDispatches(): Promise<void>;
505
601
  retryPendingGitReviewDispatches(): Promise<void>;
506
- retryGitRemoteBranchCleanup(): Promise<void>;
602
+ retryGitRemoteCleanupIntents(): Promise<void>;
507
603
  consumeGitFeedbackRevision(taskId: string, consume: {
508
604
  key: string;
509
605
  versionTime: number;
@@ -515,26 +611,17 @@ export declare class AgentManager {
515
611
  kind: 'returned' | 'pending';
516
612
  task: TaskState;
517
613
  }>;
518
- returnMergeReadyToApproved(taskId: string, consume: {
519
- key: string;
520
- versionTime: number;
521
- }): Promise<TaskState | null>;
522
614
  setupRecoveredPostApproveSignals(): Promise<void>;
523
615
  setupRecoveredSpecSignals(): Promise<void>;
616
+ private recoverServerSignalRecovery;
524
617
  private setupRecoveredWatcherForMapping;
525
- prHasDevReplySince(taskId: string, sinceIso: string): Promise<boolean>;
526
- private ghCreatedAt;
527
- fetchPrHeadSha(taskId: string): Promise<string>;
528
618
  verifyPaneSignalPrNumber(taskId: string, prNumber: number): Promise<{
529
619
  headRefName: string;
530
620
  headSha: string;
531
- } | undefined>;
532
- fetchPrHeadRef(prNumber: number, projectId: string): Promise<{
533
- headRefName: string;
534
- headSha: string;
535
- body: string;
621
+ targetBranch: string;
536
622
  } | undefined>;
537
623
  platformBindingFields(projectId: string): Partial<TaskState>;
624
+ private platformBindingFor;
538
625
  agentGitPreflightContext(projectId: string): AgentGitPreflight | undefined;
539
626
  platformCliContextOf(task: TaskState): PlatformCliDescriptor | undefined;
540
627
  ensureGitBaseSnapshot(task: TaskState, phase: string): Promise<TaskState>;
@@ -543,6 +630,7 @@ export declare class AgentManager {
543
630
  private platformTaskAndDriver;
544
631
  listActiveGitTasks(projectId?: string): Promise<TaskState[]>;
545
632
  platformFetchPrView(taskId: string): Promise<NormalizedRow>;
633
+ platformFetchPrHeadSha(taskId: string): Promise<string>;
546
634
  platformVerifyPrBinding(taskId: string, prNumber: number, opts?: {
547
635
  branchOverride?: string;
548
636
  }): Promise<{
@@ -556,15 +644,19 @@ export declare class AgentManager {
556
644
  prBranch?: string;
557
645
  }>;
558
646
  stopPhaseSignalWatcherAgent(taskId: string, agentId: string): void;
559
- platformClosePr(taskId: string, opts: {
560
- deleteBranch: boolean;
561
- }): Promise<void>;
647
+ private mutateRemoteCleanup;
648
+ private recordRemoteCleanupFailure;
649
+ private markRemoteCleanupManual;
650
+ processGitRemoteCleanup(taskId: string, expectedGeneration?: string): Promise<void>;
562
651
  private platformScanComments;
563
652
  platformVerifyAcceptedPass(taskId: string): Promise<{
564
- ok: true;
653
+ kind: 'valid';
565
654
  pendingCount: number;
566
655
  } | {
567
- ok: false;
656
+ kind: 'retryable';
657
+ reason: string;
658
+ } | {
659
+ kind: 'provenance-invalid';
568
660
  reason: string;
569
661
  }>;
570
662
  platformPendingFeedback(taskId: string): Promise<PendingFeedbackResult>;
@@ -576,17 +668,39 @@ export declare class AgentManager {
576
668
  passToken: string;
577
669
  failToken: string;
578
670
  };
579
- listTasksByProject(projectId: string): Promise<TaskState[]>;
671
+ private taskBelongsToPlatformEntry;
672
+ listTasksForPlatformEntry(projectId: string): Promise<TaskState[]>;
580
673
  findTaskByBranch(branch: string, projectId: string): Promise<TaskState | undefined>;
581
- listTasksByPrNumber(prNumber: number, projectId?: string): Promise<TaskState[]>;
582
- updateTaskStatus(taskId: string, status: TaskStatus): Promise<void>;
583
- updateTaskIfStatus(taskId: string, expectedStatus: TaskStatus, updates: Partial<TaskState>, alsoExpect?: Partial<Pick<TaskState, 'signalToken' | 'reviewRound'>>): Promise<boolean>;
674
+ adoptServerPr(taskId: string, pr: {
675
+ prNumber: number;
676
+ prUrl?: string;
677
+ headSha?: string;
678
+ targetBranch?: string;
679
+ }): Promise<boolean>;
680
+ updateTaskIfStatus(taskId: string, expectedStatus: TaskStatus, updates: Partial<TaskState>, alsoExpect?: Partial<Pick<TaskState, 'signalToken' | 'phase' | 'agentId' | 'reviewRound' | 'specReviewRound'>>): Promise<boolean>;
681
+ claimServerSignalRecovery(taskAtEntry: TaskState, agentId: string, signalKind: ServerSignalKind, input: Omit<ServerSignalRecovery, 'signalKind' | 'sourceToken' | 'createdAt'>): Promise<TaskState | null>;
682
+ holdConsumedServerSignal(taskAtEntry: TaskState, agentId: string, signalKind: ServerSignalKind, input: {
683
+ phase: 'spec' | 'code';
684
+ round: number;
685
+ reason: ServerSignalRecoveryReason;
686
+ failurePhase: string;
687
+ }): Promise<TaskState | null>;
688
+ setServerSignalRecoveryMode(taskId: string, successorToken: string, mode: 'correct-response' | 'hold'): Promise<TaskState | null>;
689
+ holdServerSignalRecovery(taskId: string, agentId: string, successorToken: string, holdPhase: string, reason: string): Promise<TaskState | null>;
690
+ dispatchServerFeedbackCorrection(taskId: string, findingsJson: string): Promise<boolean>;
584
691
  updateTask(taskId: string, updates: Partial<TaskState>): Promise<void>;
585
692
  transitionTaskStatus(taskId: string, toStatus: TaskStatus, guard: {
586
693
  fromStatus: TaskStatus[];
694
+ expectTask?: TaskGenerationGuard;
587
695
  expectSignalToken?: string;
588
- }, patch?: Partial<Pick<TaskState, 'reviewRound' | 'agentId' | 'prNumber' | 'prUrl' | 'qaAgentId' | 'latestHeadSha' | 'reviewHeadAnchorSha' | 'reviewDispatchedAt' | 'fixDispatchedAt' | 'specReviewRound' | 'signalToken' | 'passToken' | 'failToken' | 'reviewRoundPending' | 'reviewDispatchPending' | 'phase' | 'batchIndex' | 'batchTotal' | 'branch' | 'maxRoundsContinues'>>): Promise<TransitionResult | null>;
589
- consumeReviewRoundIntent(taskId: string, expectedToken: string): Promise<void>;
696
+ expectPhase?: TaskPhase;
697
+ expectPostApproveEpisode?: PostApproveEpisodeKey;
698
+ expectReviewDispatch?: ReviewDispatchFence;
699
+ expectAgentLock?: {
700
+ agentId: string;
701
+ token: string;
702
+ };
703
+ }, patch?: Partial<Pick<TaskState, 'reviewRound' | 'agentId' | 'prNumber' | 'prUrl' | 'baseBranch' | 'qaAgentId' | 'latestHeadSha' | 'reviewHeadAnchorSha' | 'reviewDispatchedAt' | 'fixDispatchedAt' | 'specReviewRound' | 'signalToken' | 'passToken' | 'failToken' | 'reviewRoundPending' | 'reviewDispatch' | 'phase' | 'batchIndex' | 'batchTotal' | 'reviewCheckoutMode' | 'branch' | 'maxRoundsContinues'>>): Promise<TransitionResult | null>;
590
704
  private createRunnerFor;
591
705
  private createRepoStore;
592
706
  private ensureWorkdir;
@@ -659,7 +773,9 @@ export declare class AgentManager {
659
773
  markAgentWaiting(agentId: string, expectedTaskId: string, opts?: {
660
774
  allowAwaitingHuman?: boolean;
661
775
  clearAwaitingHuman?: boolean;
662
- expectedTask?: Pick<TaskState, 'status' | 'phase' | 'signalToken'>;
776
+ expectedTask?: Partial<TaskGenerationGuard>;
777
+ expectedReviewDispatch?: Pick<ReviewDispatchLease, 'generation' | 'claimId' | 'signalToken'>;
778
+ expectedPostApproveEpisode?: PostApproveEpisodeKey;
663
779
  expectedHold?: {
664
780
  phase: string | undefined;
665
781
  since: string | undefined;
@@ -680,22 +796,36 @@ export declare class AgentManager {
680
796
  description: string;
681
797
  preferredAgentId: string;
682
798
  }): Promise<void>;
799
+ private gitReviewClaimMatches;
800
+ private gitReviewDispatchMatches;
801
+ dispatchGitReviewLease(taskId: string, opts?: {
802
+ expectedGeneration?: string;
803
+ expectedTask?: TaskGenerationGuard;
804
+ pendingBudget?: {
805
+ since: number;
806
+ budgetAlerted?: boolean;
807
+ };
808
+ onQaAcquired?: (lockToken: string) => void;
809
+ onSideEffect?: () => void;
810
+ }): Promise<TaskState>;
683
811
  dispatchReviewToQa(taskId: string, opts?: {
684
812
  fromStatus?: TaskStatus[];
685
813
  bumpRound?: boolean;
686
814
  expectSignalToken?: string;
815
+ expectPhase?: TaskPhase;
816
+ expectedTask?: TaskGenerationGuard;
687
817
  qaPhase?: 'review' | 'recheck';
688
818
  pendingBudget?: {
689
819
  since: number;
690
820
  budgetAlerted?: boolean;
691
821
  };
692
- expectReviewDispatchPending?: boolean;
693
822
  onPassArmed?: (armedToken: string) => void;
823
+ onQaAcquired?: (lockToken: string) => void;
824
+ onSideEffect?: () => void;
825
+ confirmUncertainNotDelivered?: boolean;
694
826
  }): Promise<TaskState>;
695
827
  private runManualServerReview;
696
828
  continueDevRound(taskId: string): Promise<TaskState>;
697
- private rollbackDispatchReviewPhase1;
698
- private tearDownWatcherIfTaskTerminal;
699
829
  private devInitialSignalKinds;
700
830
  private resolveInitialDispatch;
701
831
  private mapTaskStateToExpectedWatchers;
@@ -706,7 +836,6 @@ export declare class AgentManager {
706
836
  replaceScope?: 'task' | 'agent';
707
837
  tokenOverride?: string;
708
838
  }): Promise<boolean>;
709
- private emitManualReviewDevParkedQaFailedIntervention;
710
839
  retryTask(taskId: string): Promise<TaskState>;
711
840
  editTask(taskId: string, patch: {
712
841
  title?: string;
@@ -738,31 +867,16 @@ export declare class AgentManager {
738
867
  rearmGitReconciliationWatcher(taskId: string, opts?: {
739
868
  skipSnapshot?: boolean;
740
869
  }): Promise<void>;
741
- rotateAndSetupPhaseSignal(taskId: string, agentId: string, expectedKinds: PhaseSignalKind | readonly PhaseSignalKind[]): Promise<{
870
+ rotateAndSetupPhaseSignal(taskId: string, agentId: string, expectedKinds: PhaseSignalKind | readonly PhaseSignalKind[], guard?: {
871
+ expectedStatus: TaskStatus;
872
+ expectedToken?: string;
873
+ }): Promise<{
742
874
  token: string;
743
875
  armed: boolean;
744
876
  }>;
745
- rollbackVerdictArmFailure(taskId: string, restore: {
746
- status: TaskStatus;
747
- signalToken?: string;
748
- reviewHeadAnchorSha?: string;
749
- reviewDispatchedAt?: string;
750
- reviewRoundPending?: boolean;
751
- passToken?: string;
752
- failToken?: string;
753
- restorePair?: boolean;
754
- }, opts?: {
755
- expect?: {
756
- status: TaskStatus;
757
- signalToken?: string;
758
- };
759
- rearmSkipSnapshot?: boolean;
760
- }): Promise<boolean>;
761
- rearmPhaseSignalForCurrentPass(taskId: string, opts?: {
762
- skipSnapshot?: boolean;
763
- }): Promise<void>;
764
877
  parkTaskAtSpecReady(taskId: string, opts?: {
765
878
  specReviewRound?: number;
879
+ expectedTask?: TaskGenerationGuard;
766
880
  }): Promise<TaskState | null>;
767
881
  submitSpecVerdict(taskId: string, verdict: 'approve' | 'request-changes' | 'archive', comments?: string): Promise<TaskState>;
768
882
  private executeSpecVerdict;
@@ -773,11 +887,12 @@ export declare class AgentManager {
773
887
  private synthesizeEmptyCodeRound;
774
888
  private isResearchHandoff;
775
889
  private dispatchCodePhasePrompt;
776
- transitionToCodePhase(taskId: string): Promise<TaskState | null>;
890
+ transitionToCodePhase(taskId: string, expectedTask?: TaskGenerationGuard): Promise<TaskState | null>;
777
891
  dispatchServerReviewToQa(taskId: string, opts: {
778
892
  phase: ReviewPhase;
779
893
  recheck?: boolean;
780
894
  continuation?: boolean;
895
+ bumpRound?: boolean;
781
896
  content: string;
782
897
  interdiff?: string;
783
898
  diffstat?: string;
@@ -790,8 +905,15 @@ export declare class AgentManager {
790
905
  priorFindingsJson?: string;
791
906
  priorResponseJson?: string;
792
907
  reviewHeadAnchorSha?: string;
908
+ callerOwnsConsumedSignalFailure?: boolean;
909
+ settlePermit?: unknown;
910
+ expectedTask?: TaskGenerationGuard;
911
+ onSideEffect?: () => void;
912
+ }): Promise<TaskState | null>;
913
+ dispatchServerFixToDev(taskId: string, _findingsJson: string, opts?: {
914
+ callerOwnsConsumedSignalFailure?: boolean;
915
+ expectedTask?: TaskGenerationGuard;
793
916
  }): Promise<TaskState | null>;
794
- dispatchServerFixToDev(taskId: string, findingsJson: string): Promise<TaskState | null>;
795
917
  private projectRepoKey;
796
918
  computeCodeInterdiff(taskId: string, round: number): Promise<CodeInterdiffResult>;
797
919
  findLineageViolation(taskId: string, baseSha?: string): Promise<LineageViolation | null>;