veryfront 0.1.682 → 0.1.683

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.682",
3
+ "version": "0.1.683",
4
4
  "license": "Apache-2.0",
5
5
  "nodeModulesDir": "auto",
6
6
  "workspace": [
@@ -16,6 +16,10 @@ export type RecordCurrentRunToolResultInput = {
16
16
  result: unknown;
17
17
  now?: Date;
18
18
  };
19
+ export type CurrentRunToolStateHydrationMessage = {
20
+ role?: string;
21
+ parts?: readonly unknown[];
22
+ };
19
23
  export declare function createToolInputFingerprint(input: unknown): string;
20
24
  export declare function summarizeToolResultForCurrentRunState(toolName: string, result: unknown): {
21
25
  summary: unknown;
@@ -23,14 +27,32 @@ export declare function summarizeToolResultForCurrentRunState(toolName: string,
23
27
  };
24
28
  export declare function createCurrentRunToolState(): CurrentRunToolState;
25
29
  export declare function recordCurrentRunToolResult(state: CurrentRunToolState, input: RecordCurrentRunToolResultInput): void;
30
+ export declare function hydrateCurrentRunToolStateFromMessages(state: CurrentRunToolState, messages: readonly CurrentRunToolStateHydrationMessage[], options?: {
31
+ now?: Date;
32
+ }): void;
26
33
  export declare function hasCurrentRunToolState(state: CurrentRunToolState): boolean;
27
34
  type PromptToolState = Record<string, {
28
35
  calls: Record<string, {
29
36
  status: ToolStatus;
30
37
  summary: unknown;
31
38
  }>;
39
+ semanticCalls?: Record<string, PromptSemanticToolCall>;
32
40
  }>;
33
- export declare function projectCurrentRunToolStateForPrompt(state: CurrentRunToolState): PromptToolState;
41
+ type PromptSemanticToolCall = {
42
+ status: ToolStatus;
43
+ callCount: number;
44
+ parameters: Record<string, string>;
45
+ summary: unknown;
46
+ };
47
+ type PromptRunState = {
48
+ tools: PromptToolState;
49
+ actions?: Record<string, {
50
+ status: ToolStatus;
51
+ source: string;
52
+ summary: unknown;
53
+ }>;
54
+ };
55
+ export declare function projectCurrentRunToolStateForPrompt(state: CurrentRunToolState): PromptRunState;
34
56
  export declare function appendCurrentRunToolStateToSystemPrompt(systemPrompt: string, state: CurrentRunToolState): string;
35
57
  export {};
36
58
  //# sourceMappingURL=current-run-tool-state.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"current-run-tool-state.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/runtime/current-run-tool-state.ts"],"names":[],"mappings":"AAIA,KAAK,UAAU,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;AAEhD,MAAM,MAAM,uBAAuB,GAAG;IACpC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,MAAM,CACtC,MAAM,EACN;IAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAA;CAAE,CACnD,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,IAAI,CAAC;CACZ,CAAC;AAyBF,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEjE;AAmMD,wBAAgB,qCAAqC,CACnD,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,OAAO,GACd;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE,CAY1C;AAED,wBAAgB,yBAAyB,IAAI,mBAAmB,CAE/D;AAED,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,mBAAmB,EAC1B,KAAK,EAAE,+BAA+B,GACrC,IAAI,CAgBN;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAI1E;AAED,KAAK,eAAe,GAAG,MAAM,CAC3B,MAAM,EACN;IAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,UAAU,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAA;CAAE,CACpE,CAAC;AAEF,wBAAgB,mCAAmC,CACjD,KAAK,EAAE,mBAAmB,GACzB,eAAe,CAejB;AAED,wBAAgB,uCAAuC,CACrD,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,mBAAmB,GACzB,MAAM,CAOR"}
1
+ {"version":3,"file":"current-run-tool-state.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/runtime/current-run-tool-state.ts"],"names":[],"mappings":"AAIA,KAAK,UAAU,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;AAEhD,MAAM,MAAM,uBAAuB,GAAG;IACpC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,MAAM,CACtC,MAAM,EACN;IAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAA;CAAE,CACnD,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,IAAI,CAAC;CACZ,CAAC;AAEF,MAAM,MAAM,mCAAmC,GAAG;IAChD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;CAC5B,CAAC;AAyBF,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEjE;AAmMD,wBAAgB,qCAAqC,CACnD,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,OAAO,GACd;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE,CAY1C;AAED,wBAAgB,yBAAyB,IAAI,mBAAmB,CAE/D;AAED,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,mBAAmB,EAC1B,KAAK,EAAE,+BAA+B,GACrC,IAAI,CAgBN;AAkED,wBAAgB,sCAAsC,CACpD,KAAK,EAAE,mBAAmB,EAC1B,QAAQ,EAAE,SAAS,mCAAmC,EAAE,EACxD,OAAO,CAAC,EAAE;IAAE,GAAG,CAAC,EAAE,IAAI,CAAA;CAAE,GACvB,IAAI,CA6BN;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAI1E;AAED,KAAK,eAAe,GAAG,MAAM,CAC3B,MAAM,EACN;IACE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,UAAU,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAChE,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;CACxD,CACF,CAAC;AAEF,KAAK,sBAAsB,GAAG;IAC5B,MAAM,EAAE,UAAU,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,KAAK,cAAc,GAAG;IACpB,KAAK,EAAE,eAAe,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CACd,MAAM,EACN;QACE,MAAM,EAAE,UAAU,CAAC;QACnB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,OAAO,CAAC;KAClB,CACF,CAAC;CACH,CAAC;AAmFF,wBAAgB,mCAAmC,CACjD,KAAK,EAAE,mBAAmB,GACzB,cAAc,CAwChB;AAED,wBAAgB,uCAAuC,CACrD,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,mBAAmB,GACzB,MAAM,CAOR"}
@@ -220,27 +220,206 @@ export function recordCurrentRunToolResult(state, input) {
220
220
  };
221
221
  state[input.toolName] = toolBucket;
222
222
  }
