veryfront 0.1.345 → 0.1.347

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.345",
3
+ "version": "0.1.347",
4
4
  "license": "Apache-2.0",
5
5
  "nodeModulesDir": "auto",
6
6
  "workspace": [
@@ -46,6 +46,8 @@ import "../../_dnt.polyfills.js";
46
46
  export type { RemoteToolSource, Tool, ToolConfig, ToolDefinition, ToolExecutionContext, ToolExecutionDataEvent, ToolSet, } from "./types.js";
47
47
  export { dynamicTool, tool } from "./factory.js";
48
48
  export type { DynamicToolConfig } from "./factory.js";
49
+ export { createSleepTool, DEFAULT_SLEEP_TOOL_MAX_SECONDS, sleepTool } from "./sleep.js";
50
+ export type { CreateSleepToolOptions, SleepToolInput, SleepToolOutput, SleepToolWait, } from "./sleep.js";
49
51
  export { createRemoteMCPToolSource } from "./remote-mcp.js";
50
52
  export type { RemoteMCPToolSourceConfig } from "./remote-mcp.js";
51
53
  export { createContext7ToolSource } from "./context7.js";
@@ -54,6 +56,8 @@ export { createToolsFromHostDefinitions } from "./host-tools.js";
54
56
  export type { HostToolDefinition, HostToolMaterializationOptions, HostToolSet, } from "./host-tools.js";
55
57
  export { createToolsFromRemoteDefinitions, loadRemoteToolsFromSource, } from "./remote-source-tools.js";
56
58
  export type { RemoteToolMaterializationOptions } from "./remote-source-tools.js";
59
+ export { traceHostTools } from "./tracing.js";
60
+ export type { HostToolTraceAttributeInput, HostToolTraceAttributes, HostToolTraceRunner, TraceHostToolsOptions, } from "./tracing.js";
57
61
  export { filterProjectScopedRemoteToolDefinitions, hydrateProjectScopedRemoteToolInput, isProjectNavigationRemoteTool, } from "./project-scoped-remote-tools.js";
58
62
  export type { ProjectScopedRemoteToolOptions } from "./project-scoped-remote-tools.js";
59
63
  export { toolRegistry } from "./registry.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/src/tool/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,OAAO,yBAAyB,CAAC;AAGjC,YAAY,EACV,gBAAgB,EAChB,IAAI,EACJ,UAAU,EACV,cAAc,EACd,oBAAoB,EACpB,sBAAsB,EACtB,OAAO,GACR,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACjD,YAAY,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,YAAY,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACzD,YAAY,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,8BAA8B,EAAE,MAAM,iBAAiB,CAAC;AACjE,YAAY,EACV,kBAAkB,EAClB,8BAA8B,EAC9B,WAAW,GACZ,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,gCAAgC,EAChC,yBAAyB,GAC1B,MAAM,0BAA0B,CAAC;AAClC,YAAY,EAAE,gCAAgC,EAAE,MAAM,0BAA0B,CAAC;AACjF,OAAO,EACL,wCAAwC,EACxC,mCAAmC,EACnC,6BAA6B,GAC9B,MAAM,kCAAkC,CAAC;AAC1C,YAAY,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AAEvF,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/src/tool/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,OAAO,yBAAyB,CAAC;AAGjC,YAAY,EACV,gBAAgB,EAChB,IAAI,EACJ,UAAU,EACV,cAAc,EACd,oBAAoB,EACpB,sBAAsB,EACtB,OAAO,GACR,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACjD,YAAY,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,8BAA8B,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACxF,YAAY,EACV,sBAAsB,EACtB,cAAc,EACd,eAAe,EACf,aAAa,GACd,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,YAAY,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACzD,YAAY,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,8BAA8B,EAAE,MAAM,iBAAiB,CAAC;AACjE,YAAY,EACV,kBAAkB,EAClB,8BAA8B,EAC9B,WAAW,GACZ,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,gCAAgC,EAChC,yBAAyB,GAC1B,MAAM,0BAA0B,CAAC;AAClC,YAAY,EAAE,gCAAgC,EAAE,MAAM,0BAA0B,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,YAAY,EACV,2BAA2B,EAC3B,uBAAuB,EACvB,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,wCAAwC,EACxC,mCAAmC,EACnC,6BAA6B,GAC9B,MAAM,kCAAkC,CAAC;AAC1C,YAAY,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AAEvF,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC"}
@@ -44,10 +44,12 @@
44
44
  */
45
45
  import "../../_dnt.polyfills.js";
46
46
  export { dynamicTool, tool } from "./factory.js";
47
+ export { createSleepTool, DEFAULT_SLEEP_TOOL_MAX_SECONDS, sleepTool } from "./sleep.js";
47
48
  export { createRemoteMCPToolSource } from "./remote-mcp.js";
