@superblocksteam/clark 2.0.101-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE.txt ADDED
@@ -0,0 +1,87 @@
1
+ Superblocks Community Software License
2
+
3
+ This Superblocks Community License Agreement (the “Agreement”) sets forth the terms on which DayZero
4
+ Software, Inc. d/b/a Superblocks (“Superblocks”) makes available certain software made available by Superblocks
5
+ under this Agreement (the “Software”). BY INSTALLING, DOWNLOADING, ACCESSING, USING OR
6
+ DISTRIBUTING ANY OF THE SOFTWARE, YOU AGREE TO THE TERMS AND CONDITIONS OF THIS
7
+ AGREEMENT.IF YOU DO NOT AGREE TO SUCH TERMS AND CONDITIONS, YOU MUST NOT USE THE
8
+ SOFTWARE. IF YOU ARE RECEIVING THE SOFTWARE ON BEHALF OF A LEGAL ENTITY, YOU
9
+ REPRESENT AND WARRANT THAT YOU HAVE THE ACTUAL AUTHORITY TO AGREE TO THE
10
+ TERMS AND CONDITIONS OF THIS AGREEMENT ON BEHALF OF SUCH ENTITY. “Licensee” means you,
11
+ an individual, or the entity on whose behalf you are receiving the Software.
12
+
13
+ 1. LICENSE GRANT AND CONDITIONS.
14
+
15
+ 1.1 License. Subject to the terms and conditions of this Agreement, Superblocks hereby grants to Licensee a
16
+ non-exclusive, royalty-free, worldwide, non-transferable, non-sublicenseable license during the term of this
17
+ Agreement to: (a) use the Software; (b) prepare modifications and derivative works of the Software; (c)
18
+ distribute the Software (including without limitation in source code or object code form); and (d) reproduce
19
+ copies of the Software (the “License”). Licensee is not granted the right to, and Licensee shall not, exercise the
20
+ License for an Excluded Purpose. For purposes of this Agreement, “Excluded Purpose” means making
21
+ available any software-as-a-service, platform-as-a-service, infrastructure-as-a-service or other similar online
22
+ service that competes with Superblocks’ products or services.
23
+
24
+ 1.2 Conditions. In consideration of the License, Licensee’s distribution of the Software is subject to the
25
+ following conditions:
26
+
27
+ a. Licensee must cause any Software modified by Licensee to carry prominent notices stating that Licensee
28
+ modified the Software.
29
+ b. On each Software copy, Licensee shall reproduce and not remove or alter all Superblocks or third party
30
+ copyright or other proprietary notices contained in the Software, and Licensee must provide the notice
31
+ below with each copy.
32
+
33
+ “This software is made available by DayZero Software, Inc. d/b/a Superblocks, under the terms of the
34
+ Superblocks Community License Agreement. © 2022 DayZero Software, Inc.”
35
+
36
+ 1.3 Licensee Modifications. Licensee may add its own copyright notices to modifications made by Licensee
37
+ and may provide additional or different license terms and conditions for use, reproduction, or distribution of
38
+ Licensee’s modifications. While redistributing the Software or modifications thereof, Licensee may choose to
39
+ offer, for a fee or free of charge, support, warranty, indemnity, or other obligations. Licensee, and not
40
+ Superblocks, will be responsible for any such obligations.
41
+
42
+ 1.4 No Sublicensing. The License does not include the right to sublicense the Software, however, each recipient
43
+ to which Licensee provides the Software may exercise the Licenses so long as such recipient agrees to the terms
44
+ and conditions of this Agreement.
45
+
46
+ 2. TERM AND TERMINATION. This Agreement will continue unless and until earlier terminated as set forth
47
+ herein. If Licensee breaches any of its conditions or obligations under this Agreement, this Agreement will
48
+ terminate automatically and the License will terminate automatically and permanently.
49
+
50
+ 3. INTELLECTUAL PROPERTY. As between the parties, Superblocks will retain all right, title, and interest in
51
+ the Software, and all intellectual property rights therein. Superblocks hereby reserves all rights not expressly
52
+ granted to Licensee in this Agreement. Superblocks hereby reserves all rights in its trademarks and service
53
+ marks, and no licenses therein are granted in this Agreement.
54
+
55
+ 4. DISCLAIMER. SUPERBLOCKS HEREBY DISCLAIMS ANY AND ALL WARRANTIES AND
56
+ CONDITIONS, EXPRESS, IMPLIED, STATUTORY, OR OTHERWISE, AND SPECIFICALLY
57
+ DISCLAIMS ANY WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR
58
+ PURPOSE, WITH RESPECT TO THE SOFTWARE.
59
+
60
+ 5. LIMITATION OF LIABILITY. SUPERBLOCKS WILL NOT BE LIABLE FOR ANY DAMAGES OF
61
+ ANY KIND, INCLUDING BUT NOT LIMITED TO, LOST PROFITS OR ANY CONSEQUENTIAL,
62
+ SPECIAL, INCIDENTAL, INDIRECT, OR DIRECT DAMAGES, HOWEVER CAUSED AND ON ANY
63
+ THEORY OF LIABILITY, ARISING OUT OF THIS AGREEMENT. THE FOREGOING SHALL APPLY TO
64
+ THE EXTENT PERMITTED BY APPLICABLE LAW.
65
+
66
+ 6. GENERAL.
67
+
68
+ 6.1  Governing Law. This Agreement will be governed by and interpreted in accordance with the laws of the
69
+ state of California, without reference to its conflict of laws principles. If Licensee is located within the United
70
+ States, all disputes arising out of this Agreement are subject to the exclusive jurisdiction of courts located in San
71
+ Mateo County, California. USA. If Licensee is located outside of the United States, any dispute, controversy or
72
+ claim arising out of or relating to this Agreement will be referred to and finally determined by arbitration in
73
+ accordance with the JAMS International Arbitration Rules. The tribunal will consist of one neutral arbitrator.
74
+ The place of arbitration will be Palo Alto, California. The language to be used in the arbitral proceedings will be
75
+ English. Judgment upon the award rendered by the arbitrator may be entered in any court having jurisdiction
76
+ thereof.
77
+
78
+ 6.2.  Assignment. Licensee may not assign its rights under this Agreement to any third party. Superblocks may
79
+ freely assign its rights under this Agreement to any third party.
80
+
81
+ 6.3.  Other.  This Agreement is the entire agreement between the parties regarding the subject matter hereof.
82
+ No amendment or modification of this Agreement will be valid or binding upon the parties unless made in
83
+ writing and signed by the duly authorized representatives of both parties. In the event that any provision,
84
+ including without limitation any condition, of this Agreement is held to be unenforceable, this Agreement and
85
+ all licenses and rights granted hereunder will immediately terminate. Waiver by Superblocks of a breach of any
86
+ provision of this Agreement or the failure by Superblocks to exercise any right hereunder will not be construed
87
+ as a waiver of any subsequent breach of that right or as a waiver of any other right.
@@ -0,0 +1,11 @@
1
+ export declare enum ClarkChatModelId {
2
+ CLARK_CLASSIFY = "clark-classify",
3
+ CLARK_INTENT = "clark-intent",
4
+ CLARK_GENERATE = "clark-generate",
5
+ CLARK_SMALL_EDIT = "clark-small-edit",
6
+ CLARK_LARGE_EDIT = "clark-large-edit",
7
+ CLARK_EXPLAIN = "clark-explain",
8
+ CLARK_FAST = "clark-fast",
9
+ CLARK_MEDIUM = "clark-medium"
10
+ }
11
+ //# sourceMappingURL=clark-chat-settings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clark-chat-settings.d.ts","sourceRoot":"","sources":["../src/clark-chat-settings.ts"],"names":[],"mappings":"AAAA,oBAAY,gBAAgB;IAC1B,cAAc,mBAAmB;IACjC,YAAY,iBAAiB;IAC7B,cAAc,mBAAmB;IACjC,gBAAgB,qBAAqB;IACrC,gBAAgB,qBAAqB;IACrC,aAAa,kBAAkB;IAC/B,UAAU,eAAe;IACzB,YAAY,iBAAiB;CAC9B"}
@@ -0,0 +1,12 @@
1
+ export var ClarkChatModelId;
2
+ (function (ClarkChatModelId) {
3
+ ClarkChatModelId["CLARK_CLASSIFY"] = "clark-classify";
4
+ ClarkChatModelId["CLARK_INTENT"] = "clark-intent";
5
+ ClarkChatModelId["CLARK_GENERATE"] = "clark-generate";
6
+ ClarkChatModelId["CLARK_SMALL_EDIT"] = "clark-small-edit";
7
+ ClarkChatModelId["CLARK_LARGE_EDIT"] = "clark-large-edit";
8
+ ClarkChatModelId["CLARK_EXPLAIN"] = "clark-explain";
9
+ ClarkChatModelId["CLARK_FAST"] = "clark-fast";
10
+ ClarkChatModelId["CLARK_MEDIUM"] = "clark-medium";
11
+ })(ClarkChatModelId || (ClarkChatModelId = {}));
12
+ //# sourceMappingURL=clark-chat-settings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clark-chat-settings.js","sourceRoot":"","sources":["../src/clark-chat-settings.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,gBASX;AATD,WAAY,gBAAgB;IAC1B,qDAAiC,CAAA;IACjC,iDAA6B,CAAA;IAC7B,qDAAiC,CAAA;IACjC,yDAAqC,CAAA;IACrC,yDAAqC,CAAA;IACrC,mDAA+B,CAAA;IAC/B,6CAAyB,CAAA;IACzB,iDAA6B,CAAA;AAC/B,CAAC,EATW,gBAAgB,KAAhB,gBAAgB,QAS3B"}
@@ -0,0 +1,16 @@
1
+ import { z } from "zod/v4";
2
+ declare const clarkErrorDataSchema: z.ZodObject<{
3
+ responseMetadata: z.ZodObject<{
4
+ status: z.ZodNumber;
5
+ message: z.ZodString;
6
+ success: z.ZodBoolean;
7
+ error: z.ZodObject<{
8
+ code: z.ZodString;
9
+ message: z.ZodString;
10
+ }, z.core.$strip>;
11
+ }, z.core.$strip>;
12
+ }, z.core.$strip>;
13
+ export type ClarkErrorData = z.infer<typeof clarkErrorDataSchema>;
14
+ export declare const clarkFailedResponseHandler: import("@ai-sdk/provider-utils").ResponseHandler<import("ai").APICallError>;
15
+ export {};
16
+ //# sourceMappingURL=clark-error-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clark-error-handler.d.ts","sourceRoot":"","sources":["../src/clark-error-handler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAE3B,QAAA,MAAM,oBAAoB;;;;;;;;;;iBAUxB,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,eAAO,MAAM,0BAA0B,6EAGrC,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { createJsonErrorResponseHandler } from "@ai-sdk/provider-utils";
2
+ import { z } from "zod/v4";
3
+ const clarkErrorDataSchema = z.object({
4
+ responseMetadata: z.object({
5
+ status: z.number(),
6
+ message: z.string(),
7
+ success: z.boolean(),
8
+ error: z.object({
9
+ code: z.string(),
10
+ message: z.string(),
11
+ }),
12
+ }),
13
+ });
14
+ export const clarkFailedResponseHandler = createJsonErrorResponseHandler({
15
+ errorSchema: clarkErrorDataSchema,
16
+ errorToMessage: (data) => data.responseMetadata.error.message,
17
+ });
18
+ //# sourceMappingURL=clark-error-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clark-error-handler.js","sourceRoot":"","sources":["../src/clark-error-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAE3B,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,gBAAgB,EAAE,CAAC,CAAC,MAAM,CAAC;QACzB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;QAClB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;QACnB,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;QACpB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;YACd,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;YAChB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;SACpB,CAAC;KACH,CAAC;CACH,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,0BAA0B,GAAG,8BAA8B,CAAC;IACvE,WAAW,EAAE,oBAAoB;IACjC,cAAc,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,OAAO;CAC9D,CAAC,CAAC"}
@@ -0,0 +1,53 @@
1
+ import { type LanguageModelV3, type LanguageModelV3CallOptions, type SharedV3Warning } from "@ai-sdk/provider";
2
+ import { postJsonToApi } from "@ai-sdk/provider-utils";
3
+ import type { ClarkChatModelId } from "./clark-chat-settings.js";
4
+ import type { FetchFunction } from "@ai-sdk/provider-utils";
5
+ type ClarkChatConfig = {
6
+ provider: string;
7
+ baseURL: string;
8
+ headers: () => Record<string, string | undefined>;
9
+ fetch?: FetchFunction;
10
+ };
11
+ interface ClarkRequestBuilder {
12
+ build(options: LanguageModelV3CallOptions, modelId: ClarkChatModelId): Promise<{
13
+ args: Record<string, unknown>;
14
+ warnings: SharedV3Warning[];
15
+ }>;
16
+ }
17
+ type ClarkFailedResponseHandler = Parameters<typeof postJsonToApi<Record<string, unknown>>>[0]["failedResponseHandler"];
18
+ type ClarkSuccessResponseHandler<TResponse> = Parameters<typeof postJsonToApi<TResponse>>[0]["successfulResponseHandler"];
19
+ interface ClarkTransport {
20
+ postJson<TResponse>({ url, headers, body, failedResponseHandler, successfulResponseHandler, abortSignal, fetch, }: {
21
+ url: string;
22
+ headers: Record<string, string | undefined>;
23
+ body: Record<string, unknown>;
24
+ failedResponseHandler: ClarkFailedResponseHandler;
25
+ successfulResponseHandler: ClarkSuccessResponseHandler<TResponse>;
26
+ abortSignal?: AbortSignal;
27
+ fetch?: FetchFunction;
28
+ }): Promise<{
29
+ responseHeaders: Record<string, string>;
30
+ value: TResponse;
31
+ }>;
32
+ }
33
+ interface ClarkLanguageModelDependencies {
34
+ requestBuilder?: ClarkRequestBuilder;
35
+ transport?: ClarkTransport;
36
+ }
37
+ export declare class ClarkChatLanguageModel implements LanguageModelV3 {
38
+ readonly specificationVersion = "v3";
39
+ readonly defaultObjectGenerationMode = "json";
40
+ readonly supportsImageUrls = false;
41
+ readonly supportedUrls: Record<string, RegExp[]>;
42
+ readonly modelId: ClarkChatModelId;
43
+ private readonly config;
44
+ private readonly requestBuilder;
45
+ private readonly transport;
46
+ constructor(modelId: ClarkChatModelId, config: ClarkChatConfig, dependencies?: ClarkLanguageModelDependencies);
47
+ get provider(): string;
48
+ supportsUrl(url: URL): boolean;
49
+ doGenerate(options: Parameters<LanguageModelV3["doGenerate"]>[0]): Promise<Awaited<ReturnType<LanguageModelV3["doGenerate"]>>>;
50
+ doStream(options: Parameters<LanguageModelV3["doStream"]>[0]): Promise<Awaited<ReturnType<LanguageModelV3["doStream"]>>>;
51
+ }
52
+ export {};
53
+ //# sourceMappingURL=clark-language-model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clark-language-model.d.ts","sourceRoot":"","sources":["../src/clark-language-model.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,600 @@
1
+ import { EmptyResponseBodyError, JSONParseError, } from "@ai-sdk/provider";
2
+ import { combineHeaders, extractResponseHeaders, postJsonToApi, } from "@ai-sdk/provider-utils";
3
+ import { EventSourceParserStream, } from "eventsource-parser/stream";
4
+ import { clarkFailedResponseHandler } from "./clark-error-handler.js";
5
+ function toFinishReason(rawFinishReason) {
6
+ const normalized = rawFinishReason === "stop" ||
7
+ rawFinishReason === "length" ||
8
+ rawFinishReason === "content-filter" ||
9
+ rawFinishReason === "tool-calls" ||
10
+ rawFinishReason === "error" ||
11
+ rawFinishReason === "other"
12
+ ? rawFinishReason
13
+ : "other";
14
+ return { unified: normalized, raw: rawFinishReason };
15
+ }
16
+ function toUsage(usageData) {
17
+ const inputTotal = usageData?.inputTokens ?? usageData?.promptTokens;
18
+ const cacheRead = usageData?.inputTokenDetails?.cacheReadTokens ??
19
+ usageData?.cachedInputTokens;
20
+ const cacheWrite = usageData?.inputTokenDetails?.cacheWriteTokens;
21
+ const noCacheInput = usageData?.inputTokenDetails?.noCacheTokens ??
22
+ (inputTotal !== undefined
23
+ ? Math.max(0, inputTotal - (cacheRead ?? 0) - (cacheWrite ?? 0))
24
+ : undefined);
25
+ const outputTotal = usageData?.outputTokens ?? usageData?.completionTokens;
26
+ return {
27
+ inputTokens: {
28
+ total: inputTotal,
29
+ noCache: noCacheInput,
30
+ cacheRead: cacheRead,
31
+ cacheWrite: cacheWrite,
32
+ },
33
+ outputTokens: {
34
+ total: outputTotal,
35
+ text: outputTotal,
36
+ reasoning: undefined,
37
+ },
38
+ };
39
+ }
40
+ function asRecord(value) {
41
+ if (typeof value === "object" && value !== null) {
42
+ return value;
43
+ }
44
+ return undefined;
45
+ }
46
+ function asProviderMetadata(value) {
47
+ const record = asRecord(value);
48
+ if (record == null) {
49
+ return undefined;
50
+ }
51
+ return record;
52
+ }
53
+ function asString(value) {
54
+ return typeof value === "string" ? value : undefined;
55
+ }
56
+ function asWarnings(value) {
57
+ if (!Array.isArray(value)) {
58
+ return undefined;
59
+ }
60
+ return value;
61
+ }
62
+ function asUsage(value) {
63
+ const record = asRecord(value);
64
+ if (!record) {
65
+ return undefined;
66
+ }
67
+ return {
68
+ inputTokens: typeof record.inputTokens === "number" ? record.inputTokens : undefined,
69
+ outputTokens: typeof record.outputTokens === "number" ? record.outputTokens : undefined,
70
+ totalTokens: typeof record.totalTokens === "number" ? record.totalTokens : undefined,
71
+ promptTokens: typeof record.promptTokens === "number" ? record.promptTokens : undefined,
72
+ completionTokens: typeof record.completionTokens === "number"
73
+ ? record.completionTokens
74
+ : undefined,
75
+ cachedInputTokens: typeof record.cachedInputTokens === "number"
76
+ ? record.cachedInputTokens
77
+ : undefined,
78
+ inputTokenDetails: asRecord(record.inputTokenDetails)
79
+ ? {
80
+ noCacheTokens: typeof asRecord(record.inputTokenDetails)?.noCacheTokens ===
81
+ "number"
82
+ ? asRecord(record.inputTokenDetails)?.noCacheTokens
83
+ : undefined,
84
+ cacheReadTokens: typeof asRecord(record.inputTokenDetails)?.cacheReadTokens ===
85
+ "number"
86
+ ? asRecord(record.inputTokenDetails)?.cacheReadTokens
87
+ : undefined,
88
+ cacheWriteTokens: typeof asRecord(record.inputTokenDetails)?.cacheWriteTokens ===
89
+ "number"
90
+ ? asRecord(record.inputTokenDetails)?.cacheWriteTokens
91
+ : undefined,
92
+ }
93
+ : undefined,
94
+ };
95
+ }
96
+ class DefaultClarkRequestBuilder {
97
+ async build({ prompt, maxOutputTokens, temperature, topP, topK, frequencyPenalty, presencePenalty, stopSequences, responseFormat, seed, tools, toolChoice, providerOptions, }, modelId) {
98
+ const warnings = [];
99
+ if (topP != null) {
100
+ warnings.push({
101
+ type: "unsupported",
102
+ feature: "topP",
103
+ });
104
+ }
105
+ if (topK != null) {
106
+ warnings.push({
107
+ type: "unsupported",
108
+ feature: "topK",
109
+ });
110
+ }
111
+ if (frequencyPenalty != null) {
112
+ warnings.push({
113
+ type: "unsupported",
114
+ feature: "frequencyPenalty",
115
+ });
116
+ }
117
+ if (presencePenalty != null) {
118
+ warnings.push({
119
+ type: "unsupported",
120
+ feature: "presencePenalty",
121
+ });
122
+ }
123
+ if (stopSequences != null) {
124
+ warnings.push({
125
+ type: "unsupported",
126
+ feature: "stopSequences",
127
+ });
128
+ }
129
+ let outputSchema = undefined;
130
+ if (responseFormat != null) {
131
+ if (responseFormat.type === "json" && responseFormat.schema) {
132
+ outputSchema = responseFormat.schema;
133
+ }
134
+ else {
135
+ warnings.push({
136
+ type: "unsupported",
137
+ feature: "responseFormat",
138
+ details: "Only JSON response format with schema is supported",
139
+ });
140
+ }
141
+ }
142
+ if (seed != null) {
143
+ warnings.push({
144
+ type: "unsupported",
145
+ feature: "seed",
146
+ });
147
+ }
148
+ const unifiedOptions = providerOptions?.unified;
149
+ const baseArgs = {
150
+ model: modelId,
151
+ max_tokens: maxOutputTokens,
152
+ messages: prompt,
153
+ temperature: temperature,
154
+ providerOptions,
155
+ ...(unifiedOptions?.forceProvider && {
156
+ forceProvider: unifiedOptions.forceProvider,
157
+ }),
158
+ ...(unifiedOptions?.coreModel && { coreModel: unifiedOptions.coreModel }),
159
+ };
160
+ const finalArgs = {
161
+ ...baseArgs,
162
+ tools,
163
+ toolChoice,
164
+ };
165
+ if (outputSchema !== undefined) {
166
+ finalArgs.outputSchema = outputSchema;
167
+ }
168
+ return {
169
+ args: finalArgs,
170
+ warnings,
171
+ };
172
+ }
173
+ }
174
+ class DefaultClarkTransport {
175
+ async postJson({ url, headers, body, failedResponseHandler, successfulResponseHandler, abortSignal, fetch, }) {
176
+ const result = await postJsonToApi({
177
+ url,
178
+ headers,
179
+ body,
180
+ failedResponseHandler,
181
+ successfulResponseHandler,
182
+ abortSignal,
183
+ fetch,
184
+ });
185
+ return {
186
+ responseHeaders: result.responseHeaders ?? {},
187
+ value: result.value,
188
+ };
189
+ }
190
+ }
191
+ function mergeWarnings(localWarnings, responseWarnings) {
192
+ const mergedWarnings = [...localWarnings];
193
+ const warningKeys = new Set(localWarnings.map((warning) => JSON.stringify(warning)));
194
+ for (const warning of responseWarnings ?? []) {
195
+ const warningKey = JSON.stringify(warning);
196
+ if (warningKeys.has(warningKey)) {
197
+ continue;
198
+ }
199
+ warningKeys.add(warningKey);
200
+ mergedWarnings.push(warning);
201
+ }
202
+ return mergedWarnings;
203
+ }
204
+ export class ClarkChatLanguageModel {
205
+ specificationVersion = "v3";
206
+ defaultObjectGenerationMode = "json";
207
+ supportsImageUrls = false;
208
+ // AI SDK's URL support map is keyed by media type (or '*'), not URL protocol.
209
+ // Using '*' avoids SDK-side URL downloads and lets the Clark proxy resolve leases.
210
+ supportedUrls = { "*": [/^https:/] };
211
+ modelId;
212
+ config;
213
+ requestBuilder;
214
+ transport;
215
+ constructor(modelId, config, dependencies = {}) {
216
+ this.modelId = modelId;
217
+ this.config = config;
218
+ this.requestBuilder =
219
+ dependencies.requestBuilder ?? new DefaultClarkRequestBuilder();
220
+ this.transport = dependencies.transport ?? new DefaultClarkTransport();
221
+ }
222
+ get provider() {
223
+ return this.config.provider;
224
+ }
225
+ supportsUrl(url) {
226
+ return url.protocol === "https:";
227
+ }
228
+ async doGenerate(options) {
229
+ const { args, warnings } = await this.requestBuilder.build(options, this.modelId);
230
+ const optionsWithMetadata = options;
231
+ const { value } = await this.transport.postJson({
232
+ url: `${this.config.baseURL}/generate`,
233
+ headers: combineHeaders(this.config.headers(), options.headers),
234
+ body: {
235
+ ...args,
236
+ attributes: optionsWithMetadata.attributes,
237
+ },
238
+ failedResponseHandler: clarkFailedResponseHandler,
239
+ successfulResponseHandler: clarkJsonResponseHandler,
240
+ abortSignal: options.abortSignal,
241
+ fetch: this.config.fetch,
242
+ });
243
+ const content = [];
244
+ if (value.text != null && value.text !== "") {
245
+ content.push({ type: "text", text: value.text });
246
+ }
247
+ else if (value.object != null) {
248
+ content.push({ type: "text", text: JSON.stringify(value.object) });
249
+ }
250
+ if (Array.isArray(value.files)) {
251
+ for (const file of value.files) {
252
+ content.push({
253
+ type: "file",
254
+ mediaType: file.mimeType ?? "application/octet-stream",
255
+ data: file.base64,
256
+ });
257
+ }
258
+ }
259
+ if (Array.isArray(value.toolCalls)) {
260
+ for (const toolCall of value.toolCalls) {
261
+ content.push({
262
+ type: "tool-call",
263
+ toolCallId: toolCall.toolCallId,
264
+ toolName: toolCall.toolName,
265
+ input: JSON.stringify(toolCall.args ?? {}),
266
+ });
267
+ }
268
+ }
269
+ if (Array.isArray(value.sources)) {
270
+ for (const source of value.sources) {
271
+ const sourceRecord = asRecord(source);
272
+ if (sourceRecord == null) {
273
+ continue;
274
+ }
275
+ content.push({
276
+ ...sourceRecord,
277
+ type: "source",
278
+ });
279
+ }
280
+ }
281
+ // Strip undefined values to satisfy provider metadata JSON shape.
282
+ const sanitizedProviderMetadata = value.providerMetadata
283
+ ? JSON.parse(JSON.stringify(value.providerMetadata))
284
+ : undefined;
285
+ return {
286
+ content,
287
+ finishReason: toFinishReason(value.finishReason),
288
+ usage: toUsage(value.usage),
289
+ providerMetadata: sanitizedProviderMetadata,
290
+ response: {
291
+ headers: value.response?.headers,
292
+ },
293
+ request: {
294
+ body: JSON.stringify(args),
295
+ },
296
+ warnings: mergeWarnings(warnings, value.warnings),
297
+ };
298
+ }
299
+ async doStream(options) {
300
+ const { args, warnings } = await this.requestBuilder.build(options, this.modelId);
301
+ const optionsWithMetadata = options;
302
+ const body = {
303
+ ...args,
304
+ stream: true,
305
+ attributes: optionsWithMetadata.attributes,
306
+ };
307
+ const { responseHeaders, value: response } = await this.transport.postJson({
308
+ url: `${this.config.baseURL}/stream`,
309
+ headers: combineHeaders(this.config.headers(), options.headers),
310
+ body,
311
+ failedResponseHandler: clarkFailedResponseHandler,
312
+ successfulResponseHandler: clarkStreamResponseHandler,
313
+ abortSignal: options.abortSignal,
314
+ fetch: this.config.fetch,
315
+ });
316
+ let finishReason;
317
+ let usage = toUsage();
318
+ let streamStartEnqueued = false;
319
+ return {
320
+ stream: response.pipeThrough(new TransformStream({
321
+ transform(chunk, controller) {
322
+ if (chunk.success) {
323
+ const value = chunk.value;
324
+ if (!streamStartEnqueued &&
325
+ value.type !== "stream-start" &&
326
+ warnings.length > 0) {
327
+ controller.enqueue({
328
+ type: "stream-start",
329
+ warnings,
330
+ });
331
+ streamStartEnqueued = true;
332
+ }
333
+ switch (value.type) {
334
+ case "stream-start": {
335
+ if (streamStartEnqueued) {
336
+ break;
337
+ }
338
+ const mergedWarnings = mergeWarnings(warnings, asWarnings(value.warnings));
339
+ if (mergedWarnings.length > 0) {
340
+ controller.enqueue({
341
+ type: "stream-start",
342
+ warnings: mergedWarnings,
343
+ });
344
+ streamStartEnqueued = true;
345
+ }
346
+ break;
347
+ }
348
+ case "text-start": {
349
+ const id = asString(value.id);
350
+ if (id == null) {
351
+ break;
352
+ }
353
+ controller.enqueue({
354
+ type: "text-start",
355
+ id,
356
+ });
357
+ break;
358
+ }
359
+ case "text-delta": {
360
+ const id = asString(value.id);
361
+ const delta = asString(value.text);
362
+ if (id == null || delta == null) {
363
+ break;
364
+ }
365
+ controller.enqueue({
366
+ type: "text-delta",
367
+ id,
368
+ delta,
369
+ });
370
+ break;
371
+ }
372
+ case "reasoning-start": {
373
+ const id = asString(value.id);
374
+ if (id == null) {
375
+ break;
376
+ }
377
+ controller.enqueue({
378
+ type: "reasoning-start",
379
+ id,
380
+ providerMetadata: asProviderMetadata(value.providerMetadata),
381
+ });
382
+ break;
383
+ }
384
+ case "reasoning-delta": {
385
+ const id = asString(value.id);
386
+ if (id == null) {
387
+ break;
388
+ }
389
+ controller.enqueue({
390
+ type: "reasoning-delta",
391
+ id,
392
+ delta: asString(value.text) ?? "",
393
+ providerMetadata: asProviderMetadata(value.providerMetadata),
394
+ });
395
+ break;
396
+ }
397
+ case "reasoning-end": {
398
+ const id = asString(value.id);
399
+ if (id == null) {
400
+ break;
401
+ }
402
+ controller.enqueue({
403
+ type: "reasoning-end",
404
+ id,
405
+ providerMetadata: asProviderMetadata(value.providerMetadata),
406
+ });
407
+ break;
408
+ }
409
+ case "tool-input-start": {
410
+ const id = asString(value.toolCallId) ?? asString(value.id);
411
+ const toolName = asString(value.toolName);
412
+ if (id == null || toolName == null) {
413
+ break;
414
+ }
415
+ controller.enqueue({
416
+ type: "tool-input-start",
417
+ id,
418
+ toolName,
419
+ });
420
+ break;
421
+ }
422
+ case "tool-input-delta": {
423
+ const id = asString(value.toolCallId) ?? asString(value.id);
424
+ const delta = asString(value.delta);
425
+ if (id == null || delta == null) {
426
+ break;
427
+ }
428
+ controller.enqueue({
429
+ type: "tool-input-delta",
430
+ id,
431
+ delta,
432
+ });
433
+ break;
434
+ }
435
+ case "tool-input-end": {
436
+ const id = asString(value.toolCallId) ?? asString(value.id);
437
+ if (id == null) {
438
+ break;
439
+ }
440
+ controller.enqueue({
441
+ type: "tool-input-end",
442
+ id,
443
+ });
444
+ break;
445
+ }
446
+ case "tool-call": {
447
+ const toolCallId = asString(value.toolCallId);
448
+ const toolName = asString(value.toolName);
449
+ if (toolCallId == null || toolName == null) {
450
+ break;
451
+ }
452
+ controller.enqueue({
453
+ type: "tool-call",
454
+ toolCallId,
455
+ toolName,
456
+ input: JSON.stringify(value.input ?? {}),
457
+ });
458
+ break;
459
+ }
460
+ case "file": {
461
+ const data = asString(value.base64);
462
+ if (data == null) {
463
+ break;
464
+ }
465
+ controller.enqueue({
466
+ type: "file",
467
+ mediaType: asString(value.mimeType) ?? "application/octet-stream",
468
+ data,
469
+ });
470
+ break;
471
+ }
472
+ case "source": {
473
+ const source = asRecord(value.source);
474
+ if (source == null) {
475
+ break;
476
+ }
477
+ controller.enqueue({
478
+ type: "source",
479
+ ...source,
480
+ });
481
+ break;
482
+ }
483
+ case "text-end": {
484
+ const id = asString(value.id);
485
+ if (id == null) {
486
+ break;
487
+ }
488
+ controller.enqueue({
489
+ type: "text-end",
490
+ id,
491
+ });
492
+ break;
493
+ }
494
+ case "finish": {
495
+ finishReason = asString(value.finishReason);
496
+ const usageData = asUsage(value.usage ?? value.totalUsage);
497
+ usage = toUsage(usageData);
498
+ break;
499
+ }
500
+ case "finish-step": {
501
+ finishReason = asString(value.finishReason);
502
+ const usageData = asUsage(value.usage ?? value.totalUsage);
503
+ usage = toUsage(usageData);
504
+ break;
505
+ }
506
+ case "error": {
507
+ controller.enqueue({
508
+ type: "error",
509
+ error: value.error,
510
+ });
511
+ break;
512
+ }
513
+ case "object": {
514
+ const id = asString(value.id);
515
+ if (id == null) {
516
+ break;
517
+ }
518
+ controller.enqueue({
519
+ type: "text-delta",
520
+ id,
521
+ delta: JSON.stringify(value.object),
522
+ });
523
+ break;
524
+ }
525
+ case "tool-result": {
526
+ // this might not work properly if we have server side tool results, we'll probably need to filter out specifically ones that are expected to run client side
527
+ // right now we drop the tool result because the one returned by the server is just an empty call
528
+ break;
529
+ }
530
+ }
531
+ }
532
+ else {
533
+ controller.enqueue({ type: "error", error: chunk.error });
534
+ }
535
+ },
536
+ flush(controller) {
537
+ if (!streamStartEnqueued && warnings.length > 0) {
538
+ controller.enqueue({
539
+ type: "stream-start",
540
+ warnings,
541
+ });
542
+ }
543
+ controller.enqueue({
544
+ type: "finish",
545
+ finishReason: toFinishReason(finishReason),
546
+ usage,
547
+ });
548
+ },
549
+ })),
550
+ response: { headers: responseHeaders },
551
+ request: { body: JSON.stringify(body) },
552
+ };
553
+ }
554
+ }
555
+ const clarkJsonResponseHandler = async ({ response }) => {
556
+ const responseHeaders = extractResponseHeaders(response);
557
+ const body = (await response.json());
558
+ return {
559
+ responseHeaders,
560
+ value: body,
561
+ rawValue: body,
562
+ };
563
+ };
564
+ const clarkStreamResponseHandler = async ({ response }) => {
565
+ const responseHeaders = extractResponseHeaders(response);
566
+ if (response.body == null) {
567
+ throw new EmptyResponseBodyError({});
568
+ }
569
+ return {
570
+ responseHeaders,
571
+ value: response.body
572
+ .pipeThrough(new TextDecoderStream())
573
+ .pipeThrough(new EventSourceParserStream())
574
+ .pipeThrough(new TransformStream({
575
+ async transform({ data }, controller) {
576
+ try {
577
+ const json = JSON.parse(data);
578
+ controller.enqueue({
579
+ success: true,
580
+ value: json,
581
+ rawValue: json,
582
+ });
583
+ }
584
+ catch (error) {
585
+ controller.enqueue({
586
+ success: false,
587
+ error: JSONParseError.isInstance(error)
588
+ ? error
589
+ : new JSONParseError({
590
+ text: data,
591
+ cause: error,
592
+ }),
593
+ rawValue: data,
594
+ });
595
+ }
596
+ },
597
+ })),
598
+ };
599
+ };
600
+ //# sourceMappingURL=clark-language-model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clark-language-model.js","sourceRoot":"","sources":["../src/clark-language-model.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ import type { ClarkChatModelId } from "./clark-chat-settings.js";
2
+ import type { LanguageModelV3, ProviderV3 } from "@ai-sdk/provider";
3
+ import type { FetchFunction } from "@ai-sdk/provider-utils";
4
+ export interface ClarkProvider extends ProviderV3 {
5
+ (modelId: ClarkChatModelId): LanguageModelV3;
6
+ /**
7
+ Creates a model for text generation.
8
+ */
9
+ languageModel(modelId: ClarkChatModelId): LanguageModelV3;
10
+ /**
11
+ Creates a model for text generation.
12
+ */
13
+ chat(modelId: ClarkChatModelId): LanguageModelV3;
14
+ }
15
+ export interface ClarkProviderSettings {
16
+ /**
17
+ Use a different URL prefix for API calls, e.g. to use proxy servers.
18
+ The default prefix is `https://app.superblocks.com/api/v1/ai/inference`.
19
+ */
20
+ baseURL?: string;
21
+ /**
22
+ Custom headers to include in the requests.
23
+ */
24
+ headers?: Record<string, string>;
25
+ /**
26
+ Custom fetch implementation. You can use it as a middleware to intercept requests,
27
+ or to provide a custom fetch implementation for e.g. testing.
28
+ */
29
+ fetch?: FetchFunction;
30
+ /**
31
+ * Select an upstream provider for the Clark model.
32
+ * Use "unified" for automatic fallback between providers.
33
+ */
34
+ upstreamProvider?: "vertex" | "bedrock" | "unified";
35
+ path?: string;
36
+ }
37
+ export interface ClarkModelFactoryOptions {
38
+ provider: string;
39
+ modelBaseURL: string;
40
+ headers: () => Record<string, string | undefined>;
41
+ fetch?: FetchFunction;
42
+ }
43
+ export type ClarkModelFactoryDependencies = object;
44
+ export interface ClarkModelFactory {
45
+ create: (modelId: ClarkChatModelId, options: ClarkModelFactoryOptions, dependencies: ClarkModelFactoryDependencies) => LanguageModelV3;
46
+ }
47
+ export interface ClarkProviderDependencies {
48
+ modelFactory: ClarkModelFactory;
49
+ }
50
+ export declare class ClarkProviderFactory {
51
+ private readonly dependencies;
52
+ constructor(dependencies?: ClarkProviderDependencies);
53
+ create(options?: ClarkProviderSettings): ClarkProvider;
54
+ }
55
+ /**
56
+ Create a Clark AI provider instance.
57
+ */
58
+ export declare function createClark(options?: ClarkProviderSettings, dependencies?: ClarkProviderDependencies): ClarkProvider;
59
+ //# sourceMappingURL=clark-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clark-provider.d.ts","sourceRoot":"","sources":["../src/clark-provider.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE5D,MAAM,WAAW,aAAc,SAAQ,UAAU;IAC/C,CAAC,OAAO,EAAE,gBAAgB,GAAG,eAAe,CAAC;IAE7C;;IAEA;IACA,aAAa,CAAC,OAAO,EAAE,gBAAgB,GAAG,eAAe,CAAC;IAE1D;;IAEA;IACA,IAAI,CAAC,OAAO,EAAE,gBAAgB,GAAG,eAAe,CAAC;CAClD;AAED,MAAM,WAAW,qBAAqB;IACpC;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;SAEK;IACL,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEjC;;;QAGI;IACJ,KAAK,CAAC,EAAE,aAAa,CAAC;IAEtB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;IAEpD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAClD,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB;AAED,MAAM,MAAM,6BAA6B,GAAG,MAAM,CAAC;AAEnD,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,CACN,OAAO,EAAE,gBAAgB,EACzB,OAAO,EAAE,wBAAwB,EACjC,YAAY,EAAE,6BAA6B,KACxC,eAAe,CAAC;CACtB;AAED,MAAM,WAAW,yBAAyB;IACxC,YAAY,EAAE,iBAAiB,CAAC;CACjC;AAqBD,qBAAa,oBAAoB;IAE7B,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAAZ,YAAY,GAAE,yBAA4D;IAG7F,MAAM,CACJ,OAAO,GAAE,qBAER,GACA,aAAa;CAwDjB;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,OAAO,GAAE,qBAER,EACD,YAAY,GAAE,yBAA4D,GACzE,aAAa,CAEf"}
@@ -0,0 +1,70 @@
1
+ import { withoutTrailingSlash } from "@ai-sdk/provider-utils";
2
+ import { ClarkChatLanguageModel } from "./clark-language-model.js";
3
+ class DefaultClarkModelFactory {
4
+ create(modelId, options, _dependencies) {
5
+ return new ClarkChatLanguageModel(modelId, {
6
+ provider: options.provider,
7
+ baseURL: options.modelBaseURL,
8
+ headers: options.headers,
9
+ fetch: options.fetch,
10
+ });
11
+ }
12
+ }
13
+ const defaultClarkProviderDependencies = {
14
+ modelFactory: new DefaultClarkModelFactory(),
15
+ };
16
+ export class ClarkProviderFactory {
17
+ dependencies;
18
+ constructor(dependencies = defaultClarkProviderDependencies) {
19
+ this.dependencies = dependencies;
20
+ }
21
+ create(options = {
22
+ upstreamProvider: "bedrock",
23
+ }) {
24
+ const path = options.path;
25
+ let baseURL = withoutTrailingSlash(options.baseURL) ??
26
+ "https://app.superblocks.com/api/v1/ai/inference";
27
+ if (path) {
28
+ const fixedPath = path.startsWith("/") ? path : `/${path}`;
29
+ baseURL = `${baseURL}${withoutTrailingSlash(fixedPath)}`;
30
+ }
31
+ const getHeaders = () => ({
32
+ ...options.headers,
33
+ });
34
+ const createChatModel = (modelId) => this.dependencies.modelFactory.create(modelId, {
35
+ provider: "clark.chat",
36
+ modelBaseURL: `${baseURL}/${options.upstreamProvider ?? "bedrock"}`,
37
+ headers: getHeaders,
38
+ fetch: options.fetch,
39
+ }, {});
40
+ const provider = function (modelId) {
41
+ if (new.target) {
42
+ throw new Error("The Clark model function cannot be called with the new keyword.");
43
+ }
44
+ return createChatModel(modelId);
45
+ };
46
+ provider.languageModel = createChatModel;
47
+ provider.chat = createChatModel;
48
+ provider.specificationVersion = "v3";
49
+ const embeddingModel = () => {
50
+ throw new Error("Embedding is not supported for Clark");
51
+ };
52
+ provider.embedding = embeddingModel;
53
+ provider.embeddingModel = embeddingModel;
54
+ provider.textEmbeddingModel = embeddingModel;
55
+ const imageModel = () => {
56
+ throw new Error("Image generation is not supported for Clark");
57
+ };
58
+ provider.imageModel = imageModel;
59
+ return provider;
60
+ }
61
+ }
62
+ /**
63
+ Create a Clark AI provider instance.
64
+ */
65
+ export function createClark(options = {
66
+ upstreamProvider: "bedrock",
67
+ }, dependencies = defaultClarkProviderDependencies) {
68
+ return new ClarkProviderFactory(dependencies).create(options);
69
+ }
70
+ //# sourceMappingURL=clark-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clark-provider.js","sourceRoot":"","sources":["../src/clark-provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export { ClarkChatModelId } from "./clark-chat-settings.js";
2
+ export { createClark, type ClarkProvider, type ClarkProviderSettings, } from "./clark-provider.js";
3
+ export { type ClarkErrorData } from "./clark-error-handler.js";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EACL,WAAW,EACX,KAAK,aAAa,EAClB,KAAK,qBAAqB,GAC3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,4 @@
1
+ export { ClarkChatModelId } from "./clark-chat-settings.js";
2
+ export { createClark, } from "./clark-provider.js";
3
+ export {} from "./clark-error-handler.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EACL,WAAW,GAGZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAuB,MAAM,0BAA0B,CAAC"}
package/package.json ADDED
@@ -0,0 +1,65 @@
1
+ {
2
+ "name": "@superblocksteam/clark",
3
+ "version": "2.0.101-next.0",
4
+ "description": "Clark model provider extracted for reuse and testing",
5
+ "files": [
6
+ "dist"
7
+ ],
8
+ "type": "module",
9
+ "main": "./dist/index.js",
10
+ "types": "./dist/index.d.ts",
11
+ "exports": {
12
+ ".": {
13
+ "types": "./dist/index.d.ts",
14
+ "import": "./dist/index.js"
15
+ }
16
+ },
17
+ "dependencies": {
18
+ "@ai-sdk/provider": "^3.0.8",
19
+ "@ai-sdk/provider-utils": "^4.0.15",
20
+ "eventsource-parser": "^3.0.3",
21
+ "zod": "3.25.76"
22
+ },
23
+ "devDependencies": {
24
+ "@ai-sdk/test-server": "^1.0.3",
25
+ "@eslint/js": "^9.39.2",
26
+ "@types/node": "^24",
27
+ "@vitest/coverage-v8": "^4.0.17",
28
+ "@vitest/eslint-plugin": "^1.6.7",
29
+ "ai": "6.0.97",
30
+ "eslint": "^9.39.2",
31
+ "eslint-config-prettier": "^10.1.8",
32
+ "eslint-config-turbo": "^2.8.3",
33
+ "eslint-plugin-import": "^2.32.0",
34
+ "eslint-plugin-unicorn": "^62.0.0",
35
+ "eslint-plugin-unused-imports": "^4.3.0",
36
+ "globals": "^17.3.0",
37
+ "premove": "^4.0.0",
38
+ "typescript": "^5.9.3",
39
+ "typescript-eslint": "^8.54.0",
40
+ "vitest": "^4.0.17",
41
+ "@superblocksteam/library-shared": "2.0.101-next.0"
42
+ },
43
+ "peerDependencies": {
44
+ "ai": ">=6.0.0"
45
+ },
46
+ "engines": {
47
+ "node": ">=24",
48
+ "npm": ">=10.x"
49
+ },
50
+ "publishConfig": {
51
+ "registry": "https://registry.npmjs.org"
52
+ },
53
+ "scripts": {
54
+ "build": "tsc --build tsconfig.build.json",
55
+ "check": "pnpm lint && pnpm typecheck",
56
+ "clean": "premove dist *.tsbuildinfo",
57
+ "dev": "tsc --build tsconfig.build.json --watch --preserveWatchOutput",
58
+ "lint": "eslint --concurrency=2",
59
+ "lint:fix": "eslint --fix --concurrency=2",
60
+ "publish-package": "pnpm publish",
61
+ "test": "vitest run --reporter=verbose",
62
+ "test:watch": "vitest --ui",
63
+ "typecheck": "tsc --build tsconfig.json"
64
+ }
65
+ }