223
+ function parseJsonRecord(value) {
224
+ try {
225
+ const parsed = JSON.parse(value);
226
+ return isRecord(parsed) ? parsed : null;
227
+ }
228
+ catch {
229
+ return null;
230
+ }
231
+ }
232
+ function getToolCallInput(part) {
233
+ if (isRecord(part.args))
234
+ return part.args;
235
+ if (isRecord(part.input))
236
+ return part.input;
237
+ if (typeof part.args === "string")
238
+ return parseJsonRecord(part.args) ?? part.args;
239
+ if (typeof part.input === "string")
240
+ return parseJsonRecord(part.input) ?? part.input;
241
+ if (typeof part.inputText === "string")
242
+ return parseJsonRecord(part.inputText) ?? part.inputText;
243
+ return {};
244
+ }
245
+ function getToolResultValue(part) {
246
+ if ("result" in part)
247
+ return part.result;
248
+ if ("output" in part)
249
+ return part.output;
250
+ return undefined;
251
+ }
252
+ function getToolCallIdentity(part) {
253
+ if (!isRecord(part))
254
+ return null;
255
+ const toolCallId = typeof part.toolCallId === "string"
256
+ ? part.toolCallId
257
+ : typeof part.tool_call_id === "string"
258
+ ? part.tool_call_id
259
+ : typeof part.id === "string"
260
+ ? part.id
261
+ : null;
262
+ const toolName = typeof part.toolName === "string"
263
+ ? part.toolName
264
+ : typeof part.tool_name === "string"
265
+ ? part.tool_name
266
+ : typeof part.name === "string"
267
+ ? part.name
268
+ : null;
269
+ return toolCallId && toolName ? { toolCallId, toolName } : null;
270
+ }
271
+ function isToolCallPart(part) {
272
+ if (!isRecord(part))
273
+ return false;
274
+ const type = typeof part.type === "string" ? part.type : "";
275
+ if (type === "tool-result" || type === "tool_result")
276
+ return false;
277
+ if (type === "tool-call" || type === "tool_call" || type.startsWith("tool-")) {
278
+ return getToolCallIdentity(part) !== null;
279
+ }
280
+ return false;
281
+ }
282
+ function isToolResultLikePart(part) {
283
+ if (!isRecord(part))
284
+ return false;
285
+ const type = typeof part.type === "string" ? part.type : "";
286
+ if (type !== "tool-result" && type !== "tool_result")
287
+ return false;
288
+ return getToolCallIdentity(part) !== null && ("result" in part || "output" in part);
289
+ }
290
+ export function hydrateCurrentRunToolStateFromMessages(state, messages, options) {
291
+ const toolCallInputs = new Map();
292
+ for (const message of messages) {
293
+ for (const part of message.parts ?? []) {
294
+ if (isToolCallPart(part)) {
295
+ const identity = getToolCallIdentity(part);
296
+ if (!identity)
297
+ continue;
298
+ toolCallInputs.set(identity.toolCallId, {
299
+ toolName: identity.toolName,
300
+ input: getToolCallInput(part),
301
+ });
302
+ continue;
303
+ }
304
+ if (!isToolResultLikePart(part))
305
+ continue;
306
+ const identity = getToolCallIdentity(part);
307
+ if (!identity)
308
+ continue;
309
+ const call = toolCallInputs.get(identity.toolCallId);
310
+ recordCurrentRunToolResult(state, {
311
+ toolCallId: identity.toolCallId,
312
+ toolName: identity.toolName,
313
+ input: call?.input ?? {},
314
+ result: getToolResultValue(part),
315
+ now: options?.now,
316
+ });
317
+ }
318
+ }
319
+ }
223
320
  export function hasCurrentRunToolState(state) {
224
321
  return Object.keys(state).some((toolName) => Object.keys(state[toolName]?.calls ?? {}).length > 0);
225
322
  }
