@moxt-ai/mobius 0.0.183 → 0.0.185

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.
@@ -1 +1 @@
1
- {"version":3,"file":"daemon-session-commands.d.ts","sourceRoot":"","sources":["../src/daemon-session-commands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,uBAAuB,EACvB,qBAAqB,EAErB,qBAAqB,EACrB,oBAAoB,EACvB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAExC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC;AACxF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGhD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAqFpF,wBAAsB,oBAAoB,CACtC,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,oBAAoB,EAC7B,WAAW,EAAE,yBAAyB,EACtC,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,WAAW,GACpB,OAAO,CAAC,IAAI,CAAC,CAoBf;AAED,wBAAsB,qBAAqB,CACvC,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,qBAAqB,EAC9B,MAAM,EAAE,YAAY,EACpB,WAAW,EAAE,yBAAyB,EACtC,KAAK,EAAE,UAAU,EACjB,QAAQ,EAAE,mBAAmB,EAC7B,WAAW,EAAE,0BAA0B,EACvC,MAAM,EAAE,WAAW,GACpB,OAAO,CAAC,IAAI,CAAC,CA8Bf;AAED,wBAAsB,qBAAqB,CACvC,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,qBAAqB,EAC9B,MAAM,EAAE,YAAY,EACpB,WAAW,EAAE,yBAAyB,EACtC,KAAK,EAAE,UAAU,EACjB,QAAQ,EAAE,mBAAmB,EAC7B,cAAc,EAAE,oBAAoB,EACpC,WAAW,EAAE,0BAA0B,EACvC,MAAM,EAAE,WAAW,GACpB,OAAO,CAAC,IAAI,CAAC,CAoDf;AAED,wBAAsB,uBAAuB,CACzC,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,uBAAuB,EAChC,MAAM,EAAE,YAAY,EACpB,WAAW,EAAE,yBAAyB,EACtC,KAAK,EAAE,UAAU,EACjB,QAAQ,EAAE,mBAAmB,EAC7B,MAAM,EAAE,WAAW,GACpB,OAAO,CAAC,IAAI,CAAC,CAsCf"}
1
+ {"version":3,"file":"daemon-session-commands.d.ts","sourceRoot":"","sources":["../src/daemon-session-commands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,uBAAuB,EACvB,qBAAqB,EAErB,qBAAqB,EACrB,oBAAoB,EACvB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAExC,OAAO,KAAK,EAAsB,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAC9F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC;AACxF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGhD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAwFpF,wBAAsB,oBAAoB,CACtC,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,oBAAoB,EAC7B,WAAW,EAAE,yBAAyB,EACtC,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,WAAW,GACpB,OAAO,CAAC,IAAI,CAAC,CAoBf;AAED,wBAAsB,qBAAqB,CACvC,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,qBAAqB,EAC9B,MAAM,EAAE,YAAY,EACpB,WAAW,EAAE,yBAAyB,EACtC,KAAK,EAAE,UAAU,EACjB,QAAQ,EAAE,mBAAmB,EAC7B,WAAW,EAAE,0BAA0B,EACvC,MAAM,EAAE,WAAW,GACpB,OAAO,CAAC,IAAI,CAAC,CAuCf;AAED,wBAAsB,qBAAqB,CACvC,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,qBAAqB,EAC9B,MAAM,EAAE,YAAY,EACpB,WAAW,EAAE,yBAAyB,EACtC,KAAK,EAAE,UAAU,EACjB,QAAQ,EAAE,mBAAmB,EAC7B,cAAc,EAAE,oBAAoB,EACpC,WAAW,EAAE,0BAA0B,EACvC,MAAM,EAAE,WAAW,GACpB,OAAO,CAAC,IAAI,CAAC,CAqDf;AAED,wBAAsB,uBAAuB,CACzC,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,uBAAuB,EAChC,MAAM,EAAE,YAAY,EACpB,WAAW,EAAE,yBAAyB,EACtC,KAAK,EAAE,UAAU,EACjB,QAAQ,EAAE,mBAAmB,EAC7B,MAAM,EAAE,WAAW,GACpB,OAAO,CAAC,IAAI,CAAC,CAsCf"}
@@ -2,7 +2,7 @@ import { AcpExecutionError } from "./acp/acp-error.js";
2
2
  import { resolveSessionDirectories } from "./authorization/resolve-session-directories.js";
3
3
  import { operationErrorCode, reportOperationFailure, send } from "./daemon-command-results.js";
4
4
  import { AccumulatingOperationMetrics } from "./infra/operation-metrics.js";
5
- async function prepareSession(command, config, directories, audit, sessions, metrics, signal) {
5
+ async function prepareSession(command, recovery, config, directories, audit, sessions, metrics, signal) {
6
6
  return await metrics.measure("prepare-total", async () => {
7
7
  const resolved = await metrics.measure("workspace-resolve", async () => await resolveSessionDirectories(directories, config.bindingId, command.directoryId, command.additionalDirectoryIds, signal));
8
8
  const agent = config.catalog.find(command.agentId);
@@ -15,7 +15,9 @@ async function prepareSession(command, config, directories, audit, sessions, met
15
15
  };
16
16
  const prepared = command.transient === true
17
17
  ? await sessions.inspectSession(preparation, metrics)
18
- : await sessions.prepareSession(preparation, metrics);
18
+ : recovery.kind === "history-required"
19
+ ? await sessions.restoreSession(preparation, metrics)
20
+ : await sessions.prepareSession(preparation, metrics);
19
21
  const configuration = command.configuration;
20
22
  const configOptions = configuration === undefined
21
23
  ? prepared.configOptions
@@ -82,7 +84,7 @@ export async function executeWorkspaceList(socket, command, directories, audit,
82
84
  export async function executeSessionPrepare(socket, command, config, directories, audit, sessions, diagnostics, signal) {
83
85
  const metrics = new AccumulatingOperationMetrics();
84
86
  try {
85
- const readyEvent = await prepareSession(command, config, directories, audit, sessions, metrics, signal);
87
+ const readyEvent = await prepareSession(command, { kind: "interactive-only" }, config, directories, audit, sessions, metrics, signal);
86
88
  send(socket, {
87
89
  ...readyEvent,
88
90
  runtimeTimings: metrics.snapshot(),
@@ -125,7 +127,7 @@ export async function executeSessionRestore(socket, command, config, directories
125
127
  requestId: command.requestId,
126
128
  sessionId: command.sessionId,
127
129
  sessionState: "provisioned",
128
- }, config, directories, audit, sessions, metrics, signal);
130
+ }, { kind: "history-required" }, config, directories, audit, sessions, metrics, signal);
129
131
  send(socket, {
130
132
  entry,
131
133
  kind: "session.restored",
@@ -1 +1 @@
1
- {"version":3,"file":"daemon-session-commands.js","sourceRoot":"","sources":["../src/daemon-session-commands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"daemon-session-commands.js","sourceRoot":"","sources":["../src/daemon-session-commands.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -23242,6 +23242,18 @@ function readString2(value, fallback = "") {
23242
23242
  }
23243
23243
 
23244
23244
  // src/acp/agent-connection.ts
23245
+ function requestErrorMessage(error62) {
23246
+ const fallback = truncate2(error62.message, 500);
23247
+ if (error62.message !== "Internal error" || !isRecord4(error62.data)) {
23248
+ return fallback;
23249
+ }
23250
+ const agentError = error62.data["error"];
23251
+ if (!isRecord4(agentError)) {
23252
+ return fallback;
23253
+ }
23254
+ const message = agentError["message"];
23255
+ return typeof message === "string" && message.length > 0 ? truncate2(message, 500) : fallback;
23256
+ }
23245
23257
  function readableWebStream(input2) {
23246
23258
  let streamOpen = true;
23247
23259
  return new ReadableStream({
@@ -23413,7 +23425,7 @@ var AgentConnection = class {
23413
23425
  );
23414
23426
  }
23415
23427
  if (error62 instanceof RequestError) {
23416
- throw new AcpExecutionError(truncate2(error62.message, 500), { cause: error62 }, "acp_agent_error");
23428
+ throw new AcpExecutionError(requestErrorMessage(error62), { cause: error62 }, "acp_agent_error");
23417
23429
  }
23418
23430
  throw error62;
23419
23431
  }
@@ -30278,11 +30290,11 @@ var AgentSession = class _AgentSession {
30278
30290
  }
30279
30291
  throw new AcpExecutionError("ACP agent initialization failed");
30280
30292
  }
30281
- static start = async (options, getObserver, store, metrics, contentExternalizer) => await _AgentSession.#start(
30293
+ static start = async (options, recovery, getObserver, store, metrics, contentExternalizer) => await _AgentSession.#start(
30282
30294
  options,
30283
30295
  getObserver,
30284
30296
  store,
30285
- async (runtime) => await runtime.initialize(options.signal, options.origin),
30297
+ async (runtime) => await runtime.initialize(options.signal, recovery, options.origin),
30286
30298
  metrics,
30287
30299
  contentExternalizer
30288
30300
  );
@@ -30320,6 +30332,16 @@ var AgentSession = class _AgentSession {
30320
30332
  const history = await this.#completedHistory(signal, "ACP agent exited while loading history");
30321
30333
  return await embedLocalHistoryImages(await history.snapshot(), signal);
30322
30334
  };
30335
+ ensureHistoryLoaded = async (signal) => {
30336
+ if (!this.#capabilities.loadSession) {
30337
+ throw new AcpExecutionError(
30338
+ "This Agent restores context but does not provide message history.",
30339
+ {},
30340
+ "native_history_unsupported"
30341
+ );
30342
+ }
30343
+ await this.#completedHistory(signal, "ACP agent exited while loading history");
30344
+ };
30323
30345
  loadHistoryEventsV2 = async (eventLimit, cursor, signal) => {
30324
30346
  if (!this.#capabilities.loadSession) {
30325
30347
  throw new AcpExecutionError(
@@ -30492,7 +30514,7 @@ var AgentSession = class _AgentSession {
30492
30514
  128
30493
30515
  );
30494
30516
  }
30495
- initialize = async (signal, origin) => {
30517
+ initialize = async (signal, recovery, origin) => {
30496
30518
  await this.#initializeAgent(signal);
30497
30519
  let stored = this.#metrics.measureSync(
30498
30520
  "session-state-read",
@@ -30561,7 +30583,19 @@ var AgentSession = class _AgentSession {
30561
30583
  this.#prompted = stored.session.prompted;
30562
30584
  this.#sessionTitle = stored.session.title;
30563
30585
  this.#restored = true;
30564
- if (this.#capabilities.resumeSession) {
30586
+ if (recovery.kind === "history-required") {
30587
+ if (!this.#capabilities.loadSession) {
30588
+ throw new AcpExecutionError(
30589
+ "This Agent restores context but does not provide message history.",
30590
+ {},
30591
+ "native_history_unsupported"
30592
+ );
30593
+ }
30594
+ lifecycleResponse = await this.#metrics.measure(
30595
+ "session-load",
30596
+ async () => (await this.#loadSession(signal, "ACP agent exited while loading a session")).response
30597
+ );
30598
+ } else if (this.#capabilities.resumeSession) {
30565
30599
  lifecycleResponse = await this.#metrics.measure(
30566
30600
  "session-resume",
30567
30601
  async () => await this.race(
@@ -32179,12 +32213,13 @@ var AgentRuntimeManager = class {
32179
32213
  this.#executionProcesses.retain(options.sessionId, runtime);
32180
32214
  return runtime;
32181
32215
  }
32182
- async #startPreparation(options, metrics = unmeasuredOperationMetrics) {
32216
+ async #startPreparation(options, recovery, metrics = unmeasuredOperationMetrics) {
32183
32217
  return await this.#executionProcesses.prepare(options.sessionId, async () => {
32184
32218
  return await this.#startRetainedSessionProcess(
32185
32219
  options,
32186
32220
  async () => await AgentSession.start(
32187
32221
  options.origin === void 0 && this.#sessionIdentity === "native" && isNativeChatSessionId(options.agent.id, options.sessionId) && this.#store.read(options.sessionId) instanceof MissingAcpStoredSession ? { ...options, origin: { kind: "import", nativeSessionId: options.sessionId } } : options,
32222
+ recovery,
32188
32223
  () => this.#observer,
32189
32224
  this.#store,
32190
32225
  metrics,
@@ -32193,7 +32228,7 @@ var AgentRuntimeManager = class {
32193
32228
  );
32194
32229
  });
32195
32230
  }
32196
- async #replacePreparation(existing, options, metrics) {
32231
+ async #replacePreparation(existing, options, recovery, metrics) {
32197
32232
  return await this.#executionProcesses.prepare(options.sessionId, async () => {
32198
32233
  await this.#retireSessionProcess(
32199
32234
  options.sessionId,
@@ -32205,6 +32240,7 @@ var AgentRuntimeManager = class {
32205
32240
  options,
32206
32241
  async () => await AgentSession.start(
32207
32242
  options,
32243
+ recovery,
32208
32244
  () => this.#observer,
32209
32245
  this.#store,
32210
32246
  metrics,
@@ -32221,6 +32257,7 @@ var AgentRuntimeManager = class {
32221
32257
  options,
32222
32258
  async () => await AgentSession.start(
32223
32259
  options,
32260
+ { kind: "interactive-only" },
32224
32261
  () => this.#observer,
32225
32262
  this.#store,
32226
32263
  unmeasuredOperationMetrics,
@@ -32264,42 +32301,58 @@ var AgentRuntimeManager = class {
32264
32301
  return runtime;
32265
32302
  });
32266
32303
  }
32267
- prepareSession = async (options, metrics = unmeasuredOperationMetrics) => this.#operations.run(options, async (options2) => {
32268
- const stored = metrics.measureSync("session-state-read", () => this.#store.read(options2.sessionId));
32269
- if (stored instanceof FoundAcpStoredSession && this.#nativeOperations.has(`${stored.session.agentId}:${stored.session.nativeSessionId}`)) {
32270
- throw new AcpExecutionError("The native session is being managed", {}, "session_busy");
32271
- }
32272
- const pending = this.#executionProcesses.pending(options2.sessionId);
32273
- if (pending !== void 0) {
32274
- const runtime2 = await metrics.measure(
32275
- "session-preparation-wait",
32276
- async () => await waitForSharedOperation(pending, options2.signal)
32277
- );
32278
- if (runtime2.belongsTo(options2.agent.id, options2.cwd, options2.additionalDirectories)) {
32279
- this.#executionProcesses.touch(options2.sessionId, runtime2);
32280
- return runtime2.prepared();
32281
- }
32282
- return await this.prepareSession(options2, metrics);
32283
- }
32284
- const existing = this.#executionProcesses.get(options2.sessionId);
32285
- if (existing !== void 0) {
32286
- if (existing.belongsTo(options2.agent.id, options2.cwd, options2.additionalDirectories)) {
32287
- this.#executionProcesses.touch(options2.sessionId, existing);
32288
- return existing.prepared();
32304
+ async #prepareSession(options, recovery, metrics = unmeasuredOperationMetrics) {
32305
+ return await this.#operations.run(options, async (options2) => {
32306
+ const stored = metrics.measureSync("session-state-read", () => this.#store.read(options2.sessionId));
32307
+ if (stored instanceof FoundAcpStoredSession && this.#nativeOperations.has(`${stored.session.agentId}:${stored.session.nativeSessionId}`)) {
32308
+ throw new AcpExecutionError("The native session is being managed", {}, "session_busy");
32289
32309
  }
32290
- if (!existing.canRebind()) {
32291
- throw new AcpExecutionError(
32292
- "The agent or workspace cannot change after a conversation has started",
32293
- {},
32294
- "session_identity_mismatch"
32310
+ const pending = this.#executionProcesses.pending(options2.sessionId);
32311
+ if (pending !== void 0) {
32312
+ const runtime2 = await metrics.measure(
32313
+ "session-preparation-wait",
32314
+ async () => await waitForSharedOperation(pending, options2.signal)
32295
32315
  );
32316
+ if (runtime2.belongsTo(options2.agent.id, options2.cwd, options2.additionalDirectories)) {
32317
+ this.#executionProcesses.touch(options2.sessionId, runtime2);
32318
+ if (recovery.kind === "history-required") {
32319
+ await metrics.measure(
32320
+ "session-load",
32321
+ async () => await runtime2.ensureHistoryLoaded(options2.signal)
32322
+ );
32323
+ }
32324
+ return runtime2.prepared();
32325
+ }
32326
+ return await this.#prepareSession(options2, recovery, metrics);
32327
+ }
32328
+ const existing = this.#executionProcesses.get(options2.sessionId);
32329
+ if (existing !== void 0) {
32330
+ if (existing.belongsTo(options2.agent.id, options2.cwd, options2.additionalDirectories)) {
32331
+ this.#executionProcesses.touch(options2.sessionId, existing);
32332
+ if (recovery.kind === "history-required") {
32333
+ await metrics.measure(
32334
+ "session-load",
32335
+ async () => await existing.ensureHistoryLoaded(options2.signal)
32336
+ );
32337
+ }
32338
+ return existing.prepared();
32339
+ }
32340
+ if (!existing.canRebind()) {
32341
+ throw new AcpExecutionError(
32342
+ "The agent or workspace cannot change after a conversation has started",
32343
+ {},
32344
+ "session_identity_mismatch"
32345
+ );
32346
+ }
32347
+ const runtime2 = await this.#replacePreparation(existing, options2, recovery, metrics);
32348
+ return runtime2.prepared();
32296
32349
  }
32297
- const runtime2 = await this.#replacePreparation(existing, options2, metrics);
32298
- return runtime2.prepared();
32299
- }
32300
- const runtime = await this.#startPreparation(options2, metrics);
32301
- return runtime.prepared();
32302
- });
32350
+ const runtime = await this.#startPreparation(options2, recovery, metrics);
32351
+ return runtime.prepared();
32352
+ });
32353
+ }
32354
+ prepareSession = async (options, metrics = unmeasuredOperationMetrics) => await this.#prepareSession(options, { kind: "interactive-only" }, metrics);
32355
+ restoreSession = async (options, metrics = unmeasuredOperationMetrics) => await this.#prepareSession(options, { kind: "history-required" }, metrics);
32303
32356
  /**
32304
32357
  * Opens a short-lived native ACP session only to read the local Agent's
32305
32358
  * authoritative settings. Its identity and store are private to this
@@ -32313,6 +32366,7 @@ var AgentRuntimeManager = class {
32313
32366
  ...options2,
32314
32367
  sessionId: `agent-settings-${crypto.randomUUID()}`
32315
32368
  },
32369
+ { kind: "interactive-only" },
32316
32370
  () => this.#agentSettingsObserver,
32317
32371
  new MemoryAcpSessionStore(),
32318
32372
  unmeasuredOperationMetrics,
@@ -32350,7 +32404,7 @@ var AgentRuntimeManager = class {
32350
32404
  );
32351
32405
  }
32352
32406
  return await this.#executionProcesses.use(options2.sessionId, async () => {
32353
- const runtime = await this.#startPreparation(options2, metrics);
32407
+ const runtime = await this.#startPreparation(options2, { kind: "interactive-only" }, metrics);
32354
32408
  try {
32355
32409
  return runtime.prepared();
32356
32410
  } finally {
@@ -32370,7 +32424,7 @@ var AgentRuntimeManager = class {
32370
32424
  }
32371
32425
  const existing = this.#executionProcesses.get(options2.sessionId);
32372
32426
  if (existing === void 0) {
32373
- return (await this.#startPreparation(options2)).prepared();
32427
+ return (await this.#startPreparation(options2, { kind: "interactive-only" })).prepared();
32374
32428
  }
32375
32429
  if (!existing.belongsTo(options2.agent.id, options2.cwd, options2.additionalDirectories)) {
32376
32430
  throw new AcpExecutionError(
@@ -32555,7 +32609,7 @@ var AgentRuntimeManager = class {
32555
32609
  const temporaryOptions = { ...options2, sessionId: temporarySessionId };
32556
32610
  return await this.#executionProcesses.use(temporarySessionId, async () => {
32557
32611
  try {
32558
- const runtime = await this.#startPreparation(temporaryOptions);
32612
+ const runtime = await this.#startPreparation(temporaryOptions, { kind: "interactive-only" });
32559
32613
  let adopted = false;
32560
32614
  try {
32561
32615
  const nativeSessionId = runtime.nativeSessionId();
@@ -32721,7 +32775,7 @@ var AgentRuntimeManager = class {
32721
32775
  return await this.#executionProcesses.use(options2.sessionId, async () => {
32722
32776
  this.#nativeOperations.add(key);
32723
32777
  try {
32724
- const runtime = await this.#startPreparation({ ...options2, origin });
32778
+ const runtime = await this.#startPreparation({ ...options2, origin }, { kind: "interactive-only" });
32725
32779
  const openedKey = `${options2.agent.id}:${runtime.nativeSessionId()}`;
32726
32780
  this.#nativeOperations.add(openedKey);
32727
32781
  try {
@@ -42203,7 +42257,7 @@ async function executePrompt({
42203
42257
  }
42204
42258
 
42205
42259
  // src/daemon-session-commands.ts
42206
- async function prepareSession(command, config2, directories, audit, sessions, metrics, signal) {
42260
+ async function prepareSession(command, recovery, config2, directories, audit, sessions, metrics, signal) {
42207
42261
  return await metrics.measure("prepare-total", async () => {
42208
42262
  const resolved = await metrics.measure(
42209
42263
  "workspace-resolve",
@@ -42223,7 +42277,7 @@ async function prepareSession(command, config2, directories, audit, sessions, me
42223
42277
  sessionId: command.sessionId,
42224
42278
  signal
42225
42279
  };
42226
- const prepared = command.transient === true ? await sessions.inspectSession(preparation, metrics) : await sessions.prepareSession(preparation, metrics);
42280
+ const prepared = command.transient === true ? await sessions.inspectSession(preparation, metrics) : recovery.kind === "history-required" ? await sessions.restoreSession(preparation, metrics) : await sessions.prepareSession(preparation, metrics);
42227
42281
  const configuration = command.configuration;
42228
42282
  const configOptions = configuration === void 0 ? prepared.configOptions : await metrics.measure(
42229
42283
  "configuration",
@@ -42293,7 +42347,16 @@ async function executeWorkspaceList(socket, command, directories, audit, signal)
42293
42347
  async function executeSessionPrepare(socket, command, config2, directories, audit, sessions, diagnostics, signal) {
42294
42348
  const metrics = new AccumulatingOperationMetrics();
42295
42349
  try {
42296
- const readyEvent = await prepareSession(command, config2, directories, audit, sessions, metrics, signal);
42350
+ const readyEvent = await prepareSession(
42351
+ command,
42352
+ { kind: "interactive-only" },
42353
+ config2,
42354
+ directories,
42355
+ audit,
42356
+ sessions,
42357
+ metrics,
42358
+ signal
42359
+ );
42297
42360
  send(socket, {
42298
42361
  ...readyEvent,
42299
42362
  runtimeTimings: metrics.snapshot()
@@ -42342,6 +42405,7 @@ async function executeSessionRestore(socket, command, config2, directories, audi
42342
42405
  sessionId: command.sessionId,
42343
42406
  sessionState: "provisioned"
42344
42407
  },
42408
+ { kind: "history-required" },
42345
42409
  config2,
42346
42410
  directories,
42347
42411
  audit,