@moxt-ai/mobius 0.0.7 → 0.0.8
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/native-session.d.ts +2 -2
- package/dist/acp/native-session.d.ts.map +1 -1
- package/dist/acp/native-session.js +2 -1
- package/dist/acp/native-session.js.map +1 -1
- package/dist/acp/session-manager.d.ts +2 -0
- package/dist/acp/session-manager.d.ts.map +1 -1
- package/dist/acp/session-manager.js +126 -29
- package/dist/acp/session-manager.js.map +1 -1
- package/dist/cli.js +197 -45
- package/dist/cli.js.map +3 -3
- package/dist/index.js +197 -45
- package/dist/index.js.map +3 -3
- package/dist/native-sessions/service.js +1 -1
- package/dist/native-sessions/service.js.map +1 -1
- package/dist/run-daemon.d.ts.map +1 -1
- package/dist/run-daemon.js +9 -0
- package/dist/run-daemon.js.map +1 -1
- package/package.json +1 -1
|
@@ -4,7 +4,7 @@ declare const nativeSessionInfoSchema: z.ZodReadonly<z.ZodObject<{
|
|
|
4
4
|
sessionId: z.ZodString;
|
|
5
5
|
cwd: z.ZodString;
|
|
6
6
|
additionalDirectories: z.ZodReadonly<z.ZodDefault<z.ZodArray<z.ZodString>>>;
|
|
7
|
-
title: z.ZodOptional<z.ZodNullable<z.ZodString
|
|
7
|
+
title: z.ZodOptional<z.ZodNullable<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>>;
|
|
8
8
|
updatedAt: z.ZodOptional<z.ZodNullable<z.ZodISODateTime>>;
|
|
9
9
|
}, z.core.$strip>>;
|
|
10
10
|
export type NativeSessionInfo = z.infer<typeof nativeSessionInfoSchema>;
|
|
@@ -13,7 +13,7 @@ export declare const nativeSessionPageSchema: z.ZodReadonly<z.ZodObject<{
|
|
|
13
13
|
sessionId: z.ZodString;
|
|
14
14
|
cwd: z.ZodString;
|
|
15
15
|
additionalDirectories: z.ZodReadonly<z.ZodDefault<z.ZodArray<z.ZodString>>>;
|
|
16
|
-
title: z.ZodOptional<z.ZodNullable<z.ZodString
|
|
16
|
+
title: z.ZodOptional<z.ZodNullable<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>>;
|
|
17
17
|
updatedAt: z.ZodOptional<z.ZodNullable<z.ZodISODateTime>>;
|
|
18
18
|
}, z.core.$strip>>>>;
|
|
19
19
|
nextCursor: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native-session.d.ts","sourceRoot":"","sources":["../../src/acp/native-session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"native-session.d.ts","sourceRoot":"","sources":["../../src/acp/native-session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB,eAAO,MAAM,qBAAqB,aAEa,CAAC;AAChD,QAAA,MAAM,uBAAuB;;;;;;kBAQhB,CAAC;AACd,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AACxE,eAAO,MAAM,uBAAuB;;;;;;;;;kBAKvB,CAAC;AACd,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,MAAM,MAAM,mBAAmB,GAC3B;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;CAAE,GAC7D;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;CAAE,CAAC"}
|
|
@@ -4,6 +4,7 @@ const path = z
|
|
|
4
4
|
.min(1)
|
|
5
5
|
.max(2_048)
|
|
6
6
|
.refine((value) => !value.includes("\0"));
|
|
7
|
+
const title = z.string().transform((value) => value.slice(0, 500));
|
|
7
8
|
export const nativeSessionIdSchema = z
|
|
8
9
|
.string()
|
|
9
10
|
.regex(/^[a-zA-Z0-9][a-zA-Z0-9._:-]{0,255}$/);
|
|
@@ -12,7 +13,7 @@ const nativeSessionInfoSchema = z
|
|
|
12
13
|
sessionId: nativeSessionIdSchema,
|
|
13
14
|
cwd: path,
|
|
14
15
|
additionalDirectories: z.array(path).max(16).default([]).readonly(),
|
|
15
|
-
title:
|
|
16
|
+
title: title.nullish(),
|
|
16
17
|
updatedAt: z.iso.datetime({ offset: true }).nullish(),
|
|
17
18
|
})
|
|
18
19
|
.readonly();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native-session.js","sourceRoot":"","sources":["../../src/acp/native-session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,IAAI,GAAG,CAAC;KACX,MAAM,EAAE;KACR,GAAG,CAAC,CAAC,CAAC;KACN,GAAG,CAAC,KAAK,CAAC;KACV,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5C,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC;KACnC,MAAM,EAAE;KACR,KAAK,CAAC,qCAAqC,CAAC,CAAC;AAChD,MAAM,uBAAuB,GAAG,CAAC;KAC9B,MAAM,CAAC;IACN,SAAS,EAAE,qBAAqB;IAChC,GAAG,EAAE,IAAI;IACT,qBAAqB,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;IACnE,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"native-session.js","sourceRoot":"","sources":["../../src/acp/native-session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,IAAI,GAAG,CAAC;KACX,MAAM,EAAE;KACR,GAAG,CAAC,CAAC,CAAC;KACN,GAAG,CAAC,KAAK,CAAC;KACV,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5C,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AACnE,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC;KACnC,MAAM,EAAE;KACR,KAAK,CAAC,qCAAqC,CAAC,CAAC;AAChD,MAAM,uBAAuB,GAAG,CAAC;KAC9B,MAAM,CAAC;IACN,SAAS,EAAE,qBAAqB;IAChC,GAAG,EAAE,IAAI;IACT,qBAAqB,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;IACnE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE;IACtB,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE;CACtD,CAAC;KACD,QAAQ,EAAE,CAAC;AAEd,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC;KACrC,MAAM,CAAC;IACN,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IAC9D,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE;CACnD,CAAC;KACD,QAAQ,EAAE,CAAC"}
|
|
@@ -81,6 +81,7 @@ declare class AcpProcessSession implements AcpClientHandler {
|
|
|
81
81
|
#private;
|
|
82
82
|
private constructor();
|
|
83
83
|
static readonly start: (options: AcpPrepareOptions, getObserver: () => AcpSessionObserver, store: AcpSessionStore) => Promise<AcpProcessSession>;
|
|
84
|
+
static readonly startNativeSessionBrowser: (options: AcpPrepareOptions, getObserver: () => AcpSessionObserver, store: AcpSessionStore) => Promise<AcpProcessSession>;
|
|
84
85
|
readonly belongsTo: (agentId: string, cwd: string, additionalDirectories: readonly string[]) => boolean;
|
|
85
86
|
readonly canRebind: () => boolean;
|
|
86
87
|
readonly prepared: () => AcpPreparedSession;
|
|
@@ -113,6 +114,7 @@ export declare class AcpSessionManager {
|
|
|
113
114
|
constructor(observer?: AcpSessionObserver, store?: AcpSessionStore);
|
|
114
115
|
readonly setObserver: (observer: AcpSessionObserver) => void;
|
|
115
116
|
readonly prepareSession: (options: AcpPrepareOptions) => Promise<AcpPreparedSession>;
|
|
117
|
+
readonly prepareNativeSessionBrowser: (options: AcpPrepareOptions) => Promise<AcpPreparedSession>;
|
|
116
118
|
readonly configureSession: (options: AcpConfigureOptions) => Promise<readonly SessionConfigOption[]>;
|
|
117
119
|
readonly cancelPrompt: (sessionId: string) => Promise<void>;
|
|
118
120
|
readonly runPrompt: (options: AcpTurnOptions) => Promise<AcpPromptResult>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../src/acp/session-manager.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../src/acp/session-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -44,6 +44,12 @@ export class AcpExecutionError extends Error {
|
|
|
44
44
|
this.name = "AcpExecutionError";
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
|
+
class RetryableAcpInitializationError extends AcpExecutionError {
|
|
48
|
+
constructor(cause) {
|
|
49
|
+
super("ACP agent initialization failed", { cause });
|
|
50
|
+
this.name = "RetryableAcpInitializationError";
|
|
51
|
+
}
|
|
52
|
+
}
|
|
47
53
|
function readableWebStream(input) {
|
|
48
54
|
let streamOpen = true;
|
|
49
55
|
return new ReadableStream({
|
|
@@ -631,32 +637,41 @@ class AcpProcessSession {
|
|
|
631
637
|
const stream = ndJsonStream(createWritableAcpStream(stdin), readableWebStream(stdout));
|
|
632
638
|
this.#connection = createAcpClient(this).connect(stream);
|
|
633
639
|
}
|
|
634
|
-
static
|
|
635
|
-
|
|
636
|
-
const [adapterUnchanged, agentUnchanged] = await Promise.all([
|
|
637
|
-
revalidateExecutable(options.agent.adapterIdentity),
|
|
638
|
-
revalidateExecutable(options.agent.agentIdentity),
|
|
639
|
-
]);
|
|
640
|
-
options.signal.throwIfAborted();
|
|
641
|
-
if (!adapterUnchanged || !agentUnchanged) {
|
|
642
|
-
throw new AcpExecutionError("The local Agent runtime changed; restart Mobius before starting a new conversation", {}, "agent_runtime_changed");
|
|
643
|
-
}
|
|
644
|
-
const runtime = new AcpProcessSession(options.agent, options.cwd, options.additionalDirectories, options.sessionId, getObserver, store);
|
|
645
|
-
try {
|
|
646
|
-
await runtime.initialize(options.signal, options.origin);
|
|
647
|
-
return runtime;
|
|
648
|
-
}
|
|
649
|
-
catch (error) {
|
|
650
|
-
await runtime.closeProcess();
|
|
640
|
+
static async #start(options, getObserver, store, initialize) {
|
|
641
|
+
for (let attempt = 1; attempt <= 2; attempt += 1) {
|
|
651
642
|
options.signal.throwIfAborted();
|
|
652
|
-
|
|
653
|
-
|
|
643
|
+
const [adapterUnchanged, agentUnchanged] = await Promise.all([
|
|
644
|
+
revalidateExecutable(options.agent.adapterIdentity),
|
|
645
|
+
revalidateExecutable(options.agent.agentIdentity),
|
|
646
|
+
]);
|
|
647
|
+
options.signal.throwIfAborted();
|
|
648
|
+
if (!adapterUnchanged || !agentUnchanged) {
|
|
649
|
+
throw new AcpExecutionError("The local Agent runtime changed; restart Mobius before starting a new conversation", {}, "agent_runtime_changed");
|
|
650
|
+
}
|
|
651
|
+
const runtime = new AcpProcessSession(options.agent, options.cwd, options.additionalDirectories, options.sessionId, getObserver, store);
|
|
652
|
+
try {
|
|
653
|
+
await initialize(runtime);
|
|
654
|
+
return runtime;
|
|
655
|
+
}
|
|
656
|
+
catch (error) {
|
|
657
|
+
await runtime.closeProcess();
|
|
658
|
+
options.signal.throwIfAborted();
|
|
659
|
+
if (error instanceof RetryableAcpInitializationError && attempt === 1) {
|
|
660
|
+
console.warn(`[${options.agent.id}-acp] ACP agent initialization failed; retrying once`);
|
|
661
|
+
continue;
|
|
662
|
+
}
|
|
663
|
+
if (error instanceof AcpExecutionError) {
|
|
664
|
+
throw error;
|
|
665
|
+
}
|
|
666
|
+
throw new AcpExecutionError("ACP agent initialization failed", {
|
|
667
|
+
cause: error,
|
|
668
|
+
});
|
|
654
669
|
}
|
|
655
|
-
throw new AcpExecutionError("ACP agent initialization failed", {
|
|
656
|
-
cause: error,
|
|
657
|
-
});
|
|
658
670
|
}
|
|
659
|
-
|
|
671
|
+
throw new AcpExecutionError("ACP agent initialization failed");
|
|
672
|
+
}
|
|
673
|
+
static start = async (options, getObserver, store) => await AcpProcessSession.#start(options, getObserver, store, async (runtime) => await runtime.initialize(options.signal, options.origin));
|
|
674
|
+
static startNativeSessionBrowser = async (options, getObserver, store) => await AcpProcessSession.#start(options, getObserver, store, async (runtime) => await runtime.#initializeAgent(options.signal));
|
|
660
675
|
belongsTo = (agentId, cwd, additionalDirectories) => this.#agentId === agentId &&
|
|
661
676
|
this.#cwd === cwd &&
|
|
662
677
|
arraysEqual(this.#additionalDirectories, additionalDirectories);
|
|
@@ -682,7 +697,7 @@ class AcpProcessSession {
|
|
|
682
697
|
this.#replay = { kind: "idle" };
|
|
683
698
|
}
|
|
684
699
|
};
|
|
685
|
-
|
|
700
|
+
async #initializeAgent(signal) {
|
|
686
701
|
const initialized = await this.race(this.#connection.agent.request(methods.agent.initialize, {
|
|
687
702
|
clientCapabilities: {
|
|
688
703
|
elicitation: { form: {}, url: {} },
|
|
@@ -691,7 +706,10 @@ class AcpProcessSession {
|
|
|
691
706
|
},
|
|
692
707
|
clientInfo: { name: "mobius", version: "0.0.3" },
|
|
693
708
|
protocolVersion: PROTOCOL_VERSION,
|
|
694
|
-
}, { cancellationSignal: signal }), "ACP agent exited during initialization", signal)
|
|
709
|
+
}, { cancellationSignal: signal }), "ACP agent exited during initialization", signal).catch((cause) => {
|
|
710
|
+
signal.throwIfAborted();
|
|
711
|
+
throw new RetryableAcpInitializationError(cause);
|
|
712
|
+
});
|
|
695
713
|
if (initialized.protocolVersion !== PROTOCOL_VERSION) {
|
|
696
714
|
throw new AcpExecutionError("ACP agent selected an unsupported protocol version", {}, "unsupported_acp_protocol");
|
|
697
715
|
}
|
|
@@ -701,6 +719,9 @@ class AcpProcessSession {
|
|
|
701
719
|
initialized.agentInfo?.name ??
|
|
702
720
|
this.#agentId, 255);
|
|
703
721
|
this.#agentVersion = truncate(initialized.agentInfo?.version ?? "", 128);
|
|
722
|
+
}
|
|
723
|
+
initialize = async (signal, origin) => {
|
|
724
|
+
await this.#initializeAgent(signal);
|
|
704
725
|
const stored = origin?.kind === "import"
|
|
705
726
|
? new FoundAcpStoredSession(new AcpStoredSession(this.#mobiusSessionId, this.#agentId, nativeSessionIdSchema.parse(origin.nativeSessionId), this.#cwd, this.#additionalDirectories, true))
|
|
706
727
|
: this.#store.read(this.#mobiusSessionId);
|
|
@@ -1313,6 +1334,10 @@ class AcpProcessSession {
|
|
|
1313
1334
|
}
|
|
1314
1335
|
export class AcpSessionManager {
|
|
1315
1336
|
#nativeOperations = new Set();
|
|
1337
|
+
#nativeBrowserObserver = new NullAcpSessionObserver();
|
|
1338
|
+
#nativeBrowserPreparing = new Map();
|
|
1339
|
+
#nativeBrowserSessions = new Map();
|
|
1340
|
+
#nativeBrowserStore = new MemoryAcpSessionStore();
|
|
1316
1341
|
#activeSessionIds = new Set();
|
|
1317
1342
|
#cancellationRequests = new Set();
|
|
1318
1343
|
#preparing = new Map();
|
|
@@ -1326,6 +1351,37 @@ export class AcpSessionManager {
|
|
|
1326
1351
|
setObserver = (observer) => {
|
|
1327
1352
|
this.#observer = observer;
|
|
1328
1353
|
};
|
|
1354
|
+
async #startNativeBrowserPreparation(options) {
|
|
1355
|
+
const operation = (async () => {
|
|
1356
|
+
try {
|
|
1357
|
+
const runtime = await AcpProcessSession.startNativeSessionBrowser(options, () => this.#nativeBrowserObserver, this.#nativeBrowserStore);
|
|
1358
|
+
this.#nativeBrowserSessions.set(options.sessionId, runtime);
|
|
1359
|
+
return runtime;
|
|
1360
|
+
}
|
|
1361
|
+
finally {
|
|
1362
|
+
this.#nativeBrowserPreparing.delete(options.sessionId);
|
|
1363
|
+
}
|
|
1364
|
+
})();
|
|
1365
|
+
this.#nativeBrowserPreparing.set(options.sessionId, operation);
|
|
1366
|
+
return await operation;
|
|
1367
|
+
}
|
|
1368
|
+
async #replaceNativeBrowserPreparation(existing, options) {
|
|
1369
|
+
const operation = (async () => {
|
|
1370
|
+
try {
|
|
1371
|
+
this.#nativeBrowserSessions.delete(options.sessionId);
|
|
1372
|
+
await existing.close();
|
|
1373
|
+
this.#nativeBrowserStore.remove(options.sessionId);
|
|
1374
|
+
const runtime = await AcpProcessSession.startNativeSessionBrowser(options, () => this.#nativeBrowserObserver, this.#nativeBrowserStore);
|
|
1375
|
+
this.#nativeBrowserSessions.set(options.sessionId, runtime);
|
|
1376
|
+
return runtime;
|
|
1377
|
+
}
|
|
1378
|
+
finally {
|
|
1379
|
+
this.#nativeBrowserPreparing.delete(options.sessionId);
|
|
1380
|
+
}
|
|
1381
|
+
})();
|
|
1382
|
+
this.#nativeBrowserPreparing.set(options.sessionId, operation);
|
|
1383
|
+
return await operation;
|
|
1384
|
+
}
|
|
1329
1385
|
async #startPreparation(options) {
|
|
1330
1386
|
const operation = (async () => {
|
|
1331
1387
|
try {
|
|
@@ -1386,6 +1442,29 @@ export class AcpSessionManager {
|
|
|
1386
1442
|
const runtime = await this.#startPreparation(options);
|
|
1387
1443
|
return runtime.prepared();
|
|
1388
1444
|
};
|
|
1445
|
+
prepareNativeSessionBrowser = async (options) => {
|
|
1446
|
+
const pending = this.#nativeBrowserPreparing.get(options.sessionId);
|
|
1447
|
+
if (pending !== undefined) {
|
|
1448
|
+
const runtime = await pending;
|
|
1449
|
+
if (runtime.belongsTo(options.agent.id, options.cwd, options.additionalDirectories)) {
|
|
1450
|
+
return runtime.prepared();
|
|
1451
|
+
}
|
|
1452
|
+
return await this.prepareNativeSessionBrowser(options);
|
|
1453
|
+
}
|
|
1454
|
+
const existing = this.#nativeBrowserSessions.get(options.sessionId);
|
|
1455
|
+
if (existing !== undefined) {
|
|
1456
|
+
if (existing.belongsTo(options.agent.id, options.cwd, options.additionalDirectories)) {
|
|
1457
|
+
return existing.prepared();
|
|
1458
|
+
}
|
|
1459
|
+
if (!existing.canRebind()) {
|
|
1460
|
+
throw new AcpExecutionError("The agent or workspace cannot change after a conversation has started", {}, "session_identity_mismatch");
|
|
1461
|
+
}
|
|
1462
|
+
const runtime = await this.#replaceNativeBrowserPreparation(existing, options);
|
|
1463
|
+
return runtime.prepared();
|
|
1464
|
+
}
|
|
1465
|
+
const runtime = await this.#startNativeBrowserPreparation(options);
|
|
1466
|
+
return runtime.prepared();
|
|
1467
|
+
};
|
|
1389
1468
|
configureSession = async (options) => {
|
|
1390
1469
|
const runtime = await this.ensureSession(options);
|
|
1391
1470
|
return await runtime.configure(options);
|
|
@@ -1453,8 +1532,10 @@ export class AcpSessionManager {
|
|
|
1453
1532
|
};
|
|
1454
1533
|
close = async () => {
|
|
1455
1534
|
const sessions = [...this.#sessions.values()];
|
|
1535
|
+
const nativeBrowserSessions = [...this.#nativeBrowserSessions.values()];
|
|
1456
1536
|
this.#sessions.clear();
|
|
1457
|
-
|
|
1537
|
+
this.#nativeBrowserSessions.clear();
|
|
1538
|
+
await Promise.all([...sessions, ...nativeBrowserSessions].map(async (session) => await session.close()));
|
|
1458
1539
|
};
|
|
1459
1540
|
ensureSession = async (options) => {
|
|
1460
1541
|
const existing = this.#sessions.get(options.sessionId);
|
|
@@ -1471,7 +1552,22 @@ export class AcpSessionManager {
|
|
|
1471
1552
|
}
|
|
1472
1553
|
return started;
|
|
1473
1554
|
};
|
|
1474
|
-
|
|
1555
|
+
async #ensureNativeSessionBrowser(options) {
|
|
1556
|
+
const existing = this.#nativeBrowserSessions.get(options.sessionId);
|
|
1557
|
+
if (existing !== undefined) {
|
|
1558
|
+
if (!existing.belongsTo(options.agent.id, options.cwd, options.additionalDirectories)) {
|
|
1559
|
+
throw new AcpExecutionError("The agent or workspace cannot change after a conversation has started", {}, "session_identity_mismatch");
|
|
1560
|
+
}
|
|
1561
|
+
return existing;
|
|
1562
|
+
}
|
|
1563
|
+
await this.prepareNativeSessionBrowser(options);
|
|
1564
|
+
const started = this.#nativeBrowserSessions.get(options.sessionId);
|
|
1565
|
+
if (started === undefined) {
|
|
1566
|
+
throw new AcpExecutionError("ACP native session browser did not start");
|
|
1567
|
+
}
|
|
1568
|
+
return started;
|
|
1569
|
+
}
|
|
1570
|
+
listNativeSessions = async (options, cursor) => await (await this.#ensureNativeSessionBrowser(options)).listNativeSessions(cursor, options.signal);
|
|
1475
1571
|
openNativeSession = async (options, origin) => {
|
|
1476
1572
|
const key = `${options.agent.id}:${origin.nativeSessionId}`;
|
|
1477
1573
|
if (this.#nativeOperations.has(key))
|
|
@@ -1540,7 +1636,7 @@ export class AcpSessionManager {
|
|
|
1540
1636
|
}
|
|
1541
1637
|
};
|
|
1542
1638
|
deleteNativeSession = async (options, nativeSessionId) => {
|
|
1543
|
-
const runtime = await this
|
|
1639
|
+
const runtime = await this.#ensureNativeSessionBrowser(options);
|
|
1544
1640
|
const key = `${options.agent.id}:${nativeSessionId}`;
|
|
1545
1641
|
const linked = this.#store.findNative(options.agent.id, nativeSessionId);
|
|
1546
1642
|
if (this.#nativeOperations.has(key) ||
|
|
@@ -1560,7 +1656,8 @@ export class AcpSessionManager {
|
|
|
1560
1656
|
await runtime.deleteNativeSession(nativeSessionId, options.signal);
|
|
1561
1657
|
const deleted = this.#store.markDeleted(options.agent.id, nativeSessionId);
|
|
1562
1658
|
if (runtime.nativeSessionId() === nativeSessionId) {
|
|
1563
|
-
this.#
|
|
1659
|
+
this.#nativeBrowserSessions.delete(options.sessionId);
|
|
1660
|
+
this.#nativeBrowserStore.remove(options.sessionId);
|
|
1564
1661
|
await runtime.close();
|
|
1565
1662
|
}
|
|
1566
1663
|
return deleted;
|