veryfront 0.1.139 → 0.1.140

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.139",
3
+ "version": "0.1.140",
4
4
  "license": "Apache-2.0",
5
5
  "nodeModulesDir": "auto",
6
6
  "exclude": [
@@ -1 +1 @@
1
- {"version":3,"file":"ai-stream-handler.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/runtime/ai-stream-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAQpD,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC1C,WAAW,EAAE,mBAAmB,EAAE,CAAC;IACnC,KAAK,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;CAChF;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE;QAChB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,KAAK,IAAI,CAAC;CACZ;AAkED,wBAAgB,iBAAiB,IAAI,aAAa,CAQjD;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC,EACxC,KAAK,EAAE,aAAa,EACpB,UAAU,EAAE,+BAA+B,EAC3C,OAAO,EAAE,WAAW,EACpB,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,SAAS,CAAC,EAAE,iBAAiB,EAC7B,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,IAAI,CAAC,CAoMf"}
1
+ {"version":3,"file":"ai-stream-handler.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/runtime/ai-stream-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAUpD,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC1C,WAAW,EAAE,mBAAmB,EAAE,CAAC;IACnC,KAAK,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;CAChF;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE;QAChB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,KAAK,IAAI,CAAC;CACZ;AA6HD,wBAAgB,iBAAiB,IAAI,aAAa,CAQjD;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC,EACxC,KAAK,EAAE,aAAa,EACpB,UAAU,EAAE,+BAA+B,EAC3C,OAAO,EAAE,WAAW,EACpB,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,SAAS,CAAC,EAAE,iBAAiB,EAC7B,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,IAAI,CAAC,CAsNf"}
@@ -10,7 +10,9 @@
10
10
  import { sendSSE } from "./sse-utils.js";
11
11
  import { isDynamicTool } from "./tool-helpers.js";
12
12
  import { serverLogger } from "../../utils/index.js";
13
+ import { isAnyDebugEnabled } from "../../utils/constants/env.js";
13
14
  import { setActiveSpanAttributes, withSpan } from "../../observability/tracing/otlp-setup.js";
15
+ import { getHostEnv } from "../../platform/compat/process.js";
14
16
  const logger = serverLogger.component("agent");
15
17
  function isRecord(value) {
16
18
  return typeof value === "object" && value !== null && !Array.isArray(value);
@@ -63,6 +65,45 @@ function stringifyToolError(output) {
63
65
  return String(output);
64
66
  }
65
67
  }
68
+ function summarizeDebugValue(value) {
69
+ if (value instanceof Error) {
70
+ return {
71
+ name: value.name,
72
+ message: value.message,
73
+ stack: value.stack,
74
+ };
75
+ }
76
+ if (typeof value === "string") {
77
+ return value.length > 500 ? `${value.slice(0, 500)}…` : value;
78
+ }
79
+ return value;
80
+ }
81
+ function logProviderToolPart(partType, part) {
82
+ if (!isAnyDebugEnabled({ get: getHostEnv })) {
83
+ return;
84
+ }
85
+ if (part.providerExecuted !== true) {
86
+ return;
87
+ }
88
+ if (part.toolName !== "web_search" && part.toolName !== "web_fetch") {
89
+ return;
90
+ }
91
+ logger.debug("Provider tool stream part observed", {
92
+ partType,
93
+ toolCallId: part.toolCallId,
94
+ toolName: part.toolName,
95
+ providerExecuted: part.providerExecuted,
96
+ dynamic: part.dynamic,
97
+ preliminary: part.preliminary,
98
+ isError: part.isError,
99
+ outputType: typeof part.output,
100
+ errorType: typeof part.error,
101
+ inputType: typeof part.input,
102
+ output: summarizeDebugValue(part.output),
103
+ error: summarizeDebugValue(part.error),
104
+ input: summarizeDebugValue(part.input),
105
+ });
106
+ }
66
107
  export function createStreamState() {
67
108
  return {
68
109
  accumulatedText: "",
@@ -158,6 +199,16 @@ export function processStream(result, state, controller, encoder, textPartId, ca
158
199
  }
159
200
  case "tool-result": {
160
201
  const isError = "isError" in part && part.isError === true;
202
+ logProviderToolPart("tool-result", {
203
+ toolCallId: part.toolCallId,
204
+ toolName: part.toolName,
205
+ providerExecuted: "providerExecuted" in part ? part.providerExecuted : undefined,
206
+ dynamic: "dynamic" in part ? part.dynamic : undefined,
207
+ output: part.output,
208
+ input: "input" in part ? part.input : undefined,
209
+ preliminary: "preliminary" in part ? part.preliminary : undefined,
210
+ isError,
211
+ });
161
212
  if (isError) {
162
213
  state.toolResults.push({
163
214
  toolCallId: part.toolCallId,
@@ -206,6 +257,14 @@ export function processStream(result, state, controller, encoder, textPartId, ca
206
257
  break;
207
258
  }
208
259
  case "tool-error": {
260
+ logProviderToolPart("tool-error", {
261
+ toolCallId: part.toolCallId,
262
+ toolName: part.toolName,
263
+ providerExecuted: "providerExecuted" in part ? part.providerExecuted : undefined,
264
+ dynamic: "dynamic" in part ? part.dynamic : undefined,
265
+ error: part.error,
266
+ input: "input" in part ? part.input : undefined,
267
+ });
209
268
  state.toolResults.push({
210
269
  toolCallId: part.toolCallId,
211
270
  toolName: part.toolName,
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "0.1.139";
1
+ export declare const VERSION = "0.1.140";
2
2
  //# sourceMappingURL=version-constant.d.ts.map
@@ -1,3 +1,3 @@
1
1
  // Keep in sync with deno.json version.
2
2
  // scripts/release.ts updates this constant during releases.
3
- export const VERSION = "0.1.139";
3
+ export const VERSION = "0.1.140";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "veryfront",
3
- "version": "0.1.139",
3
+ "version": "0.1.140",
4
4
  "description": "The simplest way to build AI-powered apps",
5
5
  "keywords": [
6
6
  "react",
package/src/deno.js CHANGED
@@ -1,6 +1,6 @@
1
1
  export default {
2
2
  "name": "veryfront",
3
- "version": "0.1.139",
3
+ "version": "0.1.140",
4
4
  "license": "Apache-2.0",
5
5
  "nodeModulesDir": "auto",
6
6
  "exclude": [
@@ -12,7 +12,9 @@ import type { StreamTextResult, ToolSet } from "ai";
12
12
  import { sendSSE } from "./sse-utils.js";
13
13
  import { isDynamicTool } from "./tool-helpers.js";
14
14
  import { serverLogger } from "../../utils/index.js";
15
+ import { isAnyDebugEnabled } from "../../utils/constants/env.js";
15
16
  import { setActiveSpanAttributes, withSpan } from "../../observability/tracing/otlp-setup.js";
17
+ import { getHostEnv } from "../../platform/compat/process.js";
16
18
 
17
19
  const logger = serverLogger.component("agent");
18
20
 
@@ -115,6 +117,65 @@ function stringifyToolError(output: unknown): string {
115
117
  }
116
118
  }
117
119
 
120
+ function summarizeDebugValue(value: unknown): unknown {
121
+ if (value instanceof Error) {
122
+ return {
123
+ name: value.name,
124
+ message: value.message,
125
+ stack: value.stack,
126
+ };
127
+ }
128
+
129
+ if (typeof value === "string") {
130
+ return value.length > 500 ? `${value.slice(0, 500)}…` : value;
131
+ }
132
+
133
+ return value;
134
+ }
135
+
136
+ function logProviderToolPart(
137
+ partType: "tool-result" | "tool-error",
138
+ part: {
139
+ toolCallId: string;
140
+ toolName: string;
141
+ providerExecuted?: boolean;
142
+ dynamic?: boolean;
143
+ output?: unknown;
144
+ error?: unknown;
145
+ input?: unknown;
146
+ preliminary?: boolean;
147
+ isError?: boolean;
148
+ },
149
+ ): void {
150
+ if (!isAnyDebugEnabled({ get: getHostEnv })) {
151
+ return;
152
+ }
153
+
154
+ if (part.providerExecuted !== true) {
155
+ return;
156
+ }
157
+
158
+ if (part.toolName !== "web_search" && part.toolName !== "web_fetch") {
159
+ return;
160
+ }
161
+
162
+ logger.debug("Provider tool stream part observed", {
163
+ partType,
164
+ toolCallId: part.toolCallId,
165
+ toolName: part.toolName,
166
+ providerExecuted: part.providerExecuted,
167
+ dynamic: part.dynamic,
168
+ preliminary: part.preliminary,
169
+ isError: part.isError,
170
+ outputType: typeof part.output,
171
+ errorType: typeof part.error,
172
+ inputType: typeof part.input,
173
+ output: summarizeDebugValue(part.output),
174
+ error: summarizeDebugValue(part.error),
175
+ input: summarizeDebugValue(part.input),
176
+ });
177
+ }
178
+
118
179
  export function createStreamState(): AIStreamState {
119
180
  return {
120
181
  accumulatedText: "",
@@ -228,6 +289,16 @@ export function processStream(
228
289
 
229
290
  case "tool-result": {
230
291
  const isError = "isError" in part && part.isError === true;
292
+ logProviderToolPart("tool-result", {
293
+ toolCallId: part.toolCallId,
294
+ toolName: part.toolName,
295
+ providerExecuted: "providerExecuted" in part ? part.providerExecuted : undefined,
296
+ dynamic: "dynamic" in part ? part.dynamic : undefined,
297
+ output: part.output,
298
+ input: "input" in part ? part.input : undefined,
299
+ preliminary: "preliminary" in part ? part.preliminary : undefined,
300
+ isError,
301
+ });
231
302
  if (isError) {
232
303
  state.toolResults.push({
233
304
  toolCallId: part.toolCallId,
@@ -278,6 +349,14 @@ export function processStream(
278
349
  }
279
350
 
280
351
  case "tool-error": {
352
+ logProviderToolPart("tool-error", {
353
+ toolCallId: part.toolCallId,
354
+ toolName: part.toolName,
355
+ providerExecuted: "providerExecuted" in part ? part.providerExecuted : undefined,
356
+ dynamic: "dynamic" in part ? part.dynamic : undefined,
357
+ error: part.error,
358
+ input: "input" in part ? part.input : undefined,
359
+ });
281
360
  state.toolResults.push({
282
361
  toolCallId: part.toolCallId,
283
362
  toolName: part.toolName,
@@ -1,3 +1,3 @@
1
1
  // Keep in sync with deno.json version.
2
2
  // scripts/release.ts updates this constant during releases.
3
- export const VERSION = "0.1.139";
3
+ export const VERSION = "0.1.140";