openpond 0.0.37 → 0.0.39
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 +3 -7
- package/dist/api/core.d.ts +6 -0
- package/dist/api/types.d.ts +0 -50
- package/dist/api/vercel-protection.d.ts +1 -0
- package/dist/api.d.ts +2 -8
- package/dist/chunks/{app-layer-LF2HK2B2.js → app-layer-LTBWNA2F.js} +32 -10
- package/dist/chunks/app-server-runtime-VYYJ2AWX.js +18 -0
- package/dist/chunks/{apps-ZMCMQZKX.js → apps-CZAJBGE3.js} +6 -124
- package/dist/chunks/{chunk-MHBQWGCL.js → chunk-2SF6HLT7.js} +5463 -5535
- package/dist/chunks/{chunk-VFL2JVBZ.js → chunk-3CDPPVLE.js} +111 -84
- package/dist/chunks/{chunk-N6E6YSTP.js → chunk-3HW6OSHP.js} +1 -3
- package/dist/chunks/{chunk-43YI36NA.js → chunk-3KLQ52B2.js} +228 -5
- package/dist/chunks/chunk-4HIWFIMN.js +37172 -0
- package/dist/chunks/{chunk-WTA33KQQ.js → chunk-4N6E3OVF.js} +4 -4
- package/dist/chunks/{chunk-35PPAOWD.js → chunk-6V7MJVRO.js} +56 -11
- package/dist/chunks/{chunk-ICLLW5QD.js → chunk-BQQZNGI6.js} +154 -194
- package/dist/chunks/chunk-DBHSOTYZ.js +1552 -0
- package/dist/chunks/{chunk-ZZ4ECDTP.js → chunk-FCVVOMIP.js} +145 -5
- package/dist/chunks/{chunk-A3CJUBA7.js → chunk-JIEUB6OS.js} +1 -1
- package/dist/chunks/{chunk-WL76II47.js → chunk-JJPAMKXZ.js} +1 -1
- package/dist/chunks/{chunk-2WMGA5FE.js → chunk-JRROTGQT.js} +1 -110
- package/dist/chunks/chunk-KHNHUA2H.js +1737 -0
- package/dist/chunks/{chunk-LNKYEHIJ.js → chunk-L6XH4ZGZ.js} +1 -1
- package/dist/chunks/chunk-M2NXTLH2.js +4054 -0
- package/dist/chunks/{chunk-IATK3CIP.js → chunk-MIZHCABO.js} +2 -195
- package/dist/chunks/chunk-SMNFI2FU.js +113 -0
- package/dist/chunks/chunk-VCVQLECH.js +675 -0
- package/dist/chunks/{chunk-KT2BB4AR.js → chunk-ZJBJQCQZ.js} +179 -52
- package/dist/chunks/{cli-5NFIDCRL.js → cli-JS76LCW2.js} +9 -5
- package/dist/chunks/{core-commands-7223BEQL.js → core-commands-4MRJQZJV.js} +7 -5
- package/dist/chunks/{harness-OMJXIGEW.js → desktop-test-RNMWLOVU.js} +15 -14
- package/dist/chunks/{chunk-ZPL4GZML.js → extension-GDRW22N3.js} +5866 -3601
- package/dist/chunks/{help-YPPROIS7.js → help-LWNREJ7U.js} +1 -1
- package/dist/chunks/{opchat-K7IYFPX6.js → opchat-2K2JIGK3.js} +9 -10
- package/dist/chunks/{organizations-W3FMAWQ4.js → organizations-Z5HVD2E7.js} +11 -9
- package/dist/chunks/{profile-N4B3F7M7.js → profile-QNECVVGN.js} +12 -38
- package/dist/chunks/{project-agent-NA6SGU25.js → project-agent-W3V75WBR.js} +9 -411
- package/dist/chunks/{sandbox-command-AKCFJKKN.js → sandbox-command-X3FO74NX.js} +7 -5
- package/dist/chunks/{sandbox-template-5NKTAXCL.js → sandbox-template-5B4T4BGU.js} +8 -6
- package/dist/chunks/{src-XAVSQTVR.js → src-ESAILPUH.js} +32 -30
- package/dist/chunks/src-IC5RX4L6.js +63517 -0
- package/dist/chunks/{teams-bot-557NZC73.js → teams-bot-NTQ6VFFL.js} +6 -4
- package/dist/chunks/training-BR5A7SPU.js +320 -0
- package/dist/chunks/{workspaces-S2H75XQB.js → workspaces-XC3QBD2Y.js} +2 -2
- package/dist/cli.js +24 -12
- package/dist/client-types.d.ts +1 -9
- package/dist/client.d.ts +3 -3
- package/dist/config.d.ts +9 -3
- package/dist/index.js +1300 -1091
- package/dist/profile/local-profile-types.d.ts +16 -0
- package/dist/profile/local-profile.d.ts +50 -4
- package/dist/sandbox/client-handles.d.ts +33 -46
- package/dist/sandbox/client.d.ts +4 -26
- package/dist/sandbox/sandbox-instance-client.d.ts +5 -5
- package/dist/sandbox/types/client.d.ts +1 -2
- package/dist/sandbox/types/core.d.ts +0 -1
- package/dist/sandbox/types/org-project-agent.d.ts +3 -89
- package/dist/sandbox/types/record.d.ts +1 -2
- package/dist/sandbox/types/runtime-profiles.d.ts +2 -2
- package/dist/sandbox-template/manifest.d.ts +1 -1
- package/dist/skills/openpond-agent-authoring/SKILL.md +40 -0
- package/dist/skills/openpond-agent-authoring/references/action-and-chat-design.md +13 -0
- package/dist/skills/openpond-agent-authoring/references/integrations-and-setup.md +13 -0
- package/dist/skills/openpond-agent-authoring/references/profile-layout.md +29 -0
- package/dist/skills/openpond-agent-authoring/references/validation-and-repair.md +14 -0
- package/dist/skills/openpond-desktop-harness/SKILL.md +1 -1
- package/dist/skills/openpond-skill-authoring/SKILL.md +44 -0
- package/dist/skills/openpond-skill-authoring/references/copying-and-adaptation.md +16 -0
- package/dist/skills/openpond-skill-authoring/references/skill-package-layout.md +38 -0
- package/dist/skills/openpond-skill-authoring/references/validation-and-repair.md +24 -0
- package/dist/skills/openpond-skill-authoring/scripts/validate-skill.mjs +102 -0
- package/dist/skills/openpond-taskset-authoring/SKILL.md +64 -22
- package/dist/skills/openpond-taskset-authoring/artifact.json +39 -0
- package/dist/skills/openpond-taskset-authoring/references/graders-and-rewards.md +3 -0
- package/dist/skills/openpond-taskset-authoring/references/method-selection.md +1 -1
- package/dist/skills/openpond-taskset-authoring/references/privacy-and-provenance.md +2 -0
- package/dist/skills/openpond-taskset-authoring/references/task-design.md +32 -0
- package/dist/web/assets/{AppDialog-y6krB0MJ.js → AppDialog-Bua3f-6v.js} +1 -1
- package/dist/web/assets/{AppsView-4F6oLktr.js → AppsView-DrJkHeSO.js} +1 -1
- package/dist/web/assets/BrowserSidebar-Bf-4Vozm.js +1 -0
- package/dist/web/assets/CommandMenu-DDZlGQiB.js +1 -0
- package/dist/web/assets/CommunityView-BtcCrba7.js +1 -0
- package/dist/web/assets/ComposerCreateImproveStrip-DOe5Otg6.js +1 -0
- package/dist/web/assets/GetStartedView-CG4z0Dtw.js +1 -0
- package/dist/web/assets/GetStartedView-yVmnGZPw.css +1 -0
- package/dist/web/assets/LabModelVersionDetailPage-BEkmSKuv.js +1 -0
- package/dist/web/assets/LabSkillSidebar-BIotN_RB.js +1 -0
- package/dist/web/assets/LabsRoute-CfOe0Zt5.js +3 -0
- package/dist/web/assets/LabsRoute-CoSPO4HR.css +1 -0
- package/dist/web/assets/MainChatThread-C0-l1mHt.js +2 -0
- package/dist/web/assets/MainPane-Bky_Rqcx.css +1 -0
- package/dist/web/assets/MainPane-aOVlVyRK.js +6 -0
- package/dist/web/assets/MarkdownText-D7DT1k1k.js +9 -0
- package/dist/web/assets/Messages-CBIXruA9.js +9 -0
- package/dist/web/assets/NativeSkillSidebar-C4t69Y7B.js +1 -0
- package/dist/web/assets/NewProjectDialog-Bat65tYD.js +1 -0
- package/dist/web/assets/OutputsPage-C58n39Db.js +1 -0
- package/dist/web/assets/RightChatPanelStack-Bp7nZxQ0.js +1 -0
- package/dist/web/assets/ScheduledWorkPage-BXP0j_c_.js +1 -0
- package/dist/web/assets/SettingsView-CtWK_aQ0.css +1 -0
- package/dist/web/assets/SettingsView-DOOfhO9a.js +6 -0
- package/dist/web/assets/TeamChatView-Cgxm-pKA.css +1 -0
- package/dist/web/assets/TeamChatView-De2wdqyY.js +3 -0
- package/dist/web/assets/{TerminalOverlay-B56XmI-k.js → TerminalOverlay-BsuCH3NX.js} +1 -1
- package/dist/web/assets/TrainingCreationPanel-D2OFWyQ-.js +1 -0
- package/dist/web/assets/TrainingDraftPanel-DBpulXTz.js +1 -0
- package/dist/web/assets/{UsageSettingsSection-r3CqRm6Q.js → UsageSettingsSection-DzMLUXAO.js} +37 -37
- package/dist/web/assets/WorkspaceDiffPanel-B7yIhjNF.js +14 -0
- package/dist/web/assets/WorkspaceEnvironmentMenu-B6jXM9xG.js +32 -0
- package/dist/web/assets/WorkspaceGitDialogs-CQ0fl9Qk.js +1 -0
- package/dist/web/assets/{WorkspaceMonacoEditor-CHd22UcG.js → WorkspaceMonacoEditor-C2ctzITz.js} +3 -3
- package/dist/web/assets/arrow-up-right-ecwcx3xt.js +1 -0
- package/dist/web/assets/chevron-up-DP8PPfWd.js +1 -0
- package/dist/web/assets/circle-alert-envg1D6O.js +1 -0
- package/dist/web/assets/cloud-upload-5MGPLnaA.js +1 -0
- package/dist/web/assets/{cssMode-KFDYjM8T.js → cssMode-CFifcEfw.js} +1 -1
- package/dist/web/assets/folder-open-Dq3ZjeEP.js +1 -0
- package/dist/web/assets/folder-plus-EiZ5wbv_.js +1 -0
- package/dist/web/assets/git-branch-w29jmQ-X.js +1 -0
- package/dist/web/assets/{git-commit-horizontal-C8UFKlXy.js → git-commit-horizontal-CGZM0PZo.js} +1 -1
- package/dist/web/assets/{htmlMode-NbLN3n6Q.js → htmlMode-Ct1P-_lf.js} +1 -1
- package/dist/web/assets/index-ByIQyiUl.js +178 -0
- package/dist/web/assets/index-D4uCeiep.js +1 -0
- package/dist/web/assets/index-D9jTe16Q.css +1 -0
- package/dist/web/assets/info-Cd2HkIeb.js +1 -0
- package/dist/web/assets/{jsonMode-Bl3r4LM_.js → jsonMode-BAUNCNAX.js} +1 -1
- package/dist/web/assets/{lspLanguageFeatures-DH22w5XD.js → lspLanguageFeatures-fucFYI1A.js} +1 -1
- package/dist/web/assets/monaco.contribution-Ce4v5kei.js +2 -0
- package/dist/web/assets/monaco.contribution-DLLMi4cB.js +2 -0
- package/dist/web/assets/monaco.contribution-g9QiIm1d.js +2 -0
- package/dist/web/assets/monaco.contribution-nG-5Cyjz.js +2 -0
- package/dist/web/assets/monitor-DgHCnCKl.js +1 -0
- package/dist/web/assets/{play-2NDQ4-7K.js → play-Be0XDHBu.js} +1 -1
- package/dist/web/assets/{python-CQ0TmUW9.js → python-CEhEiPo7.js} +1 -1
- package/dist/web/assets/{refresh-cw-CyermMsy.js → refresh-cw-DH0KLbdD.js} +1 -1
- package/dist/web/assets/reply-D1TK2yV8.js +1 -0
- package/dist/web/assets/{save-Bij3cc3Q.js → save-C1MSeBnQ.js} +1 -1
- package/dist/web/assets/square-CemI-0g5.js +1 -0
- package/dist/web/assets/square-pen-CqfsvR_n.js +1 -0
- package/dist/web/assets/{toggleHighContrast-CxALivAH.js → toggleHighContrast-DrdQN3Rl.js} +1 -1
- package/dist/web/assets/training-BQVNUTZA.css +1 -0
- package/dist/web/assets/training-model-data-B7-1Bxil.js +1 -0
- package/dist/web/assets/{tsMode-vH4lMS7h.js → tsMode-CKB5oOUU.js} +1 -1
- package/dist/web/assets/{upload-DbJfEI3G.js → upload-t751LLqP.js} +1 -1
- package/dist/web/assets/useLocalAgentSchedules-CzC3wfIP.js +1 -0
- package/dist/web/assets/{wifi-off-BnVFBG28.js → wifi-off-CxTHH3JU.js} +1 -1
- package/dist/web/assets/{workers-CBihj7z6.js → workers-CqYddzCd.js} +1 -1
- package/dist/web/assets/{yaml-Bhkoq1sy.js → yaml-e5wBkc-C.js} +1 -1
- package/dist/web/index.html +2 -2
- package/docs/command-reference.md +76 -41
- package/package.json +3 -1
- package/dist/chunks/chunk-3VURZQHA.js +0 -864
- package/dist/chunks/chunk-BWA3COR4.js +0 -3535
- package/dist/chunks/chunk-HLCTINEP.js +0 -224
- package/dist/chunks/chunk-PGET7EZF.js +0 -3896
- package/dist/chunks/chunk-T4QXKU5Y.js +0 -1
- package/dist/chunks/chunk-XEJ7XXUQ.js +0 -1301
- package/dist/chunks/cli-AS3DZ7XB.js +0 -23
- package/dist/chunks/extend-6N5S5KA5.js +0 -89
- package/dist/chunks/extension-FJSVCG2Q.js +0 -121
- package/dist/chunks/fileFromPath-DHCRY3BD.js +0 -2151
- package/dist/chunks/src-SCS4KKP4.js +0 -105881
- package/dist/web/assets/BrowserSidebar-C0MHQaaD.js +0 -1
- package/dist/web/assets/CloudWorkView-DNoPIlMj.css +0 -1
- package/dist/web/assets/CloudWorkView-DwFIZoXy.js +0 -1
- package/dist/web/assets/CommandMenu-CYGFrMZi.js +0 -1
- package/dist/web/assets/CommunityView-C6n89YXz.js +0 -1
- package/dist/web/assets/ComposerCreateImproveStrip-C3RwXC3_.js +0 -1
- package/dist/web/assets/GetStartedView-DBLdduwr.css +0 -1
- package/dist/web/assets/GetStartedView-fwD0ZXo9.js +0 -1
- package/dist/web/assets/LabSkillSidebar-BSuc-NJr.js +0 -1
- package/dist/web/assets/LabsRoute-BrJkBNig.css +0 -1
- package/dist/web/assets/LabsRoute-D2y8dSsT.js +0 -3
- package/dist/web/assets/MainChatThread-Dj_Ry6WQ.js +0 -2
- package/dist/web/assets/MakeAgentTutorialLearningPanel-Bz2VDaRe.js +0 -2
- package/dist/web/assets/MarkdownText-B6Nu_0Fz.js +0 -7
- package/dist/web/assets/Messages-CH2wfv2a.js +0 -10
- package/dist/web/assets/NativeSkillSidebar-4iUfgwqO.js +0 -1
- package/dist/web/assets/NewProjectDialog-8M5-6-h-.js +0 -1
- package/dist/web/assets/PostTrainingLearningPanel-CdG5KHZs.js +0 -2
- package/dist/web/assets/PostTrainingStatusPill-COZ4qISQ.js +0 -1
- package/dist/web/assets/ProfileSettingsSection-Bo7dybgW.js +0 -1
- package/dist/web/assets/ProfileSettingsSection-Cg4tKO-C.css +0 -1
- package/dist/web/assets/RightChatPanelStack-Di8zoHJI.js +0 -1
- package/dist/web/assets/SettingsView-BcYyY66X.css +0 -1
- package/dist/web/assets/SettingsView-CAaKdDHt.js +0 -6
- package/dist/web/assets/TeamChatView-Bx44q3WV.css +0 -1
- package/dist/web/assets/TeamChatView-CzQYFBap.js +0 -3
- package/dist/web/assets/TrainingCreationPanel-C_ntWAAP.js +0 -1
- package/dist/web/assets/TrainingDraftPanel-3hJIxLNn.js +0 -1
- package/dist/web/assets/WorkspaceDiffPanel-By8PWUuE.js +0 -14
- package/dist/web/assets/WorkspaceEnvironmentMenu-7wmC-spz.js +0 -32
- package/dist/web/assets/WorkspaceGitDialogs-Hn--lsRh.js +0 -1
- package/dist/web/assets/activity-Dp5V58om.js +0 -1
- package/dist/web/assets/boxes-DE7WJaEv.js +0 -1
- package/dist/web/assets/chevron-up-BWx8gGab.js +0 -1
- package/dist/web/assets/circle-x-DnmOfZIg.js +0 -1
- package/dist/web/assets/copy-BjWvaXLC.js +0 -1
- package/dist/web/assets/create-pipeline-request-C4V6-lWN.js +0 -4
- package/dist/web/assets/credit-card-Bjg0Zaw5.js +0 -1
- package/dist/web/assets/file-BrC1KjAS.js +0 -1
- package/dist/web/assets/git-branch-DTeeARsp.js +0 -1
- package/dist/web/assets/index-BcZetaeD.css +0 -1
- package/dist/web/assets/index-DQalqxbw.js +0 -177
- package/dist/web/assets/index-DYxF_d9i.js +0 -1
- package/dist/web/assets/info-BXBpMeVU.js +0 -1
- package/dist/web/assets/make-agent-tutorial-CAnTPFCK.js +0 -2
- package/dist/web/assets/monaco.contribution-C0BsxYAz.js +0 -2
- package/dist/web/assets/monaco.contribution-CzpXjm9j.js +0 -2
- package/dist/web/assets/monaco.contribution-DK-g-i00.js +0 -2
- package/dist/web/assets/monaco.contribution-iAurj7TQ.js +0 -2
- package/dist/web/assets/monitor-Ba2FFblh.js +0 -1
- package/dist/web/assets/reply-BSExNLHM.js +0 -1
- package/dist/web/assets/rotate-cw-DJ-zYG9E.js +0 -1
- package/dist/web/assets/training-BN8CALIc.css +0 -1
- package/dist/web/assets/training-model-data-BXUCzS0p.js +0 -1
- package/dist/web/tokens/eth.svg +0 -1
- package/dist/web/tokens/usdc.svg +0 -1
- package/docs/agent-edit-check-status-json.md +0 -132
|
@@ -1,10 +1,228 @@
|
|
|
1
1
|
import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
|
|
2
2
|
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
} from "./chunk-
|
|
3
|
+
withVercelProtectionBypass
|
|
4
|
+
} from "./chunk-DBHSOTYZ.js";
|
|
5
|
+
import {
|
|
6
|
+
DEFAULT_OPENPOND_OPCHAT_API_BASE_URL
|
|
7
|
+
} from "./chunk-KSRWKXRB.js";
|
|
8
|
+
|
|
9
|
+
// ../../packages/cloud/src/hosted-chat.ts
|
|
10
|
+
import { randomUUID } from "node:crypto";
|
|
11
|
+
function normalizeApiBaseUrl(value) {
|
|
12
|
+
const trimmed = normalizeOptionalOpChatApiBaseUrl(value);
|
|
13
|
+
if (!trimmed) throw new Error("apiBaseUrl is required");
|
|
14
|
+
return trimmed;
|
|
15
|
+
}
|
|
16
|
+
function trimTrailingSlashes(value) {
|
|
17
|
+
return value.replace(/\/+$/, "");
|
|
18
|
+
}
|
|
19
|
+
function normalizeOptionalOpChatApiBaseUrl(value) {
|
|
20
|
+
let trimmed = trimTrailingSlashes(value?.trim() ?? "");
|
|
21
|
+
if (!trimmed) return null;
|
|
22
|
+
trimmed = trimmed.replace(/\/chat\/completions$/i, "").replace(/\/models(?:\/[^/]+)?$/i, "");
|
|
23
|
+
if (trimmed.endsWith("/opchat/v1")) return trimmed;
|
|
24
|
+
if (trimmed.endsWith("/opchat")) return `${trimmed}/v1`;
|
|
25
|
+
if (trimmed.endsWith("/v1")) {
|
|
26
|
+
trimmed = trimmed.slice(0, -"/v1".length);
|
|
27
|
+
}
|
|
28
|
+
return `${trimTrailingSlashes(trimmed)}/opchat/v1`;
|
|
29
|
+
}
|
|
30
|
+
function resolveOpChatApiBaseUrl(options = {}) {
|
|
31
|
+
const runtimeEnv = options.env ?? (typeof process !== "undefined" ? process.env : {});
|
|
32
|
+
const explicit = normalizeOptionalOpChatApiBaseUrl(options.opChatApiBaseUrl) ?? normalizeOptionalOpChatApiBaseUrl(runtimeEnv.OPENPOND_OPCHAT_API_URL);
|
|
33
|
+
if (explicit) return explicit;
|
|
34
|
+
const migrationInput = normalizeOptionalOpChatApiBaseUrl(options.chatApiBaseUrl) ?? normalizeOptionalOpChatApiBaseUrl(runtimeEnv.OPENPOND_CHAT_API_URL) ?? normalizeOptionalOpChatApiBaseUrl(runtimeEnv.OPENPOND_GATEWAY_URL);
|
|
35
|
+
if (migrationInput) return migrationInput;
|
|
36
|
+
const apiBase = normalizeOptionalOpChatApiBaseUrl(options.apiBaseUrl) ?? normalizeOptionalOpChatApiBaseUrl(runtimeEnv.OPENPOND_API_URL);
|
|
37
|
+
return apiBase ?? DEFAULT_OPENPOND_OPCHAT_API_BASE_URL;
|
|
38
|
+
}
|
|
39
|
+
function requireToken(value) {
|
|
40
|
+
const trimmed = value.trim();
|
|
41
|
+
if (!trimmed) throw new Error("OpenPond API key is required");
|
|
42
|
+
return trimmed;
|
|
43
|
+
}
|
|
44
|
+
function hostedHeaders(requestUrl, token, accept, requestId) {
|
|
45
|
+
const headers = new Headers();
|
|
46
|
+
headers.set("Authorization", `Bearer ${requireToken(token)}`);
|
|
47
|
+
headers.set("Content-Type", "application/json");
|
|
48
|
+
headers.set("Accept", accept);
|
|
49
|
+
headers.set("x-openpond-client", "openpond-code");
|
|
50
|
+
headers.set("x-openpond-request-id", requestId || randomUUID());
|
|
51
|
+
return withVercelProtectionBypass(requestUrl, headers);
|
|
52
|
+
}
|
|
53
|
+
async function readError(response) {
|
|
54
|
+
const text = await response.text().catch(() => "");
|
|
55
|
+
if (!text) return response.statusText || `HTTP ${response.status}`;
|
|
56
|
+
try {
|
|
57
|
+
const payload = JSON.parse(text);
|
|
58
|
+
const error = typeof payload.error === "string" ? payload.error : payload.error && typeof payload.error === "object" && !Array.isArray(payload.error) ? payload.error : null;
|
|
59
|
+
const code = typeof payload.code === "string" ? payload.code : error && typeof error !== "string" && typeof error.code === "string" ? error.code : null;
|
|
60
|
+
const message = typeof payload.message === "string" ? payload.message : error && typeof error !== "string" && typeof error.message === "string" ? error.message : null;
|
|
61
|
+
const label = typeof error === "string" ? error : error && typeof error.type === "string" ? error.type : null;
|
|
62
|
+
return [code, label, message].filter(Boolean).join(": ") || text;
|
|
63
|
+
} catch {
|
|
64
|
+
return text;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
function buildHostedChatBody(options, stream) {
|
|
68
|
+
const body = {
|
|
69
|
+
model: options.model,
|
|
70
|
+
messages: options.messages,
|
|
71
|
+
stream
|
|
72
|
+
};
|
|
73
|
+
if (typeof options.temperature === "number") {
|
|
74
|
+
body.temperature = options.temperature;
|
|
75
|
+
}
|
|
76
|
+
if (typeof options.maxTokens === "number") {
|
|
77
|
+
body.max_tokens = options.maxTokens;
|
|
78
|
+
}
|
|
79
|
+
if (options.tools) {
|
|
80
|
+
body.tools = options.tools;
|
|
81
|
+
}
|
|
82
|
+
const toolChoice = options.toolChoice ?? options.tool_choice;
|
|
83
|
+
if (toolChoice !== void 0) {
|
|
84
|
+
body.tool_choice = toolChoice;
|
|
85
|
+
}
|
|
86
|
+
if (options.metadata) {
|
|
87
|
+
body.metadata = options.metadata;
|
|
88
|
+
}
|
|
89
|
+
return body;
|
|
90
|
+
}
|
|
91
|
+
async function listOpChatModels(options) {
|
|
92
|
+
const apiBaseUrl = normalizeApiBaseUrl(options.apiBaseUrl);
|
|
93
|
+
const requestUrl = `${apiBaseUrl}/models`;
|
|
94
|
+
const response = await fetch(requestUrl, {
|
|
95
|
+
method: "GET",
|
|
96
|
+
headers: hostedHeaders(requestUrl, options.token, "application/json"),
|
|
97
|
+
signal: options.signal
|
|
98
|
+
});
|
|
99
|
+
if (!response.ok) {
|
|
100
|
+
throw new Error(
|
|
101
|
+
`Hosted model list failed: ${response.status} ${await readError(
|
|
102
|
+
response
|
|
103
|
+
)}`
|
|
104
|
+
);
|
|
105
|
+
}
|
|
106
|
+
return await response.json();
|
|
107
|
+
}
|
|
108
|
+
async function getOpChatModel(options) {
|
|
109
|
+
const apiBaseUrl = normalizeApiBaseUrl(options.apiBaseUrl);
|
|
110
|
+
const requestUrl = `${apiBaseUrl}/models/${encodeURIComponent(options.model)}`;
|
|
111
|
+
const response = await fetch(
|
|
112
|
+
requestUrl,
|
|
113
|
+
{
|
|
114
|
+
method: "GET",
|
|
115
|
+
headers: hostedHeaders(requestUrl, options.token, "application/json"),
|
|
116
|
+
signal: options.signal
|
|
117
|
+
}
|
|
118
|
+
);
|
|
119
|
+
if (!response.ok) {
|
|
120
|
+
throw new Error(
|
|
121
|
+
`Hosted model lookup failed: ${response.status} ${await readError(
|
|
122
|
+
response
|
|
123
|
+
)}`
|
|
124
|
+
);
|
|
125
|
+
}
|
|
126
|
+
return await response.json();
|
|
127
|
+
}
|
|
128
|
+
async function sendHostedChatTurn(options) {
|
|
129
|
+
const apiBaseUrl = normalizeApiBaseUrl(options.apiBaseUrl);
|
|
130
|
+
const requestUrl = `${apiBaseUrl}/chat/completions`;
|
|
131
|
+
const response = await fetch(requestUrl, {
|
|
132
|
+
method: "POST",
|
|
133
|
+
headers: hostedHeaders(
|
|
134
|
+
requestUrl,
|
|
135
|
+
options.token,
|
|
136
|
+
"application/json",
|
|
137
|
+
options.requestId
|
|
138
|
+
),
|
|
139
|
+
body: JSON.stringify(buildHostedChatBody(options, false)),
|
|
140
|
+
signal: options.signal
|
|
141
|
+
});
|
|
142
|
+
if (!response.ok) {
|
|
143
|
+
throw new Error(
|
|
144
|
+
`Hosted chat failed: ${response.status} ${await readError(response)}`
|
|
145
|
+
);
|
|
146
|
+
}
|
|
147
|
+
return await response.json();
|
|
148
|
+
}
|
|
149
|
+
async function* parseOpenAISSE(stream, signal) {
|
|
150
|
+
const reader = stream.getReader();
|
|
151
|
+
const decoder = new TextDecoder();
|
|
152
|
+
let buffer = "";
|
|
153
|
+
const readAbortError = () => signal?.reason instanceof Error ? signal.reason : new Error("hosted_chat_aborted");
|
|
154
|
+
try {
|
|
155
|
+
while (true) {
|
|
156
|
+
if (signal?.aborted) throw readAbortError();
|
|
157
|
+
const result = await reader.read();
|
|
158
|
+
if (result.done) break;
|
|
159
|
+
buffer += decoder.decode(result.value, { stream: true });
|
|
160
|
+
const lines = buffer.split("\n");
|
|
161
|
+
buffer = lines.pop() || "";
|
|
162
|
+
for (const line of lines) {
|
|
163
|
+
const trimmed = line.trim();
|
|
164
|
+
if (!trimmed.startsWith("data:")) continue;
|
|
165
|
+
const data = trimmed.slice(5).trim();
|
|
166
|
+
if (!data) continue;
|
|
167
|
+
if (data === "[DONE]") return;
|
|
168
|
+
yield JSON.parse(data);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
} finally {
|
|
172
|
+
try {
|
|
173
|
+
reader.releaseLock();
|
|
174
|
+
} catch {
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
async function* streamHostedChatTurn(options) {
|
|
179
|
+
const apiBaseUrl = normalizeApiBaseUrl(options.apiBaseUrl);
|
|
180
|
+
const requestUrl = `${apiBaseUrl}/chat/completions`;
|
|
181
|
+
const response = await fetch(requestUrl, {
|
|
182
|
+
method: "POST",
|
|
183
|
+
headers: hostedHeaders(
|
|
184
|
+
requestUrl,
|
|
185
|
+
options.token,
|
|
186
|
+
"text/event-stream",
|
|
187
|
+
options.requestId
|
|
188
|
+
),
|
|
189
|
+
body: JSON.stringify(buildHostedChatBody(options, true)),
|
|
190
|
+
signal: options.signal
|
|
191
|
+
});
|
|
192
|
+
if (!response.ok || !response.body) {
|
|
193
|
+
throw new Error(
|
|
194
|
+
`Hosted chat stream failed: ${response.status} ${await readError(
|
|
195
|
+
response
|
|
196
|
+
)}`
|
|
197
|
+
);
|
|
198
|
+
}
|
|
199
|
+
for await (const raw of parseOpenAISSE(response.body, options.signal)) {
|
|
200
|
+
const chunk = raw;
|
|
201
|
+
if (chunk.error) {
|
|
202
|
+
throw new Error(chunk.error.message || "Hosted chat stream error");
|
|
203
|
+
}
|
|
204
|
+
if (chunk.usage) {
|
|
205
|
+
yield { type: "usage", usage: chunk.usage, raw };
|
|
206
|
+
}
|
|
207
|
+
const choice = chunk.choices?.[0];
|
|
208
|
+
if (!choice) continue;
|
|
209
|
+
const content = choice.delta?.content;
|
|
210
|
+
if (content) {
|
|
211
|
+
yield { type: "text_delta", text: content, raw };
|
|
212
|
+
}
|
|
213
|
+
const reasoning = choice.delta?.reasoning_content;
|
|
214
|
+
if (reasoning) {
|
|
215
|
+
yield { type: "reasoning_delta", text: reasoning, raw };
|
|
216
|
+
}
|
|
217
|
+
const toolCalls = choice.delta?.tool_calls;
|
|
218
|
+
if (Array.isArray(toolCalls) && toolCalls.length > 0) {
|
|
219
|
+
yield { type: "tool_call_delta", toolCalls, raw };
|
|
220
|
+
}
|
|
221
|
+
if (choice.finish_reason !== void 0 && choice.finish_reason !== null) {
|
|
222
|
+
yield { type: "finish", finishReason: choice.finish_reason, raw };
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
}
|
|
8
226
|
|
|
9
227
|
// ../../packages/cloud/src/opchat-smoke.ts
|
|
10
228
|
var DEFAULT_MODEL = "openpond-chat";
|
|
@@ -290,5 +508,10 @@ function formatUsage(usage) {
|
|
|
290
508
|
}
|
|
291
509
|
|
|
292
510
|
export {
|
|
511
|
+
resolveOpChatApiBaseUrl,
|
|
512
|
+
listOpChatModels,
|
|
513
|
+
getOpChatModel,
|
|
514
|
+
sendHostedChatTurn,
|
|
515
|
+
streamHostedChatTurn,
|
|
293
516
|
runOpChatSmoke
|
|
294
517
|
};
|