@loopstack/loopstack-studio 0.23.1 → 0.25.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.
Files changed (147) hide show
  1. package/dist/api/config.js +3 -3
  2. package/dist/api/index.js +10 -12
  3. package/dist/api/processor.js +1 -1
  4. package/dist/api/secrets.js +16 -0
  5. package/dist/api/workflows.js +7 -1
  6. package/dist/components/dynamic-form/ArrayController.js +68 -64
  7. package/dist/components/dynamic-form/CodeContent.js +3 -3
  8. package/dist/components/dynamic-form/Form.js +46 -40
  9. package/dist/components/dynamic-form/FormElement.js +1 -1
  10. package/dist/components/dynamic-form/FormElementHeader.js +2 -2
  11. package/dist/components/dynamic-form/ObjectController.js +24 -21
  12. package/dist/components/dynamic-form/fields/BaseFieldWrapper.js +1 -1
  13. package/dist/components/dynamic-form/fields/CodeViewField.js +36 -36
  14. package/dist/components/dynamic-form/fields/InputField.js +20 -19
  15. package/dist/components/dynamic-form/fields/RadioField.js +18 -18
  16. package/dist/components/dynamic-form/fields/SelectField.js +19 -19
  17. package/dist/components/dynamic-form/fields/TextareaField.js +17 -17
  18. package/dist/components/feedback/LoadingCentered.js +1 -1
  19. package/dist/components/layout/MainLayout.js +18 -31
  20. package/dist/components/layout/StudioSidebar.js +169 -109
  21. package/dist/components/loopstack-elements/link.js +77 -76
  22. package/dist/components/loopstack-elements/tool.js +171 -0
  23. package/dist/components/page/PageBreadcrumbs.js +79 -32
  24. package/dist/components/ui-widgets/UiActions.js +10 -4
  25. package/dist/components/ui-widgets/widgets/ButtonFullWidth.js +8 -6
  26. package/dist/components/ui-widgets/widgets/SubmitButton.js +8 -6
  27. package/dist/features/code-explorer/components/FileContentViewer.js +92 -100
  28. package/dist/features/dashboard/RunItem.js +1 -1
  29. package/dist/features/debug/components/ConfigFlowViewer.js +2 -2
  30. package/dist/features/debug/components/{PipelineDebugHeader.js → WorkflowDebugHeader.js} +5 -5
  31. package/dist/features/debug/components/{PipelineDebugLegend.js → WorkflowDebugLegend.js} +2 -2
  32. package/dist/features/debug/components/{PipelineFlowViewer.js → WorkflowFlowViewer.js} +9 -9
  33. package/dist/features/debug/components/workflow-flow/WorkflowGraph.js +46 -0
  34. package/dist/features/debug/index.js +2 -2
  35. package/dist/features/debug/lib/flow-utils.js +142 -150
  36. package/dist/features/documents/DocumentRenderer.js +66 -30
  37. package/dist/features/documents/components/DocumentItem.js +2 -2
  38. package/dist/features/documents/components/DocumentList.js +18 -11
  39. package/dist/features/documents/document-details/DocumentDetails.js +4 -4
  40. package/dist/features/documents/renderers/AiMessage.js +12 -12
  41. package/dist/features/documents/renderers/ChoicesRenderer.js +92 -0
  42. package/dist/features/documents/renderers/ClaudeMessage.js +1 -1
  43. package/dist/features/documents/renderers/ConfirmPromptRenderer.js +56 -0
  44. package/dist/features/documents/renderers/DocumentFormRenderer.js +95 -65
  45. package/dist/features/documents/renderers/LinkMessageRenderer.js +8 -10
  46. package/dist/features/documents/renderers/SecretInputRenderer.js +87 -0
  47. package/dist/features/documents/renderers/TextPromptRenderer.js +57 -0
  48. package/dist/features/documents/renderers/useDocumentTransition.js +30 -0
  49. package/dist/features/oauth/OAuthPromptRenderer.js +20 -20
  50. package/dist/features/runs/Runs.js +8 -8
  51. package/dist/features/workbench/Workbench.js +35 -35
  52. package/dist/features/workbench/WorkflowItem.js +10 -9
  53. package/dist/features/workbench/WorkflowList.js +56 -73
  54. package/dist/features/workbench/components/NewRunDialog.js +18 -18
  55. package/dist/features/workbench/components/WorkbenchFilesPanel.js +33 -26
  56. package/dist/features/workbench/components/WorkbenchFloatingPanel.js +13 -44
  57. package/dist/features/workbench/components/WorkbenchFlowPanel.js +27 -29
  58. package/dist/features/workbench/components/WorkbenchIconSidebar.js +17 -17
  59. package/dist/features/workbench/components/WorkbenchPreviewPanel.js +2 -2
  60. package/dist/features/workbench/components/WorkbenchSecretsPanel.js +182 -0
  61. package/dist/features/workbench/components/WorkbenchSettingsModal.js +16 -41
  62. package/dist/features/workbench/components/WorkflowForms.js +14 -13
  63. package/dist/features/workbench/components/WorkflowHistoryItem.js +60 -81
  64. package/dist/features/workbench/components/{PipelineHistoryList.js → WorkflowHistoryList.js} +5 -5
  65. package/dist/features/workbench/components/buttons/WorkflowButtons.js +56 -54
  66. package/dist/features/workbench/hooks/useWorkflowData.js +10 -10
  67. package/dist/features/workbench/hooks/useWorkflowListState.js +8 -45
  68. package/dist/features/workbench/index.js +2 -3
  69. package/dist/features/workbench/providers/RemoteFileExplorerProvider.js +132 -117
  70. package/dist/features/workbench/providers/ScrollProvider.js +2 -2
  71. package/dist/features/workbench/providers/WorkbenchLayoutProvider.js +4 -4
  72. package/dist/features/workspaces/Workspaces.js +1 -1
  73. package/dist/features/workspaces/components/CreateWorkspace.js +12 -12
  74. package/dist/features/workspaces/components/ExecutionTimeline.js +22 -21
  75. package/dist/features/workspaces/components/{NewPipelineRunDialog.js → NewWorkflowRunDialog.js} +6 -6
  76. package/dist/features/workspaces/components/{PipelineForm.js → WorkflowRunForm.js} +31 -31
  77. package/dist/features/workspaces/components/WorkspaceHomePage.js +11 -11
  78. package/dist/features/workspaces/components/{pipeline-form → workflow-form}/ArgumentsView.js +1 -1
  79. package/dist/features/workspaces/components/{pipeline-form → workflow-form}/SelectionView.js +16 -16
  80. package/dist/hooks/index.js +3 -3
  81. package/dist/hooks/query-keys.js +34 -68
  82. package/dist/hooks/useConfig.js +5 -5
  83. package/dist/hooks/useProcessor.js +5 -5
  84. package/dist/hooks/useSecrets.js +69 -0
  85. package/dist/hooks/useWorkflows.js +155 -68
  86. package/dist/index.d.ts +158 -116
  87. package/dist/index.js +5 -5
  88. package/dist/packages/contracts/dist/enums/index.js +11 -12
  89. package/dist/packages/contracts/dist/enums/workflow-state.enum.js +1 -1
  90. package/dist/pages/DashboardPage.js +87 -35
  91. package/dist/pages/DebugWorkflowDetailsPage.js +8 -8
  92. package/dist/pages/DebugWorkflowsPage.js +10 -10
  93. package/dist/pages/EmbedWorkbenchPage.js +39 -45
  94. package/dist/pages/PreviewWorkbenchPage.js +130 -255
  95. package/dist/pages/RunsListPage.js +1 -1
  96. package/dist/pages/StudioLandingPage.js +13 -13
  97. package/dist/pages/WorkbenchPage.js +6 -6
  98. package/dist/pages/WorkflowDebugPage.js +114 -0
  99. package/dist/pages/WorkspacePage.js +4 -2
  100. package/dist/providers/InvalidationEventsProvider.js +19 -19
  101. package/dist/providers/SseProvider.js +0 -1
  102. package/dist/routing/LocalRouter.js +14 -17
  103. package/dist/types/ai.types.js +13 -0
  104. package/package.json +2 -3
  105. package/dist/api/namespaces.js +0 -7
  106. package/dist/api/pipelines.js +0 -13
  107. package/dist/components/ai-elements/tool.js +0 -158
  108. package/dist/features/debug/components/pipeline-flow/WorkflowGraph.js +0 -41
  109. package/dist/features/workbench/NavigationItems.js +0 -52
  110. package/dist/features/workbench/WorkbenchNavigation.js +0 -38
  111. package/dist/features/workbench/components/NavigationItem.js +0 -68
  112. package/dist/features/workbench/hooks/useIntersectionObserver.js +0 -44
  113. package/dist/hooks/useNamespaceTree.js +0 -27
  114. package/dist/hooks/useNamespaces.js +0 -25
  115. package/dist/hooks/usePipelines.js +0 -161
  116. package/dist/node_modules/@ai-sdk/provider/dist/index.js +0 -65
  117. package/dist/node_modules/@ai-sdk/provider-utils/dist/index.js +0 -1008
  118. package/dist/node_modules/ai/dist/index.js +0 -1083
  119. package/dist/node_modules/zod/v3/ZodError.js +0 -79
  120. package/dist/node_modules/zod/v3/errors.js +0 -6
  121. package/dist/node_modules/zod/v3/helpers/errorUtil.js +0 -5
  122. package/dist/node_modules/zod/v3/helpers/parseUtil.js +0 -90
  123. package/dist/node_modules/zod/v3/helpers/util.js +0 -72
  124. package/dist/node_modules/zod/v3/locales/en.js +0 -58
  125. package/dist/node_modules/zod/v3/types.js +0 -2425
  126. package/dist/node_modules/zod/v4/classic/errors.js +0 -21
  127. package/dist/node_modules/zod/v4/classic/iso.js +0 -29
  128. package/dist/node_modules/zod/v4/classic/parse.js +0 -4
  129. package/dist/node_modules/zod/v4/classic/schemas.js +0 -392
  130. package/dist/node_modules/zod/v4/core/api.js +0 -532
  131. package/dist/node_modules/zod/v4/core/checks.js +0 -283
  132. package/dist/node_modules/zod/v4/core/core.js +0 -44
  133. package/dist/node_modules/zod/v4/core/doc.js +0 -21
  134. package/dist/node_modules/zod/v4/core/errors.js +0 -40
  135. package/dist/node_modules/zod/v4/core/json-schema-processors.js +0 -305
  136. package/dist/node_modules/zod/v4/core/parse.js +0 -66
  137. package/dist/node_modules/zod/v4/core/regexes.js +0 -28
  138. package/dist/node_modules/zod/v4/core/registries.js +0 -38
  139. package/dist/node_modules/zod/v4/core/schemas.js +0 -863
  140. package/dist/node_modules/zod/v4/core/to-json-schema.js +0 -220
  141. package/dist/node_modules/zod/v4/core/util.js +0 -267
  142. package/dist/node_modules/zod/v4/core/versions.js +0 -6
  143. package/dist/packages/contracts/dist/enums/pipeline-state.js +0 -10
  144. package/dist/pages/PipelineDebugPage.js +0 -115
  145. /package/dist/features/debug/components/{pipeline-flow → workflow-flow}/StateNode.js +0 -0
  146. /package/dist/features/debug/components/{pipeline-flow → workflow-flow}/WorkflowTransitionEdge.js +0 -0
  147. /package/dist/features/workspaces/components/{pipeline-form → workflow-form}/HeaderSection.js +0 -0
