@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
|
@@ -2,6 +2,7 @@ import { runtimeBrands } from "../../brands.js";
|
|
|
2
2
|
import { defineRuntime } from "../../contracts/runtime.js";
|
|
3
3
|
import { kimiAccountUsage } from "./account-usage.js";
|
|
4
4
|
import { kimiInstallation } from "./installation.js";
|
|
5
|
+
import { kimiInstall, kimiInstallPlan } from "./install.js";
|
|
5
6
|
import { kimiListModels } from "./list-models.js";
|
|
6
7
|
import { kimiCheckUpdate, kimiUpgrade } from "./update.js";
|
|
7
8
|
import { kimiRefusedSessionOptions, kimiSession } from "./session.js";
|
|
@@ -9,6 +10,8 @@ export const kimiRuntime = defineRuntime({
|
|
|
9
10
|
id: "kimi",
|
|
10
11
|
brand: runtimeBrands.kimi,
|
|
11
12
|
installation: kimiInstallation,
|
|
13
|
+
installPlan: kimiInstallPlan,
|
|
14
|
+
install: kimiInstall,
|
|
12
15
|
accountUsage: kimiAccountUsage,
|
|
13
16
|
listModels: kimiListModels,
|
|
14
17
|
checkUpdate: kimiCheckUpdate,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtimes/kimi/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,yBAAyB,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEtE,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAC;IACvC,EAAE,EAAE,MAAM;IACV,KAAK,EAAE,aAAa,CAAC,IAAI;IACzB,YAAY,EAAE,gBAAgB;IAC9B,YAAY,EAAE,gBAAgB;IAC9B,UAAU,EAAE,cAAc;IAC1B,WAAW,EAAE,eAAe;IAC5B,OAAO,EAAE,WAAW;IACpB,OAAO,EAAE,WAAW;IACpB,qBAAqB,EAAE,yBAAyB;CACjD,CAAC,CAAC;AAEH,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtimes/kimi/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,yBAAyB,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEtE,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAC;IACvC,EAAE,EAAE,MAAM;IACV,KAAK,EAAE,aAAa,CAAC,IAAI;IACzB,YAAY,EAAE,gBAAgB;IAC9B,WAAW,EAAE,eAAe;IAC5B,OAAO,EAAE,WAAW;IACpB,YAAY,EAAE,gBAAgB;IAC9B,UAAU,EAAE,cAAc;IAC1B,WAAW,EAAE,eAAe;IAC5B,OAAO,EAAE,WAAW;IACpB,OAAO,EAAE,WAAW;IACpB,qBAAqB,EAAE,yBAAyB;CACjD,CAAC,CAAC;AAEH,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type ScriptInstallMethod } from "../../shared/install.js";
|
|
2
|
+
/**
|
|
3
|
+
* Moonshot's native installer, documented at
|
|
4
|
+
* https://github.com/MoonshotAI/kimi-code#install. It installs the release
|
|
5
|
+
* `code.kimi.com/kimi-code/latest` names as `$KIMI_INSTALL_DIR/bin/kimi`
|
|
6
|
+
* (default `~/.kimi-code/bin/kimi`), the native copy `kimi upgrade` stages
|
|
7
|
+
* updates for, and records region `mainland-cn` (the `code.kimi.com` source
|
|
8
|
+
* `checkUpdate` then reads; the region only seeds the first login). It never
|
|
9
|
+
* prompts; it adds its folder to the shell profile and renames an older
|
|
10
|
+
* Python `kimi-cli` shim it finds first on PATH to `kimi-legacy`, where this
|
|
11
|
+
* user can write.
|
|
12
|
+
*/
|
|
13
|
+
export declare const kimiInstallMethod: ScriptInstallMethod;
|
|
14
|
+
export declare const kimiInstallPlan: import("../../browser.js").InstallPlanner;
|
|
15
|
+
export declare const kimiInstall: import("../../browser.js").Installer;
|
|
16
|
+
//# sourceMappingURL=install.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/runtimes/kimi/install.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgD,KAAK,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAGjH;;;;;;;;;;GAUG;AACH,eAAO,MAAM,iBAAiB,EAAE,mBAS/B,CAAC;AAEF,eAAO,MAAM,eAAe,2CAAuC,CAAC;AAEpE,eAAO,MAAM,WAAW,sCAAmD,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { homedir } from "node:os";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { installDir, planInstaller, scriptInstallPlan } from "../../shared/install.js";
|
|
4
|
+
import { kimiInstallation } from "./installation.js";
|
|
5
|
+
/**
|
|
6
|
+
* Moonshot's native installer, documented at
|
|
7
|
+
* https://github.com/MoonshotAI/kimi-code#install. It installs the release
|
|
8
|
+
* `code.kimi.com/kimi-code/latest` names as `$KIMI_INSTALL_DIR/bin/kimi`
|
|
9
|
+
* (default `~/.kimi-code/bin/kimi`), the native copy `kimi upgrade` stages
|
|
10
|
+
* updates for, and records region `mainland-cn` (the `code.kimi.com` source
|
|
11
|
+
* `checkUpdate` then reads; the region only seeds the first login). It never
|
|
12
|
+
* prompts; it adds its folder to the shell profile and renames an older
|
|
13
|
+
* Python `kimi-cli` shim it finds first on PATH to `kimi-legacy`, where this
|
|
14
|
+
* user can write.
|
|
15
|
+
*/
|
|
16
|
+
export const kimiInstallMethod = {
|
|
17
|
+
source: "https://github.com/MoonshotAI/kimi-code#install",
|
|
18
|
+
line: "curl -fsSL https://code.kimi.com/kimi-code/install.sh | bash",
|
|
19
|
+
tools: ["curl", "bash"],
|
|
20
|
+
writes: () => {
|
|
21
|
+
const home = path.join(homedir(), ".kimi-code");
|
|
22
|
+
return [installDir(process.env.KIMI_INSTALL_DIR, home), installDir(process.env.KIMI_CODE_HOME, home)];
|
|
23
|
+
},
|
|
24
|
+
windows: "Moonshot documents, in PowerShell: irm https://code.kimi.com/kimi-code/install.ps1 | iex",
|
|
25
|
+
};
|
|
26
|
+
export const kimiInstallPlan = scriptInstallPlan(kimiInstallMethod);
|
|
27
|
+
export const kimiInstall = planInstaller(kimiInstallation, kimiInstallPlan);
|
|
28
|
+
//# sourceMappingURL=install.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/runtimes/kimi/install.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,iBAAiB,EAA4B,MAAM,yBAAyB,CAAC;AACjH,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAwB;IACpD,MAAM,EAAE,iDAAiD;IACzD,IAAI,EAAE,8DAA8D;IACpE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,GAAG,EAAE;QACX,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,YAAY,CAAC,CAAC;QAChD,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC;IACxG,CAAC;IACD,OAAO,EAAE,0FAA0F;CACpG,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;AAEpE,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/** Official native-installer layouts that can be invisible to GUI-process PATH. */
|
|
2
2
|
export declare function kimiInstalledExecutableCandidates(platform?: NodeJS.Platform, home?: string, env?: Readonly<NodeJS.ProcessEnv>): readonly string[];
|
|
3
|
-
export declare const kimiInstallation: import("../../
|
|
3
|
+
export declare const kimiInstallation: import("../../browser.js").InstallationProbe;
|
|
4
4
|
//# sourceMappingURL=installation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"installation.d.ts","sourceRoot":"","sources":["../../../src/runtimes/kimi/installation.ts"],"names":[],"mappings":"AAIA,mFAAmF;AACnF,wBAAgB,iCAAiC,CAC/C,QAAQ,GAAE,MAAM,CAAC,QAA2B,EAC5C,IAAI,GAAE,MAAkB,EACxB,GAAG,GAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAe,GAC7C,SAAS,MAAM,EAAE,CAWnB;AAED,eAAO,MAAM,gBAAgB,
|
|
1
|
+
{"version":3,"file":"installation.d.ts","sourceRoot":"","sources":["../../../src/runtimes/kimi/installation.ts"],"names":[],"mappings":"AAIA,mFAAmF;AACnF,wBAAgB,iCAAiC,CAC/C,QAAQ,GAAE,MAAM,CAAC,QAA2B,EAC5C,IAAI,GAAE,MAAkB,EACxB,GAAG,GAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAe,GAC7C,SAAS,MAAM,EAAE,CAWnB;AAED,eAAO,MAAM,gBAAgB,8CAM5B,CAAC"}
|
|
@@ -5,5 +5,5 @@ export declare function selectKimiAuthMethod(initialized: JsonRecord): string |
|
|
|
5
5
|
export declare function supportsKimiYolo(response: JsonRecord): boolean;
|
|
6
6
|
export declare const kimiRefusedSessionOptions: RefusedSessionOptions;
|
|
7
7
|
export declare const kimiAcpProfile: AcpSessionProfile;
|
|
8
|
-
export declare const kimiSession: import("../../
|
|
8
|
+
export declare const kimiSession: import("../../browser.js").StartSession;
|
|
9
9
|
//# sourceMappingURL=session.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/runtimes/kimi/session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAc,KAAK,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACjF,OAAO,EAAY,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGjE,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,UAAU,GAAG,MAAM,GAAG,SAAS,CAOhF;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,UAAU,GAAG,OAAO,CAU9D;AAED,eAAO,MAAM,yBAAyB,EAAE,qBAKvC,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,iBA4B5B,CAAC;AAEF,eAAO,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/runtimes/kimi/session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAc,KAAK,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACjF,OAAO,EAAY,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGjE,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,UAAU,GAAG,MAAM,GAAG,SAAS,CAOhF;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,UAAU,GAAG,OAAO,CAU9D;AAED,eAAO,MAAM,yBAAyB,EAAE,qBAKvC,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,iBA4B5B,CAAC;AAEF,eAAO,MAAM,WAAW,yCAA6B,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { AcpSessionProfile } from "../../shared/acp/profile.js";
|
|
2
|
+
/** v2 forwards child updates on the root envelope; native metadata owns the identity. */
|
|
3
|
+
export declare const opencodeChildAttribution: NonNullable<AcpSessionProfile["attributeUpdate"]>;
|
|
4
|
+
//# sourceMappingURL=attribution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attribution.d.ts","sourceRoot":"","sources":["../../../src/runtimes/opencode/attribution.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAErE,yFAAyF;AACzF,eAAO,MAAM,wBAAwB,EAAE,WAAW,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAStF,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { asRecord } from "../../shared/json.js";
|
|
2
|
+
/** v2 forwards child updates on the root envelope; native metadata owns the identity. */
|
|
3
|
+
export const opencodeChildAttribution = (notification) => {
|
|
4
|
+
const envelope = asRecord(notification);
|
|
5
|
+
const update = asRecord(envelope?.update);
|
|
6
|
+
// oxlint-disable-next-line eslint/no-underscore-dangle -- Native ACP extension field.
|
|
7
|
+
const child = asRecord(asRecord(update?._meta)?.["opencode/child-session"]) ?? asRecord(asRecord(envelope?._meta)?.["opencode/child-session"]);
|
|
8
|
+
if (update === null || typeof child?.id !== "string" || child.id === "" || typeof child.parentID !== "string" || child.parentID === "" || child.id === child.parentID) {
|
|
9
|
+
return null;
|
|
10
|
+
}
|
|
11
|
+
return { sessionId: child.id, parent: child.parentID };
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=attribution.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attribution.js","sourceRoot":"","sources":["../../../src/runtimes/opencode/attribution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAGhD,yFAAyF;AACzF,MAAM,CAAC,MAAM,wBAAwB,GAAsD,CAAC,YAAY,EAAE,EAAE;IAC1G,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC1C,sFAAsF;IACtF,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CAAC,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CAAC,CAAC,CAAC;IAC/I,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,KAAK,EAAE,EAAE,KAAK,QAAQ,IAAI,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ,IAAI,KAAK,CAAC,QAAQ,KAAK,EAAE,IAAI,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC;QACtK,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;AACzD,CAAC,CAAC"}
|
|
@@ -9,10 +9,13 @@ export declare const opencodeRuntime: {
|
|
|
9
9
|
};
|
|
10
10
|
};
|
|
11
11
|
readonly refusedSessionOptions: Readonly<Partial<Record<import("../../contracts/runtime.js").RefusableSessionOption, string>>>;
|
|
12
|
-
readonly installation: import("../../
|
|
13
|
-
readonly
|
|
14
|
-
readonly
|
|
15
|
-
|
|
12
|
+
readonly installation: import("../../browser.js").InstallationProbe;
|
|
13
|
+
readonly installPlan: import("../../browser.js").InstallPlanner;
|
|
14
|
+
readonly install: import("../../browser.js").Installer;
|
|
15
|
+
readonly installLines: readonly import("../../browser.js").InstallLine[];
|
|
16
|
+
readonly session: import("../../browser.js").StartSession;
|
|
17
|
+
readonly listModels: import("../../browser.js").ModelLister;
|
|
18
|
+
} & import("../../browser.js").RuntimeInventories & {
|
|
16
19
|
readonly brand: import("../../brands.js").RuntimeBrand;
|
|
17
20
|
};
|
|
18
21
|
export { opencodeSession } from "./session.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtimes/opencode/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtimes/opencode/index.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;CAU1B,CAAC;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { runtimeBrands } from "../../brands.js";
|
|
2
2
|
import { defineRuntime } from "../../contracts/runtime.js";
|
|
3
3
|
import { opencodeInstallation } from "./installation.js";
|
|
4
|
+
import { opencodeInstall, opencodeInstallLines, opencodeInstallPlan } from "./install.js";
|
|
4
5
|
import { opencodeListModels } from "./list-models.js";
|
|
5
6
|
import { opencodeRefusedSessionOptions, opencodeSession } from "./session.js";
|
|
6
7
|
export const opencodeRuntime = defineRuntime({
|
|
@@ -8,6 +9,9 @@ export const opencodeRuntime = defineRuntime({
|
|
|
8
9
|
brand: runtimeBrands.opencode,
|
|
9
10
|
refusedSessionOptions: opencodeRefusedSessionOptions,
|
|
10
11
|
installation: opencodeInstallation,
|
|
12
|
+
installPlan: opencodeInstallPlan,
|
|
13
|
+
install: opencodeInstall,
|
|
14
|
+
installLines: opencodeInstallLines,
|
|
11
15
|
session: opencodeSession,
|
|
12
16
|
listModels: opencodeListModels,
|
|
13
17
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtimes/opencode/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,6BAA6B,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE9E,MAAM,CAAC,MAAM,eAAe,GAAG,aAAa,CAAC;IAC3C,EAAE,EAAE,UAAU;IACd,KAAK,EAAE,aAAa,CAAC,QAAQ;IAC7B,qBAAqB,EAAE,6BAA6B;IACpD,YAAY,EAAE,oBAAoB;IAClC,OAAO,EAAE,eAAe;IACxB,UAAU,EAAE,kBAAkB;CAC/B,CAAC,CAAC;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtimes/opencode/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAC1F,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,6BAA6B,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE9E,MAAM,CAAC,MAAM,eAAe,GAAG,aAAa,CAAC;IAC3C,EAAE,EAAE,UAAU;IACd,KAAK,EAAE,aAAa,CAAC,QAAQ;IAC7B,qBAAqB,EAAE,6BAA6B;IACpD,YAAY,EAAE,oBAAoB;IAClC,WAAW,EAAE,mBAAmB;IAChC,OAAO,EAAE,eAAe;IACxB,YAAY,EAAE,oBAAoB;IAClC,OAAO,EAAE,eAAe;IACxB,UAAU,EAAE,kBAAkB;CAC/B,CAAC,CAAC;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { AvailableInstallation } from "../../contracts/installation.js";
|
|
2
|
+
import type { InstallLine } from "../../contracts/install.js";
|
|
3
|
+
import { type ScriptInstallMethod } from "../../shared/install.js";
|
|
4
|
+
/**
|
|
5
|
+
* OpenCode ships two major lines of the same `opencode` command in parallel:
|
|
6
|
+
* OpenCode 1 (npm `opencode-ai`, 1.x) and OpenCode 2 (npm `@opencode/cli`,
|
|
7
|
+
* 2.x, a rewrite with a new plugin and server API). They do not install side
|
|
8
|
+
* by side: both install scripts write `~/.opencode/bin/opencode`; the 2
|
|
9
|
+
* installer replaces a 1 binary (https://opencode.ai/v2/docs/migrate-v1),
|
|
10
|
+
* and the 1 script silently replaces a 2 binary with 1
|
|
11
|
+
* (https://github.com/anomalyco/opencode/issues/54084).
|
|
12
|
+
* So oar never chooses a line for the person, and an install never runs over
|
|
13
|
+
* a copy of either line: the probe finds it first (`already_installed`).
|
|
14
|
+
*/
|
|
15
|
+
export declare const opencodeInstallLines: readonly InstallLine[];
|
|
16
|
+
/**
|
|
17
|
+
* Each line's install script as OpenCode documents it first, downloading
|
|
18
|
+
* that line's latest release to `~/.opencode/bin/opencode`, never prompting,
|
|
19
|
+
* and adding the folder to the shell profile when one exists (it creates
|
|
20
|
+
* none). Chosen because each line's own `opencode upgrade` takes that path as
|
|
21
|
+
* its `curl` method (v1: packages/opencode/src/installation/index.ts) and
|
|
22
|
+
* stays on the line: in the sandbox both answered "Using method: curl".
|
|
23
|
+
* OpenCode documents no script for Windows.
|
|
24
|
+
*/
|
|
25
|
+
export declare const opencodeInstallMethods: Readonly<Record<string, ScriptInstallMethod>>;
|
|
26
|
+
/** `opencode --version`: `1.18.35` on line 1, `opencode v2.0.26` on line 2. */
|
|
27
|
+
export declare function opencodeLineOf(installation: AvailableInstallation): string | undefined;
|
|
28
|
+
export declare const opencodeInstallPlan: import("../../contracts/install.js").InstallPlanner;
|
|
29
|
+
export declare const opencodeInstall: import("../../contracts/install.js").Installer;
|
|
30
|
+
//# sourceMappingURL=install.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/runtimes/opencode/install.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAmC,KAAK,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAIpG;;;;;;;;;;GAUG;AACH,eAAO,MAAM,oBAAoB,EAAE,SAAS,WAAW,EAGtD,CAAC;AAIF;;;;;;;;GAQG;AACH,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAehF,CAAC;AAEF,+EAA+E;AAC/E,wBAAgB,cAAc,CAAC,YAAY,EAAE,qBAAqB,GAAG,MAAM,GAAG,SAAS,CAItF;AAED,eAAO,MAAM,mBAAmB,qDAAqF,CAAC;AAEtH,eAAO,MAAM,eAAe,gDAA2E,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { homedir } from "node:os";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { linedInstallPlan, planInstaller } from "../../shared/install.js";
|
|
4
|
+
import { releaseVersion } from "../../shared/update.js";
|
|
5
|
+
import { opencodeInstallation } from "./installation.js";
|
|
6
|
+
/**
|
|
7
|
+
* OpenCode ships two major lines of the same `opencode` command in parallel:
|
|
8
|
+
* OpenCode 1 (npm `opencode-ai`, 1.x) and OpenCode 2 (npm `@opencode/cli`,
|
|
9
|
+
* 2.x, a rewrite with a new plugin and server API). They do not install side
|
|
10
|
+
* by side: both install scripts write `~/.opencode/bin/opencode`; the 2
|
|
11
|
+
* installer replaces a 1 binary (https://opencode.ai/v2/docs/migrate-v1),
|
|
12
|
+
* and the 1 script silently replaces a 2 binary with 1
|
|
13
|
+
* (https://github.com/anomalyco/opencode/issues/54084).
|
|
14
|
+
* So oar never chooses a line for the person, and an install never runs over
|
|
15
|
+
* a copy of either line: the probe finds it first (`already_installed`).
|
|
16
|
+
*/
|
|
17
|
+
export const opencodeInstallLines = [
|
|
18
|
+
{ line: "v1", description: "OpenCode 1: the opencode-ai 1.x releases" },
|
|
19
|
+
{ line: "v2", description: "OpenCode 2: the @opencode/cli 2.x releases, with a new plugin and server API" },
|
|
20
|
+
];
|
|
21
|
+
const writes = () => [path.join(homedir(), ".opencode", "bin")];
|
|
22
|
+
/**
|
|
23
|
+
* Each line's install script as OpenCode documents it first, downloading
|
|
24
|
+
* that line's latest release to `~/.opencode/bin/opencode`, never prompting,
|
|
25
|
+
* and adding the folder to the shell profile when one exists (it creates
|
|
26
|
+
* none). Chosen because each line's own `opencode upgrade` takes that path as
|
|
27
|
+
* its `curl` method (v1: packages/opencode/src/installation/index.ts) and
|
|
28
|
+
* stays on the line: in the sandbox both answered "Using method: curl".
|
|
29
|
+
* OpenCode documents no script for Windows.
|
|
30
|
+
*/
|
|
31
|
+
export const opencodeInstallMethods = {
|
|
32
|
+
v1: {
|
|
33
|
+
source: "https://opencode.ai/docs/#install",
|
|
34
|
+
line: "curl -fsSL https://opencode.ai/install | bash",
|
|
35
|
+
tools: ["curl", "bash"],
|
|
36
|
+
writes,
|
|
37
|
+
windows: "OpenCode recommends WSL, or npm install -g opencode-ai, Scoop or Chocolatey",
|
|
38
|
+
},
|
|
39
|
+
v2: {
|
|
40
|
+
source: "https://opencode.ai/v2/docs/",
|
|
41
|
+
line: "curl -fsSL https://opencode.ai/v2/install | bash",
|
|
42
|
+
tools: ["curl", "bash"],
|
|
43
|
+
writes,
|
|
44
|
+
windows: "OpenCode documents no script for OpenCode 2 there; its packages (npm install -g @opencode/cli) are on https://opencode.ai/v2/docs/",
|
|
45
|
+
},
|
|
46
|
+
};
|
|
47
|
+
/** `opencode --version`: `1.18.35` on line 1, `opencode v2.0.26` on line 2. */
|
|
48
|
+
export function opencodeLineOf(installation) {
|
|
49
|
+
const version = installation.via === "executable" && installation.version !== undefined ? releaseVersion(installation.version) : undefined;
|
|
50
|
+
const major = version?.split(".")[0];
|
|
51
|
+
return major === undefined ? undefined : opencodeInstallLines.find((entry) => entry.line === `v${major}`)?.line;
|
|
52
|
+
}
|
|
53
|
+
export const opencodeInstallPlan = linedInstallPlan({ lines: opencodeInstallLines, methods: opencodeInstallMethods });
|
|
54
|
+
export const opencodeInstall = planInstaller(opencodeInstallation, opencodeInstallPlan, opencodeLineOf);
|
|
55
|
+
//# sourceMappingURL=install.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/runtimes/opencode/install.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAA4B,MAAM,yBAAyB,CAAC;AACpG,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEzD;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAA2B;IAC1D,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,0CAA0C,EAAE;IACvE,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,8EAA8E,EAAE;CAC5G,CAAC;AAEF,MAAM,MAAM,GAAG,GAAsB,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;AAEnF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAkD;IACnF,EAAE,EAAE;QACF,MAAM,EAAE,mCAAmC;QAC3C,IAAI,EAAE,+CAA+C;QACrD,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;QACvB,MAAM;QACN,OAAO,EAAE,6EAA6E;KACvF;IACD,EAAE,EAAE;QACF,MAAM,EAAE,8BAA8B;QACtC,IAAI,EAAE,kDAAkD;QACxD,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;QACvB,MAAM;QACN,OAAO,EAAE,oIAAoI;KAC9I;CACF,CAAC;AAEF,+EAA+E;AAC/E,MAAM,UAAU,cAAc,CAAC,YAAmC;IAChE,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,KAAK,YAAY,IAAI,YAAY,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3I,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC;AAClH,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,EAAE,KAAK,EAAE,oBAAoB,EAAE,OAAO,EAAE,sBAAsB,EAAE,CAAC,CAAC;AAEtH,MAAM,CAAC,MAAM,eAAe,GAAG,aAAa,CAAC,oBAAoB,EAAE,mBAAmB,EAAE,cAAc,CAAC,CAAC"}
|
|
@@ -3,6 +3,6 @@
|
|
|
3
3
|
* PATH can miss. npm (`opencode-ai`), Homebrew and Scoop copies are on PATH.
|
|
4
4
|
*/
|
|
5
5
|
export declare function opencodeInstalledExecutableCandidates(platform?: NodeJS.Platform, home?: string): readonly string[];
|
|
6
|
-
/** `opencode --version`
|
|
7
|
-
export declare const opencodeInstallation: import("../../
|
|
6
|
+
/** `opencode --version` is retained verbatim: v1 prints 1.x; v2 prints "opencode v2.x". */
|
|
7
|
+
export declare const opencodeInstallation: import("../../browser.js").InstallationProbe;
|
|
8
8
|
//# sourceMappingURL=installation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"installation.d.ts","sourceRoot":"","sources":["../../../src/runtimes/opencode/installation.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,wBAAgB,qCAAqC,CACnD,QAAQ,GAAE,MAAM,CAAC,QAA2B,EAC5C,IAAI,GAAE,MAAkB,GACvB,SAAS,MAAM,EAAE,CAGnB;AAED,2FAA2F;AAC3F,eAAO,MAAM,oBAAoB,
|
|
1
|
+
{"version":3,"file":"installation.d.ts","sourceRoot":"","sources":["../../../src/runtimes/opencode/installation.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,wBAAgB,qCAAqC,CACnD,QAAQ,GAAE,MAAM,CAAC,QAA2B,EAC5C,IAAI,GAAE,MAAkB,GACvB,SAAS,MAAM,EAAE,CAGnB;AAED,2FAA2F;AAC3F,eAAO,MAAM,oBAAoB,8CAMhC,CAAC"}
|
|
@@ -9,6 +9,6 @@ export function opencodeInstalledExecutableCandidates(platform = process.platfor
|
|
|
9
9
|
const paths = platform === "win32" ? path.win32 : path.posix;
|
|
10
10
|
return [paths.join(home, ".opencode", "bin", platform === "win32" ? "opencode.exe" : "opencode")];
|
|
11
11
|
}
|
|
12
|
-
/** `opencode --version`
|
|
12
|
+
/** `opencode --version` is retained verbatim: v1 prints 1.x; v2 prints "opencode v2.x". */
|
|
13
13
|
export const opencodeInstallation = executableInstallation("OAR_OPENCODE_BIN", "opencode", opencodeInstalledExecutableCandidates, undefined, { versionTimeoutMs: 15_000 });
|
|
14
14
|
//# sourceMappingURL=installation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-models.d.ts","sourceRoot":"","sources":["../../../src/runtimes/opencode/list-models.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"list-models.d.ts","sourceRoot":"","sources":["../../../src/runtimes/opencode/list-models.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAc9E;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,EAAE,CA6BlE;AAED,8FAA8F;AAC9F,eAAO,MAAM,kBAAkB,EAAE,WAqBhC,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { runExecutable } from "../../shared/executable/index.js";
|
|
2
2
|
import { processFailure, stderrTail } from "../../shared/executable/diagnostics.js";
|
|
3
3
|
import { asRecord, parseJson } from "../../shared/json.js";
|
|
4
|
+
import { opencodeMajor } from "./version.js";
|
|
4
5
|
function text(value) {
|
|
5
6
|
if (typeof value !== "string") {
|
|
6
7
|
return undefined;
|
|
@@ -53,12 +54,24 @@ export const opencodeListModels = async (installation, options = {}) => {
|
|
|
53
54
|
if (installation.via !== "executable") {
|
|
54
55
|
return { kind: "unsupported", reason: "opencode model listing requires the opencode executable" };
|
|
55
56
|
}
|
|
56
|
-
const
|
|
57
|
+
const major = await opencodeMajor(installation);
|
|
58
|
+
// v2's default command connects to a persistent daemon. Listing must not leave one behind.
|
|
59
|
+
const result = await runExecutable(installation.command, ["models", major === 2 ? "--standalone" : "--verbose"], { timeoutMs: options.timeoutMs ?? 30_000 });
|
|
57
60
|
if (!result.ok) {
|
|
58
61
|
throw processFailure("Failed to list opencode models", result.diagnostics ?? {
|
|
59
62
|
exitCode: result.exitCode, signal: null, stderr: stderrTail(result.stderr),
|
|
60
63
|
});
|
|
61
64
|
}
|
|
62
|
-
|
|
65
|
+
if (major === 1) {
|
|
66
|
+
return { kind: "ok", models: projectOpencodeModels(result.stdout) };
|
|
67
|
+
}
|
|
68
|
+
const ids = result.stdout.split(/\r?\n/u).map((line) => line.trim()).filter(Boolean);
|
|
69
|
+
if (ids.length === 0) {
|
|
70
|
+
return { kind: "unsupported", reason: "opencode 2.0.26 models --standalone exits before the cold catalog finishes loading; an empty response does not establish that no models exist (https://github.com/anomalyco/opencode/issues/53724)" };
|
|
71
|
+
}
|
|
72
|
+
if (ids.some((id) => !/^\S+\/\S+$/u.test(id))) {
|
|
73
|
+
throw new Error("opencode models --standalone returned an unrecognized model listing");
|
|
74
|
+
}
|
|
75
|
+
return { kind: "ok", models: ids.map((id) => ({ id })) };
|
|
63
76
|
};
|
|
64
77
|
//# sourceMappingURL=list-models.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-models.js","sourceRoot":"","sources":["../../../src/runtimes/opencode/list-models.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAC;AACpF,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"list-models.js","sourceRoot":"","sources":["../../../src/runtimes/opencode/list-models.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,5 +8,7 @@ import { type AcpSessionProfile } from "../../shared/acp/session.js";
|
|
|
8
8
|
*/
|
|
9
9
|
export declare const opencodeRefusedSessionOptions: RefusedSessionOptions;
|
|
10
10
|
export declare const opencodeAcpProfile: AcpSessionProfile;
|
|
11
|
+
export declare const opencodeV2RefusedSessionOptions: RefusedSessionOptions;
|
|
12
|
+
export declare const opencodeV2AcpProfile: AcpSessionProfile;
|
|
11
13
|
export declare const opencodeSession: StartSession;
|
|
12
14
|
//# sourceMappingURL=session.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/runtimes/opencode/session.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/runtimes/opencode/session.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAExE,OAAO,KAAK,EAAE,YAAY,EAAW,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAc,KAAK,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAIjF;;;;GAIG;AACH,eAAO,MAAM,6BAA6B,EAAE,qBAG3C,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,iBAwBhC,CAAC;AAIF,eAAO,MAAM,+BAA+B,EAAE,qBAI7C,CAAC;AACF,eAAO,MAAM,oBAAoB,EAAE,iBAKlC,CAAC;AA+BF,eAAO,MAAM,eAAe,EAAE,YA+B7B,CAAC"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { opencodeMajor } from "./version.js";
|
|
2
|
+
import { opencodeChildAttribution } from "./attribution.js";
|
|
1
3
|
import { refuseSessionOptions } from "../../shared/session-options.js";
|
|
2
4
|
import { acpSession } from "../../shared/acp/session.js";
|
|
3
5
|
import { checkMcpServerNames } from "../../shared/mcp-servers.js";
|
|
@@ -37,6 +39,19 @@ export const opencodeAcpProfile = {
|
|
|
37
39
|
resumeKeepsSessionCwd: true,
|
|
38
40
|
};
|
|
39
41
|
const directSession = acpSession(opencodeAcpProfile);
|
|
42
|
+
const { steerParams: _v1SteerParams, ...commonProfile } = opencodeAcpProfile;
|
|
43
|
+
export const opencodeV2RefusedSessionOptions = {
|
|
44
|
+
...opencodeRefusedSessionOptions,
|
|
45
|
+
appendSystemPrompt: "opencode v2 does not load the instructions configuration used for session-local appended prompts; ACP exposes no equivalent transient instruction channel",
|
|
46
|
+
systemPrompt: "opencode v2 uses agents.<id>.system, but ACP exposes no per-session replacement and OAR cannot yet safely resolve and override the selected agent across new sessions and resume",
|
|
47
|
+
};
|
|
48
|
+
export const opencodeV2AcpProfile = {
|
|
49
|
+
...commonProfile,
|
|
50
|
+
capabilities: { queue: { durable: false }, attribution: "nested" },
|
|
51
|
+
attributeUpdate: opencodeChildAttribution,
|
|
52
|
+
validateOptions: (options) => { refuseSessionOptions(opencodeV2RefusedSessionOptions, options); },
|
|
53
|
+
};
|
|
54
|
+
const directV2Session = acpSession(opencodeV2AcpProfile);
|
|
40
55
|
function withPromptCleanup(session, cleanup) {
|
|
41
56
|
let unsubscribe = undefined;
|
|
42
57
|
const observeCleanup = async () => {
|
|
@@ -70,17 +85,20 @@ function withPromptCleanup(session, cleanup) {
|
|
|
70
85
|
}
|
|
71
86
|
export const opencodeSession = async (installation, options) => {
|
|
72
87
|
refuseSessionOptions(opencodeRefusedSessionOptions, options);
|
|
88
|
+
// Invalid MCP entries fail before even the release-line helper can start.
|
|
89
|
+
checkMcpServerNames(options.mcpServers ?? []);
|
|
90
|
+
if (installation.via !== "executable") {
|
|
91
|
+
throw new Error("opencode requires an executable installation");
|
|
92
|
+
}
|
|
93
|
+
if (await opencodeMajor(installation, options) === 2) {
|
|
94
|
+
return directV2Session(installation, options);
|
|
95
|
+
}
|
|
73
96
|
if (options.systemPrompt === undefined && options.appendSystemPrompt === undefined) {
|
|
74
97
|
return directSession(installation, options);
|
|
75
98
|
}
|
|
76
99
|
// The prompts travel in OPENCODE_CONFIG_CONTENT, the session's MCP servers
|
|
77
|
-
// in the ACP open as on the direct path
|
|
78
|
-
// before the prompts are prepared.
|
|
79
|
-
checkMcpServerNames(options.mcpServers ?? []);
|
|
100
|
+
// in the ACP open as on the direct path, after validation above.
|
|
80
101
|
validateOpenCodePrompts(options);
|
|
81
|
-
if (installation.via !== "executable") {
|
|
82
|
-
throw new Error("opencode requires an executable installation");
|
|
83
|
-
}
|
|
84
102
|
const prepared = await prepareOpenCodePrompts(installation.command, options);
|
|
85
103
|
try {
|
|
86
104
|
const session = await acpSession({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/runtimes/opencode/session.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/runtimes/opencode/session.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { ExecutableInstallation } from "../../contracts/installation.js";
|
|
2
|
+
import type { SessionOptions } from "../../contracts/session.js";
|
|
3
|
+
/** The two independently maintained native lines share one command name. */
|
|
4
|
+
export declare function opencodeMajor(installation: ExecutableInstallation, options?: Pick<SessionOptions, "cwd" | "env">): Promise<1 | 2>;
|
|
5
|
+
//# sourceMappingURL=version.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../../src/runtimes/opencode/version.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAC9E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAKjE,4EAA4E;AAC5E,wBAAsB,aAAa,CAAC,YAAY,EAAE,sBAAsB,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,KAAK,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAevI"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { processFailure } from "../../shared/executable/diagnostics.js";
|
|
2
|
+
import { runExecutable } from "../../shared/executable/run.js";
|
|
3
|
+
import { sessionEnvironment } from "../../shared/environment.js";
|
|
4
|
+
/** The two independently maintained native lines share one command name. */
|
|
5
|
+
export async function opencodeMajor(installation, options) {
|
|
6
|
+
let version = installation.version;
|
|
7
|
+
if (version === undefined) {
|
|
8
|
+
const result = await runExecutable(installation.command, ["--version"], {
|
|
9
|
+
timeoutMs: 15_000,
|
|
10
|
+
...(options === undefined ? {} : { cwd: options.cwd, env: sessionEnvironment(options.env) }),
|
|
11
|
+
});
|
|
12
|
+
if (!result.ok) {
|
|
13
|
+
throw processFailure("Failed to identify the opencode release line", result.diagnostics ?? { exitCode: result.exitCode, signal: null, stderr: result.stderr });
|
|
14
|
+
}
|
|
15
|
+
version = result.stdout.trim();
|
|
16
|
+
}
|
|
17
|
+
const major = /^(?:opencode\s+)?v?([12])\.\d+\.\d+(?:\S*)$/u.exec(version.trim())?.[1];
|
|
18
|
+
if (major === "1" || major === "2") {
|
|
19
|
+
return major === "1" ? 1 : 2;
|
|
20
|
+
}
|
|
21
|
+
throw new Error(`Unrecognized opencode release line: ${JSON.stringify(version)}`);
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../../src/runtimes/opencode/version.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAEjE,4EAA4E;AAC5E,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,YAAoC,EAAE,OAA6C;IACrH,IAAI,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC;IACnC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,EAAE;YACtE,SAAS,EAAE,MAAM;YACjB,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,kBAAkB,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;SAC7F,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,MAAM,cAAc,CAAC,8CAA8C,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QACjK,CAAC;QACD,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACjC,CAAC;IACD,MAAM,KAAK,GAAG,8CAA8C,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACvF,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;QAAC,OAAO,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;IACrE,MAAM,IAAI,KAAK,CAAC,uCAAuC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AACpF,CAAC"}
|
|
@@ -14,12 +14,12 @@ export declare const piRuntime: {
|
|
|
14
14
|
};
|
|
15
15
|
};
|
|
16
16
|
readonly refusedSessionOptions: Readonly<Partial<Record<import("../../contracts/runtime.js").RefusableSessionOption, string>>>;
|
|
17
|
-
readonly skills: import("../../
|
|
18
|
-
readonly tools: import("../../
|
|
19
|
-
readonly installation: import("../../
|
|
20
|
-
readonly listModels: import("../../
|
|
21
|
-
readonly session: import("../../
|
|
22
|
-
} & import("../../
|
|
17
|
+
readonly skills: import("../../browser.js").InventoryReader<import("../../browser.js").SkillEntry>;
|
|
18
|
+
readonly tools: import("../../browser.js").InventoryReader<import("../../browser.js").ToolEntry>;
|
|
19
|
+
readonly installation: import("../../browser.js").InstallationProbe;
|
|
20
|
+
readonly listModels: import("../../browser.js").ModelLister;
|
|
21
|
+
readonly session: import("../../browser.js").StartSession;
|
|
22
|
+
} & import("../../browser.js").RuntimeInventories & {
|
|
23
23
|
readonly brand: import("../../brands.js").RuntimeBrand;
|
|
24
24
|
};
|
|
25
25
|
export { piListModels, projectPiModels } from "./list-models.js";
|
|
@@ -1,38 +1,6 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
|
|
3
|
-
export
|
|
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[];
|
|
1
|
+
import type { ModelLister } from "../../contracts/list-models.js";
|
|
2
|
+
import { type PiListedModel, type PiAvailabilitySource, type PiThinkingLevelsOf } from "./model-projection.js";
|
|
3
|
+
export { projectPiModels } from "./model-projection.js";
|
|
36
4
|
/**
|
|
37
5
|
* In-process through the bundled SDK, built the way `pi --list-models` builds
|
|
38
6
|
* its own runtime: `createAgentSessionServices` loads the extensions under the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-models.d.ts","sourceRoot":"","sources":["../../../src/runtimes/pi/list-models.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"list-models.d.ts","sourceRoot":"","sources":["../../../src/runtimes/pi/list-models.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAGlE,OAAO,EAAmB,KAAK,aAAa,EAAE,KAAK,oBAAoB,EAAE,KAAK,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAEhI,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,SAAS,aAAa,EAC5D,aAAa,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,EAC5E,gBAAgB,CAAC,EAAE,MAAM,OAAO,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,GAC1D,WAAW,CAeb;AAED,eAAO,MAAM,YAAY,EAAE,WA0BzB,CAAC"}
|