awb-agent-manager 1.6.43 → 1.6.45
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/dist/lib/dispatch-preflight.d.ts +44 -0
- package/dist/lib/dispatch-preflight.js +173 -0
- package/dist/lib/dispatch-preflight.js.map +1 -1
- package/dist/lib/event-dispatcher.d.ts +9 -1
- package/dist/lib/event-dispatcher.js +112 -9
- package/dist/lib/event-dispatcher.js.map +1 -1
- package/dist/lib/event-stream.d.ts +1 -0
- package/dist/lib/event-stream.js +3 -0
- package/dist/lib/event-stream.js.map +1 -1
- package/dist/lib/instance-heartbeat.d.ts +2 -0
- package/dist/lib/instance-heartbeat.js +17 -0
- package/dist/lib/instance-heartbeat.js.map +1 -1
- package/dist/lib/rest.d.ts +7 -0
- package/dist/lib/rest.js +29 -0
- package/dist/lib/rest.js.map +1 -1
- package/dist/main.js +13 -3
- package/dist/main.js.map +1 -1
- package/dist/package.json +1 -1
- package/package.json +1 -1
|
@@ -103,4 +103,48 @@ export declare class InflightDispatchTracker {
|
|
|
103
103
|
suppressedCount(reason?: DispatchSuppressReason): number;
|
|
104
104
|
suppressionCounts(): Record<string, number>;
|
|
105
105
|
}
|
|
106
|
+
export declare class DispatchBlockTracker {
|
|
107
|
+
#private;
|
|
108
|
+
record(kind: string | undefined | null): void;
|
|
109
|
+
counts(): Record<string, number>;
|
|
110
|
+
total(reason?: string): number;
|
|
111
|
+
}
|
|
112
|
+
export interface PendingRetryEntry {
|
|
113
|
+
key: string;
|
|
114
|
+
raw: string;
|
|
115
|
+
ticketId: string;
|
|
116
|
+
role: string;
|
|
117
|
+
agentId: string;
|
|
118
|
+
attempts: number;
|
|
119
|
+
delayMs: number;
|
|
120
|
+
timer: unknown | null;
|
|
121
|
+
attempting: boolean;
|
|
122
|
+
}
|
|
123
|
+
export interface RetryScheduler {
|
|
124
|
+
set(fn: () => void, ms: number): unknown;
|
|
125
|
+
clear(handle: unknown): void;
|
|
126
|
+
}
|
|
127
|
+
export interface PendingDispatchRetryOptions {
|
|
128
|
+
onRetry: (raw: string) => Promise<void> | void;
|
|
129
|
+
onGiveUp: (entry: PendingRetryEntry) => Promise<void> | void;
|
|
130
|
+
verify?: (entry: PendingRetryEntry) => Promise<boolean> | boolean;
|
|
131
|
+
scheduler?: RetryScheduler;
|
|
132
|
+
baseDelayMs?: number;
|
|
133
|
+
maxDelayMs?: number;
|
|
134
|
+
maxAttempts?: number;
|
|
135
|
+
log?: (msg: string) => void;
|
|
136
|
+
}
|
|
137
|
+
export declare class PendingDispatchRetry {
|
|
138
|
+
#private;
|
|
139
|
+
constructor(opts: PendingDispatchRetryOptions);
|
|
140
|
+
register(meta: InflightDispatchMeta, raw: string): {
|
|
141
|
+
created: boolean;
|
|
142
|
+
};
|
|
143
|
+
resolve(meta: InflightDispatchMeta): void;
|
|
144
|
+
cancel(key: string, reason: string): void;
|
|
145
|
+
cancelByTicket(ticketId: string, reason: string): void;
|
|
146
|
+
wake(reason: string): void;
|
|
147
|
+
has(key: string): boolean;
|
|
148
|
+
size(): number;
|
|
149
|
+
}
|
|
106
150
|
export declare function firstLine(text: string | undefined | null): string;
|
|
@@ -244,6 +244,179 @@ export class InflightDispatchTracker {
|
|
|
244
244
|
return out;
|
|
245
245
|
}
|
|
246
246
|
}
|
|
247
|
+
export class DispatchBlockTracker {
|
|
248
|
+
#counts = new Map();
|
|
249
|
+
record(kind) {
|
|
250
|
+
const k = (kind ?? '').trim();
|
|
251
|
+
if (!k)
|
|
252
|
+
return;
|
|
253
|
+
this.#counts.set(k, (this.#counts.get(k) ?? 0) + 1);
|
|
254
|
+
}
|
|
255
|
+
counts() {
|
|
256
|
+
const out = {};
|
|
257
|
+
for (const [k, n] of this.#counts)
|
|
258
|
+
if (n > 0)
|
|
259
|
+
out[k] = n;
|
|
260
|
+
return out;
|
|
261
|
+
}
|
|
262
|
+
total(reason) {
|
|
263
|
+
if (reason)
|
|
264
|
+
return this.#counts.get(reason) ?? 0;
|
|
265
|
+
let t = 0;
|
|
266
|
+
for (const n of this.#counts.values())
|
|
267
|
+
t += n;
|
|
268
|
+
return t;
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
const defaultRetryScheduler = {
|
|
272
|
+
set(fn, ms) {
|
|
273
|
+
const t = setTimeout(fn, ms);
|
|
274
|
+
t?.unref?.();
|
|
275
|
+
return t;
|
|
276
|
+
},
|
|
277
|
+
clear(handle) {
|
|
278
|
+
clearTimeout(handle);
|
|
279
|
+
},
|
|
280
|
+
};
|
|
281
|
+
export class PendingDispatchRetry {
|
|
282
|
+
#entries = new Map();
|
|
283
|
+
#onRetry;
|
|
284
|
+
#onGiveUp;
|
|
285
|
+
#verify;
|
|
286
|
+
#scheduler;
|
|
287
|
+
#baseDelayMs;
|
|
288
|
+
#maxDelayMs;
|
|
289
|
+
#maxAttempts;
|
|
290
|
+
#log;
|
|
291
|
+
constructor(opts) {
|
|
292
|
+
this.#onRetry = opts.onRetry;
|
|
293
|
+
this.#onGiveUp = opts.onGiveUp;
|
|
294
|
+
this.#verify = opts.verify ?? null;
|
|
295
|
+
this.#scheduler = opts.scheduler ?? defaultRetryScheduler;
|
|
296
|
+
this.#baseDelayMs = opts.baseDelayMs ?? 30_000;
|
|
297
|
+
this.#maxDelayMs = opts.maxDelayMs ?? 5 * 60_000;
|
|
298
|
+
this.#maxAttempts = opts.maxAttempts ?? 8;
|
|
299
|
+
this.#log = opts.log ?? (() => { });
|
|
300
|
+
}
|
|
301
|
+
register(meta, raw) {
|
|
302
|
+
const key = InflightDispatchTracker.key(meta.ticketId, meta.role, meta.agentId);
|
|
303
|
+
const existing = this.#entries.get(key);
|
|
304
|
+
if (existing) {
|
|
305
|
+
existing.raw = raw;
|
|
306
|
+
return { created: false };
|
|
307
|
+
}
|
|
308
|
+
const entry = {
|
|
309
|
+
key,
|
|
310
|
+
raw,
|
|
311
|
+
ticketId: meta.ticketId,
|
|
312
|
+
role: meta.role,
|
|
313
|
+
agentId: meta.agentId,
|
|
314
|
+
attempts: 0,
|
|
315
|
+
delayMs: this.#baseDelayMs,
|
|
316
|
+
timer: null,
|
|
317
|
+
attempting: false,
|
|
318
|
+
};
|
|
319
|
+
this.#entries.set(key, entry);
|
|
320
|
+
this.#arm(entry);
|
|
321
|
+
return { created: true };
|
|
322
|
+
}
|
|
323
|
+
#arm(entry) {
|
|
324
|
+
if (entry.timer !== null)
|
|
325
|
+
this.#scheduler.clear(entry.timer);
|
|
326
|
+
entry.timer = this.#scheduler.set(() => void this.#attempt(entry), entry.delayMs);
|
|
327
|
+
}
|
|
328
|
+
async #attempt(entry) {
|
|
329
|
+
if (!this.#entries.has(entry.key) || entry.attempting)
|
|
330
|
+
return;
|
|
331
|
+
entry.attempting = true;
|
|
332
|
+
entry.timer = null;
|
|
333
|
+
try {
|
|
334
|
+
if (this.#verify) {
|
|
335
|
+
let eligible = true;
|
|
336
|
+
try {
|
|
337
|
+
eligible = await this.#verify(entry);
|
|
338
|
+
}
|
|
339
|
+
catch (err) {
|
|
340
|
+
this.#log(`[pool-retry] verify failed for ${entry.key} (proceeding): ${err?.message ?? err}`);
|
|
341
|
+
eligible = true;
|
|
342
|
+
}
|
|
343
|
+
if (!this.#entries.has(entry.key))
|
|
344
|
+
return;
|
|
345
|
+
if (!eligible) {
|
|
346
|
+
this.cancel(entry.key, 'ticket left the active flow (pended/terminal)');
|
|
347
|
+
return;
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
entry.attempts += 1;
|
|
351
|
+
try {
|
|
352
|
+
await this.#onRetry(entry.raw);
|
|
353
|
+
}
|
|
354
|
+
catch (err) {
|
|
355
|
+
this.#log(`[pool-retry] retry replay threw for ${entry.key}: ${err?.message ?? err}`);
|
|
356
|
+
}
|
|
357
|
+
if (!this.#entries.has(entry.key))
|
|
358
|
+
return;
|
|
359
|
+
if (entry.attempts >= this.#maxAttempts) {
|
|
360
|
+
this.#entries.delete(entry.key);
|
|
361
|
+
this.#log(`[pool-retry] giving up on ${entry.key} after ${entry.attempts} attempt(s) — pending for operator`);
|
|
362
|
+
try {
|
|
363
|
+
await this.#onGiveUp(entry);
|
|
364
|
+
}
|
|
365
|
+
catch (err) {
|
|
366
|
+
this.#log(`[pool-retry] give-up handler threw for ${entry.key}: ${err?.message ?? err}`);
|
|
367
|
+
}
|
|
368
|
+
return;
|
|
369
|
+
}
|
|
370
|
+
entry.delayMs = Math.min(entry.delayMs * 2, this.#maxDelayMs);
|
|
371
|
+
this.#arm(entry);
|
|
372
|
+
}
|
|
373
|
+
finally {
|
|
374
|
+
entry.attempting = false;
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
resolve(meta) {
|
|
378
|
+
this.#drop(InflightDispatchTracker.key(meta.ticketId, meta.role, meta.agentId));
|
|
379
|
+
}
|
|
380
|
+
cancel(key, reason) {
|
|
381
|
+
if (this.#drop(key))
|
|
382
|
+
this.#log(`[pool-retry] cancelled ${key}: ${reason}`);
|
|
383
|
+
}
|
|
384
|
+
cancelByTicket(ticketId, reason) {
|
|
385
|
+
for (const [key, e] of [...this.#entries]) {
|
|
386
|
+
if (e.ticketId === ticketId)
|
|
387
|
+
this.cancel(key, reason);
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
#drop(key) {
|
|
391
|
+
const e = this.#entries.get(key);
|
|
392
|
+
if (!e)
|
|
393
|
+
return false;
|
|
394
|
+
if (e.timer !== null)
|
|
395
|
+
this.#scheduler.clear(e.timer);
|
|
396
|
+
this.#entries.delete(key);
|
|
397
|
+
return true;
|
|
398
|
+
}
|
|
399
|
+
wake(reason) {
|
|
400
|
+
if (this.#entries.size === 0)
|
|
401
|
+
return;
|
|
402
|
+
this.#log(`[pool-retry] wake (${reason}) — re-driving ${this.#entries.size} queued retry(ies)`);
|
|
403
|
+
for (const e of [...this.#entries.values()]) {
|
|
404
|
+
if (e.attempting)
|
|
405
|
+
continue;
|
|
406
|
+
if (e.timer !== null) {
|
|
407
|
+
this.#scheduler.clear(e.timer);
|
|
408
|
+
e.timer = null;
|
|
409
|
+
}
|
|
410
|
+
void this.#attempt(e);
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
has(key) {
|
|
414
|
+
return this.#entries.has(key);
|
|
415
|
+
}
|
|
416
|
+
size() {
|
|
417
|
+
return this.#entries.size;
|
|
418
|
+
}
|
|
419
|
+
}
|
|
247
420
|
export function firstLine(text) {
|
|
248
421
|
if (!text)
|
|
249
422
|
return '';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatch-preflight.js","sourceRoot":"","sources":["../../src/lib/dispatch-preflight.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dispatch-preflight.js","sourceRoot":"","sources":["../../src/lib/dispatch-preflight.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,8 @@ import type { AwbConfig } from './rest.js';
|
|
|
2
2
|
import type { RunSessionBinding } from './base-session-manager.js';
|
|
3
3
|
import type { ManagedAgentContextRegistry } from './managed-agent-context.js';
|
|
4
4
|
import type { WorktreeManager, WorktreeMode } from './worktree-manager.js';
|
|
5
|
-
import { InflightDispatchTracker } from './dispatch-preflight.js';
|
|
5
|
+
import { DispatchBlockTracker, InflightDispatchTracker } from './dispatch-preflight.js';
|
|
6
|
+
import type { RetryScheduler } from './dispatch-preflight.js';
|
|
6
7
|
import type { HarnessSpec, ResolvedEffortPreset } from './cli-adapters/base.js';
|
|
7
8
|
interface ResolvedEnvironmentConfig {
|
|
8
9
|
repositories: Array<{
|
|
@@ -177,10 +178,17 @@ export interface EventDispatcherDeps {
|
|
|
177
178
|
managedAgentContexts?: ManagedAgentContextRegistry | null;
|
|
178
179
|
worktreeManager?: WorktreeManager | null;
|
|
179
180
|
inflightDispatchTracker?: InflightDispatchTracker | null;
|
|
181
|
+
dispatchBlockTracker?: DispatchBlockTracker | null;
|
|
182
|
+
poolReclaimTrigger?: (() => Promise<number>) | null;
|
|
183
|
+
poolRetryScheduler?: RetryScheduler | null;
|
|
184
|
+
poolRetryMaxAttempts?: number | null;
|
|
180
185
|
}
|
|
181
186
|
export declare class EventDispatcher {
|
|
182
187
|
#private;
|
|
183
188
|
dispatchSuppressionCounts(): Record<string, number>;
|
|
189
|
+
dispatchBlockCounts(): Record<string, number>;
|
|
190
|
+
wakePoolRetries(reason: string): void;
|
|
191
|
+
pendingPoolRetryCount(): number;
|
|
184
192
|
constructor(config: AwbConfig, deps?: EventDispatcherDeps);
|
|
185
193
|
dispatch(eventType: string, raw: string): void | Promise<void>;
|
|
186
194
|
handleFsRequest(raw: string): Promise<void>;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { log } from './logging.js';
|
|
2
2
|
import { loadAgentInfo } from './config.js';
|
|
3
|
-
import { fetchTicketContext, fetchChatRoomHistory, fetchAgentRecord, fetchRepositoryCredential, postFsResponse, postChatRoomMessage, } from './rest.js';
|
|
3
|
+
import { fetchTicketContext, fetchChatRoomHistory, fetchAgentRecord, fetchRepositoryCredential, postFsResponse, postChatRoomMessage, postDispatchAck, } from './rest.js';
|
|
4
4
|
import { recordEvent } from './event-log-recorder.js';
|
|
5
5
|
import { prepareChatAttachments } from './chat-attachment-prep.js';
|
|
6
6
|
import { injectWorkFolder } from './prompts.js';
|
|
7
|
-
import { DispatchBlockerTracker, InflightDispatchTracker, RoleSpawnSuppressor, classifyWorktreeOutcome, managedWorktreePath, provisioningPendReason } from './dispatch-preflight.js';
|
|
7
|
+
import { DispatchBlockerTracker, DispatchBlockTracker, InflightDispatchTracker, PendingDispatchRetry, RoleSpawnSuppressor, classifyWorktreeOutcome, managedWorktreePath, provisioningPendReason } from './dispatch-preflight.js';
|
|
8
8
|
import { createAdapter, ADAPTER_CAPABILITIES } from './cli-adapters/index.js';
|
|
9
9
|
import { parseRunProvision, provisionRunWorkspace, reconcileRunBaseWorkingDir, resolveRunFolder, } from './run-provisioner.js';
|
|
10
10
|
import { FolderMutex } from './run-execution-lock.js';
|
|
@@ -180,6 +180,10 @@ export function validateWorktreeProvisioningInputs(args) {
|
|
|
180
180
|
return null;
|
|
181
181
|
}
|
|
182
182
|
const AGENT_CHAIN_DEPTH_CAP = 3;
|
|
183
|
+
const POOL_EXHAUSTED_RETRY_COMMENT = `⚠️ **shared worktree 풀 고갈 (pool_exhausted)** — 공유 warm-pool 의 모든 슬롯이 활성 lease 라 에이전트를 실행하지 않고 디스패치를 보류했습니다.\n\n` +
|
|
184
|
+
`on-demand lease 재조정을 즉시 시도했지만 회수 가능한 슬롯이 없었습니다 (reclaim grace(20분) 이내의 lease 이거나, 같은 working_dir 를 공유하는 다른 보드와의 일시적 경합).\n\n` +
|
|
185
|
+
`매니저가 이 트리거를 **자동 재시도 큐**에 넣었습니다 — 백오프로 재시도하며, 활성 티켓이 끝나 슬롯을 반납하거나(또는 주기/부팅 재조정이 leaked lease 를 회수하는) 즉시 재프로비저닝합니다. **서버 재푸시가 필요 없습니다.**\n\n` +
|
|
186
|
+
`재시도 한도까지 계속 고갈이면 운영자 확인을 위해 자동으로 pend 되며, max_concurrent_tickets_per_agent(풀 크기 N)와 이 working_dir 를 공유하는 보드 구성을 점검하세요.`;
|
|
183
187
|
export class EventDispatcher {
|
|
184
188
|
#config;
|
|
185
189
|
#subagentManager;
|
|
@@ -196,6 +200,18 @@ export class EventDispatcher {
|
|
|
196
200
|
dispatchSuppressionCounts() {
|
|
197
201
|
return this.#inflightDispatch.suppressionCounts();
|
|
198
202
|
}
|
|
203
|
+
#dispatchBlockTracker;
|
|
204
|
+
#poolReclaimTrigger;
|
|
205
|
+
dispatchBlockCounts() {
|
|
206
|
+
return this.#dispatchBlockTracker.counts();
|
|
207
|
+
}
|
|
208
|
+
#poolRetry;
|
|
209
|
+
wakePoolRetries(reason) {
|
|
210
|
+
this.#poolRetry.wake(reason);
|
|
211
|
+
}
|
|
212
|
+
pendingPoolRetryCount() {
|
|
213
|
+
return this.#poolRetry.size();
|
|
214
|
+
}
|
|
199
215
|
#runExecLock = new FolderMutex();
|
|
200
216
|
constructor(config, deps = {}) {
|
|
201
217
|
this.#config = config;
|
|
@@ -208,6 +224,16 @@ export class EventDispatcher {
|
|
|
208
224
|
this.#managedAgentContexts = deps.managedAgentContexts ?? null;
|
|
209
225
|
this.#worktreeManager = deps.worktreeManager ?? null;
|
|
210
226
|
this.#inflightDispatch = deps.inflightDispatchTracker ?? new InflightDispatchTracker();
|
|
227
|
+
this.#dispatchBlockTracker = deps.dispatchBlockTracker ?? new DispatchBlockTracker();
|
|
228
|
+
this.#poolReclaimTrigger = deps.poolReclaimTrigger ?? null;
|
|
229
|
+
this.#poolRetry = new PendingDispatchRetry({
|
|
230
|
+
onRetry: (raw) => this.handleTrigger(raw),
|
|
231
|
+
onGiveUp: (entry) => this.#pendExhaustedPoolRetry(entry),
|
|
232
|
+
verify: (entry) => this.#isPoolRetryEligible(entry),
|
|
233
|
+
scheduler: deps.poolRetryScheduler ?? undefined,
|
|
234
|
+
maxAttempts: deps.poolRetryMaxAttempts ?? undefined,
|
|
235
|
+
log,
|
|
236
|
+
});
|
|
211
237
|
}
|
|
212
238
|
async #applyWorktreeCwd(agentContext, ticketId, role, mode, poolSize, bootstrapRepo) {
|
|
213
239
|
const requiredError = validateWorktreeProvisioningInputs({
|
|
@@ -256,6 +282,30 @@ export class EventDispatcher {
|
|
|
256
282
|
return { ok: false, reason, blockerKind: 'worktree:error' };
|
|
257
283
|
}
|
|
258
284
|
}
|
|
285
|
+
async #isPoolRetryEligible(entry) {
|
|
286
|
+
const ticket = await fetchTicketContext(this.#config, entry.ticketId);
|
|
287
|
+
if (!ticket)
|
|
288
|
+
return true;
|
|
289
|
+
if (ticket.pending_user_action)
|
|
290
|
+
return false;
|
|
291
|
+
if (ticket.terminal_entered_at)
|
|
292
|
+
return false;
|
|
293
|
+
return true;
|
|
294
|
+
}
|
|
295
|
+
async #pendExhaustedPoolRetry(entry) {
|
|
296
|
+
if (!entry.ticketId)
|
|
297
|
+
return;
|
|
298
|
+
const reason = `shared worktree 풀 고갈(pool_exhausted)이 매니저 자동 재시도 ${entry.attempts}회(약 20분 이상) 후에도 지속 — ` +
|
|
299
|
+
`회수 가능한 leaked lease 가 없어 실제 풀 과다구독으로 판단됩니다. max_concurrent_tickets_per_agent(풀 크기 N)와 이 working_dir 를 공유하는 보드 구성을 점검하고 unpend 로 재개하세요.`;
|
|
300
|
+
await fireAndForgetTool(this.#config, 'pend_ticket', { ticket_id: entry.ticketId, reason });
|
|
301
|
+
await fireAndForgetTool(this.#config, 'add_comment', {
|
|
302
|
+
ticket_id: entry.ticketId,
|
|
303
|
+
content: `⛔ **shared worktree 풀 고갈 지속 — 자동 재시도 한도 초과, pend** — 매니저가 ${entry.attempts}회 자동 재시도했지만 슬롯이 반납/회수되지 않아 디스패치를 pend 했습니다.\n\n` +
|
|
304
|
+
`leaked lease 는 이미 회수 grace(20분) 를 넘겨 재조정 대상이었으므로, 남은 원인은 이 working_dir 를 공유하는 보드들의 실제 동시 실행 수가 풀 크기 N 을 초과하는 과다구독입니다.\n\n` +
|
|
305
|
+
`**조치:** max_concurrent_tickets_per_agent 를 늘리거나, 이 working_dir 를 공유하는 보드/에이전트 구성을 분리한 뒤 unpend 하세요. (원인-불문 no-progress 백스톱: e7c87517)`,
|
|
306
|
+
});
|
|
307
|
+
log(`[pool-retry] pended ticket=${entry.ticketId.slice(0, 8)} role=${entry.role} after ${entry.attempts} exhausted retries`);
|
|
308
|
+
}
|
|
259
309
|
async #cleanupTerminalTicketWorktrees(ticketId) {
|
|
260
310
|
if (!this.#worktreeManager)
|
|
261
311
|
return;
|
|
@@ -281,6 +331,7 @@ export class EventDispatcher {
|
|
|
281
331
|
}
|
|
282
332
|
if (total > 0) {
|
|
283
333
|
log(`[worktree] terminal ticket=${ticketId.slice(0, 8)} reclaimed ${total} worktree(s)`);
|
|
334
|
+
this.#poolRetry.wake(`slot_release:terminal:${ticketId.slice(0, 8)}`);
|
|
284
335
|
}
|
|
285
336
|
}
|
|
286
337
|
catch (err) {
|
|
@@ -317,6 +368,9 @@ export class EventDispatcher {
|
|
|
317
368
|
if (worktrees > 0 || runDirs > 0) {
|
|
318
369
|
log(`[worktree] archived ticket=${ticketId.slice(0, 8)} reclaimed ${worktrees} worktree(s) + ${runDirs} run workspace(s)`);
|
|
319
370
|
}
|
|
371
|
+
if (worktrees > 0) {
|
|
372
|
+
this.#poolRetry.wake(`slot_release:archived:${ticketId.slice(0, 8)}`);
|
|
373
|
+
}
|
|
320
374
|
}
|
|
321
375
|
catch (err) {
|
|
322
376
|
log(`[worktree] archive cleanup failed for ticket=${ticketId.slice(0, 8)}: ${err?.message ?? err}`);
|
|
@@ -496,7 +550,7 @@ export class EventDispatcher {
|
|
|
496
550
|
}
|
|
497
551
|
const reservedFresh = !!reservation && reservation.acquired && !reservation.live;
|
|
498
552
|
try {
|
|
499
|
-
await this.#dispatchTriggerBody(ev, agentContext, envConfig, canAuthoritative && reservedFresh);
|
|
553
|
+
await this.#dispatchTriggerBody(ev, agentContext, envConfig, canAuthoritative && reservedFresh, raw);
|
|
500
554
|
}
|
|
501
555
|
finally {
|
|
502
556
|
if (inflightKey) {
|
|
@@ -526,26 +580,58 @@ export class EventDispatcher {
|
|
|
526
580
|
}
|
|
527
581
|
}
|
|
528
582
|
}
|
|
529
|
-
async #dispatchTriggerBody(ev, agentContext, envConfig, dispatchReserved) {
|
|
583
|
+
async #dispatchTriggerBody(ev, agentContext, envConfig, dispatchReserved, raw) {
|
|
530
584
|
const selectedRepo = resolveBootstrapRepository(ev.base_repo, ev.base_branch, envConfig);
|
|
531
585
|
const repoCredential = selectedRepo?.resourceId && agentContext?.agent_id
|
|
532
586
|
? await fetchRepositoryCredential(this.#config, selectedRepo.resourceId, agentContext.agent_id)
|
|
533
587
|
: null;
|
|
534
|
-
const
|
|
588
|
+
const applyWorktree = () => this.#applyWorktreeCwd(agentContext, ev.ticket_id, ev.action, parseWorktreeMode(ev.worktree_mode), typeof ev.max_concurrent_tickets_per_agent === 'number'
|
|
535
589
|
? ev.max_concurrent_tickets_per_agent
|
|
536
590
|
: undefined, selectedRepo ? { ...selectedRepo, credential: repoCredential } : null);
|
|
591
|
+
let worktreeProvision = await applyWorktree();
|
|
592
|
+
if (!worktreeProvision.ok && worktreeProvision.reason === 'pool_exhausted') {
|
|
593
|
+
this.#dispatchBlockTracker.record(worktreeProvision.blockerKind || 'worktree:pool_exhausted');
|
|
594
|
+
const reclaimed = this.#poolReclaimTrigger
|
|
595
|
+
? await this.#poolReclaimTrigger().catch((err) => {
|
|
596
|
+
log(`[worktree] on-demand pool reclaim failed: ${err?.message ?? err}`);
|
|
597
|
+
return 0;
|
|
598
|
+
})
|
|
599
|
+
: 0;
|
|
600
|
+
log(`[worktree] pool_exhausted for ticket=${String(ev.ticket_id).slice(0, 8)} role=${ev.action} — ` +
|
|
601
|
+
`on-demand reclaim freed ${reclaimed} orphaned lease(s)` +
|
|
602
|
+
(reclaimed > 0 ? '; retrying provisioning inline' : ' (no reclaimable lease — within-grace or genuine contention; queuing retry)'));
|
|
603
|
+
if (reclaimed > 0)
|
|
604
|
+
worktreeProvision = await applyWorktree();
|
|
605
|
+
if (!worktreeProvision.ok && ev.ticket_id) {
|
|
606
|
+
const meta = { ticketId: ev.ticket_id, role: ev.action || '', agentId: ev.actor_name || '' };
|
|
607
|
+
const { created } = this.#poolRetry.register(meta, raw);
|
|
608
|
+
if (created) {
|
|
609
|
+
await fireAndForgetTool(this.#config, 'add_comment', {
|
|
610
|
+
ticket_id: ev.ticket_id,
|
|
611
|
+
content: POOL_EXHAUSTED_RETRY_COMMENT,
|
|
612
|
+
});
|
|
613
|
+
}
|
|
614
|
+
log(`[worktree] pool_exhausted — queued manager-owned retry ticket=${String(ev.ticket_id).slice(0, 8)} ` +
|
|
615
|
+
`role=${ev.action} (new_episode=${created}, queued=${this.#poolRetry.size()})`);
|
|
616
|
+
return;
|
|
617
|
+
}
|
|
618
|
+
}
|
|
537
619
|
if (!worktreeProvision.ok) {
|
|
538
620
|
const blockerKind = worktreeProvision.blockerKind || `worktree:${worktreeProvision.reason || 'unknown'}`;
|
|
621
|
+
if (worktreeProvision.reason !== 'pool_exhausted') {
|
|
622
|
+
this.#dispatchBlockTracker.record(blockerKind);
|
|
623
|
+
}
|
|
539
624
|
const provisionBlock = this.#spawnSuppressor.note(ev.ticket_id, ev.action, blockerKind, Date.now());
|
|
540
625
|
if (ev.ticket_id && this.#dispatchBlockers.shouldComment(ev.ticket_id, blockerKind)) {
|
|
541
626
|
const detailLine = worktreeProvision.detail ? `\n세부: \`${worktreeProvision.detail}\`` : '';
|
|
542
627
|
const pathLine = worktreeProvision.path ? `\n경로: \`${worktreeProvision.path}\`` : '';
|
|
628
|
+
const content = `⚠️ **티켓 worktree 준비 실패** — 유효한 Git 체크아웃을 확보하지 못해 에이전트를 실행하지 않고 디스패치를 중단했습니다.\n\n` +
|
|
629
|
+
`원인: \`${worktreeProvision.reason || 'unknown error'}\`${detailLine}${pathLine}\n\n` +
|
|
630
|
+
`repository resource, credential과 working_dir 아래 AWB 관리 폴더(\`.awb/base\`, \`.awb/wt\`)를 확인한 뒤 다시 트리거하세요.\n\n` +
|
|
631
|
+
`_동일 오류로 인한 supervisor 자동 재트리거는 백오프로 억제됩니다 — 환경을 고친 뒤 코멘트/수동 트리거로 재개하세요._`;
|
|
543
632
|
await fireAndForgetTool(this.#config, 'add_comment', {
|
|
544
633
|
ticket_id: ev.ticket_id,
|
|
545
|
-
content
|
|
546
|
-
`원인: \`${worktreeProvision.reason || 'unknown error'}\`${detailLine}${pathLine}\n\n` +
|
|
547
|
-
`repository resource, credential과 working_dir 아래 AWB 관리 폴더(\`.awb/base\`, \`.awb/wt\`)를 확인한 뒤 다시 트리거하세요.\n\n` +
|
|
548
|
-
`_동일 오류로 인한 supervisor 자동 재트리거는 백오프로 억제됩니다 — 환경을 고친 뒤 코멘트/수동 트리거로 재개하세요._`,
|
|
634
|
+
content,
|
|
549
635
|
});
|
|
550
636
|
}
|
|
551
637
|
if (ev.ticket_id && provisionBlock.shouldPend) {
|
|
@@ -561,6 +647,7 @@ export class EventDispatcher {
|
|
|
561
647
|
log(`[worktree] durable provisioning block — pended ticket=${ev.ticket_id} role=${ev.action} blocker=${blockerKind} aborts=${provisionBlock.count}`);
|
|
562
648
|
}
|
|
563
649
|
log(`Trigger aborted — ticket worktree verification failed: ticket=${ev.ticket_id} role=${ev.action} reason=${worktreeProvision.reason || 'unknown'} blocker=${blockerKind}${worktreeProvision.path ? ` path=${worktreeProvision.path}` : ''}`);
|
|
650
|
+
this.#ackDispatch(ev, 'nack', blockerKind);
|
|
564
651
|
return;
|
|
565
652
|
}
|
|
566
653
|
if (ev.action === 'assignee'
|
|
@@ -568,6 +655,7 @@ export class EventDispatcher {
|
|
|
568
655
|
const readiness = await this.#worktreeManager.verifyPushReadiness(agentContext.cwd, selectedRepo.url);
|
|
569
656
|
if (!readiness.ok) {
|
|
570
657
|
const blockerKind = readiness.reason || 'push_credential_unavailable';
|
|
658
|
+
this.#dispatchBlockTracker.record(blockerKind);
|
|
571
659
|
const provisionBlock = this.#spawnSuppressor.note(ev.ticket_id, ev.action, blockerKind, Date.now());
|
|
572
660
|
if (this.#dispatchBlockers.shouldComment(ev.ticket_id, blockerKind)) {
|
|
573
661
|
await fireAndForgetTool(this.#config, 'add_comment', {
|
|
@@ -592,12 +680,14 @@ export class EventDispatcher {
|
|
|
592
680
|
log(`[push-credential] durable provisioning block — pended ticket=${ev.ticket_id} role=${ev.action} blocker=${blockerKind} aborts=${provisionBlock.count}`);
|
|
593
681
|
}
|
|
594
682
|
log(`Trigger aborted — push credential unavailable: ticket=${ev.ticket_id} detail=${readiness.detail || ''}`);
|
|
683
|
+
this.#ackDispatch(ev, 'nack', blockerKind);
|
|
595
684
|
return;
|
|
596
685
|
}
|
|
597
686
|
}
|
|
598
687
|
if (ev.ticket_id) {
|
|
599
688
|
this.#dispatchBlockers.clear(ev.ticket_id);
|
|
600
689
|
this.#spawnSuppressor.clear(ev.ticket_id, ev.action);
|
|
690
|
+
this.#poolRetry.resolve({ ticketId: ev.ticket_id, role: ev.action || '', agentId: ev.actor_name || '' });
|
|
601
691
|
}
|
|
602
692
|
if (ev.worktree_rel_path && ev.column_prompt && typeof ev.column_prompt.content === 'string') {
|
|
603
693
|
const workFolder = agentContext?.cwd || ev.worktree_rel_path;
|
|
@@ -652,6 +742,7 @@ export class EventDispatcher {
|
|
|
652
742
|
});
|
|
653
743
|
if (result.dispatched) {
|
|
654
744
|
log(`Trigger dispatched to ticket session: ticket=${ev.ticket_id} pid=${result.pid}${result.firstTurn ? ' (new session)' : ''}`);
|
|
745
|
+
this.#ackDispatch(ev, 'processed');
|
|
655
746
|
return;
|
|
656
747
|
}
|
|
657
748
|
if (result.reason === 'duplicate_trigger') {
|
|
@@ -696,6 +787,7 @@ export class EventDispatcher {
|
|
|
696
787
|
});
|
|
697
788
|
if (result.spawned) {
|
|
698
789
|
log(`Trigger dispatched to subagent: ticket=${ev.ticket_id} pid=${result.pid}${agentContext ? ` agent=${agentContext.agent_id.slice(0, 8)}` : ''}`);
|
|
790
|
+
this.#ackDispatch(ev, 'processed');
|
|
699
791
|
return;
|
|
700
792
|
}
|
|
701
793
|
log(`Subagent spawn declined (${result.reason}); no further fallback in standalone mode`);
|
|
@@ -706,6 +798,15 @@ export class EventDispatcher {
|
|
|
706
798
|
}
|
|
707
799
|
log(`Trigger processed (no delegation path spawned): ticket=${ev.ticket_id} role=${ev.action}`);
|
|
708
800
|
}
|
|
801
|
+
#ackDispatch(ev, outcome, reason) {
|
|
802
|
+
void postDispatchAck(this.#config, {
|
|
803
|
+
ticket_id: String(ev?.ticket_id || ''),
|
|
804
|
+
role: String(ev?.action || ''),
|
|
805
|
+
trigger_id: String(ev?.field_changed || ''),
|
|
806
|
+
outcome,
|
|
807
|
+
reason: reason ? String(reason).slice(0, 500) : '',
|
|
808
|
+
});
|
|
809
|
+
}
|
|
709
810
|
async handleChatRequest(raw) {
|
|
710
811
|
let ev;
|
|
711
812
|
try {
|
|
@@ -855,9 +956,11 @@ export class EventDispatcher {
|
|
|
855
956
|
try {
|
|
856
957
|
const ev = JSON.parse(raw);
|
|
857
958
|
if (ev.entity_type === 'ticket' && ev.action === 'moved' && ev.ticket_id) {
|
|
959
|
+
this.#poolRetry.cancelByTicket(ev.ticket_id, 'ticket moved');
|
|
858
960
|
void this.#cleanupTerminalTicketWorktrees(ev.ticket_id);
|
|
859
961
|
}
|
|
860
962
|
if (ev.entity_type === 'ticket' && ev.action === 'archived' && ev.ticket_id) {
|
|
963
|
+
this.#poolRetry.cancelByTicket(ev.ticket_id, 'ticket archived');
|
|
861
964
|
void this.#cleanupArchivedTicketWorkspace(ev.ticket_id, ev.repository_resource_id);
|
|
862
965
|
}
|
|
863
966
|
if (this.#ticketSessionManager && ev.ticket_id) {
|