veryfront 0.1.903 → 0.1.904

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/esm/deno.js CHANGED
@@ -1,6 +1,6 @@
1
1
  export default {
2
2
  "name": "veryfront",
3
- "version": "0.1.903",
3
+ "version": "0.1.904",
4
4
  "license": "Apache-2.0",
5
5
  "nodeModulesDir": "auto",
6
6
  "minimumDependencyAge": {
@@ -17,6 +17,7 @@ export interface ModelRuntimeStreamResult {
17
17
  /** Public API contract for model runtime. */
18
18
  export interface ModelRuntime extends RuntimeMetadata {
19
19
  readonly _isVfLocalModel?: boolean;
20
+ readonly _generateViaStream?: boolean;
20
21
  doGenerate(options: unknown): PromiseLike<ModelRuntimeGenerateResult>;
21
22
  doStream(options: unknown): PromiseLike<ModelRuntimeStreamResult>;
22
23
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/src/provider/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,0BAA0B;IACzC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;IAChC,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;CACtB;AAED,6CAA6C;AAC7C,MAAM,WAAW,YAAa,SAAQ,eAAe;IACnD,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IACnC,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,WAAW,CAAC,0BAA0B,CAAC,CAAC;IACtE,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,WAAW,CAAC,wBAAwB,CAAC,CAAC;CACnE;AAED,MAAM,WAAW,gBAAiB,SAAQ,eAAe;IACvD,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACzE,QAAQ,CAAC,qBAAqB,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;IAC5E,OAAO,CAAC,OAAO,EAAE;QACf,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,WAAW,CAAC,EAAE,WAAW,CAAC;KAC3B,GAAG,WAAW,CAAC;QACd,UAAU,EAAE,MAAM,EAAE,EAAE,CAAC;QACvB,KAAK,CAAC,EAAE;YACN,MAAM,CAAC,EAAE,MAAM,CAAC;SACjB,CAAC;QACF,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;KACtB,CAAC,CAAC;CACJ"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/src/provider/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,0BAA0B;IACzC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;IAChC,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;CACtB;AAED,6CAA6C;AAC7C,MAAM,WAAW,YAAa,SAAQ,eAAe;IACnD,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IACtC,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,WAAW,CAAC,0BAA0B,CAAC,CAAC;IACtE,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,WAAW,CAAC,wBAAwB,CAAC,CAAC;CACnE;AAED,MAAM,WAAW,gBAAiB,SAAQ,eAAe;IACvD,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACzE,QAAQ,CAAC,qBAAqB,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;IAC5E,OAAO,CAAC,OAAO,EAAE;QACf,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,WAAW,CAAC,EAAE,WAAW,CAAC;KAC3B,GAAG,WAAW,CAAC;QACd,UAAU,EAAE,MAAM,EAAE,EAAE,CAAC;QACvB,KAAK,CAAC,EAAE;YACN,MAAM,CAAC,EAAE,MAAM,CAAC;SACjB,CAAC;QACF,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;KACtB,CAAC,CAAC;CACJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../../src/src/provider/veryfront-cloud/provider.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAShD,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,CAuEvE"}
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../../src/src/provider/veryfront-cloud/provider.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAahD,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,CAuEvE"}
@@ -2,6 +2,9 @@ import { createError, toError } from "../../errors/veryfront-error.js";
2
2
  import { ensureBuiltinLLMProviders } from "../../extensions/builtin-extensions.js";
3
3
  import { createVeryfrontCloudFetch, getVeryfrontCloudGatewayBaseUrl, parseVeryfrontCloudModelId, requireVeryfrontCloudBootstrap, } from "./shared.js";
4
4
  import { createVeryfrontCloudOpenAIModel } from "./openai.js";
5
+ function preferStreamedGenerate(model) {
6
+ return Object.assign(model, { _generateViaStream: true });
7
+ }
5
8
  export function createVeryfrontCloudModel(modelId) {
6
9
  const { provider, modelId: upstreamModelId } = parseVeryfrontCloudModelId(modelId, "language");
7
10
  const { apiBaseUrl, apiToken, projectSlug } = requireVeryfrontCloudBootstrap();
@@ -12,25 +15,25 @@ export function createVeryfrontCloudModel(modelId) {
12
15
  case "anthropic": {
13
16
  const anthropic = registry.get("anthropic");
14
17
  if (anthropic) {
15
- return anthropic.createModel(upstreamModelId, {
18
+ return preferStreamedGenerate(anthropic.createModel(upstreamModelId, {
16
19
  credential: apiToken,
17
20
  authToken: apiToken,
18
21
  baseURL,
19
22
  name: "veryfront-cloud",
20
23
  fetch,
21
- });
24
+ }));
22
25
  }
23
26
  break;
24
27
  }
25
28
  case "google": {
26
29
  const google = registry.get("google");
27
30
  if (google) {
28
- return google.createModel(upstreamModelId, {
31
+ return preferStreamedGenerate(google.createModel(upstreamModelId, {
29
32
  credential: apiToken,
30
33
  baseURL,
31
34
  name: "veryfront-cloud",
32
35
  fetch,
33
- });
36
+ }));
34
37
  }
35
38
  break;
36
39
  }
@@ -39,18 +42,18 @@ export function createVeryfrontCloudModel(modelId) {
39
42
  case "moonshotai": {
40
43
  const openai = registry.get("openai");
41
44
  if (openai) {
42
- return openai.createModel(upstreamModelId, {
45
+ return preferStreamedGenerate(openai.createModel(upstreamModelId, {
43
46
  credential: apiToken,
44
47
  baseURL,
45
48
  name: "veryfront-cloud",
46
49
  fetch,
47
- });
50
+ }));
48
51
  }
49
- return createVeryfrontCloudOpenAIModel(upstreamModelId, {
52
+ return preferStreamedGenerate(createVeryfrontCloudOpenAIModel(upstreamModelId, {
50
53
  apiToken,
51
54
  baseURL,
52
55
  fetch,
53
- });
56
+ }));
54
57
  }
55
58
  default: {
56
59
  const _exhaustive = provider;
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-bridge.d.ts","sourceRoot":"","sources":["../../../src/src/runtime/runtime-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,2DAA2D,CAAC;AAC9G,OAAO,KAAK,EACV,yBAAyB,EACzB,mBAAmB,EACnB,6BAA6B,EAC7B,cAAc,EACf,MAAM,wCAAwC,CAAC;AAChD,OAAO,KAAK,EACV,gBAAgB,EAChB,YAAY,EAEb,MAAM,sBAAsB,CAAC;AAE9B,KAAK,mBAAmB,GAAG;IACzB,KAAK,EAAE,YAAY,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,4BAA4B,EAAE,CAAC;IACzC,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,2BAA2B,CAAC,EAAE,6BAA6B,CAAC;IAC5D,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B,CAAC;AAEF,KAAK,iBAAiB,GAAG;IACvB,KAAK,EAAE,YAAY,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,4BAA4B,EAAE,CAAC;IACzC,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,2BAA2B,CAAC,EAAE,6BAA6B,CAAC;IAC5D,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B,CAAC;AAEF,KAAK,YAAY,GAAG;IAClB,KAAK,EAAE,gBAAgB,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B,CAAC;AAEF,KAAK,gBAAgB,GAAG;IACtB,KAAK,EAAE,gBAAgB,CAAC;IACxB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B,CAAC;AAmfF,wBAAgB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,WAAW,CAAC,yBAAyB,CAAC,CA0BjG;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,mBAAmB,CAyC1E;AAED,wBAAgB,KAAK,CAAC,OAAO,EAAE,YAAY;;;;;;;;GAW1C;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,gBAAgB;;;;;;;GAUlD;AACD,6DAA6D;AAC7D,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAsBjE"}
1
+ {"version":3,"file":"runtime-bridge.d.ts","sourceRoot":"","sources":["../../../src/src/runtime/runtime-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,2DAA2D,CAAC;AAC9G,OAAO,KAAK,EACV,yBAAyB,EAEzB,mBAAmB,EACnB,6BAA6B,EAC7B,cAAc,EACf,MAAM,wCAAwC,CAAC;AAChD,OAAO,KAAK,EACV,gBAAgB,EAChB,YAAY,EAEb,MAAM,sBAAsB,CAAC;AAE9B,KAAK,mBAAmB,GAAG;IACzB,KAAK,EAAE,YAAY,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,4BAA4B,EAAE,CAAC;IACzC,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,2BAA2B,CAAC,EAAE,6BAA6B,CAAC;IAC5D,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B,CAAC;AAEF,KAAK,iBAAiB,GAAG;IACvB,KAAK,EAAE,YAAY,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,4BAA4B,EAAE,CAAC;IACzC,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,2BAA2B,CAAC,EAAE,6BAA6B,CAAC;IAC5D,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B,CAAC;AAEF,KAAK,YAAY,GAAG;IAClB,KAAK,EAAE,gBAAgB,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B,CAAC;AAEF,KAAK,gBAAgB,GAAG;IACtB,KAAK,EAAE,gBAAgB,CAAC;IACxB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B,CAAC;AAuqBF,wBAAgB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,WAAW,CAAC,yBAAyB,CAAC,CAWjG;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,mBAAmB,CAgB1E;AAED,wBAAgB,KAAK,CAAC,OAAO,EAAE,YAAY;;;;;;;;GAW1C;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,gBAAgB;;;;;;;GAUlD;AACD,6DAA6D;AAC7D,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAsBjE"}
@@ -131,6 +131,9 @@ function normalizeFinishReason(finishReason) {
131
131
  }
132
132
  return null;
133
133
  }
134
+ function shouldGenerateViaStream(model) {
135
+ return model._generateViaStream === true;
136
+ }
134
137
  function parseToolCallInput(input) {
135
138
  if (typeof input !== "string") {
136
139
  return input;
@@ -192,6 +195,29 @@ async function resolveDirectTools(tools) {
192
195
  }
193
196
  return resolvedTools.length > 0 ? resolvedTools : undefined;
194
197
  }
198
+ function buildDirectModelOptions(options, tools) {
199
+ return {
200
+ prompt: toRuntimePrompt(normalizeSystemPrompt(options.system), getProviderRequestMessages(options.messages)),
201
+ maxOutputTokens: options.maxOutputTokens,
202
+ ...(options.temperature === undefined ? {} : { temperature: options.temperature }),
203
+ topP: options.topP,
204
+ topK: options.topK,
205
+ stopSequences: options.stopSequences,
206
+ ...(tools ? { tools } : {}),
207
+ ...(options.toolChoice ? { toolChoice: options.toolChoice } : {}),
208
+ ...(options.seed !== undefined ? { seed: options.seed } : {}),
209
+ ...(options.presencePenalty !== undefined ? { presencePenalty: options.presencePenalty } : {}),
210
+ ...(options.frequencyPenalty !== undefined
211
+ ? { frequencyPenalty: options.frequencyPenalty }
212
+ : {}),
213
+ ...(options.headers ? { headers: options.headers } : {}),
214
+ ...(options.providerOptions ? { providerOptions: options.providerOptions } : {}),
215
+ ...("includeRawChunks" in options && options.includeRawChunks !== undefined
216
+ ? { includeRawChunks: options.includeRawChunks }
217
+ : {}),
218
+ abortSignal: options.abortSignal,
219
+ };
220
+ }
195
221
  function isDirectToolCallPart(part) {
196
222
  return !!part &&
197
223
  typeof part === "object" &&
@@ -254,6 +280,128 @@ function buildDirectGenerateResult(result) {
254
280
  finishReason: normalizeFinishReason(result.finishReason),
255
281
  };
256
282
  }
283
+ function streamUsageToGenerateUsage(totalUsage) {
284
+ if (!totalUsage) {
285
+ return undefined;
286
+ }
287
+ const inputTokens = totalUsage.inputTokens;
288
+ const outputTokens = totalUsage.outputTokens;
289
+ const totalTokens = totalUsage.totalTokens ??
290
+ (inputTokens !== undefined || outputTokens !== undefined
291
+ ? (inputTokens ?? 0) + (outputTokens ?? 0)
292
+ : undefined);
293
+ return {
294
+ inputTokens,
295
+ outputTokens,
296
+ ...(totalTokens !== undefined ? { totalTokens } : {}),
297
+ ...(totalUsage.cacheCreationInputTokens !== undefined
298
+ ? { cacheCreationInputTokens: totalUsage.cacheCreationInputTokens }
299
+ : {}),
300
+ ...(totalUsage.cacheReadInputTokens !== undefined
301
+ ? { cacheReadInputTokens: totalUsage.cacheReadInputTokens }
302
+ : {}),
303
+ ...(totalUsage.cachedInputTokens !== undefined
304
+ ? { cachedInputTokens: totalUsage.cachedInputTokens }
305
+ : {}),
306
+ ...(totalUsage.reasoningTokens !== undefined
307
+ ? { reasoningTokens: totalUsage.reasoningTokens }
308
+ : {}),
309
+ };
310
+ }
311
+ async function buildGenerateResultFromStream(stream) {
312
+ let text = "";
313
+ let usage;
314
+ let finishReason = null;
315
+ const toolCalls = new Map();
316
+ const toolInputs = new Map();
317
+ const toolResults = [];
318
+ for await (const rawPart of mapReadableStream(stream)) {
319
+ if (!rawPart || typeof rawPart !== "object" || !("type" in rawPart)) {
320
+ continue;
321
+ }
322
+ const part = rawPart;
323
+ switch (part.type) {
324
+ case "text-delta":
325
+ text += part.text;
326
+ break;
327
+ case "tool-input-start":
328
+ toolInputs.set(part.id, {
329
+ toolCallId: part.id,
330
+ toolName: part.toolName,
331
+ input: "",
332
+ });
333
+ break;
334
+ case "tool-input-delta": {
335
+ const input = toolInputs.get(part.id);
336
+ if (input) {
337
+ input.input += part.delta;
338
+ }
339
+ break;
340
+ }
341
+ case "tool-input-end": {
342
+ const input = toolInputs.get(part.id);
343
+ if (input) {
344
+ toolCalls.set(input.toolCallId, {
345
+ toolCallId: input.toolCallId,
346
+ toolName: input.toolName,
347
+ input: parseToolCallInput(input.input),
348
+ });
349
+ }
350
+ break;
351
+ }
352
+ case "tool-input-available": {
353
+ const toolCallId = part.toolCallId ?? part.id;
354
+ if (toolCallId) {
355
+ toolCalls.set(toolCallId, {
356
+ toolCallId,
357
+ toolName: part.toolName,
358
+ input: parseToolCallInput(part.input),
359
+ });
360
+ }
361
+ break;
362
+ }
363
+ case "tool-call":
364
+ toolCalls.set(part.toolCallId, {
365
+ toolCallId: part.toolCallId,
366
+ toolName: part.toolName,
367
+ input: parseToolCallInput(part.input),
368
+ });
369
+ break;
370
+ case "tool-result": {
371
+ const result = part.result ?? part.output ?? part.error;
372
+ toolResults.push({
373
+ toolCallId: part.toolCallId,
374
+ toolName: part.toolName,
375
+ result,
376
+ ...(part.isError === true || part.error !== undefined ? { isError: true } : {}),
377
+ ...(part.providerExecuted === true ? { providerExecuted: true } : {}),
378
+ });
379
+ break;
380
+ }
381
+ case "tool-error":
382
+ toolResults.push({
383
+ toolCallId: part.toolCallId,
384
+ toolName: part.toolName,
385
+ result: part.error,
386
+ isError: true,
387
+ ...(part.providerExecuted === true ? { providerExecuted: true } : {}),
388
+ });
389
+ break;
390
+ case "finish":
391
+ finishReason = part.finishReason ?? null;
392
+ usage = streamUsageToGenerateUsage(part.totalUsage);
393
+ break;
394
+ }
395
+ }
396
+ const finalToolCalls = [...toolCalls.values()];
397
+ return {
398
+ text,
399
+ ...(finalToolCalls.length > 0 ? { toolCalls: finalToolCalls } : {}),
400
+ ...(toolResults.length > 0 ? { toolResults } : {}),
401
+ usage,
402
+ finishReason,
403
+ };
404
+ }
257
405
  function normalizeStreamPart(part) {
258
406
  if (!part || typeof part !== "object" || !("type" in part)) {
259
407
  return part;
@@ -271,7 +419,7 @@ function normalizeStreamPart(part) {
271
419
  return part;
272
420
  }
273
421
  const finishPart = part;
274
- const usage = normalizeUsage(finishPart.usage);
422
+ const usage = normalizeUsage(finishPart.usage) ?? normalizeUsage(finishPart.totalUsage);
275
423
  const recomputedTotal = usage ? (usage.inputTokens ?? 0) + (usage.outputTokens ?? 0) : undefined;
276
424
  return {
277
425
  type: "finish",
@@ -321,51 +469,16 @@ async function* textDeltasFromStream(stream) {
321
469
  }
322
470
  }
323
471
  export function generateText(options) {
324
- return resolveDirectTools(options.tools).then((tools) => options.model.doGenerate({
325
- prompt: toRuntimePrompt(normalizeSystemPrompt(options.system), getProviderRequestMessages(options.messages)),
326
- maxOutputTokens: options.maxOutputTokens,
327
- ...(options.temperature === undefined ? {} : { temperature: options.temperature }),
328
- topP: options.topP,
329
- topK: options.topK,
330
- stopSequences: options.stopSequences,
331
- ...(tools ? { tools } : {}),
332
- ...(options.toolChoice ? { toolChoice: options.toolChoice } : {}),
333
- ...(options.seed !== undefined ? { seed: options.seed } : {}),
334
- ...(options.presencePenalty !== undefined
335
- ? { presencePenalty: options.presencePenalty }
336
- : {}),
337
- ...(options.frequencyPenalty !== undefined
338
- ? { frequencyPenalty: options.frequencyPenalty }
339
- : {}),
340
- ...(options.headers ? { headers: options.headers } : {}),
341
- ...(options.providerOptions ? { providerOptions: options.providerOptions } : {}),
342
- abortSignal: options.abortSignal,
343
- }).then(buildDirectGenerateResult));
472
+ return resolveDirectTools(options.tools).then((tools) => {
473
+ const directOptions = buildDirectModelOptions(options, tools);
474
+ if (shouldGenerateViaStream(options.model)) {
475
+ return options.model.doStream(directOptions).then(({ stream }) => buildGenerateResultFromStream(stream));
476
+ }
477
+ return options.model.doGenerate(directOptions).then(buildDirectGenerateResult);
478
+ });
344
479
  }
345
480
  export function streamText(options) {
346
- const directResultPromise = resolveDirectTools(options.tools).then((tools) => options.model.doStream({
347
- prompt: toRuntimePrompt(normalizeSystemPrompt(options.system), getProviderRequestMessages(options.messages)),
348
- maxOutputTokens: options.maxOutputTokens,
349
- ...(options.temperature === undefined ? {} : { temperature: options.temperature }),
350
- topP: options.topP,
351
- topK: options.topK,
352
- stopSequences: options.stopSequences,
353
- ...(tools ? { tools } : {}),
354
- ...(options.toolChoice ? { toolChoice: options.toolChoice } : {}),
355
- ...(options.seed !== undefined ? { seed: options.seed } : {}),
356
- ...(options.presencePenalty !== undefined
357
- ? { presencePenalty: options.presencePenalty }
358
- : {}),
359
- ...(options.frequencyPenalty !== undefined
360
- ? { frequencyPenalty: options.frequencyPenalty }
361
- : {}),
362
- ...(options.headers ? { headers: options.headers } : {}),
363
- ...(options.providerOptions ? { providerOptions: options.providerOptions } : {}),
364
- ...(options.includeRawChunks !== undefined
365
- ? { includeRawChunks: options.includeRawChunks }
366
- : {}),
367
- abortSignal: options.abortSignal,
368
- }));
481
+ const directResultPromise = resolveDirectTools(options.tools).then((tools) => options.model.doStream(buildDirectModelOptions(options, tools)));
369
482
  const branchedStreamsPromise = directResultPromise.then(({ stream }) => stream.tee());
370
483
  return {
371
484
  fullStream: (async function* () {
@@ -1,3 +1,3 @@
1
1
  /** Shared version value. */
2
- export declare const VERSION = "0.1.903";
2
+ export declare const VERSION = "0.1.904";
3
3
  //# sourceMappingURL=version-constant.d.ts.map
@@ -1,4 +1,4 @@
1
1
  // Keep in sync with deno.json version.
2
2
  // scripts/release.ts updates this constant during releases.
3
3
  /** Shared version value. */
4
- export const VERSION = "0.1.903";
4
+ export const VERSION = "0.1.904";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "veryfront",
3
- "version": "0.1.903",
3
+ "version": "0.1.904",
4
4
  "description": "The simplest way to build AI-powered apps",
5
5
  "keywords": [
6
6
  "react",