323
+ function compactStringParameter(value) {
324
+ if (typeof value === "string" && value.trim().length > 0) {
325
+ return value.trim();
326
+ }
327
+ if (typeof value === "number" && Number.isFinite(value)) {
328
+ return String(value);
329
+ }
330
+ return null;
331
+ }
332
+ function getSemanticToolCall(input) {
333
+ if (!isRecord(input.call.input))
334
+ return null;
335
+ switch (input.toolName) {
336
+ case "load_skill": {
337
+ const skillId = compactStringParameter(input.call.input.skillId) ??
338
+ compactStringParameter(input.call.input.skill_id);
339
+ return skillId ? { key: `skill:${skillId}`, parameters: { skillId } } : null;
340
+ }
341
+ case "invoke_agent": {
342
+ const agentId = compactStringParameter(input.call.input.agent_id) ??
343
+ compactStringParameter(input.call.input.agentId);
344
+ if (!agentId)
345
+ return null;
346
+ const stepId = compactStringParameter(input.call.input.step_id) ??
347
+ compactStringParameter(input.call.input.stepId);
348
+ const idempotencyKey = compactStringParameter(input.call.input.idempotency_key) ??
349
+ compactStringParameter(input.call.input.idempotencyKey);
350
+ const keySuffix = stepId
351
+ ? `:step:${stepId}`
352
+ : idempotencyKey
353
+ ? `:idempotency:${idempotencyKey}`
354
+ : "";
355
+ const parameters = { agent_id: agentId };
356
+ if (stepId)
357
+ parameters.step_id = stepId;
358
+ if (idempotencyKey)
359
+ parameters.idempotency_key = idempotencyKey;
360
+ return { key: `agent:${agentId}${keySuffix}`, parameters };
361
+ }
362
+ case "studio_todo_write": {
363
+ const taskId = compactStringParameter(input.call.input.taskId) ??
364
+ compactStringParameter(input.call.input.task_id);
365
+ return taskId ? { key: `todo:${taskId}`, parameters: { taskId } } : null;
366
+ }
367
+ default:
368
+ return null;
369
+ }
370
+ }
371
+ function mergeSemanticToolCall(existing, call, parameters) {
372
+ return {
373
+ status: call.status,
374
+ callCount: (existing?.callCount ?? 0) + call.toolCallIds.length,
375
+ parameters: existing?.parameters ?? parameters,
376
+ summary: call.summary,
377
+ };
378
+ }
379
+ function usesSemanticPromptKeys(toolName) {
380
+ return toolName === "load_skill" ||
381
+ toolName === "invoke_agent" ||
382
+ toolName === "studio_todo_write";
383
+ }
384
+ function createPromptCallKey(input) {
385
+ return usesSemanticPromptKeys(input.toolName) ? `call:${input.index + 1}` : input.fingerprint;
386
+ }
226
387
  export function projectCurrentRunToolStateForPrompt(state) {
227
- const projected = {};
388
+ const tools = {};
389
+ const actions = {};
228
390
  for (const [toolName, bucket] of Object.entries(state)) {
229
391
  const calls = {};
230
- for (const [fingerprint, call] of Object.entries(bucket.calls)) {
231
- calls[fingerprint] = {
392
+ const semanticCalls = {};
393
+ for (const [index, [fingerprint, call]] of Object.entries(bucket.calls).entries()) {
394
+ calls[createPromptCallKey({ toolName, fingerprint, index })] = {
232
395
  status: call.status,
233
396
  summary: call.summary,
234
397
  };
398
+ const semantic = getSemanticToolCall({ toolName, call });
399
+ if (semantic) {
400
+ semanticCalls[semantic.key] = mergeSemanticToolCall(semanticCalls[semantic.key], call, semantic.parameters);
401
+ actions[`${toolName}:${semantic.key}`] = {
402
+ status: call.status,
403
+ source: `tools.${toolName}.semanticCalls.${semantic.key}`,
404
+ summary: call.summary,
405
+ };
406
+ }
407
+ }
408
+ if (Object.keys(calls).length > 0) {
409
+ tools[toolName] = {
410
+ calls,
411
+ ...(Object.keys(semanticCalls).length > 0 ? { semanticCalls } : {}),
412
+ };
235
413
  }
236
- if (Object.keys(calls).length > 0)
237
- projected[toolName] = { calls };
238
414
  }
239
- return projected;
415
+ return {
416
+ tools,
417
+ ...(Object.keys(actions).length > 0 ? { actions } : {}),
418
+ };
240
419
  }
241
420
  export function appendCurrentRunToolStateToSystemPrompt(systemPrompt, state) {
242
421
  if (!hasCurrentRunToolState(state))
243
422
  return systemPrompt;
244
423
  const promptState = projectCurrentRunToolStateForPrompt(state);
245
- return `${systemPrompt}\n\n<tool_state current_run=\"true\">\n${JSON.stringify(promptState)}\n</tool_state>`;
424
+ return `${systemPrompt}\n\n<run_state current_run=\"true\">\n${JSON.stringify(promptState)}\n</run_state>`;
246
425
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/runtime/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/runtime/index.ts"],"names":[],"mappings":"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"}
@@ -44,7 +44,7 @@ import { accumulateUsage, getMaxSteps, normalizeInput } from "./input-utils.js";
44
44
  import { filterToolsForSkill, isToolAllowedBySkill, validateAllowedToolPatterns, } from "../../skill/allowed-tools.js";
45
45
  import { resolveConfiguredAgentModel, resolveRuntimeModel } from "./model-resolution.js";
46
46
  import { stringifyToolError, throwIfAborted } from "./error-utils.js";
47
- import { appendCurrentRunToolStateToSystemPrompt, createCurrentRunToolState, recordCurrentRunToolResult, } from "./current-run-tool-state.js";
47
+ import { appendCurrentRunToolStateToSystemPrompt, createCurrentRunToolState, hydrateCurrentRunToolStateFromMessages, recordCurrentRunToolResult, } from "./current-run-tool-state.js";
48
48
  import { applySkillDelegationOverridesToToolInput, extractSkillDelegationOverrides, } from "./skill-delegation-overrides.js";
49
49
  const logger = serverLogger.component("agent");
50
50
  const LOAD_SKILL_TOOL_ID = "load_skill";
@@ -292,6 +292,19 @@ export function materializeStreamedToolCall(tc) {
292
292
  function isToolResultPart(part) {
293
293
  return part.type === "tool-result" && "result" in part;
294
294
  }
295
+ function hydrateActiveSkillStateFromMessages(messages) {
296
+ let activeSkillPolicy;
297
+ let activeSkillDelegationOverrides;
298
+ for (const message of messages) {
299
+ for (const part of message.parts) {
300
+ if (!isToolResultPart(part) || part.toolName !== LOAD_SKILL_TOOL_ID)
301
+ continue;
302
+ activeSkillPolicy = extractSkillPolicy(part.result);
303
+ activeSkillDelegationOverrides = extractSkillDelegationOverrides(part.result);
304
+ }
305
+ }
306
+ return { activeSkillPolicy, activeSkillDelegationOverrides };
307
+ }
295
308
  /**
296
309
  * Extract and validate the skill policy from a load_skill tool result.
297
310
  * Returns `[]` (no tools allowed) for invalid/missing policies instead of
@@ -580,6 +593,7 @@ export class AgentRuntime {
580
593
  const toolCalls = [];
581
594
  const currentMessages = [...messages];
582
595
  const currentRunToolState = createCurrentRunToolState();
596
+ hydrateCurrentRunToolStateFromMessages(currentRunToolState, currentMessages);
583
597
  const totalUsage = { promptTokens: 0, completionTokens: 0, totalTokens: 0 };
584
598
  // Local models can't reliably do function calling — skip tools gracefully.
585
599
  const isLocal = isLocalModelRuntime(languageModel);
@@ -587,8 +601,9 @@ export class AgentRuntime {
587
601
  warnLocalToolSkipping(this.id, effectiveModel);
588
602
  }
589
603
  // Request-scoped skill policy (not class-level mutable state)
590
- let activeSkillPolicy;
591
- let activeSkillDelegationOverrides;
604
+ const hydratedSkillState = hydrateActiveSkillStateFromMessages(currentMessages);
605
+ let activeSkillPolicy = hydratedSkillState.activeSkillPolicy;
606
+ let activeSkillDelegationOverrides = hydratedSkillState.activeSkillDelegationOverrides;
592
607
  const allowedRemoteToolNames = getRuntimeAllowedRemoteTools(this.config);
593
608
  const providerTools = getRuntimeProviderTools(this.config);
594
609
  const forwardedRemoteToolDefinitions = getRuntimeForwardedIntegrationToolDefs(this.config);
@@ -826,6 +841,7 @@ export class AgentRuntime {
826
841
  const toolCalls = [];
827
842
  const currentMessages = [...messages];
828
843
  const currentRunToolState = createCurrentRunToolState();
844
+ hydrateCurrentRunToolStateFromMessages(currentRunToolState, currentMessages);
829
845
  const totalUsage = { promptTokens: 0, completionTokens: 0, totalTokens: 0 };
830
846
  // Local models can't reliably do function calling — skip tools gracefully.
831
847
  const isLocalStreaming = isLocalModelRuntime(languageModel);
@@ -833,8 +849,9 @@ export class AgentRuntime {
833
849
  warnLocalToolSkipping(this.id, effectiveModel);
834
850
  }
835
851
  // Request-scoped skill policy (not class-level mutable state)
836
- let activeSkillPolicy;
837
- let activeSkillDelegationOverrides;
852
+ const hydratedSkillState = hydrateActiveSkillStateFromMessages(currentMessages);
853
+ let activeSkillPolicy = hydratedSkillState.activeSkillPolicy;
854
+ let activeSkillDelegationOverrides = hydratedSkillState.activeSkillDelegationOverrides;
838
855
  let finalFinishReason;
839
856
  let latestAssistantText = "";
840
857
  const allowedRemoteToolNames = getRuntimeAllowedRemoteTools(this.config);
@@ -1,3 +1,3 @@
1
1
  /** Shared version value. */
2
- export declare const VERSION = "0.1.682";
2
+ export declare const VERSION = "0.1.683";
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.682";
4
+ export const VERSION = "0.1.683";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "veryfront",
3
- "version": "0.1.682",
3
+ "version": "0.1.683",
4
4
  "description": "The simplest way to build AI-powered apps",
5
5
  "keywords": [
6
6
  "react",