@@ -1,1083 +0,0 @@
1
- import { AISDKError, JSONParseError, TypeValidationError } from "../../@ai-sdk/provider/dist/index.js";
2
- import { _enum, _instanceof, _null, array as array$1, boolean, custom, discriminatedUnion, lazy, literal, never, number, object as object$1, record, strictObject, string, union, unknown } from "../../zod/v4/classic/schemas.js";
3
- import { DEFAULT_MAX_DOWNLOAD_SIZE, DownloadError, asSchema, createIdGenerator, getRuntimeEnvironmentUserAgent, jsonSchema, lazySchema, readResponseWithSizeLimit, resolve, safeParseJSON, safeValidateTypes, withUserAgentSuffix, zodSchema } from "../../@ai-sdk/provider-utils/dist/index.js";
4
- var __defProp = Object.defineProperty, __export = (_, K) => {
5
- for (var q in K) __defProp(_, q, {
6
- get: K[q],
7
- enumerable: !0
8
- });
9
- }, name8 = "AI_NoObjectGeneratedError", marker8 = `vercel.ai.error.${name8}`, symbol8 = Symbol.for(marker8), _a8, NoObjectGeneratedError = class extends AISDKError {
10
- constructor({ message: _ = "No object generated.", cause: K, text: q, response: J, usage: Y, finishReason: X }) {
11
- super({
12
- name: name8,
13
- message: _,
14
- cause: K
15
- }), this[_a8] = !0, this.text = q, this.response = J, this.usage = Y, this.finishReason = X;
16
- }
17
- static isInstance(K) {
18
- return AISDKError.hasMarker(K, marker8);
19
- }
20
- };
21
- _a8 = symbol8;
22
- var dataContentSchema = union([
23
- string(),
24
- _instanceof(Uint8Array),
25
- _instanceof(ArrayBuffer),
26
- custom((_) => globalThis.Buffer?.isBuffer(_) ?? !1, { message: "Must be a Buffer" })
27
- ]), jsonValueSchema = lazy(() => union([
28
- _null(),
29
- string(),
30
- number(),
31
- boolean(),
32
- record(string(), jsonValueSchema.optional()),
33
- array$1(jsonValueSchema)
34
- ])), providerMetadataSchema = record(string(), record(string(), jsonValueSchema.optional())), textPartSchema = object$1({
35
- type: literal("text"),
36
- text: string(),
37
- providerOptions: providerMetadataSchema.optional()
38
- }), imagePartSchema = object$1({
39
- type: literal("image"),
40
- image: union([dataContentSchema, _instanceof(URL)]),
41
- mediaType: string().optional(),
42
- providerOptions: providerMetadataSchema.optional()
43
- }), filePartSchema = object$1({
44
- type: literal("file"),
45
- data: union([dataContentSchema, _instanceof(URL)]),
46
- filename: string().optional(),
47
- mediaType: string(),
48
- providerOptions: providerMetadataSchema.optional()
49
- }), reasoningPartSchema = object$1({
50
- type: literal("reasoning"),
51
- text: string(),
52
- providerOptions: providerMetadataSchema.optional()
53
- }), toolCallPartSchema = object$1({
54
- type: literal("tool-call"),
55
- toolCallId: string(),
56
- toolName: string(),
57
- input: unknown(),
58
- providerOptions: providerMetadataSchema.optional(),
59
- providerExecuted: boolean().optional()
60
- }), outputSchema = discriminatedUnion("type", [
61
- object$1({
62
- type: literal("text"),
63
- value: string(),
64
- providerOptions: providerMetadataSchema.optional()
65
- }),
66
- object$1({
67
- type: literal("json"),
68
- value: jsonValueSchema,
69
- providerOptions: providerMetadataSchema.optional()
70
- }),
71
- object$1({
72
- type: literal("execution-denied"),
73
- reason: string().optional(),
74
- providerOptions: providerMetadataSchema.optional()
75
- }),
76
- object$1({
77
- type: literal("error-text"),
78
- value: string(),
79
- providerOptions: providerMetadataSchema.optional()
80
- }),
81
- object$1({
82
- type: literal("error-json"),
83
- value: jsonValueSchema,
84
- providerOptions: providerMetadataSchema.optional()
85
- }),
86
- object$1({
87
- type: literal("content"),
88
- value: array$1(union([
89
- object$1({
90
- type: literal("text"),
91
- text: string(),
92
- providerOptions: providerMetadataSchema.optional()
93
- }),
94
- object$1({
95
- type: literal("media"),
96
- data: string(),
97
- mediaType: string()
98
- }),
99
- object$1({
100
- type: literal("file-data"),
101
- data: string(),
102
- mediaType: string(),
103
- filename: string().optional(),
104
- providerOptions: providerMetadataSchema.optional()
105
- }),
106
- object$1({
107
- type: literal("file-url"),
108
- url: string(),
109
- providerOptions: providerMetadataSchema.optional()
110
- }),
111
- object$1({
112
- type: literal("file-id"),
113
- fileId: union([string(), record(string(), string())]),
114
- providerOptions: providerMetadataSchema.optional()
115
- }),
116
- object$1({
117
- type: literal("image-data"),
118
- data: string(),
119
- mediaType: string(),
120
- providerOptions: providerMetadataSchema.optional()
121
- }),
122
- object$1({
123
- type: literal("image-url"),
124
- url: string(),
125
- providerOptions: providerMetadataSchema.optional()
126
- }),
127
- object$1({
128
- type: literal("image-file-id"),
129
- fileId: union([string(), record(string(), string())]),
130
- providerOptions: providerMetadataSchema.optional()
131
- }),
132
- object$1({
133
- type: literal("custom"),
134
- providerOptions: providerMetadataSchema.optional()
135
- })
136
- ]))
137
- })
138
- ]), toolResultPartSchema = object$1({
139
- type: literal("tool-result"),
140
- toolCallId: string(),
141
- toolName: string(),
142
- output: outputSchema,
143
- providerOptions: providerMetadataSchema.optional()
144
- }), toolApprovalRequestSchema = object$1({
145
- type: literal("tool-approval-request"),
146
- approvalId: string(),
147
- toolCallId: string()
148
- }), toolApprovalResponseSchema = object$1({
149
- type: literal("tool-approval-response"),
150
- approvalId: string(),
151
- approved: boolean(),
152
- reason: string().optional()
153
- });
154
- union([
155
- object$1({
156
- role: literal("system"),
157
- content: string(),
158
- providerOptions: providerMetadataSchema.optional()
159
- }),
160
- object$1({
161
- role: literal("user"),
162
- content: union([string(), array$1(union([
163
- textPartSchema,
164
- imagePartSchema,
165
- filePartSchema
166
- ]))]),
167
- providerOptions: providerMetadataSchema.optional()
168
- }),
169
- object$1({
170
- role: literal("assistant"),
171
- content: union([string(), array$1(union([
172
- textPartSchema,
173
- filePartSchema,
174
- reasoningPartSchema,
175
- toolCallPartSchema,
176
- toolResultPartSchema,
177
- toolApprovalRequestSchema
178
- ]))]),
179
- providerOptions: providerMetadataSchema.optional()
180
- }),
181
- object$1({
182
- role: literal("tool"),
183
- content: array$1(union([toolResultPartSchema, toolApprovalResponseSchema])),
184
- providerOptions: providerMetadataSchema.optional()
185
- })
186
- ]), __export({}, {
187
- array: () => array,
188
- choice: () => choice,
189
- json: () => json,
190
- object: () => object,
191
- text: () => text
192
- });
193
- function fixJson(_) {
194
- let K = ["ROOT"], q = -1, J = null;
195
- function Y(_, Y, X) {
196
- switch (_) {
197
- case "\"":
198
- q = Y, K.pop(), K.push(X), K.push("INSIDE_STRING");
199
- break;
200
- case "f":
201
- case "t":
202
- case "n":
203
- q = Y, J = Y, K.pop(), K.push(X), K.push("INSIDE_LITERAL");
204
- break;
205
- case "-":
206
- K.pop(), K.push(X), K.push("INSIDE_NUMBER");
207
- break;
208
- case "0":
209
- case "1":
210
- case "2":
211
- case "3":
212
- case "4":
213
- case "5":
214
- case "6":
215
- case "7":
216
- case "8":
217
- case "9":
218
- q = Y, K.pop(), K.push(X), K.push("INSIDE_NUMBER");
219
- break;
220
- case "{":
221
- q = Y, K.pop(), K.push(X), K.push("INSIDE_OBJECT_START");
222
- break;
223
- case "[":
224
- q = Y, K.pop(), K.push(X), K.push("INSIDE_ARRAY_START");
225
- break;
226
- }
227
- }
228
- function X(_, J) {
229
- switch (_) {
230
- case ",":
231
- K.pop(), K.push("INSIDE_OBJECT_AFTER_COMMA");
232
- break;
233
- case "}":
234
- q = J, K.pop();
235
- break;
236
- }
237
- }
238
- function Z(_, J) {
239
- switch (_) {
240
- case ",":
241
- K.pop(), K.push("INSIDE_ARRAY_AFTER_COMMA");
242
- break;
243
- case "]":
244
- q = J, K.pop();
245
- break;
246
- }
247
- }
248
- for (let Q = 0; Q < _.length; Q++) {
249
- let $ = _[Q];
250
- switch (K[K.length - 1]) {
251
- case "ROOT":
252
- Y($, Q, "FINISH");
253
- break;
254
- case "INSIDE_OBJECT_START":
255
- switch ($) {
256
- case "\"":
257
- K.pop(), K.push("INSIDE_OBJECT_KEY");
258
- break;
259
- case "}":
260
- q = Q, K.pop();
261
- break;
262
- }
263
- break;
264
- case "INSIDE_OBJECT_AFTER_COMMA":
265
- switch ($) {
266
- case "\"":
267
- K.pop(), K.push("INSIDE_OBJECT_KEY");
268
- break;
269
- }
270
- break;
271
- case "INSIDE_OBJECT_KEY":
272
- switch ($) {
273
- case "\"":
274
- K.pop(), K.push("INSIDE_OBJECT_AFTER_KEY");
275
- break;
276
- }
277
- break;
278
- case "INSIDE_OBJECT_AFTER_KEY":
279
- switch ($) {
280
- case ":":
281
- K.pop(), K.push("INSIDE_OBJECT_BEFORE_VALUE");
282
- break;
283
- }
284
- break;
285
- case "INSIDE_OBJECT_BEFORE_VALUE":
286
- Y($, Q, "INSIDE_OBJECT_AFTER_VALUE");
287
- break;
288
- case "INSIDE_OBJECT_AFTER_VALUE":
289
- X($, Q);
290
- break;
291
- case "INSIDE_STRING":
292
- switch ($) {
293
- case "\"":
294
- K.pop(), q = Q;
295
- break;
296
- case "\\":
297
- K.push("INSIDE_STRING_ESCAPE");
298
- break;
299
- default: q = Q;
300
- }
301
- break;
302
- case "INSIDE_ARRAY_START":
303
- switch ($) {
304
- case "]":
305
- q = Q, K.pop();
306
- break;
307
- default:
308
- q = Q, Y($, Q, "INSIDE_ARRAY_AFTER_VALUE");
309
- break;
310
- }
311
- break;
312
- case "INSIDE_ARRAY_AFTER_VALUE":
313
- switch ($) {
314
- case ",":
315
- K.pop(), K.push("INSIDE_ARRAY_AFTER_COMMA");
316
- break;
317
- case "]":
318
- q = Q, K.pop();
319
- break;
320
- default:
321
- q = Q;
322
- break;
323
- }
324
- break;
325
- case "INSIDE_ARRAY_AFTER_COMMA":
326
- Y($, Q, "INSIDE_ARRAY_AFTER_VALUE");
327
- break;
328
- case "INSIDE_STRING_ESCAPE":
329
- K.pop(), q = Q;
330
- break;
331
- case "INSIDE_NUMBER":
332
- switch ($) {
333
- case "0":
334
- case "1":
335
- case "2":
336
- case "3":
337
- case "4":
338
- case "5":
339
- case "6":
340
- case "7":
341
- case "8":
342
- case "9":
343
- q = Q;
344
- break;
345
- case "e":
346
- case "E":
347
- case "-":
348
- case ".": break;
349
- case ",":
350
- K.pop(), K[K.length - 1] === "INSIDE_ARRAY_AFTER_VALUE" && Z($, Q), K[K.length - 1] === "INSIDE_OBJECT_AFTER_VALUE" && X($, Q);
351
- break;
352
- case "}":
353
- K.pop(), K[K.length - 1] === "INSIDE_OBJECT_AFTER_VALUE" && X($, Q);
354
- break;
355
- case "]":
356
- K.pop(), K[K.length - 1] === "INSIDE_ARRAY_AFTER_VALUE" && Z($, Q);
357
- break;
358
- default:
359
- K.pop();
360
- break;
361
- }
362
- break;
363
- case "INSIDE_LITERAL": {
364
- let Y = _.substring(J, Q + 1);
365
- !"false".startsWith(Y) && !"true".startsWith(Y) && !"null".startsWith(Y) ? (K.pop(), K[K.length - 1] === "INSIDE_OBJECT_AFTER_VALUE" ? X($, Q) : K[K.length - 1] === "INSIDE_ARRAY_AFTER_VALUE" && Z($, Q)) : q = Q;
366
- break;
367
- }
368
- }
369
- }
370
- let Q = _.slice(0, q + 1);
371
- for (let q = K.length - 1; q >= 0; q--) switch (K[q]) {
372
- case "INSIDE_STRING":
373
- Q += "\"";
374
- break;
375
- case "INSIDE_OBJECT_KEY":
376
- case "INSIDE_OBJECT_AFTER_KEY":
377
- case "INSIDE_OBJECT_AFTER_COMMA":
378
- case "INSIDE_OBJECT_START":
379
- case "INSIDE_OBJECT_BEFORE_VALUE":
380
- case "INSIDE_OBJECT_AFTER_VALUE":
381
- Q += "}";
382
- break;
383
- case "INSIDE_ARRAY_START":
384
- case "INSIDE_ARRAY_AFTER_COMMA":
385
- case "INSIDE_ARRAY_AFTER_VALUE":
386
- Q += "]";
387
- break;
388
- case "INSIDE_LITERAL": {
389
- let K = _.substring(J, _.length);
390
- "true".startsWith(K) ? Q += "true".slice(K.length) : "false".startsWith(K) ? Q += "false".slice(K.length) : "null".startsWith(K) && (Q += "null".slice(K.length));
391
- }
392
- }
393
- return Q;
394
- }
395
- async function parsePartialJson(_) {
396
- if (_ === void 0) return {
397
- value: void 0,
398
- state: "undefined-input"
399
- };
400
- let K = await safeParseJSON({ text: _ });
401
- return K.success ? {
402
- value: K.value,
403
- state: "successful-parse"
404
- } : (K = await safeParseJSON({ text: fixJson(_) }), K.success ? {
405
- value: K.value,
406
- state: "repaired-parse"
407
- } : {
408
- value: void 0,
409
- state: "failed-parse"
410
- });
411
- }
412
- var text = () => ({
413
- name: "text",
414
- responseFormat: Promise.resolve({ type: "text" }),
415
- async parseCompleteOutput({ text: _ }) {
416
- return _;
417
- },
418
- async parsePartialOutput({ text: _ }) {
419
- return { partial: _ };
420
- },
421
- createElementStreamTransform() {}
422
- }), object = ({ schema: _, name: K, description: q }) => {
423
- let J = asSchema(_);
424
- return {
425
- name: "object",
426
- responseFormat: resolve(J.jsonSchema).then((_) => ({
427
- type: "json",
428
- schema: _,
429
- ...K != null && { name: K },
430
- ...q != null && { description: q }
431
- })),
432
- async parseCompleteOutput({ text: _ }, K) {
433
- let q = await safeParseJSON({ text: _ });
434
- if (!q.success) throw new NoObjectGeneratedError({
435
- message: "No object generated: could not parse the response.",
436
- cause: q.error,
437
- text: _,
438
- response: K.response,
439
- usage: K.usage,
440
- finishReason: K.finishReason
441
- });
442
- let Y = await safeValidateTypes({
443
- value: q.value,
444
- schema: J
445
- });
446
- if (!Y.success) throw new NoObjectGeneratedError({
447
- message: "No object generated: response did not match schema.",
448
- cause: Y.error,
449
- text: _,
450
- response: K.response,
451
- usage: K.usage,
452
- finishReason: K.finishReason
453
- });
454
- return Y.value;
455
- },
456
- async parsePartialOutput({ text: _ }) {
457
- let K = await parsePartialJson(_);
458
- switch (K.state) {
459
- case "failed-parse":
460
- case "undefined-input": return;
461
- case "repaired-parse":
462
- case "successful-parse": return { partial: K.value };
463
- }
464
- },
465
- createElementStreamTransform() {}
466
- };
467
- }, array = ({ element: _, name: K, description: J }) => {
468
- let Y = asSchema(_);
469
- return {
470
- name: "array",
471
- responseFormat: resolve(Y.jsonSchema).then((_) => {
472
- let { $schema: q, ...Y } = _;
473
- return {
474
- type: "json",
475
- schema: {
476
- $schema: "http://json-schema.org/draft-07/schema#",
477
- type: "object",
478
- properties: { elements: {
479
- type: "array",
480
- items: Y
481
- } },
482
- required: ["elements"],
483
- additionalProperties: !1
484
- },
485
- ...K != null && { name: K },
486
- ...J != null && { description: J }
487
- };
488
- }),
489
- async parseCompleteOutput({ text: _ }, K) {
490
- let J = await safeParseJSON({ text: _ });
491
- if (!J.success) throw new NoObjectGeneratedError({
492
- message: "No object generated: could not parse the response.",
493
- cause: J.error,
494
- text: _,
495
- response: K.response,
496
- usage: K.usage,
497
- finishReason: K.finishReason
498
- });
499
- let X = J.value;
500
- if (typeof X != "object" || !X || !("elements" in X) || !Array.isArray(X.elements)) throw new NoObjectGeneratedError({
501
- message: "No object generated: response did not match schema.",
502
- cause: new TypeValidationError({
503
- value: X,
504
- cause: "response must be an object with an elements array"
505
- }),
506
- text: _,
507
- response: K.response,
508
- usage: K.usage,
509
- finishReason: K.finishReason
510
- });
511
- for (let q of X.elements) {
512
- let J = await safeValidateTypes({
513
- value: q,
514
- schema: Y
515
- });
516
- if (!J.success) throw new NoObjectGeneratedError({
517
- message: "No object generated: response did not match schema.",
518
- cause: J.error,
519
- text: _,
520
- response: K.response,
521
- usage: K.usage,
522
- finishReason: K.finishReason
523
- });
524
- }
525
- return X.elements;
526
- },
527
- async parsePartialOutput({ text: _ }) {
528
- let K = await parsePartialJson(_);
529
- switch (K.state) {
530
- case "failed-parse":
531
- case "undefined-input": return;
532
- case "repaired-parse":
533
- case "successful-parse": {
534
- let _ = K.value;
535
- if (typeof _ != "object" || !_ || !("elements" in _) || !Array.isArray(_.elements)) return;
536
- let q = K.state === "repaired-parse" && _.elements.length > 0 ? _.elements.slice(0, -1) : _.elements, J = [];
537
- for (let _ of q) {
538
- let K = await safeValidateTypes({
539
- value: _,
540
- schema: Y
541
- });
542
- K.success && J.push(K.value);
543
- }
544
- return { partial: J };
545
- }
546
- }
547
- },
548
- createElementStreamTransform() {
549
- let _ = 0;
550
- return new TransformStream({ transform({ partialOutput: K }, q) {
551
- if (K != null) for (; _ < K.length; _++) q.enqueue(K[_]);
552
- } });
553
- }
554
- };
555
- }, choice = ({ options: _, name: K, description: J }) => ({
556
- name: "choice",
557
- responseFormat: Promise.resolve({
558
- type: "json",
559
- schema: {
560
- $schema: "http://json-schema.org/draft-07/schema#",
561
- type: "object",
562
- properties: { result: {
563
- type: "string",
564
- enum: _
565
- } },
566
- required: ["result"],
567
- additionalProperties: !1
568
- },
569
- ...K != null && { name: K },
570
- ...J != null && { description: J }
571
- }),
572
- async parseCompleteOutput({ text: K }, J) {
573
- let Y = await safeParseJSON({ text: K });
574
- if (!Y.success) throw new NoObjectGeneratedError({
575
- message: "No object generated: could not parse the response.",
576
- cause: Y.error,
577
- text: K,
578
- response: J.response,
579
- usage: J.usage,
580
- finishReason: J.finishReason
581
- });
582
- let X = Y.value;
583
- if (typeof X != "object" || !X || !("result" in X) || typeof X.result != "string" || !_.includes(X.result)) throw new NoObjectGeneratedError({
584
- message: "No object generated: response did not match schema.",
585
- cause: new TypeValidationError({
586
- value: X,
587
- cause: "response must be an object that contains a choice value."
588
- }),
589
- text: K,
590
- response: J.response,
591
- usage: J.usage,
592
- finishReason: J.finishReason
593
- });
594
- return X.result;
595
- },
596
- async parsePartialOutput({ text: K }) {
597
- let q = await parsePartialJson(K);
598
- switch (q.state) {
599
- case "failed-parse":
600
- case "undefined-input": return;
601
- case "repaired-parse":
602
- case "successful-parse": {
603
- let K = q.value;
604
- if (typeof K != "object" || !K || !("result" in K) || typeof K.result != "string") return;
605
- let J = _.filter((_) => _.startsWith(K.result));
606
- return q.state === "successful-parse" ? J.includes(K.result) ? { partial: K.result } : void 0 : J.length === 1 ? { partial: J[0] } : void 0;
607
- }
608
- }
609
- },
610
- createElementStreamTransform() {}
611
- }), json = ({ name: _, description: K } = {}) => ({
612
- name: "json",
613
- responseFormat: Promise.resolve({
614
- type: "json",
615
- ..._ != null && { name: _ },
616
- ...K != null && { description: K }
617
- }),
618
- async parseCompleteOutput({ text: _ }, K) {
619
- let q = await safeParseJSON({ text: _ });
620
- if (!q.success) throw new NoObjectGeneratedError({
621
- message: "No object generated: could not parse the response.",
622
- cause: q.error,
623
- text: _,
624
- response: K.response,
625
- usage: K.usage,
626
- finishReason: K.finishReason
627
- });
628
- return q.value;
629
- },
630
- async parsePartialOutput({ text: _ }) {
631
- let K = await parsePartialJson(_);
632
- switch (K.state) {
633
- case "failed-parse":
634
- case "undefined-input": return;
635
- case "repaired-parse":
636
- case "successful-parse": return K.value === void 0 ? void 0 : { partial: K.value };
637
- }
638
- },
639
- createElementStreamTransform() {}
640
- });
641
- createIdGenerator({
642
- prefix: "aitxt",
643
- size: 24
644
- }), lazySchema(() => zodSchema(union([
645
- strictObject({
646
- type: literal("text-start"),
647
- id: string(),
648
- providerMetadata: providerMetadataSchema.optional()
649
- }),
650
- strictObject({
651
- type: literal("text-delta"),
652
- id: string(),
653
- delta: string(),
654
- providerMetadata: providerMetadataSchema.optional()
655
- }),
656
- strictObject({
657
- type: literal("text-end"),
658
- id: string(),
659
- providerMetadata: providerMetadataSchema.optional()
660
- }),
661
- strictObject({
662
- type: literal("error"),
663
- errorText: string()
664
- }),
665
- strictObject({
666
- type: literal("tool-input-start"),
667
- toolCallId: string(),
668
- toolName: string(),
669
- providerExecuted: boolean().optional(),
670
- providerMetadata: providerMetadataSchema.optional(),
671
- dynamic: boolean().optional(),
672
- title: string().optional()
673
- }),
674
- strictObject({
675
- type: literal("tool-input-delta"),
676
- toolCallId: string(),
677
- inputTextDelta: string()
678
- }),
679
- strictObject({
680
- type: literal("tool-input-available"),
681
- toolCallId: string(),
682
- toolName: string(),
683
- input: unknown(),
684
- providerExecuted: boolean().optional(),
685
- providerMetadata: providerMetadataSchema.optional(),
686
- dynamic: boolean().optional(),
687
- title: string().optional()
688
- }),
689
- strictObject({
690
- type: literal("tool-input-error"),
691
- toolCallId: string(),
692
- toolName: string(),
693
- input: unknown(),
694
- providerExecuted: boolean().optional(),
695
- providerMetadata: providerMetadataSchema.optional(),
696
- dynamic: boolean().optional(),
697
- errorText: string(),
698
- title: string().optional()
699
- }),
700
- strictObject({
701
- type: literal("tool-approval-request"),
702
- approvalId: string(),
703
- toolCallId: string()
704
- }),
705
- strictObject({
706
- type: literal("tool-output-available"),
707
- toolCallId: string(),
708
- output: unknown(),
709
- providerExecuted: boolean().optional(),
710
- dynamic: boolean().optional(),
711
- preliminary: boolean().optional()
712
- }),
713
- strictObject({
714
- type: literal("tool-output-error"),
715
- toolCallId: string(),
716
- errorText: string(),
717
- providerExecuted: boolean().optional(),
718
- dynamic: boolean().optional()
719
- }),
720
- strictObject({
721
- type: literal("tool-output-denied"),
722
- toolCallId: string()
723
- }),
724
- strictObject({
725
- type: literal("reasoning-start"),
726
- id: string(),
727
- providerMetadata: providerMetadataSchema.optional()
728
- }),
729
- strictObject({
730
- type: literal("reasoning-delta"),
731
- id: string(),
732
- delta: string(),
733
- providerMetadata: providerMetadataSchema.optional()
734
- }),
735
- strictObject({
736
- type: literal("reasoning-end"),
737
- id: string(),
738
- providerMetadata: providerMetadataSchema.optional()
739
- }),
740
- strictObject({
741
- type: literal("source-url"),
742
- sourceId: string(),
743
- url: string(),
744
- title: string().optional(),
745
- providerMetadata: providerMetadataSchema.optional()
746
- }),
747
- strictObject({
748
- type: literal("source-document"),
749
- sourceId: string(),
750
- mediaType: string(),
751
- title: string(),
752
- filename: string().optional(),
753
- providerMetadata: providerMetadataSchema.optional()
754
- }),
755
- strictObject({
756
- type: literal("file"),
757
- url: string(),
758
- mediaType: string(),
759
- providerMetadata: providerMetadataSchema.optional()
760
- }),
761
- strictObject({
762
- type: custom((_) => typeof _ == "string" && _.startsWith("data-"), { message: "Type must start with \"data-\"" }),
763
- id: string().optional(),
764
- data: unknown(),
765
- transient: boolean().optional()
766
- }),
767
- strictObject({ type: literal("start-step") }),
768
- strictObject({ type: literal("finish-step") }),
769
- strictObject({
770
- type: literal("start"),
771
- messageId: string().optional(),
772
- messageMetadata: unknown().optional()
773
- }),
774
- strictObject({
775
- type: literal("finish"),
776
- finishReason: _enum([
777
- "stop",
778
- "length",
779
- "content-filter",
780
- "tool-calls",
781
- "error",
782
- "other"
783
- ]).optional(),
784
- messageMetadata: unknown().optional()
785
- }),
786
- strictObject({
787
- type: literal("abort"),
788
- reason: string().optional()
789
- }),
790
- strictObject({
791
- type: literal("message-metadata"),
792
- messageMetadata: unknown()
793
- })
794
- ])));
795
- function isTextUIPart(_) {
796
- return _.type === "text";
797
- }
798
- function isReasoningUIPart(_) {
799
- return _.type === "reasoning";
800
- }
801
- function isStaticToolUIPart(_) {
802
- return _.type.startsWith("tool-");
803
- }
804
- function isDynamicToolUIPart(_) {
805
- return _.type === "dynamic-tool";
806
- }
807
- function isToolUIPart(_) {
808
- return isStaticToolUIPart(_) || isDynamicToolUIPart(_);
809
- }
810
- var isToolOrDynamicToolUIPart = isToolUIPart;
811
- function getStaticToolName(_) {
812
- return _.type.split("-").slice(1).join("-");
813
- }
814
- function getToolName(_) {
815
- return isDynamicToolUIPart(_) ? _.toolName : getStaticToolName(_);
816
- }
817
- var getToolOrDynamicToolName = getToolName;
818
- createIdGenerator({
819
- prefix: "aitxt",
820
- size: 24
821
- }), lazySchema(() => zodSchema(array$1(object$1({
822
- id: string(),
823
- role: _enum([
824
- "system",
825
- "user",
826
- "assistant"
827
- ]),
828
- metadata: unknown().optional(),
829
- parts: array$1(union([
830
- object$1({
831
- type: literal("text"),
832
- text: string(),
833
- state: _enum(["streaming", "done"]).optional(),
834
- providerMetadata: providerMetadataSchema.optional()
835
- }),
836
- object$1({
837
- type: literal("reasoning"),
838
- text: string(),
839
- state: _enum(["streaming", "done"]).optional(),
840
- providerMetadata: providerMetadataSchema.optional()
841
- }),
842
- object$1({
843
- type: literal("source-url"),
844
- sourceId: string(),
845
- url: string(),
846
- title: string().optional(),
847
- providerMetadata: providerMetadataSchema.optional()
848
- }),
849
- object$1({
850
- type: literal("source-document"),
851
- sourceId: string(),
852
- mediaType: string(),
853
- title: string(),
854
- filename: string().optional(),
855
- providerMetadata: providerMetadataSchema.optional()
856
- }),
857
- object$1({
858
- type: literal("file"),
859
- mediaType: string(),
860
- filename: string().optional(),
861
- url: string(),
862
- providerMetadata: providerMetadataSchema.optional()
863
- }),
864
- object$1({ type: literal("step-start") }),
865
- object$1({
866
- type: string().startsWith("data-"),
867
- id: string().optional(),
868
- data: unknown()
869
- }),
870
- object$1({
871
- type: literal("dynamic-tool"),
872
- toolName: string(),
873
- toolCallId: string(),
874
- state: literal("input-streaming"),
875
- input: unknown().optional(),
876
- providerExecuted: boolean().optional(),
877
- callProviderMetadata: providerMetadataSchema.optional(),
878
- output: never().optional(),
879
- errorText: never().optional(),
880
- approval: never().optional()
881
- }),
882
- object$1({
883
- type: literal("dynamic-tool"),
884
- toolName: string(),
885
- toolCallId: string(),
886
- state: literal("input-available"),
887
- input: unknown(),
888
- providerExecuted: boolean().optional(),
889
- output: never().optional(),
890
- errorText: never().optional(),
891
- callProviderMetadata: providerMetadataSchema.optional(),
892
- approval: never().optional()
893
- }),
894
- object$1({
895
- type: literal("dynamic-tool"),
896
- toolName: string(),
897
- toolCallId: string(),
898
- state: literal("approval-requested"),
899
- input: unknown(),
900
- providerExecuted: boolean().optional(),
901
- output: never().optional(),
902
- errorText: never().optional(),
903
- callProviderMetadata: providerMetadataSchema.optional(),
904
- approval: object$1({
905
- id: string(),
906
- approved: never().optional(),
907
- reason: never().optional()
908
- })
909
- }),
910
- object$1({
911
- type: literal("dynamic-tool"),
912
- toolName: string(),
913
- toolCallId: string(),
914
- state: literal("approval-responded"),
915
- input: unknown(),
916
- providerExecuted: boolean().optional(),
917
- output: never().optional(),
918
- errorText: never().optional(),
919
- callProviderMetadata: providerMetadataSchema.optional(),
920
- approval: object$1({
921
- id: string(),
922
- approved: boolean(),
923
- reason: string().optional()
924
- })
925
- }),
926
- object$1({
927
- type: literal("dynamic-tool"),
928
- toolName: string(),
929
- toolCallId: string(),
930
- state: literal("output-available"),
931
- input: unknown(),
932
- providerExecuted: boolean().optional(),
933
- output: unknown(),
934
- errorText: never().optional(),
935
- callProviderMetadata: providerMetadataSchema.optional(),
936
- preliminary: boolean().optional(),
937
- approval: object$1({
938
- id: string(),
939
- approved: literal(!0),
940
- reason: string().optional()
941
- }).optional()
942
- }),
943
- object$1({
944
- type: literal("dynamic-tool"),
945
- toolName: string(),
946
- toolCallId: string(),
947
- state: literal("output-error"),
948
- input: unknown(),
949
- rawInput: unknown().optional(),
950
- providerExecuted: boolean().optional(),
951
- output: never().optional(),
952
- errorText: string(),
953
- callProviderMetadata: providerMetadataSchema.optional(),
954
- approval: object$1({
955
- id: string(),
956
- approved: literal(!0),
957
- reason: string().optional()
958
- }).optional()
959
- }),
960
- object$1({
961
- type: literal("dynamic-tool"),
962
- toolName: string(),
963
- toolCallId: string(),
964
- state: literal("output-denied"),
965
- input: unknown(),
966
- providerExecuted: boolean().optional(),
967
- output: never().optional(),
968
- errorText: never().optional(),
969
- callProviderMetadata: providerMetadataSchema.optional(),
970
- approval: object$1({
971
- id: string(),
972
- approved: literal(!1),
973
- reason: string().optional()
974
- })
975
- }),
976
- object$1({
977
- type: string().startsWith("tool-"),
978
- toolCallId: string(),
979
- state: literal("input-streaming"),
980
- providerExecuted: boolean().optional(),
981
- callProviderMetadata: providerMetadataSchema.optional(),
982
- input: unknown().optional(),
983
- output: never().optional(),
984
- errorText: never().optional(),
985
- approval: never().optional()
986
- }),
987
- object$1({
988
- type: string().startsWith("tool-"),
989
- toolCallId: string(),
990
- state: literal("input-available"),
991
- providerExecuted: boolean().optional(),
992
- input: unknown(),
993
- output: never().optional(),
994
- errorText: never().optional(),
995
- callProviderMetadata: providerMetadataSchema.optional(),
996
- approval: never().optional()
997
- }),
998
- object$1({
999
- type: string().startsWith("tool-"),
1000
- toolCallId: string(),
1001
- state: literal("approval-requested"),
1002
- input: unknown(),
1003
- providerExecuted: boolean().optional(),
1004
- output: never().optional(),
1005
- errorText: never().optional(),
1006
- callProviderMetadata: providerMetadataSchema.optional(),
1007
- approval: object$1({
1008
- id: string(),
1009
- approved: never().optional(),
1010
- reason: never().optional()
1011
- })
1012
- }),
1013
- object$1({
1014
- type: string().startsWith("tool-"),
1015
- toolCallId: string(),
1016
- state: literal("approval-responded"),
1017
- input: unknown(),
1018
- providerExecuted: boolean().optional(),
1019
- output: never().optional(),
1020
- errorText: never().optional(),
1021
- callProviderMetadata: providerMetadataSchema.optional(),
1022
- approval: object$1({
1023
- id: string(),
1024
- approved: boolean(),
1025
- reason: string().optional()
1026
- })
1027
- }),
1028
- object$1({
1029
- type: string().startsWith("tool-"),
1030
- toolCallId: string(),
1031
- state: literal("output-available"),
1032
- providerExecuted: boolean().optional(),
1033
- input: unknown(),
1034
- output: unknown(),
1035
- errorText: never().optional(),
1036
- callProviderMetadata: providerMetadataSchema.optional(),
1037
- preliminary: boolean().optional(),
1038
- approval: object$1({
1039
- id: string(),
1040
- approved: literal(!0),
1041
- reason: string().optional()
1042
- }).optional()
1043
- }),
1044
- object$1({
1045
- type: string().startsWith("tool-"),
1046
- toolCallId: string(),
1047
- state: literal("output-error"),
1048
- providerExecuted: boolean().optional(),
1049
- input: unknown(),
1050
- rawInput: unknown().optional(),
1051
- output: never().optional(),
1052
- errorText: string(),
1053
- callProviderMetadata: providerMetadataSchema.optional(),
1054
- approval: object$1({
1055
- id: string(),
1056
- approved: literal(!0),
1057
- reason: string().optional()
1058
- }).optional()
1059
- }),
1060
- object$1({
1061
- type: string().startsWith("tool-"),
1062
- toolCallId: string(),
1063
- state: literal("output-denied"),
1064
- providerExecuted: boolean().optional(),
1065
- input: unknown(),
1066
- output: never().optional(),
1067
- errorText: never().optional(),
1068
- callProviderMetadata: providerMetadataSchema.optional(),
1069
- approval: object$1({
1070
- id: string(),
1071
- approved: literal(!1),
1072
- reason: string().optional()
1073
- })
1074
- })
1075
- ])).nonempty("Message must contain at least one part")
1076
- })).nonempty("Messages array must not be empty"))), createIdGenerator({
1077
- prefix: "aiobj",
1078
- size: 24
1079
- }), createIdGenerator({
1080
- prefix: "aiobj",
1081
- size: 24
1082
- });
1083
- export { getToolOrDynamicToolName, isReasoningUIPart, isTextUIPart, isToolOrDynamicToolUIPart };