@omercnet/paseo-omp 1.0.3-next.190.1 → 1.0.3-next.193.1

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@omercnet/paseo-omp",
3
- "version": "1.0.3-next.190.1",
3
+ "version": "1.0.3-next.193.1",
4
4
  "type": "module",
5
5
  "description": "Paseo integration for OMP, including its direct provider and workspace tooling.",
6
6
  "license": "MIT",
@@ -1,2 +1,2 @@
1
1
  /** Release Please keeps this bundle-safe constant aligned with package.json. */
2
- export const PASEO_OMP_PACKAGE_VERSION = "1.0.3-next.190.1"; // x-release-please-version
2
+ export const PASEO_OMP_PACKAGE_VERSION = "1.0.3-next.193.1"; // x-release-please-version
@@ -33,6 +33,8 @@ export interface OmpStartOptions {
33
33
  requestTimeoutMs?: number;
34
34
  /** Resume this exact native OMP session; never use this to start a new conversation. */
35
35
  resumeSessionId?: string;
36
+ /** Authorized transcript of `resumeSessionId`; when set, OMP resumes this file directly. */
37
+ resumeSessionFile?: string;
36
38
  noSession?: boolean;
37
39
  signal?: AbortSignal;
38
40
  }
@@ -340,7 +342,12 @@ export function buildOmpSpawnRequest(
340
342
  validateBoundedText(options.sessionDir, "session directory", MAX_PATH_LENGTH),
341
343
  );
342
344
  }
343
- if (options.resumeSessionId !== undefined) {
345
+ if (options.resumeSessionFile !== undefined) {
346
+ // OMP opens an absolute .jsonl directly, skipping its id lookup and global fallback.
347
+ const file = validateBoundedText(options.resumeSessionFile, "session file", MAX_PATH_LENGTH);
348
+ if (!isAbsolute(file) || !file.endsWith(".jsonl")) throw new Error("Invalid OMP session file");
349
+ args.push("--resume", file);
350
+ } else if (options.resumeSessionId !== undefined) {
344
351
  args.push("--resume", validateNativeSessionId(options.resumeSessionId));
345
352
  }
346
353
  if (options.noSession) args.push("--no-session");
@@ -10,8 +10,10 @@ const MAX_DESCRIPTOR_PREFIX_BYTES = 64 * 1024;
10
10
  const MAX_DESCRIPTOR_SUFFIX_BYTES = 64 * 1024;
11
11
  const MAX_PROMPT_PREVIEW_CHARS = 160;
12
12
  const MAX_DIRECTORY_DEPTH = 8;
13
- const MAX_SCAN_DIRECTORIES = 1_024;
14
- const MAX_SCAN_FILES = 10_000;
13
+ // Count caps only bound memory; the byte and time budgets bound scan work. OMP keeps one
14
+ // directory per workspace, so these must exceed real session trees or lookups silently miss.
15
+ const MAX_SCAN_DIRECTORIES = 65_536;
16
+ const MAX_SCAN_FILES = 262_144;
15
17
  const MAX_SCAN_BYTES = 16 * 1024 * 1024;
16
18
  const MAX_SCAN_MS = 1_000;
17
19
  const SCAN_YIELD_INTERVAL = 128;
@@ -490,7 +490,13 @@ export class OmpProviderSession {
490
490
  ...normalizedConfig,
491
491
  // Thinking is authorized only after this runtime reports its exact model catalog.
492
492
  thinkingOption: undefined,
493
- ...(resumeSessionId ? { systemPrompt: undefined, resumeSessionId } : {}),
493
+ ...(resumeSessionId
494
+ ? {
495
+ systemPrompt: undefined,
496
+ resumeSessionId,
497
+ resumeSessionFile: persistedDescriptor?.transcriptFile,
498
+ }
499
+ : {}),
494
500
  signal,
495
501
  environment,
496
502
  };
@@ -1990,7 +1996,9 @@ export class OmpProviderSession {
1990
1996
  recovered = await this.runtimeFactory.startSession({
1991
1997
  ...this.recoveryOptions,
1992
1998
  ...(recoverFromNativeConfig ? { model: undefined, thinkingOption: undefined } : {}),
1993
- ...(expectedSessionId ? { resumeSessionId: expectedSessionId } : {}),
1999
+ ...(expectedSessionId
2000
+ ? { resumeSessionId: expectedSessionId, resumeSessionFile: this.nativeSessionFile }
2001
+ : {}),
1994
2002
  signal: this.lifetime.signal,
1995
2003
  });
1996
2004
  } catch (error) {