@goah/cli 0.13.0 → 0.13.2

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 (236) hide show
  1. package/dist/LICENSE +201 -0
  2. package/dist/THIRD-PARTY-NOTICES.md +2319 -0
  3. package/dist/anthropic-messages-WBFOHES5.js +7214 -0
  4. package/dist/azure-openai-responses-NZFH3PO6.js +253 -0
  5. package/dist/chunk-25XSBFX6.js +639 -0
  6. package/dist/chunk-2QBQZGXF.js +110 -0
  7. package/dist/chunk-2ZP2NBW3.js +345 -0
  8. package/dist/chunk-4KA63VNZ.js +2 -0
  9. package/dist/chunk-4M6TXTT5.js +86 -0
  10. package/dist/chunk-4US7ZHT3.js +20 -0
  11. package/dist/chunk-6M3OOCKO.js +11809 -0
  12. package/dist/chunk-7AXAFDPG.js +17 -0
  13. package/dist/chunk-7E7V6OIU.js +920 -0
  14. package/dist/chunk-BXA47DTF.js +548 -0
  15. package/dist/chunk-D2DVAH37.js +25 -0
  16. package/dist/chunk-FSBUS2BI.js +26 -0
  17. package/dist/chunk-GKDRAHLI.js +4787 -0
  18. package/dist/chunk-H462EFJP.js +89 -0
  19. package/dist/chunk-IIJQ3DW4.js +35 -0
  20. package/dist/chunk-JQD5EWJY.js +34 -0
  21. package/dist/chunk-K26BVR6O.js +61 -0
  22. package/dist/chunk-KAO7WIXG.js +31 -0
  23. package/dist/chunk-KJ4HJCTK.js +1178 -0
  24. package/dist/chunk-LBKI23CC.js +9810 -0
  25. package/dist/chunk-LKBKZEHT.js +41 -0
  26. package/dist/chunk-MD7TLTXZ.js +18 -0
  27. package/dist/chunk-MPXK7QBL.js +868 -0
  28. package/dist/chunk-NRLGWZJC.js +11 -0
  29. package/dist/chunk-QBD6EJ2Z.js +1746 -0
  30. package/dist/chunk-R6I3VKME.js +132 -0
  31. package/dist/chunk-TJON22J4.js +87 -0
  32. package/dist/chunk-ULY36ME4.js +33097 -0
  33. package/dist/chunk-XALZLRYK.js +9221 -0
  34. package/dist/chunk-XPQKM3L7.js +57 -0
  35. package/dist/chunk-YH6YJ2IB.js +1773 -0
  36. package/dist/cli.d.ts +0 -2
  37. package/dist/cli.js +13716 -580
  38. package/dist/console/assets/{index-Rtc_B7cs.js → index-B1vGMXKr.js} +11 -11
  39. package/dist/console/assets/{index-Rtc_B7cs.js.map → index-B1vGMXKr.js.map} +1 -1
  40. package/dist/console/index.html +1 -1
  41. package/dist/dist-65MDQA4Q.js +1126 -0
  42. package/dist/dist-KNR2XL6J.js +39 -0
  43. package/dist/execution.d.ts +557 -2
  44. package/dist/execution.js +37 -2
  45. package/dist/faux-runner-worker.js +128 -0
  46. package/dist/google-generative-ai-YMHXZSFE.js +422 -0
  47. package/dist/google-vertex-X6DB3ZQ6.js +471 -0
  48. package/dist/index.d.ts +853 -25
  49. package/dist/index.js +84 -385
  50. package/dist/kernel.d.ts +39 -2
  51. package/dist/kernel.js +21 -2
  52. package/dist/mistral-conversations-TY3MMD6G.js +718 -0
  53. package/dist/multipart-parser-F6M4NJZU.js +373 -0
  54. package/dist/openai-codex-responses-BRDUMLN5.js +1374 -0
  55. package/dist/openai-completions-CX634XN3.js +1139 -0
  56. package/dist/openai-responses-HMCXJIHT.js +300 -0
  57. package/dist/openrouter-images-KTWET2H2.js +148 -0
  58. package/dist/pi-messages-XL5OEC4K.js +307 -0
  59. package/dist/pi-worker.js +671 -0
  60. package/dist/runner-pi.d.ts +342 -2
  61. package/dist/runner-pi.js +46 -2
  62. package/dist/runner-registry-GD4BYCQC.js +22 -0
  63. package/dist/sqlite.d.ts +446 -2
  64. package/dist/sqlite.js +15 -2
  65. package/dist/src-F2KBSV4T.js +1398 -0
  66. package/dist/supervisor.d.ts +625 -2
  67. package/dist/supervisor.js +39 -2
  68. package/dist/testkit.d.ts +564 -2
  69. package/dist/testkit.js +127 -2
  70. package/dist/transcript.d.ts +84 -2
  71. package/dist/transcript.js +25 -2
  72. package/dist/verification-worker.js +72 -0
  73. package/package.json +2 -26
  74. package/dist/cli.d.ts.map +0 -1
  75. package/dist/cli.js.map +0 -1
  76. package/dist/control.d.ts +0 -106
  77. package/dist/control.d.ts.map +0 -1
  78. package/dist/control.js +0 -242
  79. package/dist/control.js.map +0 -1
  80. package/dist/execution.d.ts.map +0 -1
  81. package/dist/execution.js.map +0 -1
  82. package/dist/index.d.ts.map +0 -1
  83. package/dist/index.js.map +0 -1
  84. package/dist/kernel.d.ts.map +0 -1
  85. package/dist/kernel.js.map +0 -1
  86. package/dist/live-config.d.ts +0 -10
  87. package/dist/live-config.d.ts.map +0 -1
  88. package/dist/live-config.js +0 -44
  89. package/dist/live-config.js.map +0 -1
  90. package/dist/prompt-queue.d.ts +0 -13
  91. package/dist/prompt-queue.d.ts.map +0 -1
  92. package/dist/prompt-queue.js +0 -35
  93. package/dist/prompt-queue.js.map +0 -1
  94. package/dist/runner-pi.d.ts.map +0 -1
  95. package/dist/runner-pi.js.map +0 -1
  96. package/dist/runner-registry.d.ts +0 -8
  97. package/dist/runner-registry.d.ts.map +0 -1
  98. package/dist/runner-registry.js +0 -12
  99. package/dist/runner-registry.js.map +0 -1
  100. package/dist/searchable-select.d.ts +0 -24
  101. package/dist/searchable-select.d.ts.map +0 -1
  102. package/dist/searchable-select.js +0 -61
  103. package/dist/searchable-select.js.map +0 -1
  104. package/dist/secret-input.d.ts +0 -8
  105. package/dist/secret-input.d.ts.map +0 -1
  106. package/dist/secret-input.js +0 -14
  107. package/dist/secret-input.js.map +0 -1
  108. package/dist/setup-wizard.d.ts +0 -22
  109. package/dist/setup-wizard.d.ts.map +0 -1
  110. package/dist/setup-wizard.js +0 -154
  111. package/dist/setup-wizard.js.map +0 -1
  112. package/dist/sqlite.d.ts.map +0 -1
  113. package/dist/sqlite.js.map +0 -1
  114. package/dist/supervisor.d.ts.map +0 -1
  115. package/dist/supervisor.js.map +0 -1
  116. package/dist/testkit.d.ts.map +0 -1
  117. package/dist/testkit.js.map +0 -1
  118. package/dist/thread-inspect.d.ts +0 -47
  119. package/dist/thread-inspect.d.ts.map +0 -1
  120. package/dist/thread-inspect.js +0 -78
  121. package/dist/thread-inspect.js.map +0 -1
  122. package/dist/transcript.d.ts.map +0 -1
  123. package/dist/transcript.js.map +0 -1
  124. package/dist/tui-theme.d.ts +0 -17
  125. package/dist/tui-theme.d.ts.map +0 -1
  126. package/dist/tui-theme.js +0 -19
  127. package/dist/tui-theme.js.map +0 -1
  128. package/dist/tui.d.ts +0 -24
  129. package/dist/tui.d.ts.map +0 -1
  130. package/dist/tui.js +0 -784
  131. package/dist/tui.js.map +0 -1
  132. package/dist/update.d.ts +0 -16
  133. package/dist/update.d.ts.map +0 -1
  134. package/dist/update.js +0 -67
  135. package/dist/update.js.map +0 -1
  136. package/dist/web-console.d.ts +0 -33
  137. package/dist/web-console.d.ts.map +0 -1
  138. package/dist/web-console.js +0 -242
  139. package/dist/web-console.js.map +0 -1
  140. package/dist/welcome.d.ts +0 -30
  141. package/dist/welcome.d.ts.map +0 -1
  142. package/dist/welcome.js +0 -69
  143. package/dist/welcome.js.map +0 -1
  144. package/node_modules/goah-ledger-contract/dist/execution.d.ts +0 -544
  145. package/node_modules/goah-ledger-contract/dist/execution.d.ts.map +0 -1
  146. package/node_modules/goah-ledger-contract/dist/execution.js +0 -52
  147. package/node_modules/goah-ledger-contract/dist/execution.js.map +0 -1
  148. package/node_modules/goah-ledger-contract/dist/index.d.ts +0 -4
  149. package/node_modules/goah-ledger-contract/dist/index.d.ts.map +0 -1
  150. package/node_modules/goah-ledger-contract/dist/index.js +0 -4
  151. package/node_modules/goah-ledger-contract/dist/index.js.map +0 -1
  152. package/node_modules/goah-ledger-contract/dist/kernel.d.ts +0 -37
  153. package/node_modules/goah-ledger-contract/dist/kernel.d.ts.map +0 -1
  154. package/node_modules/goah-ledger-contract/dist/kernel.js +0 -8
  155. package/node_modules/goah-ledger-contract/dist/kernel.js.map +0 -1
  156. package/node_modules/goah-ledger-contract/dist/transcript.d.ts +0 -63
  157. package/node_modules/goah-ledger-contract/dist/transcript.d.ts.map +0 -1
  158. package/node_modules/goah-ledger-contract/dist/transcript.js +0 -115
  159. package/node_modules/goah-ledger-contract/dist/transcript.js.map +0 -1
  160. package/node_modules/goah-ledger-contract/package.json +0 -28
  161. package/node_modules/goah-ledger-sqlite/dist/index.d.ts +0 -86
  162. package/node_modules/goah-ledger-sqlite/dist/index.d.ts.map +0 -1
  163. package/node_modules/goah-ledger-sqlite/dist/index.js +0 -1254
  164. package/node_modules/goah-ledger-sqlite/dist/index.js.map +0 -1
  165. package/node_modules/goah-ledger-sqlite/package.json +0 -26
  166. package/node_modules/goah-runner-pi/dist/configurator.d.ts +0 -20
  167. package/node_modules/goah-runner-pi/dist/configurator.d.ts.map +0 -1
  168. package/node_modules/goah-runner-pi/dist/configurator.js +0 -423
  169. package/node_modules/goah-runner-pi/dist/configurator.js.map +0 -1
  170. package/node_modules/goah-runner-pi/dist/credential-store.d.ts +0 -14
  171. package/node_modules/goah-runner-pi/dist/credential-store.d.ts.map +0 -1
  172. package/node_modules/goah-runner-pi/dist/credential-store.js +0 -163
  173. package/node_modules/goah-runner-pi/dist/credential-store.js.map +0 -1
  174. package/node_modules/goah-runner-pi/dist/env-spec.d.ts +0 -17
  175. package/node_modules/goah-runner-pi/dist/env-spec.d.ts.map +0 -1
  176. package/node_modules/goah-runner-pi/dist/env-spec.js +0 -95
  177. package/node_modules/goah-runner-pi/dist/env-spec.js.map +0 -1
  178. package/node_modules/goah-runner-pi/dist/index.d.ts +0 -76
  179. package/node_modules/goah-runner-pi/dist/index.d.ts.map +0 -1
  180. package/node_modules/goah-runner-pi/dist/index.js +0 -326
  181. package/node_modules/goah-runner-pi/dist/index.js.map +0 -1
  182. package/node_modules/goah-runner-pi/dist/model-provider.d.ts +0 -30
  183. package/node_modules/goah-runner-pi/dist/model-provider.d.ts.map +0 -1
  184. package/node_modules/goah-runner-pi/dist/model-provider.js +0 -96
  185. package/node_modules/goah-runner-pi/dist/model-provider.js.map +0 -1
  186. package/node_modules/goah-runner-pi/dist/pi-worker.d.ts +0 -31
  187. package/node_modules/goah-runner-pi/dist/pi-worker.d.ts.map +0 -1
  188. package/node_modules/goah-runner-pi/dist/pi-worker.js +0 -579
  189. package/node_modules/goah-runner-pi/dist/pi-worker.js.map +0 -1
  190. package/node_modules/goah-runner-pi/dist/steering-no-ack.test-fixture.d.ts +0 -2
  191. package/node_modules/goah-runner-pi/dist/steering-no-ack.test-fixture.d.ts.map +0 -1
  192. package/node_modules/goah-runner-pi/dist/steering-no-ack.test-fixture.js +0 -3
  193. package/node_modules/goah-runner-pi/dist/steering-no-ack.test-fixture.js.map +0 -1
  194. package/node_modules/goah-runner-pi/dist/steering-reject.test-fixture.d.ts +0 -2
  195. package/node_modules/goah-runner-pi/dist/steering-reject.test-fixture.d.ts.map +0 -1
  196. package/node_modules/goah-runner-pi/dist/steering-reject.test-fixture.js +0 -5
  197. package/node_modules/goah-runner-pi/dist/steering-reject.test-fixture.js.map +0 -1
  198. package/node_modules/goah-runner-pi/dist/steering-worker.test-fixture.d.ts +0 -2
  199. package/node_modules/goah-runner-pi/dist/steering-worker.test-fixture.d.ts.map +0 -1
  200. package/node_modules/goah-runner-pi/dist/steering-worker.test-fixture.js +0 -5
  201. package/node_modules/goah-runner-pi/dist/steering-worker.test-fixture.js.map +0 -1
  202. package/node_modules/goah-runner-pi/dist/test-helpers.d.ts +0 -4
  203. package/node_modules/goah-runner-pi/dist/test-helpers.d.ts.map +0 -1
  204. package/node_modules/goah-runner-pi/dist/test-helpers.js +0 -13
  205. package/node_modules/goah-runner-pi/dist/test-helpers.js.map +0 -1
  206. package/node_modules/goah-runner-pi/dist/verification-worker.d.ts +0 -2
  207. package/node_modules/goah-runner-pi/dist/verification-worker.d.ts.map +0 -1
  208. package/node_modules/goah-runner-pi/dist/verification-worker.js +0 -46
  209. package/node_modules/goah-runner-pi/dist/verification-worker.js.map +0 -1
  210. package/node_modules/goah-runner-pi/package.json +0 -28
  211. package/node_modules/goah-supervisor/dist/context-view.d.ts +0 -30
  212. package/node_modules/goah-supervisor/dist/context-view.d.ts.map +0 -1
  213. package/node_modules/goah-supervisor/dist/context-view.js +0 -58
  214. package/node_modules/goah-supervisor/dist/context-view.js.map +0 -1
  215. package/node_modules/goah-supervisor/dist/index.d.ts +0 -96
  216. package/node_modules/goah-supervisor/dist/index.d.ts.map +0 -1
  217. package/node_modules/goah-supervisor/dist/index.js +0 -1075
  218. package/node_modules/goah-supervisor/dist/index.js.map +0 -1
  219. package/node_modules/goah-supervisor/dist/roles.d.ts +0 -4
  220. package/node_modules/goah-supervisor/dist/roles.d.ts.map +0 -1
  221. package/node_modules/goah-supervisor/dist/roles.js +0 -29
  222. package/node_modules/goah-supervisor/dist/roles.js.map +0 -1
  223. package/node_modules/goah-supervisor/dist/verification.d.ts +0 -61
  224. package/node_modules/goah-supervisor/dist/verification.d.ts.map +0 -1
  225. package/node_modules/goah-supervisor/dist/verification.js +0 -135
  226. package/node_modules/goah-supervisor/dist/verification.js.map +0 -1
  227. package/node_modules/goah-supervisor/package.json +0 -26
  228. package/node_modules/goah-testkit/dist/faux-runner-worker.d.ts +0 -2
  229. package/node_modules/goah-testkit/dist/faux-runner-worker.d.ts.map +0 -1
  230. package/node_modules/goah-testkit/dist/faux-runner-worker.js +0 -82
  231. package/node_modules/goah-testkit/dist/faux-runner-worker.js.map +0 -1
  232. package/node_modules/goah-testkit/dist/index.d.ts +0 -49
  233. package/node_modules/goah-testkit/dist/index.d.ts.map +0 -1
  234. package/node_modules/goah-testkit/dist/index.js +0 -96
  235. package/node_modules/goah-testkit/dist/index.js.map +0 -1
  236. package/node_modules/goah-testkit/package.json +0 -29
