@agent-relay/factory 0.1.51 → 0.1.52
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/orchestrator/factory.d.ts.map +1 -1
- package/dist/orchestrator/factory.js +45 -4
- package/dist/orchestrator/factory.js.map +1 -1
- package/dist/orchestrator/failure-classifier.d.ts +13 -0
- package/dist/orchestrator/failure-classifier.d.ts.map +1 -0
- package/dist/orchestrator/failure-classifier.js +14 -0
- package/dist/orchestrator/failure-classifier.js.map +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/orchestrator/factory.ts"],"names":[],"mappings":"AAIA,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAK1E,OAAO,KAAK,EAMV,WAAW,EASX,WAAW,EAMZ,MAAM,UAAU,CAAA;AAkCjB,OAAO,KAAK,EACV,cAAc,EACd,OAAO,EACP,mBAAmB,EACnB,YAAY,EACZ,aAAa,EACb,mBAAmB,EAEnB,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EAGnB,QAAQ,EACR,eAAe,EACf,WAAW,EAGX,cAAc,EAEf,MAAM,UAAU,CAAA;AA4BjB,KAAK,YAAY,GAAG,cAAc,GAAG,YAAY,GAAG,YAAY,GAAG,oBAAoB,GAAG,OAAO,CAAA;AACjG,KAAK,QAAQ,GAAG,CAAC,OAAO,EAAE,mBAAmB,KAAK,IAAI,CAAA;AAgGtD,KAAK,iBAAiB,GAAG;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC7B,CAAA;AAoHD,eAAO,MAAM,mCAAmC,iDAAiD,CAAA;AACjG,eAAO,MAAM,kCAAkC,gDAAgD,CAAA;AAa/F,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAEjF;AAED,qBAAa,WAAY,YAAW,OAAO;;gBAiL7B,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,YAAY;IA6IhD,uBAAuB,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAiEvD,KAAK,CAAC,IAAI,GAAE,mBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC;IA2HpD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA2JrB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA8mBxB,OAAO,CAAC,IAAI,GAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,OAAO,CAAC,eAAe,CAAC;IAkoBlE,OAAO,CAAC,IAAI,GAAE,qBAA0B,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAyDrE,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC;IAOxD,QAAQ,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,GAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,eAAe,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,OAAO,CAAC,cAAc,CAAC;IAoZ7H,MAAM,IAAI,aAAa;IAiBvB,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,GAAG,MAAM,IAAI;
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/orchestrator/factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -3129,13 +3129,54 @@ export class FactoryLoop {
|
|
|
3129
3129
|
}
|
|
3130
3130
|
}
|
|
3131
3131
|
if (acquiredNow && lifecycle.phase === 'running') {
|
|
3132
|
-
|
|
3133
|
-
|
|
3132
|
+
const activeAgents = lifecycle.agents.filter((agent) => agent.releasedAtMs === undefined);
|
|
3133
|
+
if (this.#fleet.hydrateTracked && activeAgents.length > 0) {
|
|
3134
|
+
const hydrated = activeAgents.map((agent) => ({
|
|
3134
3135
|
name: agent.name,
|
|
3135
3136
|
invocationId: agent.tracked.spec.invocationId,
|
|
3136
3137
|
node: agent.tracked.result?.node,
|
|
3137
|
-
}))
|
|
3138
|
-
|
|
3138
|
+
}));
|
|
3139
|
+
this.#fleet.hydrateTracked(hydrated);
|
|
3140
|
+
try {
|
|
3141
|
+
await this.#fleet.reconcileTrackedAgents?.();
|
|
3142
|
+
const online = new Set((await this.#fleet.roster()).agents.map((agent) => agent.name));
|
|
3143
|
+
const fleetTracked = this.#fleet.trackedAgents?.();
|
|
3144
|
+
const missing = activeAgents.filter((agent) => (!online.has(agent.name) || (fleetTracked !== undefined && !fleetTracked.has(agent.name))) &&
|
|
3145
|
+
!this.#agentExitsInFlight.has(agent.name));
|
|
3146
|
+
missing.sort((left, right) => {
|
|
3147
|
+
const priority = (role) => role === 'implementer' ? 0 : role === 'babysitter' ? 1 : 2;
|
|
3148
|
+
return priority(left.tracked.spec.role) - priority(right.tracked.spec.role) ||
|
|
3149
|
+
left.name.localeCompare(right.name);
|
|
3150
|
+
});
|
|
3151
|
+
for (const agent of missing) {
|
|
3152
|
+
this.#fleet.markAgentTerminal?.(agent.name, 'reconciled-missing');
|
|
3153
|
+
this.#queueAgentExit(agent.name, 'reconciled-missing');
|
|
3154
|
+
}
|
|
3155
|
+
if (missing.length > 0) {
|
|
3156
|
+
this.#increment('takeoverRosterMissingExitsSynthesized', missing.length);
|
|
3157
|
+
this.#logger.info?.('[factory] synthesized missing durable takeover roster exits', {
|
|
3158
|
+
issue: lifecycle.issue.key,
|
|
3159
|
+
agents: missing.map((agent) => agent.name),
|
|
3160
|
+
});
|
|
3161
|
+
}
|
|
3162
|
+
const exitNames = new Set(activeAgents.map((agent) => agent.name));
|
|
3163
|
+
const drained = await this.#drainAgentExitsInFlight(exitNames, this.#startMode === 'live' ? this.#startupAgentExitDrainTimeoutMs : undefined);
|
|
3164
|
+
if (!drained) {
|
|
3165
|
+
this.#increment('takeoverAgentExitDrainTimeouts');
|
|
3166
|
+
this.#logger.warn?.('[factory] durable takeover exit reconciliation is still running', {
|
|
3167
|
+
issue: lifecycle.issue.key,
|
|
3168
|
+
timeoutMs: this.#startupAgentExitDrainTimeoutMs,
|
|
3169
|
+
pendingExits: [...exitNames].filter((name) => this.#agentExitsInFlight.has(name)),
|
|
3170
|
+
});
|
|
3171
|
+
}
|
|
3172
|
+
}
|
|
3173
|
+
catch (error) {
|
|
3174
|
+
// Force the retry path back through takeover reconciliation. Keeping
|
|
3175
|
+
// the epoch cached here would turn the next drive into an ordinary
|
|
3176
|
+
// running lifecycle and permanently skip the authoritative roster.
|
|
3177
|
+
this.#dispatchLifecycleEpochs.delete(key);
|
|
3178
|
+
throw error;
|
|
3179
|
+
}
|
|
3139
3180
|
}
|
|
3140
3181
|
if (this.#config.babysitter.enabled)
|
|
3141
3182
|
await this.#reconcileRestoredBabysitterReceipts(record);
|