@nexface/tools 0.1.1-alpha.8 → 0.1.1-alpha.9

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 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAEA,SAAS,WAAW,CAAC,MAAkB,EAAE,KAAc;IACrD,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,SAAS;YACZ,OAAO,IAAI,CAAC;QACd,KAAK,MAAM;YACT,OAAO,KAAK,KAAK,IAAI,CAAC;QACxB,KAAK,OAAO;YACV,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC9B,KAAK,QAAQ;YACX,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC9E,KAAK,SAAS;YACZ,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC9D;YACE,OAAO,OAAO,KAAK,KAAK,MAAM,CAAC,IAAI,CAAC;IACxC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,MAAkB,EAClB,KAAc,EACd,IAAI,GAAG,OAAO;IAEd,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,GAAG,IAAI,YAAY,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;IAC7C,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;QACvE,OAAO,CAAC,GAAG,IAAI,2CAA2C,CAAC,CAAC;IAC9D,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACpE,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CACnC,sBAAsB,CAAC,MAAM,CAAC,KAAM,EAAE,IAAI,EAAE,GAAG,IAAI,IAAI,KAAK,GAAG,CAAC,CACjE,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC5E,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,MAAM,GAAG,KAAgC,CAAC;IAChD,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;QACxC,IAAI,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,GAAG,eAAe,CAAC,CAAC;IACnE,CAAC;IACD,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACjD,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAI,QAAQ;YAAE,MAAM,CAAC,IAAI,CAAC,GAAG,sBAAsB,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC;aAClF,IAAI,MAAM,CAAC,oBAAoB,KAAK,KAAK,EAAE,CAAC;YAC/C,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,GAAG,kBAAkB,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["import type { JsonSchema } from \"./types.js\";\n\nfunction typeMatches(schema: JsonSchema, value: unknown): boolean {\n switch (schema.type) {\n case undefined:\n return true;\n case \"null\":\n return value === null;\n case \"array\":\n return Array.isArray(value);\n case \"object\":\n return value !== null && typeof value === \"object\" && !Array.isArray(value);\n case \"integer\":\n return typeof value === \"number\" && Number.isInteger(value);\n default:\n return typeof value === schema.type;\n }\n}\n\nexport function validateAgentToolInput(\n schema: JsonSchema,\n value: unknown,\n path = \"input\",\n): string[] {\n if (!typeMatches(schema, value)) {\n return [`${path} must be ${schema.type}.`];\n }\n if (schema.enum && !schema.enum.some((item) => Object.is(item, value))) {\n return [`${path} must be one of the declared enum values.`];\n }\n if (schema.type === \"array\" && Array.isArray(value) && schema.items) {\n return value.flatMap((item, index) =>\n validateAgentToolInput(schema.items!, item, `${path}[${index}]`),\n );\n }\n if (schema.type !== \"object\" || value === null || typeof value !== \"object\") {\n return [];\n }\n const record = value as Record<string, unknown>;\n const errors: string[] = [];\n for (const key of schema.required ?? []) {\n if (!(key in record)) errors.push(`${path}.${key} is required.`);\n }\n for (const [key, item] of Object.entries(record)) {\n const property = schema.properties?.[key];\n if (property) errors.push(...validateAgentToolInput(property, item, `${path}.${key}`));\n else if (schema.additionalProperties === false) {\n errors.push(`${path}.${key} is not allowed.`);\n }\n }\n return errors;\n}\n"]}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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","sourcesContent":["import type { JsonSchema } from \"./types.js\";\n\nconst types = new Set([\"object\", \"array\", \"string\", \"number\", \"integer\", \"boolean\", \"null\"]);\nconst counts = [\"minLength\", \"maxLength\", \"minItems\", \"maxItems\"] as const;\nconst bounds = [\"minimum\", \"maximum\", \"exclusiveMinimum\", \"exclusiveMaximum\"] as const;\nconst keywords = new Set([\n \"type\", \"description\", \"properties\", \"required\", \"items\", \"enum\", \"additionalProperties\",\n ...counts, ...bounds, \"pattern\", \"uniqueItems\",\n]);\nconst checkedSchemas = new WeakSet<object>();\nconst patterns = new WeakMap<object, { source: string; regex: RegExp }>();\n\nfunction invalid(path: string, message: string): never {\n throw new TypeError(`${path} ${message}`);\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === \"object\" && !Array.isArray(value);\n}\n\n// Only deeply frozen, JSON-compatible values can safely share validation results.\nfunction assertJson(value: unknown, path: string, ancestors = new Set<object>()): boolean {\n if (value === null || typeof value === \"string\" || typeof value === \"boolean\") return true;\n if (typeof value === \"number\" && Number.isFinite(value)) return true;\n if (typeof value !== \"object\" || value === null) invalid(path, \"must be JSON-compatible.\");\n if (ancestors.has(value)) invalid(path, \"must not contain circular references.\");\n if (!Array.isArray(value) && Object.getPrototypeOf(value) !== Object.prototype && Object.getPrototypeOf(value) !== null) {\n invalid(path, \"must be a plain JSON object.\");\n }\n if (Object.getOwnPropertySymbols(value).length) invalid(path, \"must not contain symbol properties.\");\n for (const [key, descriptor] of Object.entries(Object.getOwnPropertyDescriptors(value))) {\n if (!descriptor.enumerable && !(Array.isArray(value) && key === \"length\")) invalid(`${path}.${key}`, \"must be enumerable.\");\n if (descriptor.get || descriptor.set) invalid(`${path}.${key}`, \"must be a data property.\");\n }\n if (Array.isArray(value)) {\n for (let index = 0; index < value.length; index++) {\n if (!Object.hasOwn(value, index)) invalid(`${path}[${index}]`, \"must not be a sparse array slot.\");\n }\n }\n ancestors.add(value);\n let frozen = Object.isFrozen(value);\n for (const [key, child] of Object.entries(value)) {\n const childFrozen = assertJson(child, `${path}.${key}`, ancestors);\n frozen = frozen && childFrozen;\n }\n ancestors.delete(value);\n return frozen;\n}\n\nfunction patternFor(schema: JsonSchema, path: string): RegExp {\n const source = schema.pattern!;\n const cached = patterns.get(schema);\n if (cached?.source === source) return cached.regex;\n let regex: RegExp;\n try {\n regex = new RegExp(source, \"u\");\n } catch {\n invalid(`${path}.pattern`, \"must be a valid Unicode regular expression.\");\n }\n patterns.set(schema, { source, regex });\n return regex;\n}\n\nfunction assertSchema(value: unknown, path: string): void {\n if (!isRecord(value)) invalid(path, \"must be an object.\");\n const unexpected = Object.keys(value).filter((key) => !keywords.has(key));\n if (unexpected.length) invalid(path, `has unsupported fields: ${unexpected.join(\", \")}.`);\n if (value.type !== undefined && (typeof value.type !== \"string\" || !types.has(value.type))) invalid(`${path}.type`, \"is not supported.\");\n if (value.description !== undefined && typeof value.description !== \"string\") invalid(`${path}.description`, \"must be a string.\");\n for (const key of [\"additionalProperties\", \"uniqueItems\"] as const) {\n if (value[key] !== undefined && typeof value[key] !== \"boolean\") invalid(`${path}.${key}`, \"must be a boolean.\");\n }\n for (const key of counts) {\n const count = value[key];\n if (count !== undefined && (typeof count !== \"number\" || !Number.isInteger(count) || count < 0)) invalid(`${path}.${key}`, \"must be a non-negative integer.\");\n }\n for (const key of bounds) {\n if (value[key] !== undefined && (typeof value[key] !== \"number\" || !Number.isFinite(value[key]))) invalid(`${path}.${key}`, \"must be a finite number.\");\n }\n if (value.pattern !== undefined) {\n if (typeof value.pattern !== \"string\") invalid(`${path}.pattern`, \"must be a string.\");\n patternFor(value as JsonSchema, path);\n }\n if (value.enum !== undefined && (!Array.isArray(value.enum) || value.enum.length === 0)) invalid(`${path}.enum`, \"must be a non-empty array.\");\n if (Array.isArray(value.enum) && value.enum.some((item, index, entries) => entries.slice(0, index).some((other) => jsonEqual(item, other)))) invalid(`${path}.enum`, \"must contain unique values.\");\n if (value.properties !== undefined) {\n if (value.type !== \"object\" || !isRecord(value.properties)) invalid(`${path}.properties`, \"requires an object schema.\");\n for (const [name, property] of Object.entries(value.properties)) assertSchema(property, `${path}.properties.${name}`);\n }\n if (value.required !== undefined) {\n if (value.type !== \"object\" || !Array.isArray(value.required) || value.required.some((name) => typeof name !== \"string\") || new Set(value.required).size !== value.required.length) invalid(`${path}.required`, \"must contain unique property names.\");\n const properties = value.properties as Record<string, unknown> | undefined;\n if (value.required.some((name) => !properties || !Object.hasOwn(properties, name))) invalid(`${path}.required`, \"must reference declared properties.\");\n }\n if (value.items !== undefined) {\n if (value.type !== \"array\") invalid(`${path}.items`, \"requires an array schema.\");\n assertSchema(value.items, `${path}.items`);\n }\n}\n\nexport function assertAgentToolInputSchema(value: unknown, path = \"inputSchema\"): void {\n if (!isRecord(value) || value.type !== \"object\") invalid(path, 'root type must be object.');\n if (checkedSchemas.has(value)) return;\n const frozen = assertJson(value, path);\n assertSchema(value, path);\n if (frozen) checkedSchemas.add(value);\n}\n\nfunction jsonEqual(left: unknown, right: unknown): boolean {\n if (left === right) return true;\n if (Array.isArray(left) && Array.isArray(right)) return left.length === right.length && left.every((item, index) => jsonEqual(item, right[index]));\n if (!isRecord(left) || !isRecord(right)) return false;\n const keys = Object.keys(left);\n return keys.length === Object.keys(right).length && keys.every((key) => Object.hasOwn(right, key) && jsonEqual(left[key], right[key]));\n}\n\nfunction typeMatches(schema: JsonSchema, value: unknown): boolean {\n switch (schema.type) {\n case undefined: return true;\n case \"null\": return value === null;\n case \"array\": return Array.isArray(value);\n case \"object\": return isRecord(value);\n case \"integer\": return typeof value === \"number\" && Number.isInteger(value);\n case \"number\": return typeof value === \"number\" && Number.isFinite(value);\n default: return typeof value === schema.type;\n }\n}\n\nexport function validateAgentToolInput(schema: JsonSchema, value: unknown, path = \"input\"): string[] {\n if (!typeMatches(schema, value)) return [`${path} must be ${schema.type}.`];\n const errors: string[] = [];\n if (schema.enum && !schema.enum.some((item) => jsonEqual(item, value))) errors.push(`${path} must be one of the declared enum values.`);\n if (typeof value === \"string\") {\n const length = Array.from(value).length;\n if (schema.minLength !== undefined && length < schema.minLength) errors.push(`${path} must have at least ${schema.minLength} characters.`);\n if (schema.maxLength !== undefined && length > schema.maxLength) errors.push(`${path} must have at most ${schema.maxLength} characters.`);\n if (schema.pattern !== undefined && !patternFor(schema, path).test(value)) errors.push(`${path} must match pattern ${schema.pattern}.`);\n }\n if (typeof value === \"number\") {\n if (schema.minimum !== undefined && value < schema.minimum) errors.push(`${path} must be >= ${schema.minimum}.`);\n if (schema.maximum !== undefined && value > schema.maximum) errors.push(`${path} must be <= ${schema.maximum}.`);\n if (schema.exclusiveMinimum !== undefined && value <= schema.exclusiveMinimum) errors.push(`${path} must be > ${schema.exclusiveMinimum}.`);\n if (schema.exclusiveMaximum !== undefined && value >= schema.exclusiveMaximum) errors.push(`${path} must be < ${schema.exclusiveMaximum}.`);\n }\n if (Array.isArray(value)) {\n if (schema.minItems !== undefined && value.length < schema.minItems) errors.push(`${path} must have at least ${schema.minItems} items.`);\n if (schema.maxItems !== undefined && value.length > schema.maxItems) errors.push(`${path} must have at most ${schema.maxItems} items.`);\n if (schema.uniqueItems && value.some((item, index) => value.slice(0, index).some((other) => jsonEqual(item, other)))) errors.push(`${path} must contain unique items.`);\n if (schema.items) value.forEach((item, index) => errors.push(...validateAgentToolInput(schema.items!, item, `${path}[${index}]`)));\n }\n if (isRecord(value)) {\n for (const key of schema.required ?? []) {\n if (!Object.hasOwn(value, key)) errors.push(`${path}.${key} is required.`);\n }\n for (const [key, item] of Object.entries(value)) {\n const property = schema.properties && Object.hasOwn(schema.properties, key) ? schema.properties[key] : undefined;\n if (property) errors.push(...validateAgentToolInput(property, item, `${path}.${key}`));\n else if (schema.additionalProperties === false) errors.push(`${path}.${key} is not allowed.`);\n }\n }\n return errors;\n}\n"]}
package/dist/types.d.ts CHANGED
@@ -1,6 +1,16 @@
1
1
  export type JsonSchema = {
2
2
  type?: "object" | "array" | "string" | "number" | "integer" | "boolean" | "null";
3
3
  description?: string;
4
+ minLength?: number;
5
+ maxLength?: number;
6
+ pattern?: string;
7
+ minimum?: number;
8
+ maximum?: number;
9
+ exclusiveMinimum?: number;
10
+ exclusiveMaximum?: number;
11
+ minItems?: number;
12
+ maxItems?: number;
13
+ uniqueItems?: boolean;
4
14
  properties?: Record<string, JsonSchema>;
5
15
  required?: readonly string[];
6
16
  items?: JsonSchema;
@@ -53,7 +63,7 @@ export type AgentContextValue = string | number | boolean | null | readonly Agen
53
63
  };