@@ -0,0 +1,307 @@
1
+ import { createRequire as __goahCreateRequire } from "node:module";
2
+ const require = __goahCreateRequire(import.meta.url);
3
+ import {
4
+ headersToRecord,
5
+ providerHeadersToRecord
6
+ } from "./chunk-FSBUS2BI.js";
7
+ import {
8
+ getProviderEnvValue
9
+ } from "./chunk-IIJQ3DW4.js";
10
+ import {
11
+ parseStreamingJson
12
+ } from "./chunk-2ZP2NBW3.js";
13
+ import {
14
+ AssistantMessageEventStream,
15
+ appendAssistantMessageDiagnostic,
16
+ createAssistantMessageDiagnostic
17
+ } from "./chunk-2QBQZGXF.js";
18
+ import "./chunk-XPQKM3L7.js";
19
+
20
+ // ../../node_modules/@earendil-works/pi-ai/dist/api/pi-messages.js
21
+ var PiMessagesResponseError = class extends Error {
22
+ code;
23
+ diagnosticDetails;
24
+ constructor(message, code, diagnosticDetails) {
25
+ super(message);
26
+ this.name = "PiMessagesResponseError";
27
+ this.code = code;
28
+ this.diagnosticDetails = diagnosticDetails;
29
+ }
30
+ };
31
+ function parsePiMessagesErrorBody(body) {
32
+ try {
33
+ const parsed = JSON.parse(body);
34
+ const error = parsed?.error;
35
+ return parsed && typeof error === "object" && error !== null && !Array.isArray(error) ? parsed : void 0;
36
+ } catch {
37
+ return void 0;
38
+ }
39
+ }
40
+ function truncateDiagnosticString(value) {
41
+ const maxLength = 8192;
42
+ return value.length > maxLength ? `${value.slice(0, maxLength)}\u2026` : value;
43
+ }
44
+ function formatPiMessagesResponseError(response, body, errorBody) {
45
+ const message = typeof errorBody?.error?.message === "string" ? errorBody.error.message : void 0;
46
+ const code = typeof errorBody?.error?.code === "string" ? errorBody.error.code : void 0;
47
+ const suffix = message ?? body;
48
+ const codeSuffix = code ? ` (${code})` : "";
49
+ return `${response.status} ${response.statusText}: ${suffix}${codeSuffix}`;
50
+ }
51
+ function createPiMessagesResponseError(model, url, response, body) {
52
+ const errorBody = parsePiMessagesErrorBody(body);
53
+ const code = typeof errorBody?.error?.code === "string" ? errorBody.error.code : void 0;
54
+ return new PiMessagesResponseError(formatPiMessagesResponseError(response, body, errorBody), code, {
55
+ version: 1,
56
+ provider: model.provider,
57
+ model: model.id,
58
+ url: url.toString(),
59
+ status: response.status,
60
+ statusText: response.statusText,
61
+ error: errorBody?.error,
62
+ body: errorBody ? void 0 : truncateDiagnosticString(body),
63
+ timestampMs: Date.now()
64
+ });
65
+ }
66
+ function createEmptyUsage() {
67
+ return {
68
+ input: 0,
69
+ output: 0,
70
+ cacheRead: 0,
71
+ cacheWrite: 0,
72
+ totalTokens: 0,
73
+ cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 }
74
+ };
75
+ }
76
+ function appendRewriteDiagnostic(message, rewrite) {
77
+ if (!rewrite) {
78
+ return;
79
+ }
80
+ appendAssistantMessageDiagnostic(message, {
81
+ type: "pi_messages_rewrite",
82
+ timestamp: Date.now(),
83
+ details: { ...rewrite }
84
+ });
85
+ }
86
+ function createEventConverter(model) {
87
+ const partial = {
88
+ role: "assistant",
89
+ content: [],
90
+ api: model.api,
91
+ provider: model.provider,
92
+ model: model.id,
93
+ usage: createEmptyUsage(),
94
+ stopReason: "pending",
95
+ timestamp: Date.now()
96
+ };
97
+ const toolJson = /* @__PURE__ */ new Map();
98
+ return (event) => {
99
+ switch (event.type) {
100
+ case "done":
101
+ Object.assign(partial, {
102
+ stopReason: event.reason,
103
+ usage: event.usage,
104
+ responseId: event.responseId
105
+ });
106
+ appendRewriteDiagnostic(partial, event.rewrite);
107
+ return { type: "done", reason: event.reason, message: partial };
108
+ case "error":
109
+ Object.assign(partial, {
110
+ stopReason: event.reason,
111
+ usage: event.usage,
112
+ errorMessage: event.errorMessage,
113
+ responseId: event.responseId
114
+ });
115
+ appendRewriteDiagnostic(partial, event.rewrite);
116
+ return { type: "error", reason: event.reason, error: partial };
117
+ case "start":
118
+ break;
119
+ case "text_start":
120
+ partial.content[event.contentIndex] = { type: "text", text: "" };
121
+ break;
122
+ case "text_delta":
123
+ partial.content[event.contentIndex].text += event.delta;
124
+ break;
125
+ case "text_end":
126
+ Object.assign(partial.content[event.contentIndex], {
127
+ text: event.content,
128
+ textSignature: event.contentSignature
129
+ });
130
+ break;
131
+ case "thinking_start":
132
+ partial.content[event.contentIndex] = { type: "thinking", thinking: "" };
133
+ break;
134
+ case "thinking_delta":
135
+ partial.content[event.contentIndex].thinking += event.delta;
136
+ break;
137
+ case "thinking_end":
138
+ Object.assign(partial.content[event.contentIndex], {
139
+ thinking: event.content,
140
+ thinkingSignature: event.contentSignature,
141
+ redacted: event.redacted
142
+ });
143
+ break;
144
+ case "toolcall_start":
145
+ partial.content[event.contentIndex] = {
146
+ type: "toolCall",
147
+ id: event.id,
148
+ name: event.toolName,
149
+ arguments: {}
150
+ };
151
+ toolJson.set(event.contentIndex, "");
152
+ break;
153
+ case "toolcall_delta": {
154
+ const json = `${toolJson.get(event.contentIndex) ?? ""}${event.delta}`;
155
+ toolJson.set(event.contentIndex, json);
156
+ partial.content[event.contentIndex].arguments = parseStreamingJson(json);
157
+ break;
158
+ }
159
+ case "toolcall_end":
160
+ Object.assign(partial.content[event.contentIndex], event.toolCall);
161
+ toolJson.delete(event.contentIndex);
162
+ return {
163
+ type: "toolcall_end",
164
+ contentIndex: event.contentIndex,
165
+ toolCall: partial.content[event.contentIndex],
166
+ partial
167
+ };
168
+ }
169
+ return { ...event, partial };
170
+ };
171
+ }
172
+ async function* readPiMessagesEvents(stream2) {
173
+ const decoder = new TextDecoder();
174
+ const reader = stream2.getReader();
175
+ let buffer = "";
176
+ try {
177
+ while (true) {
178
+ const { done, value } = await reader.read();
179
+ buffer += done ? decoder.decode() : decoder.decode(value, { stream: true });
180
+ buffer = buffer.replace(/\r\n/g, "\n");
181
+ let split = buffer.indexOf("\n\n");
182
+ while (split !== -1) {
183
+ const event = parsePiMessagesEvent(buffer.slice(0, split));
184
+ if (event) {
185
+ yield event;
186
+ }
187
+ buffer = buffer.slice(split + 2);
188
+ split = buffer.indexOf("\n\n");
189
+ }
190
+ if (done) {
191
+ break;
192
+ }
193
+ }
194
+ if (buffer.trim()) {
195
+ const event = parsePiMessagesEvent(buffer);
196
+ if (event) {
197
+ yield event;
198
+ }
199
+ }
200
+ } finally {
201
+ reader.releaseLock();
202
+ }
203
+ }
204
+ function parsePiMessagesEvent(raw) {
205
+ const data = raw.split("\n").find((line) => line.startsWith("data:"))?.slice(5).trim();
206
+ return data && data !== "[DONE]" ? JSON.parse(data) : void 0;
207
+ }
208
+ function createErrorEvent(model, error, aborted) {
209
+ const reason = aborted ? "aborted" : "error";
210
+ const assistantMessage = {
211
+ role: "assistant",
212
+ content: [],
213
+ api: model.api,
214
+ provider: model.provider,
215
+ model: model.id,
216
+ usage: createEmptyUsage(),
217
+ stopReason: reason,
218
+ errorMessage: error instanceof Error ? error.message : String(error),
219
+ timestamp: Date.now()
220
+ };
221
+ if (!aborted && error instanceof PiMessagesResponseError) {
222
+ appendAssistantMessageDiagnostic(assistantMessage, createAssistantMessageDiagnostic("pi_messages_response_failure", error, error.diagnosticDetails));
223
+ }
224
+ return { type: "error", reason, error: assistantMessage };
225
+ }
226
+ function resolveCacheRetention(cacheRetention, env) {
227
+ if (cacheRetention) {
228
+ return cacheRetention;
229
+ }
230
+ return getProviderEnvValue("PI_CACHE_RETENTION", env) === "long" ? "long" : void 0;
231
+ }
232
+ var stream = (model, context, options) => {
233
+ const eventStream = new AssistantMessageEventStream();
234
+ const convertEvent = createEventConverter(model);
235
+ void (async () => {
236
+ try {
237
+ const apiKey = options?.apiKey;
238
+ if (!apiKey) {
239
+ throw new Error(`No API key provided for provider "${model.provider}"`);
240
+ }
241
+ const url = new URL(`${model.baseUrl.replace(/\/+$/u, "")}/messages`);
242
+ if (options?.debug) {
243
+ url.searchParams.set("debug", "1");
244
+ }
245
+ let payload = {
246
+ model: model.id,
247
+ context,
248
+ options: {
249
+ temperature: options?.temperature,
250
+ maxTokens: options?.maxTokens,
251
+ reasoning: options?.reasoning,
252
+ cacheRetention: resolveCacheRetention(options?.cacheRetention, options?.env),
253
+ sessionId: options?.sessionId,
254
+ toolChoice: options?.toolChoice
255
+ }
256
+ };
257
+ const nextPayload = await options?.onPayload?.(payload, model);
258
+ if (nextPayload !== void 0) {
259
+ payload = nextPayload;
260
+ }
261
+ const response = await (options?.fetch ?? globalThis.fetch)(url, {
262
+ method: "POST",
263
+ headers: {
264
+ authorization: `Bearer ${apiKey}`,
265
+ accept: "text/event-stream",
266
+ "content-type": "application/json",
267
+ ...providerHeadersToRecord(options?.headers)
268
+ },
269
+ body: JSON.stringify(payload),
270
+ signal: options?.signal
271
+ });
272
+ await options?.onResponse?.({ status: response.status, headers: headersToRecord(response.headers) }, model);
273
+ if (!response.ok) {
274
+ const body = await response.text();
275
+ throw createPiMessagesResponseError(model, url, response, body);
276
+ }
277
+ if (!response.body) {
278
+ throw new Error(`${model.provider} response has no body`);
279
+ }
280
+ for await (const piEvent of readPiMessagesEvents(response.body)) {
281
+ const event = convertEvent(piEvent);
282
+ eventStream.push(event);
283
+ if (event.type === "done" || event.type === "error") {
284
+ return;
285
+ }
286
+ }
287
+ throw new Error(`${model.provider} stream ended without a terminal event`);
288
+ } catch (error) {
289
+ eventStream.push(createErrorEvent(model, error, options?.signal?.aborted ?? false));
290
+ }
291
+ })();
292
+ return eventStream;
293
+ };
294
+ var streamSimple = (model, context, options) => {
295
+ const extra = options;
296
+ return stream(model, context, {
297
+ ...options,
298
+ reasoning: options?.reasoning,
299
+ toolChoice: extra?.toolChoice,
300
+ debug: extra?.debug
301
+ });
302
+ };
303
+ export {
304
+ PiMessagesResponseError,
305
+ stream,
306
+ streamSimple
307
+ };