@automatalabs/acp-agents 0.34.11 → 0.34.12
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/acp-client.d.ts +12 -4
- package/dist/acp-client.d.ts.map +1 -1
- package/dist/acp-client.js +38 -12
- package/dist/backends/opencode.d.ts.map +1 -1
- package/dist/backends/opencode.js +46 -1
- package/dist/pool.d.ts +28 -4
- package/dist/pool.d.ts.map +1 -1
- package/dist/pool.js +99 -15
- package/dist/runner.d.ts +0 -6
- package/dist/runner.d.ts.map +1 -1
- package/dist/runner.js +34 -73
- package/package.json +3 -3
package/dist/acp-client.d.ts
CHANGED
|
@@ -201,6 +201,8 @@ export declare class PooledConnection {
|
|
|
201
201
|
private negotiated;
|
|
202
202
|
private _alive;
|
|
203
203
|
private _activeSessions;
|
|
204
|
+
/** Synchronous process-exclusive reservation for one injected StructuredOutput run. */
|
|
205
|
+
private _injectedRunReserved;
|
|
204
206
|
private stderrTail;
|
|
205
207
|
/**
|
|
206
208
|
* Detached commands can outlive an ACP parent's graceful exit. Capture their identities before
|
|
@@ -213,6 +215,11 @@ export declare class PooledConnection {
|
|
|
213
215
|
static create(backend: Backend, deps: PooledConnectionDeps): PooledConnection;
|
|
214
216
|
get alive(): boolean;
|
|
215
217
|
get activeSessions(): number;
|
|
218
|
+
get injectedRunReserved(): boolean;
|
|
219
|
+
/** Reserve this process for one injected run. Selection calls this without awaiting. */
|
|
220
|
+
tryReserveInjectedRun(): boolean;
|
|
221
|
+
/** Release the injected reservation after the owning session release has settled. */
|
|
222
|
+
releaseInjectedRun(): void;
|
|
216
223
|
/** The capabilities negotiated on this connection's one-time initialize handshake, or undefined
|
|
217
224
|
* until it completes — derived-state-behind-a-getter, like `alive`/`activeSessions`. */
|
|
218
225
|
get capabilities(): NegotiatedCapabilities | undefined;
|
|
@@ -278,13 +285,13 @@ export declare class PooledConnection {
|
|
|
278
285
|
* accumulator for routing, and return a SessionHandle. `activeSessions` is reserved
|
|
279
286
|
* synchronously (before the first await) so the pool's load accounting is race-free.
|
|
280
287
|
*/
|
|
281
|
-
openSession(opts: AcpSessionOptions): Promise<SessionHandle>;
|
|
288
|
+
openSession(opts: AcpSessionOptions, onReleased?: () => void): Promise<SessionHandle>;
|
|
282
289
|
/** Reserve a session slot before initialize, then let the caller shape session/new with
|
|
283
290
|
* negotiated capabilities in hand. */
|
|
284
|
-
openPreparedSession(prepare: (connection: PooledConnection) => AcpSessionOptions | Promise<AcpSessionOptions
|
|
291
|
+
openPreparedSession(prepare: (connection: PooledConnection) => AcpSessionOptions | Promise<AcpSessionOptions>, onReleased?: () => void): Promise<SessionHandle>;
|
|
285
292
|
/** Reserve one connection slot, await initialize, choose the best currently-advertised reopen
|
|
286
293
|
* method, prepare against that same ready connection, and reattach under the single reservation. */
|
|
287
|
-
openPreparedReattachedSession(sessionId: string, prepare: (connection: PooledConnection) => AcpSessionOptions | Promise<AcpSessionOptions
|
|
294
|
+
openPreparedReattachedSession(sessionId: string, prepare: (connection: PooledConnection) => AcpSessionOptions | Promise<AcpSessionOptions>, onReleased?: () => void): Promise<{
|
|
288
295
|
handle: SessionHandle;
|
|
289
296
|
method: "resume" | "load";
|
|
290
297
|
}>;
|
|
@@ -369,6 +376,7 @@ export declare class SessionHandle implements StructuredSource {
|
|
|
369
376
|
readonly sessionId: string;
|
|
370
377
|
private readonly state;
|
|
371
378
|
private readonly opts;
|
|
379
|
+
private readonly onReleased?;
|
|
372
380
|
private configOptions;
|
|
373
381
|
private removeAbort;
|
|
374
382
|
private releasePromise;
|
|
@@ -376,7 +384,7 @@ export declare class SessionHandle implements StructuredSource {
|
|
|
376
384
|
private activeTurn;
|
|
377
385
|
private resolveReleaseStarted;
|
|
378
386
|
private readonly releaseStarted;
|
|
379
|
-
constructor(pooled: PooledConnection, sessionId: string, state: SessionState, configOptions: SessionConfigOption[], opts: AcpSessionOptions);
|
|
387
|
+
constructor(pooled: PooledConnection, sessionId: string, state: SessionState, configOptions: SessionConfigOption[], opts: AcpSessionOptions, onReleased?: (() => void) | undefined);
|
|
380
388
|
/** Per-session usage accumulator (read by the runner on BOTH success and error paths). */
|
|
381
389
|
get usage(): UsageAccumulator;
|
|
382
390
|
/** Structured provider metadata observed before the current prompt rejected. */
|
package/dist/acp-client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acp-client.d.ts","sourceRoot":"","sources":["../src/acp-client.ts"],"names":[],"mappings":"AAyBA,OAAO,EAOL,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,UAAU,EAQf,KAAK,yBAAyB,EAC9B,KAAK,YAAY,EACjB,KAAK,uBAAuB,EAC5B,KAAK,+BAA+B,EACpC,KAAK,kBAAkB,EACvB,KAAK,0BAA0B,EAC/B,KAAK,6BAA6B,EAGlC,KAAK,oBAAoB,EAEzB,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAK5B,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAG1B,KAAK,aAAa,EAClB,KAAK,cAAc,EAMnB,KAAK,aAAa,EAClB,KAAK,cAAc,EAMnB,KAAK,yBAAyB,EAG9B,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EAGxB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,6BAA6B,EAClC,KAAK,8BAA8B,EACnC,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAO5B,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAIL,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACrB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChG,OAAO,EAQL,KAAK,sBAAsB,EAC5B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAA2C,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AACzF,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,UAAU,EAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAIL,KAAK,cAAc,EAEpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAczD,iGAAiG;AACjG,eAAO,MAAM,2BAA2B,OAAQ,CAAC;AACjD,eAAO,MAAM,4BAA4B,OAAQ,CAAC;AAClD,eAAO,MAAM,2BAA2B,OAAQ,CAAC;AACjD,eAAO,MAAM,2BAA2B,QAA6D,CAAC;AAGtG,eAAO,MAAM,+BAA+B,QAAS,CAAC;AACtD,eAAO,MAAM,yBAAyB,OAAQ,CAAC;AAC/C,eAAO,MAAM,2BAA2B,QAA8D,CAAC;AASvG,UAAU,gBAAgB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AA6HD;8FAC8F;AAC9F,cAAM,YAAY;IAiBd,QAAQ,CAAC,GAAG,EAAE,MAAM;IACpB,QAAQ,CAAC,MAAM,EAAE,UAAU;IAC3B,QAAQ,CAAC,kBAAkB,CAAC,EAAE,kBAAkB;IAChD,QAAQ,CAAC,mBAAmB,CAAC,EAAE,mBAAmB;IAClD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM;IACvB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM;IAC3B,QAAQ,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE3D,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE;IACxC,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IA1BnC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,CAAM;IACnC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,EAAE,CAAM;IAC3C,QAAQ,CAAC,KAAK,mBAA0B;IACxC,QAAQ,CAAC,kBAAkB,gBAAqB,yBAAyB,KAAK,IAAI,EAAI;IACtF,QAAQ,CAAC,mBAAmB,gBAAqB,yBAAyB,KAAK,IAAI,EAAI;IACvF,QAAQ,CAAC,iBAAiB,cAAqB;IAC/C,QAAQ,CAAC,gBAAgB,cAA8B;IACvD,gBAAgB,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAC/C,qBAAqB,EAAE,qBAAqB,GAAG,SAAS,CAAC;IACzD,KAAK,EAAE,gBAAgB,GAAG,IAAI,GAAG,SAAS,CAAC;IAC3C,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,sBAAsB,CAAK;IAEnC;6EACyE;gBAE9D,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,UAAU,EAClB,kBAAkB,CAAC,EAAE,kBAAkB,YAAA,EACvC,mBAAmB,CAAC,EAAE,mBAAmB,YAAA,EACzC,KAAK,CAAC,EAAE,MAAM,YAAA,EACd,KAAK,CAAC,EAAE,MAAM,YAAA,EACd,SAAS,CAAC,EAAE,MAAM,YAAA,EAClB,cAAc,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,YAAA,EAC3D,KAAK,CAAC,EAAE,gBAAgB,GAAG,IAAI,EACtB,YAAY,GAAE,SAAS,MAAM,EAAO,EAC5B,gBAAgB,UAAO;IAK1C;;;2DAGuD;IACvD,SAAS,IAAI,IAAI;IAajB,eAAe,IAAI,MAAM;IAIzB;;;oFAGgF;IAChF,gBAAgB,IAAI,MAAM;IAI1B,WAAW,CAAC,MAAM,EAAE,mBAAmB,CAAC,QAAQ,CAAC,GAAG,IAAI;IAuDxD,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,SAAS,GAAG,IAAI;IAM5D;mFAC+E;IAC/E,wBAAwB,IAAI,IAAI;IAIhC;8DAC0D;IAC1D,yBAAyB,IAAI,IAAI;CAGlC;AAshBD;8FAC8F;AAC9F,qBAAa,6BAA8B,SAAQ,KAAK;IAEpD,QAAQ,CAAC,SAAS,EAAE,SAAS;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM;gBADjB,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,MAAM;CAQ7B;AAyFD,MAAM,WAAW,iBAAiB;IAChC,2EAA2E;IAC3E,GAAG,EAAE,MAAM,CAAC;IACZ,qFAAqF;IACrF,MAAM,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5B,MAAM,EAAE,UAAU,CAAC;IACnB;mFAC+E;IAC/E,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC;4FACwF;IACxF,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,2FAA2F;IAC3F,UAAU,CAAC,EAAE,eAAe,EAAE,CAAC;IAC/B;;4FAEwF;IACxF,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B;oGACgG;IAChG,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2FAA2F;IAC3F,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+FAA+F;IAC/F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;oGACgG;IAChG,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B;;;sDAGkD;IAClD,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,qFAAqF;AACrF,MAAM,WAAW,oBAAoB;IACnC,MAAM,CAAC,UAAU,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC3C;;iFAE6E;IAC7E,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,6FAA6F;IAC7F,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,+FAA+F;IAC/F,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C;qFACiF;IACjF,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;mGAC+F;IAC/F,gBAAgB,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IAC7D;;;8FAG0F;IAC1F,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB;;;uGAGmG;IACnG,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,oFAAoF;IACpF,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,8EAA8E;IAC9E,YAAY,CAAC,EAAE;QACb,GAAG,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE,EAAE,EAAE,MAAM,GAAG;YAAE,KAAK,CAAC,IAAI,IAAI,CAAA;SAAE,CAAC;QAC1D,KAAK,CAAC,KAAK,EAAE;YAAE,KAAK,CAAC,IAAI,IAAI,CAAA;SAAE,GAAG,IAAI,CAAC;KACxC,CAAC;CACH;AAWD;;;;GAIG;AACH,qBAAa,gBAAgB;IAC3B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,yFAAyF;IACzF,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAsC;IACzD;8DAC0D;IAC1D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAmB;IAE9C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyC;IAChE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2B;IACnD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA6B;IAC5D,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAU;IAC/C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAwD;IACzF,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAwB;IAClD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA4B;IAC1D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAoD;IACjF;iGAC6F;IAC7F,SAAS,EAAE,mBAAmB,CAAyE;IACvG;;mFAE+E;IAC/E,aAAa,SAAK;IAClB;+FAC2F;IAC3F,cAAc,UAAS;IACvB,oGAAoG;IACpG,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,cAAc,CAA4B;IAClD,mFAAmF;IACnF,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgB;IACtC,0FAA0F;IAC1F,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgB;IACzC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,UAAU,CAAoB;IAEtC,kGAAkG;IAClG,OAAO,CAAC,UAAU,CAAqC;IACvD,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,UAAU,CAAM;IACxB;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAsC;IAE1E,OAAO;IA0HP;kDAC8C;IAC9C,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,oBAAoB,GAAG,gBAAgB;IAI7E,IAAI,KAAK,IAAI,OAAO,CAEnB;IAED,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED;6FACyF;IACzF,IAAI,YAAY,IAAI,sBAAsB,GAAG,SAAS,CAErD;IAED;4FACwF;IACxF,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS;IAI9F,OAAO,CAAC,yBAAyB;IAuBjC,OAAO,CAAC,kBAAkB;IAgB1B,OAAO,CAAC,wBAAwB;IAiBhC,OAAO,CAAC,2BAA2B;IAanC,yFAAyF;IACzF,OAAO,CAAC,GAAG;IAkBX,OAAO,CAAC,YAAY;IAOpB;+FAC2F;IAC3F,OAAO,CAAC,WAAW;IAInB;;;;;;wFAMoF;IACpF,OAAO,CAAC,yBAAyB;IAQjC,iFAAiF;IACjF,OAAO,CAAC,YAAY;IAIpB;sFACkF;IAClF,cAAc,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO;IAIpD;;oEAEgE;YAClD,eAAe;IAyB7B;sGACkG;IAC5F,kBAAkB,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC;IAOvE;wFACoF;IACpF,eAAe,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI;IAOlD;wEACoE;IACpE,sBAAsB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI;IAI1D;uDACmD;IAC7C,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;YAS3B,UAAU;IAuExB;;;;;;;;;;;;mGAY+F;YACjF,oBAAoB;IA+BlC;;;;OAIG;IACG,WAAW,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,aAAa,CAAC;IAWlE;2CACuC;IACjC,mBAAmB,CACvB,OAAO,EAAE,CAAC,UAAU,EAAE,gBAAgB,KAAK,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,GACxF,OAAO,CAAC,aAAa,CAAC;IAYzB;wGACoG;IAC9F,6BAA6B,CACjC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,CAAC,UAAU,EAAE,gBAAgB,KAAK,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,GACxF,OAAO,CAAC;QAAE,MAAM,EAAE,aAAa,CAAC;QAAC,MAAM,EAAE,QAAQ,GAAG,MAAM,CAAA;KAAE,CAAC;YAwBlD,gBAAgB;IAsC9B,gGAAgG;IAChG,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,aAAa,CAAC;IAI/E,4DAA4D;IAC5D,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,aAAa,CAAC;IAIjF,+FAA+F;IACzF,WAAW,CAAC,eAAe,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,aAAa,CAAC;IAgD3F,OAAO,CAAC,eAAe;YAST,eAAe;IAc7B,gEAAgE;YAClD,oBAAoB;IA0DlC,qFAAqF;IAC/E,YAAY,CAAC,OAAO,EAAE,mBAAmB,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAM/F,uFAAuF;IACjF,aAAa,CAAC,OAAO,EAAE,oBAAoB,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQjF,4FAA4F;IACtF,WAAW,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAK1C,sGAAsG;IAChG,YAAY,CAAC,OAAO,EAAE,mBAAmB,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;IAatG,+FAA+F;IACzF,aAAa,CAAC,OAAO,EAAE,oBAAoB,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAclG,8FAA8F;IACxF,WAAW,CAAC,OAAO,EAAE,kBAAkB,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAcnG,kGAAkG;IAC5F,eAAe,CAAC,OAAO,EAAE,sBAAsB,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAAC;IAgB/G,gFAAgF;IAC1E,MAAM,CAAC,OAAO,EAAE,aAAa,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAWpF,sEAAsE;IACtE,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC;IAIvD,iFAAiF;IACjF,sBAAsB,CAAC,OAAO,EAAE,6BAA6B,GAAG,OAAO,CAAC,8BAA8B,CAAC;IAIvG,wEAAwE;IACxE,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAI/E;;;4DAGwD;IACxD,OAAO,CAAC,MAAM,SAAS,kBAAkB,EACvC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,0BAA0B,CAAC,MAAM,CAAC,EAC1C,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,6BAA6B,CAAC,MAAM,CAAC,CAAC;IACjD,OAAO,CAAC,QAAQ,GAAG,OAAO,EAAE,MAAM,GAAG,OAAO,EAC1C,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,QAAQ,CAAC;IAMpB;kGAC8F;IAC9F,MAAM,CAAC,MAAM,SAAS,uBAAuB,EAC3C,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,+BAA+B,CAAC,MAAM,CAAC,GAC9C,OAAO,CAAC,IAAI,CAAC;IAChB,MAAM,CAAC,MAAM,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKxE,6FAA6F;IACvF,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWrD;oGACgG;IAChG,4BAA4B,IAAI,IAAI;IAOpC;;;;OAIG;IACG,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IA4BxE,+EAA+E;IAC/E,OAAO,CAAC,iBAAiB;IAUzB,iGAAiG;IACjG,OAAO,CAAC,uBAAuB;IAW/B,mGAAmG;YACrF,0BAA0B;IAMxC;;;;OAIG;IACH,OAAO,IAAI,IAAI;IA+Bf,8FAA8F;IAC9F,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;YAKV,YAAY;CA+B3B;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAK3D;AAUD;;;;GAIG;AACH,qBAAa,aAAc,YAAW,gBAAgB;IAYlD,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM;IAC1B,OAAO,CAAC,QAAQ,CAAC,KAAK;IAEtB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAfvB,OAAO,CAAC,aAAa,CAAwB;IAC7C,OAAO,CAAC,WAAW,CAA2B;IAC9C,OAAO,CAAC,cAAc,CAA4B;IAClD,OAAO,CAAC,iBAAiB,CAA4B;IACrD,OAAO,CAAC,UAAU,CAAyB;IAC3C,OAAO,CAAC,qBAAqB,CAAc;IAC3C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAE5B;gBAGgB,MAAM,EAAE,gBAAgB,EAChC,SAAS,EAAE,MAAM,EACT,KAAK,EAAE,YAAY,EACpC,aAAa,EAAE,mBAAmB,EAAE,EACnB,IAAI,EAAE,iBAAiB;IAmB1C,0FAA0F;IAC1F,IAAI,KAAK,IAAI,gBAAgB,CAE5B;IAED,gFAAgF;IAChF,IAAI,qBAAqB,IAAI,qBAAqB,GAAG,SAAS,CAE7D;IAED,6EAA6E;IAC7E,IAAI,OAAO,IAAI,iBAAiB,EAAE,CAEjC;IAED,kEAAkE;IAClE,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,0FAA0F;IAC1F,IAAI,KAAK,IAAI,gBAAgB,GAAG,IAAI,GAAG,SAAS,CAE/C;IAED,sFAAsF;IACtF,IAAI,YAAY,IAAI,sBAAsB,GAAG,SAAS,CAErD;IAED,4FAA4F;IAC5F,IAAI,cAAc,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,CAElE;IAED,qFAAqF;IACrF,IAAI,uBAAuB,IAAI,mBAAmB,EAAE,CAEnD;IAED,oGAAoG;IAC9F,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9C,uFAAuF;IACjF,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAM5F;;6EAEyE;YAC3D,iBAAiB;IAS/B,oFAAoF;IAC9E,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA8B5C,yEAAyE;IACnE,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,EAAE,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC;IAiC7G,2DAA2D;IAC3D,eAAe,IAAI,MAAM;IAIzB,uFAAuF;IACvF,gBAAgB,IAAI,MAAM;IAI1B,qFAAqF;IACrF,mBAAmB,IAAI,OAAO;IAI9B;oFACgF;IAC1E,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAS7B,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,UAAU;YAKJ,iBAAiB;IAO/B;;sFAEkF;IAClF,OAAO,CAAC,OAAO,GAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,OAAO,CAAC,IAAI,CAAC;YAK9C,YAAY;CAM3B"}
|
|
1
|
+
{"version":3,"file":"acp-client.d.ts","sourceRoot":"","sources":["../src/acp-client.ts"],"names":[],"mappings":"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"}
|
package/dist/acp-client.js
CHANGED
|
@@ -893,6 +893,8 @@ export class PooledConnection {
|
|
|
893
893
|
negotiated;
|
|
894
894
|
_alive = true;
|
|
895
895
|
_activeSessions = 0;
|
|
896
|
+
/** Synchronous process-exclusive reservation for one injected StructuredOutput run. */
|
|
897
|
+
_injectedRunReserved = false;
|
|
896
898
|
stderrTail = "";
|
|
897
899
|
/**
|
|
898
900
|
* Detached commands can outlive an ACP parent's graceful exit. Capture their identities before
|
|
@@ -1002,6 +1004,20 @@ export class PooledConnection {
|
|
|
1002
1004
|
get activeSessions() {
|
|
1003
1005
|
return this._activeSessions;
|
|
1004
1006
|
}
|
|
1007
|
+
get injectedRunReserved() {
|
|
1008
|
+
return this._injectedRunReserved;
|
|
1009
|
+
}
|
|
1010
|
+
/** Reserve this process for one injected run. Selection calls this without awaiting. */
|
|
1011
|
+
tryReserveInjectedRun() {
|
|
1012
|
+
if (this._injectedRunReserved)
|
|
1013
|
+
return false;
|
|
1014
|
+
this._injectedRunReserved = true;
|
|
1015
|
+
return true;
|
|
1016
|
+
}
|
|
1017
|
+
/** Release the injected reservation after the owning session release has settled. */
|
|
1018
|
+
releaseInjectedRun() {
|
|
1019
|
+
this._injectedRunReserved = false;
|
|
1020
|
+
}
|
|
1005
1021
|
/** The capabilities negotiated on this connection's one-time initialize handshake, or undefined
|
|
1006
1022
|
* until it completes — derived-state-behind-a-getter, like `alive`/`activeSessions`. */
|
|
1007
1023
|
get capabilities() {
|
|
@@ -1284,34 +1300,36 @@ export class PooledConnection {
|
|
|
1284
1300
|
* accumulator for routing, and return a SessionHandle. `activeSessions` is reserved
|
|
1285
1301
|
* synchronously (before the first await) so the pool's load accounting is race-free.
|
|
1286
1302
|
*/
|
|
1287
|
-
async openSession(opts) {
|
|
1303
|
+
async openSession(opts, onReleased) {
|
|
1288
1304
|
this._activeSessions += 1;
|
|
1289
1305
|
try {
|
|
1290
1306
|
await this.ready;
|
|
1291
|
-
return await this.openReadySession(opts);
|
|
1307
|
+
return await this.openReadySession(opts, onReleased);
|
|
1292
1308
|
}
|
|
1293
1309
|
catch (error) {
|
|
1294
1310
|
this._activeSessions -= 1;
|
|
1311
|
+
onReleased?.();
|
|
1295
1312
|
throw error;
|
|
1296
1313
|
}
|
|
1297
1314
|
}
|
|
1298
1315
|
/** Reserve a session slot before initialize, then let the caller shape session/new with
|
|
1299
1316
|
* negotiated capabilities in hand. */
|
|
1300
|
-
async openPreparedSession(prepare) {
|
|
1317
|
+
async openPreparedSession(prepare, onReleased) {
|
|
1301
1318
|
this._activeSessions += 1;
|
|
1302
1319
|
try {
|
|
1303
1320
|
await this.ready;
|
|
1304
1321
|
const opts = await prepare(this);
|
|
1305
|
-
return await this.openReadySession(opts);
|
|
1322
|
+
return await this.openReadySession(opts, onReleased);
|
|
1306
1323
|
}
|
|
1307
1324
|
catch (error) {
|
|
1308
1325
|
this._activeSessions -= 1;
|
|
1326
|
+
onReleased?.();
|
|
1309
1327
|
throw error;
|
|
1310
1328
|
}
|
|
1311
1329
|
}
|
|
1312
1330
|
/** Reserve one connection slot, await initialize, choose the best currently-advertised reopen
|
|
1313
1331
|
* method, prepare against that same ready connection, and reattach under the single reservation. */
|
|
1314
|
-
async openPreparedReattachedSession(sessionId, prepare) {
|
|
1332
|
+
async openPreparedReattachedSession(sessionId, prepare, onReleased) {
|
|
1315
1333
|
this._activeSessions += 1;
|
|
1316
1334
|
try {
|
|
1317
1335
|
await this.ready;
|
|
@@ -1324,15 +1342,16 @@ export class PooledConnection {
|
|
|
1324
1342
|
if (method === undefined)
|
|
1325
1343
|
throw new ReattachCapabilityUnavailable(this.backendId, sessionId);
|
|
1326
1344
|
const opts = await prepare(this);
|
|
1327
|
-
const handle = await this.reattachReadySession(method === "resume" ? AGENT_METHODS.session_resume : AGENT_METHODS.session_load, sessionId, opts);
|
|
1345
|
+
const handle = await this.reattachReadySession(method === "resume" ? AGENT_METHODS.session_resume : AGENT_METHODS.session_load, sessionId, opts, onReleased);
|
|
1328
1346
|
return { handle, method };
|
|
1329
1347
|
}
|
|
1330
1348
|
catch (error) {
|
|
1331
1349
|
this._activeSessions -= 1;
|
|
1350
|
+
onReleased?.();
|
|
1332
1351
|
throw error;
|
|
1333
1352
|
}
|
|
1334
1353
|
}
|
|
1335
|
-
async openReadySession(opts) {
|
|
1354
|
+
async openReadySession(opts, onReleased) {
|
|
1336
1355
|
// Capability gate: reject a client-provided MCP server whose transport the connected agent
|
|
1337
1356
|
// does not advertise (http/sse gated on mcpCapabilities; stdio is always serviceable).
|
|
1338
1357
|
// Fail-fast and non-recoverable — re-running the same incompatible transport can never
|
|
@@ -1355,7 +1374,7 @@ export class PooledConnection {
|
|
|
1355
1374
|
const initializeMeta = initializeMetaSnapshot(this.negotiated);
|
|
1356
1375
|
const state = new SessionState(opts.cwd, opts.policy, opts.permissionResolver, opts.elicitationResolver, opts.label, opts.runId, opts.callIndex, initializeMeta, response.modes, acpMcpServerIds(opts.mcpServers), opts.retainSessionLog ?? true);
|
|
1357
1376
|
this.client.register(response.sessionId, state);
|
|
1358
|
-
return new SessionHandle(this, response.sessionId, state, response.configOptions ?? [], opts);
|
|
1377
|
+
return new SessionHandle(this, response.sessionId, state, response.configOptions ?? [], opts, onReleased);
|
|
1359
1378
|
}
|
|
1360
1379
|
/** Reopen an existing session and replay its transcript through the router before resolving. */
|
|
1361
1380
|
loadSession(sessionId, opts) {
|
|
@@ -1418,7 +1437,7 @@ export class PooledConnection {
|
|
|
1418
1437
|
}
|
|
1419
1438
|
}
|
|
1420
1439
|
/** Reattach under a reservation already owned by the caller. */
|
|
1421
|
-
async reattachReadySession(method, sessionId, opts) {
|
|
1440
|
+
async reattachReadySession(method, sessionId, opts, onReleased) {
|
|
1422
1441
|
let registered = false;
|
|
1423
1442
|
try {
|
|
1424
1443
|
await this.ready;
|
|
@@ -1446,7 +1465,7 @@ export class PooledConnection {
|
|
|
1446
1465
|
response = await this.rawAgentRequest(AGENT_METHODS.session_resume, resumeRequest);
|
|
1447
1466
|
}
|
|
1448
1467
|
state.modes = response.modes;
|
|
1449
|
-
return new SessionHandle(this, sessionId, state, response.configOptions ?? [], opts);
|
|
1468
|
+
return new SessionHandle(this, sessionId, state, response.configOptions ?? [], opts, onReleased);
|
|
1450
1469
|
}
|
|
1451
1470
|
catch (error) {
|
|
1452
1471
|
if (registered)
|
|
@@ -1739,6 +1758,7 @@ export class SessionHandle {
|
|
|
1739
1758
|
sessionId;
|
|
1740
1759
|
state;
|
|
1741
1760
|
opts;
|
|
1761
|
+
onReleased;
|
|
1742
1762
|
configOptions;
|
|
1743
1763
|
removeAbort;
|
|
1744
1764
|
releasePromise;
|
|
@@ -1748,11 +1768,12 @@ export class SessionHandle {
|
|
|
1748
1768
|
releaseStarted = new Promise((resolve) => {
|
|
1749
1769
|
this.resolveReleaseStarted = resolve;
|
|
1750
1770
|
});
|
|
1751
|
-
constructor(pooled, sessionId, state, configOptions, opts) {
|
|
1771
|
+
constructor(pooled, sessionId, state, configOptions, opts, onReleased) {
|
|
1752
1772
|
this.pooled = pooled;
|
|
1753
1773
|
this.sessionId = sessionId;
|
|
1754
1774
|
this.state = state;
|
|
1755
1775
|
this.opts = opts;
|
|
1776
|
+
this.onReleased = onReleased;
|
|
1756
1777
|
this.configOptions = configOptions;
|
|
1757
1778
|
if (opts.signal) {
|
|
1758
1779
|
const signal = opts.signal;
|
|
@@ -1937,7 +1958,12 @@ export class SessionHandle {
|
|
|
1937
1958
|
this.resolveReleaseStarted();
|
|
1938
1959
|
this.removeAbort?.();
|
|
1939
1960
|
this.removeAbort = undefined;
|
|
1940
|
-
|
|
1961
|
+
try {
|
|
1962
|
+
await this.pooled.releaseSession(this.sessionId, keepOpen);
|
|
1963
|
+
}
|
|
1964
|
+
finally {
|
|
1965
|
+
this.onReleased?.();
|
|
1966
|
+
}
|
|
1941
1967
|
}
|
|
1942
1968
|
}
|
|
1943
1969
|
/** Resolve true when `op` settles before the grace period and false when the grace wins. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../../src/backends/opencode.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../../src/backends/opencode.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAEvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EACV,OAAO,EACP,2BAA2B,EAC3B,qBAAqB,EACrB,WAAW,EACX,gBAAgB,EACjB,MAAM,eAAe,CAAC;AAuCvB,6FAA6F;AAC7F,eAAO,MAAM,mBAAmB,EAAE,WAIjC,CAAC;AAEF,qBAAa,eAAgB,YAAW,OAAO;IAGjC,QAAQ,CAAC,WAAW,EAAE,WAAW;IAF7C,QAAQ,CAAC,EAAE,EAAG,UAAU,CAAU;gBAEb,WAAW,GAAE,WAAiC;IAEnE,QAAQ,CAAC,mBAAmB,QAAQ;IACpC,QAAQ,CAAC,0BAA0B,QAAQ;IAE3C,qBAAqB,CACnB,KAAK,EAAE,OAAO,EACd,QAAQ,CAAC,EAAE,qBAAqB,GAC/B,2BAA2B,GAAG,SAAS;IAW1C,WAAW,IAAI,WAAW;IAuB1B,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS;IAKlD,UAAU,CAAC,MAAM,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS;IAO5E,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO;CAKpD;AAED,eAAO,MAAM,yBAAyB,4DAmBpC,CAAC"}
|
|
@@ -2,6 +2,9 @@
|
|
|
2
2
|
// a native structured-output result channel and ignores request._meta today, so the backend uses
|
|
3
3
|
// the repo's generic schema dialect plus prompt embedding. When OpenCode advertises HTTP MCP, the
|
|
4
4
|
// runner can also inject the client-hosted StructuredOutput MCP tool.
|
|
5
|
+
import { randomUUID } from "node:crypto";
|
|
6
|
+
import { copyFileSync, existsSync, mkdirSync } from "node:fs";
|
|
7
|
+
import { homedir, tmpdir } from "node:os";
|
|
5
8
|
import { dirname, join } from "node:path";
|
|
6
9
|
import { createRequire } from "node:module";
|
|
7
10
|
import { META_KEYS } from "@automatalabs/shared-types";
|
|
@@ -11,6 +14,36 @@ import { toJsonSchema } from "../schema-strict.js";
|
|
|
11
14
|
import { parseFinalJson } from "../structured-output.js";
|
|
12
15
|
import { defineBuiltinBackend } from "./define.js";
|
|
13
16
|
const require = createRequire(import.meta.url);
|
|
17
|
+
/** Per-spawn OpenCode isolation env: fresh XDG data/state/cache trees seeded with the user's
|
|
18
|
+
* credentials, plus autoupdate off so a concurrent TUI upgrade never swaps state formats
|
|
19
|
+
* underneath a running server. Config (XDG_CONFIG_HOME) is deliberately NOT overridden. */
|
|
20
|
+
function isolatedOpenCodeEnv(base) {
|
|
21
|
+
const root = join(tmpdir(), `agentprism-opencode-${randomUUID()}`);
|
|
22
|
+
const dataHome = join(root, "data");
|
|
23
|
+
const dataDir = join(dataHome, "opencode");
|
|
24
|
+
const stateHome = join(root, "state");
|
|
25
|
+
const cacheHome = join(root, "cache");
|
|
26
|
+
mkdirSync(dataDir, { recursive: true });
|
|
27
|
+
mkdirSync(stateHome, { recursive: true });
|
|
28
|
+
mkdirSync(cacheHome, { recursive: true });
|
|
29
|
+
// Credentials live in the REAL data dir; seed them so the isolated instance authenticates.
|
|
30
|
+
// Refresh-token write-back stays in the isolated copy — re-auth churn is the accepted cost of
|
|
31
|
+
// not letting concurrent instances revoke each other's tokens (anomalyco/opencode#37059).
|
|
32
|
+
const sourceData = base.XDG_DATA_HOME && base.XDG_DATA_HOME.trim() !== ""
|
|
33
|
+
? join(base.XDG_DATA_HOME, "opencode")
|
|
34
|
+
: join(homedir(), ".local", "share", "opencode");
|
|
35
|
+
for (const file of ["auth.json", "mcp-auth.json"]) {
|
|
36
|
+
const source = join(sourceData, file);
|
|
37
|
+
if (existsSync(source))
|
|
38
|
+
copyFileSync(source, join(dataDir, file));
|
|
39
|
+
}
|
|
40
|
+
return {
|
|
41
|
+
XDG_DATA_HOME: dataHome,
|
|
42
|
+
XDG_STATE_HOME: stateHome,
|
|
43
|
+
XDG_CACHE_HOME: cacheHome,
|
|
44
|
+
OPENCODE_DISABLE_AUTOUPDATE: "1",
|
|
45
|
+
};
|
|
46
|
+
}
|
|
14
47
|
/** OpenCode auth adaptation: its terminal login follows host TTY and has no gateway flow. */
|
|
15
48
|
export const opencodeAuthProfile = {
|
|
16
49
|
backendId: "opencode",
|
|
@@ -37,7 +70,19 @@ export class OpenCodeBackend {
|
|
|
37
70
|
return undefined;
|
|
38
71
|
}
|
|
39
72
|
spawnConfig() {
|
|
40
|
-
|
|
73
|
+
// Concurrent OpenCode instances share every user+project-keyed store: the sqlite database
|
|
74
|
+
// (WAL behind an UNTIMED in-process statement semaphore — a busy wait stalls the whole
|
|
75
|
+
// process, ACP stdout pump included), one snapshot git index, the log, tool-output, and
|
|
76
|
+
// auth.json. Overlapping processes — routine since process-exclusive injected pooling
|
|
77
|
+
// (#292) — surface that as mid-run "ACP connection closed" and cross-instance auth
|
|
78
|
+
// revocation (upstream: anomalyco/opencode#31307, #29395, #21215, #38366, #37059).
|
|
79
|
+
// Give every spawned server its own XDG data/state/cache trees with credentials seeded in
|
|
80
|
+
// (OPENCODE_DB alone is insufficient per #33321 — the snapshot gitdir stays shared).
|
|
81
|
+
// XDG_CONFIG_HOME stays shared so the user's opencode.jsonc and providers apply, and an
|
|
82
|
+
// explicitly exported OPENCODE_DB still wins over the isolated tree's database. Tradeoff:
|
|
83
|
+
// agent-persisted sessions live in the spawned process's isolated tree, so cross-process
|
|
84
|
+
// session/load|resume falls back to the runner's fresh-session path.
|
|
85
|
+
const env = { ...process.env, ...isolatedOpenCodeEnv(process.env) };
|
|
41
86
|
const override = env.AGENTPRISM_OPENCODE_ACP_CMD;
|
|
42
87
|
if (override) {
|
|
43
88
|
return { command: override, args: splitArgs(env.AGENTPRISM_OPENCODE_ACP_ARGS), env };
|
package/dist/pool.d.ts
CHANGED
|
@@ -5,8 +5,16 @@ import type { AcpEventSink } from "./events.js";
|
|
|
5
5
|
import type { ElicitationResolver, PermissionResolver } from "./permissions.js";
|
|
6
6
|
import type { AuthStore } from "./auth/auth-store.js";
|
|
7
7
|
import type { ProviderStore } from "./provider-store.js";
|
|
8
|
+
interface IdleTimer {
|
|
9
|
+
set(callback: () => void, ms: number): {
|
|
10
|
+
unref?(): void;
|
|
11
|
+
};
|
|
12
|
+
clear(timer: {
|
|
13
|
+
unref?(): void;
|
|
14
|
+
}): void;
|
|
15
|
+
}
|
|
8
16
|
export interface AcpPoolOptions {
|
|
9
|
-
/**
|
|
17
|
+
/** Steady-state processes to keep PER backend. Default 1; falls back to AGENTPRISM_ACP_POOL_SIZE. */
|
|
10
18
|
size?: number;
|
|
11
19
|
/** Client-side ACP fs/terminal handlers advertised at initialize and routed per session. */
|
|
12
20
|
clientHandlers?: ClientHandlers;
|
|
@@ -33,6 +41,8 @@ export interface AcpPoolDeps {
|
|
|
33
41
|
* under stale (or missing) client-configured provider routing. Undefined or never-recorded =>
|
|
34
42
|
* no gating, byte-identical baseline. */
|
|
35
43
|
providerStore?: ProviderStore;
|
|
44
|
+
/** Deterministic elastic-idle clock seam. Production uses the platform timers. */
|
|
45
|
+
idleTimer?: IdleTimer;
|
|
36
46
|
}
|
|
37
47
|
/** Resolve the per-backend pool size: explicit option wins, else env, else 1. Clamped to >= 1. */
|
|
38
48
|
export declare function resolvePoolSize(option?: number): number;
|
|
@@ -43,6 +53,9 @@ export declare class AcpAgentPool {
|
|
|
43
53
|
private readonly byBackend;
|
|
44
54
|
/** Connections whose async disposal is still in progress, including ones already removed from admission. */
|
|
45
55
|
private readonly disposingConnections;
|
|
56
|
+
/** Warm keep-alive timers for currently idle connections above the steady-state pool size. */
|
|
57
|
+
private readonly elasticIdleTimers;
|
|
58
|
+
private readonly idleTimer;
|
|
46
59
|
private readonly onProcessExit;
|
|
47
60
|
private exitHookInstalled;
|
|
48
61
|
private disposed;
|
|
@@ -53,21 +66,26 @@ export declare class AcpAgentPool {
|
|
|
53
66
|
acquirePrepared(backend: Backend, prepare: (connection: PooledConnection) => AcpSessionOptions | Promise<AcpSessionOptions>, context?: {
|
|
54
67
|
signal?: AbortSignal;
|
|
55
68
|
label?: string;
|
|
69
|
+
injected?: boolean;
|
|
56
70
|
}): Promise<SessionHandle>;
|
|
57
71
|
/** Acquire a ready connection slot and reattach by the best capability negotiated on it. */
|
|
58
72
|
acquirePreparedReattach(backend: Backend, sessionId: string, prepare: (connection: PooledConnection) => AcpSessionOptions | Promise<AcpSessionOptions>, context?: {
|
|
59
73
|
signal?: AbortSignal;
|
|
60
74
|
label?: string;
|
|
75
|
+
injected?: boolean;
|
|
61
76
|
}): Promise<{
|
|
62
77
|
handle: SessionHandle;
|
|
63
78
|
method: "resume" | "load";
|
|
64
79
|
}>;
|
|
65
80
|
/**
|
|
66
|
-
* Pick the connection to host the next session. Runs SYNCHRONOUSLY (no await) through
|
|
67
|
-
*
|
|
68
|
-
* double-book a connection.
|
|
81
|
+
* Pick the connection to host the next session. Runs SYNCHRONOUSLY (no await) through both the
|
|
82
|
+
* injected-process reservation here and the load reservation in openSession(), so concurrent
|
|
83
|
+
* acquires never over-spawn or double-book a connection.
|
|
69
84
|
*/
|
|
70
85
|
private selectConnection;
|
|
86
|
+
/** Release the selection-owned reservation only after SessionHandle.release() has completed,
|
|
87
|
+
* then retain surplus processes warm for one idle keep-alive before shrinking. */
|
|
88
|
+
private releaseSelection;
|
|
71
89
|
/** Reconcile every live connection for a key to the current generation (§2.6). Stale-but-busy
|
|
72
90
|
* connections are DRAINED (recycled on release), not disposed synchronously, so in-flight prompts
|
|
73
91
|
* finish under the auth they started with. Never blocks. */
|
|
@@ -94,6 +112,11 @@ export declare class AcpAgentPool {
|
|
|
94
112
|
private disposeAndDrop;
|
|
95
113
|
/** Retain one memoized connection disposal until it settles, without leaking a rejection. */
|
|
96
114
|
private trackDisposal;
|
|
115
|
+
/** Schedule one warm-idle reap for a surplus connection. Floor connections stay pinned. */
|
|
116
|
+
private scheduleElasticReap;
|
|
117
|
+
/** A synchronous admission cancels the idle countdown before any await can let it fire. */
|
|
118
|
+
private cancelElasticReap;
|
|
119
|
+
private clearElasticReaps;
|
|
97
120
|
/**
|
|
98
121
|
* Close every pooled process and clear the admission registry. Connections remain reachable
|
|
99
122
|
* through `disposingConnections` until their asynchronous graceful teardown settles so a host
|
|
@@ -108,4 +131,5 @@ export declare class AcpAgentPool {
|
|
|
108
131
|
/** Synchronous best-effort child kill for the process-exit hook (no async work is possible). */
|
|
109
132
|
private killAllSync;
|
|
110
133
|
}
|
|
134
|
+
export {};
|
|
111
135
|
//# sourceMappingURL=pool.d.ts.map
|
package/dist/pool.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pool.d.ts","sourceRoot":"","sources":["../src/pool.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pool.d.ts","sourceRoot":"","sources":["../src/pool.ts"],"names":[],"mappings":"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"}
|
package/dist/pool.js
CHANGED
|
@@ -3,6 +3,7 @@ import { validateClientHandlers } from "./client-handlers.js";
|
|
|
3
3
|
import { mapThrownError } from "./errors-map.js";
|
|
4
4
|
const DEFAULT_POOL_SIZE = 1;
|
|
5
5
|
const POOL_SIZE_ENV = "AGENTPRISM_ACP_POOL_SIZE";
|
|
6
|
+
const ELASTIC_POOL_IDLE_KEEP_ALIVE_MS = 30_000;
|
|
6
7
|
/** Resolve the per-backend pool size: explicit option wins, else env, else 1. Clamped to >= 1. */
|
|
7
8
|
export function resolvePoolSize(option) {
|
|
8
9
|
if (typeof option === "number" && Number.isFinite(option) && option >= 1) {
|
|
@@ -23,6 +24,9 @@ export class AcpAgentPool {
|
|
|
23
24
|
byBackend = new Map();
|
|
24
25
|
/** Connections whose async disposal is still in progress, including ones already removed from admission. */
|
|
25
26
|
disposingConnections = new Set();
|
|
27
|
+
/** Warm keep-alive timers for currently idle connections above the steady-state pool size. */
|
|
28
|
+
elasticIdleTimers = new Map();
|
|
29
|
+
idleTimer;
|
|
26
30
|
onProcessExit = () => this.killAllSync();
|
|
27
31
|
exitHookInstalled = false;
|
|
28
32
|
disposed = false;
|
|
@@ -31,14 +35,19 @@ export class AcpAgentPool {
|
|
|
31
35
|
validateClientHandlers(options.clientHandlers);
|
|
32
36
|
this.size = resolvePoolSize(options.size);
|
|
33
37
|
this.clientHandlers = options.clientHandlers;
|
|
38
|
+
this.idleTimer = deps.idleTimer ?? {
|
|
39
|
+
set: (callback, ms) => setTimeout(callback, ms),
|
|
40
|
+
clear: (timer) => clearTimeout(timer),
|
|
41
|
+
};
|
|
34
42
|
}
|
|
35
43
|
/** Acquire a session for one agent() run: get/grow a pooled connection and open a session. */
|
|
36
44
|
async acquire(backend, opts) {
|
|
37
45
|
if (this.disposed)
|
|
38
46
|
throw new Error("ACP agent pool is disposed");
|
|
39
|
-
const
|
|
47
|
+
const selection = this.selectConnection(backend, false);
|
|
48
|
+
const { connection } = selection;
|
|
40
49
|
try {
|
|
41
|
-
return await connection.openSession(opts);
|
|
50
|
+
return await connection.openSession(opts, () => this.releaseSelection(selection));
|
|
42
51
|
}
|
|
43
52
|
catch (error) {
|
|
44
53
|
if (opts.signal?.aborted)
|
|
@@ -55,9 +64,10 @@ export class AcpAgentPool {
|
|
|
55
64
|
async acquirePrepared(backend, prepare, context = {}) {
|
|
56
65
|
if (this.disposed)
|
|
57
66
|
throw new Error("ACP agent pool is disposed");
|
|
58
|
-
const
|
|
67
|
+
const selection = this.selectConnection(backend, context.injected === true);
|
|
68
|
+
const { connection } = selection;
|
|
59
69
|
try {
|
|
60
|
-
return await connection.openPreparedSession(prepare);
|
|
70
|
+
return await connection.openPreparedSession(prepare, () => this.releaseSelection(selection));
|
|
61
71
|
}
|
|
62
72
|
catch (error) {
|
|
63
73
|
if (context.signal?.aborted)
|
|
@@ -74,9 +84,10 @@ export class AcpAgentPool {
|
|
|
74
84
|
async acquirePreparedReattach(backend, sessionId, prepare, context = {}) {
|
|
75
85
|
if (this.disposed)
|
|
76
86
|
throw new Error("ACP agent pool is disposed");
|
|
77
|
-
const
|
|
87
|
+
const selection = this.selectConnection(backend, context.injected === true);
|
|
88
|
+
const { connection } = selection;
|
|
78
89
|
try {
|
|
79
|
-
return await connection.openPreparedReattachedSession(sessionId, prepare);
|
|
90
|
+
return await connection.openPreparedReattachedSession(sessionId, prepare, () => this.releaseSelection(selection));
|
|
80
91
|
}
|
|
81
92
|
catch (error) {
|
|
82
93
|
if (context.signal?.aborted)
|
|
@@ -92,11 +103,11 @@ export class AcpAgentPool {
|
|
|
92
103
|
}
|
|
93
104
|
}
|
|
94
105
|
/**
|
|
95
|
-
* Pick the connection to host the next session. Runs SYNCHRONOUSLY (no await) through
|
|
96
|
-
*
|
|
97
|
-
* double-book a connection.
|
|
106
|
+
* Pick the connection to host the next session. Runs SYNCHRONOUSLY (no await) through both the
|
|
107
|
+
* injected-process reservation here and the load reservation in openSession(), so concurrent
|
|
108
|
+
* acquires never over-spawn or double-book a connection.
|
|
98
109
|
*/
|
|
99
|
-
selectConnection(backend) {
|
|
110
|
+
selectConnection(backend, injected) {
|
|
100
111
|
// Pool identity: poolKey (id + spawn-config hash for custom backends) over bare id, so two
|
|
101
112
|
// runs declaring the same NAME with different COMMANDS never share a process.
|
|
102
113
|
const key = backend.poolKey ?? backend.id;
|
|
@@ -113,15 +124,42 @@ export class AcpAgentPool {
|
|
|
113
124
|
!c.recyclePending &&
|
|
114
125
|
!machine?.isStale(c.authStamp) &&
|
|
115
126
|
!this.deps.providerStore?.isStale(key, c.providerStamp));
|
|
127
|
+
if (injected) {
|
|
128
|
+
// Space-based isolation for every injecting backend: one live injected run per process.
|
|
129
|
+
// The reservation is taken in this no-await selection path, so a concurrent acquire sees it
|
|
130
|
+
// immediately and can never choose the same process. Existing non-injected sessions do not
|
|
131
|
+
// disqualify a process, matching the previous FIFO's risk profile.
|
|
132
|
+
const available = usable.filter((c) => !c.injectedRunReserved);
|
|
133
|
+
const connection = available.length > 0
|
|
134
|
+
? available.reduce((least, c) => (c.activeSessions < least.activeSessions ? c : least))
|
|
135
|
+
: this.spawn(key, backend);
|
|
136
|
+
if (!connection.tryReserveInjectedRun()) {
|
|
137
|
+
throw new Error(`ACP pool invariant violated: injected process ${connection.id} was double-booked`);
|
|
138
|
+
}
|
|
139
|
+
this.cancelElasticReap(connection);
|
|
140
|
+
return { key, connection, injected: true };
|
|
141
|
+
}
|
|
116
142
|
const idle = usable.find((c) => c.activeSessions === 0);
|
|
117
|
-
if (idle)
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
143
|
+
if (idle) {
|
|
144
|
+
this.cancelElasticReap(idle);
|
|
145
|
+
return { key, connection: idle, injected: false };
|
|
146
|
+
}
|
|
147
|
+
if (usable.length < this.size) {
|
|
148
|
+
return { key, connection: this.spawn(key, backend), injected: false };
|
|
149
|
+
}
|
|
121
150
|
// At capacity with every usable connection busy: multiplex onto the least-loaded one.
|
|
122
|
-
|
|
151
|
+
const connection = usable.length > 0
|
|
123
152
|
? usable.reduce((least, c) => (c.activeSessions < least.activeSessions ? c : least))
|
|
124
153
|
: this.spawn(key, backend);
|
|
154
|
+
this.cancelElasticReap(connection);
|
|
155
|
+
return { key, connection, injected: false };
|
|
156
|
+
}
|
|
157
|
+
/** Release the selection-owned reservation only after SessionHandle.release() has completed,
|
|
158
|
+
* then retain surplus processes warm for one idle keep-alive before shrinking. */
|
|
159
|
+
releaseSelection(selection) {
|
|
160
|
+
if (selection.injected)
|
|
161
|
+
selection.connection.releaseInjectedRun();
|
|
162
|
+
this.scheduleElasticReap(selection.key, selection.connection);
|
|
125
163
|
}
|
|
126
164
|
/** Reconcile every live connection for a key to the current generation (§2.6). Stale-but-busy
|
|
127
165
|
* connections are DRAINED (recycled on release), not disposed synchronously, so in-flight prompts
|
|
@@ -198,6 +236,7 @@ export class AcpAgentPool {
|
|
|
198
236
|
}
|
|
199
237
|
/** Evict a dead connection so it is never handed out again. */
|
|
200
238
|
drop(key, connection) {
|
|
239
|
+
this.cancelElasticReap(connection);
|
|
201
240
|
const arr = this.byBackend.get(key);
|
|
202
241
|
if (!arr)
|
|
203
242
|
return;
|
|
@@ -221,6 +260,50 @@ export class AcpAgentPool {
|
|
|
221
260
|
void disposal.then(() => this.disposingConnections.delete(connection), () => this.disposingConnections.delete(connection));
|
|
222
261
|
return disposal;
|
|
223
262
|
}
|
|
263
|
+
/** Schedule one warm-idle reap for a surplus connection. Floor connections stay pinned. */
|
|
264
|
+
scheduleElasticReap(key, connection) {
|
|
265
|
+
if (this.disposed ||
|
|
266
|
+
!connection.alive ||
|
|
267
|
+
connection.recyclePending ||
|
|
268
|
+
connection.activeSessions !== 0 ||
|
|
269
|
+
connection.injectedRunReserved ||
|
|
270
|
+
this.elasticIdleTimers.has(connection)) {
|
|
271
|
+
return;
|
|
272
|
+
}
|
|
273
|
+
const connections = this.byBackend.get(key);
|
|
274
|
+
if (!connections?.includes(connection) || connections.length <= this.size)
|
|
275
|
+
return;
|
|
276
|
+
const timer = this.idleTimer.set(() => {
|
|
277
|
+
this.elasticIdleTimers.delete(connection);
|
|
278
|
+
if (this.disposed)
|
|
279
|
+
return;
|
|
280
|
+
const current = this.byBackend.get(key);
|
|
281
|
+
if (!current?.includes(connection) ||
|
|
282
|
+
current.length <= this.size ||
|
|
283
|
+
!connection.alive ||
|
|
284
|
+
connection.recyclePending ||
|
|
285
|
+
connection.activeSessions !== 0 ||
|
|
286
|
+
connection.injectedRunReserved) {
|
|
287
|
+
return;
|
|
288
|
+
}
|
|
289
|
+
this.disposeAndDrop(key, connection);
|
|
290
|
+
}, ELASTIC_POOL_IDLE_KEEP_ALIVE_MS);
|
|
291
|
+
timer.unref?.();
|
|
292
|
+
this.elasticIdleTimers.set(connection, timer);
|
|
293
|
+
}
|
|
294
|
+
/** A synchronous admission cancels the idle countdown before any await can let it fire. */
|
|
295
|
+
cancelElasticReap(connection) {
|
|
296
|
+
const timer = this.elasticIdleTimers.get(connection);
|
|
297
|
+
if (!timer)
|
|
298
|
+
return;
|
|
299
|
+
this.elasticIdleTimers.delete(connection);
|
|
300
|
+
this.idleTimer.clear(timer);
|
|
301
|
+
}
|
|
302
|
+
clearElasticReaps() {
|
|
303
|
+
for (const timer of this.elasticIdleTimers.values())
|
|
304
|
+
this.idleTimer.clear(timer);
|
|
305
|
+
this.elasticIdleTimers.clear();
|
|
306
|
+
}
|
|
224
307
|
/**
|
|
225
308
|
* Close every pooled process and clear the admission registry. Connections remain reachable
|
|
226
309
|
* through `disposingConnections` until their asynchronous graceful teardown settles so a host
|
|
@@ -229,6 +312,7 @@ export class AcpAgentPool {
|
|
|
229
312
|
async dispose() {
|
|
230
313
|
this.disposed = true;
|
|
231
314
|
this.removeExitHook();
|
|
315
|
+
this.clearElasticReaps();
|
|
232
316
|
// Include stale connections that were removed from admission by reconciliation but whose
|
|
233
317
|
// graceful disposal has not settled. Otherwise a host lifecycle could see dispose() resolve,
|
|
234
318
|
// cancel its deadline, and exit while such a backend process tree is still alive.
|
package/dist/runner.d.ts
CHANGED
|
@@ -222,9 +222,6 @@ export declare class AcpAgentRunner implements AgentRunner, AuthCapableRunner, P
|
|
|
222
222
|
/** The auth verbs as one addressable object (§2.10). */
|
|
223
223
|
readonly auth: AuthController;
|
|
224
224
|
private readonly structuredOutputTools;
|
|
225
|
-
/** FIFO turn queue per pooled connection for injected-tool schema runs (see the injection
|
|
226
|
-
* site for why concurrent injected sessions on one process cannot be isolated). */
|
|
227
|
-
private readonly structuredToolTurns;
|
|
228
225
|
/** Held-open interactive sessions own dedicated ACP processes outside the pool. The runner
|
|
229
226
|
* tracks their connections so dispose() can release them and the process-exit hook can
|
|
230
227
|
* synchronously kill any dedicated children if the host exits without release(). */
|
|
@@ -317,9 +314,6 @@ export declare class AcpAgentRunner implements AgentRunner, AuthCapableRunner, P
|
|
|
317
314
|
run<S extends TSchema | undefined = undefined>(prompt: string, options?: RunOptions<S>): Promise<AgentResult<S>>;
|
|
318
315
|
/** Tear down the whole pool (close every long-lived process). Call when the run ends / the
|
|
319
316
|
* runner is disposed. Beyond the AgentRunner seam (additive) — never enters the resume hash. */
|
|
320
|
-
/** Await the connection's current injected-run chain and append this run's turn. The
|
|
321
|
-
* returned release MUST be called (run finally) or the connection's schema runs starve. */
|
|
322
|
-
private acquireStructuredToolTurn;
|
|
323
317
|
dispose(): Promise<void>;
|
|
324
318
|
[Symbol.asyncDispose](): Promise<void>;
|
|
325
319
|
/**
|
package/dist/runner.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
|
package/dist/runner.js
CHANGED
|
@@ -90,9 +90,6 @@ export class AcpAgentRunner {
|
|
|
90
90
|
/** The auth verbs as one addressable object (§2.10). */
|
|
91
91
|
auth;
|
|
92
92
|
structuredOutputTools = new StructuredOutputToolHost();
|
|
93
|
-
/** FIFO turn queue per pooled connection for injected-tool schema runs (see the injection
|
|
94
|
-
* site for why concurrent injected sessions on one process cannot be isolated). */
|
|
95
|
-
structuredToolTurns = new WeakMap();
|
|
96
93
|
/** Held-open interactive sessions own dedicated ACP processes outside the pool. The runner
|
|
97
94
|
* tracks their connections so dispose() can release them and the process-exit hook can
|
|
98
95
|
* synchronously kill any dedicated children if the host exits without release(). */
|
|
@@ -487,7 +484,7 @@ export class AcpAgentRunner {
|
|
|
487
484
|
let session;
|
|
488
485
|
let structuredTool;
|
|
489
486
|
let structuredToolActive = false;
|
|
490
|
-
|
|
487
|
+
const reservesInjectedProcess = schema !== undefined && prepared.backend.injectStructuredOutputTool === true;
|
|
491
488
|
let continuationUsageBaseline;
|
|
492
489
|
let continuationMethod;
|
|
493
490
|
let keepOpenOnRelease = opts.keepSession === true;
|
|
@@ -500,13 +497,6 @@ export class AcpAgentRunner {
|
|
|
500
497
|
}
|
|
501
498
|
};
|
|
502
499
|
const cleanupFailedAcquisition = async () => {
|
|
503
|
-
try {
|
|
504
|
-
releaseStructuredToolTurn?.();
|
|
505
|
-
}
|
|
506
|
-
catch {
|
|
507
|
-
// best-effort cleanup before another acquire.
|
|
508
|
-
}
|
|
509
|
-
releaseStructuredToolTurn = undefined;
|
|
510
500
|
try {
|
|
511
501
|
structuredTool?.release();
|
|
512
502
|
}
|
|
@@ -529,16 +519,10 @@ export class AcpAgentRunner {
|
|
|
529
519
|
const prepare = async (connection) => {
|
|
530
520
|
let sessionOptions = prepared.sessionOptions;
|
|
531
521
|
if (shouldInjectStructuredOutputTool(schema, prepared.backend, connection.capabilities)) {
|
|
532
|
-
//
|
|
533
|
-
//
|
|
534
|
-
//
|
|
535
|
-
//
|
|
536
|
-
// way one session's model can call another session's tool and leak its capture.
|
|
537
|
-
// Same-name registration REPLACES the previous entry; holding this per-connection
|
|
538
|
-
// turn for the whole run guarantees the single live registration belongs to the
|
|
539
|
-
// active session. Scale schema-run parallelism with pool size (one registry per
|
|
540
|
-
// process), not sessions.
|
|
541
|
-
releaseStructuredToolTurn = await this.acquireStructuredToolTurn(connection);
|
|
522
|
+
// The pool synchronously reserved this process before any acquisition await. Injecting
|
|
523
|
+
// backends with instance-global MCP registries (OpenCode) therefore expose at most this
|
|
524
|
+
// run's registration to an active injected session, while Pi and custom backends receive
|
|
525
|
+
// the same uniform process-exclusive behavior without a backend-specific scope knob.
|
|
542
526
|
structuredTool = await this.structuredOutputTools.register(schema);
|
|
543
527
|
structuredToolActive = true;
|
|
544
528
|
sessionOptions = {
|
|
@@ -567,7 +551,7 @@ export class AcpAgentRunner {
|
|
|
567
551
|
}
|
|
568
552
|
else {
|
|
569
553
|
try {
|
|
570
|
-
const reattached = await this.pool.acquirePreparedReattach(prepared.backend, recorded.sessionId, prepare, { signal: opts.signal, label: opts.label });
|
|
554
|
+
const reattached = await this.pool.acquirePreparedReattach(prepared.backend, recorded.sessionId, prepare, { signal: opts.signal, label: opts.label, injected: reservesInjectedProcess });
|
|
571
555
|
session = reattached.handle;
|
|
572
556
|
continuationMethod = reattached.method;
|
|
573
557
|
// Provenance is committed at the reopen-handle boundary, before any post-open setup.
|
|
@@ -602,6 +586,7 @@ export class AcpAgentRunner {
|
|
|
602
586
|
session = await this.pool.acquirePrepared(prepared.backend, prepare, {
|
|
603
587
|
signal: opts.signal,
|
|
604
588
|
label: opts.label,
|
|
589
|
+
injected: reservesInjectedProcess,
|
|
605
590
|
});
|
|
606
591
|
break;
|
|
607
592
|
}
|
|
@@ -706,70 +691,46 @@ export class AcpAgentRunner {
|
|
|
706
691
|
}
|
|
707
692
|
finally {
|
|
708
693
|
try {
|
|
694
|
+
structuredTool?.release();
|
|
695
|
+
}
|
|
696
|
+
catch {
|
|
697
|
+
// best-effort tool cleanup; never mask the run result, error, or caller cancellation.
|
|
698
|
+
}
|
|
699
|
+
if (session) {
|
|
700
|
+
// Read real usage on BOTH success and error so partial usage is never lost.
|
|
709
701
|
try {
|
|
710
|
-
|
|
702
|
+
opts.onUsage?.(continuationUsageBaseline
|
|
703
|
+
? session.usage.delta(continuationUsageBaseline)
|
|
704
|
+
: session.usage.toAgentUsage());
|
|
711
705
|
}
|
|
712
706
|
catch {
|
|
713
|
-
// best-effort
|
|
707
|
+
// usage is best-effort; never let it mask the real result/error.
|
|
714
708
|
}
|
|
715
|
-
if (session) {
|
|
716
|
-
// Read real usage on BOTH success and error so partial usage is never lost.
|
|
717
|
-
try {
|
|
718
|
-
opts.onUsage?.(continuationUsageBaseline
|
|
719
|
-
? session.usage.delta(continuationUsageBaseline)
|
|
720
|
-
: session.usage.toAgentUsage());
|
|
721
|
-
}
|
|
722
|
-
catch {
|
|
723
|
-
// usage is best-effort; never let it mask the real result/error.
|
|
724
|
-
}
|
|
725
|
-
try {
|
|
726
|
-
opts.onHistory?.(session.history);
|
|
727
|
-
}
|
|
728
|
-
catch {
|
|
729
|
-
// history is diagnostic only.
|
|
730
|
-
}
|
|
731
|
-
// Release the SESSION (best-effort session/close) WITHOUT killing the pooled process.
|
|
732
|
-
// keepSession skips the close so the agent-persisted session stays re-openable.
|
|
733
|
-
try {
|
|
734
|
-
await session.release({ keepOpen: keepOpenOnRelease });
|
|
735
|
-
}
|
|
736
|
-
catch (error) {
|
|
737
|
-
if (isChildCleanupError(error)) {
|
|
738
|
-
throw mapThrownError(error, {
|
|
739
|
-
label: opts.label,
|
|
740
|
-
backendId: prepared.backend.id,
|
|
741
|
-
backend: prepared.backend,
|
|
742
|
-
});
|
|
743
|
-
}
|
|
744
|
-
}
|
|
745
|
-
}
|
|
746
|
-
}
|
|
747
|
-
finally {
|
|
748
|
-
// The injected-tool turn spans the WHOLE run incl. session close, so the next queued
|
|
749
|
-
// schema run's session/new (same-name registry replacement) never overlaps this one.
|
|
750
709
|
try {
|
|
751
|
-
|
|
710
|
+
opts.onHistory?.(session.history);
|
|
752
711
|
}
|
|
753
712
|
catch {
|
|
754
|
-
//
|
|
713
|
+
// history is diagnostic only.
|
|
714
|
+
}
|
|
715
|
+
// Release the SESSION (best-effort session/close) WITHOUT killing the pooled process.
|
|
716
|
+
// keepSession skips the close so the agent-persisted session stays re-openable.
|
|
717
|
+
try {
|
|
718
|
+
await session.release({ keepOpen: keepOpenOnRelease });
|
|
719
|
+
}
|
|
720
|
+
catch (error) {
|
|
721
|
+
if (isChildCleanupError(error)) {
|
|
722
|
+
throw mapThrownError(error, {
|
|
723
|
+
label: opts.label,
|
|
724
|
+
backendId: prepared.backend.id,
|
|
725
|
+
backend: prepared.backend,
|
|
726
|
+
});
|
|
727
|
+
}
|
|
755
728
|
}
|
|
756
729
|
}
|
|
757
730
|
}
|
|
758
731
|
}
|
|
759
732
|
/** Tear down the whole pool (close every long-lived process). Call when the run ends / the
|
|
760
733
|
* runner is disposed. Beyond the AgentRunner seam (additive) — never enters the resume hash. */
|
|
761
|
-
/** Await the connection's current injected-run chain and append this run's turn. The
|
|
762
|
-
* returned release MUST be called (run finally) or the connection's schema runs starve. */
|
|
763
|
-
async acquireStructuredToolTurn(connection) {
|
|
764
|
-
const previous = this.structuredToolTurns.get(connection) ?? Promise.resolve();
|
|
765
|
-
let release;
|
|
766
|
-
const turn = new Promise((resolve) => {
|
|
767
|
-
release = resolve;
|
|
768
|
-
});
|
|
769
|
-
this.structuredToolTurns.set(connection, previous.then(() => turn));
|
|
770
|
-
await previous;
|
|
771
|
-
return release;
|
|
772
|
-
}
|
|
773
734
|
async dispose() {
|
|
774
735
|
this.disposed = true;
|
|
775
736
|
this.removeExitHook();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@automatalabs/acp-agents",
|
|
3
|
-
"version": "0.34.
|
|
3
|
+
"version": "0.34.12",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"engines": {
|
|
6
6
|
"node": ">=22"
|
|
@@ -27,9 +27,9 @@
|
|
|
27
27
|
"access": "public"
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@agentclientprotocol/claude-agent-acp": "0.
|
|
30
|
+
"@agentclientprotocol/claude-agent-acp": "0.62.0",
|
|
31
31
|
"@agentclientprotocol/sdk": "^1.3.0",
|
|
32
|
-
"@automatalabs/codex-acp": "1.6.
|
|
32
|
+
"@automatalabs/codex-acp": "1.6.12",
|
|
33
33
|
"@modelcontextprotocol/sdk": "^1.29",
|
|
34
34
|
"typebox": "1.3.2",
|
|
35
35
|
"@automatalabs/pi-acp": "0.2.4",
|