54
64
  export interface AgentContextEntry {
55
65
  name: string;
56
- description: string;
66
+ description?: string;
57
67
  value: AgentContextValue;
58
68
  }
59
69
  export type AgentContextInput = AgentContextEntry;
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"","sourcesContent":["export type JsonSchema = {\n type?: \"object\" | \"array\" | \"string\" | \"number\" | \"integer\" | \"boolean\" | \"null\";\n description?: string;\n properties?: Record<string, JsonSchema>;\n required?: readonly string[];\n items?: JsonSchema;\n enum?: readonly unknown[];\n additionalProperties?: boolean;\n};\n\nexport type AgentToolInputSchema = JsonSchema & {\n type: \"object\";\n};\n\ntype Simplify<TValue> = { [TKey in keyof TValue]: TValue[TKey] };\n\ntype RequiredPropertyKeys<\n TSchema extends JsonSchema,\n TProperties extends Record<string, JsonSchema>,\n> = TSchema extends { readonly required: readonly (infer TKey)[] }\n ? Extract<TKey, keyof TProperties>\n : never;\n\ntype InferObjectSchema<\n TSchema extends JsonSchema,\n TProperties extends Record<string, JsonSchema>,\n> = keyof TProperties extends never\n ? TSchema extends { readonly additionalProperties: false }\n ? Record<string, never>\n : Record<string, unknown>\n : Simplify<{\n [TKey in RequiredPropertyKeys<TSchema, TProperties>]-?: InferJsonSchema<\n TProperties[TKey]\n >;\n } & {\n [TKey in Exclude<\n keyof TProperties,\n RequiredPropertyKeys<TSchema, TProperties>\n >]?: InferJsonSchema<TProperties[TKey]>;\n }> & (TSchema extends { readonly additionalProperties: false }\n ? unknown\n : Record<string, unknown>);\n\nexport type InferJsonSchema<TSchema extends JsonSchema> =\n TSchema extends { readonly enum: readonly (infer TValue)[] }\n ? TValue\n : TSchema extends { readonly type: \"string\" }\n ? string\n : TSchema extends { readonly type: \"number\" | \"integer\" }\n ? number\n : TSchema extends { readonly type: \"boolean\" }\n ? boolean\n : TSchema extends { readonly type: \"null\" }\n ? null\n : TSchema extends {\n readonly type: \"array\";\n readonly items: infer TItem extends JsonSchema;\n }\n ? InferJsonSchema<TItem>[]\n : TSchema extends { readonly type: \"array\" }\n ? unknown[]\n : TSchema extends {\n readonly type: \"object\";\n readonly properties: infer TProperties extends Record<\n string,\n JsonSchema\n >;\n }\n ? InferObjectSchema<TSchema, TProperties>\n : TSchema extends { readonly type: \"object\" }\n ? TSchema extends { readonly additionalProperties: false }\n ? Record<string, never>\n : Record<string, unknown>\n : unknown;\n\nexport type AgentContextValue =\n | string\n | number\n | boolean\n | null\n | readonly AgentContextValue[]\n | { readonly [key: string]: AgentContextValue };\n\nexport interface AgentContextEntry {\n name: string;\n description: string;\n value: AgentContextValue;\n}\n\nexport type AgentContextInput = AgentContextEntry;\n\nexport interface AgentContextRegistration {\n update(context: AgentContextInput): void;\n dispose(): void;\n}\n\nexport interface AgentToolMetadata {\n name: string;\n description: string;\n inputSchema: AgentToolInputSchema;\n effect: AgentToolEffect;\n}\n\nexport type AgentToolEffect = \"read\" | \"action\" | \"navigate\";\n\nexport interface AgentToolDefinition<\n TInput = Record<string, unknown>,\n TResult = unknown,\n>\n extends AgentToolMetadata {\n readonly __input?: TInput;\n readonly __result?: TResult;\n}\n\nexport interface AgentToolExecutionContext {\n signal: AbortSignal;\n waitForTool(\n definition: AgentToolDefinition<any, any>,\n options?: { timeoutMs?: number },\n ): Promise<void>;\n}\n\nexport type AgentToolExecutor<TInput, TResult> = (\n input: TInput,\n context: AgentToolExecutionContext,\n) => TResult | Promise<TResult>;\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"","sourcesContent":["export type JsonSchema = {\n type?: \"object\" | \"array\" | \"string\" | \"number\" | \"integer\" | \"boolean\" | \"null\";\n description?: string;\n minLength?: number;\n maxLength?: number;\n pattern?: string;\n minimum?: number;\n maximum?: number;\n exclusiveMinimum?: number;\n exclusiveMaximum?: number;\n minItems?: number;\n maxItems?: number;\n uniqueItems?: boolean;\n properties?: Record<string, JsonSchema>;\n required?: readonly string[];\n items?: JsonSchema;\n enum?: readonly unknown[];\n additionalProperties?: boolean;\n};\n\nexport type AgentToolInputSchema = JsonSchema & {\n type: \"object\";\n};\n\ntype Simplify<TValue> = { [TKey in keyof TValue]: TValue[TKey] };\n\ntype RequiredPropertyKeys<\n TSchema extends JsonSchema,\n TProperties extends Record<string, JsonSchema>,\n> = TSchema extends { readonly required: readonly (infer TKey)[] }\n ? Extract<TKey, keyof TProperties>\n : never;\n\ntype InferObjectSchema<\n TSchema extends JsonSchema,\n TProperties extends Record<string, JsonSchema>,\n> = keyof TProperties extends never\n ? TSchema extends { readonly additionalProperties: false }\n ? Record<string, never>\n : Record<string, unknown>\n : Simplify<{\n [TKey in RequiredPropertyKeys<TSchema, TProperties>]-?: InferJsonSchema<\n TProperties[TKey]\n >;\n } & {\n [TKey in Exclude<\n keyof TProperties,\n RequiredPropertyKeys<TSchema, TProperties>\n >]?: InferJsonSchema<TProperties[TKey]>;\n }> & (TSchema extends { readonly additionalProperties: false }\n ? unknown\n : Record<string, unknown>);\n\nexport type InferJsonSchema<TSchema extends JsonSchema> =\n TSchema extends { readonly enum: readonly (infer TValue)[] }\n ? TValue\n : TSchema extends { readonly type: \"string\" }\n ? string\n : TSchema extends { readonly type: \"number\" | \"integer\" }\n ? number\n : TSchema extends { readonly type: \"boolean\" }\n ? boolean\n : TSchema extends { readonly type: \"null\" }\n ? null\n : TSchema extends {\n readonly type: \"array\";\n readonly items: infer TItem extends JsonSchema;\n }\n ? InferJsonSchema<TItem>[]\n : TSchema extends { readonly type: \"array\" }\n ? unknown[]\n : TSchema extends {\n readonly type: \"object\";\n readonly properties: infer TProperties extends Record<\n string,\n JsonSchema\n >;\n }\n ? InferObjectSchema<TSchema, TProperties>\n : TSchema extends { readonly type: \"object\" }\n ? TSchema extends { readonly additionalProperties: false }\n ? Record<string, never>\n : Record<string, unknown>\n : unknown;\n\nexport type AgentContextValue =\n | string\n | number\n | boolean\n | null\n | readonly AgentContextValue[]\n | { readonly [key: string]: AgentContextValue };\n\nexport interface AgentContextEntry {\n name: string;\n description?: string;\n value: AgentContextValue;\n}\n\nexport type AgentContextInput = AgentContextEntry;\n\nexport interface AgentContextRegistration {\n update(context: AgentContextInput): void;\n dispose(): void;\n}\n\nexport interface AgentToolMetadata {\n name: string;\n description: string;\n inputSchema: AgentToolInputSchema;\n effect: AgentToolEffect;\n}\n\nexport type AgentToolEffect = \"read\" | \"action\" | \"navigate\";\n\nexport interface AgentToolDefinition<\n TInput = Record<string, unknown>,\n TResult = unknown,\n>\n extends AgentToolMetadata {\n readonly __input?: TInput;\n readonly __result?: TResult;\n}\n\nexport interface AgentToolExecutionContext {\n signal: AbortSignal;\n waitForTool(\n definition: AgentToolDefinition<any, any>,\n options?: { timeoutMs?: number },\n ): Promise<void>;\n}\n\nexport type AgentToolExecutor<TInput, TResult> = (\n input: TInput,\n context: AgentToolExecutionContext,\n) => TResult | Promise<TResult>;\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nexface/tools",
3
- "version": "0.1.1-alpha.8",
3
+ "version": "0.1.1-alpha.9",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {
@@ -34,5 +34,9 @@
34
34
  },
35
35
  "files": [
36
36
  "dist"
37
- ]
38
- }
37
+ ],
38
+ "scripts": {
39
+ "build": "node ../../scripts/generate-browser-tools-skill.mjs --check && tsc -p tsconfig.json && cp src/styles.css dist/styles.css",
40
+ "typecheck": "node ../../scripts/generate-browser-tools-skill.mjs --check && tsc -p tsconfig.json --noEmit"
41
+ }
42
+ }