veryfront 0.1.180 → 0.1.181

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.
@@ -1,17 +1,10 @@
1
- import * as dntShim from "../../_dnt.shims.js";
1
+ import { createAgUiBrowserEncoderState, finalizeAgUiBrowserEvents, mapRuntimeStreamEventToAgUiBrowserEvents, } from "../agent/ag-ui-browser-encoder.js";
2
2
  import { serverLogger } from "../utils/index.js";
3
3
  import { z } from "zod";
4
4
  const encoder = new TextEncoder();
5
5
  const logger = serverLogger.component("internal-agents-ag-ui-sse");
6
6
  export function createStreamTransformState() {
7
- return {
8
- messageId: null,
9
- textOpen: false,
10
- reasoningMessageId: null,
11
- sawVisibleOutput: false,
12
- sawTerminalError: false,
13
- metadata: {},
14
- };
7
+ return createAgUiBrowserEncoderState();
15
8
  }
16
9
  const agUiEventPayloadSchemas = {
17
10
  RunStarted: z.object({
@@ -53,6 +46,12 @@ const agUiEventPayloadSchemas = {
53
46
  ReasoningMessageEnd: z.object({
54
47
  messageId: z.string().min(1),
55
48
  }),
49
+ StepStarted: z.object({
50
+ stepName: z.string().min(1),
51
+ }),
52
+ StepFinished: z.object({
53
+ stepName: z.string().min(1),
54
+ }),
56
55
  ToolCallStart: z.object({
57
56
  toolCallId: z.string().min(1),
58
57
  toolCallName: z.string().min(1),
@@ -69,6 +68,10 @@ const agUiEventPayloadSchemas = {
69
68
  result: z.unknown(),
70
69
  isError: z.boolean().optional(),
71
70
  }),
71
+ Custom: z.object({
72
+ name: z.string().min(1),
73
+ value: z.unknown(),
74
+ }),
72
75
  RunError: z.object({
73
76
  code: z.string().min(1).optional(),
74
77
  message: z.string().min(1),
@@ -113,216 +116,9 @@ export function parseSseJsonEvents(chunk) {
113
116
  });
114
117
  return { events, remainder };
115
118
  }
116
- function getMessageId(state, event) {
117
- if (typeof event.messageId === "string") {
118
- state.messageId = event.messageId;
119
- return event.messageId;
120
- }
121
- if (!state.messageId && typeof event.id === "string") {
122
- state.messageId = event.id;
123
- }
124
- if (!state.messageId) {
125
- state.messageId = dntShim.crypto.randomUUID();
126
- }
127
- return state.messageId;
128
- }
129
- function getReasoningMessageId(state, event) {
130
- if (typeof event.id === "string" && event.id.length > 0) {
131
- state.reasoningMessageId = state.messageId
132
- ? `${state.messageId}:reasoning:${event.id}`
133
- : event.id;
134
- return state.reasoningMessageId;
135
- }
136
- if (!state.reasoningMessageId) {
137
- state.reasoningMessageId = state.messageId
138
- ? `${state.messageId}:reasoning:${dntShim.crypto.randomUUID()}`
139
- : dntShim.crypto.randomUUID();
140
- }
141
- return state.reasoningMessageId;
142
- }
143
- function applyDataMetadata(state, event) {
144
- const data = event.data && typeof event.data === "object" && !Array.isArray(event.data)
145
- ? event.data
146
- : event;
147
- if (typeof data.model === "string") {
148
- state.metadata.model = data.model;
149
- const provider = data.model.split("/")[0];
150
- if (provider) {
151
- state.metadata.provider = provider;
152
- }
153
- }
154
- }
155
- function applyResponseMetadata(state, response) {
156
- if (!response)
157
- return;
158
- if (response.usage) {
159
- state.metadata.inputTokens = response.usage.promptTokens;
160
- state.metadata.outputTokens = response.usage.completionTokens;
161
- state.metadata.totalTokens = response.usage.totalTokens;
162
- }
163
- const finishReason = response.metadata && typeof response.metadata === "object"
164
- ? response.metadata.finishReason
165
- : undefined;
166
- if (typeof finishReason === "string") {
167
- state.metadata.finishReason = finishReason;
168
- }
169
- }
170
119
  export function mapRuntimeEventToAgUi(state, event) {
171
- switch (event.type) {
172
- case "message-start":
173
- getMessageId(state, event);
174
- return [];
175
- case "text-start": {
176
- if (state.textOpen)
177
- return [];
178
- const messageId = getMessageId(state, event);
179
- state.textOpen = true;
180
- state.sawVisibleOutput = true;
181
- return [{
182
- event: "TextMessageStart",
183
- payload: { messageId, role: "assistant" },
184
- }];
185
- }
186
- case "text-delta": {
187
- const messageId = getMessageId(state, event);
188
- state.sawVisibleOutput = true;
189
- if (!state.textOpen) {
190
- state.textOpen = true;
191
- return [
192
- { event: "TextMessageStart", payload: { messageId, role: "assistant" } },
193
- {
194
- event: "TextMessageContent",
195
- payload: { messageId, delta: typeof event.delta === "string" ? event.delta : "" },
196
- },
197
- ];
198
- }
199
- return [{
200
- event: "TextMessageContent",
201
- payload: { messageId, delta: typeof event.delta === "string" ? event.delta : "" },
202
- }];
203
- }
204
- case "text-end": {
205
- if (!state.textOpen)
206
- return [];
207
- state.textOpen = false;
208
- return [{
209
- event: "TextMessageEnd",
210
- payload: { messageId: getMessageId(state, event) },
211
- }];
212
- }
213
- case "reasoning-start":
214
- state.sawVisibleOutput = true;
215
- return [{
216
- event: "ReasoningMessageStart",
217
- payload: { messageId: getReasoningMessageId(state, event), role: "reasoning" },
218
- }];
219
- case "reasoning-delta":
220
- state.sawVisibleOutput = true;
221
- return [{
222
- event: "ReasoningMessageContent",
223
- payload: {
224
- messageId: getReasoningMessageId(state, event),
225
- delta: typeof event.delta === "string" ? event.delta : "",
226
- },
227
- }];
228
- case "reasoning-end": {
229
- const messageId = getReasoningMessageId(state, event);
230
- state.reasoningMessageId = null;
231
- return [{
232
- event: "ReasoningMessageEnd",
233
- payload: { messageId },
234
- }];
235
- }
236
- case "tool-input-start":
237
- state.sawVisibleOutput = true;
238
- return [{
239
- event: "ToolCallStart",
240
- payload: {
241
- toolCallId: event.toolCallId,
242
- toolCallName: event.toolName,
243
- },
244
- }];
245
- case "tool-input-delta":
246
- state.sawVisibleOutput = true;
247
- return [{
248
- event: "ToolCallArgs",
249
- payload: {
250
- toolCallId: event.toolCallId,
251
- delta: typeof event.inputTextDelta === "string" ? event.inputTextDelta : "",
252
- },
253
- }];
254
- case "tool-input-available":
255
- state.sawVisibleOutput = true;
256
- return [{
257
- event: "ToolCallEnd",
258
- payload: { toolCallId: event.toolCallId },
259
- }];
260
- case "tool-output-available":
261
- state.sawVisibleOutput = true;
262
- return [{
263
- event: "ToolCallResult",
264
- payload: {
265
- toolCallId: event.toolCallId,
266
- result: event.output,
267
- },
268
- }];
269
- case "tool-output-error":
270
- state.sawVisibleOutput = true;
271
- return [{
272
- event: "ToolCallResult",
273
- payload: {
274
- toolCallId: event.toolCallId,
275
- result: { error: event.errorText },
276
- isError: true,
277
- },
278
- }];
279
- case "step-start":
280
- return [];
281
- case "step-end":
282
- return [];
283
- case "data":
284
- applyDataMetadata(state, event);
285
- return [];
286
- case "error":
287
- state.sawTerminalError = true;
288
- return [{
289
- event: "RunError",
290
- payload: {
291
- message: typeof event.error === "string" ? event.error : "Agent run failed",
292
- },
293
- }];
294
- default:
295
- return [];
296
- }
120
+ return mapRuntimeStreamEventToAgUiBrowserEvents(state, event);
297
121
  }
298
122
  export function finalizeRunEvents(state, response) {
299
- applyResponseMetadata(state, response);
300
- if (state.sawTerminalError) {
301
- return [];
302
- }
303
- if (!state.sawVisibleOutput) {
304
- state.sawTerminalError = true;
305
- return [{
306
- event: "RunError",
307
- payload: {
308
- code: "EMPTY_ASSISTANT_OUTPUT",
309
- message: "Agent run produced no assistant-visible output",
310
- },
311
- }];
312
- }
313
- const events = [];
314
- if (state.textOpen) {
315
- state.textOpen = false;
316
- events.push({
317
- event: "TextMessageEnd",
318
- payload: { messageId: getMessageId(state, { type: "text-end" }) },
319
- });
320
- }
321
- events.push({
322
- event: "RunFinished",
323
- payload: {
324
- metadata: state.metadata,
325
- },
326
- });
327
- return events;
123
+ return finalizeAgUiBrowserEvents(state, response);
328
124
  }
@@ -77,6 +77,7 @@ export declare class RenderPipeline {
77
77
  resolvePageData(slug: string, options?: RenderOptions): Promise<PageDataResponse>;
78
78
  private extractMdxMetadata;
79
79
  private resolveAppPath;
80
+ private resolveProjectUpdatedAt;
80
81
  private resolvePageDataCss;
81
82
  private generatePageCssFromHtml;
82
83
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../../../src/src/rendering/orchestrator/pipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAgBH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AA6ChF,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAE1D;;;;GAIG;AACH,MAAM,WAAW,wBAAwB;IACvC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACxE,aAAa,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrF;AAED,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,YAAY,CAAC;IAC3B,gBAAgB,EAAE,wBAAwB,CAAC;IAC3C,YAAY,EAAE,YAAY,CAAC;IAC3B,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,eAAe,EAAE,eAAe,CAAC;IACjC,OAAO,EAAE,cAAc,CAAC;IACxB,IAAI,EAAE,aAAa,GAAG,YAAY,CAAC;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,8EAA8E;IAC9E,iBAAiB,CAAC,EAAE,OAAO,qBAAqB,EAAE,sBAAsB,CAAC;CAC1E;AAyBD,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,kBAAkB,CAAqB;gBAEnC,MAAM,EAAE,oBAAoB;IAaxC;;;OAGG;IACH,gBAAgB,IAAI,IAAI;IAKxB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,sBAAsB;YAIhB,0BAA0B;IAaxC;;;;;;;;;OASG;YACW,qBAAqB;IAyDnC;;;OAGG;YACW,mBAAmB;IAiGjC,OAAO,CAAC,uBAAuB;IAkCzB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IA+P9E,+EAA+E;IACzE,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC;YA+FzE,kBAAkB;YA2ClB,cAAc;YAWd,kBAAkB;YAmElB,uBAAuB;IAmBrC;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;CAetB"}
1
+ {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../../../src/src/rendering/orchestrator/pipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAgBH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AA6ChF,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAE1D;;;;GAIG;AACH,MAAM,WAAW,wBAAwB;IACvC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACxE,aAAa,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrF;AAED,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,YAAY,CAAC;IAC3B,gBAAgB,EAAE,wBAAwB,CAAC;IAC3C,YAAY,EAAE,YAAY,CAAC;IAC3B,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,eAAe,EAAE,eAAe,CAAC;IACjC,OAAO,EAAE,cAAc,CAAC;IACxB,IAAI,EAAE,aAAa,GAAG,YAAY,CAAC;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,8EAA8E;IAC9E,iBAAiB,CAAC,EAAE,OAAO,qBAAqB,EAAE,sBAAsB,CAAC;CAC1E;AAyBD,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,kBAAkB,CAAqB;gBAEnC,MAAM,EAAE,oBAAoB;IAaxC;;;OAGG;IACH,gBAAgB,IAAI,IAAI;IAKxB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,sBAAsB;YAIhB,0BAA0B;IAaxC;;;;;;;;;OASG;YACW,qBAAqB;IAyDnC;;;OAGG;YACW,mBAAmB;IAiGjC,OAAO,CAAC,uBAAuB;IAkCzB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IA+P9E,+EAA+E;IACzE,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC;YAwFzE,kBAAkB;YA2ClB,cAAc;IAW5B,OAAO,CAAC,uBAAuB;YAYjB,kBAAkB;YAmElB,uBAAuB;IAmBrC;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;CAetB"}
@@ -419,12 +419,7 @@ export class RenderPipeline {
419
419
  path: extractRelativePathShared(l.componentPath || l.path || "", this.config.projectDir),
420
420
  }));
421
421
  const providers = [];
422
- let projectUpdatedAt;
423
- const fs = this.config.adapter?.fs;
424
- if (fs && isExtendedFSAdapter(fs) && fs.isVeryfrontAdapter()) {
425
- const wrappedAdapter = fs.getUnderlyingAdapter();
426
- projectUpdatedAt = wrappedAdapter.getProjectData?.()?.updated_at;
427
- }
422
+ const projectUpdatedAt = this.resolveProjectUpdatedAt();
428
423
  const appPath = await this.resolveAppPath();
429
424
  const { css, cssError } = await this.resolvePageDataCss(slug, options, projectUpdatedAt);
430
425
  resolvePageDataLog.debug("Resolved page data", {
@@ -491,6 +486,14 @@ export class RenderPipeline {
491
486
  }
492
487
  return undefined;
493
488
  }
489
+ resolveProjectUpdatedAt() {
490
+ const fs = this.config.adapter?.fs;
491
+ if (!fs || !isExtendedFSAdapter(fs) || !fs.isVeryfrontAdapter()) {
492
+ return undefined;
493
+ }
494
+ const wrappedAdapter = fs.getUnderlyingAdapter();
495
+ return wrappedAdapter.getProjectData?.()?.updated_at;
496
+ }
494
497
  async resolvePageDataCss(slug, options, projectUpdatedAt) {
495
498
  const cssCacheKey = getPageCssCacheKey(options?.projectId, options?.environment, slug, projectUpdatedAt);
496
499
  const cachedCss = getCachedPageCss(cssCacheKey);
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "0.1.180";
1
+ export declare const VERSION = "0.1.181";
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.180";
3
+ export const VERSION = "0.1.181";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "veryfront",
3
- "version": "0.1.180",
3
+ "version": "0.1.181",
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.180",
3
+ "version": "0.1.181",
4
4
  "license": "Apache-2.0",
5
5
  "nodeModulesDir": "auto",
6
6
  "exclude": [