48
49
  export { createContext7ToolSource } from "./context7.js";
49
50
  export { createToolsFromHostDefinitions } from "./host-tools.js";
50
51
  export { createToolsFromRemoteDefinitions, loadRemoteToolsFromSource, } from "./remote-source-tools.js";
52
+ export { traceHostTools } from "./tracing.js";
51
53
  export { filterProjectScopedRemoteToolDefinitions, hydrateProjectScopedRemoteToolInput, isProjectNavigationRemoteTool, } from "./project-scoped-remote-tools.js";
52
54
  export { toolRegistry } from "./registry.js";
53
55
  export { executeTool } from "./executor.js";
@@ -0,0 +1,23 @@
1
+ import { z } from "zod";
2
+ export declare const DEFAULT_SLEEP_TOOL_MAX_SECONDS = 60;
3
+ export type SleepToolWait = (milliseconds: number) => Promise<void> | void;
4
+ export type CreateSleepToolOptions = {
5
+ maxSeconds?: number;
6
+ wait?: SleepToolWait;
7
+ };
8
+ declare function createSleepToolInputSchema(maxSeconds: number): z.ZodObject<{
9
+ seconds: z.ZodNumber;
10
+ }, z.core.$strip>;
11
+ export type SleepToolInput = z.infer<ReturnType<typeof createSleepToolInputSchema>>;
12
+ export type SleepToolOutput = {
13
+ sleptFor: number;
14
+ message: string;
15
+ };
16
+ export declare function createSleepTool(options?: CreateSleepToolOptions): import("./types.js").Tool<{
17
+ seconds: number;
18
+ }, SleepToolOutput>;
19
+ export declare const sleepTool: import("./types.js").Tool<{
20
+ seconds: number;
21
+ }, SleepToolOutput>;
22
+ export {};
23
+ //# sourceMappingURL=sleep.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sleep.d.ts","sourceRoot":"","sources":["../../../src/src/tool/sleep.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,8BAA8B,KAAK,CAAC;AAEjD,MAAM,MAAM,aAAa,GAAG,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAE3E,MAAM,MAAM,sBAAsB,GAAG;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,aAAa,CAAC;CACtB,CAAC;AAOF,iBAAS,0BAA0B,CAAC,UAAU,EAAE,MAAM;;kBAMrD;AAED,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,0BAA0B,CAAC,CAAC,CAAC;AAEpF,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,wBAAgB,eAAe,CAAC,OAAO,GAAE,sBAA2B;;oBAkBnE;AAED,eAAO,MAAM,SAAS;;mBAAoB,CAAC"}
@@ -0,0 +1,30 @@
1
+ import * as dntShim from "../../_dnt.shims.js";
2
+ import { z } from "zod";
3
+ import { tool } from "./factory.js";
4
+ export const DEFAULT_SLEEP_TOOL_MAX_SECONDS = 60;
5
+ const defaultSleepToolWait = (milliseconds) => new Promise((resolve) => {
6
+ dntShim.setTimeout(resolve, milliseconds);
7
+ });
8
+ function createSleepToolInputSchema(maxSeconds) {
9
+ return z.object({
10
+ seconds: z.number().min(1).max(maxSeconds).describe(`Number of seconds to wait (1-${maxSeconds})`),
11
+ });
12
+ }
13
+ export function createSleepTool(options = {}) {
14
+ const maxSeconds = options.maxSeconds ?? DEFAULT_SLEEP_TOOL_MAX_SECONDS;
15
+ const wait = options.wait ?? defaultSleepToolWait;
16
+ return tool({
17
+ id: "sleep",
18
+ description: `Wait for a specified number of seconds before continuing. Use this when a task needs to pause execution, such as waiting for an external process to complete or adding a delay between operations. Maximum sleep time is ${maxSeconds} seconds.`,
19
+ inputSchema: createSleepToolInputSchema(maxSeconds),
20
+ execute: async ({ seconds }) => {
21
+ const clampedSeconds = Math.min(Math.max(1, seconds), maxSeconds);
22
+ await wait(clampedSeconds * 1000);
23
+ return {
24
+ sleptFor: clampedSeconds,
25
+ message: `Waited for ${clampedSeconds} second${clampedSeconds === 1 ? "" : "s"}`,
26
+ };
27
+ },
28
+ });
29
+ }
30
+ export const sleepTool = createSleepTool();
@@ -0,0 +1,17 @@
1
+ import type { HostToolSet } from "./host-tools.js";
2
+ import type { ToolExecutionContext } from "./types.js";
3
+ export type HostToolTraceRunner = <TResult>(spanName: string, operation: () => TResult) => TResult;
4
+ export type HostToolTraceAttributes = Record<string, unknown>;
5
+ export type HostToolTraceAttributeInput = {
6
+ toolName: string;
7
+ toolCallId: string | undefined;
8
+ context: ToolExecutionContext | undefined;
9
+ };
10
+ export type TraceHostToolsOptions = {
11
+ trace: HostToolTraceRunner;
12
+ buildAttributes?: (input: HostToolTraceAttributeInput) => HostToolTraceAttributes | undefined;
13
+ setAttributes?: (attributes: HostToolTraceAttributes) => void;
14
+ getSpanName?: (toolName: string) => string;
15
+ };
16
+ export declare function traceHostTools(tools: HostToolSet, options: TraceHostToolsOptions): HostToolSet;
17
+ //# sourceMappingURL=tracing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracing.d.ts","sourceRoot":"","sources":["../../../src/src/tool/tracing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEvD,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,EACxC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,OAAO,KACrB,OAAO,CAAC;AAEb,MAAM,MAAM,uBAAuB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE9D,MAAM,MAAM,2BAA2B,GAAG;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,OAAO,EAAE,oBAAoB,GAAG,SAAS,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,KAAK,EAAE,mBAAmB,CAAC;IAC3B,eAAe,CAAC,EAAE,CAChB,KAAK,EAAE,2BAA2B,KAC/B,uBAAuB,GAAG,SAAS,CAAC;IACzC,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,uBAAuB,KAAK,IAAI,CAAC;IAC9D,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;CAC5C,CAAC;AAUF,wBAAgB,cAAc,CAC5B,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,qBAAqB,GAC7B,WAAW,CA6Bb"}
@@ -0,0 +1,32 @@
1
+ function defaultSpanName(toolName) {
2
+ return `tool.${toolName}`;
3
+ }
4
+ function getToolCallId(context) {
5
+ return typeof context?.toolCallId === "string" ? context.toolCallId : undefined;
6
+ }
7
+ export function traceHostTools(tools, options) {
8
+ const traced = {};
9
+ const getSpanName = options.getSpanName ?? defaultSpanName;
10
+ for (const [toolName, definition] of Object.entries(tools)) {
11
+ if (!definition.execute) {
12
+ traced[toolName] = definition;
13
+ continue;
14
+ }
15
+ const originalExecute = definition.execute;
16
+ traced[toolName] = {
17
+ ...definition,
18
+ execute: (input, context) => options.trace(getSpanName(toolName), () => {
19
+ const attributes = options.buildAttributes?.({
20
+ toolName,
21
+ toolCallId: getToolCallId(context),
22
+ context,
23
+ });
24
+ if (attributes) {
25
+ options.setAttributes?.(attributes);
26
+ }
27
+ return originalExecute(input, context);
28
+ }),
29
+ };
30
+ }
31
+ return traced;
32
+ }
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "0.1.345";
1
+ export declare const VERSION = "0.1.347";
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.345";
3
+ export const VERSION = "0.1.347";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "veryfront",
3
- "version": "0.1.345",
3
+ "version": "0.1.347",
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.345",
3
+ "version": "0.1.347",
4
4
  "license": "Apache-2.0",
