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.
Files changed (219) hide show
  1. package/README.md +3 -7
  2. package/dist/api/core.d.ts +6 -0
  3. package/dist/api/types.d.ts +0 -50
  4. package/dist/api/vercel-protection.d.ts +1 -0
  5. package/dist/api.d.ts +2 -8
  6. package/dist/chunks/{app-layer-LF2HK2B2.js → app-layer-LTBWNA2F.js} +32 -10
  7. package/dist/chunks/app-server-runtime-VYYJ2AWX.js +18 -0
  8. package/dist/chunks/{apps-ZMCMQZKX.js → apps-CZAJBGE3.js} +6 -124
  9. package/dist/chunks/{chunk-MHBQWGCL.js → chunk-2SF6HLT7.js} +5463 -5535
  10. package/dist/chunks/{chunk-VFL2JVBZ.js → chunk-3CDPPVLE.js} +111 -84
  11. package/dist/chunks/{chunk-N6E6YSTP.js → chunk-3HW6OSHP.js} +1 -3
  12. package/dist/chunks/{chunk-43YI36NA.js → chunk-3KLQ52B2.js} +228 -5
  13. package/dist/chunks/chunk-4HIWFIMN.js +37172 -0
  14. package/dist/chunks/{chunk-WTA33KQQ.js → chunk-4N6E3OVF.js} +4 -4
  15. package/dist/chunks/{chunk-35PPAOWD.js → chunk-6V7MJVRO.js} +56 -11
  16. package/dist/chunks/{chunk-ICLLW5QD.js → chunk-BQQZNGI6.js} +154 -194
  17. package/dist/chunks/chunk-DBHSOTYZ.js +1552 -0
  18. package/dist/chunks/{chunk-ZZ4ECDTP.js → chunk-FCVVOMIP.js} +145 -5
  19. package/dist/chunks/{chunk-A3CJUBA7.js → chunk-JIEUB6OS.js} +1 -1
  20. package/dist/chunks/{chunk-WL76II47.js → chunk-JJPAMKXZ.js} +1 -1
  21. package/dist/chunks/{chunk-2WMGA5FE.js → chunk-JRROTGQT.js} +1 -110
  22. package/dist/chunks/chunk-KHNHUA2H.js +1737 -0
  23. package/dist/chunks/{chunk-LNKYEHIJ.js → chunk-L6XH4ZGZ.js} +1 -1
  24. package/dist/chunks/chunk-M2NXTLH2.js +4054 -0
  25. package/dist/chunks/{chunk-IATK3CIP.js → chunk-MIZHCABO.js} +2 -195
  26. package/dist/chunks/chunk-SMNFI2FU.js +113 -0
  27. package/dist/chunks/chunk-VCVQLECH.js +675 -0
  28. package/dist/chunks/{chunk-KT2BB4AR.js → chunk-ZJBJQCQZ.js} +179 -52
  29. package/dist/chunks/{cli-5NFIDCRL.js → cli-JS76LCW2.js} +9 -5
  30. package/dist/chunks/{core-commands-7223BEQL.js → core-commands-4MRJQZJV.js} +7 -5
  31. package/dist/chunks/{harness-OMJXIGEW.js → desktop-test-RNMWLOVU.js} +15 -14
  32. package/dist/chunks/{chunk-ZPL4GZML.js → extension-GDRW22N3.js} +5866 -3601
  33. package/dist/chunks/{help-YPPROIS7.js → help-LWNREJ7U.js} +1 -1
  34. package/dist/chunks/{opchat-K7IYFPX6.js → opchat-2K2JIGK3.js} +9 -10
  35. package/dist/chunks/{organizations-W3FMAWQ4.js → organizations-Z5HVD2E7.js} +11 -9
  36. package/dist/chunks/{profile-N4B3F7M7.js → profile-QNECVVGN.js} +12 -38
  37. package/dist/chunks/{project-agent-NA6SGU25.js → project-agent-W3V75WBR.js} +9 -411
  38. package/dist/chunks/{sandbox-command-AKCFJKKN.js → sandbox-command-X3FO74NX.js} +7 -5
  39. package/dist/chunks/{sandbox-template-5NKTAXCL.js → sandbox-template-5B4T4BGU.js} +8 -6
  40. package/dist/chunks/{src-XAVSQTVR.js → src-ESAILPUH.js} +32 -30
  41. package/dist/chunks/src-IC5RX4L6.js +63517 -0
  42. package/dist/chunks/{teams-bot-557NZC73.js → teams-bot-NTQ6VFFL.js} +6 -4
  43. package/dist/chunks/training-BR5A7SPU.js +320 -0
  44. package/dist/chunks/{workspaces-S2H75XQB.js → workspaces-XC3QBD2Y.js} +2 -2
  45. package/dist/cli.js +24 -12
  46. package/dist/client-types.d.ts +1 -9
  47. package/dist/client.d.ts +3 -3
  48. package/dist/config.d.ts +9 -3
  49. package/dist/index.js +1300 -1091
  50. package/dist/profile/local-profile-types.d.ts +16 -0
  51. package/dist/profile/local-profile.d.ts +50 -4
  52. package/dist/sandbox/client-handles.d.ts +33 -46
  53. package/dist/sandbox/client.d.ts +4 -26
  54. package/dist/sandbox/sandbox-instance-client.d.ts +5 -5
  55. package/dist/sandbox/types/client.d.ts +1 -2
  56. package/dist/sandbox/types/core.d.ts +0 -1
  57. package/dist/sandbox/types/org-project-agent.d.ts +3 -89
  58. package/dist/sandbox/types/record.d.ts +1 -2
  59. package/dist/sandbox/types/runtime-profiles.d.ts +2 -2
  60. package/dist/sandbox-template/manifest.d.ts +1 -1
  61. package/dist/skills/openpond-agent-authoring/SKILL.md +40 -0
  62. package/dist/skills/openpond-agent-authoring/references/action-and-chat-design.md +13 -0
  63. package/dist/skills/openpond-agent-authoring/references/integrations-and-setup.md +13 -0
  64. package/dist/skills/openpond-agent-authoring/references/profile-layout.md +29 -0
  65. package/dist/skills/openpond-agent-authoring/references/validation-and-repair.md +14 -0
  66. package/dist/skills/openpond-desktop-harness/SKILL.md +1 -1
  67. package/dist/skills/openpond-skill-authoring/SKILL.md +44 -0
  68. package/dist/skills/openpond-skill-authoring/references/copying-and-adaptation.md +16 -0
  69. package/dist/skills/openpond-skill-authoring/references/skill-package-layout.md +38 -0
  70. package/dist/skills/openpond-skill-authoring/references/validation-and-repair.md +24 -0
  71. package/dist/skills/openpond-skill-authoring/scripts/validate-skill.mjs +102 -0
  72. package/dist/skills/openpond-taskset-authoring/SKILL.md +64 -22
  73. package/dist/skills/openpond-taskset-authoring/artifact.json +39 -0
  74. package/dist/skills/openpond-taskset-authoring/references/graders-and-rewards.md +3 -0
  75. package/dist/skills/openpond-taskset-authoring/references/method-selection.md +1 -1
  76. package/dist/skills/openpond-taskset-authoring/references/privacy-and-provenance.md +2 -0
  77. package/dist/skills/openpond-taskset-authoring/references/task-design.md +32 -0
  78. package/dist/web/assets/{AppDialog-y6krB0MJ.js → AppDialog-Bua3f-6v.js} +1 -1
  79. package/dist/web/assets/{AppsView-4F6oLktr.js → AppsView-DrJkHeSO.js} +1 -1
  80. package/dist/web/assets/BrowserSidebar-Bf-4Vozm.js +1 -0
  81. package/dist/web/assets/CommandMenu-DDZlGQiB.js +1 -0
  82. package/dist/web/assets/CommunityView-BtcCrba7.js +1 -0
  83. package/dist/web/assets/ComposerCreateImproveStrip-DOe5Otg6.js +1 -0
  84. package/dist/web/assets/GetStartedView-CG4z0Dtw.js +1 -0
  85. package/dist/web/assets/GetStartedView-yVmnGZPw.css +1 -0
  86. package/dist/web/assets/LabModelVersionDetailPage-BEkmSKuv.js +1 -0
  87. package/dist/web/assets/LabSkillSidebar-BIotN_RB.js +1 -0
  88. package/dist/web/assets/LabsRoute-CfOe0Zt5.js +3 -0
  89. package/dist/web/assets/LabsRoute-CoSPO4HR.css +1 -0
  90. package/dist/web/assets/MainChatThread-C0-l1mHt.js +2 -0
  91. package/dist/web/assets/MainPane-Bky_Rqcx.css +1 -0
  92. package/dist/web/assets/MainPane-aOVlVyRK.js +6 -0
  93. package/dist/web/assets/MarkdownText-D7DT1k1k.js +9 -0
  94. package/dist/web/assets/Messages-CBIXruA9.js +9 -0
  95. package/dist/web/assets/NativeSkillSidebar-C4t69Y7B.js +1 -0
  96. package/dist/web/assets/NewProjectDialog-Bat65tYD.js +1 -0
  97. package/dist/web/assets/OutputsPage-C58n39Db.js +1 -0
  98. package/dist/web/assets/RightChatPanelStack-Bp7nZxQ0.js +1 -0
  99. package/dist/web/assets/ScheduledWorkPage-BXP0j_c_.js +1 -0
  100. package/dist/web/assets/SettingsView-CtWK_aQ0.css +1 -0
  101. package/dist/web/assets/SettingsView-DOOfhO9a.js +6 -0
  102. package/dist/web/assets/TeamChatView-Cgxm-pKA.css +1 -0
  103. package/dist/web/assets/TeamChatView-De2wdqyY.js +3 -0
  104. package/dist/web/assets/{TerminalOverlay-B56XmI-k.js → TerminalOverlay-BsuCH3NX.js} +1 -1
  105. package/dist/web/assets/TrainingCreationPanel-D2OFWyQ-.js +1 -0
  106. package/dist/web/assets/TrainingDraftPanel-DBpulXTz.js +1 -0
  107. package/dist/web/assets/{UsageSettingsSection-r3CqRm6Q.js → UsageSettingsSection-DzMLUXAO.js} +37 -37
  108. package/dist/web/assets/WorkspaceDiffPanel-B7yIhjNF.js +14 -0
  109. package/dist/web/assets/WorkspaceEnvironmentMenu-B6jXM9xG.js +32 -0
  110. package/dist/web/assets/WorkspaceGitDialogs-CQ0fl9Qk.js +1 -0
  111. package/dist/web/assets/{WorkspaceMonacoEditor-CHd22UcG.js → WorkspaceMonacoEditor-C2ctzITz.js} +3 -3
  112. package/dist/web/assets/arrow-up-right-ecwcx3xt.js +1 -0
  113. package/dist/web/assets/chevron-up-DP8PPfWd.js +1 -0
  114. package/dist/web/assets/circle-alert-envg1D6O.js +1 -0
  115. package/dist/web/assets/cloud-upload-5MGPLnaA.js +1 -0
  116. package/dist/web/assets/{cssMode-KFDYjM8T.js → cssMode-CFifcEfw.js} +1 -1
  117. package/dist/web/assets/folder-open-Dq3ZjeEP.js +1 -0
  118. package/dist/web/assets/folder-plus-EiZ5wbv_.js +1 -0
  119. package/dist/web/assets/git-branch-w29jmQ-X.js +1 -0
  120. package/dist/web/assets/{git-commit-horizontal-C8UFKlXy.js → git-commit-horizontal-CGZM0PZo.js} +1 -1
  121. package/dist/web/assets/{htmlMode-NbLN3n6Q.js → htmlMode-Ct1P-_lf.js} +1 -1
  122. package/dist/web/assets/index-ByIQyiUl.js +178 -0
  123. package/dist/web/assets/index-D4uCeiep.js +1 -0
  124. package/dist/web/assets/index-D9jTe16Q.css +1 -0
  125. package/dist/web/assets/info-Cd2HkIeb.js +1 -0
  126. package/dist/web/assets/{jsonMode-Bl3r4LM_.js → jsonMode-BAUNCNAX.js} +1 -1
  127. package/dist/web/assets/{lspLanguageFeatures-DH22w5XD.js → lspLanguageFeatures-fucFYI1A.js} +1 -1
  128. package/dist/web/assets/monaco.contribution-Ce4v5kei.js +2 -0
  129. package/dist/web/assets/monaco.contribution-DLLMi4cB.js +2 -0
  130. package/dist/web/assets/monaco.contribution-g9QiIm1d.js +2 -0
  131. package/dist/web/assets/monaco.contribution-nG-5Cyjz.js +2 -0
  132. package/dist/web/assets/monitor-DgHCnCKl.js +1 -0
  133. package/dist/web/assets/{play-2NDQ4-7K.js → play-Be0XDHBu.js} +1 -1
  134. package/dist/web/assets/{python-CQ0TmUW9.js → python-CEhEiPo7.js} +1 -1
  135. package/dist/web/assets/{refresh-cw-CyermMsy.js → refresh-cw-DH0KLbdD.js} +1 -1
  136. package/dist/web/assets/reply-D1TK2yV8.js +1 -0
  137. package/dist/web/assets/{save-Bij3cc3Q.js → save-C1MSeBnQ.js} +1 -1
  138. package/dist/web/assets/square-CemI-0g5.js +1 -0
  139. package/dist/web/assets/square-pen-CqfsvR_n.js +1 -0
  140. package/dist/web/assets/{toggleHighContrast-CxALivAH.js → toggleHighContrast-DrdQN3Rl.js} +1 -1
  141. package/dist/web/assets/training-BQVNUTZA.css +1 -0
  142. package/dist/web/assets/training-model-data-B7-1Bxil.js +1 -0
  143. package/dist/web/assets/{tsMode-vH4lMS7h.js → tsMode-CKB5oOUU.js} +1 -1
  144. package/dist/web/assets/{upload-DbJfEI3G.js → upload-t751LLqP.js} +1 -1
  145. package/dist/web/assets/useLocalAgentSchedules-CzC3wfIP.js +1 -0
  146. package/dist/web/assets/{wifi-off-BnVFBG28.js → wifi-off-CxTHH3JU.js} +1 -1
  147. package/dist/web/assets/{workers-CBihj7z6.js → workers-CqYddzCd.js} +1 -1
  148. package/dist/web/assets/{yaml-Bhkoq1sy.js → yaml-e5wBkc-C.js} +1 -1
  149. package/dist/web/index.html +2 -2
  150. package/docs/command-reference.md +76 -41
  151. package/package.json +3 -1
  152. package/dist/chunks/chunk-3VURZQHA.js +0 -864
  153. package/dist/chunks/chunk-BWA3COR4.js +0 -3535
  154. package/dist/chunks/chunk-HLCTINEP.js +0 -224
  155. package/dist/chunks/chunk-PGET7EZF.js +0 -3896
  156. package/dist/chunks/chunk-T4QXKU5Y.js +0 -1
  157. package/dist/chunks/chunk-XEJ7XXUQ.js +0 -1301
  158. package/dist/chunks/cli-AS3DZ7XB.js +0 -23
  159. package/dist/chunks/extend-6N5S5KA5.js +0 -89
  160. package/dist/chunks/extension-FJSVCG2Q.js +0 -121
  161. package/dist/chunks/fileFromPath-DHCRY3BD.js +0 -2151
  162. package/dist/chunks/src-SCS4KKP4.js +0 -105881
  163. package/dist/web/assets/BrowserSidebar-C0MHQaaD.js +0 -1
  164. package/dist/web/assets/CloudWorkView-DNoPIlMj.css +0 -1
  165. package/dist/web/assets/CloudWorkView-DwFIZoXy.js +0 -1
  166. package/dist/web/assets/CommandMenu-CYGFrMZi.js +0 -1
  167. package/dist/web/assets/CommunityView-C6n89YXz.js +0 -1
  168. package/dist/web/assets/ComposerCreateImproveStrip-C3RwXC3_.js +0 -1
  169. package/dist/web/assets/GetStartedView-DBLdduwr.css +0 -1
  170. package/dist/web/assets/GetStartedView-fwD0ZXo9.js +0 -1
  171. package/dist/web/assets/LabSkillSidebar-BSuc-NJr.js +0 -1
  172. package/dist/web/assets/LabsRoute-BrJkBNig.css +0 -1
  173. package/dist/web/assets/LabsRoute-D2y8dSsT.js +0 -3
  174. package/dist/web/assets/MainChatThread-Dj_Ry6WQ.js +0 -2
  175. package/dist/web/assets/MakeAgentTutorialLearningPanel-Bz2VDaRe.js +0 -2
  176. package/dist/web/assets/MarkdownText-B6Nu_0Fz.js +0 -7
  177. package/dist/web/assets/Messages-CH2wfv2a.js +0 -10
  178. package/dist/web/assets/NativeSkillSidebar-4iUfgwqO.js +0 -1
  179. package/dist/web/assets/NewProjectDialog-8M5-6-h-.js +0 -1
  180. package/dist/web/assets/PostTrainingLearningPanel-CdG5KHZs.js +0 -2
  181. package/dist/web/assets/PostTrainingStatusPill-COZ4qISQ.js +0 -1
  182. package/dist/web/assets/ProfileSettingsSection-Bo7dybgW.js +0 -1
  183. package/dist/web/assets/ProfileSettingsSection-Cg4tKO-C.css +0 -1
  184. package/dist/web/assets/RightChatPanelStack-Di8zoHJI.js +0 -1
  185. package/dist/web/assets/SettingsView-BcYyY66X.css +0 -1
  186. package/dist/web/assets/SettingsView-CAaKdDHt.js +0 -6
  187. package/dist/web/assets/TeamChatView-Bx44q3WV.css +0 -1
  188. package/dist/web/assets/TeamChatView-CzQYFBap.js +0 -3
  189. package/dist/web/assets/TrainingCreationPanel-C_ntWAAP.js +0 -1
  190. package/dist/web/assets/TrainingDraftPanel-3hJIxLNn.js +0 -1
  191. package/dist/web/assets/WorkspaceDiffPanel-By8PWUuE.js +0 -14
  192. package/dist/web/assets/WorkspaceEnvironmentMenu-7wmC-spz.js +0 -32
  193. package/dist/web/assets/WorkspaceGitDialogs-Hn--lsRh.js +0 -1
  194. package/dist/web/assets/activity-Dp5V58om.js +0 -1
  195. package/dist/web/assets/boxes-DE7WJaEv.js +0 -1
  196. package/dist/web/assets/chevron-up-BWx8gGab.js +0 -1
  197. package/dist/web/assets/circle-x-DnmOfZIg.js +0 -1
  198. package/dist/web/assets/copy-BjWvaXLC.js +0 -1
  199. package/dist/web/assets/create-pipeline-request-C4V6-lWN.js +0 -4
  200. package/dist/web/assets/credit-card-Bjg0Zaw5.js +0 -1
  201. package/dist/web/assets/file-BrC1KjAS.js +0 -1
  202. package/dist/web/assets/git-branch-DTeeARsp.js +0 -1
  203. package/dist/web/assets/index-BcZetaeD.css +0 -1
  204. package/dist/web/assets/index-DQalqxbw.js +0 -177
  205. package/dist/web/assets/index-DYxF_d9i.js +0 -1
  206. package/dist/web/assets/info-BXBpMeVU.js +0 -1
  207. package/dist/web/assets/make-agent-tutorial-CAnTPFCK.js +0 -2
  208. package/dist/web/assets/monaco.contribution-C0BsxYAz.js +0 -2
  209. package/dist/web/assets/monaco.contribution-CzpXjm9j.js +0 -2
  210. package/dist/web/assets/monaco.contribution-DK-g-i00.js +0 -2
  211. package/dist/web/assets/monaco.contribution-iAurj7TQ.js +0 -2
  212. package/dist/web/assets/monitor-Ba2FFblh.js +0 -1
  213. package/dist/web/assets/reply-BSExNLHM.js +0 -1
  214. package/dist/web/assets/rotate-cw-DJ-zYG9E.js +0 -1
  215. package/dist/web/assets/training-BN8CALIc.css +0 -1
  216. package/dist/web/assets/training-model-data-BXUCzS0p.js +0 -1
  217. package/dist/web/tokens/eth.svg +0 -1
  218. package/dist/web/tokens/usdc.svg +0 -1
  219. 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
- getOpChatModel,
4
- listOpChatModels,
5
- sendHostedChatTurn,
6
- streamHostedChatTurn
7
- } from "./chunk-HLCTINEP.js";
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
  };