@lssm/lib.ai-agent 0.0.0-canary-20251219202229 → 0.0.0-canary-20251220002821
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/dist/agent/contract-spec-agent.d.ts.map +1 -1
- package/dist/agent/contract-spec-agent.js.map +1 -1
- package/dist/schema/json-schema-to-zod.d.ts.map +1 -1
- package/dist/schema/json-schema-to-zod.js +6 -6
- package/dist/schema/json-schema-to-zod.js.map +1 -1
- package/dist/schema/schema-output.d.ts.map +1 -1
- package/dist/schema/schema-output.js +1 -1
- package/dist/schema/schema-output.js.map +1 -1
- package/dist/telemetry/adapter.d.ts.map +1 -1
- package/dist/telemetry/adapter.js.map +1 -1
- package/dist/tools/knowledge-tool.d.ts.map +1 -1
- package/dist/tools/knowledge-tool.js.map +1 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +13 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract-spec-agent.d.ts","names":[],"sources":["../../src/agent/contract-spec-agent.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;;AAuB+E;
|
|
1
|
+
{"version":3,"file":"contract-spec-agent.d.ts","names":[],"sources":["../../src/agent/contract-spec-agent.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;;AAuB+E;AAwB/E,KALK,cAAA,GAAiB,IAKL,CAAA,GAAuB,EAAA,GAAA,CAAA;;;;AAMxB,UANC,uBAAA,CAMD;EAEO;EAEN,IAAA,EART,SAQS;EAEM;EAEY,KAAA,EAV1B,aAU0B;EAAf;EAAM,YAAA,EARV,GAQU,CAAA,MAAA,EARE,WAQF,CAAA;EAcb;EAGI,kBAAA,CAAA,EAvBM,kBAuBN;EACgB;EAAf,YAAA,CAAA,EAtBD,iBAsBC;EA0CN;EACC,kBAAA,CAAA,EA/DU,kBA+DV;EAAR;EAoCoB,eAAA,CAAA,EAjGL,MAiGK,CAAA,MAAA,EAjGU,cAiGV,CAAA;;;;;;;;;;;;;cAnFZ,iBAAA;;;iBAGI;kBACC,eAAe;;;;;;;;;wBA0CrB,0BACP,QAAQ;;;;mBAoCY,sBAAsB,QAAQ;;;;iBAoEhC,oBAAiB,QAAA,GAAA,CAAA,iBAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract-spec-agent.js","names":["z","ToolLoopAgent"],"sources":["../../src/agent/contract-spec-agent.ts"],"sourcesContent":["import {\n Experimental_Agent as ToolLoopAgent,\n type LanguageModel,\n stepCountIs,\n type StepResult,\n type Tool,\n type ToolSet,\n} from 'ai';\nimport * as z from 'zod';\nimport type { KnowledgeRetriever } from '@lssm/lib.knowledge/retriever';\nimport type { AgentSpec } from '../spec/spec';\nimport { agentKey } from '../spec/spec';\nimport type {\n AgentCallOptions,\n AgentGenerateParams,\n AgentGenerateResult,\n AgentStreamParams,\n ToolHandler,\n} from '../types';\nimport { specToolsToAISDKTools } from '../tools/tool-adapter';\nimport { createKnowledgeQueryTool } from '../tools/knowledge-tool';\nimport { injectStaticKnowledge } from '../knowledge/injector';\nimport { type AgentSessionStore, generateSessionId } from '../session/store';\nimport { type TelemetryCollector, trackAgentStep } from '../telemetry/adapter';\n\n/**\n * Call options schema for AI SDK v6.\n * Maps ContractSpec's tenant/actor system to AI SDK callOptionsSchema.\n */\nconst ContractSpecCallOptionsSchema = z.object({\n tenantId: z.string().optional(),\n actorId: z.string().optional(),\n sessionId: z.string().optional(),\n // Zod v4: z.record() requires both key and value schemas\n metadata: z.record(z.string(), z.unknown()).optional(),\n});\n\n/**\n * Type for tool with execute function (compatible with AI SDK Tool)\n * Using `any` for broad compatibility with AI SDK tool types\n */\ntype ExecutableTool = Tool<any, any>;\n\n/**\n * Configuration for creating a ContractSpecAgent.\n */\nexport interface ContractSpecAgentConfig {\n /** The agent specification */\n spec: AgentSpec;\n /** AI SDK language model */\n model: LanguageModel;\n /** Map of tool name to handler function */\n toolHandlers: Map<string, ToolHandler>;\n /** Optional knowledge retriever for RAG */\n knowledgeRetriever?: KnowledgeRetriever;\n /** Optional session store for persistence */\n sessionStore?: AgentSessionStore;\n /** Optional telemetry collector for evolution */\n telemetryCollector?: TelemetryCollector;\n /** Additional AI SDK tools (e.g., from MCP servers) */\n additionalTools?: Record<string, ExecutableTool>;\n}\n\n/**\n * ContractSpec Agent implementation using AI SDK v6.\n *\n * Integrates ContractSpec's spec-first governance with AI SDK's\n * ToolLoopAgent, providing:\n * - Spec-defined tools with type-safe handlers\n * - Hybrid knowledge injection (static + dynamic RAG)\n * - Session persistence\n * - Telemetry for evolution\n * - MCP interoperability\n */\nexport class ContractSpecAgent {\n readonly version = 'agent-v1';\n readonly id: string;\n readonly spec: AgentSpec;\n readonly tools: Record<string, ExecutableTool>;\n\n private readonly inner: ToolLoopAgent<\n z.infer<typeof ContractSpecCallOptionsSchema>,\n ToolSet,\n never\n >;\n private readonly config: ContractSpecAgentConfig;\n private instructions: string;\n\n private constructor(\n config: ContractSpecAgentConfig,\n instructions: string,\n tools: Record<string, ExecutableTool>\n ) {\n this.config = config;\n this.spec = config.spec;\n this.id = agentKey(config.spec.meta);\n this.tools = tools;\n this.instructions = instructions;\n\n // Create the inner ToolLoopAgent with AI SDK v6 settings\n this.inner = new ToolLoopAgent({\n model: config.model,\n instructions,\n tools: tools as ToolSet,\n // Use stopWhen instead of maxSteps (AI SDK v6 API)\n stopWhen: stepCountIs(config.spec.maxSteps ?? 10),\n // Schema for call options (tenant/actor context)\n callOptionsSchema: ContractSpecCallOptionsSchema,\n // Step-level telemetry callback\n onStepFinish: async (step: StepResult<ToolSet>) => {\n await this.handleStepFinish(step);\n },\n });\n }\n\n /**\n * Create a ContractSpecAgent instance.\n * This is async because knowledge injection may need to fetch static content.\n */\n static async create(\n config: ContractSpecAgentConfig\n ): Promise<ContractSpecAgent> {\n // 1. Inject static knowledge into instructions\n const instructions = await injectStaticKnowledge(\n config.spec.instructions,\n config.spec.knowledge ?? [],\n config.knowledgeRetriever\n );\n\n // 2. Build tools from spec\n const specTools = specToolsToAISDKTools(\n config.spec.tools,\n config.toolHandlers,\n { agentId: agentKey(config.spec.meta) }\n );\n\n // 3. Add dynamic knowledge query tool\n const knowledgeTool = config.knowledgeRetriever\n ? createKnowledgeQueryTool(\n config.knowledgeRetriever,\n config.spec.knowledge ?? []\n )\n : null;\n\n // 4. Combine all tools\n const tools: Record<string, ExecutableTool> = {\n ...specTools,\n ...(knowledgeTool ? { query_knowledge: knowledgeTool } : {}),\n ...(config.additionalTools ?? {}),\n };\n\n return new ContractSpecAgent(config, instructions, tools);\n }\n\n /**\n * Generate a response (non-streaming).\n */\n async generate(params: AgentGenerateParams): Promise<AgentGenerateResult> {\n const sessionId = params.options?.sessionId ?? generateSessionId();\n\n // Ensure session exists\n if (this.config.sessionStore) {\n const existing = await this.config.sessionStore.get(sessionId);\n if (!existing) {\n await this.config.sessionStore.create({\n sessionId,\n agentId: this.id,\n tenantId: params.options?.tenantId,\n actorId: params.options?.actorId,\n status: 'running',\n messages: [],\n steps: [],\n metadata: params.options?.metadata,\n });\n }\n }\n\n // Build prompt with optional system override\n const prompt = params.systemOverride\n ? `${this.instructions}\\n\\n${params.systemOverride}\\n\\n${params.prompt}`\n : params.prompt;\n\n // AI SDK v6: maxSteps is controlled via stopWhen in agent settings\n const result = await this.inner.generate({\n prompt,\n abortSignal: params.signal,\n options: {\n tenantId: params.options?.tenantId,\n actorId: params.options?.actorId,\n sessionId,\n metadata: params.options?.metadata,\n },\n });\n\n // Update session status\n if (this.config.sessionStore) {\n await this.config.sessionStore.update(sessionId, {\n status: 'completed',\n });\n }\n\n return {\n text: result.text,\n steps: result.steps,\n // Map AI SDK types to our simplified types\n toolCalls: result.toolCalls.map((tc) => ({\n type: 'tool-call' as const,\n toolCallId: tc.toolCallId,\n toolName: tc.toolName,\n args: 'args' in tc ? tc.args : 'input' in tc ? tc.input : undefined,\n })),\n toolResults: result.toolResults.map((tr) => ({\n type: 'tool-result' as const,\n toolCallId: tr.toolCallId,\n toolName: tr.toolName,\n output: tr.output,\n })),\n finishReason: result.finishReason,\n usage: result.usage,\n };\n }\n\n /**\n * Stream a response with real-time updates.\n */\n async stream(params: AgentStreamParams) {\n const sessionId = params.options?.sessionId ?? generateSessionId();\n\n const prompt = params.systemOverride\n ? `${this.instructions}\\n\\n${params.systemOverride}\\n\\n${params.prompt}`\n : params.prompt;\n\n // AI SDK v6: maxSteps is controlled via stopWhen in agent settings\n // onStepFinish callback is already set in agent construction\n return this.inner.stream({\n prompt,\n abortSignal: params.signal,\n options: {\n tenantId: params.options?.tenantId,\n actorId: params.options?.actorId,\n sessionId,\n metadata: params.options?.metadata,\n },\n });\n }\n\n /**\n * Handle step completion for persistence and telemetry.\n */\n private async handleStepFinish(step: StepResult<ToolSet>): Promise<void> {\n // 1. Persist to session store\n const sessionId = (step as { options?: AgentCallOptions }).options\n ?.sessionId;\n if (sessionId && this.config.sessionStore) {\n await this.config.sessionStore.appendStep(sessionId, step);\n }\n\n // 2. Feed telemetry to evolution engine\n if (this.config.telemetryCollector) {\n await trackAgentStep(this.config.telemetryCollector, this.id, step);\n }\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"contract-spec-agent.js","names":["z","ToolLoopAgent"],"sources":["../../src/agent/contract-spec-agent.ts"],"sourcesContent":["import {\n Experimental_Agent as ToolLoopAgent,\n type LanguageModel,\n stepCountIs,\n type StepResult,\n type Tool,\n type ToolSet,\n} from 'ai';\nimport * as z from 'zod';\nimport type { KnowledgeRetriever } from '@lssm/lib.knowledge/retriever';\nimport type { AgentSpec } from '../spec/spec';\nimport { agentKey } from '../spec/spec';\nimport type {\n AgentCallOptions,\n AgentGenerateParams,\n AgentGenerateResult,\n AgentStreamParams,\n ToolHandler,\n} from '../types';\nimport { specToolsToAISDKTools } from '../tools/tool-adapter';\nimport { createKnowledgeQueryTool } from '../tools/knowledge-tool';\nimport { injectStaticKnowledge } from '../knowledge/injector';\nimport { type AgentSessionStore, generateSessionId } from '../session/store';\nimport { type TelemetryCollector, trackAgentStep } from '../telemetry/adapter';\n\n/**\n * Call options schema for AI SDK v6.\n * Maps ContractSpec's tenant/actor system to AI SDK callOptionsSchema.\n */\nconst ContractSpecCallOptionsSchema = z.object({\n tenantId: z.string().optional(),\n actorId: z.string().optional(),\n sessionId: z.string().optional(),\n // Zod v4: z.record() requires both key and value schemas\n metadata: z.record(z.string(), z.unknown()).optional(),\n});\n\n/**\n * Type for tool with execute function (compatible with AI SDK Tool)\n * Using `any` for broad compatibility with AI SDK tool types\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype ExecutableTool = Tool<any, any>;\n\n/**\n * Configuration for creating a ContractSpecAgent.\n */\nexport interface ContractSpecAgentConfig {\n /** The agent specification */\n spec: AgentSpec;\n /** AI SDK language model */\n model: LanguageModel;\n /** Map of tool name to handler function */\n toolHandlers: Map<string, ToolHandler>;\n /** Optional knowledge retriever for RAG */\n knowledgeRetriever?: KnowledgeRetriever;\n /** Optional session store for persistence */\n sessionStore?: AgentSessionStore;\n /** Optional telemetry collector for evolution */\n telemetryCollector?: TelemetryCollector;\n /** Additional AI SDK tools (e.g., from MCP servers) */\n additionalTools?: Record<string, ExecutableTool>;\n}\n\n/**\n * ContractSpec Agent implementation using AI SDK v6.\n *\n * Integrates ContractSpec's spec-first governance with AI SDK's\n * ToolLoopAgent, providing:\n * - Spec-defined tools with type-safe handlers\n * - Hybrid knowledge injection (static + dynamic RAG)\n * - Session persistence\n * - Telemetry for evolution\n * - MCP interoperability\n */\nexport class ContractSpecAgent {\n readonly version = 'agent-v1';\n readonly id: string;\n readonly spec: AgentSpec;\n readonly tools: Record<string, ExecutableTool>;\n\n private readonly inner: ToolLoopAgent<\n z.infer<typeof ContractSpecCallOptionsSchema>,\n ToolSet,\n never\n >;\n private readonly config: ContractSpecAgentConfig;\n private instructions: string;\n\n private constructor(\n config: ContractSpecAgentConfig,\n instructions: string,\n tools: Record<string, ExecutableTool>\n ) {\n this.config = config;\n this.spec = config.spec;\n this.id = agentKey(config.spec.meta);\n this.tools = tools;\n this.instructions = instructions;\n\n // Create the inner ToolLoopAgent with AI SDK v6 settings\n this.inner = new ToolLoopAgent({\n model: config.model,\n instructions,\n tools: tools as ToolSet,\n // Use stopWhen instead of maxSteps (AI SDK v6 API)\n stopWhen: stepCountIs(config.spec.maxSteps ?? 10),\n // Schema for call options (tenant/actor context)\n callOptionsSchema: ContractSpecCallOptionsSchema,\n // Step-level telemetry callback\n onStepFinish: async (step: StepResult<ToolSet>) => {\n await this.handleStepFinish(step);\n },\n });\n }\n\n /**\n * Create a ContractSpecAgent instance.\n * This is async because knowledge injection may need to fetch static content.\n */\n static async create(\n config: ContractSpecAgentConfig\n ): Promise<ContractSpecAgent> {\n // 1. Inject static knowledge into instructions\n const instructions = await injectStaticKnowledge(\n config.spec.instructions,\n config.spec.knowledge ?? [],\n config.knowledgeRetriever\n );\n\n // 2. Build tools from spec\n const specTools = specToolsToAISDKTools(\n config.spec.tools,\n config.toolHandlers,\n { agentId: agentKey(config.spec.meta) }\n );\n\n // 3. Add dynamic knowledge query tool\n const knowledgeTool = config.knowledgeRetriever\n ? createKnowledgeQueryTool(\n config.knowledgeRetriever,\n config.spec.knowledge ?? []\n )\n : null;\n\n // 4. Combine all tools\n const tools: Record<string, ExecutableTool> = {\n ...specTools,\n ...(knowledgeTool ? { query_knowledge: knowledgeTool } : {}),\n ...(config.additionalTools ?? {}),\n };\n\n return new ContractSpecAgent(config, instructions, tools);\n }\n\n /**\n * Generate a response (non-streaming).\n */\n async generate(params: AgentGenerateParams): Promise<AgentGenerateResult> {\n const sessionId = params.options?.sessionId ?? generateSessionId();\n\n // Ensure session exists\n if (this.config.sessionStore) {\n const existing = await this.config.sessionStore.get(sessionId);\n if (!existing) {\n await this.config.sessionStore.create({\n sessionId,\n agentId: this.id,\n tenantId: params.options?.tenantId,\n actorId: params.options?.actorId,\n status: 'running',\n messages: [],\n steps: [],\n metadata: params.options?.metadata,\n });\n }\n }\n\n // Build prompt with optional system override\n const prompt = params.systemOverride\n ? `${this.instructions}\\n\\n${params.systemOverride}\\n\\n${params.prompt}`\n : params.prompt;\n\n // AI SDK v6: maxSteps is controlled via stopWhen in agent settings\n const result = await this.inner.generate({\n prompt,\n abortSignal: params.signal,\n options: {\n tenantId: params.options?.tenantId,\n actorId: params.options?.actorId,\n sessionId,\n metadata: params.options?.metadata,\n },\n });\n\n // Update session status\n if (this.config.sessionStore) {\n await this.config.sessionStore.update(sessionId, {\n status: 'completed',\n });\n }\n\n return {\n text: result.text,\n steps: result.steps,\n // Map AI SDK types to our simplified types\n toolCalls: result.toolCalls.map((tc) => ({\n type: 'tool-call' as const,\n toolCallId: tc.toolCallId,\n toolName: tc.toolName,\n args: 'args' in tc ? tc.args : 'input' in tc ? tc.input : undefined,\n })),\n toolResults: result.toolResults.map((tr) => ({\n type: 'tool-result' as const,\n toolCallId: tr.toolCallId,\n toolName: tr.toolName,\n output: tr.output,\n })),\n finishReason: result.finishReason,\n usage: result.usage,\n };\n }\n\n /**\n * Stream a response with real-time updates.\n */\n async stream(params: AgentStreamParams) {\n const sessionId = params.options?.sessionId ?? generateSessionId();\n\n const prompt = params.systemOverride\n ? `${this.instructions}\\n\\n${params.systemOverride}\\n\\n${params.prompt}`\n : params.prompt;\n\n // AI SDK v6: maxSteps is controlled via stopWhen in agent settings\n // onStepFinish callback is already set in agent construction\n return this.inner.stream({\n prompt,\n abortSignal: params.signal,\n options: {\n tenantId: params.options?.tenantId,\n actorId: params.options?.actorId,\n sessionId,\n metadata: params.options?.metadata,\n },\n });\n }\n\n /**\n * Handle step completion for persistence and telemetry.\n */\n private async handleStepFinish(step: StepResult<ToolSet>): Promise<void> {\n // 1. Persist to session store\n const sessionId = (step as { options?: AgentCallOptions }).options\n ?.sessionId;\n if (sessionId && this.config.sessionStore) {\n await this.config.sessionStore.appendStep(sessionId, step);\n }\n\n // 2. Feed telemetry to evolution engine\n if (this.config.telemetryCollector) {\n await trackAgentStep(this.config.telemetryCollector, this.id, step);\n }\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-schema-to-zod.d.ts","names":[],"sources":["../../src/schema/json-schema-to-zod.ts"],"sourcesContent":[],"mappings":";;;;;;AAAsC;UAK5B,UAAA,CAEoB;EAAf,IAAA,CAAA,EAAA,MAAA;EAEL,UAAA,CAAA,EAFK,MAEL,CAAA,MAAA,EAFoB,UAEpB,CAAA;EAGA,QAAA,CAAA,EAAA,MAAA,EAAA;EACA,KAAA,CAAA,EAJA,UAIA;EACA,IAAA,CAAA,EAAA,CAAA,MAAA,GAAA,MAAA,GAAA,OAAA,CAAA,EAAA;EAAU,KAAA,CAAA,EAAA,OAAA;EA6BJ,KAAA,CAAA,EA/BN,UA+BqB,EAAA;EACrB,KAAA,CAAA,EA/BA,UA+BA,EAAA;EAAa,KAAA,CAAA,EA9Bb,UA8Ba,EAAA;EACpB,WAAA,CAAA,EAAA,MAAA;EAAO,OAAA,CAAA,EAAA,OAAA;
|
|
1
|
+
{"version":3,"file":"json-schema-to-zod.d.ts","names":[],"sources":["../../src/schema/json-schema-to-zod.ts"],"sourcesContent":[],"mappings":";;;;;;AAAsC;UAK5B,UAAA,CAEoB;EAAf,IAAA,CAAA,EAAA,MAAA;EAEL,UAAA,CAAA,EAFK,MAEL,CAAA,MAAA,EAFoB,UAEpB,CAAA;EAGA,QAAA,CAAA,EAAA,MAAA,EAAA;EACA,KAAA,CAAA,EAJA,UAIA;EACA,IAAA,CAAA,EAAA,CAAA,MAAA,GAAA,MAAA,GAAA,OAAA,CAAA,EAAA;EAAU,KAAA,CAAA,EAAA,OAAA;EA6BJ,KAAA,CAAA,EA/BN,UA+BqB,EAAA;EACrB,KAAA,CAAA,EA/BA,UA+BA,EAAA;EAAa,KAAA,CAAA,EA9Bb,UA8Ba,EAAA;EACpB,WAAA,CAAA,EAAA,MAAA;EAAO,OAAA,CAAA,EAAA,OAAA;EAyKM,OAAA,CAAA,EAAA,MAAA;;;;;;;;;;;;;;;;;;;;;;;;;iBA3KA,eAAA,SACN,aAAa,0BACpB;;;;;;;iBAyKa,mBAAA,UAA6B,0BAA0B"}
|
|
@@ -29,19 +29,19 @@ function jsonSchemaToZod(schema) {
|
|
|
29
29
|
}
|
|
30
30
|
if (s.anyOf && s.anyOf.length > 0) {
|
|
31
31
|
const schemas = s.anyOf.map((sub) => jsonSchemaToZod(sub));
|
|
32
|
-
if (schemas.length === 1) return schemas[0];
|
|
32
|
+
if (schemas.length === 1) return schemas[0] ?? z.unknown();
|
|
33
33
|
return z.union([
|
|
34
|
-
schemas[0],
|
|
35
|
-
schemas[1],
|
|
34
|
+
schemas[0] ?? z.unknown(),
|
|
35
|
+
schemas[1] ?? z.unknown(),
|
|
36
36
|
...schemas.slice(2)
|
|
37
37
|
]);
|
|
38
38
|
}
|
|
39
39
|
if (s.oneOf && s.oneOf.length > 0) {
|
|
40
40
|
const schemas = s.oneOf.map((sub) => jsonSchemaToZod(sub));
|
|
41
|
-
if (schemas.length === 1) return schemas[0];
|
|
41
|
+
if (schemas.length === 1) return schemas[0] ?? z.unknown();
|
|
42
42
|
return z.union([
|
|
43
|
-
schemas[0],
|
|
44
|
-
schemas[1],
|
|
43
|
+
schemas[0] ?? z.unknown(),
|
|
44
|
+
schemas[1] ?? z.unknown(),
|
|
45
45
|
...schemas.slice(2)
|
|
46
46
|
]);
|
|
47
47
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-schema-to-zod.js","names":["shape: Record<string, ZodType>"],"sources":["../../src/schema/json-schema-to-zod.ts"],"sourcesContent":["import { z, type ZodType } from 'zod';\n\n/**\n * JSON Schema type definitions for conversion.\n */\ninterface JsonSchema {\n type?: string;\n properties?: Record<string, JsonSchema>;\n required?: string[];\n items?: JsonSchema;\n enum?: (string | number | boolean)[];\n const?: unknown;\n anyOf?: JsonSchema[];\n oneOf?: JsonSchema[];\n allOf?: JsonSchema[];\n description?: string;\n default?: unknown;\n minimum?: number;\n maximum?: number;\n minLength?: number;\n maxLength?: number;\n pattern?: string;\n format?: string;\n nullable?: boolean;\n [key: string]: unknown;\n}\n\n/**\n * Convert a JSON Schema to a Zod schema.\n *\n * Supports common JSON Schema types and constraints:\n * - string, number, integer, boolean, null\n * - object with properties and required\n * - array with items\n * - enum and const\n * - anyOf, oneOf, allOf\n * - format constraints (email, uri, uuid, date-time)\n * - numeric constraints (minimum, maximum)\n * - string constraints (minLength, maxLength, pattern)\n *\n * @param schema - JSON Schema object\n * @returns Zod schema\n */\nexport function jsonSchemaToZod(\n schema: JsonSchema | Record<string, unknown>\n): ZodType {\n const s = schema as JsonSchema;\n\n // Handle nullable\n const makeNullable = (zodSchema: ZodType): ZodType => {\n return s.nullable ? z.union([zodSchema, z.null()]) : zodSchema;\n };\n\n // Handle const\n if (s.const !== undefined) {\n return z.literal(s.const as string | number | boolean);\n }\n\n // Handle enum\n if (s.enum) {\n const values = s.enum as [\n string | number | boolean,\n ...(string | number | boolean)[],\n ];\n return makeNullable(z.enum(values.map(String) as [string, ...string[]]));\n }\n\n // Handle anyOf\n if (s.anyOf && s.anyOf.length > 0) {\n const schemas = s.anyOf.map((sub) => jsonSchemaToZod(sub));\n if (schemas.length === 1) return schemas[0]
|
|
1
|
+
{"version":3,"file":"json-schema-to-zod.js","names":["shape: Record<string, ZodType>"],"sources":["../../src/schema/json-schema-to-zod.ts"],"sourcesContent":["import { z, type ZodType } from 'zod';\n\n/**\n * JSON Schema type definitions for conversion.\n */\ninterface JsonSchema {\n type?: string;\n properties?: Record<string, JsonSchema>;\n required?: string[];\n items?: JsonSchema;\n enum?: (string | number | boolean)[];\n const?: unknown;\n anyOf?: JsonSchema[];\n oneOf?: JsonSchema[];\n allOf?: JsonSchema[];\n description?: string;\n default?: unknown;\n minimum?: number;\n maximum?: number;\n minLength?: number;\n maxLength?: number;\n pattern?: string;\n format?: string;\n nullable?: boolean;\n [key: string]: unknown;\n}\n\n/**\n * Convert a JSON Schema to a Zod schema.\n *\n * Supports common JSON Schema types and constraints:\n * - string, number, integer, boolean, null\n * - object with properties and required\n * - array with items\n * - enum and const\n * - anyOf, oneOf, allOf\n * - format constraints (email, uri, uuid, date-time)\n * - numeric constraints (minimum, maximum)\n * - string constraints (minLength, maxLength, pattern)\n *\n * @param schema - JSON Schema object\n * @returns Zod schema\n */\nexport function jsonSchemaToZod(\n schema: JsonSchema | Record<string, unknown>\n): ZodType {\n const s = schema as JsonSchema;\n\n // Handle nullable\n const makeNullable = (zodSchema: ZodType): ZodType => {\n return s.nullable ? z.union([zodSchema, z.null()]) : zodSchema;\n };\n\n // Handle const\n if (s.const !== undefined) {\n return z.literal(s.const as string | number | boolean);\n }\n\n // Handle enum\n if (s.enum) {\n const values = s.enum as [\n string | number | boolean,\n ...(string | number | boolean)[],\n ];\n return makeNullable(z.enum(values.map(String) as [string, ...string[]]));\n }\n\n // Handle anyOf\n if (s.anyOf && s.anyOf.length > 0) {\n const schemas = s.anyOf.map((sub) => jsonSchemaToZod(sub));\n if (schemas.length === 1) return schemas[0] ?? z.unknown();\n return z.union([\n schemas[0] ?? z.unknown(),\n schemas[1] ?? z.unknown(),\n ...schemas.slice(2),\n ]);\n }\n\n // Handle oneOf (same as anyOf for Zod purposes)\n if (s.oneOf && s.oneOf.length > 0) {\n const schemas = s.oneOf.map((sub) => jsonSchemaToZod(sub));\n if (schemas.length === 1) return schemas[0] ?? z.unknown();\n return z.union([\n schemas[0] ?? z.unknown(),\n schemas[1] ?? z.unknown(),\n ...schemas.slice(2),\n ]);\n }\n\n // Handle allOf (intersection)\n if (s.allOf && s.allOf.length > 0) {\n const schemas = s.allOf.map((sub) => jsonSchemaToZod(sub));\n return schemas.reduce((acc, curr) => z.intersection(acc, curr));\n }\n\n // Handle type\n switch (s.type) {\n case 'string':\n return makeNullable(buildStringSchema(s));\n case 'number':\n case 'integer':\n return makeNullable(buildNumberSchema(s));\n case 'boolean':\n return makeNullable(z.boolean());\n case 'null':\n return z.null();\n case 'array':\n return makeNullable(buildArraySchema(s));\n case 'object':\n return makeNullable(buildObjectSchema(s));\n default:\n // Unknown type, accept anything\n return z.unknown();\n }\n}\n\nfunction buildStringSchema(schema: JsonSchema): ZodType {\n let zodSchema = z.string();\n\n if (schema.description) {\n zodSchema = zodSchema.describe(schema.description);\n }\n\n // Format constraints\n switch (schema.format) {\n case 'email':\n zodSchema = zodSchema.email();\n break;\n case 'uri':\n case 'url':\n zodSchema = zodSchema.url();\n break;\n case 'uuid':\n zodSchema = zodSchema.uuid();\n break;\n case 'date-time':\n zodSchema = zodSchema.datetime();\n break;\n case 'date':\n zodSchema = zodSchema.date();\n break;\n }\n\n // Length constraints\n if (schema.minLength !== undefined) {\n zodSchema = zodSchema.min(schema.minLength);\n }\n if (schema.maxLength !== undefined) {\n zodSchema = zodSchema.max(schema.maxLength);\n }\n\n // Pattern constraint\n if (schema.pattern) {\n zodSchema = zodSchema.regex(new RegExp(schema.pattern));\n }\n\n return zodSchema;\n}\n\nfunction buildNumberSchema(schema: JsonSchema): ZodType {\n let zodSchema = schema.type === 'integer' ? z.number().int() : z.number();\n\n if (schema.description) {\n zodSchema = zodSchema.describe(schema.description);\n }\n\n if (schema.minimum !== undefined) {\n zodSchema = zodSchema.min(schema.minimum);\n }\n if (schema.maximum !== undefined) {\n zodSchema = zodSchema.max(schema.maximum);\n }\n\n return zodSchema;\n}\n\nfunction buildArraySchema(schema: JsonSchema): ZodType {\n const itemsSchema = schema.items\n ? jsonSchemaToZod(schema.items)\n : z.unknown();\n let zodSchema = z.array(itemsSchema);\n\n if (schema.description) {\n zodSchema = zodSchema.describe(schema.description);\n }\n\n return zodSchema;\n}\n\nfunction buildObjectSchema(schema: JsonSchema): ZodType {\n const properties = schema.properties ?? {};\n const required = new Set(schema.required ?? []);\n\n const shape: Record<string, ZodType> = {};\n for (const [key, propSchema] of Object.entries(properties)) {\n const zodProp = jsonSchemaToZod(propSchema);\n shape[key] = required.has(key) ? zodProp : zodProp.optional();\n }\n\n let zodSchema = z.object(shape);\n\n if (schema.description) {\n zodSchema = zodSchema.describe(schema.description);\n }\n\n return zodSchema;\n}\n\n/**\n * Convert a JSON Schema to a Zod schema with a default empty object fallback.\n *\n * @param schema - Optional JSON Schema object\n * @returns Zod schema (defaults to empty object schema)\n */\nexport function jsonSchemaToZodSafe(schema?: Record<string, unknown>): ZodType {\n if (!schema || Object.keys(schema).length === 0) {\n return z.object({});\n }\n return jsonSchemaToZod(schema);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AA2CA,SAAgB,gBACd,QACS;CACT,MAAM,IAAI;CAGV,MAAM,gBAAgB,cAAgC;AACpD,SAAO,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,GAAG;;AAIvD,KAAI,EAAE,UAAU,OACd,QAAO,EAAE,QAAQ,EAAE,MAAmC;AAIxD,KAAI,EAAE,MAAM;EACV,MAAM,SAAS,EAAE;AAIjB,SAAO,aAAa,EAAE,KAAK,OAAO,IAAI,OAAO,CAA0B,CAAC;;AAI1E,KAAI,EAAE,SAAS,EAAE,MAAM,SAAS,GAAG;EACjC,MAAM,UAAU,EAAE,MAAM,KAAK,QAAQ,gBAAgB,IAAI,CAAC;AAC1D,MAAI,QAAQ,WAAW,EAAG,QAAO,QAAQ,MAAM,EAAE,SAAS;AAC1D,SAAO,EAAE,MAAM;GACb,QAAQ,MAAM,EAAE,SAAS;GACzB,QAAQ,MAAM,EAAE,SAAS;GACzB,GAAG,QAAQ,MAAM,EAAE;GACpB,CAAC;;AAIJ,KAAI,EAAE,SAAS,EAAE,MAAM,SAAS,GAAG;EACjC,MAAM,UAAU,EAAE,MAAM,KAAK,QAAQ,gBAAgB,IAAI,CAAC;AAC1D,MAAI,QAAQ,WAAW,EAAG,QAAO,QAAQ,MAAM,EAAE,SAAS;AAC1D,SAAO,EAAE,MAAM;GACb,QAAQ,MAAM,EAAE,SAAS;GACzB,QAAQ,MAAM,EAAE,SAAS;GACzB,GAAG,QAAQ,MAAM,EAAE;GACpB,CAAC;;AAIJ,KAAI,EAAE,SAAS,EAAE,MAAM,SAAS,EAE9B,QADgB,EAAE,MAAM,KAAK,QAAQ,gBAAgB,IAAI,CAAC,CAC3C,QAAQ,KAAK,SAAS,EAAE,aAAa,KAAK,KAAK,CAAC;AAIjE,SAAQ,EAAE,MAAV;EACE,KAAK,SACH,QAAO,aAAa,kBAAkB,EAAE,CAAC;EAC3C,KAAK;EACL,KAAK,UACH,QAAO,aAAa,kBAAkB,EAAE,CAAC;EAC3C,KAAK,UACH,QAAO,aAAa,EAAE,SAAS,CAAC;EAClC,KAAK,OACH,QAAO,EAAE,MAAM;EACjB,KAAK,QACH,QAAO,aAAa,iBAAiB,EAAE,CAAC;EAC1C,KAAK,SACH,QAAO,aAAa,kBAAkB,EAAE,CAAC;EAC3C,QAEE,QAAO,EAAE,SAAS;;;AAIxB,SAAS,kBAAkB,QAA6B;CACtD,IAAI,YAAY,EAAE,QAAQ;AAE1B,KAAI,OAAO,YACT,aAAY,UAAU,SAAS,OAAO,YAAY;AAIpD,SAAQ,OAAO,QAAf;EACE,KAAK;AACH,eAAY,UAAU,OAAO;AAC7B;EACF,KAAK;EACL,KAAK;AACH,eAAY,UAAU,KAAK;AAC3B;EACF,KAAK;AACH,eAAY,UAAU,MAAM;AAC5B;EACF,KAAK;AACH,eAAY,UAAU,UAAU;AAChC;EACF,KAAK;AACH,eAAY,UAAU,MAAM;AAC5B;;AAIJ,KAAI,OAAO,cAAc,OACvB,aAAY,UAAU,IAAI,OAAO,UAAU;AAE7C,KAAI,OAAO,cAAc,OACvB,aAAY,UAAU,IAAI,OAAO,UAAU;AAI7C,KAAI,OAAO,QACT,aAAY,UAAU,MAAM,IAAI,OAAO,OAAO,QAAQ,CAAC;AAGzD,QAAO;;AAGT,SAAS,kBAAkB,QAA6B;CACtD,IAAI,YAAY,OAAO,SAAS,YAAY,EAAE,QAAQ,CAAC,KAAK,GAAG,EAAE,QAAQ;AAEzE,KAAI,OAAO,YACT,aAAY,UAAU,SAAS,OAAO,YAAY;AAGpD,KAAI,OAAO,YAAY,OACrB,aAAY,UAAU,IAAI,OAAO,QAAQ;AAE3C,KAAI,OAAO,YAAY,OACrB,aAAY,UAAU,IAAI,OAAO,QAAQ;AAG3C,QAAO;;AAGT,SAAS,iBAAiB,QAA6B;CACrD,MAAM,cAAc,OAAO,QACvB,gBAAgB,OAAO,MAAM,GAC7B,EAAE,SAAS;CACf,IAAI,YAAY,EAAE,MAAM,YAAY;AAEpC,KAAI,OAAO,YACT,aAAY,UAAU,SAAS,OAAO,YAAY;AAGpD,QAAO;;AAGT,SAAS,kBAAkB,QAA6B;CACtD,MAAM,aAAa,OAAO,cAAc,EAAE;CAC1C,MAAM,WAAW,IAAI,IAAI,OAAO,YAAY,EAAE,CAAC;CAE/C,MAAMA,QAAiC,EAAE;AACzC,MAAK,MAAM,CAAC,KAAK,eAAe,OAAO,QAAQ,WAAW,EAAE;EAC1D,MAAM,UAAU,gBAAgB,WAAW;AAC3C,QAAM,OAAO,SAAS,IAAI,IAAI,GAAG,UAAU,QAAQ,UAAU;;CAG/D,IAAI,YAAY,EAAE,OAAO,MAAM;AAE/B,KAAI,OAAO,YACT,aAAY,UAAU,SAAS,OAAO,YAAY;AAGpD,QAAO;;;;;;;;AAST,SAAgB,oBAAoB,QAA2C;AAC7E,KAAI,CAAC,UAAU,OAAO,KAAK,OAAO,CAAC,WAAW,EAC5C,QAAO,EAAE,OAAO,EAAE,CAAC;AAErB,QAAO,gBAAgB,OAAO"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-output.d.ts","names":[],"sources":["../../src/schema/schema-output.ts"],"sourcesContent":[],"mappings":";;;;;;;
|
|
1
|
+
{"version":3,"file":"schema-output.d.ts","names":[],"sources":["../../src/schema/schema-output.ts"],"sourcesContent":[],"mappings":";;;;;;;AACmC;AAWC;AACD;AACC;AASpC,KAXK,kBAAA,GAAqB,UAWQ,CACxB,OAZkC,MAAA,CAAO,MAahD,CAAA;AAaH,KAzBK,iBAAA,GAAoB,UAyBc,CAAA,OAzBI,MAAA,CAAO,KA2B/C,CAAA;AAaH,KAvCK,kBAAA,GAAqB,UAuCQ,CAAqB,OAvCX,MAAA,CAAO,MAuCsB,CAAA;AAYzE,KAlDK,gBAAA,GAAmB,UAkDG,CAAA,OAlDe,MAAA,CAAO,IAkDtB,CAAA;;;;;AAW3B;AAOA;iBA5DgB,kBAAA,SACN,0BACP;;;;;;;iBAaa,uBAAA,aACF,0BACX;;;;;;;iBAaa,kBAAA,qBAAuC;;;;;;;iBAYvC,sBAAsB,iBAAiB,IAAI;;;;;;iBAW3C,UAAA,CAAA,GAAc;;;;cAOjB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-output.js","names":[],"sources":["../../src/schema/schema-output.ts"],"sourcesContent":["import { Output } from 'ai';\nimport {
|
|
1
|
+
{"version":3,"file":"schema-output.js","names":[],"sources":["../../src/schema/schema-output.ts"],"sourcesContent":["import { Output } from 'ai';\nimport { type ZodType } from 'zod';\nimport { jsonSchemaToZod } from './json-schema-to-zod';\n\n/**\n * Bridge between ContractSpec SchemaModel and AI SDK Output.\n *\n * This module provides utilities to convert ContractSpec schema definitions\n * to AI SDK v6 Output.* structured output configurations.\n */\n\n// Extract return types from Output functions for explicit type annotations\ntype ObjectOutputReturn = ReturnType<typeof Output.object>;\ntype ArrayOutputReturn = ReturnType<typeof Output.array>;\ntype ChoiceOutputReturn = ReturnType<typeof Output.choice>;\ntype TextOutputReturn = ReturnType<typeof Output.text>;\n\n/**\n * Create an AI SDK Output.object from a JSON Schema.\n *\n * @param schema - JSON Schema object\n * @returns AI SDK Output configuration\n */\nexport function jsonSchemaToOutput(\n schema: Record<string, unknown>\n): ObjectOutputReturn {\n const zodSchema = jsonSchemaToZod(schema);\n return Output.object({\n schema: zodSchema,\n });\n}\n\n/**\n * Create an AI SDK Output.array from a JSON Schema items definition.\n *\n * @param itemSchema - JSON Schema for array items\n * @returns AI SDK Output configuration\n */\nexport function jsonSchemaToArrayOutput(\n itemSchema: Record<string, unknown>\n): ArrayOutputReturn {\n const zodSchema = jsonSchemaToZod(itemSchema);\n return Output.array({\n element: zodSchema,\n });\n}\n\n/**\n * Create an AI SDK Output.choice from enum values.\n *\n * @param choices - Array of choice values\n * @returns AI SDK Output configuration\n */\nexport function enumToChoiceOutput(choices: string[]): ChoiceOutputReturn {\n return Output.choice({\n options: choices as [string, ...string[]],\n });\n}\n\n/**\n * Create an AI SDK Output from a Zod schema directly.\n *\n * @param schema - Zod schema\n * @returns AI SDK Output configuration\n */\nexport function zodToOutput<T extends ZodType>(schema: T): ObjectOutputReturn {\n return Output.object({\n schema,\n });\n}\n\n/**\n * Create a simple text output configuration.\n *\n * @returns AI SDK Output configuration for text\n */\nexport function textOutput(): TextOutputReturn {\n return Output.text();\n}\n\n/**\n * Output builder that can be used fluently.\n */\nexport const SchemaOutput = {\n /**\n * Create an object output from JSON Schema.\n */\n fromJsonSchema: jsonSchemaToOutput,\n\n /**\n * Create an array output from JSON Schema.\n */\n arrayFromJsonSchema: jsonSchemaToArrayOutput,\n\n /**\n * Create a choice output from enum.\n */\n fromEnum: enumToChoiceOutput,\n\n /**\n * Create an output from Zod schema.\n */\n fromZod: zodToOutput,\n\n /**\n * Create a text output.\n */\n text: textOutput,\n} as const;\n"],"mappings":";;;;;;;;;;;AAuBA,SAAgB,mBACd,QACoB;CACpB,MAAM,YAAY,gBAAgB,OAAO;AACzC,QAAO,OAAO,OAAO,EACnB,QAAQ,WACT,CAAC;;;;;;;;AASJ,SAAgB,wBACd,YACmB;CACnB,MAAM,YAAY,gBAAgB,WAAW;AAC7C,QAAO,OAAO,MAAM,EAClB,SAAS,WACV,CAAC;;;;;;;;AASJ,SAAgB,mBAAmB,SAAuC;AACxE,QAAO,OAAO,OAAO,EACnB,SAAS,SACV,CAAC;;;;;;;;AASJ,SAAgB,YAA+B,QAA+B;AAC5E,QAAO,OAAO,OAAO,EACnB,QACD,CAAC;;;;;;;AAQJ,SAAgB,aAA+B;AAC7C,QAAO,OAAO,MAAM;;;;;AAMtB,MAAa,eAAe;CAI1B,gBAAgB;CAKhB,qBAAqB;CAKrB,UAAU;CAKV,SAAS;CAKT,MAAM;CACP"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","names":[],"sources":["../../src/telemetry/adapter.ts"],"sourcesContent":[],"mappings":";;;;;;AAKA;AAgBiB,UAhBA,qBAAA,CAoBC;
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","names":[],"sources":["../../src/telemetry/adapter.ts"],"sourcesContent":[],"mappings":";;;;;;AAKA;AAgBiB,UAhBA,qBAAA,CAoBC;EA0BI,SAAA,EAAA;IACT,IAAA,EAAA,MAAA;IAEM,OAAA,EAAA,MAAA;EAAX,CAAA;EAEL,UAAA,EAAA,MAAA;EAAO,OAAA,EAAA,OAAA;EAyCG,SAAA,EAxFA,IAwFA;EAGW,QAAA,CAAA,EA1FX,MA0FW,CAAA,MAAA,EAAA,OAAA,CAAA;;;;;;AA6BxB;AAOA;;;UAnHiB,kBAAA;;;;kBAIC,wBAAwB;;;;;;;;;;;;;iBA0BpB,cAAA,YACT,2CAEL,WAAW,gCAEhB;;;;cAyCU,0BAAA,YAAsC;;kBAG3B,wBAAwB;;;;gBAOhC;;;;iDAOiC;;;;;;;;;iBAejC,gCAAA,CAAA,GAAoC;;;;cAOvC,wBAAwB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.js","names":["toolSample: OperationMetricSample","stepSample: OperationMetricSample","noopTelemetryCollector: TelemetryCollector"],"sources":["../../src/telemetry/adapter.ts"],"sourcesContent":["import type { StepResult,
|
|
1
|
+
{"version":3,"file":"adapter.js","names":["toolSample: OperationMetricSample","stepSample: OperationMetricSample","noopTelemetryCollector: TelemetryCollector"],"sources":["../../src/telemetry/adapter.ts"],"sourcesContent":["import type { StepResult, ToolSet } from 'ai';\n\n/**\n * Metric sample compatible with @lssm/lib.evolution OperationMetricSample.\n */\nexport interface OperationMetricSample {\n operation: { name: string; version: number };\n durationMs: number;\n success: boolean;\n timestamp: Date;\n metadata?: Record<string, unknown>;\n}\n\n/**\n * Interface for collecting telemetry metrics.\n *\n * Implementations can send metrics to:\n * - @lssm/lib.evolution for self-improvement\n * - PostHog for analytics\n * - Custom monitoring systems\n */\nexport interface TelemetryCollector {\n /**\n * Collect a metric sample.\n */\n collect(sample: OperationMetricSample): Promise<void>;\n}\n\n/**\n * Parse agent ID into name and version.\n */\nfunction parseAgentId(agentId: string): { name: string; version: number } {\n const match = agentId.match(/^(.+)\\.v(\\d+)$/);\n if (match) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return { name: match[1]!, version: parseInt(match[2]!, 10) };\n }\n return { name: agentId, version: 1 };\n}\n\n/**\n * Track an agent step for telemetry.\n *\n * Called from ContractSpecAgent.onStepFinish to feed metrics\n * to the evolution engine.\n *\n * @param collector - Telemetry collector\n * @param agentId - Agent identifier (e.g., \"support.bot.v1\")\n * @param step - AI SDK step result\n * @param durationMs - Optional step duration in milliseconds\n */\nexport async function trackAgentStep(\n collector: TelemetryCollector,\n agentId: string,\n step: StepResult<ToolSet>,\n durationMs?: number\n): Promise<void> {\n const { name, version } = parseAgentId(agentId);\n\n // Track tool invocations\n for (const toolCall of step.toolCalls ?? []) {\n const toolSample: OperationMetricSample = {\n operation: { name: `${name}.${toolCall.toolName}`, version },\n durationMs: durationMs ?? 0,\n success:\n step.toolResults?.some(\n (r) => r.toolCallId === toolCall.toolCallId && r.output !== undefined\n ) ?? false,\n timestamp: new Date(),\n metadata: {\n agentId,\n toolName: toolCall.toolName,\n finishReason: step.finishReason,\n },\n };\n await collector.collect(toolSample);\n }\n\n // Track overall step\n const stepSample: OperationMetricSample = {\n operation: { name, version },\n durationMs: durationMs ?? 0,\n success: step.finishReason !== 'error',\n timestamp: new Date(),\n metadata: {\n agentId,\n finishReason: step.finishReason,\n tokenUsage: step.usage,\n toolCallCount: step.toolCalls?.length ?? 0,\n },\n };\n await collector.collect(stepSample);\n}\n\n/**\n * In-memory telemetry collector for testing.\n */\nexport class InMemoryTelemetryCollector implements TelemetryCollector {\n private readonly samples: OperationMetricSample[] = [];\n\n async collect(sample: OperationMetricSample): Promise<void> {\n this.samples.push(sample);\n }\n\n /**\n * Get all collected samples.\n */\n getSamples(): OperationMetricSample[] {\n return [...this.samples];\n }\n\n /**\n * Get samples for a specific operation.\n */\n getSamplesForOperation(operationName: string): OperationMetricSample[] {\n return this.samples.filter((s) => s.operation.name === operationName);\n }\n\n /**\n * Clear all samples.\n */\n clear(): void {\n this.samples.length = 0;\n }\n}\n\n/**\n * Create an in-memory telemetry collector.\n */\nexport function createInMemoryTelemetryCollector(): InMemoryTelemetryCollector {\n return new InMemoryTelemetryCollector();\n}\n\n/**\n * No-op telemetry collector that discards all metrics.\n */\nexport const noopTelemetryCollector: TelemetryCollector = {\n collect: async () => {\n /* noop */\n },\n};\n"],"mappings":";;;;AA+BA,SAAS,aAAa,SAAoD;CACxE,MAAM,QAAQ,QAAQ,MAAM,iBAAiB;AAC7C,KAAI,MAEF,QAAO;EAAE,MAAM,MAAM;EAAK,SAAS,SAAS,MAAM,IAAK,GAAG;EAAE;AAE9D,QAAO;EAAE,MAAM;EAAS,SAAS;EAAG;;;;;;;;;;;;;AActC,eAAsB,eACpB,WACA,SACA,MACA,YACe;CACf,MAAM,EAAE,MAAM,YAAY,aAAa,QAAQ;AAG/C,MAAK,MAAM,YAAY,KAAK,aAAa,EAAE,EAAE;EAC3C,MAAMA,aAAoC;GACxC,WAAW;IAAE,MAAM,GAAG,KAAK,GAAG,SAAS;IAAY;IAAS;GAC5D,YAAY,cAAc;GAC1B,SACE,KAAK,aAAa,MACf,MAAM,EAAE,eAAe,SAAS,cAAc,EAAE,WAAW,OAC7D,IAAI;GACP,2BAAW,IAAI,MAAM;GACrB,UAAU;IACR;IACA,UAAU,SAAS;IACnB,cAAc,KAAK;IACpB;GACF;AACD,QAAM,UAAU,QAAQ,WAAW;;CAIrC,MAAMC,aAAoC;EACxC,WAAW;GAAE;GAAM;GAAS;EAC5B,YAAY,cAAc;EAC1B,SAAS,KAAK,iBAAiB;EAC/B,2BAAW,IAAI,MAAM;EACrB,UAAU;GACR;GACA,cAAc,KAAK;GACnB,YAAY,KAAK;GACjB,eAAe,KAAK,WAAW,UAAU;GAC1C;EACF;AACD,OAAM,UAAU,QAAQ,WAAW;;;;;AAMrC,IAAa,6BAAb,MAAsE;CACpE,AAAiB,UAAmC,EAAE;CAEtD,MAAM,QAAQ,QAA8C;AAC1D,OAAK,QAAQ,KAAK,OAAO;;;;;CAM3B,aAAsC;AACpC,SAAO,CAAC,GAAG,KAAK,QAAQ;;;;;CAM1B,uBAAuB,eAAgD;AACrE,SAAO,KAAK,QAAQ,QAAQ,MAAM,EAAE,UAAU,SAAS,cAAc;;;;;CAMvE,QAAc;AACZ,OAAK,QAAQ,SAAS;;;;;;AAO1B,SAAgB,mCAA+D;AAC7E,QAAO,IAAI,4BAA4B;;;;;AAMzC,MAAaC,yBAA6C,EACxD,SAAS,YAAY,IAGtB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"knowledge-tool.d.ts","names":[],"sources":["../../src/tools/knowledge-tool.ts"],"sourcesContent":[],"mappings":";;;;;;;;AAgBA;;;;;;;;;iBAAgB,wBAAA,YACH,mCACI,
|
|
1
|
+
{"version":3,"file":"knowledge-tool.d.ts","names":[],"sources":["../../src/tools/knowledge-tool.ts"],"sourcesContent":[],"mappings":";;;;;;;;AAgBA;;;;;;;;;iBAAgB,wBAAA,YACH,mCACI,sBAEd"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"knowledge-tool.js","names":["z","allResults: { space: string; content: string; score: number }[]"],"sources":["../../src/tools/knowledge-tool.ts"],"sourcesContent":["import { tool, type Tool } from 'ai';\nimport * as z from 'zod';\nimport type { KnowledgeRetriever } from '@lssm/lib.knowledge/retriever';\nimport type { AgentKnowledgeRef } from '../spec/spec';\n\n/**\n * Create a knowledge query tool for dynamic RAG.\n *\n * This tool allows the agent to query optional knowledge spaces\n * at runtime. Required knowledge is injected statically via\n * the knowledge injector.\n *\n * @param retriever - The knowledge retriever to use\n * @param knowledgeRefs - Knowledge references from the agent spec\n * @returns AI SDK CoreTool for knowledge queries\n */\nexport function createKnowledgeQueryTool(\n retriever: KnowledgeRetriever,\n knowledgeRefs: AgentKnowledgeRef[]\n): Tool<any, any> | null {\n // Only include optional (non-required) knowledge spaces\n const optionalSpaces = knowledgeRefs\n .filter((k) => !k.required)\n .map((k) => k.key)\n .filter((key) => retriever.supportsSpace(key));\n\n if (optionalSpaces.length === 0) {\n return null;\n }\n\n // Build space descriptions for the tool\n const spaceDescriptions = knowledgeRefs\n .filter((k) => !k.required && retriever.supportsSpace(k.key))\n .map((k) => `- ${k.key}: ${k.instructions ?? 'Knowledge space'}`)\n .join('\\n');\n\n return tool({\n description: `Query knowledge bases for relevant information. Use this tool when you need to look up specific information that may not be in your context.\n\nAvailable knowledge spaces:\n${spaceDescriptions}`,\n // AI SDK v6 uses inputSchema instead of parameters\n inputSchema: z.object({\n query: z\n .string()\n .describe('The question or search query to find relevant information'),\n spaceKey: z\n .enum(optionalSpaces as [string, ...string[]])\n .optional()\n .describe(\n 'Specific knowledge space to query. If omitted, searches all available spaces.'\n ),\n topK: z\n .number()\n .optional()\n .default(5)\n .describe('Maximum number of results to return'),\n }),\n execute: async ({ query, spaceKey, topK }) => {\n const spacesToSearch = spaceKey ? [spaceKey] : optionalSpaces;\n const allResults: { space: string; content: string; score: number }[] =\n [];\n\n for (const space of spacesToSearch) {\n try {\n const results = await retriever.retrieve(query, {\n spaceKey: space,\n topK: topK ?? 5,\n });\n\n for (const result of results) {\n allResults.push({\n space,\n content: result.content,\n score: result.score,\n });\n }\n } catch (error) {\n // Log but don't fail on individual space errors\n console.warn(`Failed to query knowledge space ${space}:`, error);\n }\n }\n\n if (allResults.length === 0) {\n return 'No relevant information found in the knowledge bases.';\n }\n\n // Sort by score and format results\n allResults.sort((a, b) => b.score - a.score);\n const topResults = allResults.slice(0, topK ?? 5);\n\n return topResults\n .map(\n (r, i) =>\n `[Source ${i + 1} - ${r.space}] (relevance: ${(r.score * 100).toFixed(0)}%)\\n${r.content}`\n )\n .join('\\n\\n---\\n\\n');\n },\n });\n}\n"],"mappings":";;;;;;;;;;;;;;;AAgBA,SAAgB,yBACd,WACA,
|
|
1
|
+
{"version":3,"file":"knowledge-tool.js","names":["z","allResults: { space: string; content: string; score: number }[]"],"sources":["../../src/tools/knowledge-tool.ts"],"sourcesContent":["import { tool, type Tool } from 'ai';\nimport * as z from 'zod';\nimport type { KnowledgeRetriever } from '@lssm/lib.knowledge/retriever';\nimport type { AgentKnowledgeRef } from '../spec/spec';\n\n/**\n * Create a knowledge query tool for dynamic RAG.\n *\n * This tool allows the agent to query optional knowledge spaces\n * at runtime. Required knowledge is injected statically via\n * the knowledge injector.\n *\n * @param retriever - The knowledge retriever to use\n * @param knowledgeRefs - Knowledge references from the agent spec\n * @returns AI SDK CoreTool for knowledge queries\n */\nexport function createKnowledgeQueryTool(\n retriever: KnowledgeRetriever,\n knowledgeRefs: AgentKnowledgeRef[]\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): Tool<any, any> | null {\n // Only include optional (non-required) knowledge spaces\n const optionalSpaces = knowledgeRefs\n .filter((k) => !k.required)\n .map((k) => k.key)\n .filter((key) => retriever.supportsSpace(key));\n\n if (optionalSpaces.length === 0) {\n return null;\n }\n\n // Build space descriptions for the tool\n const spaceDescriptions = knowledgeRefs\n .filter((k) => !k.required && retriever.supportsSpace(k.key))\n .map((k) => `- ${k.key}: ${k.instructions ?? 'Knowledge space'}`)\n .join('\\n');\n\n return tool({\n description: `Query knowledge bases for relevant information. Use this tool when you need to look up specific information that may not be in your context.\n\nAvailable knowledge spaces:\n${spaceDescriptions}`,\n // AI SDK v6 uses inputSchema instead of parameters\n inputSchema: z.object({\n query: z\n .string()\n .describe('The question or search query to find relevant information'),\n spaceKey: z\n .enum(optionalSpaces as [string, ...string[]])\n .optional()\n .describe(\n 'Specific knowledge space to query. If omitted, searches all available spaces.'\n ),\n topK: z\n .number()\n .optional()\n .default(5)\n .describe('Maximum number of results to return'),\n }),\n execute: async ({ query, spaceKey, topK }) => {\n const spacesToSearch = spaceKey ? [spaceKey] : optionalSpaces;\n const allResults: { space: string; content: string; score: number }[] =\n [];\n\n for (const space of spacesToSearch) {\n try {\n const results = await retriever.retrieve(query, {\n spaceKey: space,\n topK: topK ?? 5,\n });\n\n for (const result of results) {\n allResults.push({\n space,\n content: result.content,\n score: result.score,\n });\n }\n } catch (error) {\n // Log but don't fail on individual space errors\n console.warn(`Failed to query knowledge space ${space}:`, error);\n }\n }\n\n if (allResults.length === 0) {\n return 'No relevant information found in the knowledge bases.';\n }\n\n // Sort by score and format results\n allResults.sort((a, b) => b.score - a.score);\n const topResults = allResults.slice(0, topK ?? 5);\n\n return topResults\n .map(\n (r, i) =>\n `[Source ${i + 1} - ${r.space}] (relevance: ${(r.score * 100).toFixed(0)}%)\\n${r.content}`\n )\n .join('\\n\\n---\\n\\n');\n },\n });\n}\n"],"mappings":";;;;;;;;;;;;;;;AAgBA,SAAgB,yBACd,WACA,eAEuB;CAEvB,MAAM,iBAAiB,cACpB,QAAQ,MAAM,CAAC,EAAE,SAAS,CAC1B,KAAK,MAAM,EAAE,IAAI,CACjB,QAAQ,QAAQ,UAAU,cAAc,IAAI,CAAC;AAEhD,KAAI,eAAe,WAAW,EAC5B,QAAO;AAST,QAAO,KAAK;EACV,aAAa;;;EANW,cACvB,QAAQ,MAAM,CAAC,EAAE,YAAY,UAAU,cAAc,EAAE,IAAI,CAAC,CAC5D,KAAK,MAAM,KAAK,EAAE,IAAI,IAAI,EAAE,gBAAgB,oBAAoB,CAChE,KAAK,KAAK;EAQX,aAAaA,IAAE,OAAO;GACpB,OAAOA,IACJ,QAAQ,CACR,SAAS,4DAA4D;GACxE,UAAUA,IACP,KAAK,eAAwC,CAC7C,UAAU,CACV,SACC,gFACD;GACH,MAAMA,IACH,QAAQ,CACR,UAAU,CACV,QAAQ,EAAE,CACV,SAAS,sCAAsC;GACnD,CAAC;EACF,SAAS,OAAO,EAAE,OAAO,UAAU,WAAW;GAC5C,MAAM,iBAAiB,WAAW,CAAC,SAAS,GAAG;GAC/C,MAAMC,aACJ,EAAE;AAEJ,QAAK,MAAM,SAAS,eAClB,KAAI;IACF,MAAM,UAAU,MAAM,UAAU,SAAS,OAAO;KAC9C,UAAU;KACV,MAAM,QAAQ;KACf,CAAC;AAEF,SAAK,MAAM,UAAU,QACnB,YAAW,KAAK;KACd;KACA,SAAS,OAAO;KAChB,OAAO,OAAO;KACf,CAAC;YAEG,OAAO;AAEd,YAAQ,KAAK,mCAAmC,MAAM,IAAI,MAAM;;AAIpE,OAAI,WAAW,WAAW,EACxB,QAAO;AAIT,cAAW,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,MAAM;AAG5C,UAFmB,WAAW,MAAM,GAAG,QAAQ,EAAE,CAG9C,KACE,GAAG,MACF,WAAW,IAAI,EAAE,KAAK,EAAE,MAAM,iBAAiB,EAAE,QAAQ,KAAK,QAAQ,EAAE,CAAC,MAAM,EAAE,UACpF,CACA,KAAK,cAAc;;EAEzB,CAAC"}
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","names":[],"sources":["../src/types.ts"],"sourcesContent":[],"mappings":";;;;;;AAUA;AAWA;AAeiB,UA1BA,YAAA,
|
|
1
|
+
{"version":3,"file":"types.d.ts","names":[],"sources":["../src/types.ts"],"sourcesContent":[],"mappings":";;;;;;AAUA;AAWA;AAeiB,UA1BA,YAAA,CA0BY;EAUjB,IAAA,EAAA,WAAW;EAQX,UAAA,EAAA,MAAc;EAaT,QAAA,EAAA,MAAA;EAiBA,IAAA,EAAA,OAAA;AAejB;;;;;AAQa,UAtFI,cAAA,CAsFJ;EACA,IAAA,EAAA,aAAA;EACA,UAAA,EAAA,MAAA;EAAM,QAAA,EAAA,MAAA;EAOF,MAAA,EAAA,OAAA;AAajB;;;;;AAA8D,UA7F7C,YAAA,CA6F6C;EAS7C,IAAA,EAAA,MAAA,GAAA,WAAmB,GAAA,QAAA,GAAA,MAAA;EAIzB,OAAA,EAAA,MAAA,GAAA;IAES,IAAA,EAAA,MAAA;IAAX,IAAA,CAAA,EAAA,MAAA;IAEI,CAAA,GAAA,EAAA,MAAA,CAAA,EAAA,OAAA;EAEE,CAAA,EAAA;EAWL,QAAA,CAAA,EAxHG,MAwHH,CAAA,MAAA,EAAA,MAAA,CAAA;;AAEmB,KAnHjB,WAAA,GAmHiB,MAAA,GAAA,SAAA,GAAA,SAAA,GAAA,WAAA,GAAA,QAAA,GAAA,WAAA;AAgBZ,KA3HL,cAAA,GA2HyB,uBAM1B,GAAA,uBAAW,GAAA,oBAAA,GAAA,sBAAA,GAAA,mBAAA,GAAA,sBAAA,GAAA,mBAAA,GAAA,+BAAA,GAAA,iBAAA,GAAA,iBAAA,GAAA,cAAA;AAMV,UA1HK,iBAAA,CA0HM;EACd,SAAA,EAAA,MAAA;EACE,OAAA,EAAA,MAAA;EACE,QAAA,CAAA,EAAA,MAAA;EAAR,SAAA,CAAA,EAAA,MAAA;EAAO,QAAA,CAAA,EAAA,MAAA;EAMK,QAAA,CAAA,EA7HJ,MA6HI,CAAA,MAAgB,EAAA,OAUvB,CAAA;AAQV;;;;;AAUiB,UA9IA,gBAAA,CA8IoB;EAYpB;EAYA,QAAA,CAAA,EAAA,MAAA;EAWA;EACN,OAAA,CAAA,EAAA,MAAA;EAGE;EACG,SAAA,CAAA,EAAA,MAAA;EAAyB;EAAiB,QAAA,CAAA,EA9K7C,MA8K6C,CAAA,MAAA,EAAA,MAAA,CAAA;AAI1D;UA3KiB,iBAAA;;;;;UAKP;YACE;SACH,WAAW;aACP;aACA;aACA;;UAOI,mBAAA;;;;;;YAML;;;;WAID;;UAGM,iBAAA,SAA0B;;wBAEnB,WAAW,oBAAoB;;UAOtC;;;;WAIN;;SAEF,WAAW;;aAEP;;eAEE;;;;UAWL;;YAEE;;;;;;;;;;;UAgBK,oBAAA;;;;;aAKJ;WACF;;;;;KAMC,0DACH,iBACE,yBACN,QAAQ;UAMI,gBAAA;;;;;;;;;;UAUP;aACG;;KAOD,iBAAA,WACH,yBACE,6BACC;;UAOK,oBAAA;;;;;;;aAOJ;;;;UAKI,cAAA;WACN;;;;;;;mBAOQ;;;UAIF,mBAAA;;;aAGJ;gBACG;;;;;;UAOC,gBAAA;WACN;;;aAGE;gBACG,yBAAyB;;;UAIxB,eAAA;;;;;;;aAGJ"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lssm/lib.ai-agent",
|
|
3
|
-
"version": "0.0.0-canary-
|
|
3
|
+
"version": "0.0.0-canary-20251220002821",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.js",
|
|
@@ -30,13 +30,13 @@
|
|
|
30
30
|
"@ai-sdk/mistral": "beta",
|
|
31
31
|
"@ai-sdk/openai": "beta",
|
|
32
32
|
"@modelcontextprotocol/sdk": "^1.24.3",
|
|
33
|
-
"@lssm/lib.contracts": "0.0.0-canary-
|
|
34
|
-
"@lssm/lib.knowledge": "0.0.0-canary-
|
|
33
|
+
"@lssm/lib.contracts": "0.0.0-canary-20251220002821",
|
|
34
|
+
"@lssm/lib.knowledge": "0.0.0-canary-20251220002821",
|
|
35
35
|
"zod": "^4.1.13"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
|
-
"@lssm/tool.tsdown": "0.0.0-canary-
|
|
39
|
-
"@lssm/tool.typescript": "0.0.0-canary-
|
|
38
|
+
"@lssm/tool.tsdown": "0.0.0-canary-20251220002821",
|
|
39
|
+
"@lssm/tool.typescript": "0.0.0-canary-20251220002821",
|
|
40
40
|
"tsdown": "^0.18.1",
|
|
41
41
|
"typescript": "^5.9.3"
|
|
42
42
|
},
|
|
@@ -101,7 +101,13 @@
|
|
|
101
101
|
"./tools/tool-adapter": "./dist/tools/tool-adapter.js",
|
|
102
102
|
"./types": "./dist/types.js",
|
|
103
103
|
"./*": "./*"
|
|
104
|
-
}
|
|
104
|
+
},
|
|
105
|
+
"registry": "https://registry.npmjs.org/"
|
|
105
106
|
},
|
|
106
|
-
"license": "MIT"
|
|
107
|
+
"license": "MIT",
|
|
108
|
+
"repository": {
|
|
109
|
+
"type": "git",
|
|
110
|
+
"url": "https://github.com/lssm-tech/contractspec.git",
|
|
111
|
+
"directory": "packages/libs/ai-agent"
|
|
112
|
+
}
|
|
107
113
|
}
|