5
5
  "nodeModulesDir": "auto",
6
6
  "workspace": [
@@ -57,6 +57,13 @@ export type {
57
57
 
58
58
  export { dynamicTool, tool } from "./factory.js";
59
59
  export type { DynamicToolConfig } from "./factory.js";
60
+ export { createSleepTool, DEFAULT_SLEEP_TOOL_MAX_SECONDS, sleepTool } from "./sleep.js";
61
+ export type {
62
+ CreateSleepToolOptions,
63
+ SleepToolInput,
64
+ SleepToolOutput,
65
+ SleepToolWait,
66
+ } from "./sleep.js";
60
67
  export { createRemoteMCPToolSource } from "./remote-mcp.js";
61
68
  export type { RemoteMCPToolSourceConfig } from "./remote-mcp.js";
62
69
  export { createContext7ToolSource } from "./context7.js";
@@ -72,6 +79,13 @@ export {
72
79
  loadRemoteToolsFromSource,
73
80
  } from "./remote-source-tools.js";
74
81
  export type { RemoteToolMaterializationOptions } from "./remote-source-tools.js";
82
+ export { traceHostTools } from "./tracing.js";
83
+ export type {
84
+ HostToolTraceAttributeInput,
85
+ HostToolTraceAttributes,
86
+ HostToolTraceRunner,
87
+ TraceHostToolsOptions,
88
+ } from "./tracing.js";
75
89
  export {
76
90
  filterProjectScopedRemoteToolDefinitions,
77
91
  hydrateProjectScopedRemoteToolInput,
@@ -0,0 +1,54 @@
1
+ import * as dntShim from "../../_dnt.shims.js";
2
+ import { z } from "zod";
3
+ import { tool } from "./factory.js";
4
+
5
+ export const DEFAULT_SLEEP_TOOL_MAX_SECONDS = 60;
6
+
7
+ export type SleepToolWait = (milliseconds: number) => Promise<void> | void;
8
+
9
+ export type CreateSleepToolOptions = {
10
+ maxSeconds?: number;
11
+ wait?: SleepToolWait;
12
+ };
13
+
14
+ const defaultSleepToolWait: SleepToolWait = (milliseconds) =>
15
+ new Promise((resolve) => {
16
+ dntShim.setTimeout(resolve, milliseconds);
17
+ });
18
+
19
+ function createSleepToolInputSchema(maxSeconds: number) {
20
+ return z.object({
21
+ seconds: z.number().min(1).max(maxSeconds).describe(
22
+ `Number of seconds to wait (1-${maxSeconds})`,
23
+ ),
24
+ });
25
+ }
26
+
27
+ export type SleepToolInput = z.infer<ReturnType<typeof createSleepToolInputSchema>>;
28
+
29
+ export type SleepToolOutput = {
30
+ sleptFor: number;
31
+ message: string;
32
+ };
33
+
34
+ export function createSleepTool(options: CreateSleepToolOptions = {}) {
35
+ const maxSeconds = options.maxSeconds ?? DEFAULT_SLEEP_TOOL_MAX_SECONDS;
36
+ const wait = options.wait ?? defaultSleepToolWait;
37
+
38
+ return tool<SleepToolInput, SleepToolOutput>({
39
+ id: "sleep",
40
+ description:
41
+ `Wait for a specified number of seconds before continuing. Use this when a task needs to pause execution, such as waiting for an external process to complete or adding a delay between operations. Maximum sleep time is ${maxSeconds} seconds.`,
42
+ inputSchema: createSleepToolInputSchema(maxSeconds),
43
+ execute: async ({ seconds }) => {
44
+ const clampedSeconds = Math.min(Math.max(1, seconds), maxSeconds);
45
+ await wait(clampedSeconds * 1000);
46
+ return {
47
+ sleptFor: clampedSeconds,
48
+ message: `Waited for ${clampedSeconds} second${clampedSeconds === 1 ? "" : "s"}`,
49
+ };
50
+ },
51
+ });
52
+ }
53
+
54
+ export const sleepTool = createSleepTool();
@@ -0,0 +1,66 @@
1
+ import type { HostToolSet } from "./host-tools.js";
2
+ import type { ToolExecutionContext } from "./types.js";
3
+
4
+ export type HostToolTraceRunner = <TResult>(
5
+ spanName: string,
6
+ operation: () => TResult,
7
+ ) => TResult;
8
+
9
+ export type HostToolTraceAttributes = Record<string, unknown>;
10
+
11
+ export type HostToolTraceAttributeInput = {
12
+ toolName: string;
13
+ toolCallId: string | undefined;
14
+ context: ToolExecutionContext | undefined;
15
+ };
16
+
17
+ export type TraceHostToolsOptions = {
18
+ trace: HostToolTraceRunner;
19
+ buildAttributes?: (
20
+ input: HostToolTraceAttributeInput,
21
+ ) => HostToolTraceAttributes | undefined;
22
+ setAttributes?: (attributes: HostToolTraceAttributes) => void;
23
+ getSpanName?: (toolName: string) => string;
24
+ };
25
+
26
+ function defaultSpanName(toolName: string): string {
27
+ return `tool.${toolName}`;
28
+ }
29
+
30
+ function getToolCallId(context: ToolExecutionContext | undefined): string | undefined {
31
+ return typeof context?.toolCallId === "string" ? context.toolCallId : undefined;
32
+ }
33
+
34
+ export function traceHostTools(
35
+ tools: HostToolSet,
36
+ options: TraceHostToolsOptions,
37
+ ): HostToolSet {
38
+ const traced: HostToolSet = {};
39
+ const getSpanName = options.getSpanName ?? defaultSpanName;
40
+
41
+ for (const [toolName, definition] of Object.entries(tools)) {
42
+ if (!definition.execute) {
43
+ traced[toolName] = definition;
44
+ continue;
45
+ }
46
+
47
+ const originalExecute = definition.execute;
48
+ traced[toolName] = {
49
+ ...definition,
50
+ execute: (input: unknown, context: ToolExecutionContext | undefined) =>
51
+ options.trace(getSpanName(toolName), () => {
52
+ const attributes = options.buildAttributes?.({
53
+ toolName,
54
+ toolCallId: getToolCallId(context),
55
+ context,
56
+ });
57
+ if (attributes) {
58
+ options.setAttributes?.(attributes);
59
+ }
60
+ return originalExecute(input, context);
61
+ }),
62
+ };
63
+ }
64
+
65
+ return traced;
66
+ }
@@ -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.345";
3
+ export const VERSION = "0.1.347";