@botiverse/oar 0.70.0 → 0.71.0

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/README.md CHANGED
@@ -137,7 +137,7 @@ Community runtimes are contributed and maintained outside the core team (each ma
137
137
  configuration and `SessionOptions.model`. When resuming an old Azure session,
138
138
  explicitly pass `model: "azure/<model>"`; without it, Pi can retain the
139
139
  conversation while selecting a different default model. The opening `model`
140
- event and `Session.model()` report the effective selection. OAR's `^1.3.0`
140
+ event and `Session.model()` report the effective selection. OAR's `^1.4.0`
141
141
  dependency range includes this upstream update. See the
142
142
  [migration evidence and limits](https://github.com/botiverse/oar/blob/main/experiments/runtime-version-checks/2026-10-05.md).
143
143
 
@@ -343,7 +343,11 @@ TypeScript hosts: keep `skipLibCheck` on. With `skipLibCheck: false` and `module
343
343
 
344
344
  ## Host-owned durable sessions
345
345
 
346
- Install the optional native peers in the host: `npm install @earendil-works/pi-durable@~1.3.0 @earendil-works/chord@~1.3.0`.
346
+ Install the optional native peers in the host: `npm install @earendil-works/pi-durable@~1.4.0 @earendil-works/chord@~1.4.0`.
347
+ Upgrade both together. Native 1.4.0 migrates SQLite storage to schema 2,
348
+ which cannot be reopened by 1.3.0 or earlier; see the
349
+ [host upgrade notes](https://github.com/botiverse/oar/blob/main/docs/runtimes/pi-durable.md#native-objects-and-calling-interface)
350
+ for storage and extension API changes.
347
351
  The factory lives only in `@botiverse/oar/pi-durable`, usable in Node and browsers.
348
352
  The root and browser core entries load without these peers.
349
353
 
@@ -351,7 +355,7 @@ The root and browser core entries load without these peers.
351
355
  import { viewOf } from "@botiverse/oar/browser";
352
356
  import { createPiDurableRuntime } from "@botiverse/oar/pi-durable";
353
357
 
354
- // Use the same Models instance that the host passed to Harness.open.
358
+ // Use the same Models instance or () => Models supplier passed to Harness.open.
355
359
  const runtime = createPiDurableRuntime({ harness, models });
356
360
  const session = await runtime.session({ kind: "available", via: "bundled" }, {
357
361
  cwd: "/workspace", model: "provider/model",
@@ -360,7 +364,7 @@ session.rawEvents(() => render(viewOf(session.records())));
360
364
  await session.prompt("Hello", { inputId: crypto.randomUUID() });
361
365
  ```
362
366
 
363
- The host owns its Pi Durable 1.3.0 Harness, providers, credentials, extensions
367
+ The host owns its Pi Durable 1.4.0 Harness, providers, credentials, extensions
364
368
  and storage. `resume: session.id` attaches to that storage's conversation and
365
369
  resumes unfinished work. Queue and input-id deduplication are native and
366
370
  durable. `dispose()` detaches the observer; it does not stop work or close the
@@ -4,9 +4,9 @@ import { type Runtime } from "../../contracts/runtime.js";
4
4
  export interface PiDurableRuntimeOptions {
5
5
  /** An already-open host-owned Harness. OAR never closes it or its storage. */
6
6
  readonly harness: Harness;
7
- /** The same Models passed to Harness.open; native Harness exposes no getter, so OAR cannot verify identity. */
8
- readonly models: Models;
7
+ /** The same catalog or supplier passed to Harness.open. Resolved at each listing and session open, including resume; native Harness exposes no getter, so OAR cannot verify identity. */
8
+ readonly models: Models | (() => Models);
9
9
  }
10
- /** Pi Durable 1.1.0 conversations over host-owned storage, providers, extensions and execution environment. */
10
+ /** Pi Durable conversations over host-owned storage, providers, extensions and execution environment. */
11
11
  export declare function createPiDurableRuntime({ harness, models }: PiDurableRuntimeOptions): Runtime;
12
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtimes/pi-durable/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAG1D,OAAO,EAAiB,KAAK,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAMzE,MAAM,WAAW,uBAAuB;IACtC,8EAA8E;IAC9E,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,+GAA+G;IAC/G,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,+GAA+G;AAC/G,wBAAgB,sBAAsB,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,uBAAuB,GAAG,OAAO,CAc5F"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtimes/pi-durable/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAG1D,OAAO,EAAiB,KAAK,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAMzE,MAAM,WAAW,uBAAuB;IACtC,8EAA8E;IAC9E,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,yLAAyL;IACzL,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,CAAC;CAC1C;AAED,yGAAyG;AACzG,wBAAgB,sBAAsB,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,uBAAuB,GAAG,OAAO,CAe5F"}
@@ -4,19 +4,20 @@ import { runtimeBrands } from "../../brands.js";
4
4
  import { projectPiModels } from "../pi/model-projection.js";
5
5
  import { piDurableRefusedSessionOptions } from "./options.js";
6
6
  import { piDurableSession } from "./session.js";
7
- /** Pi Durable 1.1.0 conversations over host-owned storage, providers, extensions and execution environment. */
7
+ /** Pi Durable conversations over host-owned storage, providers, extensions and execution environment. */
8
8
  export function createPiDurableRuntime({ harness, models }) {
9
+ const currentModels = typeof models === "function" ? models : () => models;
9
10
  const runtime = defineRuntime({
10
11
  id: "pi-durable",
11
12
  brand: runtimeBrands["pi-durable"],
12
13
  refusedSessionOptions: piDurableRefusedSessionOptions,
13
14
  installation: async () => { await Promise.resolve(); return { kind: "available", via: "bundled" }; },
14
- listModels: async () => { await Promise.resolve(); return { kind: "ok", models: projectPiModels(models.getModels(), getSupportedThinkingLevels) }; },
15
+ listModels: async () => { await Promise.resolve(); return { kind: "ok", models: projectPiModels(currentModels().getModels(), getSupportedThinkingLevels) }; },
15
16
  session: async (installation, options) => {
16
17
  if (installation.via !== "bundled") {
17
18
  throw new Error("pi-durable requires the host's bundled Harness");
18
19
  }
19
- const session = await piDurableSession(harness, models, options);
20
+ const session = await piDurableSession(harness, currentModels(), options);
20
21
  return session;
21
22
  },
22
23
  });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtimes/pi-durable/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAI1E,OAAO,EAAE,aAAa,EAAgB,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,8BAA8B,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAShD,+GAA+G;AAC/G,MAAM,UAAU,sBAAsB,CAAC,EAAE,OAAO,EAAE,MAAM,EAA2B;IACjF,MAAM,OAAO,GAAG,aAAa,CAAC;QAC5B,EAAE,EAAE,YAAY;QAChB,KAAK,EAAE,aAAa,CAAC,YAAY,CAAC;QAClC,qBAAqB,EAAE,8BAA8B;QACrD,YAAY,EAAE,KAAK,IAAI,EAAE,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;QACpG,UAAU,EAAE,KAAK,IAAI,EAAE,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,0BAA0B,CAAC,EAAE,CAAC,CAAC,CAAC;QACpJ,OAAO,EAAE,KAAK,EAAE,YAAmC,EAAE,OAAuB,EAAE,EAAE;YAC9E,IAAI,YAAY,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;gBAAC,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;YAAC,CAAC;YAC1G,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YACjE,OAAO,OAAO,CAAC;QACjB,CAAC;KACF,CAAC,CAAC;IACH,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtimes/pi-durable/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAI1E,OAAO,EAAE,aAAa,EAAgB,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,8BAA8B,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAShD,yGAAyG;AACzG,MAAM,UAAU,sBAAsB,CAAC,EAAE,OAAO,EAAE,MAAM,EAA2B;IACjF,MAAM,aAAa,GAAG,OAAO,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAW,EAAE,CAAC,MAAM,CAAC;IACnF,MAAM,OAAO,GAAG,aAAa,CAAC;QAC5B,EAAE,EAAE,YAAY;QAChB,KAAK,EAAE,aAAa,CAAC,YAAY,CAAC;QAClC,qBAAqB,EAAE,8BAA8B;QACrD,YAAY,EAAE,KAAK,IAAI,EAAE,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;QACpG,UAAU,EAAE,KAAK,IAAI,EAAE,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,eAAe,CAAC,aAAa,EAAE,CAAC,SAAS,EAAE,EAAE,0BAA0B,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7J,OAAO,EAAE,KAAK,EAAE,YAAmC,EAAE,OAAuB,EAAE,EAAE;YAC9E,IAAI,YAAY,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;gBAAC,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;YAAC,CAAC;YAC1G,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,OAAO,EAAE,aAAa,EAAE,EAAE,OAAO,CAAC,CAAC;YAC1E,OAAO,OAAO,CAAC;QACjB,CAAC;KACF,CAAC,CAAC;IACH,OAAO,OAAO,CAAC;AACjB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@botiverse/oar",
3
- "version": "0.70.0",
3
+ "version": "0.71.0",
4
4
  "description": "A programming interface for all agent harnesses: provider-independent contracts for controlling and observing agent runtimes",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -76,16 +76,16 @@
76
76
  "license": "Apache-2.0",
77
77
  "dependencies": {
78
78
  "@agentclientprotocol/sdk": "^1.4.0",
79
- "@earendil-works/pi-ai": "^1.3.0",
80
- "@earendil-works/pi-coding-agent": "^1.3.0",
79
+ "@earendil-works/pi-ai": "^1.4.0",
80
+ "@earendil-works/pi-coding-agent": "^1.4.0",
81
81
  "cross-spawn": "^7.0.6",
82
82
  "undici": "8.10.2",
83
83
  "which": "^2.0.2"
84
84
  },
85
85
  "peerDependencies": {
86
86
  "@cursor/sdk": "1.0.40",
87
- "@earendil-works/pi-durable": "~1.3.0",
88
- "@earendil-works/chord": "~1.3.0"
87
+ "@earendil-works/pi-durable": "~1.4.0",
88
+ "@earendil-works/chord": "~1.4.0"
89
89
  },
90
90
  "peerDependenciesMeta": {
91
91
  "@cursor/sdk": {
@@ -102,8 +102,8 @@
102
102
  "@cursor/sdk": "1.0.40",
103
103
  "@types/cross-spawn": "^6.0.6",
104
104
  "@types/which": "^2.0.2",
105
- "@earendil-works/pi-durable": "1.3.0",
106
- "@earendil-works/chord": "1.3.0"
105
+ "@earendil-works/pi-durable": "1.4.0",
106
+ "@earendil-works/chord": "1.4.0"
107
107
  },
108
108
  "scripts": {
109
109
  "build": "tsc -p tsconfig.build.json",