veryfront 0.1.167 → 0.1.169

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.167",
3
+ "version": "0.1.169",
4
4
  "license": "Apache-2.0",
5
5
  "nodeModulesDir": "auto",
6
6
  "exclude": [
@@ -1 +1 @@
1
- {"version":3,"file":"chat-stream-handler.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/runtime/chat-stream-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAqB,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAWtF,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,eAAe;IAC9B,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,mBAAmB;IAClC,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;AA4FD,wBAAgB,iBAAiB,IAAI,eAAe,CAQnD;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,mBAAmB,EAC3B,KAAK,EAAE,eAAe,EACtB,UAAU,EAAE,+BAA+B,EAC3C,OAAO,EAAE,WAAW,EACpB,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,SAAS,CAAC,EAAE,mBAAmB,EAC/B,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,IAAI,CAAC,CA0Nf"}
1
+ {"version":3,"file":"chat-stream-handler.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/runtime/chat-stream-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAqB,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAWtF,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,eAAe;IAC9B,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,mBAAmB;IAClC,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;AA4FD,wBAAgB,iBAAiB,IAAI,eAAe,CAQnD;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,mBAAmB,EAC3B,KAAK,EAAE,eAAe,EACtB,UAAU,EAAE,+BAA+B,EAC3C,OAAO,EAAE,WAAW,EACpB,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,SAAS,CAAC,EAAE,mBAAmB,EAC/B,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,IAAI,CAAC,CAmPf"}
@@ -121,6 +121,28 @@ export function processStream(result, state, controller, encoder, textPartId, ca
121
121
  callbacks?.onChunk?.(typedPart.text);
122
122
  break;
123
123
  }
124
+ case "reasoning-start": {
125
+ sendSSE(controller, encoder, {
126
+ type: "reasoning-start",
127
+ id: typeof typedPart.id === "string" ? typedPart.id : "reasoning",
128
+ });
129
+ break;
130
+ }
131
+ case "reasoning-delta": {
132
+ sendSSE(controller, encoder, {
133
+ type: "reasoning-delta",
134
+ id: typeof typedPart.id === "string" ? typedPart.id : "reasoning",
135
+ delta: typeof typedPart.delta === "string" ? typedPart.delta : "",
136
+ });
137
+ break;
138
+ }
139
+ case "reasoning-end": {
140
+ sendSSE(controller, encoder, {
141
+ type: "reasoning-end",
142
+ id: typeof typedPart.id === "string" ? typedPart.id : "reasoning",
143
+ });
144
+ break;
145
+ }
124
146
  case "tool-input-start": {
125
147
  const toolId = typedPart.id;
126
148
  state.toolCalls.set(toolId, {
@@ -48,6 +48,16 @@ export type RuntimeToolCallRepairFunction = (context: RuntimeToolCallRepairConte
48
48
  export type RuntimeStreamPart = {
49
49
  type: "text-delta";
50
50
  text: string;
51
+ } | {
52
+ type: "reasoning-start";
53
+ id: string;
54
+ } | {
55
+ type: "reasoning-delta";
56
+ id: string;
57
+ delta: string;
58
+ } | {
59
+ type: "reasoning-end";
60
+ id: string;
51
61
  } | {
52
62
  type: "tool-input-start";
53
63
  id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-tool-types.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/runtime/runtime-tool-types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime-tool-types.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/runtime/runtime-tool-types.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,7 @@ export interface RunFinishedMetadata {
13
13
  export interface StreamTransformState {
14
14
  messageId: string | null;
15
15
  textOpen: boolean;
16
+ reasoningMessageId: string | null;
16
17
  sawVisibleOutput: boolean;
17
18
  sawTerminalError: boolean;
18
19
  metadata: RunFinishedMetadata;
@@ -1 +1 @@
1
- {"version":3,"file":"ag-ui-sse.d.ts","sourceRoot":"","sources":["../../../src/src/internal-agents/ag-ui-sse.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAOvD,KAAK,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,OAAO,CAAC;IAClB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,QAAQ,EAAE,mBAAmB,CAAC;CAC/B;AAED,wBAAgB,0BAA0B,IAAI,oBAAoB,CAQjE;AAiED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,UAAU,CAI3F;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG;IACjD,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;CACnB,CAyBA;AAkDD,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,oBAAoB,EAC3B,KAAK,EAAE,gBAAgB,GACtB,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC,CAoH5D;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,oBAAoB,EAC3B,QAAQ,EAAE,aAAa,GAAG,IAAI,GAC7B,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC,CAmC5D"}
1
+ {"version":3,"file":"ag-ui-sse.d.ts","sourceRoot":"","sources":["../../../src/src/internal-agents/ag-ui-sse.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAOvD,KAAK,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,OAAO,CAAC;IAClB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,QAAQ,EAAE,mBAAmB,CAAC;CAC/B;AAED,wBAAgB,0BAA0B,IAAI,oBAAoB,CASjE;AA4ED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,UAAU,CAI3F;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG;IACjD,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;CACnB,CAyBA;AAmED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,oBAAoB,EAC3B,KAAK,EAAE,gBAAgB,GACtB,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC,CA8I5D;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,oBAAoB,EAC3B,QAAQ,EAAE,aAAa,GAAG,IAAI,GAC7B,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC,CAmC5D"}
@@ -7,6 +7,7 @@ export function createStreamTransformState() {
7
7
  return {
8
8
  messageId: null,
9
9
  textOpen: false,
10
+ reasoningMessageId: null,
10
11
  sawVisibleOutput: false,
11
12
  sawTerminalError: false,
12
13
  metadata: {},
@@ -41,6 +42,17 @@ const agUiEventPayloadSchemas = {
41
42
  TextMessageEnd: z.object({
42
43
  messageId: z.string().min(1),
43
44
  }),
45
+ ReasoningMessageStart: z.object({
46
+ messageId: z.string().min(1),
47
+ role: z.literal("reasoning"),
48
+ }),
49
+ ReasoningMessageContent: z.object({
50
+ messageId: z.string().min(1),
51
+ delta: z.string(),
52
+ }),
53
+ ReasoningMessageEnd: z.object({
54
+ messageId: z.string().min(1),
55
+ }),
44
56
  ToolCallStart: z.object({
45
57
  toolCallId: z.string().min(1),
46
58
  toolCallName: z.string().min(1),
@@ -114,6 +126,20 @@ function getMessageId(state, event) {
114
126
  }
115
127
  return state.messageId;
116
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
+ }
117
143
  function applyDataMetadata(state, event) {
118
144
  const data = event.data && typeof event.data === "object" && !Array.isArray(event.data)
119
145
  ? event.data
@@ -184,6 +210,29 @@ export function mapRuntimeEventToAgUi(state, event) {
184
210
  payload: { messageId: getMessageId(state, event) },
185
211
  }];
186
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
+ }
187
236
  case "tool-input-start":
188
237
  state.sawVisibleOutput = true;
189
238
  return [{
@@ -9,4 +9,6 @@ export declare function loadVeryfrontExportsMap(projectDir: string, fs: FileSyst
9
9
  }>>;
10
10
  export declare function rewriteNodeExternalImports(code: string, projectDir: string, fs: FileSystem, userDeps: Map<string, string>): Promise<string>;
11
11
  export declare function rewriteCompiledBinaryVeryfrontImports(code: string): string;
12
+ export declare function rewriteCompiledBinaryUserDependencyImports(code: string, userDeps: Map<string, string>): string;
13
+ export declare function rewriteDenoNpmDependencyImports(code: string, projectDir: string, fs: FileSystem, userDeps: Map<string, string>): Promise<string>;
12
14
  //# sourceMappingURL=loader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../../../src/src/routing/api/module-loader/loader.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAI9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AA4KjE,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAejE;AAgBD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAyBtF;AAuaD,wBAAgB,gCAAgC,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,EAAE,CAUxF;AAED,wBAAsB,2BAA2B,CAC/C,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,EAAE,EAAE,UAAU,EACd,aAAa,EAAE,cAAc,UAAU,EAAE,aAAa,GACrD,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAoBxB;AAED,wBAAsB,uBAAuB,CAC3C,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,UAAU,GACb,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAW9C;AAED,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,UAAU,EACd,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAC5B,OAAO,CAAC,MAAM,CAAC,CA6EjB;AAED,wBAAgB,qCAAqC,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAqB1E"}
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../../../src/src/routing/api/module-loader/loader.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAI9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AA4KjE,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAejE;AAgBD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAyBtF;AAuaD,wBAAgB,gCAAgC,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,EAAE,CAUxF;AAED,wBAAsB,2BAA2B,CAC/C,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,EAAE,EAAE,UAAU,EACd,aAAa,EAAE,cAAc,UAAU,EAAE,aAAa,GACrD,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAoBxB;AAED,wBAAsB,uBAAuB,CAC3C,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,UAAU,GACb,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAW9C;AAED,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,UAAU,EACd,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAC5B,OAAO,CAAC,MAAM,CAAC,CA6EjB;AAED,wBAAgB,qCAAqC,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAqB1E;AAED,wBAAgB,0CAA0C,CACxD,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAC5B,MAAM,CAoDR;AAED,wBAAsB,+BAA+B,CACnD,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,UAAU,EACd,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAC5B,OAAO,CAAC,MAAM,CAAC,CA0BjB"}
@@ -623,6 +623,51 @@ export function rewriteCompiledBinaryVeryfrontImports(code) {
623
623
  transformed = transformed.replace(/import\s*\(\s*["']veryfront\/([^"']+)["']\s*\)/g, (_match, subpath) => `import("./_vf_${subpath.replace(/\//g, "_")}.mjs")`);
624
624
  return transformed;
625
625
  }
626
+ export function rewriteCompiledBinaryUserDependencyImports(code, userDeps) {
627
+ let transformed = code;
628
+ for (const name of userDeps.keys()) {
629
+ const escaped = name.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
630
+ transformed = transformed.replace(new RegExp(`import\\s+(\\w+)\\s+from\\s+["']${escaped}["']`, "g"), (_, localName) => `const ${localName} = __vf_interopDefault(require("${name}"))`);
631
+ transformed = transformed.replace(new RegExp(`import\\s+(\\{[^}]+\\})\\s+from\\s+["']${escaped}["']`, "g"), (_, bindings) => `const ${toCjsDestructureBindings(bindings)} = require("${name}")`);
632
+ transformed = transformed.replace(new RegExp(`import\\s+\\*\\s+as\\s+(\\w+)\\s+from\\s+["']${escaped}["']`, "g"), (_, localName) => `const ${localName} = require("${name}")`);
633
+ transformed = transformed.replace(new RegExp(`import\\s+(\\w+)\\s*,\\s*(\\{[^}]+\\})\\s+from\\s+["']${escaped}["']`, "g"), (_, defaultName, bindings) => {
634
+ const tmp = `__vf_tmp_${defaultName}`;
635
+ return `const ${tmp} = require("${name}"); const ${defaultName} = __vf_interopDefault(${tmp}); const ${toCjsDestructureBindings(bindings)} = ${tmp}`;
636
+ });
637
+ transformed = transformed.replace(new RegExp(`import\\s+(\\w+|\\*\\s+as\\s+\\w+|\\{[^}]+\\})\\s+from\\s+["']${escaped}(/[^"']+)["']`, "g"), (_, binding, subpath) => {
638
+ const trimmedBinding = String(binding).trim();
639
+ if (trimmedBinding.startsWith("{")) {
640
+ return `const ${toCjsDestructureBindings(trimmedBinding)} = require("${name}${subpath}")`;
641
+ }
642
+ const name_ = trimmedBinding.startsWith("*")
643
+ ? trimmedBinding.replace(/\*\s+as\s+/, "")
644
+ : trimmedBinding;
645
+ return `const ${name_} = require("${name}${subpath}")`;
646
+ });
647
+ transformed = transformed.replace(new RegExp(`import\\s*\\(\\s*["']${escaped}(/[^"']*)?["']\\s*\\)`, "g"), (_, subpath) => `Promise.resolve(require("${name}${subpath || ""}"))`);
648
+ }
649
+ return transformed;
650
+ }
651
+ export async function rewriteDenoNpmDependencyImports(code, projectDir, fs, userDeps) {
652
+ let transformed = code;
653
+ for (const [name, version] of userDeps) {
654
+ const escaped = name.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
655
+ let resolvedVersion = version;
656
+ try {
657
+ const pkgPath = pathHelper.join(projectDir, "node_modules", name, "package.json");
658
+ const pkgContent = await fs.readTextFile(pkgPath);
659
+ const pkg = JSON.parse(pkgContent);
660
+ if (pkg.version)
661
+ resolvedVersion = pkg.version;
662
+ }
663
+ catch (_) {
664
+ /* expected: installed package.json may not exist, fall back to declared range */
665
+ }
666
+ transformed = transformed.replace(new RegExp(`from\\s+["']${escaped}(/[^"']*)?["']`, "g"), (_, subpath) => `from "npm:${name}@${resolvedVersion}${subpath || ""}"`);
667
+ transformed = transformed.replace(new RegExp(`import\\s*\\(\\s*["']${escaped}(/[^"']*)?["']\\s*\\)`, "g"), (_, subpath) => `import("npm:${name}@${resolvedVersion}${subpath || ""}")`);
668
+ }
669
+ return transformed;
670
+ }
626
671
  async function rewriteExternalImports(code, projectDir, fs, userDeps = new Map()) {
627
672
  let transformed = code;
628
673
  if (isNode) {
@@ -648,55 +693,10 @@ async function rewriteExternalImports(code, projectDir, fs, userDeps = new Map()
648
693
  // injected by the esbuild banner) to load CJS packages from node_modules,
649
694
  // since npm: specifiers only work for packages embedded at compile time.
650
695
  if (isCompiledBinary()) {
651
- for (const name of userDeps.keys()) {
652
- const escaped = name.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
653
- // Default imports: import foo from "pkg" → const foo = __vf_interopDefault(require("pkg"))
654
- // interopDefault unwraps .default for ESM packages transpiled to CJS
655
- transformed = transformed.replace(new RegExp(`import\\s+(\\w+)\\s+from\\s+["']${escaped}["']`, "g"), (_, localName) => `const ${localName} = __vf_interopDefault(require("${name}"))`);
656
- // Named imports: import { a, b } from "pkg" → const { a, b } = require("pkg")
657
- transformed = transformed.replace(new RegExp(`import\\s+(\\{[^}]+\\})\\s+from\\s+["']${escaped}["']`, "g"), (_, bindings) => `const ${toCjsDestructureBindings(bindings)} = require("${name}")`);
658
- // Namespace imports: import * as foo from "pkg" → const foo = require("pkg")
659
- transformed = transformed.replace(new RegExp(`import\\s+\\*\\s+as\\s+(\\w+)\\s+from\\s+["']${escaped}["']`, "g"), (_, localName) => `const ${localName} = require("${name}")`);
660
- // Mixed imports: import foo, { bar } from "pkg"
661
- transformed = transformed.replace(new RegExp(`import\\s+(\\w+)\\s*,\\s*(\\{[^}]+\\})\\s+from\\s+["']${escaped}["']`, "g"), (_, defaultName, bindings) => {
662
- const tmp = `__vf_tmp_${defaultName}`;
663
- return `const ${tmp} = require("${name}"); const ${defaultName} = __vf_interopDefault(${tmp}); const ${toCjsDestructureBindings(bindings)} = ${tmp}`;
664
- });
665
- // Subpath static imports: from "pkg/sub" → require("pkg/sub")
666
- transformed = transformed.replace(new RegExp(`import\\s+(\\w+|\\*\\s+as\\s+\\w+|\\{[^}]+\\})\\s+from\\s+["']${escaped}(/[^"']+)["']`, "g"), (_, binding, subpath) => {
667
- const trimmedBinding = String(binding).trim();
668
- if (trimmedBinding.startsWith("{")) {
669
- return `const ${toCjsDestructureBindings(trimmedBinding)} = require("${name}${subpath}")`;
670
- }
671
- const name_ = trimmedBinding.startsWith("*")
672
- ? trimmedBinding.replace(/\*\s+as\s+/, "")
673
- : trimmedBinding;
674
- return `const ${name_} = require("${name}${subpath}")`;
675
- });
676
- // Dynamic imports: import("pkg") → Promise.resolve(require("pkg"))
677
- transformed = transformed.replace(new RegExp(`import\\s*\\(\\s*["']${escaped}(/[^"']*)?["']\\s*\\)`, "g"), (_, subpath) => `Promise.resolve(require("${name}${subpath || ""}"))`);
678
- }
696
+ transformed = rewriteCompiledBinaryUserDependencyImports(transformed, userDeps);
679
697
  }
680
698
  else {
681
- for (const [name, version] of userDeps) {
682
- const escaped = name.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
683
- // Resolve exact installed version from node_modules (falls back to range)
684
- let resolvedVersion = version;
685
- try {
686
- const pkgPath = pathHelper.join(projectDir, "node_modules", name, "package.json");
687
- const pkgContent = await fs.readTextFile(pkgPath);
688
- const pkg = JSON.parse(pkgContent);
689
- if (pkg.version)
690
- resolvedVersion = pkg.version;
691
- }
692
- catch (_) {
693
- /* expected: installed package.json may not exist, fall back to declared range */
694
- }
695
- // Static: from "pkg" and from "pkg/sub"
696
- transformed = transformed.replace(new RegExp(`from\\s+["']${escaped}(/[^"']*)?["']`, "g"), (_, subpath) => `from "npm:${name}@${resolvedVersion}${subpath || ""}"`);
697
- // Dynamic: import("pkg") and import("pkg/sub")
698
- transformed = transformed.replace(new RegExp(`import\\s*\\(\\s*["']${escaped}(/[^"']*)?["']\\s*\\)`, "g"), (_, subpath) => `import("npm:${name}@${resolvedVersion}${subpath || ""}")`);
699
- }
699
+ transformed = await rewriteDenoNpmDependencyImports(transformed, projectDir, fs, userDeps);
700
700
  }
701
701
  // In compiled binaries, "veryfront" resolves to embedded source that can't be
702
702
  // imported from external temp files. Rewrite to use local runtime shims.
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "0.1.167";
1
+ export declare const VERSION = "0.1.169";
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.167";
3
+ export const VERSION = "0.1.169";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "veryfront",
3
- "version": "0.1.167",
3
+ "version": "0.1.169",
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.167",
3
+ "version": "0.1.169",
4
4
  "license": "Apache-2.0",
5
5
  "nodeModulesDir": "auto",
6
6
  "exclude": [
@@ -200,6 +200,31 @@ export function processStream(
200
200
  break;
201
201
  }
202
202
 
203
+ case "reasoning-start": {
204
+ sendSSE(controller, encoder, {
205
+ type: "reasoning-start",
206
+ id: typeof typedPart.id === "string" ? typedPart.id : "reasoning",
207
+ });
208
+ break;
209
+ }
210
+
211
+ case "reasoning-delta": {
212
+ sendSSE(controller, encoder, {
213
+ type: "reasoning-delta",
214
+ id: typeof typedPart.id === "string" ? typedPart.id : "reasoning",
215
+ delta: typeof typedPart.delta === "string" ? typedPart.delta : "",
216
+ });
217
+ break;
218
+ }
219
+
220
+ case "reasoning-end": {
221
+ sendSSE(controller, encoder, {
222
+ type: "reasoning-end",
223
+ id: typeof typedPart.id === "string" ? typedPart.id : "reasoning",
224
+ });
225
+ break;
226
+ }
227
+
203
228
  case "tool-input-start": {
204
229
  const toolId = typedPart.id;
205
230
  state.toolCalls.set(toolId, {
@@ -59,6 +59,9 @@ export type RuntimeToolCallRepairFunction = (
59
59
 
60
60
  export type RuntimeStreamPart =
61
61
  | { type: "text-delta"; text: string }
62
+ | { type: "reasoning-start"; id: string }
63
+ | { type: "reasoning-delta"; id: string; delta: string }
64
+ | { type: "reasoning-end"; id: string }
62
65
  | {
63
66
  type: "tool-input-start";
64
67
  id: string;
@@ -20,6 +20,7 @@ export interface RunFinishedMetadata {
20
20
  export interface StreamTransformState {
21
21
  messageId: string | null;
22
22
  textOpen: boolean;
23
+ reasoningMessageId: string | null;
23
24
  sawVisibleOutput: boolean;
24
25
  sawTerminalError: boolean;
25
26
  metadata: RunFinishedMetadata;
@@ -29,6 +30,7 @@ export function createStreamTransformState(): StreamTransformState {
29
30
  return {
30
31
  messageId: null,
31
32
  textOpen: false,
33
+ reasoningMessageId: null,
32
34
  sawVisibleOutput: false,
33
35
  sawTerminalError: false,
34
36
  metadata: {},
@@ -64,6 +66,17 @@ const agUiEventPayloadSchemas = {
64
66
  TextMessageEnd: z.object({
65
67
  messageId: z.string().min(1),
66
68
  }),
69
+ ReasoningMessageStart: z.object({
70
+ messageId: z.string().min(1),
71
+ role: z.literal("reasoning"),
72
+ }),
73
+ ReasoningMessageContent: z.object({
74
+ messageId: z.string().min(1),
75
+ delta: z.string(),
76
+ }),
77
+ ReasoningMessageEnd: z.object({
78
+ messageId: z.string().min(1),
79
+ }),
67
80
  ToolCallStart: z.object({
68
81
  toolCallId: z.string().min(1),
69
82
  toolCallName: z.string().min(1),
@@ -151,6 +164,23 @@ function getMessageId(state: StreamTransformState, event: RuntimeDataEvent): str
151
164
  return state.messageId;
152
165
  }
153
166
 
167
+ function getReasoningMessageId(state: StreamTransformState, event: RuntimeDataEvent): string {
168
+ if (typeof event.id === "string" && event.id.length > 0) {
169
+ state.reasoningMessageId = state.messageId
170
+ ? `${state.messageId}:reasoning:${event.id}`
171
+ : event.id;
172
+ return state.reasoningMessageId;
173
+ }
174
+
175
+ if (!state.reasoningMessageId) {
176
+ state.reasoningMessageId = state.messageId
177
+ ? `${state.messageId}:reasoning:${dntShim.crypto.randomUUID()}`
178
+ : dntShim.crypto.randomUUID();
179
+ }
180
+
181
+ return state.reasoningMessageId;
182
+ }
183
+
154
184
  function applyDataMetadata(state: StreamTransformState, event: RuntimeDataEvent): void {
155
185
  const data = event.data && typeof event.data === "object" && !Array.isArray(event.data)
156
186
  ? event.data as Record<string, unknown>
@@ -231,6 +261,32 @@ export function mapRuntimeEventToAgUi(
231
261
  }];
232
262
  }
233
263
 
264
+ case "reasoning-start":
265
+ state.sawVisibleOutput = true;
266
+ return [{
267
+ event: "ReasoningMessageStart",
268
+ payload: { messageId: getReasoningMessageId(state, event), role: "reasoning" },
269
+ }];
270
+
271
+ case "reasoning-delta":
272
+ state.sawVisibleOutput = true;
273
+ return [{
274
+ event: "ReasoningMessageContent",
275
+ payload: {
276
+ messageId: getReasoningMessageId(state, event),
277
+ delta: typeof event.delta === "string" ? event.delta : "",
278
+ },
279
+ }];
280
+
281
+ case "reasoning-end": {
282
+ const messageId = getReasoningMessageId(state, event);
283
+ state.reasoningMessageId = null;
284
+ return [{
285
+ event: "ReasoningMessageEnd",
286
+ payload: { messageId },
287
+ }];
288
+ }
289
+
234
290
  case "tool-input-start":
235
291
  state.sawVisibleOutput = true;
236
292
  return [{
@@ -823,6 +823,96 @@ export function rewriteCompiledBinaryVeryfrontImports(code: string): string {
823
823
  return transformed;
824
824
  }
825
825
 
826
+ export function rewriteCompiledBinaryUserDependencyImports(
827
+ code: string,
828
+ userDeps: Map<string, string>,
829
+ ): string {
830
+ let transformed = code;
831
+
832
+ for (const name of userDeps.keys()) {
833
+ const escaped = name.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
834
+ transformed = transformed.replace(
835
+ new RegExp(`import\\s+(\\w+)\\s+from\\s+["']${escaped}["']`, "g"),
836
+ (_, localName) => `const ${localName} = __vf_interopDefault(require("${name}"))`,
837
+ );
838
+ transformed = transformed.replace(
839
+ new RegExp(`import\\s+(\\{[^}]+\\})\\s+from\\s+["']${escaped}["']`, "g"),
840
+ (_, bindings) => `const ${toCjsDestructureBindings(bindings)} = require("${name}")`,
841
+ );
842
+ transformed = transformed.replace(
843
+ new RegExp(`import\\s+\\*\\s+as\\s+(\\w+)\\s+from\\s+["']${escaped}["']`, "g"),
844
+ (_, localName) => `const ${localName} = require("${name}")`,
845
+ );
846
+ transformed = transformed.replace(
847
+ new RegExp(
848
+ `import\\s+(\\w+)\\s*,\\s*(\\{[^}]+\\})\\s+from\\s+["']${escaped}["']`,
849
+ "g",
850
+ ),
851
+ (_, defaultName, bindings) => {
852
+ const tmp = `__vf_tmp_${defaultName}`;
853
+ return `const ${tmp} = require("${name}"); const ${defaultName} = __vf_interopDefault(${tmp}); const ${
854
+ toCjsDestructureBindings(bindings)
855
+ } = ${tmp}`;
856
+ },
857
+ );
858
+ transformed = transformed.replace(
859
+ new RegExp(
860
+ `import\\s+(\\w+|\\*\\s+as\\s+\\w+|\\{[^}]+\\})\\s+from\\s+["']${escaped}(/[^"']+)["']`,
861
+ "g",
862
+ ),
863
+ (_, binding, subpath) => {
864
+ const trimmedBinding = String(binding).trim();
865
+ if (trimmedBinding.startsWith("{")) {
866
+ return `const ${toCjsDestructureBindings(trimmedBinding)} = require("${name}${subpath}")`;
867
+ }
868
+ const name_ = trimmedBinding.startsWith("*")
869
+ ? trimmedBinding.replace(/\*\s+as\s+/, "")
870
+ : trimmedBinding;
871
+ return `const ${name_} = require("${name}${subpath}")`;
872
+ },
873
+ );
874
+ transformed = transformed.replace(
875
+ new RegExp(`import\\s*\\(\\s*["']${escaped}(/[^"']*)?["']\\s*\\)`, "g"),
876
+ (_, subpath) => `Promise.resolve(require("${name}${subpath || ""}"))`,
877
+ );
878
+ }
879
+
880
+ return transformed;
881
+ }
882
+
883
+ export async function rewriteDenoNpmDependencyImports(
884
+ code: string,
885
+ projectDir: string,
886
+ fs: FileSystem,
887
+ userDeps: Map<string, string>,
888
+ ): Promise<string> {
889
+ let transformed = code;
890
+
891
+ for (const [name, version] of userDeps) {
892
+ const escaped = name.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
893
+ let resolvedVersion = version;
894
+ try {
895
+ const pkgPath = pathHelper.join(projectDir, "node_modules", name, "package.json");
896
+ const pkgContent = await fs.readTextFile(pkgPath);
897
+ const pkg = JSON.parse(pkgContent) as { version?: string };
898
+ if (pkg.version) resolvedVersion = pkg.version;
899
+ } catch (_) {
900
+ /* expected: installed package.json may not exist, fall back to declared range */
901
+ }
902
+
903
+ transformed = transformed.replace(
904
+ new RegExp(`from\\s+["']${escaped}(/[^"']*)?["']`, "g"),
905
+ (_, subpath) => `from "npm:${name}@${resolvedVersion}${subpath || ""}"`,
906
+ );
907
+ transformed = transformed.replace(
908
+ new RegExp(`import\\s*\\(\\s*["']${escaped}(/[^"']*)?["']\\s*\\)`, "g"),
909
+ (_, subpath) => `import("npm:${name}@${resolvedVersion}${subpath || ""}")`,
910
+ );
911
+ }
912
+
913
+ return transformed;
914
+ }
915
+
826
916
  async function rewriteExternalImports(
827
917
  code: string,
828
918
  projectDir: string,
@@ -862,86 +952,9 @@ async function rewriteExternalImports(
862
952
  // injected by the esbuild banner) to load CJS packages from node_modules,
863
953
  // since npm: specifiers only work for packages embedded at compile time.
864
954
  if (isCompiledBinary()) {
865
- for (const name of userDeps.keys()) {
866
- const escaped = name.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
867
- // Default imports: import foo from "pkg" → const foo = __vf_interopDefault(require("pkg"))
868
- // interopDefault unwraps .default for ESM packages transpiled to CJS
869
- transformed = transformed.replace(
870
- new RegExp(`import\\s+(\\w+)\\s+from\\s+["']${escaped}["']`, "g"),
871
- (_, localName) => `const ${localName} = __vf_interopDefault(require("${name}"))`,
872
- );
873
- // Named imports: import { a, b } from "pkg" → const { a, b } = require("pkg")
874
- transformed = transformed.replace(
875
- new RegExp(`import\\s+(\\{[^}]+\\})\\s+from\\s+["']${escaped}["']`, "g"),
876
- (_, bindings) => `const ${toCjsDestructureBindings(bindings)} = require("${name}")`,
877
- );
878
- // Namespace imports: import * as foo from "pkg" → const foo = require("pkg")
879
- transformed = transformed.replace(
880
- new RegExp(`import\\s+\\*\\s+as\\s+(\\w+)\\s+from\\s+["']${escaped}["']`, "g"),
881
- (_, localName) => `const ${localName} = require("${name}")`,
882
- );
883
- // Mixed imports: import foo, { bar } from "pkg"
884
- transformed = transformed.replace(
885
- new RegExp(
886
- `import\\s+(\\w+)\\s*,\\s*(\\{[^}]+\\})\\s+from\\s+["']${escaped}["']`,
887
- "g",
888
- ),
889
- (_, defaultName, bindings) => {
890
- const tmp = `__vf_tmp_${defaultName}`;
891
- return `const ${tmp} = require("${name}"); const ${defaultName} = __vf_interopDefault(${tmp}); const ${
892
- toCjsDestructureBindings(bindings)
893
- } = ${tmp}`;
894
- },
895
- );
896
- // Subpath static imports: from "pkg/sub" → require("pkg/sub")
897
- transformed = transformed.replace(
898
- new RegExp(
899
- `import\\s+(\\w+|\\*\\s+as\\s+\\w+|\\{[^}]+\\})\\s+from\\s+["']${escaped}(/[^"']+)["']`,
900
- "g",
901
- ),
902
- (_, binding, subpath) => {
903
- const trimmedBinding = String(binding).trim();
904
- if (trimmedBinding.startsWith("{")) {
905
- return `const ${
906
- toCjsDestructureBindings(trimmedBinding)
907
- } = require("${name}${subpath}")`;
908
- }
909
- const name_ = trimmedBinding.startsWith("*")
910
- ? trimmedBinding.replace(/\*\s+as\s+/, "")
911
- : trimmedBinding;
912
- return `const ${name_} = require("${name}${subpath}")`;
913
- },
914
- );
915
- // Dynamic imports: import("pkg") → Promise.resolve(require("pkg"))
916
- transformed = transformed.replace(
917
- new RegExp(`import\\s*\\(\\s*["']${escaped}(/[^"']*)?["']\\s*\\)`, "g"),
918
- (_, subpath) => `Promise.resolve(require("${name}${subpath || ""}"))`,
919
- );
920
- }
955
+ transformed = rewriteCompiledBinaryUserDependencyImports(transformed, userDeps);
921
956
  } else {
922
- for (const [name, version] of userDeps) {
923
- const escaped = name.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
924
- // Resolve exact installed version from node_modules (falls back to range)
925
- let resolvedVersion = version;
926
- try {
927
- const pkgPath = pathHelper.join(projectDir, "node_modules", name, "package.json");
928
- const pkgContent = await fs.readTextFile(pkgPath);
929
- const pkg = JSON.parse(pkgContent) as { version?: string };
930
- if (pkg.version) resolvedVersion = pkg.version;
931
- } catch (_) {
932
- /* expected: installed package.json may not exist, fall back to declared range */
933
- }
934
- // Static: from "pkg" and from "pkg/sub"
935
- transformed = transformed.replace(
936
- new RegExp(`from\\s+["']${escaped}(/[^"']*)?["']`, "g"),
937
- (_, subpath) => `from "npm:${name}@${resolvedVersion}${subpath || ""}"`,
938
- );
939
- // Dynamic: import("pkg") and import("pkg/sub")
940
- transformed = transformed.replace(
941
- new RegExp(`import\\s*\\(\\s*["']${escaped}(/[^"']*)?["']\\s*\\)`, "g"),
942
- (_, subpath) => `import("npm:${name}@${resolvedVersion}${subpath || ""}")`,
943
- );
944
- }
957
+ transformed = await rewriteDenoNpmDependencyImports(transformed, projectDir, fs, userDeps);
945
958
  }
946
959
 
947
960
  // In compiled binaries, "veryfront" resolves to embedded source that can't be
@@ -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.167";
3
+ export const VERSION = "0.1.169";