baxian 1.2.61 → 2.0.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.
- package/README.md +7 -4
- package/README.zh-CN.md +7 -4
- package/dist/agent/bootstrap-poller.d.ts +1 -1
- package/dist/agent/bootstrap-poller.d.ts.map +1 -1
- package/dist/agent/bootstrap-poller.js.map +1 -1
- package/dist/agent/bootstrap.d.ts +1 -1
- package/dist/agent/bootstrap.d.ts.map +1 -1
- package/dist/agent/bootstrap.js +6 -2
- package/dist/agent/bootstrap.js.map +1 -1
- package/dist/agent/branch.d.ts +1 -2
- package/dist/agent/branch.d.ts.map +1 -1
- package/dist/agent/branch.js +2 -2
- package/dist/agent/branch.js.map +1 -1
- package/dist/agent/dispatch-reconciler.d.ts +0 -1
- package/dist/agent/dispatch-reconciler.d.ts.map +1 -1
- package/dist/agent/dispatch-reconciler.js +5 -44
- package/dist/agent/dispatch-reconciler.js.map +1 -1
- package/dist/agent/manager.d.ts +175 -82
- package/dist/agent/manager.d.ts.map +1 -1
- package/dist/agent/manager.js +2453 -1447
- package/dist/agent/manager.js.map +1 -1
- package/dist/agent/phase-signal-watcher.d.ts +5 -1
- package/dist/agent/phase-signal-watcher.d.ts.map +1 -1
- package/dist/agent/phase-signal-watcher.js +22 -11
- package/dist/agent/phase-signal-watcher.js.map +1 -1
- package/dist/agent/phase-signal.d.ts +2 -7
- package/dist/agent/phase-signal.d.ts.map +1 -1
- package/dist/agent/phase-signal.js +4 -4
- package/dist/agent/phase-signal.js.map +1 -1
- package/dist/agent/preflight.d.ts +4 -1
- package/dist/agent/preflight.d.ts.map +1 -1
- package/dist/agent/preflight.js +46 -45
- package/dist/agent/preflight.js.map +1 -1
- package/dist/agent/prompt.d.ts +8 -0
- package/dist/agent/prompt.d.ts.map +1 -1
- package/dist/agent/prompt.js +30 -13
- package/dist/agent/prompt.js.map +1 -1
- package/dist/agent/repo-store.d.ts +4 -0
- package/dist/agent/repo-store.d.ts.map +1 -1
- package/dist/agent/repo-store.js +37 -8
- package/dist/agent/repo-store.js.map +1 -1
- package/dist/agent/review-transport.d.ts +20 -1
- package/dist/agent/review-transport.d.ts.map +1 -1
- package/dist/agent/review-transport.js +68 -20
- package/dist/agent/review-transport.js.map +1 -1
- package/dist/api/config.d.ts.map +1 -1
- package/dist/api/config.js +12 -11
- package/dist/api/config.js.map +1 -1
- package/dist/api/hosts.d.ts.map +1 -1
- package/dist/api/hosts.js +3 -2
- package/dist/api/hosts.js.map +1 -1
- package/dist/api/platform-guard.d.ts +10 -2
- package/dist/api/platform-guard.d.ts.map +1 -1
- package/dist/api/platform-guard.js +112 -10
- package/dist/api/platform-guard.js.map +1 -1
- package/dist/api/projects.d.ts.map +1 -1
- package/dist/api/projects.js +34 -9
- package/dist/api/projects.js.map +1 -1
- package/dist/api/tasks.d.ts.map +1 -1
- package/dist/api/tasks.js +21 -36
- package/dist/api/tasks.js.map +1 -1
- package/dist/app.d.ts +4 -4
- package/dist/app.d.ts.map +1 -1
- package/dist/config/hot-reload.d.ts +11 -2
- package/dist/config/hot-reload.d.ts.map +1 -1
- package/dist/config/hot-reload.js +43 -8
- package/dist/config/hot-reload.js.map +1 -1
- package/dist/config/loader.js +1 -1
- package/dist/config/loader.js.map +1 -1
- package/dist/config/validator.d.ts +3 -1
- package/dist/config/validator.d.ts.map +1 -1
- package/dist/config/validator.js +53 -31
- package/dist/config/validator.js.map +1 -1
- package/dist/event/handlers.d.ts.map +1 -1
- package/dist/event/handlers.js +616 -1067
- package/dist/event/handlers.js.map +1 -1
- package/dist/event/server-handlers.d.ts.map +1 -1
- package/dist/event/server-handlers.js +667 -440
- package/dist/event/server-handlers.js.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +54 -79
- package/dist/index.js.map +1 -1
- package/dist/platform/command-renderer.d.ts +1 -0
- package/dist/platform/command-renderer.d.ts.map +1 -1
- package/dist/platform/command-renderer.js +16 -2
- package/dist/platform/command-renderer.js.map +1 -1
- package/dist/platform/comment-cursor.d.ts +9 -0
- package/dist/platform/comment-cursor.d.ts.map +1 -1
- package/dist/platform/comment-cursor.js +63 -5
- package/dist/platform/comment-cursor.js.map +1 -1
- package/dist/platform/driver-host.d.ts.map +1 -1
- package/dist/platform/driver-host.js +0 -2
- package/dist/platform/driver-host.js.map +1 -1
- package/dist/platform/driver-spec.d.ts.map +1 -1
- package/dist/platform/driver-spec.js +17 -6
- package/dist/platform/driver-spec.js.map +1 -1
- package/dist/platform/feedback.d.ts.map +1 -1
- package/dist/platform/feedback.js +0 -9
- package/dist/platform/feedback.js.map +1 -1
- package/dist/platform/git-driver.d.ts +3 -0
- package/dist/platform/git-driver.d.ts.map +1 -1
- package/dist/platform/git-driver.js +45 -3
- package/dist/platform/git-driver.js.map +1 -1
- package/dist/platform/platform-poller.d.ts +18 -5
- package/dist/platform/platform-poller.d.ts.map +1 -1
- package/dist/platform/platform-poller.js +282 -33
- package/dist/platform/platform-poller.js.map +1 -1
- package/dist/platform/plugins/github/baxian-plugin.json +1 -1
- package/dist/platform/plugins/github/driver.json +14 -3
- package/dist/platform/plugins/github/skills/baxian-cli-gh/SKILL.md +7 -6
- package/dist/platform/plugins/github/skills/baxian-cli-gh/agents/openai.yaml +2 -0
- package/dist/platform/pr-binding.d.ts.map +1 -1
- package/dist/platform/pr-binding.js +0 -2
- package/dist/platform/pr-binding.js.map +1 -1
- package/dist/platform/pr-conversation-cache.d.ts.map +1 -0
- package/dist/platform/pr-conversation-cache.js.map +1 -0
- package/dist/platform/row-schema.d.ts.map +1 -1
- package/dist/platform/row-schema.js +1 -0
- package/dist/platform/row-schema.js.map +1 -1
- package/dist/platform/startup.d.ts +29 -1
- package/dist/platform/startup.d.ts.map +1 -1
- package/dist/platform/startup.js +82 -4
- package/dist/platform/startup.js.map +1 -1
- package/dist/platform/types.d.ts +2 -0
- package/dist/platform/types.d.ts.map +1 -1
- package/dist/platform/types.js +6 -4
- package/dist/platform/types.js.map +1 -1
- package/dist/platform/verdict-engine.d.ts.map +1 -1
- package/dist/platform/verdict-engine.js +0 -2
- package/dist/platform/verdict-engine.js.map +1 -1
- package/dist/shared/types.d.ts +73 -5
- package/dist/shared/types.d.ts.map +1 -1
- package/dist/shared/types.js.map +1 -1
- package/dist/skills/baxian-pr-feedback/SKILL.md +4 -12
- package/dist/skills/baxian-pr-recheck/SKILL.md +3 -44
- package/dist/skills/baxian-pr-review/SKILL.md +4 -43
- package/dist/skills/baxian-server-feedback/SKILL.md +7 -5
- package/dist/skills/baxian-signals/SKILL.md +5 -7
- package/dist/skills/baxian-task-check/SKILL.md +3 -5
- package/dist/state/agent-store.js +0 -2
- package/dist/state/agent-store.js.map +1 -1
- package/dist/state/review-store.d.ts +21 -1
- package/dist/state/review-store.d.ts.map +1 -1
- package/dist/state/review-store.js +132 -0
- package/dist/state/review-store.js.map +1 -1
- package/dist/state/task-store.d.ts +6 -0
- package/dist/state/task-store.d.ts.map +1 -1
- package/dist/state/task-store.js +259 -18
- package/dist/state/task-store.js.map +1 -1
- package/dist/web/assets/index-BXfgaFNm.js +18 -0
- package/dist/web/index.html +1 -1
- package/package.json +1 -1
- package/dist/github/mapper.d.ts +0 -9
- package/dist/github/mapper.d.ts.map +0 -1
- package/dist/github/mapper.js +0 -25
- package/dist/github/mapper.js.map +0 -1
- package/dist/github/poller.d.ts +0 -73
- package/dist/github/poller.d.ts.map +0 -1
- package/dist/github/poller.js +0 -556
- package/dist/github/poller.js.map +0 -1
- package/dist/github/pr-conversation-cache.d.ts.map +0 -1
- package/dist/github/pr-conversation-cache.js.map +0 -1
- package/dist/github/pr-conversation.d.ts +0 -7
- package/dist/github/pr-conversation.d.ts.map +0 -1
- package/dist/github/pr-conversation.js +0 -175
- package/dist/github/pr-conversation.js.map +0 -1
- package/dist/github/resolver.d.ts +0 -8
- package/dist/github/resolver.d.ts.map +0 -1
- package/dist/github/resolver.js +0 -28
- package/dist/github/resolver.js.map +0 -1
- package/dist/state/post-approve-store.d.ts +0 -23
- package/dist/state/post-approve-store.d.ts.map +0 -1
- package/dist/state/post-approve-store.js +0 -82
- package/dist/state/post-approve-store.js.map +0 -1
- package/dist/web/assets/index-CUJtd0bC.js +0 -16
- /package/dist/{github → platform}/pr-conversation-cache.d.ts +0 -0
- /package/dist/{github → platform}/pr-conversation-cache.js +0 -0
package/dist/agent/manager.d.ts
CHANGED
|
@@ -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, AgentBindingFacts, HostConfig, ProjectConfig, ReviewMode, ReviewDispatchLease, ReviewPhase, ServerSignalKind, ServerSignalRecovery, ServerSignalRecoveryReason, SpecDocument, TaskPhase, 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,8 @@ 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
|
|
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
25
|
export interface EnsureSessionResult {
|
|
26
26
|
ok: true;
|
|
27
27
|
createdSession: boolean;
|
|
@@ -108,7 +108,6 @@ export interface AgentManagerDeps {
|
|
|
108
108
|
imageStagingRoot?: string;
|
|
109
109
|
repoStoreFactory?: (runner: CommandRunner, repoSlug: string, mode: AgentConfig['mode'], host: HostConfig | undefined, cache: RepoStoreCache, agentId: string, workdir?: string) => RepoStore;
|
|
110
110
|
paneStreamerManager?: PaneStreamerManager;
|
|
111
|
-
postApproveStore?: PostApproveStore;
|
|
112
111
|
pluginRegistry?: PluginRegistry;
|
|
113
112
|
platformDefaultBranchOf?: (projectId: string) => string | undefined;
|
|
114
113
|
phaseSignalWatcher?: PhaseSignalWatcher;
|
|
@@ -123,13 +122,10 @@ export interface AgentManagerDeps {
|
|
|
123
122
|
needInputRetryIntervalMs?: number;
|
|
124
123
|
dispatchSettleTimeoutMs?: number;
|
|
125
124
|
}
|
|
126
|
-
export declare class PlatformCloseError extends Error {
|
|
127
|
-
readonly step: 'close' | 'deleteBranch';
|
|
128
|
-
constructor(step: 'close' | 'deleteBranch', cause: unknown);
|
|
129
|
-
}
|
|
130
125
|
export declare class PlatformMergeRecheckError extends Error {
|
|
126
|
+
readonly kind: 'pending-feedback' | 'provenance-invalid';
|
|
131
127
|
readonly reason: string;
|
|
132
|
-
constructor(reason: string);
|
|
128
|
+
constructor(kind: 'pending-feedback' | 'provenance-invalid', reason: string);
|
|
133
129
|
}
|
|
134
130
|
export interface TransitionResult {
|
|
135
131
|
task: TaskState;
|
|
@@ -151,6 +147,8 @@ interface SessionDispatchOpts {
|
|
|
151
147
|
total: number;
|
|
152
148
|
};
|
|
153
149
|
serverPriorFindings?: string;
|
|
150
|
+
serverFindingsDigest?: string;
|
|
151
|
+
serverFeedbackCorrection?: ServerFeedbackCorrectionPrompt;
|
|
154
152
|
serverPriorResponse?: string;
|
|
155
153
|
specDocuments?: readonly SpecDocument[];
|
|
156
154
|
armBeforeInject?: (ctx: DispatchArmContext) => Promise<boolean>;
|
|
@@ -158,6 +156,7 @@ interface SessionDispatchOpts {
|
|
|
158
156
|
interface StartSessionOpts extends SessionDispatchOpts {
|
|
159
157
|
preserveBindingOnFailure?: boolean;
|
|
160
158
|
dispatchPassToken?: string;
|
|
159
|
+
dispatchReviewLease?: Pick<ReviewDispatchLease, 'generation' | 'claimId' | 'signalToken' | 'headSha' | 'passToken' | 'failToken' | 'effectiveRound' | 'qaPhase'>;
|
|
161
160
|
dispatchPendingBudget?: {
|
|
162
161
|
since: number;
|
|
163
162
|
budgetAlerted?: boolean;
|
|
@@ -165,6 +164,7 @@ interface StartSessionOpts extends SessionDispatchOpts {
|
|
|
165
164
|
}
|
|
166
165
|
export interface ContinueSessionOpts extends SessionDispatchOpts {
|
|
167
166
|
postApproveRedispatchCount?: number;
|
|
167
|
+
postApproveEpisode?: PostApproveEpisodeKey;
|
|
168
168
|
serverAfterDone?: {
|
|
169
169
|
kind: 'branch' | 'pr';
|
|
170
170
|
branch: string;
|
|
@@ -185,6 +185,12 @@ export interface MergePrOpts {
|
|
|
185
185
|
matchHeadSha?: string;
|
|
186
186
|
humanOverride?: boolean;
|
|
187
187
|
}
|
|
188
|
+
export interface PostApproveEpisodeKey {
|
|
189
|
+
generation: string;
|
|
190
|
+
token: string;
|
|
191
|
+
headSha: string;
|
|
192
|
+
}
|
|
193
|
+
type ReviewDispatchFence = Pick<ReviewDispatchLease, 'generation' | 'signalToken' | 'headSha' | 'passToken' | 'failToken' | 'effectiveRound' | 'qaPhase'>;
|
|
188
194
|
export type CodeInterdiffResult = {
|
|
189
195
|
ok: true;
|
|
190
196
|
diff: string;
|
|
@@ -196,8 +202,12 @@ export type CodeInterdiffResult = {
|
|
|
196
202
|
reason: 'released';
|
|
197
203
|
};
|
|
198
204
|
export interface ServerReviewDriver {
|
|
199
|
-
dispatchCodeReview(task: TaskState
|
|
200
|
-
|
|
205
|
+
dispatchCodeReview(task: TaskState, opts?: {
|
|
206
|
+
bumpRound?: boolean;
|
|
207
|
+
}): Promise<boolean>;
|
|
208
|
+
dispatchSpecReview(task: TaskState, opts?: {
|
|
209
|
+
bumpRound?: boolean;
|
|
210
|
+
}): Promise<boolean>;
|
|
201
211
|
}
|
|
202
212
|
export declare function canDispatchWithBinding(binding: AgentBindingFacts | null | undefined): boolean;
|
|
203
213
|
export declare const RECOVERABLE_QA_DISPATCH_HOLD_PHASES: Set<string>;
|
|
@@ -210,6 +220,14 @@ export interface PendingDispatchRetry {
|
|
|
210
220
|
since: number;
|
|
211
221
|
budgetAlerted?: boolean;
|
|
212
222
|
}
|
|
223
|
+
export interface PostApproveCompletion {
|
|
224
|
+
token: string;
|
|
225
|
+
approvedHeadSha: string;
|
|
226
|
+
generation: string;
|
|
227
|
+
updatedAt: string;
|
|
228
|
+
redispatchCount?: number;
|
|
229
|
+
pendingRedispatch?: boolean;
|
|
230
|
+
}
|
|
213
231
|
export declare class AgentManager {
|
|
214
232
|
private config;
|
|
215
233
|
protected agentStore: AgentStore;
|
|
@@ -221,7 +239,6 @@ export declare class AgentManager {
|
|
|
221
239
|
protected repoStoreFactory?: AgentManagerDeps['repoStoreFactory'];
|
|
222
240
|
protected repoCache: RepoStoreCache;
|
|
223
241
|
protected paneStreamerManager?: PaneStreamerManager;
|
|
224
|
-
protected postApproveStore: PostApproveStore;
|
|
225
242
|
protected pluginRegistry?: PluginRegistry;
|
|
226
243
|
private platformDefaultBranchOf?;
|
|
227
244
|
private readonly platformDriverExec;
|
|
@@ -235,6 +252,7 @@ export declare class AgentManager {
|
|
|
235
252
|
protected dispatchSettleTimeoutMs: number;
|
|
236
253
|
protected dispatchAckResendIntervalMs: number;
|
|
237
254
|
private taskMutationQueue;
|
|
255
|
+
private agentOperationQueues;
|
|
238
256
|
private agentIndex;
|
|
239
257
|
private platformRunner;
|
|
240
258
|
private imageStagingRoot;
|
|
@@ -247,6 +265,7 @@ export declare class AgentManager {
|
|
|
247
265
|
protected manualCompactWaitMs: number;
|
|
248
266
|
protected runtimeLivenessProbeMs: number;
|
|
249
267
|
protected cleanComposerWaitMs: number;
|
|
268
|
+
protected platformVerificationRetryDelayMs: number;
|
|
250
269
|
protected readyStableSamples: number;
|
|
251
270
|
protected readyStableSpacingMs: number;
|
|
252
271
|
private pendingDispatchRetryByTask;
|
|
@@ -260,8 +279,10 @@ export declare class AgentManager {
|
|
|
260
279
|
private divergedAgents;
|
|
261
280
|
private deletionGeneration;
|
|
262
281
|
private compactInFlight;
|
|
282
|
+
private configInterventionKeys;
|
|
263
283
|
constructor(deps: AgentManagerDeps);
|
|
264
284
|
private withTaskLock;
|
|
285
|
+
private withAgentOperationLease;
|
|
265
286
|
private resolveTaskLockToken;
|
|
266
287
|
private assertTaskLockOwner;
|
|
267
288
|
private assertTaskGeneration;
|
|
@@ -270,12 +291,22 @@ export declare class AgentManager {
|
|
|
270
291
|
effectiveReviewMode(projectId: string): ReviewMode;
|
|
271
292
|
resolveAfterDone(task: TaskState): AfterDone;
|
|
272
293
|
private coerceAfterDone;
|
|
294
|
+
commitServerAfterDone(taskId: string): Promise<AfterDone>;
|
|
273
295
|
getReviewTransport(): ReviewTransport;
|
|
274
296
|
private prepareDispatchArtifacts;
|
|
275
297
|
private bindingWorkdirCache;
|
|
276
298
|
refreshWorkdirCacheFor(agentId: string): Promise<string | undefined>;
|
|
277
299
|
private safeEmit;
|
|
278
300
|
private emitIntervention;
|
|
301
|
+
emitConfigIntervention(projectId: string, data: Record<string, unknown> & {
|
|
302
|
+
phase: string;
|
|
303
|
+
}): Promise<void>;
|
|
304
|
+
configInterventionKey(projectId: string, data: Record<string, unknown> & {
|
|
305
|
+
phase: string;
|
|
306
|
+
}): string;
|
|
307
|
+
platformBindingInterventionKey(task: TaskState, mismatch: PlatformBindingMismatch): string;
|
|
308
|
+
retainConfigInterventionKeys(keys: ReadonlySet<string>): void;
|
|
309
|
+
emitPlatformBindingIntervention(task: TaskState, mismatch: PlatformBindingMismatch): Promise<void>;
|
|
279
310
|
private recordError;
|
|
280
311
|
replaceConfig(validated: BaxianConfig): void;
|
|
281
312
|
getConfig(): BaxianConfig;
|
|
@@ -285,6 +316,14 @@ export declare class AgentManager {
|
|
|
285
316
|
tryClaimDeletion(agentIds: readonly string[]): string | null;
|
|
286
317
|
scanActiveThenClaimDeletion(targets: readonly string[]): Promise<DeletionClaimOutcome>;
|
|
287
318
|
releaseDeletionClaim(agentIds: readonly string[]): void;
|
|
319
|
+
listActiveParticipantSeats(): Promise<Array<{
|
|
320
|
+
taskId: string;
|
|
321
|
+
projectId: string;
|
|
322
|
+
participants: Array<{
|
|
323
|
+
agentId: string;
|
|
324
|
+
expectedRole?: AgentConfig['role'];
|
|
325
|
+
}>;
|
|
326
|
+
}>>;
|
|
288
327
|
bumpDeletionGeneration(agentId: string): void;
|
|
289
328
|
deletionGenerationOf(agentId: string): number;
|
|
290
329
|
private deletionGateOpen;
|
|
@@ -342,6 +381,8 @@ export declare class AgentManager {
|
|
|
342
381
|
clearAwaitingHuman?: boolean;
|
|
343
382
|
fromCancelCleanup?: boolean;
|
|
344
383
|
expectedTask?: Pick<TaskState, 'status' | 'phase' | 'signalToken'>;
|
|
384
|
+
expectedReviewDispatch?: Pick<ReviewDispatchLease, 'generation' | 'claimId' | 'signalToken'>;
|
|
385
|
+
expectedPostApproveEpisode?: PostApproveEpisodeKey;
|
|
345
386
|
expectedHold?: {
|
|
346
387
|
phase: string | undefined;
|
|
347
388
|
since: string | undefined;
|
|
@@ -355,6 +396,7 @@ export declare class AgentManager {
|
|
|
355
396
|
reconcileTaskBranches(): Promise<void>;
|
|
356
397
|
private readonly needInputRetry;
|
|
357
398
|
private readonly needInputRetryInFlight;
|
|
399
|
+
private readonly gitReviewQaConfigAlerted;
|
|
358
400
|
private readonly needInputWritesInFlight;
|
|
359
401
|
private needInputWriteSeq;
|
|
360
402
|
private readonly needInputArmLocks;
|
|
@@ -376,6 +418,7 @@ export declare class AgentManager {
|
|
|
376
418
|
private confirmNeedInputAnswered;
|
|
377
419
|
notifyHumanTerminalInput(agentId: string): Promise<void>;
|
|
378
420
|
clearAwaitingHuman(agentId: string, opts?: {
|
|
421
|
+
expectedTaskId?: string;
|
|
379
422
|
expectedHold?: {
|
|
380
423
|
phase?: string;
|
|
381
424
|
since?: string;
|
|
@@ -407,7 +450,11 @@ export declare class AgentManager {
|
|
|
407
450
|
private markPaneCancelClearing;
|
|
408
451
|
private claimCancelCleanup;
|
|
409
452
|
private releaseCancelCleanup;
|
|
410
|
-
failTaskForDispatchError(taskId: string, phase: string, agentId: string, err: DispatchTerminalError
|
|
453
|
+
failTaskForDispatchError(taskId: string, phase: string, agentId: string, err: DispatchTerminalError, opts?: {
|
|
454
|
+
expectedPostApproveEpisode?: PostApproveEpisodeKey;
|
|
455
|
+
expectedReviewDispatch?: ReviewDispatchFence;
|
|
456
|
+
expectedLockToken?: string;
|
|
457
|
+
}): Promise<void>;
|
|
411
458
|
failTasksForAgent(agentId: string, reason: string, opts?: {
|
|
412
459
|
deferPartnerCleanup?: boolean;
|
|
413
460
|
}): Promise<{
|
|
@@ -423,10 +470,11 @@ export declare class AgentManager {
|
|
|
423
470
|
phase: string | undefined;
|
|
424
471
|
since: string | undefined;
|
|
425
472
|
nonce: string | undefined;
|
|
426
|
-
}): Promise<boolean>;
|
|
473
|
+
}, extraCurrent?: (fresh: TaskState) => Promise<boolean>): Promise<boolean>;
|
|
474
|
+
private runRotatedReplay;
|
|
427
475
|
redispatchTaskPromptAfterReplRestart(agentId: string, taskId: string): Promise<boolean>;
|
|
428
476
|
private replayApprovedHolderAfterReplRestart;
|
|
429
|
-
private
|
|
477
|
+
private holdIncompleteGitPostApproveEpisode;
|
|
430
478
|
prepareRemoveTargets(agentId: string): {
|
|
431
479
|
targets: string[];
|
|
432
480
|
};
|
|
@@ -440,26 +488,23 @@ export declare class AgentManager {
|
|
|
440
488
|
projectId: string;
|
|
441
489
|
}>;
|
|
442
490
|
getProjectConfig(projectId: string): ProjectConfig | undefined;
|
|
443
|
-
getProjectByRepo(repo: string): ProjectConfig | undefined;
|
|
444
|
-
getProjectByRepoIdentity(repoKey: string): ProjectConfig | undefined;
|
|
445
491
|
platformDriverFor(projectId: string): GitDriver | undefined;
|
|
446
492
|
private findAgentGroup;
|
|
447
493
|
private longestDevWorkdirInProject;
|
|
448
494
|
getTask(taskId: string): Promise<TaskState | null>;
|
|
449
495
|
getAgentState(agentId: string): Promise<AgentBindingFacts | null>;
|
|
450
496
|
getPostApproveCompletion(taskId: string): Promise<PostApproveCompletion | null>;
|
|
451
|
-
private
|
|
452
|
-
private
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
approvedHeadSha: string;
|
|
456
|
-
redispatchCount?: number;
|
|
457
|
-
pendingRedispatch?: boolean;
|
|
458
|
-
}, opts?: {
|
|
459
|
-
clearRevocation?: boolean;
|
|
497
|
+
private completionOf;
|
|
498
|
+
private postApproveEpisodeMatches;
|
|
499
|
+
armGitPostApproveEpisode(taskId: string, expected: PostApproveEpisodeKey, opts?: {
|
|
500
|
+
recovered?: boolean;
|
|
460
501
|
}): Promise<boolean>;
|
|
461
|
-
|
|
462
|
-
|
|
502
|
+
rotateGitPostApproveEpisode(taskId: string, expected: PostApproveEpisodeKey, redispatchCount: number): Promise<PostApproveEpisodeKey | null>;
|
|
503
|
+
private stripPostApproveFields;
|
|
504
|
+
private stripPostApproveEpisodeFields;
|
|
505
|
+
private stripGitStatusScopedState;
|
|
506
|
+
confirmPostApprovePromptDelivered(taskId: string, expected: string | PostApproveEpisodeKey): Promise<void>;
|
|
507
|
+
markPostApproveSignalReceived(taskId: string, expected: string | PostApproveEpisodeKey): Promise<void>;
|
|
463
508
|
clearPostApproveCompletion(taskId: string): Promise<void>;
|
|
464
509
|
updatePostApproveCompletionIfToken(taskId: string, expectedToken: string, patch: {
|
|
465
510
|
redispatchCount?: number;
|
|
@@ -469,13 +514,16 @@ export declare class AgentManager {
|
|
|
469
514
|
key: string;
|
|
470
515
|
versionTime: number;
|
|
471
516
|
};
|
|
517
|
+
expectedGeneration?: string;
|
|
518
|
+
expectedHeadSha?: string;
|
|
472
519
|
}): Promise<boolean>;
|
|
473
520
|
revokePostApproveCompletion(taskId: string, reason: 'request-changes' | 'redispatch-cap', opts?: {
|
|
474
521
|
expectedToken?: string;
|
|
475
522
|
expectedHeadSha?: string;
|
|
523
|
+
expectedGeneration?: string;
|
|
476
524
|
}): Promise<boolean>;
|
|
477
|
-
clearPostApproveCompletionIfMatches(taskId: string,
|
|
478
|
-
completeApprovedPassToMergeReady(taskId: string,
|
|
525
|
+
clearPostApproveCompletionIfMatches(taskId: string, expected: string | PostApproveEpisodeKey): Promise<boolean>;
|
|
526
|
+
completeApprovedPassToMergeReady(taskId: string, expected: string | PostApproveEpisodeKey): Promise<{
|
|
479
527
|
task: TaskState;
|
|
480
528
|
} | {
|
|
481
529
|
refused: 'stale' | 'pending';
|
|
@@ -500,10 +548,43 @@ export declare class AgentManager {
|
|
|
500
548
|
taskIds: string[];
|
|
501
549
|
}>;
|
|
502
550
|
}>;
|
|
503
|
-
|
|
504
|
-
|
|
551
|
+
flushTaskOutboxes(): Promise<void>;
|
|
552
|
+
private gitReviewLeaseMatches;
|
|
553
|
+
private gitReviewQaConfigUsable;
|
|
554
|
+
beginGitReviewPass(taskId: string, opts: {
|
|
555
|
+
fromStatus: TaskStatus[];
|
|
556
|
+
headSha: string;
|
|
557
|
+
bumpRound: boolean;
|
|
558
|
+
qaPhase?: 'review' | 'recheck';
|
|
559
|
+
expectSignalToken?: string;
|
|
560
|
+
expectPhase?: TaskPhase;
|
|
561
|
+
allowDuringComplete?: boolean;
|
|
562
|
+
patch?: Partial<Pick<TaskState, 'prNumber' | 'prUrl' | 'latestHeadSha' | 'branch' | 'baseBranch' | 'replyActorId' | 'replyActorStatus' | 'pendingPrSignalToken'>>;
|
|
563
|
+
}): Promise<TransitionResult | null>;
|
|
564
|
+
claimGitReviewDispatch(taskId: string, expectedGeneration?: string): Promise<{
|
|
565
|
+
task: TaskState;
|
|
566
|
+
lease: ReviewDispatchLease & {
|
|
567
|
+
phase: 'claimed';
|
|
568
|
+
claimId: string;
|
|
569
|
+
claimedAt: string;
|
|
570
|
+
};
|
|
571
|
+
} | null>;
|
|
572
|
+
approveGitReviewPass(taskId: string, opts: {
|
|
573
|
+
expectedSignalToken: string;
|
|
574
|
+
headSha: string;
|
|
575
|
+
reviewRound: number;
|
|
576
|
+
prNumber?: number;
|
|
577
|
+
prUrl?: string;
|
|
578
|
+
provenance: NonNullable<TaskState['passProvenance']>;
|
|
579
|
+
}): Promise<TaskState | null>;
|
|
580
|
+
private resetGitReviewDispatchClaim;
|
|
581
|
+
private markGitReviewDispatchUncertain;
|
|
582
|
+
private confirmUncertainGitReviewDispatch;
|
|
583
|
+
private completeGitReviewDispatch;
|
|
584
|
+
private recoverPendingGitReviewDispatchHold;
|
|
585
|
+
recoverClaimedGitReviewDispatches(): Promise<void>;
|
|
505
586
|
retryPendingGitReviewDispatches(): Promise<void>;
|
|
506
|
-
|
|
587
|
+
retryGitRemoteCleanupIntents(): Promise<void>;
|
|
507
588
|
consumeGitFeedbackRevision(taskId: string, consume: {
|
|
508
589
|
key: string;
|
|
509
590
|
versionTime: number;
|
|
@@ -515,26 +596,17 @@ export declare class AgentManager {
|
|
|
515
596
|
kind: 'returned' | 'pending';
|
|
516
597
|
task: TaskState;
|
|
517
598
|
}>;
|
|
518
|
-
returnMergeReadyToApproved(taskId: string, consume: {
|
|
519
|
-
key: string;
|
|
520
|
-
versionTime: number;
|
|
521
|
-
}): Promise<TaskState | null>;
|
|
522
599
|
setupRecoveredPostApproveSignals(): Promise<void>;
|
|
523
600
|
setupRecoveredSpecSignals(): Promise<void>;
|
|
601
|
+
private recoverServerSignalRecovery;
|
|
524
602
|
private setupRecoveredWatcherForMapping;
|
|
525
|
-
prHasDevReplySince(taskId: string, sinceIso: string): Promise<boolean>;
|
|
526
|
-
private ghCreatedAt;
|
|
527
|
-
fetchPrHeadSha(taskId: string): Promise<string>;
|
|
528
603
|
verifyPaneSignalPrNumber(taskId: string, prNumber: number): Promise<{
|
|
529
604
|
headRefName: string;
|
|
530
605
|
headSha: string;
|
|
531
|
-
|
|
532
|
-
fetchPrHeadRef(prNumber: number, projectId: string): Promise<{
|
|
533
|
-
headRefName: string;
|
|
534
|
-
headSha: string;
|
|
535
|
-
body: string;
|
|
606
|
+
targetBranch: string;
|
|
536
607
|
} | undefined>;
|
|
537
608
|
platformBindingFields(projectId: string): Partial<TaskState>;
|
|
609
|
+
private platformBindingFor;
|
|
538
610
|
agentGitPreflightContext(projectId: string): AgentGitPreflight | undefined;
|
|
539
611
|
platformCliContextOf(task: TaskState): PlatformCliDescriptor | undefined;
|
|
540
612
|
ensureGitBaseSnapshot(task: TaskState, phase: string): Promise<TaskState>;
|
|
@@ -543,6 +615,7 @@ export declare class AgentManager {
|
|
|
543
615
|
private platformTaskAndDriver;
|
|
544
616
|
listActiveGitTasks(projectId?: string): Promise<TaskState[]>;
|
|
545
617
|
platformFetchPrView(taskId: string): Promise<NormalizedRow>;
|
|
618
|
+
platformFetchPrHeadSha(taskId: string): Promise<string>;
|
|
546
619
|
platformVerifyPrBinding(taskId: string, prNumber: number, opts?: {
|
|
547
620
|
branchOverride?: string;
|
|
548
621
|
}): Promise<{
|
|
@@ -556,15 +629,19 @@ export declare class AgentManager {
|
|
|
556
629
|
prBranch?: string;
|
|
557
630
|
}>;
|
|
558
631
|
stopPhaseSignalWatcherAgent(taskId: string, agentId: string): void;
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
632
|
+
private mutateRemoteCleanup;
|
|
633
|
+
private recordRemoteCleanupFailure;
|
|
634
|
+
private markRemoteCleanupManual;
|
|
635
|
+
processGitRemoteCleanup(taskId: string, expectedGeneration?: string): Promise<void>;
|
|
562
636
|
private platformScanComments;
|
|
563
637
|
platformVerifyAcceptedPass(taskId: string): Promise<{
|
|
564
|
-
|
|
638
|
+
kind: 'valid';
|
|
565
639
|
pendingCount: number;
|
|
566
640
|
} | {
|
|
567
|
-
|
|
641
|
+
kind: 'retryable';
|
|
642
|
+
reason: string;
|
|
643
|
+
} | {
|
|
644
|
+
kind: 'provenance-invalid';
|
|
568
645
|
reason: string;
|
|
569
646
|
}>;
|
|
570
647
|
platformPendingFeedback(taskId: string): Promise<PendingFeedbackResult>;
|
|
@@ -576,17 +653,34 @@ export declare class AgentManager {
|
|
|
576
653
|
passToken: string;
|
|
577
654
|
failToken: string;
|
|
578
655
|
};
|
|
579
|
-
|
|
656
|
+
private taskBelongsToPlatformEntry;
|
|
657
|
+
listTasksForPlatformEntry(projectId: string): Promise<TaskState[]>;
|
|
580
658
|
findTaskByBranch(branch: string, projectId: string): Promise<TaskState | undefined>;
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
659
|
+
adoptServerPr(taskId: string, pr: {
|
|
660
|
+
prNumber: number;
|
|
661
|
+
prUrl?: string;
|
|
662
|
+
headSha?: string;
|
|
663
|
+
targetBranch?: string;
|
|
664
|
+
}): Promise<boolean>;
|
|
665
|
+
updateTaskIfStatus(taskId: string, expectedStatus: TaskStatus, updates: Partial<TaskState>, alsoExpect?: Partial<Pick<TaskState, 'signalToken' | 'phase' | 'reviewRound' | 'specReviewRound'>>): Promise<boolean>;
|
|
666
|
+
claimServerSignalRecovery(taskAtEntry: TaskState, agentId: string, signalKind: ServerSignalKind, input: Omit<ServerSignalRecovery, 'signalKind' | 'sourceToken' | 'createdAt'>): Promise<TaskState | null>;
|
|
667
|
+
holdConsumedServerSignal(taskAtEntry: TaskState, agentId: string, signalKind: ServerSignalKind, input: {
|
|
668
|
+
phase: 'spec' | 'code';
|
|
669
|
+
round: number;
|
|
670
|
+
reason: ServerSignalRecoveryReason;
|
|
671
|
+
failurePhase: string;
|
|
672
|
+
}): Promise<TaskState | null>;
|
|
673
|
+
setServerSignalRecoveryMode(taskId: string, successorToken: string, mode: 'correct-response' | 'hold'): Promise<TaskState | null>;
|
|
674
|
+
holdServerSignalRecovery(taskId: string, agentId: string, successorToken: string, holdPhase: string, reason: string): Promise<TaskState | null>;
|
|
675
|
+
dispatchServerFeedbackCorrection(taskId: string, findingsJson: string): Promise<boolean>;
|
|
584
676
|
updateTask(taskId: string, updates: Partial<TaskState>): Promise<void>;
|
|
585
677
|
transitionTaskStatus(taskId: string, toStatus: TaskStatus, guard: {
|
|
586
678
|
fromStatus: TaskStatus[];
|
|
587
679
|
expectSignalToken?: string;
|
|
588
|
-
|
|
589
|
-
|
|
680
|
+
expectPhase?: TaskPhase;
|
|
681
|
+
expectPostApproveEpisode?: PostApproveEpisodeKey;
|
|
682
|
+
expectReviewDispatch?: ReviewDispatchFence;
|
|
683
|
+
}, patch?: Partial<Pick<TaskState, 'reviewRound' | 'agentId' | 'prNumber' | 'prUrl' | 'qaAgentId' | 'latestHeadSha' | 'reviewHeadAnchorSha' | 'reviewDispatchedAt' | 'fixDispatchedAt' | 'specReviewRound' | 'signalToken' | 'passToken' | 'failToken' | 'reviewRoundPending' | 'reviewDispatch' | 'phase' | 'batchIndex' | 'batchTotal' | 'branch' | 'maxRoundsContinues'>>): Promise<TransitionResult | null>;
|
|
590
684
|
private createRunnerFor;
|
|
591
685
|
private createRepoStore;
|
|
592
686
|
private ensureWorkdir;
|
|
@@ -660,6 +754,8 @@ export declare class AgentManager {
|
|
|
660
754
|
allowAwaitingHuman?: boolean;
|
|
661
755
|
clearAwaitingHuman?: boolean;
|
|
662
756
|
expectedTask?: Pick<TaskState, 'status' | 'phase' | 'signalToken'>;
|
|
757
|
+
expectedReviewDispatch?: Pick<ReviewDispatchLease, 'generation' | 'claimId' | 'signalToken'>;
|
|
758
|
+
expectedPostApproveEpisode?: PostApproveEpisodeKey;
|
|
663
759
|
expectedHold?: {
|
|
664
760
|
phase: string | undefined;
|
|
665
761
|
since: string | undefined;
|
|
@@ -680,22 +776,32 @@ export declare class AgentManager {
|
|
|
680
776
|
description: string;
|
|
681
777
|
preferredAgentId: string;
|
|
682
778
|
}): Promise<void>;
|
|
779
|
+
private gitReviewClaimMatches;
|
|
780
|
+
private gitReviewDispatchMatches;
|
|
781
|
+
dispatchGitReviewLease(taskId: string, opts?: {
|
|
782
|
+
expectedGeneration?: string;
|
|
783
|
+
pendingBudget?: {
|
|
784
|
+
since: number;
|
|
785
|
+
budgetAlerted?: boolean;
|
|
786
|
+
};
|
|
787
|
+
onQaAcquired?: (lockToken: string) => void;
|
|
788
|
+
}): Promise<TaskState>;
|
|
683
789
|
dispatchReviewToQa(taskId: string, opts?: {
|
|
684
790
|
fromStatus?: TaskStatus[];
|
|
685
791
|
bumpRound?: boolean;
|
|
686
792
|
expectSignalToken?: string;
|
|
793
|
+
expectPhase?: TaskPhase;
|
|
687
794
|
qaPhase?: 'review' | 'recheck';
|
|
688
795
|
pendingBudget?: {
|
|
689
796
|
since: number;
|
|
690
797
|
budgetAlerted?: boolean;
|
|
691
798
|
};
|
|
692
|
-
expectReviewDispatchPending?: boolean;
|
|
693
799
|
onPassArmed?: (armedToken: string) => void;
|
|
800
|
+
onQaAcquired?: (lockToken: string) => void;
|
|
801
|
+
confirmUncertainNotDelivered?: boolean;
|
|
694
802
|
}): Promise<TaskState>;
|
|
695
803
|
private runManualServerReview;
|
|
696
804
|
continueDevRound(taskId: string): Promise<TaskState>;
|
|
697
|
-
private rollbackDispatchReviewPhase1;
|
|
698
|
-
private tearDownWatcherIfTaskTerminal;
|
|
699
805
|
private devInitialSignalKinds;
|
|
700
806
|
private resolveInitialDispatch;
|
|
701
807
|
private mapTaskStateToExpectedWatchers;
|
|
@@ -706,7 +812,6 @@ export declare class AgentManager {
|
|
|
706
812
|
replaceScope?: 'task' | 'agent';
|
|
707
813
|
tokenOverride?: string;
|
|
708
814
|
}): Promise<boolean>;
|
|
709
|
-
private emitManualReviewDevParkedQaFailedIntervention;
|
|
710
815
|
retryTask(taskId: string): Promise<TaskState>;
|
|
711
816
|
editTask(taskId: string, patch: {
|
|
712
817
|
title?: string;
|
|
@@ -738,29 +843,13 @@ export declare class AgentManager {
|
|
|
738
843
|
rearmGitReconciliationWatcher(taskId: string, opts?: {
|
|
739
844
|
skipSnapshot?: boolean;
|
|
740
845
|
}): Promise<void>;
|
|
741
|
-
rotateAndSetupPhaseSignal(taskId: string, agentId: string, expectedKinds: PhaseSignalKind | readonly PhaseSignalKind[]
|
|
846
|
+
rotateAndSetupPhaseSignal(taskId: string, agentId: string, expectedKinds: PhaseSignalKind | readonly PhaseSignalKind[], guard?: {
|
|
847
|
+
expectedStatus: TaskStatus;
|
|
848
|
+
expectedToken?: string;
|
|
849
|
+
}): Promise<{
|
|
742
850
|
token: string;
|
|
743
851
|
armed: boolean;
|
|
744
852
|
}>;
|
|
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
853
|
parkTaskAtSpecReady(taskId: string, opts?: {
|
|
765
854
|
specReviewRound?: number;
|
|
766
855
|
}): Promise<TaskState | null>;
|
|
@@ -778,6 +867,7 @@ export declare class AgentManager {
|
|
|
778
867
|
phase: ReviewPhase;
|
|
779
868
|
recheck?: boolean;
|
|
780
869
|
continuation?: boolean;
|
|
870
|
+
bumpRound?: boolean;
|
|
781
871
|
content: string;
|
|
782
872
|
interdiff?: string;
|
|
783
873
|
diffstat?: string;
|
|
@@ -790,8 +880,11 @@ export declare class AgentManager {
|
|
|
790
880
|
priorFindingsJson?: string;
|
|
791
881
|
priorResponseJson?: string;
|
|
792
882
|
reviewHeadAnchorSha?: string;
|
|
883
|
+
callerOwnsConsumedSignalFailure?: boolean;
|
|
884
|
+
}): Promise<TaskState | null>;
|
|
885
|
+
dispatchServerFixToDev(taskId: string, _findingsJson: string, opts?: {
|
|
886
|
+
callerOwnsConsumedSignalFailure?: boolean;
|
|
793
887
|
}): Promise<TaskState | null>;
|
|
794
|
-
dispatchServerFixToDev(taskId: string, findingsJson: string): Promise<TaskState | null>;
|
|
795
888
|
private projectRepoKey;
|
|
796
889
|
computeCodeInterdiff(taskId: string, round: number): Promise<CodeInterdiffResult>;
|
|
797
890
|
findLineageViolation(taskId: string, baseSha?: string): Promise<LineageViolation | null>;
|