@botiverse/oar 0.46.0 → 0.48.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 +48 -5
- package/assets/brands/NOTICE.md +2 -0
- package/assets/brands/pi-durable-on-dark.svg +6 -0
- package/assets/brands/pi-durable-on-light.svg +6 -0
- package/assets/brands/pi-durable.svg +6 -0
- package/dist/brands.d.ts +8 -0
- package/dist/brands.d.ts.map +1 -1
- package/dist/brands.js +2 -1
- package/dist/brands.js.map +1 -1
- package/dist/browser.d.ts +12 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +10 -0
- package/dist/browser.js.map +1 -0
- package/dist/contracts/index.d.ts +15 -0
- package/dist/contracts/index.d.ts.map +1 -0
- package/dist/contracts/index.js +4 -0
- package/dist/contracts/index.js.map +1 -0
- package/dist/contracts/install.d.ts +96 -0
- package/dist/contracts/install.d.ts.map +1 -0
- package/dist/contracts/install.js +2 -0
- package/dist/contracts/install.js.map +1 -0
- package/dist/contracts/records.d.ts +9 -11
- package/dist/contracts/records.d.ts.map +1 -1
- package/dist/contracts/runtime.d.ts +16 -0
- package/dist/contracts/runtime.d.ts.map +1 -1
- package/dist/contracts/runtime.js.map +1 -1
- package/dist/contracts/tool-output.d.ts +9 -0
- package/dist/contracts/tool-output.d.ts.map +1 -1
- package/dist/index.d.ts +1 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -3
- package/dist/index.js.map +1 -1
- package/dist/observe/agent-status.d.ts +1 -0
- package/dist/observe/agent-status.d.ts.map +1 -1
- package/dist/observe/agent-status.js +3 -0
- package/dist/observe/agent-status.js.map +1 -1
- package/dist/observe/conversation.d.ts +2 -2
- package/dist/observe/conversation.d.ts.map +1 -1
- package/dist/observe/input-delivery.d.ts +1 -1
- package/dist/observe/input-delivery.d.ts.map +1 -1
- package/dist/observe/session-view-events.d.ts.map +1 -1
- package/dist/observe/session-view-events.js +7 -2
- package/dist/observe/session-view-events.js.map +1 -1
- package/dist/observe/session-view-tools.d.ts +6 -0
- package/dist/observe/session-view-tools.d.ts.map +1 -1
- package/dist/observe/session-view-tools.js +7 -1
- package/dist/observe/session-view-tools.js.map +1 -1
- package/dist/observe/session-view.d.ts +1 -1
- package/dist/observe/session-view.d.ts.map +1 -1
- package/dist/observe/tool-activity.d.ts.map +1 -1
- package/dist/observe/tool-activity.js +4 -1
- package/dist/observe/tool-activity.js.map +1 -1
- package/dist/pi-durable.d.ts +3 -0
- package/dist/pi-durable.d.ts.map +1 -0
- package/dist/pi-durable.js +3 -0
- package/dist/pi-durable.js.map +1 -0
- package/dist/runtimes/antigravity/index.d.ts +7 -5
- package/dist/runtimes/antigravity/index.d.ts.map +1 -1
- package/dist/runtimes/antigravity/index.js +3 -0
- package/dist/runtimes/antigravity/index.js.map +1 -1
- package/dist/runtimes/antigravity/install.d.ts +10 -0
- package/dist/runtimes/antigravity/install.d.ts.map +1 -0
- package/dist/runtimes/antigravity/install.js +16 -0
- package/dist/runtimes/antigravity/install.js.map +1 -0
- package/dist/runtimes/antigravity/installation.d.ts +1 -1
- package/dist/runtimes/antigravity/installation.d.ts.map +1 -1
- package/dist/runtimes/claude/index.d.ts +11 -9
- package/dist/runtimes/claude/index.d.ts.map +1 -1
- package/dist/runtimes/claude/index.js +4 -0
- package/dist/runtimes/claude/index.js.map +1 -1
- package/dist/runtimes/claude/install.d.ts +17 -0
- package/dist/runtimes/claude/install.d.ts.map +1 -0
- package/dist/runtimes/claude/install.js +29 -0
- package/dist/runtimes/claude/install.js.map +1 -0
- package/dist/runtimes/claude/installation.d.ts +10 -1
- package/dist/runtimes/claude/installation.d.ts.map +1 -1
- package/dist/runtimes/claude/installation.js +15 -1
- package/dist/runtimes/claude/installation.js.map +1 -1
- package/dist/runtimes/codex/index.d.ts +10 -8
- package/dist/runtimes/codex/index.d.ts.map +1 -1
- package/dist/runtimes/codex/index.js +4 -0
- package/dist/runtimes/codex/index.js.map +1 -1
- package/dist/runtimes/codex/install.d.ts +18 -0
- package/dist/runtimes/codex/install.d.ts.map +1 -0
- package/dist/runtimes/codex/install.js +30 -0
- package/dist/runtimes/codex/install.js.map +1 -0
- package/dist/runtimes/codex/installation.d.ts +12 -1
- package/dist/runtimes/codex/installation.d.ts.map +1 -1
- package/dist/runtimes/codex/installation.js +28 -13
- package/dist/runtimes/codex/installation.js.map +1 -1
- package/dist/runtimes/codex/projection.d.ts.map +1 -1
- package/dist/runtimes/codex/projection.js +3 -1
- package/dist/runtimes/codex/projection.js.map +1 -1
- package/dist/runtimes/grok/index.d.ts +9 -7
- package/dist/runtimes/grok/index.d.ts.map +1 -1
- package/dist/runtimes/grok/index.js +3 -0
- package/dist/runtimes/grok/index.js.map +1 -1
- package/dist/runtimes/grok/install.d.ts +13 -0
- package/dist/runtimes/grok/install.d.ts.map +1 -0
- package/dist/runtimes/grok/install.js +25 -0
- package/dist/runtimes/grok/install.js.map +1 -0
- package/dist/runtimes/grok/installation.d.ts +1 -1
- package/dist/runtimes/grok/installation.d.ts.map +1 -1
- package/dist/runtimes/grok/session.d.ts.map +1 -1
- package/dist/runtimes/grok/session.js +1 -0
- package/dist/runtimes/grok/session.js.map +1 -1
- package/dist/runtimes/kimi/index.d.ts +9 -7
- package/dist/runtimes/kimi/index.d.ts.map +1 -1
- package/dist/runtimes/kimi/index.js +3 -0
- package/dist/runtimes/kimi/index.js.map +1 -1
- package/dist/runtimes/kimi/install.d.ts +16 -0
- package/dist/runtimes/kimi/install.d.ts.map +1 -0
- package/dist/runtimes/kimi/install.js +28 -0
- package/dist/runtimes/kimi/install.js.map +1 -0
- package/dist/runtimes/kimi/installation.d.ts +1 -1
- package/dist/runtimes/kimi/installation.d.ts.map +1 -1
- package/dist/runtimes/kimi/session.d.ts +1 -1
- package/dist/runtimes/kimi/session.d.ts.map +1 -1
- package/dist/runtimes/opencode/attribution.d.ts +4 -0
- package/dist/runtimes/opencode/attribution.d.ts.map +1 -0
- package/dist/runtimes/opencode/attribution.js +13 -0
- package/dist/runtimes/opencode/attribution.js.map +1 -0
- package/dist/runtimes/opencode/index.d.ts +7 -4
- package/dist/runtimes/opencode/index.d.ts.map +1 -1
- package/dist/runtimes/opencode/index.js +4 -0
- package/dist/runtimes/opencode/index.js.map +1 -1
- package/dist/runtimes/opencode/install.d.ts +30 -0
- package/dist/runtimes/opencode/install.d.ts.map +1 -0
- package/dist/runtimes/opencode/install.js +55 -0
- package/dist/runtimes/opencode/install.js.map +1 -0
- package/dist/runtimes/opencode/installation.d.ts +2 -2
- package/dist/runtimes/opencode/installation.d.ts.map +1 -1
- package/dist/runtimes/opencode/installation.js +1 -1
- package/dist/runtimes/opencode/list-models.d.ts.map +1 -1
- package/dist/runtimes/opencode/list-models.js +15 -2
- package/dist/runtimes/opencode/list-models.js.map +1 -1
- package/dist/runtimes/opencode/session.d.ts +2 -0
- package/dist/runtimes/opencode/session.d.ts.map +1 -1
- package/dist/runtimes/opencode/session.js +24 -6
- package/dist/runtimes/opencode/session.js.map +1 -1
- package/dist/runtimes/opencode/version.d.ts +5 -0
- package/dist/runtimes/opencode/version.d.ts.map +1 -0
- package/dist/runtimes/opencode/version.js +23 -0
- package/dist/runtimes/opencode/version.js.map +1 -0
- package/dist/runtimes/pi/index.d.ts +6 -6
- package/dist/runtimes/pi/list-models.d.ts +3 -35
- package/dist/runtimes/pi/list-models.d.ts.map +1 -1
- package/dist/runtimes/pi/list-models.js +2 -22
- package/dist/runtimes/pi/list-models.js.map +1 -1
- package/dist/runtimes/pi/model-projection.d.ts +36 -0
- package/dist/runtimes/pi/model-projection.d.ts.map +1 -0
- package/dist/runtimes/pi/model-projection.js +23 -0
- package/dist/runtimes/pi/model-projection.js.map +1 -0
- package/dist/runtimes/pi/projection.d.ts.map +1 -1
- package/dist/runtimes/pi/projection.js +1 -0
- package/dist/runtimes/pi/projection.js.map +1 -1
- package/dist/runtimes/pi-durable/index.d.ts +12 -0
- package/dist/runtimes/pi-durable/index.d.ts.map +1 -0
- package/dist/runtimes/pi-durable/index.js +25 -0
- package/dist/runtimes/pi-durable/index.js.map +1 -0
- package/dist/runtimes/pi-durable/messages.d.ts +20 -0
- package/dist/runtimes/pi-durable/messages.d.ts.map +1 -0
- package/dist/runtimes/pi-durable/messages.js +57 -0
- package/dist/runtimes/pi-durable/messages.js.map +1 -0
- package/dist/runtimes/pi-durable/options.d.ts +7 -0
- package/dist/runtimes/pi-durable/options.d.ts.map +1 -0
- package/dist/runtimes/pi-durable/options.js +90 -0
- package/dist/runtimes/pi-durable/options.js.map +1 -0
- package/dist/runtimes/pi-durable/projection.d.ts +19 -0
- package/dist/runtimes/pi-durable/projection.d.ts.map +1 -0
- package/dist/runtimes/pi-durable/projection.js +140 -0
- package/dist/runtimes/pi-durable/projection.js.map +1 -0
- package/dist/runtimes/pi-durable/session.d.ts +5 -0
- package/dist/runtimes/pi-durable/session.d.ts.map +1 -0
- package/dist/runtimes/pi-durable/session.js +137 -0
- package/dist/runtimes/pi-durable/session.js.map +1 -0
- package/dist/shared/acp/profile.d.ts +9 -4
- package/dist/shared/acp/profile.d.ts.map +1 -1
- package/dist/shared/acp/profile.js.map +1 -1
- package/dist/shared/acp/records.d.ts +2 -1
- package/dist/shared/acp/records.d.ts.map +1 -1
- package/dist/shared/acp/records.js +6 -2
- package/dist/shared/acp/records.js.map +1 -1
- package/dist/shared/acp/session.js +2 -2
- package/dist/shared/acp/session.js.map +1 -1
- package/dist/shared/acp/turns.d.ts +6 -5
- package/dist/shared/acp/turns.d.ts.map +1 -1
- package/dist/shared/acp/turns.js +21 -10
- package/dist/shared/acp/turns.js.map +1 -1
- package/dist/shared/executable/index.d.ts +1 -1
- package/dist/shared/executable/index.d.ts.map +1 -1
- package/dist/shared/executable/index.js +1 -1
- package/dist/shared/executable/index.js.map +1 -1
- package/dist/shared/executable/isolated.d.ts +5 -0
- package/dist/shared/executable/isolated.d.ts.map +1 -1
- package/dist/shared/executable/isolated.js +8 -0
- package/dist/shared/executable/isolated.js.map +1 -1
- package/dist/shared/install.d.ts +70 -0
- package/dist/shared/install.d.ts.map +1 -0
- package/dist/shared/install.js +176 -0
- package/dist/shared/install.js.map +1 -0
- package/dist/shared/seal-session.d.ts.map +1 -1
- package/dist/shared/seal-session.js +1 -2
- package/dist/shared/seal-session.js.map +1 -1
- package/dist/shared/session-kernel.d.ts.map +1 -1
- package/dist/shared/session-kernel.js +2 -3
- package/dist/shared/session-kernel.js.map +1 -1
- package/dist/shared/update.d.ts +1 -1
- package/dist/shared/update.d.ts.map +1 -1
- package/dist/shared/update.js +4 -8
- package/dist/shared/update.js.map +1 -1
- package/package.json +22 -4
|
@@ -1,26 +1,6 @@
|
|
|
1
1
|
import { configurePiHttp } from "./http.js";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
* `provider/model`, the same spelling Pi's own `--model` flag accepts.
|
|
5
|
-
*
|
|
6
|
-
* `effortLevels` is pi's thinking-level menu for a reasoning model, exactly
|
|
7
|
-
* as pi derives it (`thinkingLevelMap` drops levels mapped to null and adds
|
|
8
|
-
* `xhigh`/`max` only where mapped; `off` is one of pi's levels and stays
|
|
9
|
-
* where pi offers it), the levels `SessionOptions.effort` accepts on pi. A
|
|
10
|
-
* model without `reasoning` runs only `off` and lists no menu. No
|
|
11
|
-
* `defaultEffort`: pi's default is a settings value clamped per model at
|
|
12
|
-
* session creation, and the session's `effort()` reports it.
|
|
13
|
-
*/
|
|
14
|
-
export function projectPiModels(models, thinkingLevelsOf) {
|
|
15
|
-
return models.map((model) => {
|
|
16
|
-
const effortLevels = model.reasoning === true && thinkingLevelsOf !== undefined ? thinkingLevelsOf(model) : [];
|
|
17
|
-
return {
|
|
18
|
-
id: `${model.provider}/${model.id}`,
|
|
19
|
-
displayName: model.name === undefined || model.name.trim().length === 0 ? model.id : model.name.trim(),
|
|
20
|
-
...(effortLevels.length === 0 ? {} : { effortLevels: [...effortLevels] }),
|
|
21
|
-
};
|
|
22
|
-
});
|
|
23
|
-
}
|
|
2
|
+
import { projectPiModels } from "./model-projection.js";
|
|
3
|
+
export { projectPiModels } from "./model-projection.js";
|
|
24
4
|
/**
|
|
25
5
|
* In-process through the bundled SDK, built the way `pi --list-models` builds
|
|
26
6
|
* its own runtime: `createAgentSessionServices` loads the extensions under the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-models.js","sourceRoot":"","sources":["../../../src/runtimes/pi/list-models.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"list-models.js","sourceRoot":"","sources":["../../../src/runtimes/pi/list-models.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAE5C,OAAO,EAAE,eAAe,EAA0E,MAAM,uBAAuB,CAAC;AAEhI,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,kBAAkB,CAChC,aAA4E,EAC5E,gBAA2D;IAE3D,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,GAAG,EAAE,EAAE,EAAE;QAC1C,IAAI,YAAY,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;YACnC,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,kDAAkD,EAAE,CAAC;QAC7F,CAAC;QACD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC,CAAC;YAChE,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,CAAC;YAC5C,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;YACpE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,eAAe,CAAC,SAAS,EAAE,MAAM,gBAAgB,EAAE,EAAE,CAAC,EAAE,CAAC;QACxF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,MAAM,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACtE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,2CAA2C,MAAM,EAAE,EAAE,CAAC;QAC9F,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;IAC3E,MAAM,EAAE,0BAA0B,EAAE,WAAW,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,iCAAiC,CAAC,CAAC;IACrH,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,WAAW,EAAE,CAAC;IAC/D,sEAAsE;IACtE,oEAAoE;IACpE,YAAY;IACZ,MAAM,eAAe,GAAG,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;IACxE,MAAM,eAAe,CAAC,eAAe,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,MAAM,0BAA0B,CAAC;QAChD,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;QAClB,QAAQ;QACR,eAAe;QACf,kBAAkB,EAAE,MAAM;QAC1B,qBAAqB,EAAE;YACrB,QAAQ,EAAE,IAAI;YACd,iBAAiB,EAAE,IAAI;YACvB,QAAQ,EAAE,IAAI;YACd,cAAc,EAAE,IAAI;SACrB;KACF,CAAC,CAAC;IACH,OAAO,QAAQ,CAAC,YAAY,CAAC;AAC/B,CAAC,EAAE,KAAK,IAAI,EAAE;IACZ,4EAA4E;IAC5E,2EAA2E;IAC3E,MAAM,EAAE,0BAA0B,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;IAC7E,OAAO,0BAA0B,CAAC;AACpC,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { ModelEntry } from "../../contracts/list-models.js";
|
|
2
|
+
/** The subset of Pi's `Model` the projection reads; kept structural for tests. */
|
|
3
|
+
export interface PiListedModel {
|
|
4
|
+
readonly id: string;
|
|
5
|
+
readonly provider: string;
|
|
6
|
+
readonly name?: string;
|
|
7
|
+
/** Pi's reasoning flag: a model without it runs only the `off` thinking level. */
|
|
8
|
+
readonly reasoning?: boolean;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* The slice of Pi's `ModelRuntime` the lister depends on. `getAvailable()`
|
|
12
|
+
* runs the per-provider availability check (credentials present, OAuth token
|
|
13
|
+
* usable) and returns the usable-now list; it is what `pi --list-models`
|
|
14
|
+
* itself awaits.
|
|
15
|
+
*/
|
|
16
|
+
export interface PiAvailabilitySource<Model extends PiListedModel = PiListedModel> {
|
|
17
|
+
getAvailable(providerId?: string, options?: {
|
|
18
|
+
readonly signal?: AbortSignal;
|
|
19
|
+
}): Promise<readonly Model[]>;
|
|
20
|
+
}
|
|
21
|
+
/** Pi's own thinking-level menu for one model (pi-ai `getSupportedThinkingLevels`), injected so the projection stays pure. */
|
|
22
|
+
export type PiThinkingLevelsOf<Model extends PiListedModel> = (model: Model) => readonly string[];
|
|
23
|
+
/**
|
|
24
|
+
* Pi model ids are only unique per provider, so the session-facing id is
|
|
25
|
+
* `provider/model`, the same spelling Pi's own `--model` flag accepts.
|
|
26
|
+
*
|
|
27
|
+
* `effortLevels` is pi's thinking-level menu for a reasoning model, exactly
|
|
28
|
+
* as pi derives it (`thinkingLevelMap` drops levels mapped to null and adds
|
|
29
|
+
* `xhigh`/`max` only where mapped; `off` is one of pi's levels and stays
|
|
30
|
+
* where pi offers it), the levels `SessionOptions.effort` accepts on pi. A
|
|
31
|
+
* model without `reasoning` runs only `off` and lists no menu. No
|
|
32
|
+
* `defaultEffort`: pi's default is a settings value clamped per model at
|
|
33
|
+
* session creation, and the session's `effort()` reports it.
|
|
34
|
+
*/
|
|
35
|
+
export declare function projectPiModels<Model extends PiListedModel>(models: readonly Model[], thinkingLevelsOf?: PiThinkingLevelsOf<Model>): ModelEntry[];
|
|
36
|
+
//# sourceMappingURL=model-projection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-projection.d.ts","sourceRoot":"","sources":["../../../src/runtimes/pi/model-projection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAEjE,kFAAkF;AAClF,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,kFAAkF;IAClF,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB,CAAC,KAAK,SAAS,aAAa,GAAG,aAAa;IAC/E,YAAY,CACV,UAAU,CAAC,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAC1C,OAAO,CAAC,SAAS,KAAK,EAAE,CAAC,CAAC;CAC9B;AAED,8HAA8H;AAC9H,MAAM,MAAM,kBAAkB,CAAC,KAAK,SAAS,aAAa,IAAI,CAAC,KAAK,EAAE,KAAK,KAAK,SAAS,MAAM,EAAE,CAAC;AAElG;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,KAAK,SAAS,aAAa,EACzD,MAAM,EAAE,SAAS,KAAK,EAAE,EACxB,gBAAgB,CAAC,EAAE,kBAAkB,CAAC,KAAK,CAAC,GAC3C,UAAU,EAAE,CASd"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pi model ids are only unique per provider, so the session-facing id is
|
|
3
|
+
* `provider/model`, the same spelling Pi's own `--model` flag accepts.
|
|
4
|
+
*
|
|
5
|
+
* `effortLevels` is pi's thinking-level menu for a reasoning model, exactly
|
|
6
|
+
* as pi derives it (`thinkingLevelMap` drops levels mapped to null and adds
|
|
7
|
+
* `xhigh`/`max` only where mapped; `off` is one of pi's levels and stays
|
|
8
|
+
* where pi offers it), the levels `SessionOptions.effort` accepts on pi. A
|
|
9
|
+
* model without `reasoning` runs only `off` and lists no menu. No
|
|
10
|
+
* `defaultEffort`: pi's default is a settings value clamped per model at
|
|
11
|
+
* session creation, and the session's `effort()` reports it.
|
|
12
|
+
*/
|
|
13
|
+
export function projectPiModels(models, thinkingLevelsOf) {
|
|
14
|
+
return models.map((model) => {
|
|
15
|
+
const effortLevels = model.reasoning === true && thinkingLevelsOf !== undefined ? thinkingLevelsOf(model) : [];
|
|
16
|
+
return {
|
|
17
|
+
id: `${model.provider}/${model.id}`,
|
|
18
|
+
displayName: model.name === undefined || model.name.trim().length === 0 ? model.id : model.name.trim(),
|
|
19
|
+
...(effortLevels.length === 0 ? {} : { effortLevels: [...effortLevels] }),
|
|
20
|
+
};
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=model-projection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-projection.js","sourceRoot":"","sources":["../../../src/runtimes/pi/model-projection.ts"],"names":[],"mappings":"AA2BA;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,eAAe,CAC7B,MAAwB,EACxB,gBAA4C;IAE5C,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC1B,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS,KAAK,IAAI,IAAI,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/G,OAAO;YACL,EAAE,EAAE,GAAG,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,EAAE,EAAE;YACnC,WAAW,EAAE,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE;YACtG,GAAG,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,GAAG,YAAY,CAAC,EAAE,CAAC;SAC1E,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projection.d.ts","sourceRoot":"","sources":["../../../src/runtimes/pi/projection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,KAAK,EACV,YAAY,EACZ,SAAS,EAET,WAAW,EACX,WAAW,EACZ,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAa,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAK/D;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,aAAa,EAAE,eAAe,GAAG,SAAS,CAAC;IACpD,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;CAC9B;AAED,eAAO,MAAM,mBAAmB,EAAE,iBAIjC,CAAC;AAEF,iIAAiI;AACjI,wBAAgB,UAAU,CAAC,KAAK,EAAE,iBAAiB,GAAG,iBAAiB,CAEtE;AAED,4FAA4F;AAC5F,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,OAAO,GAAG,WAAW,CAQpF;AAED;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC7B;
|
|
1
|
+
{"version":3,"file":"projection.d.ts","sourceRoot":"","sources":["../../../src/runtimes/pi/projection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,KAAK,EACV,YAAY,EACZ,SAAS,EAET,WAAW,EACX,WAAW,EACZ,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAa,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAK/D;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,aAAa,EAAE,eAAe,GAAG,SAAS,CAAC;IACpD,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;CAC9B;AAED,eAAO,MAAM,mBAAmB,EAAE,iBAIjC,CAAC;AAEF,iIAAiI;AACjI,wBAAgB,UAAU,CAAC,KAAK,EAAE,iBAAiB,GAAG,iBAAiB,CAEtE;AAED,4FAA4F;AAC5F,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,OAAO,GAAG,WAAW,CAQpF;AAED;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC7B;AAiKD,wFAAwF;AACxF,wBAAgB,WAAW,CACzB,KAAK,EAAE,iBAAiB,EACxB,KAAK,EAAE,iBAAiB,EACxB,KAAK,GAAE,WAAgB,GACtB;IAAE,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,iBAAiB,EAAE,CAAA;CAAE,CAMxF"}
|
|
@@ -155,6 +155,7 @@ function step(state, event, extra) {
|
|
|
155
155
|
case "message_start":
|
|
156
156
|
return { state, events: event.message.role === "user" ? [{ kind: "user_message", evidence: "conversation", input: typeof event.message.content === "string" ? event.message.content : event.message.content.filter((part) => part.type === "text").map((part) => part.text).join("") }] : [] };
|
|
157
157
|
case "agent_start":
|
|
158
|
+
return { state, events: [{ kind: "turn_active" }] };
|
|
158
159
|
case "agent_end":
|
|
159
160
|
case "turn_start":
|
|
160
161
|
case "bash_execution_update":
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projection.js","sourceRoot":"","sources":["../../../src/runtimes/pi/projection.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"projection.js","sourceRoot":"","sources":["../../../src/runtimes/pi/projection.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,SAAS,EAAwB,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AA2B1D,MAAM,CAAC,MAAM,mBAAmB,GAAsB;IACpD,gBAAgB,EAAE,KAAK;IACvB,aAAa,EAAE,SAAS;IACxB,MAAM,EAAE,QAAQ;CACjB,CAAC;AAEF,iIAAiI;AACjI,MAAM,UAAU,UAAU,CAAC,KAAwB;IACjD,OAAO,EAAE,GAAG,mBAAmB,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;AAC1D,CAAC;AAED,4FAA4F;AAC5F,MAAM,UAAU,YAAY,CAAC,KAAwB,EAAE,OAAgB;IACrE,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IAC7B,CAAC;IACD,IAAI,KAAK,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;QACtC,OAAO,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;AAC/B,CAAC;AAkBD,SAAS,UAAU,CAAC,KAAc;IAChC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CACxB,KAAwB,EACxB,KAAsF,EACtF,QAAiB;IAEjB,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,YAAY;YACf,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;QACxE,KAAK,gBAAgB;YACnB,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;gBAC3B,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE;gBAChI,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QAC5B,KAAK,OAAO;YACV,qEAAqE;YACrE,yDAAyD;YACzD,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,aAAa,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QAC7H,KAAK,gBAAgB;YACnB,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QACtE,KAAK,cAAc;YACjB,OAAO,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC;QACjI,yEAAyE;QACzE,wEAAwE;QACxE,KAAK,OAAO,CAAC;QACb,KAAK,MAAM,CAAC;QACZ,KAAK,YAAY,CAAC;QAClB,KAAK,UAAU,CAAC;QAChB,KAAK,gBAAgB,CAAC;QACtB,KAAK,gBAAgB,CAAC;QACtB,KAAK,cAAc;YACjB,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IACjC,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;AAC/B,CAAC;AAED,4EAA4E;AAC5E,SAAS,UAAU,CAAC,KAAwB,EAAE,OAAgB;IAC5D,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IACjC,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACtC,IAAI,MAAM,EAAE,IAAI,KAAK,WAAW,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IAC/B,CAAC;IACD,yEAAyE;IACzE,2EAA2E;IAC3E,uDAAuD;IACvD,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;IAC5E,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE;QACrC,KAAK,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC;QACtF,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;QACnC,GAAG,KAAK;KACT,CAAC,CAAC;IACH,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;AACzF,CAAC;AAED,SAAS,IAAI,CAAC,KAAwB,EAAE,KAAwB,EAAE,KAAkB;IAClF,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,eAAe,CAAC,CAAC,CAAC;YACrB,kEAAkE;YAClE,uEAAuE;YACvE,qEAAqE;YACrE,sEAAsE;YACtE,kEAAkE;YAClE,MAAM,MAAM,GAAuB,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACzG,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;gBAC1D,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YACpE,CAAC;YACD,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;QAC9C,CAAC;QACD,KAAK,gBAAgB;YACnB,OAAO,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,qBAAqB,EAAE,KAAK,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC;QACxF,KAAK,aAAa;YAChB,OAAO,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAC1C,KAAK,sBAAsB,CAAC,CAAC,CAAC;YAC5B,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACrC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,KAAK,KAAK,SAAS;wBAC1C,CAAC,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE;wBAC/E,CAAC,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAC9F,CAAC;QACD,KAAK,uBAAuB,CAAC,CAAC,CAAC;YAC7B,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,MAAM,KAAK,SAAS;wBAC3C,CAAC,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE;wBAC1D,CAAC,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QAC1E,CAAC;QACD,KAAK,kBAAkB;YACrB,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;QACpF,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACtB,yEAAyE;YACzE,mEAAmE;YACnE,IAAI,OAAO,GAAuC,WAAW,CAAC;YAC9D,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBAClB,OAAO,GAAG,SAAS,CAAC;YACtB,CAAC;iBAAM,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;gBAC5C,OAAO,GAAG,QAAQ,CAAC;YACrB,CAAC;YACD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QACxK,CAAC;QACD,KAAK,wBAAwB;YAC3B,kEAAkE;YAClE,2DAA2D;YAC3D,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;QACtE,KAAK,kBAAkB,CAAC;QACxB,KAAK,+BAA+B;YAClC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC;QAC5J,KAAK,oBAAoB,CAAC,CAAC,CAAC;YAC1B,kEAAkE;YAClE,4DAA4D;YAC5D,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;YAC/C,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC7G,MAAM,MAAM,GAAG,OAAO,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,QAAiB,CAAC,CAAC,CAAC,IAAa,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACpH,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;wBACvB,IAAI,EAAE,iBAAiB;wBACvB,MAAM,EAAE,KAAK,CAAC,UAAU;wBACxB,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC;wBAC7C,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;qBAC5C,CAAC,EAAE,CAAC;QACP,CAAC;QACD,KAAK,UAAU;YACb,uEAAuE;YACvE,8DAA8D;YAC9D,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,KAAK,OAAO;gBAC/E,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,aAAa,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,YAAY,IAAI,gBAAgB,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,KAAK,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;gBACpJ,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QAC5B,2EAA2E;QAC3E,qEAAqE;QACrE,oBAAoB;QACpB,KAAK,eAAe;YAClB,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACjS,KAAK,aAAa;YAChB,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC;QACtD,KAAK,WAAW,CAAC;QACjB,KAAK,YAAY,CAAC;QAClB,KAAK,uBAAuB,CAAC;QAC7B,KAAK,cAAc,CAAC;QACpB,KAAK,gBAAgB,CAAC;QACtB,KAAK,sBAAsB,CAAC;QAC5B,KAAK,gBAAgB,CAAC;QACtB,KAAK,mCAAmC,CAAC;QACzC,KAAK,8BAA8B;YACjC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IACjC,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;AAC/B,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,WAAW,CACzB,KAAwB,EACxB,KAAwB,EACxB,QAAqB,EAAE;IAEvB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACvC,OAAO;QACL,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;KAC9F,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Models } from "@earendil-works/pi-ai";
|
|
2
|
+
import type { Harness } from "@earendil-works/pi-durable";
|
|
3
|
+
import { type Runtime } from "../../contracts/runtime.js";
|
|
4
|
+
export interface PiDurableRuntimeOptions {
|
|
5
|
+
/** An already-open host-owned Harness. OAR never closes it or its storage. */
|
|
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;
|
|
9
|
+
}
|
|
10
|
+
/** Pi Durable 1.1.0 conversations over host-owned storage, providers, extensions and execution environment. */
|
|
11
|
+
export declare function createPiDurableRuntime({ harness, models }: PiDurableRuntimeOptions): Runtime;
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { getSupportedThinkingLevels } from "@earendil-works/pi-ai/models";
|
|
2
|
+
import { defineRuntime } from "../../contracts/runtime.js";
|
|
3
|
+
import { runtimeBrands } from "../../brands.js";
|
|
4
|
+
import { projectPiModels } from "../pi/model-projection.js";
|
|
5
|
+
import { piDurableRefusedSessionOptions } from "./options.js";
|
|
6
|
+
import { piDurableSession } from "./session.js";
|
|
7
|
+
/** Pi Durable 1.1.0 conversations over host-owned storage, providers, extensions and execution environment. */
|
|
8
|
+
export function createPiDurableRuntime({ harness, models }) {
|
|
9
|
+
const runtime = defineRuntime({
|
|
10
|
+
id: "pi-durable",
|
|
11
|
+
brand: runtimeBrands["pi-durable"],
|
|
12
|
+
refusedSessionOptions: piDurableRefusedSessionOptions,
|
|
13
|
+
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
|
+
session: async (installation, options) => {
|
|
16
|
+
if (installation.via !== "bundled") {
|
|
17
|
+
throw new Error("pi-durable requires the host's bundled Harness");
|
|
18
|
+
}
|
|
19
|
+
const session = await piDurableSession(harness, models, options);
|
|
20
|
+
return session;
|
|
21
|
+
},
|
|
22
|
+
});
|
|
23
|
+
return runtime;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { AssistantMessage } from "@earendil-works/pi-ai";
|
|
2
|
+
import type { MessageChange } from "@earendil-works/pi-durable";
|
|
3
|
+
import type { RuntimeEventBody } from "../../contracts/session.js";
|
|
4
|
+
export interface MessageProjection {
|
|
5
|
+
readonly blocks: ReadonlyMap<number, {
|
|
6
|
+
readonly kind: "text" | "thinking";
|
|
7
|
+
readonly text: string;
|
|
8
|
+
}>;
|
|
9
|
+
}
|
|
10
|
+
export declare const emptyMessage: MessageProjection;
|
|
11
|
+
/** Whole blocks include text already delivered as deltas. Emit only the observed suffix. */
|
|
12
|
+
export declare function wholeMessage(previous: MessageProjection, message: AssistantMessage): {
|
|
13
|
+
readonly state: MessageProjection;
|
|
14
|
+
readonly events: readonly RuntimeEventBody[];
|
|
15
|
+
};
|
|
16
|
+
export declare function messageChanges(previous: MessageProjection, changes: readonly MessageChange[]): {
|
|
17
|
+
readonly state: MessageProjection;
|
|
18
|
+
readonly events: readonly RuntimeEventBody[];
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=messages.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../../src/runtimes/pi-durable/messages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACrG;AACD,eAAO,MAAM,YAAY,EAAE,iBAAyC,CAAC;AAErE,4FAA4F;AAC5F,wBAAgB,YAAY,CAAC,QAAQ,EAAE,iBAAiB,EAAE,OAAO,EAAE,gBAAgB,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,gBAAgB,EAAE,CAAA;CAAE,CASxK;AAmBD,wBAAgB,cAAc,CAAC,QAAQ,EAAE,iBAAiB,EAAE,OAAO,EAAE,SAAS,aAAa,EAAE,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,gBAAgB,EAAE,CAAA;CAAE,CASlL"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
export const emptyMessage = { blocks: new Map() };
|
|
2
|
+
/** Whole blocks include text already delivered as deltas. Emit only the observed suffix. */
|
|
3
|
+
export function wholeMessage(previous, message) {
|
|
4
|
+
let state = previous;
|
|
5
|
+
const events = [];
|
|
6
|
+
for (const [index, block] of message.content.entries()) {
|
|
7
|
+
const next = wholeBlock(state, index, block);
|
|
8
|
+
state = next.state;
|
|
9
|
+
events.push(...next.events);
|
|
10
|
+
}
|
|
11
|
+
return { state, events };
|
|
12
|
+
}
|
|
13
|
+
function textEvent(kind, text) {
|
|
14
|
+
return kind === "text" ? { kind: "text_delta", text } : { kind: "reasoning", content: text === "" ? { kind: "empty" } : { kind: "text", text } };
|
|
15
|
+
}
|
|
16
|
+
function wholeBlock(previous, index, block) {
|
|
17
|
+
if (block.type === "toolCall") {
|
|
18
|
+
return { state: previous, events: [] };
|
|
19
|
+
}
|
|
20
|
+
const text = block.type === "text" ? block.text : block.thinking;
|
|
21
|
+
const before = previous.blocks.get(index);
|
|
22
|
+
const prefix = before?.kind === block.type ? before.text : "";
|
|
23
|
+
const blocks = new Map(previous.blocks).set(index, { kind: block.type, text });
|
|
24
|
+
// OAR has no text replacement event. A native correction stays in the raw batch,
|
|
25
|
+
// never appended as a second copy or disguised as an invented delta.
|
|
26
|
+
const suffix = text.startsWith(prefix) ? text.slice(prefix.length) : "";
|
|
27
|
+
const events = suffix !== "" || (block.type === "thinking" && before === undefined) ? [textEvent(block.type, suffix)] : [];
|
|
28
|
+
return { state: { blocks }, events };
|
|
29
|
+
}
|
|
30
|
+
export function messageChanges(previous, changes) {
|
|
31
|
+
let state = previous;
|
|
32
|
+
const events = [];
|
|
33
|
+
for (const change of changes) {
|
|
34
|
+
const next = messageChange(state, change);
|
|
35
|
+
state = next.state;
|
|
36
|
+
events.push(...next.events);
|
|
37
|
+
}
|
|
38
|
+
return { state, events };
|
|
39
|
+
}
|
|
40
|
+
function messageChange(state, change) {
|
|
41
|
+
switch (change.type) {
|
|
42
|
+
case "message": return wholeMessage(state, change.message);
|
|
43
|
+
case "text_start":
|
|
44
|
+
case "thinking_start":
|
|
45
|
+
case "toolcall_start":
|
|
46
|
+
case "block": return wholeBlock(state, change.contentIndex, change.block);
|
|
47
|
+
case "text_delta":
|
|
48
|
+
case "thinking_delta": {
|
|
49
|
+
const kind = change.type === "text_delta" ? "text" : "thinking";
|
|
50
|
+
const text = (state.blocks.get(change.contentIndex)?.text ?? "") + change.delta;
|
|
51
|
+
return { state: { blocks: new Map(state.blocks).set(change.contentIndex, { kind, text }) }, events: change.delta === "" ? [] : [textEvent(kind, change.delta)] };
|
|
52
|
+
}
|
|
53
|
+
case "toolcall_delta": return { state, events: [] };
|
|
54
|
+
}
|
|
55
|
+
return { state, events: [] };
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=messages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../src/runtimes/pi-durable/messages.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Models } from "@earendil-works/pi-ai";
|
|
2
|
+
import { type Conversation, type Harness } from "@earendil-works/pi-durable";
|
|
3
|
+
import type { RefusedSessionOptions } from "../../contracts/runtime.js";
|
|
4
|
+
import type { SessionOptions } from "../../contracts/session.js";
|
|
5
|
+
export declare const piDurableRefusedSessionOptions: RefusedSessionOptions;
|
|
6
|
+
export declare function openConversation(harness: Harness, models: Models, options: SessionOptions): Promise<Conversation>;
|
|
7
|
+
//# sourceMappingURL=options.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../src/runtimes/pi-durable/options.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAsB,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAExE,OAAO,EAAmE,KAAK,YAAY,EAAuB,KAAK,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAEnK,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAGjE,eAAO,MAAM,8BAA8B,EAAE,qBAO5C,CAAC;AA8DF,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,YAAY,CAAC,CAYvH"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { BACKGROUND_CONTEXT } from "@earendil-works/chord/context";
|
|
2
|
+
import { getSupportedThinkingLevels } from "@earendil-works/pi-ai/models";
|
|
3
|
+
import { AgentDoc, LiveDoc, configure } from "@earendil-works/pi-durable";
|
|
4
|
+
import { RuntimeFailureError } from "../../contracts/runtime-failure-error.js";
|
|
5
|
+
import { refuseSessionOptions } from "../../shared/session-options.js";
|
|
6
|
+
export const piDurableRefusedSessionOptions = {
|
|
7
|
+
systemPrompt: "pi-durable instructions append to extension sections; there is no system-prompt replacement channel",
|
|
8
|
+
env: "The host owns the Harness execution environment",
|
|
9
|
+
launchArgs: "pi-durable has no child process to configure",
|
|
10
|
+
serviceTier: "pi-durable exposes no per-conversation service tier",
|
|
11
|
+
mcpServers: "pi-durable has no verified per-conversation MCP attachment channel",
|
|
12
|
+
disallowedTools: "pi-durable tool filtering has not been verified through this adapter",
|
|
13
|
+
};
|
|
14
|
+
function conversationId(value) {
|
|
15
|
+
return Number.isSafeInteger(value) && value > 0;
|
|
16
|
+
}
|
|
17
|
+
function thinkingLevel(value) {
|
|
18
|
+
return ["off", "minimal", "low", "medium", "high", "xhigh", "max"].includes(value);
|
|
19
|
+
}
|
|
20
|
+
function agentChange(options, models) {
|
|
21
|
+
const slash = options.model?.indexOf("/") ?? -1;
|
|
22
|
+
const model = options.model === undefined ? undefined : models.getModel(options.model.slice(0, slash), options.model.slice(slash + 1));
|
|
23
|
+
if (options.model !== undefined && (slash < 1 || model === undefined)) {
|
|
24
|
+
throw new RuntimeFailureError("model_unavailable", `pi-durable model ${options.model} is not registered; use provider/model from listModels`);
|
|
25
|
+
}
|
|
26
|
+
if (options.effort !== undefined && !thinkingLevel(options.effort)) {
|
|
27
|
+
throw new Error(`pi-durable does not support effort ${options.effort}`);
|
|
28
|
+
}
|
|
29
|
+
return {
|
|
30
|
+
cwd: options.cwd,
|
|
31
|
+
...(model === undefined ? {} : { model: { provider: model.provider, modelId: model.id } }),
|
|
32
|
+
...(options.effort === undefined ? {} : { thinkingLevel: options.effort }),
|
|
33
|
+
...(options.appendSystemPrompt === undefined ? {} : { instructions: options.appendSystemPrompt }),
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
async function resumeConversation(harness, id) {
|
|
37
|
+
const number = Number(id);
|
|
38
|
+
const found = conversationId(number) && String(number) === id ? await harness.conversation(number, BACKGROUND_CONTEXT) : undefined;
|
|
39
|
+
if (found === undefined) {
|
|
40
|
+
throw new Error(`pi-durable conversation ${id} does not exist`);
|
|
41
|
+
}
|
|
42
|
+
return found;
|
|
43
|
+
}
|
|
44
|
+
function validateEffort(agent, models, options) {
|
|
45
|
+
if (options.effort === undefined) {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
const model = agent.model === undefined ? undefined : models.getModel(agent.model.provider, agent.model.modelId);
|
|
49
|
+
if (model === undefined || !getSupportedThinkingLevels(model).some((level) => level === options.effort)) {
|
|
50
|
+
throw new Error(`pi-durable model ${options.model ?? agent.model?.modelId ?? "(unset)"} does not support effort ${options.effort}`);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
function changedOptions(before, change) {
|
|
54
|
+
const keys = ["model", "thinkingLevel", "instructions", "cwd"];
|
|
55
|
+
return keys.some((key) => change[key] !== undefined && JSON.stringify(before[key]) !== JSON.stringify(change[key]));
|
|
56
|
+
}
|
|
57
|
+
async function configureResume(conversation, change, models, options) {
|
|
58
|
+
await conversation.commit(async (tx) => {
|
|
59
|
+
const before = await tx.doc(AgentDoc, conversation.id);
|
|
60
|
+
const live = await tx.doc(LiveDoc, conversation.id);
|
|
61
|
+
// Only scalar/model fields are supplied by agentChange. Use the native
|
|
62
|
+
// configure operation and validate within its transaction, so a refusal
|
|
63
|
+
// cannot leave shared conversation settings half changed.
|
|
64
|
+
if (live.run !== undefined && changedOptions(before, change)) {
|
|
65
|
+
throw new Error("pi-durable cannot change options while adopting an active run; reopen with its saved settings");
|
|
66
|
+
}
|
|
67
|
+
await configure(tx, conversation.id, change);
|
|
68
|
+
validateEffort(await tx.doc(AgentDoc, conversation.id), models, options);
|
|
69
|
+
}, BACKGROUND_CONTEXT);
|
|
70
|
+
}
|
|
71
|
+
export async function openConversation(harness, models, options) {
|
|
72
|
+
refuseSessionOptions(piDurableRefusedSessionOptions, options);
|
|
73
|
+
const change = agentChange(options, models);
|
|
74
|
+
const conversation = options.resume === undefined
|
|
75
|
+
? await harness.createConversation({ ownership: { kind: "ownerless" }, agent: change,
|
|
76
|
+
init: async (tx, id) => { validateEffort(await tx.doc(AgentDoc, id), models, options); } }, BACKGROUND_CONTEXT)
|
|
77
|
+
: await resumeConversation(harness, options.resume);
|
|
78
|
+
if (options.resume !== undefined) {
|
|
79
|
+
await configureResume(conversation, change, models, options);
|
|
80
|
+
}
|
|
81
|
+
const agent = await conversation.agent(BACKGROUND_CONTEXT);
|
|
82
|
+
if (options.effort !== undefined && agent.thinkingLevel !== options.effort) {
|
|
83
|
+
throw new Error(`pi-durable reported effort ${agent.thinkingLevel}, requested ${options.effort}`);
|
|
84
|
+
}
|
|
85
|
+
if (options.model !== undefined && `${agent.model?.provider}/${agent.model?.modelId}` !== options.model) {
|
|
86
|
+
throw new Error(`pi-durable did not select model ${options.model}`);
|
|
87
|
+
}
|
|
88
|
+
return conversation;
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=options.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../../../src/runtimes/pi-durable/options.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { AgentEvent, SnapshotEvent, SubmissionId, SubmissionRecord } from "@earendil-works/pi-durable";
|
|
2
|
+
import type { FrameBody, TokenTotals, TurnOutcome } from "../../contracts/session.js";
|
|
3
|
+
import { type MessageProjection } from "./messages.js";
|
|
4
|
+
export interface DurableProjection {
|
|
5
|
+
readonly message: MessageProjection;
|
|
6
|
+
readonly baseline: TokenTotals;
|
|
7
|
+
readonly submissions: ReadonlyMap<number, SubmissionRecord>;
|
|
8
|
+
readonly run: readonly SubmissionId[];
|
|
9
|
+
readonly tools: ReadonlyMap<string, string>;
|
|
10
|
+
}
|
|
11
|
+
export declare function initialDurableProjection(snapshot: SnapshotEvent): DurableProjection;
|
|
12
|
+
/** The native run's terminal submission receipts, never the adapter's abort intent. */
|
|
13
|
+
export declare function submissionOutcome(records: readonly (SubmissionRecord | undefined)[]): TurnOutcome | undefined;
|
|
14
|
+
/** One complete native commit batch becomes one frame, including empty or unknown-only batches. */
|
|
15
|
+
export declare function foldDurableBatch(previous: DurableProjection, native: readonly AgentEvent[]): {
|
|
16
|
+
readonly state: DurableProjection;
|
|
17
|
+
readonly frame: FrameBody;
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=projection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projection.d.ts","sourceRoot":"","sources":["../../../src/runtimes/pi-durable/projection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAA2B,aAAa,EAAE,YAAY,EAAE,gBAAgB,EAAc,MAAM,4BAA4B,CAAC;AACjJ,OAAO,KAAK,EAAE,SAAS,EAAoB,WAAW,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAIxG,OAAO,EAA8C,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEnG,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC5D,QAAQ,CAAC,GAAG,EAAE,SAAS,YAAY,EAAE,CAAC;IACtC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC7C;AAWD,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,aAAa,GAAG,iBAAiB,CAEnF;AAgBD,uFAAuF;AACvF,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,SAAS,CAAC,gBAAgB,GAAG,SAAS,CAAC,EAAE,GAAG,WAAW,GAAG,SAAS,CAQ7G;AAqFD,mGAAmG;AACnG,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,iBAAiB,EAAE,MAAM,EAAE,SAAS,UAAU,EAAE,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAA;CAAE,CAW7J"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { classifyFailure } from "../../shared/failure-class.js";
|
|
2
|
+
import { toolContent } from "../../shared/tool-output.js";
|
|
3
|
+
import { foldPiEvent, initialPiProjection } from "../pi/projection.js";
|
|
4
|
+
import { emptyMessage, messageChanges, wholeMessage } from "./messages.js";
|
|
5
|
+
function usageTotal(usage) {
|
|
6
|
+
return [...Object.values(usage.models), ...Object.values(usage.tools)].reduce((total, item) => ({
|
|
7
|
+
input: total.input + item.input + item.cacheRead + item.cacheWrite,
|
|
8
|
+
output: total.output + item.output,
|
|
9
|
+
cacheRead: (total.cacheRead ?? 0) + item.cacheRead,
|
|
10
|
+
cacheWrite: (total.cacheWrite ?? 0) + item.cacheWrite,
|
|
11
|
+
}), { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 });
|
|
12
|
+
}
|
|
13
|
+
export function initialDurableProjection(snapshot) {
|
|
14
|
+
return { message: emptyMessage, baseline: usageTotal(snapshot.usage), submissions: new Map(), run: [], tools: new Map() };
|
|
15
|
+
}
|
|
16
|
+
function agentEvents(agent) {
|
|
17
|
+
return [
|
|
18
|
+
...(agent.model === undefined ? [] : [{ kind: "model", model: `${agent.model.provider}/${agent.model.modelId}` }]),
|
|
19
|
+
...(agent.thinkingLevel === undefined ? [] : [{ kind: "effort", effort: agent.thinkingLevel }]),
|
|
20
|
+
];
|
|
21
|
+
}
|
|
22
|
+
function usageEvent(state, usage) {
|
|
23
|
+
const total = usageTotal(usage);
|
|
24
|
+
const base = state.baseline;
|
|
25
|
+
return { kind: "usage", usage: { tokens: { input: total.input - base.input, output: total.output - base.output,
|
|
26
|
+
cacheRead: (total.cacheRead ?? 0) - (base.cacheRead ?? 0), cacheWrite: (total.cacheWrite ?? 0) - (base.cacheWrite ?? 0) } } };
|
|
27
|
+
}
|
|
28
|
+
/** The native run's terminal submission receipts, never the adapter's abort intent. */
|
|
29
|
+
export function submissionOutcome(records) {
|
|
30
|
+
const unanswered = records.find((record) => record?.status === "unanswered");
|
|
31
|
+
if (unanswered?.status === "unanswered") {
|
|
32
|
+
if (unanswered.reason === "aborted") {
|
|
33
|
+
return { kind: "aborted" };
|
|
34
|
+
}
|
|
35
|
+
const reason = typeof unanswered.detail === "string" ? unanswered.detail : unanswered.reason;
|
|
36
|
+
return { kind: "failed", reason, failure: classifyFailure(reason) };
|
|
37
|
+
}
|
|
38
|
+
return records.length > 0 && records.every((record) => record?.status === "done") ? { kind: "completed" } : undefined;
|
|
39
|
+
}
|
|
40
|
+
function entryEvents(state, entry) {
|
|
41
|
+
let messageState = state.message;
|
|
42
|
+
const events = [];
|
|
43
|
+
for (const message of entry.model ?? []) {
|
|
44
|
+
if (message.role === "assistant") {
|
|
45
|
+
const next = wholeMessage(messageState, message);
|
|
46
|
+
events.push(...next.events);
|
|
47
|
+
messageState = emptyMessage;
|
|
48
|
+
}
|
|
49
|
+
else if (message.role === "user") {
|
|
50
|
+
const input = typeof message.content === "string" ? message.content : message.content.filter((block) => block.type === "text").map((block) => block.text).join("");
|
|
51
|
+
const submission = [...state.submissions.values()].find((record) => record.entry === entry.id);
|
|
52
|
+
events.push({ kind: "user_message", input, nativeMessageId: String(entry.id), evidence: "conversation", ...(submission?.requestId === undefined ? {} : { inputId: submission.requestId }) });
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return { state: { ...state, message: messageState }, events };
|
|
56
|
+
}
|
|
57
|
+
function snapshotEvents(state, event) {
|
|
58
|
+
const partial = event.generation?.message;
|
|
59
|
+
const next = partial === undefined ? { state: emptyMessage, events: [] } : wholeMessage(state.message, partial);
|
|
60
|
+
return { state: { ...state, message: next.state, run: event.run?.inputs ?? [], tools: new Map(event.tools.filter((tool) => tool.status === "running").map((tool) => [tool.callId, tool.output ?? ""])) }, events: [
|
|
61
|
+
...agentEvents(event.agent),
|
|
62
|
+
...(event.run === undefined ? [] : [{ kind: "turn_active" }]),
|
|
63
|
+
...next.events,
|
|
64
|
+
...event.tools.filter((tool) => tool.status === "running" && !state.tools.has(tool.callId)).map((tool) => ({ kind: "tool_call_started", callId: tool.callId, tool: tool.name })),
|
|
65
|
+
...event.tools.flatMap((tool) => tool.status === "running" && tool.output !== undefined ? [{ kind: "tool_call_progress", callId: tool.callId, output: tool.output }] : []),
|
|
66
|
+
usageEvent(state, event.usage),
|
|
67
|
+
] };
|
|
68
|
+
}
|
|
69
|
+
function step(state, event) {
|
|
70
|
+
switch (event.type) {
|
|
71
|
+
case "snapshot": return snapshotEvents(state, event);
|
|
72
|
+
case "run_start": return { state: { ...state, run: event.inputs }, events: [{ kind: "turn_active" }] };
|
|
73
|
+
case "run_end": {
|
|
74
|
+
const outcome = submissionOutcome(event.inputs.map((id) => state.submissions.get(id)));
|
|
75
|
+
return { state: { ...state, run: [] }, events: outcome === undefined ? [] : [{ kind: "turn_ended", outcome }] };
|
|
76
|
+
}
|
|
77
|
+
case "message_start": {
|
|
78
|
+
if (event.message.role !== "assistant") {
|
|
79
|
+
return { state, events: [] };
|
|
80
|
+
}
|
|
81
|
+
const next = wholeMessage(emptyMessage, event.message);
|
|
82
|
+
return { state: { ...state, message: next.state }, events: next.events };
|
|
83
|
+
}
|
|
84
|
+
case "message_update": {
|
|
85
|
+
const next = messageChanges(state.message, event.changes);
|
|
86
|
+
return { state: { ...state, message: next.state }, events: next.events };
|
|
87
|
+
}
|
|
88
|
+
case "message_end": return entryEvents(state, event.entry);
|
|
89
|
+
case "tool_execution_start":
|
|
90
|
+
// This native event has precisely the coding SDK's shape. Reuse its pure reading,
|
|
91
|
+
// while the frame below always retains the original durable batch.
|
|
92
|
+
return { state: { ...state, tools: new Map(state.tools).set(event.toolCallId, "") }, events: foldPiEvent(initialPiProjection, event).commands.flatMap((command) => command.body.events) };
|
|
93
|
+
case "tool_execution_update": {
|
|
94
|
+
const before = state.tools.get(event.toolCallId) ?? "";
|
|
95
|
+
const output = event.output === undefined ? before : ("set" in event.output ? event.output.set : before.slice(event.output.trimStart ?? 0) + (event.output.append ?? ""));
|
|
96
|
+
return { state: { ...state, tools: new Map(state.tools).set(event.toolCallId, output) }, events: [{ kind: "tool_call_progress", callId: event.toolCallId, output }] };
|
|
97
|
+
}
|
|
98
|
+
case "tool_execution_end": {
|
|
99
|
+
const result = event.entry?.model?.find((message) => message.role === "toolResult");
|
|
100
|
+
const tools = new Map(state.tools);
|
|
101
|
+
tools.delete(event.toolCallId);
|
|
102
|
+
const content = result === undefined ? undefined : toolContent(result.content);
|
|
103
|
+
return { state: { ...state, tools }, events: [{ kind: "tool_call_ended", callId: event.toolCallId,
|
|
104
|
+
...(content === undefined ? {} : { content }), ...(result === undefined ? {} : { result: result.isError ? "failed" : "ok" }) }] };
|
|
105
|
+
}
|
|
106
|
+
case "agent_changed": return { state, events: agentEvents(event.agent) };
|
|
107
|
+
case "usage_changed": return { state, events: [usageEvent(state, event.usage)] };
|
|
108
|
+
case "auto_retry_start": return { state, events: [{ kind: "retry", attempt: event.attempt, reason: event.errorMessage }] };
|
|
109
|
+
case "submission": return { state, events: [] };
|
|
110
|
+
case "compaction_start": return { state, events: event.blocking ? [{ kind: "compaction_started", trigger: event.reason }] : [] };
|
|
111
|
+
// compaction_end reports only that its task disappeared, not its outcome.
|
|
112
|
+
case "compaction_end":
|
|
113
|
+
case "turn_start":
|
|
114
|
+
case "turn_end":
|
|
115
|
+
case "inbox_update":
|
|
116
|
+
case "auto_retry_end":
|
|
117
|
+
case "deferred_poll":
|
|
118
|
+
case "entry_appended":
|
|
119
|
+
case "task_failed": return { state, events: [] };
|
|
120
|
+
}
|
|
121
|
+
return { state, events: [] };
|
|
122
|
+
}
|
|
123
|
+
/** One complete native commit batch becomes one frame, including empty or unknown-only batches. */
|
|
124
|
+
export function foldDurableBatch(previous, native) {
|
|
125
|
+
const submissions = new Map(previous.submissions);
|
|
126
|
+
for (const event of native) {
|
|
127
|
+
if (event.type === "submission") {
|
|
128
|
+
submissions.set(event.record.id, event.record);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
let state = { ...previous, submissions };
|
|
132
|
+
const events = [];
|
|
133
|
+
for (const event of native) {
|
|
134
|
+
const next = step(state, event);
|
|
135
|
+
state = { ...next.state, submissions };
|
|
136
|
+
events.push(...next.events);
|
|
137
|
+
}
|
|
138
|
+
return { state, frame: { type: "pi-durable/events", native, events } };
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=projection.js.map
|