@agentfield/sdk 0.1.19 → 0.1.20-rc.1

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/index.d.ts CHANGED
@@ -482,7 +482,7 @@ interface AgentConfig {
482
482
  deploymentType?: DeploymentType;
483
483
  }
484
484
  interface AIConfig {
485
- provider?: 'openai' | 'anthropic' | 'openrouter' | 'ollama';
485
+ provider?: 'openai' | 'anthropic' | 'google' | 'mistral' | 'groq' | 'xai' | 'deepseek' | 'cohere' | 'openrouter' | 'ollama';
486
486
  model?: string;
487
487
  embeddingModel?: string;
488
488
  apiKey?: string;
package/dist/index.js CHANGED
@@ -4,6 +4,12 @@ import { AsyncLocalStorage } from 'async_hooks';
4
4
  import { generateObject, generateText, streamText, embed, embedMany } from 'ai';
5
5
  import { createOpenAI } from '@ai-sdk/openai';
6
6
  import { createAnthropic } from '@ai-sdk/anthropic';
7
+ import { createGoogleGenerativeAI } from '@ai-sdk/google';
8
+ import { createMistral } from '@ai-sdk/mistral';
9
+ import { createGroq } from '@ai-sdk/groq';
10
+ import { createXai } from '@ai-sdk/xai';
11
+ import { createDeepSeek } from '@ai-sdk/deepseek';
12
+ import { createCohere } from '@ai-sdk/cohere';
7
13
  import os from 'os';
8
14
  import axios, { isAxiosError } from 'axios';
9
15
  import WebSocket from 'ws';
@@ -464,33 +470,121 @@ var AIClient = class {
464
470
  buildModel(options) {
465
471
  const provider = options.provider ?? this.config.provider ?? "openai";
466
472
  const modelName = options.model ?? this.config.model ?? "gpt-4o";
467
- if (provider === "anthropic") {
468
- const anthropic = createAnthropic({
469
- apiKey: this.config.apiKey,
470
- baseURL: this.config.baseUrl
471
- });
472
- return anthropic(modelName);
473
+ switch (provider) {
474
+ case "anthropic": {
475
+ const anthropic = createAnthropic({
476
+ apiKey: this.config.apiKey,
477
+ baseURL: this.config.baseUrl
478
+ });
479
+ return anthropic(modelName);
480
+ }
481
+ case "google": {
482
+ const google = createGoogleGenerativeAI({
483
+ apiKey: this.config.apiKey,
484
+ baseURL: this.config.baseUrl
485
+ });
486
+ return google(modelName);
487
+ }
488
+ case "mistral": {
489
+ const mistral = createMistral({
490
+ apiKey: this.config.apiKey,
491
+ baseURL: this.config.baseUrl
492
+ });
493
+ return mistral(modelName);
494
+ }
495
+ case "groq": {
496
+ const groq = createGroq({
497
+ apiKey: this.config.apiKey,
498
+ baseURL: this.config.baseUrl
499
+ });
500
+ return groq(modelName);
501
+ }
502
+ case "xai": {
503
+ const xai = createXai({
504
+ apiKey: this.config.apiKey,
505
+ baseURL: this.config.baseUrl
506
+ });
507
+ return xai(modelName);
508
+ }
509
+ case "deepseek": {
510
+ const deepseek = createDeepSeek({
511
+ apiKey: this.config.apiKey,
512
+ baseURL: this.config.baseUrl
513
+ });
514
+ return deepseek(modelName);
515
+ }
516
+ case "cohere": {
517
+ const cohere = createCohere({
518
+ apiKey: this.config.apiKey,
519
+ baseURL: this.config.baseUrl
520
+ });
521
+ return cohere(modelName);
522
+ }
523
+ case "openrouter": {
524
+ const openrouter = createOpenAI({
525
+ apiKey: this.config.apiKey,
526
+ baseURL: this.config.baseUrl ?? "https://openrouter.ai/api/v1"
527
+ });
528
+ return openrouter(modelName);
529
+ }
530
+ case "ollama": {
531
+ const ollama = createOpenAI({
532
+ apiKey: this.config.apiKey ?? "ollama",
533
+ // Ollama doesn't need real key
534
+ baseURL: this.config.baseUrl ?? "http://localhost:11434/v1"
535
+ });
536
+ return ollama(modelName);
537
+ }
538
+ case "openai":
539
+ default: {
540
+ const openai = createOpenAI({
541
+ apiKey: this.config.apiKey,
542
+ baseURL: this.config.baseUrl
543
+ });
544
+ return openai(modelName);
545
+ }
473
546
  }
474
- const openai = createOpenAI({
475
- apiKey: this.config.apiKey,
476
- baseURL: this.config.baseUrl
477
- });
478
- return openai(modelName);
479
547
  }
480
548
  buildEmbeddingModel(options) {
481
549
  const provider = options.provider ?? this.config.provider ?? "openai";
482
550
  const modelName = options.model ?? this.config.embeddingModel ?? "text-embedding-3-small";
483
- if (provider === "anthropic") {
484
- throw new Error("Embedding generation is not supported for Anthropic provider");
485
- }
486
- const openai = createOpenAI({
487
- apiKey: this.config.apiKey,
488
- baseURL: this.config.baseUrl
489
- });
490
- if (typeof openai.embedding !== "function") {
491
- throw new Error("Embedding model is not available for the configured provider");
551
+ const noEmbeddingProviders = ["anthropic", "xai", "deepseek", "groq"];
552
+ if (noEmbeddingProviders.includes(provider)) {
553
+ throw new Error(`Embedding generation is not supported for ${provider} provider`);
554
+ }
555
+ switch (provider) {
556
+ case "google": {
557
+ const google = createGoogleGenerativeAI({
558
+ apiKey: this.config.apiKey,
559
+ baseURL: this.config.baseUrl
560
+ });
561
+ return google.textEmbeddingModel(modelName);
562
+ }
563
+ case "mistral": {
564
+ const mistral = createMistral({
565
+ apiKey: this.config.apiKey,
566
+ baseURL: this.config.baseUrl
567
+ });
568
+ return mistral.textEmbeddingModel(modelName);
569
+ }
570
+ case "cohere": {
571
+ const cohere = createCohere({
572
+ apiKey: this.config.apiKey,
573
+ baseURL: this.config.baseUrl
574
+ });
575
+ return cohere.textEmbeddingModel(modelName);
576
+ }
577
+ case "openai":
578
+ case "openrouter":
579
+ case "ollama":
580
+ default: {
581
+ const openai = createOpenAI({
582
+ apiKey: this.config.apiKey ?? (provider === "ollama" ? "ollama" : void 0),
583
+ baseURL: this.config.baseUrl ?? (provider === "openrouter" ? "https://openrouter.ai/api/v1" : provider === "ollama" ? "http://localhost:11434/v1" : void 0)
584
+ });
585
+ return openai.embedding(modelName);
586
+ }
492
587
  }
493
- return openai.embedding(modelName);
494
588
  }
495
589
  getRateLimiter() {
496
590
  if (!this.rateLimiter) {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/agent/ReasonerRegistry.ts","../src/agent/SkillRegistry.ts","../src/context/ExecutionContext.ts","../src/context/ReasonerContext.ts","../src/context/SkillContext.ts","../src/ai/RateLimiter.ts","../src/ai/AIClient.ts","../src/client/AgentFieldClient.ts","../src/memory/MemoryClient.ts","../src/memory/MemoryEventClient.ts","../src/memory/MemoryInterface.ts","../src/did/DidClient.ts","../src/did/DidInterface.ts","../src/utils/pattern.ts","../src/workflow/WorkflowReporter.ts","../src/mcp/MCPClient.ts","../src/mcp/MCPClientRegistry.ts","../src/mcp/MCPToolRegistrar.ts","../src/agent/Agent.ts","../src/router/AgentRouter.ts"],"names":["parsed","call","response","axios","res","tools","metadata"],"mappings":"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","file":"index.js","sourcesContent":["import type { AgentRouter } from '../router/AgentRouter.js';\nimport type { ReasonerDefinition, ReasonerHandler, ReasonerOptions } from '../types/reasoner.js';\n\nexport class ReasonerRegistry {\n private readonly reasoners = new Map<string, ReasonerDefinition>();\n\n register<TInput = any, TOutput = any>(\n name: string,\n handler: ReasonerHandler<TInput, TOutput>,\n options?: ReasonerOptions\n ) {\n this.reasoners.set(name, { name, handler, options });\n }\n\n includeRouter(router: AgentRouter) {\n router.reasoners.forEach((reasoner) => {\n this.reasoners.set(reasoner.name, reasoner);\n });\n }\n\n get(name: string) {\n return this.reasoners.get(name);\n }\n\n all() {\n return Array.from(this.reasoners.values());\n }\n}\n","import type { AgentRouter } from '../router/AgentRouter.js';\nimport type { SkillDefinition, SkillHandler, SkillOptions } from '../types/skill.js';\n\nexport class SkillRegistry {\n private readonly skills = new Map<string, SkillDefinition>();\n\n register<TInput = any, TOutput = any>(\n name: string,\n handler: SkillHandler<TInput, TOutput>,\n options?: SkillOptions\n ) {\n this.skills.set(name, { name, handler, options });\n }\n\n includeRouter(router: AgentRouter) {\n router.skills.forEach((skill) => {\n this.skills.set(skill.name, skill);\n });\n }\n\n get(name: string) {\n return this.skills.get(name);\n }\n\n all() {\n return Array.from(this.skills.values());\n }\n}\n","import { AsyncLocalStorage } from 'node:async_hooks';\nimport type express from 'express';\nimport type { Agent } from '../agent/Agent.js';\n\nexport interface ExecutionMetadata {\n executionId: string;\n runId?: string;\n sessionId?: string;\n actorId?: string;\n workflowId?: string;\n parentExecutionId?: string;\n callerDid?: string;\n targetDid?: string;\n agentNodeDid?: string;\n}\n\nconst store = new AsyncLocalStorage<ExecutionContext>();\n\nexport class ExecutionContext {\n readonly input: any;\n readonly metadata: ExecutionMetadata;\n readonly req: express.Request;\n readonly res: express.Response;\n readonly agent: Agent;\n\n constructor(params: {\n input: any;\n metadata: ExecutionMetadata;\n req: express.Request;\n res: express.Response;\n agent: Agent;\n }) {\n this.input = params.input;\n this.metadata = params.metadata;\n this.req = params.req;\n this.res = params.res;\n this.agent = params.agent;\n }\n\n static run<T>(ctx: ExecutionContext, fn: () => T): T {\n return store.run(ctx, fn);\n }\n\n static getCurrent(): ExecutionContext | undefined {\n return store.getStore();\n }\n}\n","import type express from 'express';\nimport { ExecutionContext } from './ExecutionContext.js';\nimport type { AIClient, AIRequestOptions, AIStream, ZodSchema } from '../ai/AIClient.js';\nimport type { MemoryInterface } from '../memory/MemoryInterface.js';\nimport type { Agent } from '../agent/Agent.js';\nimport type { WorkflowReporter } from '../workflow/WorkflowReporter.js';\nimport type { DiscoveryOptions } from '../types/agent.js';\nimport type { DidInterface } from '../did/DidInterface.js';\n\nexport class ReasonerContext<TInput = any> {\n readonly input: TInput;\n readonly executionId: string;\n readonly runId?: string;\n readonly sessionId?: string;\n readonly actorId?: string;\n readonly workflowId?: string;\n readonly parentExecutionId?: string;\n readonly callerDid?: string;\n readonly targetDid?: string;\n readonly agentNodeDid?: string;\n readonly req: express.Request;\n readonly res: express.Response;\n readonly agent: Agent;\n readonly aiClient: AIClient;\n readonly memory: MemoryInterface;\n readonly workflow: WorkflowReporter;\n readonly did: DidInterface;\n\n constructor(params: {\n input: TInput;\n executionId: string;\n runId?: string;\n sessionId?: string;\n actorId?: string;\n workflowId?: string;\n parentExecutionId?: string;\n callerDid?: string;\n targetDid?: string;\n agentNodeDid?: string;\n req: express.Request;\n res: express.Response;\n agent: Agent;\n aiClient: AIClient;\n memory: MemoryInterface;\n workflow: WorkflowReporter;\n did: DidInterface;\n }) {\n this.input = params.input;\n this.executionId = params.executionId;\n this.runId = params.runId;\n this.sessionId = params.sessionId;\n this.actorId = params.actorId;\n this.workflowId = params.workflowId;\n this.parentExecutionId = params.parentExecutionId;\n this.callerDid = params.callerDid;\n this.targetDid = params.targetDid;\n this.agentNodeDid = params.agentNodeDid;\n this.req = params.req;\n this.res = params.res;\n this.agent = params.agent;\n this.aiClient = params.aiClient;\n this.memory = params.memory;\n this.workflow = params.workflow;\n this.did = params.did;\n }\n\n ai<T>(prompt: string, options: AIRequestOptions & { schema: ZodSchema<T> }): Promise<T>;\n ai(prompt: string, options?: AIRequestOptions): Promise<string>;\n ai(prompt: string, options?: AIRequestOptions): Promise<unknown> {\n return this.aiClient.generate(prompt, options);\n }\n\n aiStream(prompt: string, options?: AIRequestOptions): Promise<AIStream> {\n return this.aiClient.stream(prompt, options);\n }\n\n call(target: string, input: any) {\n return this.agent.call(target, input);\n }\n\n discover(options?: DiscoveryOptions) {\n return this.agent.discover(options);\n }\n}\n\nexport function getCurrentContext<TInput = any>(): ReasonerContext<TInput> | undefined {\n const execution = ExecutionContext.getCurrent();\n if (!execution) return undefined;\n const { metadata, input, agent, req, res } = execution;\n return new ReasonerContext<TInput>({\n input,\n executionId: metadata.executionId,\n runId: metadata.runId,\n sessionId: metadata.sessionId,\n actorId: metadata.actorId,\n workflowId: metadata.workflowId,\n parentExecutionId: metadata.parentExecutionId,\n callerDid: metadata.callerDid,\n targetDid: metadata.targetDid,\n agentNodeDid: metadata.agentNodeDid,\n req,\n res,\n agent,\n aiClient: agent.getAIClient(),\n memory: agent.getMemoryInterface(metadata),\n workflow: agent.getWorkflowReporter(metadata),\n did: agent.getDidInterface(metadata, input)\n });\n}\n","import type express from 'express';\nimport { ExecutionContext } from './ExecutionContext.js';\nimport type { Agent } from '../agent/Agent.js';\nimport type { MemoryInterface } from '../memory/MemoryInterface.js';\nimport type { WorkflowReporter } from '../workflow/WorkflowReporter.js';\nimport type { DiscoveryOptions } from '../types/agent.js';\nimport type { DidInterface } from '../did/DidInterface.js';\n\nexport class SkillContext<TInput = any> {\n readonly input: TInput;\n readonly executionId: string;\n readonly sessionId?: string;\n readonly workflowId?: string;\n readonly callerDid?: string;\n readonly agentNodeDid?: string;\n readonly req: express.Request;\n readonly res: express.Response;\n readonly agent: Agent;\n readonly memory: MemoryInterface;\n readonly workflow: WorkflowReporter;\n readonly did: DidInterface;\n\n constructor(params: {\n input: TInput;\n executionId: string;\n sessionId?: string;\n workflowId?: string;\n callerDid?: string;\n agentNodeDid?: string;\n req: express.Request;\n res: express.Response;\n agent: Agent;\n memory: MemoryInterface;\n workflow: WorkflowReporter;\n did: DidInterface;\n }) {\n this.input = params.input;\n this.executionId = params.executionId;\n this.sessionId = params.sessionId;\n this.workflowId = params.workflowId;\n this.callerDid = params.callerDid;\n this.agentNodeDid = params.agentNodeDid;\n this.req = params.req;\n this.res = params.res;\n this.agent = params.agent;\n this.memory = params.memory;\n this.workflow = params.workflow;\n this.did = params.did;\n }\n\n discover(options?: DiscoveryOptions) {\n return this.agent.discover(options);\n }\n}\n\nexport function getCurrentSkillContext<TInput = any>(): SkillContext<TInput> | undefined {\n const execution = ExecutionContext.getCurrent();\n if (!execution) return undefined;\n const { metadata, input, agent, req, res } = execution;\n return new SkillContext<TInput>({\n input,\n executionId: metadata.executionId,\n sessionId: metadata.sessionId,\n workflowId: metadata.workflowId,\n callerDid: metadata.callerDid,\n agentNodeDid: metadata.agentNodeDid,\n req,\n res,\n agent,\n memory: agent.getMemoryInterface(metadata),\n workflow: agent.getWorkflowReporter(metadata),\n did: agent.getDidInterface(metadata, input)\n });\n}\n","import crypto from 'node:crypto';\nimport os from 'node:os';\n\nexport class RateLimitError extends Error {\n retryAfter?: number;\n\n constructor(message: string, retryAfter?: number) {\n super(message);\n this.name = 'RateLimitError';\n this.retryAfter = retryAfter;\n }\n}\n\nexport interface RateLimiterOptions {\n maxRetries?: number;\n baseDelay?: number;\n maxDelay?: number;\n jitterFactor?: number;\n circuitBreakerThreshold?: number;\n circuitBreakerTimeout?: number;\n}\n\n/**\n * Stateless rate limiter with adaptive exponential backoff.\n *\n * Designed to work across many containers without coordination.\n * Uses container-specific jitter to naturally distribute load.\n */\nexport class StatelessRateLimiter {\n readonly maxRetries: number;\n readonly baseDelay: number;\n readonly maxDelay: number;\n readonly jitterFactor: number;\n readonly circuitBreakerThreshold: number;\n readonly circuitBreakerTimeout: number;\n\n protected _containerSeed: number;\n protected _consecutiveFailures = 0;\n protected _circuitOpenTime?: number;\n\n constructor(options: RateLimiterOptions = {}) {\n this.maxRetries = options.maxRetries ?? 20;\n this.baseDelay = options.baseDelay ?? 1.0;\n this.maxDelay = options.maxDelay ?? 300.0;\n this.jitterFactor = options.jitterFactor ?? 0.25;\n this.circuitBreakerThreshold = options.circuitBreakerThreshold ?? 10;\n this.circuitBreakerTimeout = options.circuitBreakerTimeout ?? 300;\n\n this._containerSeed = this._getContainerSeed();\n }\n\n protected _getContainerSeed(): number {\n const identifier = `${os.hostname()}-${process.pid}`;\n const hash = crypto.createHash('md5').update(identifier).digest('hex');\n return parseInt(hash.slice(0, 8), 16);\n }\n\n protected _isRateLimitError(error: unknown): boolean {\n if (!error) return false;\n const err = error as any;\n\n const className = err?.constructor?.name;\n if (className && className.includes('RateLimitError')) {\n return true;\n }\n\n const response = err?.response;\n const statusCandidates = [\n err?.status,\n err?.statusCode,\n response?.status,\n response?.statusCode,\n response?.status_code\n ];\n if (statusCandidates.some((code: any) => code === 429 || code === 503)) {\n return true;\n }\n\n const message = String(err?.message ?? err ?? '').toLowerCase();\n const rateLimitKeywords = [\n 'rate limit',\n 'rate-limit',\n 'rate_limit',\n 'too many requests',\n 'quota exceeded',\n 'temporarily rate-limited',\n 'rate limited',\n 'requests per',\n 'rpm exceeded',\n 'tpm exceeded',\n 'usage limit',\n 'throttled',\n 'throttling'\n ];\n\n return rateLimitKeywords.some((keyword) => message.includes(keyword));\n }\n\n protected _extractRetryAfter(error: unknown): number | undefined {\n if (!error) return undefined;\n const err = error as any;\n\n const headers = err?.response?.headers ?? err?.response?.Headers ?? err?.response?.header;\n if (headers && typeof headers === 'object') {\n const retryAfterKey = Object.keys(headers).find((k) => k.toLowerCase() === 'retry-after');\n if (retryAfterKey) {\n const value = Array.isArray(headers[retryAfterKey]) ? headers[retryAfterKey][0] : headers[retryAfterKey];\n const parsed = parseFloat(value);\n if (!Number.isNaN(parsed)) {\n return parsed;\n }\n }\n }\n\n const retryAfter = err?.retryAfter ?? err?.retry_after;\n const parsed = parseFloat(retryAfter);\n if (!Number.isNaN(parsed)) {\n return parsed;\n }\n\n return undefined;\n }\n\n protected _createJitterRng(seed: number): () => number {\n let x = seed >>> 0;\n return () => {\n x = (1664525 * x + 1013904223) % 4294967296;\n return x / 4294967296;\n };\n }\n\n protected _calculateBackoffDelay(attempt: number, retryAfter?: number): number {\n let baseDelay: number;\n if (retryAfter && retryAfter <= this.maxDelay) {\n baseDelay = retryAfter;\n } else {\n baseDelay = Math.min(this.baseDelay * 2 ** attempt, this.maxDelay);\n }\n\n const jitterRange = baseDelay * this.jitterFactor;\n const rng = this._createJitterRng(this._containerSeed + attempt);\n const jitter = (rng() * 2 - 1) * jitterRange;\n\n const delay = Math.max(0.1, baseDelay + jitter);\n return delay;\n }\n\n protected _checkCircuitBreaker(): boolean {\n if (this._circuitOpenTime === undefined) {\n return false;\n }\n\n if (this._now() - this._circuitOpenTime > this.circuitBreakerTimeout) {\n this._circuitOpenTime = undefined;\n this._consecutiveFailures = 0;\n return false;\n }\n\n return true;\n }\n\n protected _updateCircuitBreaker(success: boolean) {\n if (success) {\n this._consecutiveFailures = 0;\n this._circuitOpenTime = undefined;\n return;\n }\n\n this._consecutiveFailures += 1;\n if (this._consecutiveFailures >= this.circuitBreakerThreshold && this._circuitOpenTime === undefined) {\n this._circuitOpenTime = this._now();\n }\n }\n\n protected async _sleep(delaySeconds: number): Promise<void> {\n await new Promise((resolve) => setTimeout(resolve, delaySeconds * 1000));\n }\n\n protected _now(): number {\n return Date.now() / 1000;\n }\n\n async executeWithRetry<T>(fn: () => Promise<T>): Promise<T> {\n if (this._checkCircuitBreaker()) {\n throw new RateLimitError(\n `Circuit breaker is open. Too many consecutive rate limit failures. Will retry after ${this.circuitBreakerTimeout} seconds.`\n );\n }\n\n let lastError: unknown;\n\n for (let attempt = 0; attempt <= this.maxRetries; attempt += 1) {\n try {\n const result = await fn();\n this._updateCircuitBreaker(true);\n return result;\n } catch (error) {\n lastError = error;\n\n if (!this._isRateLimitError(error)) {\n throw error;\n }\n\n this._updateCircuitBreaker(false);\n\n if (attempt >= this.maxRetries) {\n break;\n }\n\n const retryAfter = this._extractRetryAfter(error);\n const delay = this._calculateBackoffDelay(attempt, retryAfter);\n await this._sleep(delay);\n }\n }\n\n throw new RateLimitError(\n `Rate limit retries exhausted after ${this.maxRetries} attempts. Last error: ${String(lastError)}`,\n this._extractRetryAfter(lastError)\n );\n }\n}\n","import {\n embed,\n embedMany,\n generateObject,\n generateText,\n streamText\n} from 'ai';\nimport { createOpenAI } from '@ai-sdk/openai';\nimport { createAnthropic } from '@ai-sdk/anthropic';\nimport type { z } from 'zod';\nimport type { AIConfig } from '../types/agent.js';\nimport { StatelessRateLimiter } from './RateLimiter.js';\n\nexport type ZodSchema<T> = z.Schema<T, z.ZodTypeDef, any>;\n\n/**\n * Attempts to repair malformed JSON text from model responses.\n * Handles common issues like markdown code blocks, trailing commas, etc.\n */\nfunction repairJsonText(text: string): string | null {\n let cleaned = text.trim();\n\n // Remove markdown code blocks (```json ... ``` or ``` ... ```)\n const codeBlockMatch = cleaned.match(/```(?:json)?\\s*([\\s\\S]*?)```/);\n if (codeBlockMatch) {\n cleaned = codeBlockMatch[1].trim();\n }\n\n // Try to extract JSON object/array if there's extra text\n const jsonMatch = cleaned.match(/(\\{[\\s\\S]*\\}|\\[[\\s\\S]*\\])/);\n if (jsonMatch) {\n cleaned = jsonMatch[1];\n }\n\n // Remove trailing commas before } or ]\n cleaned = cleaned.replace(/,(\\s*[}\\]])/g, '$1');\n\n // Try to parse to verify it's valid\n try {\n JSON.parse(cleaned);\n return cleaned;\n } catch {\n return null;\n }\n}\n\nexport interface AIRequestOptions {\n system?: string;\n schema?: ZodSchema<any>;\n model?: string;\n temperature?: number;\n maxTokens?: number;\n provider?: AIConfig['provider'];\n /**\n * Mode for structured output generation.\n * - 'auto': Let the provider choose (default in ai-sdk, uses tool calling)\n * - 'json': Use JSON mode (more compatible across providers/models)\n * - 'tool': Force tool calling mode\n */\n mode?: 'auto' | 'json' | 'tool';\n}\n\nexport type AIStream = AsyncIterable<string>;\n\nexport interface AIEmbeddingOptions {\n model?: string;\n provider?: AIConfig['provider'];\n}\n\nexport class AIClient {\n private readonly config: AIConfig;\n private rateLimiter?: StatelessRateLimiter;\n\n constructor(config: AIConfig = {}) {\n this.config = {\n enableRateLimitRetry: true,\n rateLimitMaxRetries: 20,\n rateLimitBaseDelay: 1.0,\n rateLimitMaxDelay: 300.0,\n rateLimitJitterFactor: 0.25,\n rateLimitCircuitBreakerThreshold: 10,\n rateLimitCircuitBreakerTimeout: 300,\n ...config\n };\n }\n\n async generate<T>(prompt: string, options: AIRequestOptions & { schema: ZodSchema<T> }): Promise<T>;\n async generate(prompt: string, options?: AIRequestOptions): Promise<string>;\n async generate<T = any>(prompt: string, options: AIRequestOptions = {}): Promise<T | string> {\n const model = this.buildModel(options);\n\n if (options.schema) {\n const schema = options.schema;\n // Default to 'json' mode for better compatibility across providers\n // 'auto' mode uses tool calling which some models/providers don't support well\n const mode = options.mode ?? 'json';\n const call = async () =>\n generateObject({\n model: model,\n prompt,\n output: 'object',\n mode,\n system: options.system,\n temperature: options.temperature ?? this.config.temperature,\n maxOutputTokens: options.maxTokens ?? this.config.maxTokens,\n schema,\n experimental_repairText: async ({ text }) => repairJsonText(text)\n });\n\n const response = await this.withRateLimitRetry(call);\n return response.object as T;\n }\n\n const call = async () =>\n generateText({\n model: model,\n prompt,\n system: options.system,\n temperature: options.temperature ?? this.config.temperature,\n maxOutputTokens: options.maxTokens ?? this.config.maxTokens\n });\n\n const response = await this.withRateLimitRetry(call);\n return (response).text as string;\n }\n\n async stream(prompt: string, options: AIRequestOptions = {}): Promise<AIStream> {\n const model = this.buildModel(options);\n const streamResult = streamText({\n model: model,\n prompt,\n system: options.system,\n temperature: options.temperature ?? this.config.temperature,\n maxOutputTokens: options.maxTokens ?? this.config.maxTokens\n });\n\n return streamResult.textStream;\n }\n\n async embed(value: string, options: AIEmbeddingOptions = {}) {\n const model = this.buildEmbeddingModel(options);\n const result = await this.withRateLimitRetry(() =>\n embed({\n model: model,\n value\n })\n );\n return (result).embedding as number[];\n }\n\n async embedMany(values: string[], options: AIEmbeddingOptions = {}) {\n const model = this.buildEmbeddingModel(options);\n const result = await this.withRateLimitRetry(() =>\n embedMany({\n model: model,\n values\n })\n );\n return (result).embeddings as number[][];\n }\n\n private buildModel(options: AIRequestOptions) {\n const provider = options.provider ?? this.config.provider ?? 'openai';\n const modelName = options.model ?? this.config.model ?? 'gpt-4o';\n\n if (provider === 'anthropic') {\n const anthropic = createAnthropic({\n apiKey: this.config.apiKey,\n baseURL: this.config.baseUrl\n });\n return anthropic(modelName);\n }\n\n // Default to OpenAI / OpenRouter compatible models\n const openai = createOpenAI({\n apiKey: this.config.apiKey,\n baseURL: this.config.baseUrl\n });\n\n return openai(modelName);\n }\n\n private buildEmbeddingModel(options: AIEmbeddingOptions) {\n const provider = options.provider ?? this.config.provider ?? 'openai';\n const modelName = options.model ?? this.config.embeddingModel ?? 'text-embedding-3-small';\n\n if (provider === 'anthropic') {\n throw new Error('Embedding generation is not supported for Anthropic provider');\n }\n\n const openai = createOpenAI({\n apiKey: this.config.apiKey,\n baseURL: this.config.baseUrl\n });\n\n if (typeof openai.embedding !== 'function') {\n throw new Error('Embedding model is not available for the configured provider');\n }\n\n return openai.embedding(modelName);\n }\n\n private getRateLimiter() {\n if (!this.rateLimiter) {\n this.rateLimiter = new StatelessRateLimiter({\n maxRetries: this.config.rateLimitMaxRetries,\n baseDelay: this.config.rateLimitBaseDelay,\n maxDelay: this.config.rateLimitMaxDelay,\n jitterFactor: this.config.rateLimitJitterFactor,\n circuitBreakerThreshold: this.config.rateLimitCircuitBreakerThreshold,\n circuitBreakerTimeout: this.config.rateLimitCircuitBreakerTimeout\n });\n }\n return this.rateLimiter;\n }\n\n private withRateLimitRetry<T>(fn: () => Promise<T>): Promise<T> {\n if (this.config.enableRateLimitRetry === false) {\n return fn();\n }\n return this.getRateLimiter().executeWithRetry(fn);\n }\n}\n","import axios, { AxiosInstance } from 'axios';\nimport type {\n AgentConfig,\n DiscoveryOptions,\n DiscoveryFormat,\n DiscoveryResult,\n DiscoveryResponse,\n CompactDiscoveryResponse,\n HealthStatus\n} from '../types/agent.js';\n\nexport interface ExecutionStatusUpdate {\n status?: string;\n result?: Record<string, any>;\n error?: string;\n durationMs?: number;\n progress?: number;\n}\n\nexport class AgentFieldClient {\n private readonly http: AxiosInstance;\n private readonly config: AgentConfig;\n private readonly defaultHeaders: Record<string, string>;\n\n constructor(config: AgentConfig) {\n const baseURL = (config.agentFieldUrl ?? 'http://localhost:8080').replace(/\\/$/, '');\n this.http = axios.create({ baseURL });\n this.config = config;\n\n const mergedHeaders = { ...(config.defaultHeaders ?? {}) };\n if (config.apiKey) {\n mergedHeaders['X-API-Key'] = config.apiKey;\n }\n this.defaultHeaders = this.sanitizeHeaders(mergedHeaders);\n }\n\n async register(payload: any) {\n await this.http.post('/api/v1/nodes/register', payload, { headers: this.mergeHeaders() });\n }\n\n async heartbeat(status: 'starting' | 'ready' | 'degraded' | 'offline' = 'ready'): Promise<HealthStatus> {\n const nodeId = this.config.nodeId;\n const res = await this.http.post(\n `/api/v1/nodes/${nodeId}/heartbeat`,\n {\n status,\n timestamp: new Date().toISOString()\n },\n { headers: this.mergeHeaders() }\n );\n return res.data as HealthStatus;\n }\n\n async execute<T = any>(\n target: string,\n input: any,\n metadata?: {\n runId?: string;\n workflowId?: string;\n parentExecutionId?: string;\n sessionId?: string;\n actorId?: string;\n callerDid?: string;\n targetDid?: string;\n agentNodeDid?: string;\n agentNodeId?: string;\n }\n ): Promise<T> {\n const headers: Record<string, string> = {};\n if (metadata?.runId) headers['X-Run-ID'] = metadata.runId;\n if (metadata?.workflowId) headers['X-Workflow-ID'] = metadata.workflowId;\n if (metadata?.parentExecutionId) headers['X-Parent-Execution-ID'] = metadata.parentExecutionId;\n if (metadata?.sessionId) headers['X-Session-ID'] = metadata.sessionId;\n if (metadata?.actorId) headers['X-Actor-ID'] = metadata.actorId;\n if (metadata?.callerDid) headers['X-Caller-DID'] = metadata.callerDid;\n if (metadata?.targetDid) headers['X-Target-DID'] = metadata.targetDid;\n if (metadata?.agentNodeDid) headers['X-Agent-Node-DID'] = metadata.agentNodeDid;\n if (metadata?.agentNodeId) headers['X-Agent-Node-ID'] = metadata.agentNodeId;\n\n const res = await this.http.post(\n `/api/v1/execute/${target}`,\n {\n input\n },\n { headers: this.mergeHeaders(headers) }\n );\n return (res.data?.result as T) ?? res.data;\n }\n\n async publishWorkflowEvent(event: {\n executionId: string;\n runId: string;\n workflowId?: string;\n reasonerId: string;\n agentNodeId: string;\n status: 'running' | 'succeeded' | 'failed';\n parentExecutionId?: string;\n parentWorkflowId?: string;\n inputData?: Record<string, any>;\n result?: any;\n error?: string;\n durationMs?: number;\n }) {\n const payload = {\n execution_id: event.executionId,\n workflow_id: event.workflowId ?? event.runId,\n run_id: event.runId,\n reasoner_id: event.reasonerId,\n type: event.reasonerId,\n agent_node_id: event.agentNodeId,\n status: event.status,\n parent_execution_id: event.parentExecutionId,\n parent_workflow_id: event.parentWorkflowId ?? event.workflowId ?? event.runId,\n input_data: event.inputData ?? {},\n result: event.result,\n error: event.error,\n duration_ms: event.durationMs\n };\n\n const request = this.http\n .post('/api/v1/workflow/executions/events', payload, {\n headers: this.mergeHeaders(),\n timeout: this.config.devMode ? 1000 : undefined\n })\n .catch(() => {\n // Best-effort; avoid throwing to keep agent execution resilient\n });\n\n // Fire and forget to avoid blocking local executions in tests/dev mode.\n void request;\n }\n\n async updateExecutionStatus(executionId: string, update: ExecutionStatusUpdate) {\n if (!executionId) {\n throw new Error('executionId is required to update workflow status');\n }\n\n const payload = {\n status: update.status ?? 'running',\n result: update.result,\n error: update.error,\n duration_ms: update.durationMs,\n progress: update.progress !== undefined ? Math.round(update.progress) : undefined\n };\n\n await this.http.post(`/api/v1/executions/${executionId}/status`, payload, { headers: this.mergeHeaders() });\n }\n\n async discoverCapabilities(options: DiscoveryOptions = {}): Promise<DiscoveryResult> {\n const format = (options.format ?? 'json').toLowerCase() as DiscoveryFormat;\n const params: Record<string, string> = { format };\n const dedupe = (values?: string[]) =>\n Array.from(new Set((values ?? []).filter(Boolean))).map((v) => v!);\n\n const combinedAgents = dedupe([\n ...(options.agent ? [options.agent] : []),\n ...(options.nodeId ? [options.nodeId] : []),\n ...(options.agentIds ?? []),\n ...(options.nodeIds ?? [])\n ]);\n\n if (combinedAgents.length === 1) {\n params.agent = combinedAgents[0];\n } else if (combinedAgents.length > 1) {\n params.agent_ids = combinedAgents.join(',');\n }\n\n if (options.reasoner) params.reasoner = options.reasoner;\n if (options.skill) params.skill = options.skill;\n if (options.tags?.length) params.tags = dedupe(options.tags).join(',');\n\n if (options.includeInputSchema !== undefined) {\n params.include_input_schema = String(Boolean(options.includeInputSchema));\n }\n if (options.includeOutputSchema !== undefined) {\n params.include_output_schema = String(Boolean(options.includeOutputSchema));\n }\n if (options.includeDescriptions !== undefined) {\n params.include_descriptions = String(Boolean(options.includeDescriptions));\n }\n if (options.includeExamples !== undefined) {\n params.include_examples = String(Boolean(options.includeExamples));\n }\n if (options.healthStatus) params.health_status = options.healthStatus.toLowerCase();\n if (options.limit !== undefined) params.limit = String(options.limit);\n if (options.offset !== undefined) params.offset = String(options.offset);\n\n const res = await this.http.get('/api/v1/discovery/capabilities', {\n params,\n headers: this.mergeHeaders({\n ...(options.headers ?? {}),\n Accept: format === 'xml' ? 'application/xml' : 'application/json'\n }),\n responseType: format === 'xml' ? 'text' : 'json',\n transformResponse: (data) => data // preserve raw body for xml\n });\n\n const raw = typeof res.data === 'string' ? res.data : JSON.stringify(res.data);\n if (format === 'xml') {\n return { format: 'xml', raw, xml: raw };\n }\n\n const parsed = typeof res.data === 'string' ? JSON.parse(res.data) : res.data;\n if (format === 'compact') {\n return {\n format: 'compact',\n raw,\n compact: this.mapCompactDiscovery(parsed as any)\n };\n }\n\n return {\n format: 'json',\n raw,\n json: this.mapDiscoveryResponse(parsed as any)\n };\n }\n\n private mapDiscoveryResponse(payload: any): DiscoveryResponse {\n return {\n discoveredAt: String(payload?.discovered_at ?? ''),\n totalAgents: Number(payload?.total_agents ?? 0),\n totalReasoners: Number(payload?.total_reasoners ?? 0),\n totalSkills: Number(payload?.total_skills ?? 0),\n pagination: {\n limit: Number(payload?.pagination?.limit ?? 0),\n offset: Number(payload?.pagination?.offset ?? 0),\n hasMore: Boolean(payload?.pagination?.has_more)\n },\n capabilities: (payload?.capabilities ?? []).map((cap: any) => ({\n agentId: cap?.agent_id ?? '',\n baseUrl: cap?.base_url ?? '',\n version: cap?.version ?? '',\n healthStatus: cap?.health_status ?? '',\n deploymentType: cap?.deployment_type,\n lastHeartbeat: cap?.last_heartbeat,\n reasoners: (cap?.reasoners ?? []).map((r: any) => ({\n id: r?.id ?? '',\n description: r?.description,\n tags: r?.tags ?? [],\n inputSchema: r?.input_schema,\n outputSchema: r?.output_schema,\n examples: r?.examples,\n invocationTarget: r?.invocation_target ?? ''\n })),\n skills: (cap?.skills ?? []).map((s: any) => ({\n id: s?.id ?? '',\n description: s?.description,\n tags: s?.tags ?? [],\n inputSchema: s?.input_schema,\n invocationTarget: s?.invocation_target ?? ''\n }))\n }))\n };\n }\n\n private mapCompactDiscovery(payload: any): CompactDiscoveryResponse {\n const toCap = (cap: any) => ({\n id: cap?.id ?? '',\n agentId: cap?.agent_id ?? '',\n target: cap?.target ?? '',\n tags: cap?.tags ?? []\n });\n\n return {\n discoveredAt: String(payload?.discovered_at ?? ''),\n reasoners: (payload?.reasoners ?? []).map(toCap),\n skills: (payload?.skills ?? []).map(toCap)\n };\n }\n\n private sanitizeHeaders(headers: Record<string, any>): Record<string, string> {\n const sanitized: Record<string, string> = {};\n Object.entries(headers).forEach(([key, value]) => {\n if (value === undefined || value === null) return;\n sanitized[key] = typeof value === 'string' ? value : String(value);\n });\n return sanitized;\n }\n\n private mergeHeaders(headers?: Record<string, any>): Record<string, string> {\n return {\n ...this.defaultHeaders,\n ...this.sanitizeHeaders(headers ?? {})\n };\n }\n}\n","import axios, { AxiosInstance, isAxiosError } from 'axios';\nimport type { MemoryScope } from '../types/agent.js';\n\nexport interface MemoryRequestMetadata {\n workflowId?: string;\n sessionId?: string;\n actorId?: string;\n runId?: string;\n executionId?: string;\n parentExecutionId?: string;\n callerDid?: string;\n targetDid?: string;\n agentNodeDid?: string;\n agentNodeId?: string;\n}\n\nexport interface MemoryRequestOptions {\n scope?: MemoryScope;\n scopeId?: string;\n metadata?: MemoryRequestMetadata;\n headers?: Record<string, string | number | boolean | undefined>;\n}\n\nexport interface VectorSearchOptions extends MemoryRequestOptions {\n topK?: number;\n filters?: Record<string, any>;\n}\n\nexport interface VectorSearchResult {\n key: string;\n scope: string;\n scopeId: string;\n score: number;\n metadata?: Record<string, any>;\n}\n\nexport class MemoryClient {\n private readonly http: AxiosInstance;\n private readonly defaultHeaders: Record<string, string>;\n\n constructor(baseUrl: string, defaultHeaders?: Record<string, string | number | boolean | undefined>) {\n this.http = axios.create({\n baseURL: baseUrl.replace(/\\/$/, '')\n });\n this.defaultHeaders = this.sanitizeHeaders(defaultHeaders ?? {});\n }\n\n async set(key: string, data: any, options: MemoryRequestOptions = {}) {\n const payload: any = { key, data };\n if (options.scope) payload.scope = options.scope;\n\n await this.http.post('/api/v1/memory/set', payload, {\n headers: this.buildHeaders(options)\n });\n }\n\n async get<T = any>(key: string, options: MemoryRequestOptions = {}): Promise<T | undefined> {\n try {\n const payload: any = { key };\n if (options.scope) payload.scope = options.scope;\n\n const res = await this.http.post('/api/v1/memory/get', payload, {\n headers: this.buildHeaders(options)\n });\n return res.data?.data as T;\n } catch (err) {\n if (isAxiosError(err) && err.response?.status === 404) {\n return undefined;\n }\n throw err;\n }\n }\n\n async delete(key: string, options: MemoryRequestOptions = {}) {\n const payload: any = { key };\n if (options.scope) payload.scope = options.scope;\n\n await this.http.post('/api/v1/memory/delete', payload, {\n headers: this.buildHeaders(options)\n });\n }\n\n async listKeys(scope: MemoryScope, options: MemoryRequestOptions = {}) {\n const res = await this.http.get('/api/v1/memory/list', {\n params: { scope },\n headers: this.buildHeaders({ ...options, scope })\n });\n return (res.data ?? []).map((item: any) => item?.key).filter(Boolean) as string[];\n }\n\n async exists(key: string, options: MemoryRequestOptions = {}) {\n const value = await this.get(key, options);\n return value !== undefined;\n }\n\n async setVector(key: string, embedding: number[], metadata?: any, options: MemoryRequestOptions = {}) {\n const payload: any = {\n key,\n embedding\n };\n if (metadata !== undefined) payload.metadata = metadata;\n if (options.scope) payload.scope = options.scope;\n\n await this.http.post('/api/v1/memory/vector/set', payload, {\n headers: this.buildHeaders(options)\n });\n }\n\n async deleteVector(key: string, options: MemoryRequestOptions = {}) {\n const payload: any = { key };\n if (options.scope) payload.scope = options.scope;\n\n await this.http.post('/api/v1/memory/vector/delete', payload, {\n headers: this.buildHeaders(options)\n });\n }\n\n async searchVector(queryEmbedding: number[], options: VectorSearchOptions = {}): Promise<VectorSearchResult[]> {\n const payload: any = {\n query_embedding: queryEmbedding,\n top_k: options.topK ?? 10\n };\n if (options.filters) payload.filters = options.filters;\n if (options.scope) payload.scope = options.scope;\n\n const res = await this.http.post('/api/v1/memory/vector/search', payload, {\n headers: this.buildHeaders(options)\n });\n return res.data ?? [];\n }\n\n private buildHeaders(options: MemoryRequestOptions = {}) {\n const { scope, scopeId, metadata } = options;\n const headers: Record<string, string> = { ...this.defaultHeaders };\n\n const workflowId = metadata?.workflowId ?? metadata?.runId;\n if (workflowId) headers['X-Workflow-ID'] = workflowId;\n if (metadata?.sessionId) headers['X-Session-ID'] = metadata.sessionId;\n if (metadata?.actorId) headers['X-Actor-ID'] = metadata.actorId;\n if (metadata?.runId) headers['X-Run-ID'] = metadata.runId;\n if (metadata?.executionId) headers['X-Execution-ID'] = metadata.executionId;\n if (metadata?.parentExecutionId) headers['X-Parent-Execution-ID'] = metadata.parentExecutionId;\n if (metadata?.callerDid) headers['X-Caller-DID'] = metadata.callerDid;\n if (metadata?.targetDid) headers['X-Target-DID'] = metadata.targetDid;\n if (metadata?.agentNodeDid) headers['X-Agent-Node-DID'] = metadata.agentNodeDid;\n if (metadata?.agentNodeId) headers['X-Agent-Node-ID'] = metadata.agentNodeId;\n\n const headerName = this.scopeToHeader(scope);\n const resolvedScopeId = this.resolveScopeId(scope, scopeId, metadata);\n if (headerName && resolvedScopeId) {\n headers[headerName] = resolvedScopeId;\n }\n\n return { ...headers, ...this.sanitizeHeaders(options.headers ?? {}) };\n }\n\n private scopeToHeader(scope?: MemoryScope) {\n switch (scope) {\n case 'workflow':\n return 'X-Workflow-ID';\n case 'session':\n return 'X-Session-ID';\n case 'actor':\n return 'X-Actor-ID';\n default:\n return undefined;\n }\n }\n\n private resolveScopeId(scope?: MemoryScope, scopeId?: string, metadata?: MemoryRequestMetadata) {\n if (scopeId) return scopeId;\n switch (scope) {\n case 'workflow':\n return metadata?.workflowId ?? metadata?.runId;\n case 'session':\n return metadata?.sessionId;\n case 'actor':\n return metadata?.actorId;\n case 'global':\n return 'global';\n default:\n return undefined;\n }\n }\n\n private sanitizeHeaders(headers: Record<string, any>): Record<string, string> {\n const sanitized: Record<string, string> = {};\n Object.entries(headers).forEach(([key, value]) => {\n if (value === undefined || value === null) return;\n sanitized[key] = typeof value === 'string' ? value : String(value);\n });\n return sanitized;\n }\n}\n","import WebSocket from 'ws';\nimport type { MemoryChangeEvent } from './MemoryInterface.js';\n\nexport type MemoryEventHandler = (event: MemoryChangeEvent) => Promise<void> | void;\n\nexport class MemoryEventClient {\n private readonly url: string;\n private ws?: WebSocket;\n private handlers: MemoryEventHandler[] = [];\n private reconnectDelay = 1000;\n private closed = false;\n private readonly headers: Record<string, string>;\n\n constructor(baseUrl: string, headers?: Record<string, string | number | boolean | undefined>) {\n this.url = `${baseUrl.replace(/^http/, 'ws')}/api/v1/memory/events/ws`;\n this.headers = this.buildForwardHeaders(headers ?? {});\n }\n\n start() {\n if (this.ws) return;\n this.connect();\n }\n\n onEvent(handler: MemoryEventHandler) {\n this.handlers.push(handler);\n }\n\n stop() {\n this.closed = true;\n this.ws?.close();\n }\n\n private connect() {\n this.ws = new WebSocket(this.url, { headers: this.headers });\n\n this.ws.on('open', () => {\n this.reconnectDelay = 1000;\n });\n\n this.ws.on('message', async (raw) => {\n try {\n const parsed = JSON.parse(raw.toString()) as MemoryChangeEvent;\n for (const handler of this.handlers) {\n await handler(parsed);\n }\n } catch (err) {\n // swallow parsing errors to keep connection alive\n console.error('Failed to handle memory event', err);\n }\n });\n\n this.ws.on('close', () => this.scheduleReconnect());\n this.ws.on('error', () => this.scheduleReconnect());\n }\n\n private scheduleReconnect() {\n if (this.closed) return;\n setTimeout(() => {\n this.reconnectDelay = Math.min(this.reconnectDelay * 2, 30000);\n this.connect();\n }, this.reconnectDelay);\n }\n\n private buildForwardHeaders(headers: Record<string, any>): Record<string, string> {\n const allowed = new Set(['authorization', 'cookie']);\n const sanitized: Record<string, string> = {};\n Object.entries(headers).forEach(([key, value]) => {\n if (value === undefined || value === null) return;\n const lower = key.toLowerCase();\n if (lower.startsWith('x-') || allowed.has(lower)) {\n sanitized[key] = typeof value === 'string' ? value : String(value);\n }\n });\n return sanitized;\n }\n}\n","import type { MemoryScope } from '../types/agent.js';\nimport type { MemoryClient, MemoryRequestMetadata, VectorSearchOptions } from './MemoryClient.js';\nimport type { MemoryEventClient } from './MemoryEventClient.js';\nimport type { AIClient, AIEmbeddingOptions } from '../ai/AIClient.js';\n\nexport interface MemoryChangeEvent {\n key: string;\n data: any;\n scope: MemoryScope;\n scopeId: string;\n timestamp: string | Date;\n agentId: string;\n}\n\nexport type MemoryWatchHandler = (event: MemoryChangeEvent) => Promise<void> | void;\n\nexport class MemoryInterface {\n private readonly client: MemoryClient;\n private readonly eventClient?: MemoryEventClient;\n private readonly aiClient?: AIClient;\n private readonly defaultScope: MemoryScope;\n private readonly defaultScopeId?: string;\n private readonly metadata?: MemoryRequestMetadata;\n\n constructor(params: {\n client: MemoryClient;\n eventClient?: MemoryEventClient;\n aiClient?: AIClient;\n defaultScope?: MemoryScope;\n defaultScopeId?: string;\n metadata?: MemoryRequestMetadata;\n }) {\n this.client = params.client;\n this.eventClient = params.eventClient;\n this.aiClient = params.aiClient;\n this.defaultScope = params.defaultScope ?? 'workflow';\n this.defaultScopeId = params.defaultScopeId;\n this.metadata = params.metadata;\n }\n\n async set(key: string, data: any, scope: MemoryScope = this.defaultScope, scopeId = this.defaultScopeId) {\n await this.client.set(key, data, {\n scope,\n scopeId,\n metadata: this.metadata\n });\n }\n\n get<T = any>(key: string, scope: MemoryScope = this.defaultScope, scopeId = this.defaultScopeId) {\n // If caller uses defaults, perform hierarchical fallback lookup; otherwise fetch the explicit scope only.\n if (scope === this.defaultScope && scopeId === this.defaultScopeId) {\n return this.getWithFallback<T>(key);\n }\n\n return this.client.get<T>(key, {\n scope,\n scopeId,\n metadata: this.metadata\n });\n }\n\n async getWithFallback<T = any>(key: string) {\n for (const candidate of this.getScopeOrder()) {\n const value = await this.client.get<T>(key, {\n scope: candidate.scope,\n scopeId: candidate.scopeId,\n metadata: this.metadata\n });\n if (value !== undefined) return value;\n }\n return undefined;\n }\n\n async setVector(\n key: string,\n embedding: number[],\n metadata?: any,\n scope: MemoryScope = this.defaultScope,\n scopeId = this.defaultScopeId\n ) {\n await this.client.setVector(key, embedding, metadata, {\n scope,\n scopeId,\n metadata: this.metadata\n });\n }\n\n async deleteVector(key: string, scope: MemoryScope = this.defaultScope, scopeId = this.defaultScopeId) {\n await this.client.deleteVector(key, {\n scope,\n scopeId,\n metadata: this.metadata\n });\n }\n\n searchVector(queryEmbedding: number[], options: Omit<VectorSearchOptions, 'metadata'> = {}) {\n return this.client.searchVector(queryEmbedding, {\n ...options,\n metadata: this.metadata\n });\n }\n\n delete(key: string, scope: MemoryScope = this.defaultScope, scopeId = this.defaultScopeId) {\n return this.client.delete(key, {\n scope,\n scopeId,\n metadata: this.metadata\n });\n }\n\n exists(key: string, scope: MemoryScope = this.defaultScope, scopeId = this.defaultScopeId) {\n return this.client.exists(key, {\n scope,\n scopeId,\n metadata: this.metadata\n });\n }\n\n listKeys(scope: MemoryScope = this.defaultScope, scopeId = this.defaultScopeId) {\n return this.client.listKeys(scope, {\n scope,\n scopeId,\n metadata: this.metadata\n });\n }\n\n async embedText(text: string, options?: AIEmbeddingOptions) {\n if (!this.aiClient) {\n throw new Error('AI client not configured for embeddings');\n }\n return this.aiClient.embed(text, options);\n }\n\n async embedTexts(texts: string[], options?: AIEmbeddingOptions) {\n if (!this.aiClient) {\n throw new Error('AI client not configured for embeddings');\n }\n return this.aiClient.embedMany(texts, options);\n }\n\n async embedAndSet(\n key: string,\n text: string,\n metadata?: any,\n scope: MemoryScope = this.defaultScope,\n scopeId = this.defaultScopeId,\n embeddingOptions?: AIEmbeddingOptions\n ) {\n const embedding = await this.embedText(text, embeddingOptions);\n await this.setVector(key, embedding, metadata, scope, scopeId);\n return embedding;\n }\n\n async deleteVectors(keys: string[], scope: MemoryScope = this.defaultScope, scopeId = this.defaultScopeId) {\n for (const key of keys) {\n await this.deleteVector(key, scope, scopeId);\n }\n }\n\n workflow(scopeId: string) {\n return this.cloneWithScope('workflow', scopeId);\n }\n\n session(scopeId: string) {\n return this.cloneWithScope('session', scopeId);\n }\n\n actor(scopeId: string) {\n return this.cloneWithScope('actor', scopeId);\n }\n\n get globalScope() {\n return this.cloneWithScope('global', 'global');\n }\n\n onEvent(handler: MemoryWatchHandler) {\n this.eventClient?.onEvent(handler);\n }\n\n private cloneWithScope(scope: MemoryScope, scopeId?: string) {\n return new MemoryInterface({\n client: this.client,\n eventClient: this.eventClient,\n aiClient: this.aiClient,\n defaultScope: scope,\n defaultScopeId: scopeId ?? this.resolveScopeId(scope, this.metadata),\n metadata: this.metadata\n });\n }\n\n private getScopeOrder(): Array<{ scope: MemoryScope; scopeId?: string }> {\n const metadata = this.metadata ?? {};\n const order: Array<{ scope: MemoryScope; scopeId?: string }> = [];\n\n const pushUnique = (scope: MemoryScope, scopeId?: string) => {\n const key = `${scope}:${scopeId ?? ''}`;\n if (!order.some((c) => `${c.scope}:${c.scopeId ?? ''}` === key)) {\n order.push({ scope, scopeId });\n }\n };\n\n pushUnique(this.defaultScope, this.defaultScopeId ?? this.resolveScopeId(this.defaultScope, metadata));\n\n const defaultSequence: MemoryScope[] = ['workflow', 'session', 'actor', 'global'];\n defaultSequence.forEach((scope) => {\n pushUnique(scope, this.resolveScopeId(scope, metadata));\n });\n\n return order;\n }\n\n private resolveScopeId(scope: MemoryScope, metadata?: MemoryRequestMetadata) {\n switch (scope) {\n case 'workflow':\n return metadata?.workflowId ?? metadata?.runId;\n case 'session':\n return metadata?.sessionId;\n case 'actor':\n return metadata?.actorId;\n case 'global':\n return 'global';\n default:\n return undefined;\n }\n }\n}\n","import { Buffer } from 'node:buffer';\nimport axios, { type AxiosInstance } from 'axios';\n\nexport interface ExecutionCredential {\n vcId: string;\n executionId: string;\n workflowId: string;\n sessionId?: string;\n issuerDid?: string;\n targetDid?: string;\n callerDid?: string;\n vcDocument: any;\n signature?: string;\n inputHash?: string;\n outputHash?: string;\n status: string;\n createdAt: string;\n}\n\nexport interface WorkflowCredential {\n workflowId: string;\n sessionId?: string;\n componentVcs: string[];\n workflowVcId: string;\n status: string;\n startTime: string;\n endTime?: string;\n totalSteps: number;\n completedSteps: number;\n}\n\nexport interface AuditTrailFilters {\n workflowId?: string;\n sessionId?: string;\n issuerDid?: string;\n status?: string;\n limit?: number;\n}\n\nexport interface AuditTrailExport {\n agentDids: string[];\n executionVcs: Array<{\n vcId: string;\n executionId: string;\n workflowId: string;\n sessionId?: string;\n issuerDid?: string;\n targetDid?: string;\n callerDid?: string;\n status: string;\n createdAt: string;\n }>;\n workflowVcs: WorkflowCredential[];\n totalCount: number;\n filtersApplied?: Record<string, any>;\n}\n\nexport interface GenerateCredentialParams {\n executionContext: {\n executionId: string;\n workflowId?: string;\n sessionId?: string;\n callerDid?: string;\n targetDid?: string;\n agentNodeDid?: string;\n timestamp?: string | Date;\n };\n inputData?: any;\n outputData?: any;\n status?: string;\n errorMessage?: string;\n durationMs?: number;\n headers?: Record<string, string>;\n}\n\nexport class DidClient {\n private readonly http: AxiosInstance;\n private readonly defaultHeaders: Record<string, string>;\n\n constructor(baseUrl: string, defaultHeaders?: Record<string, string | number | boolean | undefined>) {\n this.http = axios.create({ baseURL: baseUrl.replace(/\\/$/, '') });\n this.defaultHeaders = this.sanitizeHeaders(defaultHeaders ?? {});\n }\n\n async generateCredential(params: GenerateCredentialParams): Promise<ExecutionCredential> {\n const ctx = params.executionContext;\n const timestamp =\n ctx.timestamp instanceof Date\n ? ctx.timestamp.toISOString()\n : ctx.timestamp ?? new Date().toISOString();\n\n const payload = {\n execution_context: {\n execution_id: ctx.executionId,\n workflow_id: ctx.workflowId,\n session_id: ctx.sessionId,\n caller_did: ctx.callerDid,\n target_did: ctx.targetDid,\n agent_node_did: ctx.agentNodeDid,\n timestamp\n },\n input_data: this.serializeDataForJson(params.inputData),\n output_data: this.serializeDataForJson(params.outputData),\n status: params.status ?? 'succeeded',\n error_message: params.errorMessage,\n duration_ms: params.durationMs ?? 0\n };\n\n const res = await this.http.post('/api/v1/execution/vc', payload, {\n headers: this.mergeHeaders(params.headers)\n });\n\n return this.mapExecutionCredential(res.data);\n }\n\n async exportAuditTrail(filters: AuditTrailFilters = {}): Promise<AuditTrailExport> {\n const res = await this.http.get('/api/v1/did/export/vcs', {\n params: this.cleanFilters(filters),\n headers: this.mergeHeaders()\n });\n\n const data = res.data ?? {};\n return {\n agentDids: data.agent_dids ?? [],\n executionVcs: (data.execution_vcs ?? []).map((vc: any) => ({\n vcId: vc.vc_id,\n executionId: vc.execution_id,\n workflowId: vc.workflow_id,\n sessionId: vc.session_id,\n issuerDid: vc.issuer_did,\n targetDid: vc.target_did,\n callerDid: vc.caller_did,\n status: vc.status,\n createdAt: vc.created_at\n })),\n workflowVcs: (data.workflow_vcs ?? []).map((vc: any) => ({\n workflowId: vc.workflow_id,\n sessionId: vc.session_id,\n componentVcs: vc.component_vcs ?? [],\n workflowVcId: vc.workflow_vc_id ?? vc.workflowVcId ?? vc.workflow_id,\n status: vc.status,\n startTime: vc.start_time,\n endTime: vc.end_time,\n totalSteps: vc.total_steps ?? 0,\n completedSteps: vc.completed_steps ?? 0\n })),\n totalCount: data.total_count ?? 0,\n filtersApplied: data.filters_applied\n };\n }\n\n private serializeDataForJson(data: any) {\n if (data === undefined || data === null) return '';\n let value: string;\n if (typeof data === 'string') {\n value = data;\n } else if (data instanceof Uint8Array) {\n value = Buffer.from(data).toString('utf-8');\n } else if (typeof data === 'object') {\n try {\n value = JSON.stringify(data, Object.keys(data).sort());\n } catch {\n value = String(data);\n }\n } else {\n value = String(data);\n }\n return Buffer.from(value, 'utf-8').toString('base64');\n }\n\n private mapExecutionCredential(data: any): ExecutionCredential {\n return {\n vcId: data?.vc_id ?? '',\n executionId: data?.execution_id ?? '',\n workflowId: data?.workflow_id ?? '',\n sessionId: data?.session_id,\n issuerDid: data?.issuer_did,\n targetDid: data?.target_did,\n callerDid: data?.caller_did,\n vcDocument: data?.vc_document,\n signature: data?.signature,\n inputHash: data?.input_hash,\n outputHash: data?.output_hash,\n status: data?.status ?? '',\n createdAt: data?.created_at ?? ''\n };\n }\n\n private cleanFilters(filters: AuditTrailFilters) {\n const cleaned: Record<string, any> = {};\n if (filters.workflowId) cleaned.workflow_id = filters.workflowId;\n if (filters.sessionId) cleaned.session_id = filters.sessionId;\n if (filters.issuerDid) cleaned.issuer_did = filters.issuerDid;\n if (filters.status) cleaned.status = filters.status;\n if (filters.limit !== undefined) cleaned.limit = filters.limit;\n return cleaned;\n }\n\n private mergeHeaders(headers?: Record<string, any>) {\n return {\n ...this.defaultHeaders,\n ...this.sanitizeHeaders(headers ?? {})\n };\n }\n\n private sanitizeHeaders(headers: Record<string, any>): Record<string, string> {\n const sanitized: Record<string, string> = {};\n Object.entries(headers).forEach(([key, value]) => {\n if (value === undefined || value === null) return;\n sanitized[key] = typeof value === 'string' ? value : String(value);\n });\n return sanitized;\n }\n}\n","import type { ExecutionMetadata } from '../context/ExecutionContext.js';\nimport { DidClient, type AuditTrailFilters, type ExecutionCredential, type AuditTrailExport } from './DidClient.js';\n\nexport interface GenerateCredentialOptions {\n inputData?: any;\n outputData?: any;\n status?: string;\n errorMessage?: string;\n durationMs?: number;\n timestamp?: string | Date;\n callerDid?: string;\n targetDid?: string;\n agentNodeDid?: string;\n workflowId?: string;\n sessionId?: string;\n executionId?: string;\n headers?: Record<string, string>;\n}\n\nexport class DidInterface {\n private readonly client: DidClient;\n private readonly metadata: ExecutionMetadata;\n private readonly enabled: boolean;\n private readonly defaultInput: any;\n\n constructor(params: { client: DidClient; metadata: ExecutionMetadata; enabled: boolean; defaultInput?: any }) {\n this.client = params.client;\n this.metadata = params.metadata;\n this.enabled = params.enabled;\n this.defaultInput = params.defaultInput;\n }\n\n async generateCredential(options: GenerateCredentialOptions = {}): Promise<ExecutionCredential> {\n if (!this.enabled) {\n throw new Error('DID/VC features are disabled. Enable didEnabled in AgentConfig to use ctx.did.');\n }\n\n const executionContext = {\n executionId: options.executionId ?? this.metadata.executionId,\n workflowId: options.workflowId ?? this.metadata.workflowId ?? this.metadata.runId,\n sessionId: options.sessionId ?? this.metadata.sessionId,\n callerDid: options.callerDid ?? this.metadata.callerDid,\n targetDid: options.targetDid ?? this.metadata.targetDid,\n agentNodeDid: options.agentNodeDid ?? this.metadata.agentNodeDid,\n timestamp: options.timestamp\n };\n\n return this.client.generateCredential({\n executionContext,\n inputData: options.inputData ?? this.defaultInput,\n outputData: options.outputData,\n status: options.status,\n errorMessage: options.errorMessage,\n durationMs: options.durationMs,\n headers: options.headers\n });\n }\n\n exportAuditTrail(filters?: AuditTrailFilters): Promise<AuditTrailExport> {\n if (!this.enabled) {\n throw new Error('DID/VC features are disabled. Enable didEnabled in AgentConfig to use ctx.did.');\n }\n return this.client.exportAuditTrail(filters);\n }\n}\n","export function matchesPattern(pattern: string, value: string) {\n const escaped = pattern.replace(/[-/\\\\^$+?.()|[\\]{}]/g, '\\\\$&').replace(/\\*/g, '.*');\n const regex = new RegExp(`^${escaped}$`);\n return regex.test(value);\n}\n","import type { AgentFieldClient } from '../client/AgentFieldClient.js';\n\nexport interface WorkflowMetadata {\n executionId: string;\n runId?: string;\n workflowId?: string;\n agentNodeId?: string;\n reasonerId?: string;\n}\n\nexport interface WorkflowProgressOptions {\n status?: string;\n result?: Record<string, any>;\n error?: string;\n durationMs?: number;\n}\n\nexport class WorkflowReporter {\n private readonly client: AgentFieldClient;\n private readonly metadata: WorkflowMetadata;\n\n constructor(client: AgentFieldClient, metadata: WorkflowMetadata) {\n if (!metadata.executionId) {\n throw new Error('WorkflowReporter requires an executionId');\n }\n this.client = client;\n this.metadata = metadata;\n }\n\n async progress(progress: number, options?: WorkflowProgressOptions) {\n const normalized = Math.min(100, Math.max(0, Math.round(progress)));\n return this.client.updateExecutionStatus(this.metadata.executionId, {\n status: options?.status ?? 'running',\n progress: normalized,\n result: options?.result,\n error: options?.error,\n durationMs: options?.durationMs\n });\n }\n}\n","import axios, { type AxiosInstance } from 'axios';\nimport type { MCPServerConfig } from '../types/agent.js';\nimport type { MCPTool } from '../types/mcp.js';\n\nexport class MCPClient {\n readonly alias: string;\n readonly baseUrl: string;\n readonly transport: 'http' | 'bridge';\n private readonly http: AxiosInstance;\n private readonly devMode: boolean;\n private lastHealthy = false;\n\n constructor(config: MCPServerConfig, devMode?: boolean) {\n if (!config.alias) {\n throw new Error('MCP server alias is required');\n }\n if (!config.url && !config.port) {\n throw new Error(`MCP server \"${config.alias}\" requires a url or port`);\n }\n\n this.alias = config.alias;\n this.transport = config.transport ?? 'http';\n this.baseUrl = (config.url ?? `http://localhost:${config.port}`).replace(/\\/$/, '');\n this.http = axios.create({\n baseURL: this.baseUrl,\n headers: config.headers\n });\n this.devMode = Boolean(devMode);\n }\n\n async healthCheck(): Promise<boolean> {\n try {\n await this.http.get('/health');\n this.lastHealthy = true;\n return true;\n } catch (err) {\n this.lastHealthy = false;\n if (this.devMode) {\n console.warn(`MCP health check failed for ${this.alias}:`, err instanceof Error ? err.message : err);\n }\n return false;\n }\n }\n\n async listTools(): Promise<MCPTool[]> {\n try {\n if (this.transport === 'bridge') {\n const res = await this.http.post('/mcp/tools/list');\n const tools = res.data?.tools ?? [];\n return this.normalizeTools(tools);\n }\n\n const res = await this.http.post('/mcp/v1', {\n jsonrpc: '2.0',\n id: Date.now(),\n method: 'tools/list',\n params: {}\n });\n const tools = res.data?.result?.tools ?? [];\n return this.normalizeTools(tools);\n } catch (err) {\n if (this.devMode) {\n console.warn(`MCP listTools failed for ${this.alias}:`, err instanceof Error ? err.message : err);\n }\n return [];\n }\n }\n\n async callTool(toolName: string, arguments_: Record<string, any> = {}): Promise<any> {\n if (!toolName) {\n throw new Error('toolName is required');\n }\n\n try {\n if (this.transport === 'bridge') {\n const res = await this.http.post('/mcp/tools/call', {\n tool_name: toolName,\n arguments: arguments_\n });\n return res.data?.result ?? res.data;\n }\n\n const res = await this.http.post('/mcp/v1', {\n jsonrpc: '2.0',\n id: Date.now(),\n method: 'tools/call',\n params: { name: toolName, arguments: arguments_ }\n });\n\n if (res.data?.error) {\n throw new Error(String(res.data.error?.message ?? res.data.error));\n }\n\n if (res.data?.result !== undefined) {\n return res.data.result;\n }\n\n return res.data;\n } catch (err) {\n if (this.devMode) {\n console.warn(`MCP callTool failed for ${this.alias}.${toolName}:`, err instanceof Error ? err.message : err);\n }\n throw err;\n }\n }\n\n get lastHealthStatus() {\n return this.lastHealthy;\n }\n\n private normalizeTools(tools: any[]): MCPTool[] {\n return (tools ?? []).map((tool) => ({\n name: tool?.name ?? 'unknown',\n description: tool?.description,\n inputSchema: tool?.inputSchema ?? tool?.input_schema,\n input_schema: tool?.input_schema\n }));\n }\n}\n","import type { MCPServerConfig } from '../types/agent.js';\nimport type { MCPHealthSummary } from '../types/mcp.js';\nimport { MCPClient } from './MCPClient.js';\n\nexport class MCPClientRegistry {\n private readonly clients = new Map<string, MCPClient>();\n private readonly devMode: boolean;\n\n constructor(devMode?: boolean) {\n this.devMode = Boolean(devMode);\n }\n\n register(config: MCPServerConfig): MCPClient {\n const client = new MCPClient(config, this.devMode);\n this.clients.set(config.alias, client);\n return client;\n }\n\n get(alias: string) {\n return this.clients.get(alias);\n }\n\n list(): MCPClient[] {\n return Array.from(this.clients.values());\n }\n\n async healthSummary(): Promise<MCPHealthSummary> {\n if (!this.clients.size) {\n return {\n status: 'disabled',\n totalServers: 0,\n healthyServers: 0,\n servers: []\n };\n }\n\n const results = await Promise.all(\n Array.from(this.clients.values()).map(async (client) => {\n const healthy = await client.healthCheck();\n return {\n alias: client.alias,\n baseUrl: client.baseUrl,\n transport: client.transport,\n healthy\n };\n })\n );\n\n const healthyCount = results.filter((r) => r.healthy).length;\n const status: MCPHealthSummary['status'] =\n healthyCount === 0 ? 'degraded' : healthyCount === results.length ? 'ok' : 'degraded';\n\n return {\n status,\n totalServers: results.length,\n healthyServers: healthyCount,\n servers: results\n };\n }\n}\n","import type { Agent } from '../agent/Agent.js';\nimport type { MCPServerConfig } from '../types/agent.js';\nimport type { MCPTool, MCPToolRegistration } from '../types/mcp.js';\nimport { MCPClientRegistry } from './MCPClientRegistry.js';\n\nexport interface MCPToolRegistrarOptions {\n namespace?: string;\n tags?: string[];\n devMode?: boolean;\n}\n\nexport class MCPToolRegistrar {\n private readonly registered = new Set<string>();\n private readonly devMode: boolean;\n\n constructor(\n private readonly agent: Agent,\n private readonly registry: MCPClientRegistry,\n private readonly options: MCPToolRegistrarOptions = {}\n ) {\n this.devMode = Boolean(options.devMode);\n }\n\n registerServers(servers: MCPServerConfig[]) {\n servers.forEach((server) => this.registry.register(server));\n }\n\n async registerAll(): Promise<{ registered: MCPToolRegistration[] }> {\n const registrations: MCPToolRegistration[] = [];\n const clients = this.registry.list();\n\n for (const client of clients) {\n const healthy = await client.healthCheck();\n if (!healthy) {\n if (this.devMode) {\n console.warn(`Skipping MCP server ${client.alias} (health check failed)`);\n }\n continue;\n }\n\n const tools = await client.listTools();\n for (const tool of tools) {\n if (!tool?.name) continue;\n\n const skillName = this.buildSkillName(client.alias, tool.name);\n if (this.registered.has(skillName) || this.agent.skills.get(skillName)) {\n continue;\n }\n\n this.agent.skill(\n skillName,\n async (ctx) => {\n const args = (ctx.input && typeof ctx.input === 'object') ? (ctx.input as Record<string, any>) : {};\n const result = await client.callTool(tool.name, args);\n return {\n status: 'success',\n result,\n server: client.alias,\n tool: tool.name\n };\n },\n {\n description: tool.description ?? `MCP tool ${tool.name} from ${client.alias}`,\n inputSchema: tool.inputSchema ?? tool.input_schema ?? {},\n tags: this.buildTags(client.alias)\n }\n );\n\n this.registered.add(skillName);\n registrations.push({ server: client.alias, skillName, tool });\n if (this.devMode) {\n console.info(`Registered MCP skill ${skillName}`);\n }\n }\n }\n\n return { registered: registrations };\n }\n\n private buildTags(alias: string) {\n return Array.from(new Set(['mcp', alias, ...(this.options.tags ?? [])]));\n }\n\n private buildSkillName(serverAlias: string, toolName: string) {\n const base = [this.options.namespace, serverAlias, toolName].filter(Boolean).join('_');\n return this.sanitize(base);\n }\n\n private sanitize(value: string) {\n const collapsed = value.replace(/[^a-zA-Z0-9_]/g, '_').replace(/_+/g, '_').replace(/^_+|_+$/g, '');\n if (/^[0-9]/.test(collapsed)) {\n return `mcp_${collapsed}`;\n }\n return collapsed || 'mcp_tool';\n }\n}\n","import express from 'express';\nimport type http from 'node:http';\nimport { randomUUID } from 'node:crypto';\nimport type {\n AgentConfig,\n AgentHandler,\n DeploymentType,\n HealthStatus,\n ServerlessEvent,\n ServerlessResponse\n} from '../types/agent.js';\nimport { ReasonerRegistry } from './ReasonerRegistry.js';\nimport { SkillRegistry } from './SkillRegistry.js';\nimport { AgentRouter } from '../router/AgentRouter.js';\nimport type { ReasonerHandler, ReasonerOptions } from '../types/reasoner.js';\nimport type { SkillHandler, SkillOptions } from '../types/skill.js';\nimport { ExecutionContext, type ExecutionMetadata } from '../context/ExecutionContext.js';\nimport { ReasonerContext } from '../context/ReasonerContext.js';\nimport { SkillContext } from '../context/SkillContext.js';\nimport { AIClient } from '../ai/AIClient.js';\nimport { AgentFieldClient } from '../client/AgentFieldClient.js';\nimport { MemoryClient } from '../memory/MemoryClient.js';\nimport { MemoryEventClient } from '../memory/MemoryEventClient.js';\nimport {\n MemoryInterface,\n type MemoryChangeEvent,\n type MemoryWatchHandler\n} from '../memory/MemoryInterface.js';\nimport { DidClient } from '../did/DidClient.js';\nimport { DidInterface } from '../did/DidInterface.js';\nimport { matchesPattern } from '../utils/pattern.js';\nimport { WorkflowReporter } from '../workflow/WorkflowReporter.js';\nimport type { DiscoveryOptions } from '../types/agent.js';\nimport type { MCPToolRegistration } from '../types/mcp.js';\nimport { MCPClientRegistry } from '../mcp/MCPClientRegistry.js';\nimport { MCPToolRegistrar } from '../mcp/MCPToolRegistrar.js';\n\nclass TargetNotFoundError extends Error {}\n\nexport class Agent {\n readonly config: AgentConfig;\n readonly app: express.Express;\n readonly reasoners = new ReasonerRegistry();\n readonly skills = new SkillRegistry();\n private server?: http.Server;\n private heartbeatTimer?: NodeJS.Timeout;\n private readonly aiClient: AIClient;\n private readonly agentFieldClient: AgentFieldClient;\n private readonly memoryClient: MemoryClient;\n private readonly memoryEventClient: MemoryEventClient;\n private readonly didClient: DidClient;\n private readonly memoryWatchers: Array<{ pattern: string; handler: MemoryWatchHandler; scope?: string; scopeId?: string }> = [];\n private readonly mcpClientRegistry?: MCPClientRegistry;\n private readonly mcpToolRegistrar?: MCPToolRegistrar;\n\n constructor(config: AgentConfig) {\n const mcp = config.mcp\n ? {\n autoRegisterTools: config.mcp.autoRegisterTools ?? true,\n ...config.mcp\n }\n : undefined;\n\n this.config = {\n port: 8001,\n agentFieldUrl: 'http://localhost:8080',\n host: '0.0.0.0',\n ...config,\n didEnabled: config.didEnabled ?? true,\n deploymentType: config.deploymentType ?? 'long_running',\n mcp\n };\n\n this.app = express();\n this.app.use(express.json());\n\n this.aiClient = new AIClient(this.config.aiConfig);\n this.agentFieldClient = new AgentFieldClient(this.config);\n this.memoryClient = new MemoryClient(this.config.agentFieldUrl!, this.config.defaultHeaders);\n this.memoryEventClient = new MemoryEventClient(this.config.agentFieldUrl!, this.config.defaultHeaders);\n this.didClient = new DidClient(this.config.agentFieldUrl!, this.config.defaultHeaders);\n this.memoryEventClient.onEvent((event) => this.dispatchMemoryEvent(event));\n\n if (this.config.mcp?.servers?.length) {\n this.mcpClientRegistry = new MCPClientRegistry(this.config.devMode);\n this.mcpToolRegistrar = new MCPToolRegistrar(this, this.mcpClientRegistry, {\n namespace: this.config.mcp.namespace,\n tags: this.config.mcp.tags,\n devMode: this.config.devMode\n });\n this.mcpToolRegistrar.registerServers(this.config.mcp.servers);\n }\n\n this.registerDefaultRoutes();\n }\n\n reasoner<TInput = any, TOutput = any>(\n name: string,\n handler: ReasonerHandler<TInput, TOutput>,\n options?: ReasonerOptions\n ) {\n this.reasoners.register(name, handler, options);\n return this;\n }\n\n skill<TInput = any, TOutput = any>(\n name: string,\n handler: SkillHandler<TInput, TOutput>,\n options?: SkillOptions\n ) {\n this.skills.register(name, handler, options);\n return this;\n }\n\n includeRouter(router: AgentRouter) {\n this.reasoners.includeRouter(router);\n this.skills.includeRouter(router);\n }\n\n handler(): AgentHandler {\n return async (event: any, res?: any): Promise<ServerlessResponse | void> => {\n // If a response object is provided, treat this as a standard HTTP request (e.g., Vercel/Netlify)\n if (res && typeof res === 'object' && typeof (res as any).setHeader === 'function') {\n return this.handleHttpRequest(event as http.IncomingMessage, res as http.ServerResponse);\n }\n\n // Fallback to a generic serverless event contract (AWS Lambda, Cloud Functions, etc.)\n return this.handleServerlessEvent(event as ServerlessEvent);\n };\n }\n\n watchMemory(pattern: string | string[], handler: MemoryWatchHandler, options?: { scope?: string; scopeId?: string }) {\n const patterns = Array.isArray(pattern) ? pattern : [pattern];\n patterns.forEach((p) =>\n this.memoryWatchers.push({ pattern: p, handler, scope: options?.scope, scopeId: options?.scopeId })\n );\n this.memoryEventClient.start();\n }\n\n discover(options?: DiscoveryOptions) {\n return this.agentFieldClient.discoverCapabilities(options);\n }\n\n async registerMcpTools(): Promise<{ registered: MCPToolRegistration[] }> {\n if (!this.mcpToolRegistrar) return { registered: [] };\n return this.mcpToolRegistrar.registerAll();\n }\n\n getAIClient() {\n return this.aiClient;\n }\n\n getMemoryInterface(metadata?: ExecutionMetadata) {\n const defaultScope = this.config.memoryConfig?.defaultScope ?? 'workflow';\n const defaultScopeId =\n defaultScope === 'session'\n ? metadata?.sessionId\n : defaultScope === 'actor'\n ? metadata?.actorId\n : metadata?.workflowId ?? metadata?.runId ?? metadata?.sessionId ?? metadata?.actorId;\n return new MemoryInterface({\n client: this.memoryClient,\n eventClient: this.memoryEventClient,\n aiClient: this.aiClient,\n defaultScope,\n defaultScopeId,\n metadata: {\n workflowId: metadata?.workflowId ?? metadata?.runId,\n sessionId: metadata?.sessionId,\n actorId: metadata?.actorId,\n runId: metadata?.runId,\n executionId: metadata?.executionId,\n parentExecutionId: metadata?.parentExecutionId,\n callerDid: metadata?.callerDid,\n targetDid: metadata?.targetDid,\n agentNodeDid: metadata?.agentNodeDid,\n agentNodeId: this.config.nodeId\n }\n });\n }\n\n getWorkflowReporter(metadata: ExecutionMetadata) {\n return new WorkflowReporter(this.agentFieldClient, {\n executionId: metadata.executionId,\n runId: metadata.runId,\n workflowId: metadata.workflowId,\n agentNodeId: this.config.nodeId\n });\n }\n\n getDidInterface(metadata: ExecutionMetadata, defaultInput?: any) {\n return new DidInterface({\n client: this.didClient,\n metadata: {\n ...metadata,\n agentNodeDid: metadata.agentNodeDid ?? this.config.defaultHeaders?.['X-Agent-Node-DID']?.toString()\n },\n enabled: Boolean(this.config.didEnabled),\n defaultInput\n });\n }\n\n async serve(): Promise<void> {\n if (this.config.mcp?.autoRegisterTools !== false) {\n try {\n await this.registerMcpTools();\n } catch (err) {\n if (this.config.devMode) {\n console.warn('MCP tool registration failed', err);\n }\n }\n }\n\n await this.registerWithControlPlane();\n const port = this.config.port ?? 8001;\n const host = this.config.host ?? '0.0.0.0';\n // First heartbeat marks the node as starting; subsequent interval sets ready.\n await this.agentFieldClient.heartbeat('starting');\n await new Promise<void>((resolve, reject) => {\n this.server = this.app\n .listen(port, host, () => resolve())\n .on('error', reject);\n });\n this.memoryEventClient.start();\n this.startHeartbeat();\n }\n\n async shutdown(): Promise<void> {\n if (this.heartbeatTimer) {\n clearInterval(this.heartbeatTimer);\n }\n await new Promise<void>((resolve, reject) => {\n this.server?.close((err) => {\n if (err) reject(err);\n else resolve();\n });\n });\n this.memoryEventClient.stop();\n }\n\n async call(target: string, input: any) {\n const { agentId, name } = this.parseTarget(target);\n if (!agentId || agentId === this.config.nodeId) {\n const local = this.reasoners.get(name);\n if (!local) throw new Error(`Reasoner not found: ${name}`);\n const parentMetadata = ExecutionContext.getCurrent()?.metadata;\n const runId = parentMetadata?.runId ?? parentMetadata?.executionId ?? randomUUID();\n const metadata = {\n ...parentMetadata,\n executionId: randomUUID(),\n parentExecutionId: parentMetadata?.executionId,\n runId,\n workflowId: parentMetadata?.workflowId ?? runId\n };\n const dummyReq = {} as express.Request;\n const dummyRes = {} as express.Response;\n const execCtx = new ExecutionContext({\n input,\n metadata: {\n ...metadata,\n executionId: metadata.executionId ?? randomUUID()\n },\n req: dummyReq,\n res: dummyRes,\n agent: this\n });\n const startTime = Date.now();\n\n const emitEvent = async (status: 'running' | 'succeeded' | 'failed', payload: any) => {\n await this.agentFieldClient.publishWorkflowEvent({\n executionId: execCtx.metadata.executionId,\n runId: execCtx.metadata.runId ?? execCtx.metadata.executionId,\n workflowId: execCtx.metadata.workflowId,\n reasonerId: name,\n agentNodeId: this.config.nodeId,\n status,\n parentExecutionId: execCtx.metadata.parentExecutionId,\n parentWorkflowId: execCtx.metadata.workflowId,\n inputData: status === 'running' ? input : undefined,\n result: status === 'succeeded' ? payload : undefined,\n error: status === 'failed' ? (payload?.message ?? String(payload)) : undefined,\n durationMs: status === 'running' ? undefined : Date.now() - startTime\n });\n };\n\n await emitEvent('running', null);\n\n return ExecutionContext.run(execCtx, async () => {\n try {\n const result = await local.handler(\n new ReasonerContext({\n input,\n executionId: execCtx.metadata.executionId,\n runId: execCtx.metadata.runId,\n sessionId: execCtx.metadata.sessionId,\n actorId: execCtx.metadata.actorId,\n workflowId: execCtx.metadata.workflowId,\n parentExecutionId: execCtx.metadata.parentExecutionId,\n callerDid: execCtx.metadata.callerDid,\n targetDid: execCtx.metadata.targetDid,\n agentNodeDid: execCtx.metadata.agentNodeDid,\n req: dummyReq,\n res: dummyRes,\n agent: this,\n aiClient: this.aiClient,\n memory: this.getMemoryInterface(execCtx.metadata),\n workflow: this.getWorkflowReporter(execCtx.metadata),\n did: this.getDidInterface(execCtx.metadata, input)\n })\n );\n await emitEvent('succeeded', result);\n return result;\n } catch (err) {\n await emitEvent('failed', err);\n throw err;\n }\n });\n }\n\n const metadata = ExecutionContext.getCurrent()?.metadata;\n return this.agentFieldClient.execute(target, input, {\n runId: metadata?.runId ?? metadata?.executionId,\n workflowId: metadata?.workflowId ?? metadata?.runId,\n parentExecutionId: metadata?.executionId,\n sessionId: metadata?.sessionId,\n actorId: metadata?.actorId,\n callerDid: metadata?.callerDid,\n targetDid: metadata?.targetDid,\n agentNodeDid: metadata?.agentNodeDid,\n agentNodeId: this.config.nodeId\n });\n }\n\n private registerDefaultRoutes() {\n this.app.get('/health', (_req, res) => {\n res.json(this.health());\n });\n\n // Discovery endpoint used for serverless registration (mirrors Python behaviour)\n this.app.get('/discover', (_req, res) => {\n res.json(this.discoveryPayload(this.config.deploymentType ?? 'long_running'));\n });\n\n // MCP health probe expected by control-plane UI\n this.app.get('/health/mcp', async (_req, res) => {\n if (!this.mcpClientRegistry) {\n res.json({ status: 'disabled', totalServers: 0, healthyServers: 0, servers: [] });\n return;\n }\n\n try {\n const summary = await this.mcpClientRegistry.healthSummary();\n res.json(summary);\n } catch (err: any) {\n res.status(500).json({ status: 'error', error: err?.message ?? 'MCP health check failed' });\n }\n });\n\n this.app.get('/mcp/status', (_req, res) => {\n res.json(this.mcpStatus());\n });\n\n this.app.get('/status', (_req, res) => {\n res.json({\n ...this.health(),\n reasoners: this.reasoners.all().map((r) => r.name),\n skills: this.skills.all().map((s) => s.name)\n });\n });\n\n this.app.get('/reasoners', (_req, res) => {\n res.json(this.reasoners.all().map((r) => r.name));\n });\n\n this.app.get('/skills', (_req, res) => {\n res.json(this.skills.all().map((s) => s.name));\n });\n\n this.app.post('/api/v1/reasoners/*', (req, res) => this.executeReasoner(req, res, (req.params as any)[0]));\n this.app.post('/reasoners/:name', (req, res) => this.executeReasoner(req, res, req.params.name));\n\n this.app.post('/api/v1/skills/*', (req, res) => this.executeSkill(req, res, (req.params as any)[0]));\n this.app.post('/skills/:name', (req, res) => this.executeSkill(req, res, req.params.name));\n\n // Serverless-friendly execute endpoint that accepts { target, input } or { reasoner, input }\n this.app.post('/execute', (req, res) => this.executeServerlessHttp(req, res));\n this.app.post('/execute/:name', (req, res) => this.executeServerlessHttp(req, res, req.params.name));\n }\n\n private async executeReasoner(req: express.Request, res: express.Response, name: string) {\n try {\n await this.executeInvocation({\n targetName: name,\n targetType: 'reasoner',\n input: req.body,\n metadata: this.buildMetadata(req),\n req,\n res,\n respond: true\n });\n } catch (err: any) {\n if (err instanceof TargetNotFoundError) {\n res.status(404).json({ error: err.message });\n } else {\n res.status(500).json({ error: err?.message ?? 'Execution failed' });\n }\n }\n }\n\n private async executeSkill(req: express.Request, res: express.Response, name: string) {\n try {\n await this.executeInvocation({\n targetName: name,\n targetType: 'skill',\n input: req.body,\n metadata: this.buildMetadata(req),\n req,\n res,\n respond: true\n });\n } catch (err: any) {\n if (err instanceof TargetNotFoundError) {\n res.status(404).json({ error: err.message });\n } else {\n res.status(500).json({ error: err?.message ?? 'Execution failed' });\n }\n }\n }\n\n private buildMetadata(req: express.Request) {\n return this.buildMetadataFromHeaders(req.headers);\n }\n\n private async executeServerlessHttp(req: express.Request, res: express.Response, explicitName?: string) {\n const invocation = this.extractInvocationDetails({\n path: req.path,\n explicitTarget: explicitName,\n query: req.query as Record<string, any>,\n body: req.body\n });\n\n if (!invocation.name) {\n res.status(400).json({ error: \"Missing 'target' or 'reasoner' in request\" });\n return;\n }\n\n try {\n const result = await this.executeInvocation({\n targetName: invocation.name,\n targetType: invocation.targetType,\n input: invocation.input,\n metadata: this.buildMetadata(req),\n req,\n res,\n respond: true\n });\n\n if (result !== undefined && !res.headersSent) {\n res.json(result);\n }\n } catch (err: any) {\n if (err instanceof TargetNotFoundError) {\n res.status(404).json({ error: err.message });\n } else {\n res.status(500).json({ error: err?.message ?? 'Execution failed' });\n }\n }\n }\n\n private buildMetadataFromHeaders(\n headers: Record<string, string | string[] | undefined>,\n overrides?: Partial<ExecutionMetadata>\n ): ExecutionMetadata {\n const normalized: Record<string, string | undefined> = {};\n Object.entries(headers ?? {}).forEach(([key, value]) => {\n normalized[key.toLowerCase()] = Array.isArray(value) ? value[0] : value;\n });\n\n const executionId = overrides?.executionId ?? normalized['x-execution-id'] ?? randomUUID();\n const runId = overrides?.runId ?? normalized['x-run-id'] ?? executionId;\n const workflowId = overrides?.workflowId ?? normalized['x-workflow-id'] ?? runId;\n\n return {\n executionId,\n runId,\n workflowId,\n sessionId: overrides?.sessionId ?? normalized['x-session-id'],\n actorId: overrides?.actorId ?? normalized['x-actor-id'],\n parentExecutionId: overrides?.parentExecutionId ?? normalized['x-parent-execution-id'],\n callerDid: overrides?.callerDid ?? normalized['x-caller-did'],\n targetDid: overrides?.targetDid ?? normalized['x-target-did'],\n agentNodeDid:\n overrides?.agentNodeDid ?? normalized['x-agent-node-did'] ?? normalized['x-agent-did']\n };\n }\n\n private handleHttpRequest(req: http.IncomingMessage | express.Request, res: http.ServerResponse | express.Response) {\n const handler = this.app as unknown as (req: http.IncomingMessage, res: http.ServerResponse) => void;\n return handler(req as any, res as any);\n }\n\n private async handleServerlessEvent(event: ServerlessEvent): Promise<ServerlessResponse> {\n const path = event?.path ?? event?.rawPath ?? '';\n const action = event?.action ?? '';\n\n if (path === '/discover' || action === 'discover') {\n return {\n statusCode: 200,\n headers: { 'content-type': 'application/json' },\n body: this.discoveryPayload(this.config.deploymentType ?? 'serverless')\n };\n }\n\n const body = this.normalizeEventBody(event);\n const invocation = this.extractInvocationDetails({\n path,\n query: event?.queryStringParameters,\n body,\n reasoner: event?.reasoner,\n target: event?.target,\n skill: event?.skill,\n type: event?.type\n });\n\n if (!invocation.name) {\n return {\n statusCode: 400,\n headers: { 'content-type': 'application/json' },\n body: { error: \"Missing 'target' or 'reasoner' in request\" }\n };\n }\n\n const metadata = this.buildMetadataFromHeaders(event?.headers ?? {}, this.mergeExecutionContext(event));\n\n try {\n const result = await this.executeInvocation({\n targetName: invocation.name,\n targetType: invocation.targetType,\n input: invocation.input,\n metadata\n });\n\n return { statusCode: 200, headers: { 'content-type': 'application/json' }, body: result };\n } catch (err: any) {\n if (err instanceof TargetNotFoundError) {\n return {\n statusCode: 404,\n headers: { 'content-type': 'application/json' },\n body: { error: err.message }\n };\n }\n\n return {\n statusCode: 500,\n headers: { 'content-type': 'application/json' },\n body: { error: err?.message ?? 'Execution failed' }\n };\n }\n }\n\n private normalizeEventBody(event: ServerlessEvent) {\n const parsed = this.parseBody((event as any)?.body);\n if (parsed && typeof parsed === 'object' && event?.input !== undefined && (parsed as any).input === undefined) {\n return { ...(parsed as Record<string, any>), input: event.input };\n }\n if ((parsed === undefined || parsed === null) && event?.input !== undefined) {\n return { input: event.input };\n }\n return parsed;\n }\n\n private mergeExecutionContext(event: ServerlessEvent): Partial<ExecutionMetadata> {\n const ctx = (event?.executionContext ?? (event as any)?.execution_context) as Partial<\n ExecutionMetadata & {\n execution_id?: string;\n run_id?: string;\n workflow_id?: string;\n parent_execution_id?: string;\n session_id?: string;\n actor_id?: string;\n caller_did?: string;\n target_did?: string;\n agent_node_did?: string;\n }\n >;\n\n if (!ctx) return {};\n\n return {\n executionId: (ctx as any).executionId ?? ctx.execution_id ?? ctx.executionId,\n runId: ctx.runId ?? (ctx as any).run_id,\n workflowId: ctx.workflowId ?? (ctx as any).workflow_id,\n parentExecutionId: ctx.parentExecutionId ?? (ctx as any).parent_execution_id,\n sessionId: ctx.sessionId ?? (ctx as any).session_id,\n actorId: ctx.actorId ?? (ctx as any).actor_id,\n callerDid: (ctx as any).callerDid ?? (ctx as any).caller_did,\n targetDid: (ctx as any).targetDid ?? (ctx as any).target_did,\n agentNodeDid: (ctx as any).agentNodeDid ?? (ctx as any).agent_node_did\n };\n }\n\n private extractInvocationDetails(params: {\n path?: string;\n explicitTarget?: string;\n query?: Record<string, any>;\n body?: any;\n reasoner?: string;\n target?: string;\n skill?: string;\n type?: string;\n }): { name?: string; targetType?: 'reasoner' | 'skill'; input: any } {\n const pathTarget = this.parsePathTarget(params.path);\n const name =\n this.firstDefined<string>(\n params.explicitTarget,\n pathTarget.name,\n params.query?.target,\n params.query?.reasoner,\n params.query?.skill,\n params.target,\n params.reasoner,\n params.skill,\n params.body?.target,\n params.body?.reasoner,\n params.body?.skill\n ) ?? pathTarget.name;\n\n const typeValue = (this.firstDefined<string>(\n pathTarget.targetType,\n params.type,\n params.query?.type,\n params.query?.targetType,\n params.body?.type,\n params.body?.targetType\n ) ?? undefined) as 'reasoner' | 'skill' | undefined;\n\n const input = this.normalizeInputPayload(params.body);\n\n return { name: name ?? undefined, targetType: typeValue, input };\n }\n\n private parsePathTarget(\n path?: string\n ): { name?: string; targetType?: 'reasoner' | 'skill' } {\n if (!path) return {};\n\n const normalized = path.split('?')[0];\n const reasonerMatch = normalized.match(/\\/reasoners\\/([^/]+)/);\n if (reasonerMatch?.[1]) {\n return { name: reasonerMatch[1], targetType: 'reasoner' };\n }\n\n const skillMatch = normalized.match(/\\/skills\\/([^/]+)/);\n if (skillMatch?.[1]) {\n return { name: skillMatch[1], targetType: 'skill' };\n }\n\n const executeMatch = normalized.match(/\\/execute\\/([^/]+)/);\n if (executeMatch?.[1]) {\n return { name: executeMatch[1] };\n }\n\n return {};\n }\n\n private parseBody(body: any) {\n if (body === undefined || body === null) return body;\n if (typeof body === 'string') {\n try {\n return JSON.parse(body);\n } catch {\n return body;\n }\n }\n return body;\n }\n\n private normalizeInputPayload(body: any) {\n if (body === undefined || body === null) return {};\n const parsed = this.parseBody(body);\n\n if (parsed && typeof parsed === 'object') {\n const { target, reasoner, skill, type, targetType, ...rest } = parsed as Record<string, any>;\n if ((parsed as any).input !== undefined) {\n return (parsed as any).input;\n }\n if ((parsed as any).data !== undefined) {\n return (parsed as any).data;\n }\n if (Object.keys(rest).length === 0) {\n return {};\n }\n return rest;\n }\n\n return parsed;\n }\n\n private firstDefined<T>(...values: Array<T | undefined | null>): T | undefined {\n for (const value of values) {\n if (value !== undefined && value !== null) {\n return value as T;\n }\n }\n return undefined;\n }\n\n private reasonerDefinitions() {\n return this.reasoners.all().map((r) => ({\n id: r.name,\n input_schema: r.options?.inputSchema ?? {},\n output_schema: r.options?.outputSchema ?? {},\n memory_config: r.options?.memoryConfig ?? {\n auto_inject: [] as string[],\n memory_retention: '',\n cache_results: false\n },\n tags: r.options?.tags ?? []\n }));\n }\n\n private skillDefinitions() {\n return this.skills.all().map((s) => ({\n id: s.name,\n input_schema: s.options?.inputSchema ?? {},\n tags: s.options?.tags ?? []\n }));\n }\n\n private discoveryPayload(deploymentType: DeploymentType) {\n return {\n node_id: this.config.nodeId,\n version: this.config.version,\n deployment_type: deploymentType,\n reasoners: this.reasonerDefinitions(),\n skills: this.skillDefinitions()\n };\n }\n\n private async executeInvocation(params: {\n targetName: string;\n targetType?: 'reasoner' | 'skill';\n input: any;\n metadata: ExecutionMetadata;\n req?: express.Request;\n res?: express.Response;\n respond?: boolean;\n }) {\n const targetType = params.targetType;\n\n if (targetType === 'skill') {\n const skill = this.skills.get(params.targetName);\n if (!skill) {\n throw new TargetNotFoundError(`Skill not found: ${params.targetName}`);\n }\n return this.runSkill(skill, params);\n }\n\n const reasoner = this.reasoners.get(params.targetName);\n if (reasoner) {\n return this.runReasoner(reasoner, params);\n }\n\n const fallbackSkill = this.skills.get(params.targetName);\n if (fallbackSkill) {\n return this.runSkill(fallbackSkill, params);\n }\n\n throw new TargetNotFoundError(`Reasoner not found: ${params.targetName}`);\n }\n\n private async runReasoner(\n reasoner: { handler: ReasonerHandler<any, any> },\n params: {\n targetName: string;\n input: any;\n metadata: ExecutionMetadata;\n req?: express.Request;\n res?: express.Response;\n respond?: boolean;\n }\n ) {\n const req = params.req ?? ({} as express.Request);\n const res = params.res ?? ({} as express.Response);\n const execCtx = new ExecutionContext({\n input: params.input,\n metadata: params.metadata,\n req,\n res,\n agent: this\n });\n\n return ExecutionContext.run(execCtx, async () => {\n try {\n const ctx = new ReasonerContext({\n input: params.input,\n executionId: params.metadata.executionId,\n runId: params.metadata.runId,\n sessionId: params.metadata.sessionId,\n actorId: params.metadata.actorId,\n workflowId: params.metadata.workflowId,\n parentExecutionId: params.metadata.parentExecutionId,\n callerDid: params.metadata.callerDid,\n targetDid: params.metadata.targetDid,\n agentNodeDid: params.metadata.agentNodeDid,\n req,\n res,\n agent: this,\n aiClient: this.aiClient,\n memory: this.getMemoryInterface(params.metadata),\n workflow: this.getWorkflowReporter(params.metadata),\n did: this.getDidInterface(params.metadata, params.input)\n });\n\n const result = await reasoner.handler(ctx);\n if (params.respond && params.res) {\n params.res.json(result);\n return;\n }\n return result;\n } catch (err: any) {\n if (params.respond && params.res) {\n params.res.status(500).json({ error: err?.message ?? 'Execution failed' });\n return;\n }\n throw err;\n }\n });\n }\n\n private async runSkill(\n skill: { handler: SkillHandler<any, any> },\n params: {\n targetName: string;\n input: any;\n metadata: ExecutionMetadata;\n req?: express.Request;\n res?: express.Response;\n respond?: boolean;\n }\n ) {\n const req = params.req ?? ({} as express.Request);\n const res = params.res ?? ({} as express.Response);\n const execCtx = new ExecutionContext({\n input: params.input,\n metadata: params.metadata,\n req,\n res,\n agent: this\n });\n\n return ExecutionContext.run(execCtx, async () => {\n try {\n const ctx = new SkillContext({\n input: params.input,\n executionId: params.metadata.executionId,\n sessionId: params.metadata.sessionId,\n workflowId: params.metadata.workflowId,\n req,\n res,\n agent: this,\n memory: this.getMemoryInterface(params.metadata),\n workflow: this.getWorkflowReporter(params.metadata),\n did: this.getDidInterface(params.metadata, params.input)\n });\n\n const result = await skill.handler(ctx);\n if (params.respond && params.res) {\n params.res.json(result);\n return;\n }\n return result;\n } catch (err: any) {\n if (params.respond && params.res) {\n params.res.status(500).json({ error: err?.message ?? 'Execution failed' });\n return;\n }\n throw err;\n }\n });\n }\n\n private async registerWithControlPlane() {\n try {\n const reasoners = this.reasonerDefinitions();\n const skills = this.skillDefinitions();\n\n const port = this.config.port ?? 8001;\n const hostForUrl = this.config.publicUrl\n ? undefined\n : (this.config.host && this.config.host !== '0.0.0.0' ? this.config.host : '127.0.0.1');\n const publicUrl =\n this.config.publicUrl ?? `http://${hostForUrl ?? '127.0.0.1'}:${port}`;\n\n await this.agentFieldClient.register({\n id: this.config.nodeId,\n version: this.config.version,\n base_url: publicUrl,\n public_url: publicUrl,\n deployment_type: this.config.deploymentType ?? 'long_running',\n reasoners,\n skills\n });\n } catch (err) {\n if (!this.config.devMode) {\n throw err;\n }\n console.warn('Control plane registration failed (devMode=true), continuing locally', err);\n }\n }\n\n private startHeartbeat() {\n const interval = this.config.heartbeatIntervalMs ?? 30_000;\n if (interval <= 0) return;\n\n const tick = async () => {\n try {\n await this.agentFieldClient.heartbeat('ready');\n } catch (err) {\n if (!this.config.devMode) {\n console.warn('Heartbeat failed', err);\n }\n }\n };\n\n this.heartbeatTimer = setInterval(tick, interval);\n tick();\n }\n\n private health(): HealthStatus {\n return {\n status: 'running',\n node_id: this.config.nodeId,\n version: this.config.version\n };\n }\n\n private mcpStatus() {\n const servers = this.mcpClientRegistry\n ? this.mcpClientRegistry.list().map((client) => ({\n alias: client.alias,\n baseUrl: client.baseUrl,\n transport: client.transport\n }))\n : [];\n\n const skills = this.skills\n .all()\n .filter((skill) => skill.options?.tags?.includes('mcp'))\n .map((skill) => skill.name);\n\n return {\n status: servers.length ? 'configured' : 'disabled',\n servers,\n skills\n };\n }\n\n private dispatchMemoryEvent(event: MemoryChangeEvent) {\n this.memoryWatchers.forEach(({ pattern, handler, scope, scopeId }) => {\n const scopeMatch = (!scope || scope === event.scope) && (!scopeId || scopeId === event.scopeId);\n if (scopeMatch && matchesPattern(pattern, event.key)) {\n handler(event);\n }\n });\n }\n\n private parseTarget(target: string): { agentId?: string; name: string } {\n if (!target.includes('.')) {\n return { name: target };\n }\n const [agentId, remainder] = target.split('.', 2);\n const name = remainder.replace(':', '/');\n return { agentId, name };\n }\n}\n","import type { ReasonerDefinition, ReasonerHandler, ReasonerOptions } from '../types/reasoner.js';\nimport type { SkillDefinition, SkillHandler, SkillOptions } from '../types/skill.js';\n\nexport interface AgentRouterOptions {\n prefix?: string;\n tags?: string[];\n}\n\nexport class AgentRouter {\n readonly prefix?: string;\n readonly tags?: string[];\n readonly reasoners: ReasonerDefinition[] = [];\n readonly skills: SkillDefinition[] = [];\n\n constructor(options: AgentRouterOptions = {}) {\n this.prefix = options.prefix;\n this.tags = options.tags;\n }\n\n reasoner<TInput = any, TOutput = any>(\n name: string,\n handler: ReasonerHandler<TInput, TOutput>,\n options?: ReasonerOptions\n ) {\n const fullName = this.prefix ? `${sanitize(this.prefix)}_${name}` : name;\n this.reasoners.push({ name: fullName, handler, options });\n return this;\n }\n\n skill<TInput = any, TOutput = any>(\n name: string,\n handler: SkillHandler<TInput, TOutput>,\n options?: SkillOptions\n ) {\n const fullName = this.prefix ? `${sanitize(this.prefix)}_${name}` : name;\n this.skills.push({ name: fullName, handler, options });\n return this;\n }\n}\n\nfunction sanitize(value: string) {\n return value.replace(/[^0-9a-zA-Z]+/g, '_').replace(/_+/g, '_').replace(/^_+|_+$/g, '');\n}\n"]}
1
+ {"version":3,"sources":["../src/agent/ReasonerRegistry.ts","../src/agent/SkillRegistry.ts","../src/context/ExecutionContext.ts","../src/context/ReasonerContext.ts","../src/context/SkillContext.ts","../src/ai/RateLimiter.ts","../src/ai/AIClient.ts","../src/client/AgentFieldClient.ts","../src/memory/MemoryClient.ts","../src/memory/MemoryEventClient.ts","../src/memory/MemoryInterface.ts","../src/did/DidClient.ts","../src/did/DidInterface.ts","../src/utils/pattern.ts","../src/workflow/WorkflowReporter.ts","../src/mcp/MCPClient.ts","../src/mcp/MCPClientRegistry.ts","../src/mcp/MCPToolRegistrar.ts","../src/agent/Agent.ts","../src/router/AgentRouter.ts"],"names":["parsed","call","response","axios","res","tools","metadata"],"mappings":"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","file":"index.js","sourcesContent":["import type { AgentRouter } from '../router/AgentRouter.js';\nimport type { ReasonerDefinition, ReasonerHandler, ReasonerOptions } from '../types/reasoner.js';\n\nexport class ReasonerRegistry {\n private readonly reasoners = new Map<string, ReasonerDefinition>();\n\n register<TInput = any, TOutput = any>(\n name: string,\n handler: ReasonerHandler<TInput, TOutput>,\n options?: ReasonerOptions\n ) {\n this.reasoners.set(name, { name, handler, options });\n }\n\n includeRouter(router: AgentRouter) {\n router.reasoners.forEach((reasoner) => {\n this.reasoners.set(reasoner.name, reasoner);\n });\n }\n\n get(name: string) {\n return this.reasoners.get(name);\n }\n\n all() {\n return Array.from(this.reasoners.values());\n }\n}\n","import type { AgentRouter } from '../router/AgentRouter.js';\nimport type { SkillDefinition, SkillHandler, SkillOptions } from '../types/skill.js';\n\nexport class SkillRegistry {\n private readonly skills = new Map<string, SkillDefinition>();\n\n register<TInput = any, TOutput = any>(\n name: string,\n handler: SkillHandler<TInput, TOutput>,\n options?: SkillOptions\n ) {\n this.skills.set(name, { name, handler, options });\n }\n\n includeRouter(router: AgentRouter) {\n router.skills.forEach((skill) => {\n this.skills.set(skill.name, skill);\n });\n }\n\n get(name: string) {\n return this.skills.get(name);\n }\n\n all() {\n return Array.from(this.skills.values());\n }\n}\n","import { AsyncLocalStorage } from 'node:async_hooks';\nimport type express from 'express';\nimport type { Agent } from '../agent/Agent.js';\n\nexport interface ExecutionMetadata {\n executionId: string;\n runId?: string;\n sessionId?: string;\n actorId?: string;\n workflowId?: string;\n parentExecutionId?: string;\n callerDid?: string;\n targetDid?: string;\n agentNodeDid?: string;\n}\n\nconst store = new AsyncLocalStorage<ExecutionContext>();\n\nexport class ExecutionContext {\n readonly input: any;\n readonly metadata: ExecutionMetadata;\n readonly req: express.Request;\n readonly res: express.Response;\n readonly agent: Agent;\n\n constructor(params: {\n input: any;\n metadata: ExecutionMetadata;\n req: express.Request;\n res: express.Response;\n agent: Agent;\n }) {\n this.input = params.input;\n this.metadata = params.metadata;\n this.req = params.req;\n this.res = params.res;\n this.agent = params.agent;\n }\n\n static run<T>(ctx: ExecutionContext, fn: () => T): T {\n return store.run(ctx, fn);\n }\n\n static getCurrent(): ExecutionContext | undefined {\n return store.getStore();\n }\n}\n","import type express from 'express';\nimport { ExecutionContext } from './ExecutionContext.js';\nimport type { AIClient, AIRequestOptions, AIStream, ZodSchema } from '../ai/AIClient.js';\nimport type { MemoryInterface } from '../memory/MemoryInterface.js';\nimport type { Agent } from '../agent/Agent.js';\nimport type { WorkflowReporter } from '../workflow/WorkflowReporter.js';\nimport type { DiscoveryOptions } from '../types/agent.js';\nimport type { DidInterface } from '../did/DidInterface.js';\n\nexport class ReasonerContext<TInput = any> {\n readonly input: TInput;\n readonly executionId: string;\n readonly runId?: string;\n readonly sessionId?: string;\n readonly actorId?: string;\n readonly workflowId?: string;\n readonly parentExecutionId?: string;\n readonly callerDid?: string;\n readonly targetDid?: string;\n readonly agentNodeDid?: string;\n readonly req: express.Request;\n readonly res: express.Response;\n readonly agent: Agent;\n readonly aiClient: AIClient;\n readonly memory: MemoryInterface;\n readonly workflow: WorkflowReporter;\n readonly did: DidInterface;\n\n constructor(params: {\n input: TInput;\n executionId: string;\n runId?: string;\n sessionId?: string;\n actorId?: string;\n workflowId?: string;\n parentExecutionId?: string;\n callerDid?: string;\n targetDid?: string;\n agentNodeDid?: string;\n req: express.Request;\n res: express.Response;\n agent: Agent;\n aiClient: AIClient;\n memory: MemoryInterface;\n workflow: WorkflowReporter;\n did: DidInterface;\n }) {\n this.input = params.input;\n this.executionId = params.executionId;\n this.runId = params.runId;\n this.sessionId = params.sessionId;\n this.actorId = params.actorId;\n this.workflowId = params.workflowId;\n this.parentExecutionId = params.parentExecutionId;\n this.callerDid = params.callerDid;\n this.targetDid = params.targetDid;\n this.agentNodeDid = params.agentNodeDid;\n this.req = params.req;\n this.res = params.res;\n this.agent = params.agent;\n this.aiClient = params.aiClient;\n this.memory = params.memory;\n this.workflow = params.workflow;\n this.did = params.did;\n }\n\n ai<T>(prompt: string, options: AIRequestOptions & { schema: ZodSchema<T> }): Promise<T>;\n ai(prompt: string, options?: AIRequestOptions): Promise<string>;\n ai(prompt: string, options?: AIRequestOptions): Promise<unknown> {\n return this.aiClient.generate(prompt, options);\n }\n\n aiStream(prompt: string, options?: AIRequestOptions): Promise<AIStream> {\n return this.aiClient.stream(prompt, options);\n }\n\n call(target: string, input: any) {\n return this.agent.call(target, input);\n }\n\n discover(options?: DiscoveryOptions) {\n return this.agent.discover(options);\n }\n}\n\nexport function getCurrentContext<TInput = any>(): ReasonerContext<TInput> | undefined {\n const execution = ExecutionContext.getCurrent();\n if (!execution) return undefined;\n const { metadata, input, agent, req, res } = execution;\n return new ReasonerContext<TInput>({\n input,\n executionId: metadata.executionId,\n runId: metadata.runId,\n sessionId: metadata.sessionId,\n actorId: metadata.actorId,\n workflowId: metadata.workflowId,\n parentExecutionId: metadata.parentExecutionId,\n callerDid: metadata.callerDid,\n targetDid: metadata.targetDid,\n agentNodeDid: metadata.agentNodeDid,\n req,\n res,\n agent,\n aiClient: agent.getAIClient(),\n memory: agent.getMemoryInterface(metadata),\n workflow: agent.getWorkflowReporter(metadata),\n did: agent.getDidInterface(metadata, input)\n });\n}\n","import type express from 'express';\nimport { ExecutionContext } from './ExecutionContext.js';\nimport type { Agent } from '../agent/Agent.js';\nimport type { MemoryInterface } from '../memory/MemoryInterface.js';\nimport type { WorkflowReporter } from '../workflow/WorkflowReporter.js';\nimport type { DiscoveryOptions } from '../types/agent.js';\nimport type { DidInterface } from '../did/DidInterface.js';\n\nexport class SkillContext<TInput = any> {\n readonly input: TInput;\n readonly executionId: string;\n readonly sessionId?: string;\n readonly workflowId?: string;\n readonly callerDid?: string;\n readonly agentNodeDid?: string;\n readonly req: express.Request;\n readonly res: express.Response;\n readonly agent: Agent;\n readonly memory: MemoryInterface;\n readonly workflow: WorkflowReporter;\n readonly did: DidInterface;\n\n constructor(params: {\n input: TInput;\n executionId: string;\n sessionId?: string;\n workflowId?: string;\n callerDid?: string;\n agentNodeDid?: string;\n req: express.Request;\n res: express.Response;\n agent: Agent;\n memory: MemoryInterface;\n workflow: WorkflowReporter;\n did: DidInterface;\n }) {\n this.input = params.input;\n this.executionId = params.executionId;\n this.sessionId = params.sessionId;\n this.workflowId = params.workflowId;\n this.callerDid = params.callerDid;\n this.agentNodeDid = params.agentNodeDid;\n this.req = params.req;\n this.res = params.res;\n this.agent = params.agent;\n this.memory = params.memory;\n this.workflow = params.workflow;\n this.did = params.did;\n }\n\n discover(options?: DiscoveryOptions) {\n return this.agent.discover(options);\n }\n}\n\nexport function getCurrentSkillContext<TInput = any>(): SkillContext<TInput> | undefined {\n const execution = ExecutionContext.getCurrent();\n if (!execution) return undefined;\n const { metadata, input, agent, req, res } = execution;\n return new SkillContext<TInput>({\n input,\n executionId: metadata.executionId,\n sessionId: metadata.sessionId,\n workflowId: metadata.workflowId,\n callerDid: metadata.callerDid,\n agentNodeDid: metadata.agentNodeDid,\n req,\n res,\n agent,\n memory: agent.getMemoryInterface(metadata),\n workflow: agent.getWorkflowReporter(metadata),\n did: agent.getDidInterface(metadata, input)\n });\n}\n","import crypto from 'node:crypto';\nimport os from 'node:os';\n\nexport class RateLimitError extends Error {\n retryAfter?: number;\n\n constructor(message: string, retryAfter?: number) {\n super(message);\n this.name = 'RateLimitError';\n this.retryAfter = retryAfter;\n }\n}\n\nexport interface RateLimiterOptions {\n maxRetries?: number;\n baseDelay?: number;\n maxDelay?: number;\n jitterFactor?: number;\n circuitBreakerThreshold?: number;\n circuitBreakerTimeout?: number;\n}\n\n/**\n * Stateless rate limiter with adaptive exponential backoff.\n *\n * Designed to work across many containers without coordination.\n * Uses container-specific jitter to naturally distribute load.\n */\nexport class StatelessRateLimiter {\n readonly maxRetries: number;\n readonly baseDelay: number;\n readonly maxDelay: number;\n readonly jitterFactor: number;\n readonly circuitBreakerThreshold: number;\n readonly circuitBreakerTimeout: number;\n\n protected _containerSeed: number;\n protected _consecutiveFailures = 0;\n protected _circuitOpenTime?: number;\n\n constructor(options: RateLimiterOptions = {}) {\n this.maxRetries = options.maxRetries ?? 20;\n this.baseDelay = options.baseDelay ?? 1.0;\n this.maxDelay = options.maxDelay ?? 300.0;\n this.jitterFactor = options.jitterFactor ?? 0.25;\n this.circuitBreakerThreshold = options.circuitBreakerThreshold ?? 10;\n this.circuitBreakerTimeout = options.circuitBreakerTimeout ?? 300;\n\n this._containerSeed = this._getContainerSeed();\n }\n\n protected _getContainerSeed(): number {\n const identifier = `${os.hostname()}-${process.pid}`;\n const hash = crypto.createHash('md5').update(identifier).digest('hex');\n return parseInt(hash.slice(0, 8), 16);\n }\n\n protected _isRateLimitError(error: unknown): boolean {\n if (!error) return false;\n const err = error as any;\n\n const className = err?.constructor?.name;\n if (className && className.includes('RateLimitError')) {\n return true;\n }\n\n const response = err?.response;\n const statusCandidates = [\n err?.status,\n err?.statusCode,\n response?.status,\n response?.statusCode,\n response?.status_code\n ];\n if (statusCandidates.some((code: any) => code === 429 || code === 503)) {\n return true;\n }\n\n const message = String(err?.message ?? err ?? '').toLowerCase();\n const rateLimitKeywords = [\n 'rate limit',\n 'rate-limit',\n 'rate_limit',\n 'too many requests',\n 'quota exceeded',\n 'temporarily rate-limited',\n 'rate limited',\n 'requests per',\n 'rpm exceeded',\n 'tpm exceeded',\n 'usage limit',\n 'throttled',\n 'throttling'\n ];\n\n return rateLimitKeywords.some((keyword) => message.includes(keyword));\n }\n\n protected _extractRetryAfter(error: unknown): number | undefined {\n if (!error) return undefined;\n const err = error as any;\n\n const headers = err?.response?.headers ?? err?.response?.Headers ?? err?.response?.header;\n if (headers && typeof headers === 'object') {\n const retryAfterKey = Object.keys(headers).find((k) => k.toLowerCase() === 'retry-after');\n if (retryAfterKey) {\n const value = Array.isArray(headers[retryAfterKey]) ? headers[retryAfterKey][0] : headers[retryAfterKey];\n const parsed = parseFloat(value);\n if (!Number.isNaN(parsed)) {\n return parsed;\n }\n }\n }\n\n const retryAfter = err?.retryAfter ?? err?.retry_after;\n const parsed = parseFloat(retryAfter);\n if (!Number.isNaN(parsed)) {\n return parsed;\n }\n\n return undefined;\n }\n\n protected _createJitterRng(seed: number): () => number {\n let x = seed >>> 0;\n return () => {\n x = (1664525 * x + 1013904223) % 4294967296;\n return x / 4294967296;\n };\n }\n\n protected _calculateBackoffDelay(attempt: number, retryAfter?: number): number {\n let baseDelay: number;\n if (retryAfter && retryAfter <= this.maxDelay) {\n baseDelay = retryAfter;\n } else {\n baseDelay = Math.min(this.baseDelay * 2 ** attempt, this.maxDelay);\n }\n\n const jitterRange = baseDelay * this.jitterFactor;\n const rng = this._createJitterRng(this._containerSeed + attempt);\n const jitter = (rng() * 2 - 1) * jitterRange;\n\n const delay = Math.max(0.1, baseDelay + jitter);\n return delay;\n }\n\n protected _checkCircuitBreaker(): boolean {\n if (this._circuitOpenTime === undefined) {\n return false;\n }\n\n if (this._now() - this._circuitOpenTime > this.circuitBreakerTimeout) {\n this._circuitOpenTime = undefined;\n this._consecutiveFailures = 0;\n return false;\n }\n\n return true;\n }\n\n protected _updateCircuitBreaker(success: boolean) {\n if (success) {\n this._consecutiveFailures = 0;\n this._circuitOpenTime = undefined;\n return;\n }\n\n this._consecutiveFailures += 1;\n if (this._consecutiveFailures >= this.circuitBreakerThreshold && this._circuitOpenTime === undefined) {\n this._circuitOpenTime = this._now();\n }\n }\n\n protected async _sleep(delaySeconds: number): Promise<void> {\n await new Promise((resolve) => setTimeout(resolve, delaySeconds * 1000));\n }\n\n protected _now(): number {\n return Date.now() / 1000;\n }\n\n async executeWithRetry<T>(fn: () => Promise<T>): Promise<T> {\n if (this._checkCircuitBreaker()) {\n throw new RateLimitError(\n `Circuit breaker is open. Too many consecutive rate limit failures. Will retry after ${this.circuitBreakerTimeout} seconds.`\n );\n }\n\n let lastError: unknown;\n\n for (let attempt = 0; attempt <= this.maxRetries; attempt += 1) {\n try {\n const result = await fn();\n this._updateCircuitBreaker(true);\n return result;\n } catch (error) {\n lastError = error;\n\n if (!this._isRateLimitError(error)) {\n throw error;\n }\n\n this._updateCircuitBreaker(false);\n\n if (attempt >= this.maxRetries) {\n break;\n }\n\n const retryAfter = this._extractRetryAfter(error);\n const delay = this._calculateBackoffDelay(attempt, retryAfter);\n await this._sleep(delay);\n }\n }\n\n throw new RateLimitError(\n `Rate limit retries exhausted after ${this.maxRetries} attempts. Last error: ${String(lastError)}`,\n this._extractRetryAfter(lastError)\n );\n }\n}\n","import {\n embed,\n embedMany,\n generateObject,\n generateText,\n streamText\n} from 'ai';\nimport { createOpenAI } from '@ai-sdk/openai';\nimport { createAnthropic } from '@ai-sdk/anthropic';\nimport { createGoogleGenerativeAI } from '@ai-sdk/google';\nimport { createMistral } from '@ai-sdk/mistral';\nimport { createGroq } from '@ai-sdk/groq';\nimport { createXai } from '@ai-sdk/xai';\nimport { createDeepSeek } from '@ai-sdk/deepseek';\nimport { createCohere } from '@ai-sdk/cohere';\nimport type { z } from 'zod';\nimport type { AIConfig } from '../types/agent.js';\nimport { StatelessRateLimiter } from './RateLimiter.js';\n\nexport type ZodSchema<T> = z.Schema<T, z.ZodTypeDef, any>;\n\n/**\n * Attempts to repair malformed JSON text from model responses.\n * Handles common issues like markdown code blocks, trailing commas, etc.\n */\nfunction repairJsonText(text: string): string | null {\n let cleaned = text.trim();\n\n // Remove markdown code blocks (```json ... ``` or ``` ... ```)\n const codeBlockMatch = cleaned.match(/```(?:json)?\\s*([\\s\\S]*?)```/);\n if (codeBlockMatch) {\n cleaned = codeBlockMatch[1].trim();\n }\n\n // Try to extract JSON object/array if there's extra text\n const jsonMatch = cleaned.match(/(\\{[\\s\\S]*\\}|\\[[\\s\\S]*\\])/);\n if (jsonMatch) {\n cleaned = jsonMatch[1];\n }\n\n // Remove trailing commas before } or ]\n cleaned = cleaned.replace(/,(\\s*[}\\]])/g, '$1');\n\n // Try to parse to verify it's valid\n try {\n JSON.parse(cleaned);\n return cleaned;\n } catch {\n return null;\n }\n}\n\nexport interface AIRequestOptions {\n system?: string;\n schema?: ZodSchema<any>;\n model?: string;\n temperature?: number;\n maxTokens?: number;\n provider?: AIConfig['provider'];\n /**\n * Mode for structured output generation.\n * - 'auto': Let the provider choose (default in ai-sdk, uses tool calling)\n * - 'json': Use JSON mode (more compatible across providers/models)\n * - 'tool': Force tool calling mode\n */\n mode?: 'auto' | 'json' | 'tool';\n}\n\nexport type AIStream = AsyncIterable<string>;\n\nexport interface AIEmbeddingOptions {\n model?: string;\n provider?: AIConfig['provider'];\n}\n\nexport class AIClient {\n private readonly config: AIConfig;\n private rateLimiter?: StatelessRateLimiter;\n\n constructor(config: AIConfig = {}) {\n this.config = {\n enableRateLimitRetry: true,\n rateLimitMaxRetries: 20,\n rateLimitBaseDelay: 1.0,\n rateLimitMaxDelay: 300.0,\n rateLimitJitterFactor: 0.25,\n rateLimitCircuitBreakerThreshold: 10,\n rateLimitCircuitBreakerTimeout: 300,\n ...config\n };\n }\n\n async generate<T>(prompt: string, options: AIRequestOptions & { schema: ZodSchema<T> }): Promise<T>;\n async generate(prompt: string, options?: AIRequestOptions): Promise<string>;\n async generate<T = any>(prompt: string, options: AIRequestOptions = {}): Promise<T | string> {\n const model = this.buildModel(options);\n\n if (options.schema) {\n const schema = options.schema;\n // Default to 'json' mode for better compatibility across providers\n // 'auto' mode uses tool calling which some models/providers don't support well\n const mode = options.mode ?? 'json';\n const call = async () =>\n generateObject({\n model: model,\n prompt,\n output: 'object',\n mode,\n system: options.system,\n temperature: options.temperature ?? this.config.temperature,\n maxOutputTokens: options.maxTokens ?? this.config.maxTokens,\n schema,\n experimental_repairText: async ({ text }) => repairJsonText(text)\n });\n\n const response = await this.withRateLimitRetry(call);\n return response.object as T;\n }\n\n const call = async () =>\n generateText({\n model: model,\n prompt,\n system: options.system,\n temperature: options.temperature ?? this.config.temperature,\n maxOutputTokens: options.maxTokens ?? this.config.maxTokens\n });\n\n const response = await this.withRateLimitRetry(call);\n return (response).text as string;\n }\n\n async stream(prompt: string, options: AIRequestOptions = {}): Promise<AIStream> {\n const model = this.buildModel(options);\n const streamResult = streamText({\n model: model,\n prompt,\n system: options.system,\n temperature: options.temperature ?? this.config.temperature,\n maxOutputTokens: options.maxTokens ?? this.config.maxTokens\n });\n\n return streamResult.textStream;\n }\n\n async embed(value: string, options: AIEmbeddingOptions = {}) {\n const model = this.buildEmbeddingModel(options);\n const result = await this.withRateLimitRetry(() =>\n embed({\n model: model,\n value\n })\n );\n return (result).embedding as number[];\n }\n\n async embedMany(values: string[], options: AIEmbeddingOptions = {}) {\n const model = this.buildEmbeddingModel(options);\n const result = await this.withRateLimitRetry(() =>\n embedMany({\n model: model,\n values\n })\n );\n return (result).embeddings as number[][];\n }\n\n private buildModel(options: AIRequestOptions) {\n const provider = options.provider ?? this.config.provider ?? 'openai';\n const modelName = options.model ?? this.config.model ?? 'gpt-4o';\n\n switch (provider) {\n case 'anthropic': {\n const anthropic = createAnthropic({\n apiKey: this.config.apiKey,\n baseURL: this.config.baseUrl\n });\n return anthropic(modelName);\n }\n\n case 'google': {\n const google = createGoogleGenerativeAI({\n apiKey: this.config.apiKey,\n baseURL: this.config.baseUrl\n });\n return google(modelName);\n }\n\n case 'mistral': {\n const mistral = createMistral({\n apiKey: this.config.apiKey,\n baseURL: this.config.baseUrl\n });\n return mistral(modelName);\n }\n\n case 'groq': {\n const groq = createGroq({\n apiKey: this.config.apiKey,\n baseURL: this.config.baseUrl\n });\n return groq(modelName);\n }\n\n case 'xai': {\n const xai = createXai({\n apiKey: this.config.apiKey,\n baseURL: this.config.baseUrl\n });\n return xai(modelName);\n }\n\n case 'deepseek': {\n const deepseek = createDeepSeek({\n apiKey: this.config.apiKey,\n baseURL: this.config.baseUrl\n });\n return deepseek(modelName);\n }\n\n case 'cohere': {\n const cohere = createCohere({\n apiKey: this.config.apiKey,\n baseURL: this.config.baseUrl\n });\n return cohere(modelName);\n }\n\n case 'openrouter': {\n // OpenRouter is OpenAI-compatible\n const openrouter = createOpenAI({\n apiKey: this.config.apiKey,\n baseURL: this.config.baseUrl ?? 'https://openrouter.ai/api/v1'\n });\n return openrouter(modelName);\n }\n\n case 'ollama': {\n // Ollama is OpenAI-compatible\n const ollama = createOpenAI({\n apiKey: this.config.apiKey ?? 'ollama', // Ollama doesn't need real key\n baseURL: this.config.baseUrl ?? 'http://localhost:11434/v1'\n });\n return ollama(modelName);\n }\n\n case 'openai':\n default: {\n const openai = createOpenAI({\n apiKey: this.config.apiKey,\n baseURL: this.config.baseUrl\n });\n return openai(modelName);\n }\n }\n }\n\n private buildEmbeddingModel(options: AIEmbeddingOptions) {\n const provider = options.provider ?? this.config.provider ?? 'openai';\n const modelName = options.model ?? this.config.embeddingModel ?? 'text-embedding-3-small';\n\n // Providers without embedding support\n const noEmbeddingProviders = ['anthropic', 'xai', 'deepseek', 'groq'];\n if (noEmbeddingProviders.includes(provider)) {\n throw new Error(`Embedding generation is not supported for ${provider} provider`);\n }\n\n switch (provider) {\n case 'google': {\n const google = createGoogleGenerativeAI({\n apiKey: this.config.apiKey,\n baseURL: this.config.baseUrl\n });\n return google.textEmbeddingModel(modelName);\n }\n\n case 'mistral': {\n const mistral = createMistral({\n apiKey: this.config.apiKey,\n baseURL: this.config.baseUrl\n });\n return mistral.textEmbeddingModel(modelName);\n }\n\n case 'cohere': {\n const cohere = createCohere({\n apiKey: this.config.apiKey,\n baseURL: this.config.baseUrl\n });\n return cohere.textEmbeddingModel(modelName);\n }\n\n case 'openai':\n case 'openrouter':\n case 'ollama':\n default: {\n const openai = createOpenAI({\n apiKey: this.config.apiKey ?? (provider === 'ollama' ? 'ollama' : undefined),\n baseURL:\n this.config.baseUrl ??\n (provider === 'openrouter'\n ? 'https://openrouter.ai/api/v1'\n : provider === 'ollama'\n ? 'http://localhost:11434/v1'\n : undefined)\n });\n return openai.embedding(modelName);\n }\n }\n }\n\n private getRateLimiter() {\n if (!this.rateLimiter) {\n this.rateLimiter = new StatelessRateLimiter({\n maxRetries: this.config.rateLimitMaxRetries,\n baseDelay: this.config.rateLimitBaseDelay,\n maxDelay: this.config.rateLimitMaxDelay,\n jitterFactor: this.config.rateLimitJitterFactor,\n circuitBreakerThreshold: this.config.rateLimitCircuitBreakerThreshold,\n circuitBreakerTimeout: this.config.rateLimitCircuitBreakerTimeout\n });\n }\n return this.rateLimiter;\n }\n\n private withRateLimitRetry<T>(fn: () => Promise<T>): Promise<T> {\n if (this.config.enableRateLimitRetry === false) {\n return fn();\n }\n return this.getRateLimiter().executeWithRetry(fn);\n }\n}\n","import axios, { AxiosInstance } from 'axios';\nimport type {\n AgentConfig,\n DiscoveryOptions,\n DiscoveryFormat,\n DiscoveryResult,\n DiscoveryResponse,\n CompactDiscoveryResponse,\n HealthStatus\n} from '../types/agent.js';\n\nexport interface ExecutionStatusUpdate {\n status?: string;\n result?: Record<string, any>;\n error?: string;\n durationMs?: number;\n progress?: number;\n}\n\nexport class AgentFieldClient {\n private readonly http: AxiosInstance;\n private readonly config: AgentConfig;\n private readonly defaultHeaders: Record<string, string>;\n\n constructor(config: AgentConfig) {\n const baseURL = (config.agentFieldUrl ?? 'http://localhost:8080').replace(/\\/$/, '');\n this.http = axios.create({ baseURL });\n this.config = config;\n\n const mergedHeaders = { ...(config.defaultHeaders ?? {}) };\n if (config.apiKey) {\n mergedHeaders['X-API-Key'] = config.apiKey;\n }\n this.defaultHeaders = this.sanitizeHeaders(mergedHeaders);\n }\n\n async register(payload: any) {\n await this.http.post('/api/v1/nodes/register', payload, { headers: this.mergeHeaders() });\n }\n\n async heartbeat(status: 'starting' | 'ready' | 'degraded' | 'offline' = 'ready'): Promise<HealthStatus> {\n const nodeId = this.config.nodeId;\n const res = await this.http.post(\n `/api/v1/nodes/${nodeId}/heartbeat`,\n {\n status,\n timestamp: new Date().toISOString()\n },\n { headers: this.mergeHeaders() }\n );\n return res.data as HealthStatus;\n }\n\n async execute<T = any>(\n target: string,\n input: any,\n metadata?: {\n runId?: string;\n workflowId?: string;\n parentExecutionId?: string;\n sessionId?: string;\n actorId?: string;\n callerDid?: string;\n targetDid?: string;\n agentNodeDid?: string;\n agentNodeId?: string;\n }\n ): Promise<T> {\n const headers: Record<string, string> = {};\n if (metadata?.runId) headers['X-Run-ID'] = metadata.runId;\n if (metadata?.workflowId) headers['X-Workflow-ID'] = metadata.workflowId;\n if (metadata?.parentExecutionId) headers['X-Parent-Execution-ID'] = metadata.parentExecutionId;\n if (metadata?.sessionId) headers['X-Session-ID'] = metadata.sessionId;\n if (metadata?.actorId) headers['X-Actor-ID'] = metadata.actorId;\n if (metadata?.callerDid) headers['X-Caller-DID'] = metadata.callerDid;\n if (metadata?.targetDid) headers['X-Target-DID'] = metadata.targetDid;\n if (metadata?.agentNodeDid) headers['X-Agent-Node-DID'] = metadata.agentNodeDid;\n if (metadata?.agentNodeId) headers['X-Agent-Node-ID'] = metadata.agentNodeId;\n\n const res = await this.http.post(\n `/api/v1/execute/${target}`,\n {\n input\n },\n { headers: this.mergeHeaders(headers) }\n );\n return (res.data?.result as T) ?? res.data;\n }\n\n async publishWorkflowEvent(event: {\n executionId: string;\n runId: string;\n workflowId?: string;\n reasonerId: string;\n agentNodeId: string;\n status: 'running' | 'succeeded' | 'failed';\n parentExecutionId?: string;\n parentWorkflowId?: string;\n inputData?: Record<string, any>;\n result?: any;\n error?: string;\n durationMs?: number;\n }) {\n const payload = {\n execution_id: event.executionId,\n workflow_id: event.workflowId ?? event.runId,\n run_id: event.runId,\n reasoner_id: event.reasonerId,\n type: event.reasonerId,\n agent_node_id: event.agentNodeId,\n status: event.status,\n parent_execution_id: event.parentExecutionId,\n parent_workflow_id: event.parentWorkflowId ?? event.workflowId ?? event.runId,\n input_data: event.inputData ?? {},\n result: event.result,\n error: event.error,\n duration_ms: event.durationMs\n };\n\n const request = this.http\n .post('/api/v1/workflow/executions/events', payload, {\n headers: this.mergeHeaders(),\n timeout: this.config.devMode ? 1000 : undefined\n })\n .catch(() => {\n // Best-effort; avoid throwing to keep agent execution resilient\n });\n\n // Fire and forget to avoid blocking local executions in tests/dev mode.\n void request;\n }\n\n async updateExecutionStatus(executionId: string, update: ExecutionStatusUpdate) {\n if (!executionId) {\n throw new Error('executionId is required to update workflow status');\n }\n\n const payload = {\n status: update.status ?? 'running',\n result: update.result,\n error: update.error,\n duration_ms: update.durationMs,\n progress: update.progress !== undefined ? Math.round(update.progress) : undefined\n };\n\n await this.http.post(`/api/v1/executions/${executionId}/status`, payload, { headers: this.mergeHeaders() });\n }\n\n async discoverCapabilities(options: DiscoveryOptions = {}): Promise<DiscoveryResult> {\n const format = (options.format ?? 'json').toLowerCase() as DiscoveryFormat;\n const params: Record<string, string> = { format };\n const dedupe = (values?: string[]) =>\n Array.from(new Set((values ?? []).filter(Boolean))).map((v) => v!);\n\n const combinedAgents = dedupe([\n ...(options.agent ? [options.agent] : []),\n ...(options.nodeId ? [options.nodeId] : []),\n ...(options.agentIds ?? []),\n ...(options.nodeIds ?? [])\n ]);\n\n if (combinedAgents.length === 1) {\n params.agent = combinedAgents[0];\n } else if (combinedAgents.length > 1) {\n params.agent_ids = combinedAgents.join(',');\n }\n\n if (options.reasoner) params.reasoner = options.reasoner;\n if (options.skill) params.skill = options.skill;\n if (options.tags?.length) params.tags = dedupe(options.tags).join(',');\n\n if (options.includeInputSchema !== undefined) {\n params.include_input_schema = String(Boolean(options.includeInputSchema));\n }\n if (options.includeOutputSchema !== undefined) {\n params.include_output_schema = String(Boolean(options.includeOutputSchema));\n }\n if (options.includeDescriptions !== undefined) {\n params.include_descriptions = String(Boolean(options.includeDescriptions));\n }\n if (options.includeExamples !== undefined) {\n params.include_examples = String(Boolean(options.includeExamples));\n }\n if (options.healthStatus) params.health_status = options.healthStatus.toLowerCase();\n if (options.limit !== undefined) params.limit = String(options.limit);\n if (options.offset !== undefined) params.offset = String(options.offset);\n\n const res = await this.http.get('/api/v1/discovery/capabilities', {\n params,\n headers: this.mergeHeaders({\n ...(options.headers ?? {}),\n Accept: format === 'xml' ? 'application/xml' : 'application/json'\n }),\n responseType: format === 'xml' ? 'text' : 'json',\n transformResponse: (data) => data // preserve raw body for xml\n });\n\n const raw = typeof res.data === 'string' ? res.data : JSON.stringify(res.data);\n if (format === 'xml') {\n return { format: 'xml', raw, xml: raw };\n }\n\n const parsed = typeof res.data === 'string' ? JSON.parse(res.data) : res.data;\n if (format === 'compact') {\n return {\n format: 'compact',\n raw,\n compact: this.mapCompactDiscovery(parsed as any)\n };\n }\n\n return {\n format: 'json',\n raw,\n json: this.mapDiscoveryResponse(parsed as any)\n };\n }\n\n private mapDiscoveryResponse(payload: any): DiscoveryResponse {\n return {\n discoveredAt: String(payload?.discovered_at ?? ''),\n totalAgents: Number(payload?.total_agents ?? 0),\n totalReasoners: Number(payload?.total_reasoners ?? 0),\n totalSkills: Number(payload?.total_skills ?? 0),\n pagination: {\n limit: Number(payload?.pagination?.limit ?? 0),\n offset: Number(payload?.pagination?.offset ?? 0),\n hasMore: Boolean(payload?.pagination?.has_more)\n },\n capabilities: (payload?.capabilities ?? []).map((cap: any) => ({\n agentId: cap?.agent_id ?? '',\n baseUrl: cap?.base_url ?? '',\n version: cap?.version ?? '',\n healthStatus: cap?.health_status ?? '',\n deploymentType: cap?.deployment_type,\n lastHeartbeat: cap?.last_heartbeat,\n reasoners: (cap?.reasoners ?? []).map((r: any) => ({\n id: r?.id ?? '',\n description: r?.description,\n tags: r?.tags ?? [],\n inputSchema: r?.input_schema,\n outputSchema: r?.output_schema,\n examples: r?.examples,\n invocationTarget: r?.invocation_target ?? ''\n })),\n skills: (cap?.skills ?? []).map((s: any) => ({\n id: s?.id ?? '',\n description: s?.description,\n tags: s?.tags ?? [],\n inputSchema: s?.input_schema,\n invocationTarget: s?.invocation_target ?? ''\n }))\n }))\n };\n }\n\n private mapCompactDiscovery(payload: any): CompactDiscoveryResponse {\n const toCap = (cap: any) => ({\n id: cap?.id ?? '',\n agentId: cap?.agent_id ?? '',\n target: cap?.target ?? '',\n tags: cap?.tags ?? []\n });\n\n return {\n discoveredAt: String(payload?.discovered_at ?? ''),\n reasoners: (payload?.reasoners ?? []).map(toCap),\n skills: (payload?.skills ?? []).map(toCap)\n };\n }\n\n private sanitizeHeaders(headers: Record<string, any>): Record<string, string> {\n const sanitized: Record<string, string> = {};\n Object.entries(headers).forEach(([key, value]) => {\n if (value === undefined || value === null) return;\n sanitized[key] = typeof value === 'string' ? value : String(value);\n });\n return sanitized;\n }\n\n private mergeHeaders(headers?: Record<string, any>): Record<string, string> {\n return {\n ...this.defaultHeaders,\n ...this.sanitizeHeaders(headers ?? {})\n };\n }\n}\n","import axios, { AxiosInstance, isAxiosError } from 'axios';\nimport type { MemoryScope } from '../types/agent.js';\n\nexport interface MemoryRequestMetadata {\n workflowId?: string;\n sessionId?: string;\n actorId?: string;\n runId?: string;\n executionId?: string;\n parentExecutionId?: string;\n callerDid?: string;\n targetDid?: string;\n agentNodeDid?: string;\n agentNodeId?: string;\n}\n\nexport interface MemoryRequestOptions {\n scope?: MemoryScope;\n scopeId?: string;\n metadata?: MemoryRequestMetadata;\n headers?: Record<string, string | number | boolean | undefined>;\n}\n\nexport interface VectorSearchOptions extends MemoryRequestOptions {\n topK?: number;\n filters?: Record<string, any>;\n}\n\nexport interface VectorSearchResult {\n key: string;\n scope: string;\n scopeId: string;\n score: number;\n metadata?: Record<string, any>;\n}\n\nexport class MemoryClient {\n private readonly http: AxiosInstance;\n private readonly defaultHeaders: Record<string, string>;\n\n constructor(baseUrl: string, defaultHeaders?: Record<string, string | number | boolean | undefined>) {\n this.http = axios.create({\n baseURL: baseUrl.replace(/\\/$/, '')\n });\n this.defaultHeaders = this.sanitizeHeaders(defaultHeaders ?? {});\n }\n\n async set(key: string, data: any, options: MemoryRequestOptions = {}) {\n const payload: any = { key, data };\n if (options.scope) payload.scope = options.scope;\n\n await this.http.post('/api/v1/memory/set', payload, {\n headers: this.buildHeaders(options)\n });\n }\n\n async get<T = any>(key: string, options: MemoryRequestOptions = {}): Promise<T | undefined> {\n try {\n const payload: any = { key };\n if (options.scope) payload.scope = options.scope;\n\n const res = await this.http.post('/api/v1/memory/get', payload, {\n headers: this.buildHeaders(options)\n });\n return res.data?.data as T;\n } catch (err) {\n if (isAxiosError(err) && err.response?.status === 404) {\n return undefined;\n }\n throw err;\n }\n }\n\n async delete(key: string, options: MemoryRequestOptions = {}) {\n const payload: any = { key };\n if (options.scope) payload.scope = options.scope;\n\n await this.http.post('/api/v1/memory/delete', payload, {\n headers: this.buildHeaders(options)\n });\n }\n\n async listKeys(scope: MemoryScope, options: MemoryRequestOptions = {}) {\n const res = await this.http.get('/api/v1/memory/list', {\n params: { scope },\n headers: this.buildHeaders({ ...options, scope })\n });\n return (res.data ?? []).map((item: any) => item?.key).filter(Boolean) as string[];\n }\n\n async exists(key: string, options: MemoryRequestOptions = {}) {\n const value = await this.get(key, options);\n return value !== undefined;\n }\n\n async setVector(key: string, embedding: number[], metadata?: any, options: MemoryRequestOptions = {}) {\n const payload: any = {\n key,\n embedding\n };\n if (metadata !== undefined) payload.metadata = metadata;\n if (options.scope) payload.scope = options.scope;\n\n await this.http.post('/api/v1/memory/vector/set', payload, {\n headers: this.buildHeaders(options)\n });\n }\n\n async deleteVector(key: string, options: MemoryRequestOptions = {}) {\n const payload: any = { key };\n if (options.scope) payload.scope = options.scope;\n\n await this.http.post('/api/v1/memory/vector/delete', payload, {\n headers: this.buildHeaders(options)\n });\n }\n\n async searchVector(queryEmbedding: number[], options: VectorSearchOptions = {}): Promise<VectorSearchResult[]> {\n const payload: any = {\n query_embedding: queryEmbedding,\n top_k: options.topK ?? 10\n };\n if (options.filters) payload.filters = options.filters;\n if (options.scope) payload.scope = options.scope;\n\n const res = await this.http.post('/api/v1/memory/vector/search', payload, {\n headers: this.buildHeaders(options)\n });\n return res.data ?? [];\n }\n\n private buildHeaders(options: MemoryRequestOptions = {}) {\n const { scope, scopeId, metadata } = options;\n const headers: Record<string, string> = { ...this.defaultHeaders };\n\n const workflowId = metadata?.workflowId ?? metadata?.runId;\n if (workflowId) headers['X-Workflow-ID'] = workflowId;\n if (metadata?.sessionId) headers['X-Session-ID'] = metadata.sessionId;\n if (metadata?.actorId) headers['X-Actor-ID'] = metadata.actorId;\n if (metadata?.runId) headers['X-Run-ID'] = metadata.runId;\n if (metadata?.executionId) headers['X-Execution-ID'] = metadata.executionId;\n if (metadata?.parentExecutionId) headers['X-Parent-Execution-ID'] = metadata.parentExecutionId;\n if (metadata?.callerDid) headers['X-Caller-DID'] = metadata.callerDid;\n if (metadata?.targetDid) headers['X-Target-DID'] = metadata.targetDid;\n if (metadata?.agentNodeDid) headers['X-Agent-Node-DID'] = metadata.agentNodeDid;\n if (metadata?.agentNodeId) headers['X-Agent-Node-ID'] = metadata.agentNodeId;\n\n const headerName = this.scopeToHeader(scope);\n const resolvedScopeId = this.resolveScopeId(scope, scopeId, metadata);\n if (headerName && resolvedScopeId) {\n headers[headerName] = resolvedScopeId;\n }\n\n return { ...headers, ...this.sanitizeHeaders(options.headers ?? {}) };\n }\n\n private scopeToHeader(scope?: MemoryScope) {\n switch (scope) {\n case 'workflow':\n return 'X-Workflow-ID';\n case 'session':\n return 'X-Session-ID';\n case 'actor':\n return 'X-Actor-ID';\n default:\n return undefined;\n }\n }\n\n private resolveScopeId(scope?: MemoryScope, scopeId?: string, metadata?: MemoryRequestMetadata) {\n if (scopeId) return scopeId;\n switch (scope) {\n case 'workflow':\n return metadata?.workflowId ?? metadata?.runId;\n case 'session':\n return metadata?.sessionId;\n case 'actor':\n return metadata?.actorId;\n case 'global':\n return 'global';\n default:\n return undefined;\n }\n }\n\n private sanitizeHeaders(headers: Record<string, any>): Record<string, string> {\n const sanitized: Record<string, string> = {};\n Object.entries(headers).forEach(([key, value]) => {\n if (value === undefined || value === null) return;\n sanitized[key] = typeof value === 'string' ? value : String(value);\n });\n return sanitized;\n }\n}\n","import WebSocket from 'ws';\nimport type { MemoryChangeEvent } from './MemoryInterface.js';\n\nexport type MemoryEventHandler = (event: MemoryChangeEvent) => Promise<void> | void;\n\nexport class MemoryEventClient {\n private readonly url: string;\n private ws?: WebSocket;\n private handlers: MemoryEventHandler[] = [];\n private reconnectDelay = 1000;\n private closed = false;\n private readonly headers: Record<string, string>;\n\n constructor(baseUrl: string, headers?: Record<string, string | number | boolean | undefined>) {\n this.url = `${baseUrl.replace(/^http/, 'ws')}/api/v1/memory/events/ws`;\n this.headers = this.buildForwardHeaders(headers ?? {});\n }\n\n start() {\n if (this.ws) return;\n this.connect();\n }\n\n onEvent(handler: MemoryEventHandler) {\n this.handlers.push(handler);\n }\n\n stop() {\n this.closed = true;\n this.ws?.close();\n }\n\n private connect() {\n this.ws = new WebSocket(this.url, { headers: this.headers });\n\n this.ws.on('open', () => {\n this.reconnectDelay = 1000;\n });\n\n this.ws.on('message', async (raw) => {\n try {\n const parsed = JSON.parse(raw.toString()) as MemoryChangeEvent;\n for (const handler of this.handlers) {\n await handler(parsed);\n }\n } catch (err) {\n // swallow parsing errors to keep connection alive\n console.error('Failed to handle memory event', err);\n }\n });\n\n this.ws.on('close', () => this.scheduleReconnect());\n this.ws.on('error', () => this.scheduleReconnect());\n }\n\n private scheduleReconnect() {\n if (this.closed) return;\n setTimeout(() => {\n this.reconnectDelay = Math.min(this.reconnectDelay * 2, 30000);\n this.connect();\n }, this.reconnectDelay);\n }\n\n private buildForwardHeaders(headers: Record<string, any>): Record<string, string> {\n const allowed = new Set(['authorization', 'cookie']);\n const sanitized: Record<string, string> = {};\n Object.entries(headers).forEach(([key, value]) => {\n if (value === undefined || value === null) return;\n const lower = key.toLowerCase();\n if (lower.startsWith('x-') || allowed.has(lower)) {\n sanitized[key] = typeof value === 'string' ? value : String(value);\n }\n });\n return sanitized;\n }\n}\n","import type { MemoryScope } from '../types/agent.js';\nimport type { MemoryClient, MemoryRequestMetadata, VectorSearchOptions } from './MemoryClient.js';\nimport type { MemoryEventClient } from './MemoryEventClient.js';\nimport type { AIClient, AIEmbeddingOptions } from '../ai/AIClient.js';\n\nexport interface MemoryChangeEvent {\n key: string;\n data: any;\n scope: MemoryScope;\n scopeId: string;\n timestamp: string | Date;\n agentId: string;\n}\n\nexport type MemoryWatchHandler = (event: MemoryChangeEvent) => Promise<void> | void;\n\nexport class MemoryInterface {\n private readonly client: MemoryClient;\n private readonly eventClient?: MemoryEventClient;\n private readonly aiClient?: AIClient;\n private readonly defaultScope: MemoryScope;\n private readonly defaultScopeId?: string;\n private readonly metadata?: MemoryRequestMetadata;\n\n constructor(params: {\n client: MemoryClient;\n eventClient?: MemoryEventClient;\n aiClient?: AIClient;\n defaultScope?: MemoryScope;\n defaultScopeId?: string;\n metadata?: MemoryRequestMetadata;\n }) {\n this.client = params.client;\n this.eventClient = params.eventClient;\n this.aiClient = params.aiClient;\n this.defaultScope = params.defaultScope ?? 'workflow';\n this.defaultScopeId = params.defaultScopeId;\n this.metadata = params.metadata;\n }\n\n async set(key: string, data: any, scope: MemoryScope = this.defaultScope, scopeId = this.defaultScopeId) {\n await this.client.set(key, data, {\n scope,\n scopeId,\n metadata: this.metadata\n });\n }\n\n get<T = any>(key: string, scope: MemoryScope = this.defaultScope, scopeId = this.defaultScopeId) {\n // If caller uses defaults, perform hierarchical fallback lookup; otherwise fetch the explicit scope only.\n if (scope === this.defaultScope && scopeId === this.defaultScopeId) {\n return this.getWithFallback<T>(key);\n }\n\n return this.client.get<T>(key, {\n scope,\n scopeId,\n metadata: this.metadata\n });\n }\n\n async getWithFallback<T = any>(key: string) {\n for (const candidate of this.getScopeOrder()) {\n const value = await this.client.get<T>(key, {\n scope: candidate.scope,\n scopeId: candidate.scopeId,\n metadata: this.metadata\n });\n if (value !== undefined) return value;\n }\n return undefined;\n }\n\n async setVector(\n key: string,\n embedding: number[],\n metadata?: any,\n scope: MemoryScope = this.defaultScope,\n scopeId = this.defaultScopeId\n ) {\n await this.client.setVector(key, embedding, metadata, {\n scope,\n scopeId,\n metadata: this.metadata\n });\n }\n\n async deleteVector(key: string, scope: MemoryScope = this.defaultScope, scopeId = this.defaultScopeId) {\n await this.client.deleteVector(key, {\n scope,\n scopeId,\n metadata: this.metadata\n });\n }\n\n searchVector(queryEmbedding: number[], options: Omit<VectorSearchOptions, 'metadata'> = {}) {\n return this.client.searchVector(queryEmbedding, {\n ...options,\n metadata: this.metadata\n });\n }\n\n delete(key: string, scope: MemoryScope = this.defaultScope, scopeId = this.defaultScopeId) {\n return this.client.delete(key, {\n scope,\n scopeId,\n metadata: this.metadata\n });\n }\n\n exists(key: string, scope: MemoryScope = this.defaultScope, scopeId = this.defaultScopeId) {\n return this.client.exists(key, {\n scope,\n scopeId,\n metadata: this.metadata\n });\n }\n\n listKeys(scope: MemoryScope = this.defaultScope, scopeId = this.defaultScopeId) {\n return this.client.listKeys(scope, {\n scope,\n scopeId,\n metadata: this.metadata\n });\n }\n\n async embedText(text: string, options?: AIEmbeddingOptions) {\n if (!this.aiClient) {\n throw new Error('AI client not configured for embeddings');\n }\n return this.aiClient.embed(text, options);\n }\n\n async embedTexts(texts: string[], options?: AIEmbeddingOptions) {\n if (!this.aiClient) {\n throw new Error('AI client not configured for embeddings');\n }\n return this.aiClient.embedMany(texts, options);\n }\n\n async embedAndSet(\n key: string,\n text: string,\n metadata?: any,\n scope: MemoryScope = this.defaultScope,\n scopeId = this.defaultScopeId,\n embeddingOptions?: AIEmbeddingOptions\n ) {\n const embedding = await this.embedText(text, embeddingOptions);\n await this.setVector(key, embedding, metadata, scope, scopeId);\n return embedding;\n }\n\n async deleteVectors(keys: string[], scope: MemoryScope = this.defaultScope, scopeId = this.defaultScopeId) {\n for (const key of keys) {\n await this.deleteVector(key, scope, scopeId);\n }\n }\n\n workflow(scopeId: string) {\n return this.cloneWithScope('workflow', scopeId);\n }\n\n session(scopeId: string) {\n return this.cloneWithScope('session', scopeId);\n }\n\n actor(scopeId: string) {\n return this.cloneWithScope('actor', scopeId);\n }\n\n get globalScope() {\n return this.cloneWithScope('global', 'global');\n }\n\n onEvent(handler: MemoryWatchHandler) {\n this.eventClient?.onEvent(handler);\n }\n\n private cloneWithScope(scope: MemoryScope, scopeId?: string) {\n return new MemoryInterface({\n client: this.client,\n eventClient: this.eventClient,\n aiClient: this.aiClient,\n defaultScope: scope,\n defaultScopeId: scopeId ?? this.resolveScopeId(scope, this.metadata),\n metadata: this.metadata\n });\n }\n\n private getScopeOrder(): Array<{ scope: MemoryScope; scopeId?: string }> {\n const metadata = this.metadata ?? {};\n const order: Array<{ scope: MemoryScope; scopeId?: string }> = [];\n\n const pushUnique = (scope: MemoryScope, scopeId?: string) => {\n const key = `${scope}:${scopeId ?? ''}`;\n if (!order.some((c) => `${c.scope}:${c.scopeId ?? ''}` === key)) {\n order.push({ scope, scopeId });\n }\n };\n\n pushUnique(this.defaultScope, this.defaultScopeId ?? this.resolveScopeId(this.defaultScope, metadata));\n\n const defaultSequence: MemoryScope[] = ['workflow', 'session', 'actor', 'global'];\n defaultSequence.forEach((scope) => {\n pushUnique(scope, this.resolveScopeId(scope, metadata));\n });\n\n return order;\n }\n\n private resolveScopeId(scope: MemoryScope, metadata?: MemoryRequestMetadata) {\n switch (scope) {\n case 'workflow':\n return metadata?.workflowId ?? metadata?.runId;\n case 'session':\n return metadata?.sessionId;\n case 'actor':\n return metadata?.actorId;\n case 'global':\n return 'global';\n default:\n return undefined;\n }\n }\n}\n","import { Buffer } from 'node:buffer';\nimport axios, { type AxiosInstance } from 'axios';\n\nexport interface ExecutionCredential {\n vcId: string;\n executionId: string;\n workflowId: string;\n sessionId?: string;\n issuerDid?: string;\n targetDid?: string;\n callerDid?: string;\n vcDocument: any;\n signature?: string;\n inputHash?: string;\n outputHash?: string;\n status: string;\n createdAt: string;\n}\n\nexport interface WorkflowCredential {\n workflowId: string;\n sessionId?: string;\n componentVcs: string[];\n workflowVcId: string;\n status: string;\n startTime: string;\n endTime?: string;\n totalSteps: number;\n completedSteps: number;\n}\n\nexport interface AuditTrailFilters {\n workflowId?: string;\n sessionId?: string;\n issuerDid?: string;\n status?: string;\n limit?: number;\n}\n\nexport interface AuditTrailExport {\n agentDids: string[];\n executionVcs: Array<{\n vcId: string;\n executionId: string;\n workflowId: string;\n sessionId?: string;\n issuerDid?: string;\n targetDid?: string;\n callerDid?: string;\n status: string;\n createdAt: string;\n }>;\n workflowVcs: WorkflowCredential[];\n totalCount: number;\n filtersApplied?: Record<string, any>;\n}\n\nexport interface GenerateCredentialParams {\n executionContext: {\n executionId: string;\n workflowId?: string;\n sessionId?: string;\n callerDid?: string;\n targetDid?: string;\n agentNodeDid?: string;\n timestamp?: string | Date;\n };\n inputData?: any;\n outputData?: any;\n status?: string;\n errorMessage?: string;\n durationMs?: number;\n headers?: Record<string, string>;\n}\n\nexport class DidClient {\n private readonly http: AxiosInstance;\n private readonly defaultHeaders: Record<string, string>;\n\n constructor(baseUrl: string, defaultHeaders?: Record<string, string | number | boolean | undefined>) {\n this.http = axios.create({ baseURL: baseUrl.replace(/\\/$/, '') });\n this.defaultHeaders = this.sanitizeHeaders(defaultHeaders ?? {});\n }\n\n async generateCredential(params: GenerateCredentialParams): Promise<ExecutionCredential> {\n const ctx = params.executionContext;\n const timestamp =\n ctx.timestamp instanceof Date\n ? ctx.timestamp.toISOString()\n : ctx.timestamp ?? new Date().toISOString();\n\n const payload = {\n execution_context: {\n execution_id: ctx.executionId,\n workflow_id: ctx.workflowId,\n session_id: ctx.sessionId,\n caller_did: ctx.callerDid,\n target_did: ctx.targetDid,\n agent_node_did: ctx.agentNodeDid,\n timestamp\n },\n input_data: this.serializeDataForJson(params.inputData),\n output_data: this.serializeDataForJson(params.outputData),\n status: params.status ?? 'succeeded',\n error_message: params.errorMessage,\n duration_ms: params.durationMs ?? 0\n };\n\n const res = await this.http.post('/api/v1/execution/vc', payload, {\n headers: this.mergeHeaders(params.headers)\n });\n\n return this.mapExecutionCredential(res.data);\n }\n\n async exportAuditTrail(filters: AuditTrailFilters = {}): Promise<AuditTrailExport> {\n const res = await this.http.get('/api/v1/did/export/vcs', {\n params: this.cleanFilters(filters),\n headers: this.mergeHeaders()\n });\n\n const data = res.data ?? {};\n return {\n agentDids: data.agent_dids ?? [],\n executionVcs: (data.execution_vcs ?? []).map((vc: any) => ({\n vcId: vc.vc_id,\n executionId: vc.execution_id,\n workflowId: vc.workflow_id,\n sessionId: vc.session_id,\n issuerDid: vc.issuer_did,\n targetDid: vc.target_did,\n callerDid: vc.caller_did,\n status: vc.status,\n createdAt: vc.created_at\n })),\n workflowVcs: (data.workflow_vcs ?? []).map((vc: any) => ({\n workflowId: vc.workflow_id,\n sessionId: vc.session_id,\n componentVcs: vc.component_vcs ?? [],\n workflowVcId: vc.workflow_vc_id ?? vc.workflowVcId ?? vc.workflow_id,\n status: vc.status,\n startTime: vc.start_time,\n endTime: vc.end_time,\n totalSteps: vc.total_steps ?? 0,\n completedSteps: vc.completed_steps ?? 0\n })),\n totalCount: data.total_count ?? 0,\n filtersApplied: data.filters_applied\n };\n }\n\n private serializeDataForJson(data: any) {\n if (data === undefined || data === null) return '';\n let value: string;\n if (typeof data === 'string') {\n value = data;\n } else if (data instanceof Uint8Array) {\n value = Buffer.from(data).toString('utf-8');\n } else if (typeof data === 'object') {\n try {\n value = JSON.stringify(data, Object.keys(data).sort());\n } catch {\n value = String(data);\n }\n } else {\n value = String(data);\n }\n return Buffer.from(value, 'utf-8').toString('base64');\n }\n\n private mapExecutionCredential(data: any): ExecutionCredential {\n return {\n vcId: data?.vc_id ?? '',\n executionId: data?.execution_id ?? '',\n workflowId: data?.workflow_id ?? '',\n sessionId: data?.session_id,\n issuerDid: data?.issuer_did,\n targetDid: data?.target_did,\n callerDid: data?.caller_did,\n vcDocument: data?.vc_document,\n signature: data?.signature,\n inputHash: data?.input_hash,\n outputHash: data?.output_hash,\n status: data?.status ?? '',\n createdAt: data?.created_at ?? ''\n };\n }\n\n private cleanFilters(filters: AuditTrailFilters) {\n const cleaned: Record<string, any> = {};\n if (filters.workflowId) cleaned.workflow_id = filters.workflowId;\n if (filters.sessionId) cleaned.session_id = filters.sessionId;\n if (filters.issuerDid) cleaned.issuer_did = filters.issuerDid;\n if (filters.status) cleaned.status = filters.status;\n if (filters.limit !== undefined) cleaned.limit = filters.limit;\n return cleaned;\n }\n\n private mergeHeaders(headers?: Record<string, any>) {\n return {\n ...this.defaultHeaders,\n ...this.sanitizeHeaders(headers ?? {})\n };\n }\n\n private sanitizeHeaders(headers: Record<string, any>): Record<string, string> {\n const sanitized: Record<string, string> = {};\n Object.entries(headers).forEach(([key, value]) => {\n if (value === undefined || value === null) return;\n sanitized[key] = typeof value === 'string' ? value : String(value);\n });\n return sanitized;\n }\n}\n","import type { ExecutionMetadata } from '../context/ExecutionContext.js';\nimport { DidClient, type AuditTrailFilters, type ExecutionCredential, type AuditTrailExport } from './DidClient.js';\n\nexport interface GenerateCredentialOptions {\n inputData?: any;\n outputData?: any;\n status?: string;\n errorMessage?: string;\n durationMs?: number;\n timestamp?: string | Date;\n callerDid?: string;\n targetDid?: string;\n agentNodeDid?: string;\n workflowId?: string;\n sessionId?: string;\n executionId?: string;\n headers?: Record<string, string>;\n}\n\nexport class DidInterface {\n private readonly client: DidClient;\n private readonly metadata: ExecutionMetadata;\n private readonly enabled: boolean;\n private readonly defaultInput: any;\n\n constructor(params: { client: DidClient; metadata: ExecutionMetadata; enabled: boolean; defaultInput?: any }) {\n this.client = params.client;\n this.metadata = params.metadata;\n this.enabled = params.enabled;\n this.defaultInput = params.defaultInput;\n }\n\n async generateCredential(options: GenerateCredentialOptions = {}): Promise<ExecutionCredential> {\n if (!this.enabled) {\n throw new Error('DID/VC features are disabled. Enable didEnabled in AgentConfig to use ctx.did.');\n }\n\n const executionContext = {\n executionId: options.executionId ?? this.metadata.executionId,\n workflowId: options.workflowId ?? this.metadata.workflowId ?? this.metadata.runId,\n sessionId: options.sessionId ?? this.metadata.sessionId,\n callerDid: options.callerDid ?? this.metadata.callerDid,\n targetDid: options.targetDid ?? this.metadata.targetDid,\n agentNodeDid: options.agentNodeDid ?? this.metadata.agentNodeDid,\n timestamp: options.timestamp\n };\n\n return this.client.generateCredential({\n executionContext,\n inputData: options.inputData ?? this.defaultInput,\n outputData: options.outputData,\n status: options.status,\n errorMessage: options.errorMessage,\n durationMs: options.durationMs,\n headers: options.headers\n });\n }\n\n exportAuditTrail(filters?: AuditTrailFilters): Promise<AuditTrailExport> {\n if (!this.enabled) {\n throw new Error('DID/VC features are disabled. Enable didEnabled in AgentConfig to use ctx.did.');\n }\n return this.client.exportAuditTrail(filters);\n }\n}\n","export function matchesPattern(pattern: string, value: string) {\n const escaped = pattern.replace(/[-/\\\\^$+?.()|[\\]{}]/g, '\\\\$&').replace(/\\*/g, '.*');\n const regex = new RegExp(`^${escaped}$`);\n return regex.test(value);\n}\n","import type { AgentFieldClient } from '../client/AgentFieldClient.js';\n\nexport interface WorkflowMetadata {\n executionId: string;\n runId?: string;\n workflowId?: string;\n agentNodeId?: string;\n reasonerId?: string;\n}\n\nexport interface WorkflowProgressOptions {\n status?: string;\n result?: Record<string, any>;\n error?: string;\n durationMs?: number;\n}\n\nexport class WorkflowReporter {\n private readonly client: AgentFieldClient;\n private readonly metadata: WorkflowMetadata;\n\n constructor(client: AgentFieldClient, metadata: WorkflowMetadata) {\n if (!metadata.executionId) {\n throw new Error('WorkflowReporter requires an executionId');\n }\n this.client = client;\n this.metadata = metadata;\n }\n\n async progress(progress: number, options?: WorkflowProgressOptions) {\n const normalized = Math.min(100, Math.max(0, Math.round(progress)));\n return this.client.updateExecutionStatus(this.metadata.executionId, {\n status: options?.status ?? 'running',\n progress: normalized,\n result: options?.result,\n error: options?.error,\n durationMs: options?.durationMs\n });\n }\n}\n","import axios, { type AxiosInstance } from 'axios';\nimport type { MCPServerConfig } from '../types/agent.js';\nimport type { MCPTool } from '../types/mcp.js';\n\nexport class MCPClient {\n readonly alias: string;\n readonly baseUrl: string;\n readonly transport: 'http' | 'bridge';\n private readonly http: AxiosInstance;\n private readonly devMode: boolean;\n private lastHealthy = false;\n\n constructor(config: MCPServerConfig, devMode?: boolean) {\n if (!config.alias) {\n throw new Error('MCP server alias is required');\n }\n if (!config.url && !config.port) {\n throw new Error(`MCP server \"${config.alias}\" requires a url or port`);\n }\n\n this.alias = config.alias;\n this.transport = config.transport ?? 'http';\n this.baseUrl = (config.url ?? `http://localhost:${config.port}`).replace(/\\/$/, '');\n this.http = axios.create({\n baseURL: this.baseUrl,\n headers: config.headers\n });\n this.devMode = Boolean(devMode);\n }\n\n async healthCheck(): Promise<boolean> {\n try {\n await this.http.get('/health');\n this.lastHealthy = true;\n return true;\n } catch (err) {\n this.lastHealthy = false;\n if (this.devMode) {\n console.warn(`MCP health check failed for ${this.alias}:`, err instanceof Error ? err.message : err);\n }\n return false;\n }\n }\n\n async listTools(): Promise<MCPTool[]> {\n try {\n if (this.transport === 'bridge') {\n const res = await this.http.post('/mcp/tools/list');\n const tools = res.data?.tools ?? [];\n return this.normalizeTools(tools);\n }\n\n const res = await this.http.post('/mcp/v1', {\n jsonrpc: '2.0',\n id: Date.now(),\n method: 'tools/list',\n params: {}\n });\n const tools = res.data?.result?.tools ?? [];\n return this.normalizeTools(tools);\n } catch (err) {\n if (this.devMode) {\n console.warn(`MCP listTools failed for ${this.alias}:`, err instanceof Error ? err.message : err);\n }\n return [];\n }\n }\n\n async callTool(toolName: string, arguments_: Record<string, any> = {}): Promise<any> {\n if (!toolName) {\n throw new Error('toolName is required');\n }\n\n try {\n if (this.transport === 'bridge') {\n const res = await this.http.post('/mcp/tools/call', {\n tool_name: toolName,\n arguments: arguments_\n });\n return res.data?.result ?? res.data;\n }\n\n const res = await this.http.post('/mcp/v1', {\n jsonrpc: '2.0',\n id: Date.now(),\n method: 'tools/call',\n params: { name: toolName, arguments: arguments_ }\n });\n\n if (res.data?.error) {\n throw new Error(String(res.data.error?.message ?? res.data.error));\n }\n\n if (res.data?.result !== undefined) {\n return res.data.result;\n }\n\n return res.data;\n } catch (err) {\n if (this.devMode) {\n console.warn(`MCP callTool failed for ${this.alias}.${toolName}:`, err instanceof Error ? err.message : err);\n }\n throw err;\n }\n }\n\n get lastHealthStatus() {\n return this.lastHealthy;\n }\n\n private normalizeTools(tools: any[]): MCPTool[] {\n return (tools ?? []).map((tool) => ({\n name: tool?.name ?? 'unknown',\n description: tool?.description,\n inputSchema: tool?.inputSchema ?? tool?.input_schema,\n input_schema: tool?.input_schema\n }));\n }\n}\n","import type { MCPServerConfig } from '../types/agent.js';\nimport type { MCPHealthSummary } from '../types/mcp.js';\nimport { MCPClient } from './MCPClient.js';\n\nexport class MCPClientRegistry {\n private readonly clients = new Map<string, MCPClient>();\n private readonly devMode: boolean;\n\n constructor(devMode?: boolean) {\n this.devMode = Boolean(devMode);\n }\n\n register(config: MCPServerConfig): MCPClient {\n const client = new MCPClient(config, this.devMode);\n this.clients.set(config.alias, client);\n return client;\n }\n\n get(alias: string) {\n return this.clients.get(alias);\n }\n\n list(): MCPClient[] {\n return Array.from(this.clients.values());\n }\n\n async healthSummary(): Promise<MCPHealthSummary> {\n if (!this.clients.size) {\n return {\n status: 'disabled',\n totalServers: 0,\n healthyServers: 0,\n servers: []\n };\n }\n\n const results = await Promise.all(\n Array.from(this.clients.values()).map(async (client) => {\n const healthy = await client.healthCheck();\n return {\n alias: client.alias,\n baseUrl: client.baseUrl,\n transport: client.transport,\n healthy\n };\n })\n );\n\n const healthyCount = results.filter((r) => r.healthy).length;\n const status: MCPHealthSummary['status'] =\n healthyCount === 0 ? 'degraded' : healthyCount === results.length ? 'ok' : 'degraded';\n\n return {\n status,\n totalServers: results.length,\n healthyServers: healthyCount,\n servers: results\n };\n }\n}\n","import type { Agent } from '../agent/Agent.js';\nimport type { MCPServerConfig } from '../types/agent.js';\nimport type { MCPTool, MCPToolRegistration } from '../types/mcp.js';\nimport { MCPClientRegistry } from './MCPClientRegistry.js';\n\nexport interface MCPToolRegistrarOptions {\n namespace?: string;\n tags?: string[];\n devMode?: boolean;\n}\n\nexport class MCPToolRegistrar {\n private readonly registered = new Set<string>();\n private readonly devMode: boolean;\n\n constructor(\n private readonly agent: Agent,\n private readonly registry: MCPClientRegistry,\n private readonly options: MCPToolRegistrarOptions = {}\n ) {\n this.devMode = Boolean(options.devMode);\n }\n\n registerServers(servers: MCPServerConfig[]) {\n servers.forEach((server) => this.registry.register(server));\n }\n\n async registerAll(): Promise<{ registered: MCPToolRegistration[] }> {\n const registrations: MCPToolRegistration[] = [];\n const clients = this.registry.list();\n\n for (const client of clients) {\n const healthy = await client.healthCheck();\n if (!healthy) {\n if (this.devMode) {\n console.warn(`Skipping MCP server ${client.alias} (health check failed)`);\n }\n continue;\n }\n\n const tools = await client.listTools();\n for (const tool of tools) {\n if (!tool?.name) continue;\n\n const skillName = this.buildSkillName(client.alias, tool.name);\n if (this.registered.has(skillName) || this.agent.skills.get(skillName)) {\n continue;\n }\n\n this.agent.skill(\n skillName,\n async (ctx) => {\n const args = (ctx.input && typeof ctx.input === 'object') ? (ctx.input as Record<string, any>) : {};\n const result = await client.callTool(tool.name, args);\n return {\n status: 'success',\n result,\n server: client.alias,\n tool: tool.name\n };\n },\n {\n description: tool.description ?? `MCP tool ${tool.name} from ${client.alias}`,\n inputSchema: tool.inputSchema ?? tool.input_schema ?? {},\n tags: this.buildTags(client.alias)\n }\n );\n\n this.registered.add(skillName);\n registrations.push({ server: client.alias, skillName, tool });\n if (this.devMode) {\n console.info(`Registered MCP skill ${skillName}`);\n }\n }\n }\n\n return { registered: registrations };\n }\n\n private buildTags(alias: string) {\n return Array.from(new Set(['mcp', alias, ...(this.options.tags ?? [])]));\n }\n\n private buildSkillName(serverAlias: string, toolName: string) {\n const base = [this.options.namespace, serverAlias, toolName].filter(Boolean).join('_');\n return this.sanitize(base);\n }\n\n private sanitize(value: string) {\n const collapsed = value.replace(/[^a-zA-Z0-9_]/g, '_').replace(/_+/g, '_').replace(/^_+|_+$/g, '');\n if (/^[0-9]/.test(collapsed)) {\n return `mcp_${collapsed}`;\n }\n return collapsed || 'mcp_tool';\n }\n}\n","import express from 'express';\nimport type http from 'node:http';\nimport { randomUUID } from 'node:crypto';\nimport type {\n AgentConfig,\n AgentHandler,\n DeploymentType,\n HealthStatus,\n ServerlessEvent,\n ServerlessResponse\n} from '../types/agent.js';\nimport { ReasonerRegistry } from './ReasonerRegistry.js';\nimport { SkillRegistry } from './SkillRegistry.js';\nimport { AgentRouter } from '../router/AgentRouter.js';\nimport type { ReasonerHandler, ReasonerOptions } from '../types/reasoner.js';\nimport type { SkillHandler, SkillOptions } from '../types/skill.js';\nimport { ExecutionContext, type ExecutionMetadata } from '../context/ExecutionContext.js';\nimport { ReasonerContext } from '../context/ReasonerContext.js';\nimport { SkillContext } from '../context/SkillContext.js';\nimport { AIClient } from '../ai/AIClient.js';\nimport { AgentFieldClient } from '../client/AgentFieldClient.js';\nimport { MemoryClient } from '../memory/MemoryClient.js';\nimport { MemoryEventClient } from '../memory/MemoryEventClient.js';\nimport {\n MemoryInterface,\n type MemoryChangeEvent,\n type MemoryWatchHandler\n} from '../memory/MemoryInterface.js';\nimport { DidClient } from '../did/DidClient.js';\nimport { DidInterface } from '../did/DidInterface.js';\nimport { matchesPattern } from '../utils/pattern.js';\nimport { WorkflowReporter } from '../workflow/WorkflowReporter.js';\nimport type { DiscoveryOptions } from '../types/agent.js';\nimport type { MCPToolRegistration } from '../types/mcp.js';\nimport { MCPClientRegistry } from '../mcp/MCPClientRegistry.js';\nimport { MCPToolRegistrar } from '../mcp/MCPToolRegistrar.js';\n\nclass TargetNotFoundError extends Error {}\n\nexport class Agent {\n readonly config: AgentConfig;\n readonly app: express.Express;\n readonly reasoners = new ReasonerRegistry();\n readonly skills = new SkillRegistry();\n private server?: http.Server;\n private heartbeatTimer?: NodeJS.Timeout;\n private readonly aiClient: AIClient;\n private readonly agentFieldClient: AgentFieldClient;\n private readonly memoryClient: MemoryClient;\n private readonly memoryEventClient: MemoryEventClient;\n private readonly didClient: DidClient;\n private readonly memoryWatchers: Array<{ pattern: string; handler: MemoryWatchHandler; scope?: string; scopeId?: string }> = [];\n private readonly mcpClientRegistry?: MCPClientRegistry;\n private readonly mcpToolRegistrar?: MCPToolRegistrar;\n\n constructor(config: AgentConfig) {\n const mcp = config.mcp\n ? {\n autoRegisterTools: config.mcp.autoRegisterTools ?? true,\n ...config.mcp\n }\n : undefined;\n\n this.config = {\n port: 8001,\n agentFieldUrl: 'http://localhost:8080',\n host: '0.0.0.0',\n ...config,\n didEnabled: config.didEnabled ?? true,\n deploymentType: config.deploymentType ?? 'long_running',\n mcp\n };\n\n this.app = express();\n this.app.use(express.json());\n\n this.aiClient = new AIClient(this.config.aiConfig);\n this.agentFieldClient = new AgentFieldClient(this.config);\n this.memoryClient = new MemoryClient(this.config.agentFieldUrl!, this.config.defaultHeaders);\n this.memoryEventClient = new MemoryEventClient(this.config.agentFieldUrl!, this.config.defaultHeaders);\n this.didClient = new DidClient(this.config.agentFieldUrl!, this.config.defaultHeaders);\n this.memoryEventClient.onEvent((event) => this.dispatchMemoryEvent(event));\n\n if (this.config.mcp?.servers?.length) {\n this.mcpClientRegistry = new MCPClientRegistry(this.config.devMode);\n this.mcpToolRegistrar = new MCPToolRegistrar(this, this.mcpClientRegistry, {\n namespace: this.config.mcp.namespace,\n tags: this.config.mcp.tags,\n devMode: this.config.devMode\n });\n this.mcpToolRegistrar.registerServers(this.config.mcp.servers);\n }\n\n this.registerDefaultRoutes();\n }\n\n reasoner<TInput = any, TOutput = any>(\n name: string,\n handler: ReasonerHandler<TInput, TOutput>,\n options?: ReasonerOptions\n ) {\n this.reasoners.register(name, handler, options);\n return this;\n }\n\n skill<TInput = any, TOutput = any>(\n name: string,\n handler: SkillHandler<TInput, TOutput>,\n options?: SkillOptions\n ) {\n this.skills.register(name, handler, options);\n return this;\n }\n\n includeRouter(router: AgentRouter) {\n this.reasoners.includeRouter(router);\n this.skills.includeRouter(router);\n }\n\n handler(): AgentHandler {\n return async (event: any, res?: any): Promise<ServerlessResponse | void> => {\n // If a response object is provided, treat this as a standard HTTP request (e.g., Vercel/Netlify)\n if (res && typeof res === 'object' && typeof (res as any).setHeader === 'function') {\n return this.handleHttpRequest(event as http.IncomingMessage, res as http.ServerResponse);\n }\n\n // Fallback to a generic serverless event contract (AWS Lambda, Cloud Functions, etc.)\n return this.handleServerlessEvent(event as ServerlessEvent);\n };\n }\n\n watchMemory(pattern: string | string[], handler: MemoryWatchHandler, options?: { scope?: string; scopeId?: string }) {\n const patterns = Array.isArray(pattern) ? pattern : [pattern];\n patterns.forEach((p) =>\n this.memoryWatchers.push({ pattern: p, handler, scope: options?.scope, scopeId: options?.scopeId })\n );\n this.memoryEventClient.start();\n }\n\n discover(options?: DiscoveryOptions) {\n return this.agentFieldClient.discoverCapabilities(options);\n }\n\n async registerMcpTools(): Promise<{ registered: MCPToolRegistration[] }> {\n if (!this.mcpToolRegistrar) return { registered: [] };\n return this.mcpToolRegistrar.registerAll();\n }\n\n getAIClient() {\n return this.aiClient;\n }\n\n getMemoryInterface(metadata?: ExecutionMetadata) {\n const defaultScope = this.config.memoryConfig?.defaultScope ?? 'workflow';\n const defaultScopeId =\n defaultScope === 'session'\n ? metadata?.sessionId\n : defaultScope === 'actor'\n ? metadata?.actorId\n : metadata?.workflowId ?? metadata?.runId ?? metadata?.sessionId ?? metadata?.actorId;\n return new MemoryInterface({\n client: this.memoryClient,\n eventClient: this.memoryEventClient,\n aiClient: this.aiClient,\n defaultScope,\n defaultScopeId,\n metadata: {\n workflowId: metadata?.workflowId ?? metadata?.runId,\n sessionId: metadata?.sessionId,\n actorId: metadata?.actorId,\n runId: metadata?.runId,\n executionId: metadata?.executionId,\n parentExecutionId: metadata?.parentExecutionId,\n callerDid: metadata?.callerDid,\n targetDid: metadata?.targetDid,\n agentNodeDid: metadata?.agentNodeDid,\n agentNodeId: this.config.nodeId\n }\n });\n }\n\n getWorkflowReporter(metadata: ExecutionMetadata) {\n return new WorkflowReporter(this.agentFieldClient, {\n executionId: metadata.executionId,\n runId: metadata.runId,\n workflowId: metadata.workflowId,\n agentNodeId: this.config.nodeId\n });\n }\n\n getDidInterface(metadata: ExecutionMetadata, defaultInput?: any) {\n return new DidInterface({\n client: this.didClient,\n metadata: {\n ...metadata,\n agentNodeDid: metadata.agentNodeDid ?? this.config.defaultHeaders?.['X-Agent-Node-DID']?.toString()\n },\n enabled: Boolean(this.config.didEnabled),\n defaultInput\n });\n }\n\n async serve(): Promise<void> {\n if (this.config.mcp?.autoRegisterTools !== false) {\n try {\n await this.registerMcpTools();\n } catch (err) {\n if (this.config.devMode) {\n console.warn('MCP tool registration failed', err);\n }\n }\n }\n\n await this.registerWithControlPlane();\n const port = this.config.port ?? 8001;\n const host = this.config.host ?? '0.0.0.0';\n // First heartbeat marks the node as starting; subsequent interval sets ready.\n await this.agentFieldClient.heartbeat('starting');\n await new Promise<void>((resolve, reject) => {\n this.server = this.app\n .listen(port, host, () => resolve())\n .on('error', reject);\n });\n this.memoryEventClient.start();\n this.startHeartbeat();\n }\n\n async shutdown(): Promise<void> {\n if (this.heartbeatTimer) {\n clearInterval(this.heartbeatTimer);\n }\n await new Promise<void>((resolve, reject) => {\n this.server?.close((err) => {\n if (err) reject(err);\n else resolve();\n });\n });\n this.memoryEventClient.stop();\n }\n\n async call(target: string, input: any) {\n const { agentId, name } = this.parseTarget(target);\n if (!agentId || agentId === this.config.nodeId) {\n const local = this.reasoners.get(name);\n if (!local) throw new Error(`Reasoner not found: ${name}`);\n const parentMetadata = ExecutionContext.getCurrent()?.metadata;\n const runId = parentMetadata?.runId ?? parentMetadata?.executionId ?? randomUUID();\n const metadata = {\n ...parentMetadata,\n executionId: randomUUID(),\n parentExecutionId: parentMetadata?.executionId,\n runId,\n workflowId: parentMetadata?.workflowId ?? runId\n };\n const dummyReq = {} as express.Request;\n const dummyRes = {} as express.Response;\n const execCtx = new ExecutionContext({\n input,\n metadata: {\n ...metadata,\n executionId: metadata.executionId ?? randomUUID()\n },\n req: dummyReq,\n res: dummyRes,\n agent: this\n });\n const startTime = Date.now();\n\n const emitEvent = async (status: 'running' | 'succeeded' | 'failed', payload: any) => {\n await this.agentFieldClient.publishWorkflowEvent({\n executionId: execCtx.metadata.executionId,\n runId: execCtx.metadata.runId ?? execCtx.metadata.executionId,\n workflowId: execCtx.metadata.workflowId,\n reasonerId: name,\n agentNodeId: this.config.nodeId,\n status,\n parentExecutionId: execCtx.metadata.parentExecutionId,\n parentWorkflowId: execCtx.metadata.workflowId,\n inputData: status === 'running' ? input : undefined,\n result: status === 'succeeded' ? payload : undefined,\n error: status === 'failed' ? (payload?.message ?? String(payload)) : undefined,\n durationMs: status === 'running' ? undefined : Date.now() - startTime\n });\n };\n\n await emitEvent('running', null);\n\n return ExecutionContext.run(execCtx, async () => {\n try {\n const result = await local.handler(\n new ReasonerContext({\n input,\n executionId: execCtx.metadata.executionId,\n runId: execCtx.metadata.runId,\n sessionId: execCtx.metadata.sessionId,\n actorId: execCtx.metadata.actorId,\n workflowId: execCtx.metadata.workflowId,\n parentExecutionId: execCtx.metadata.parentExecutionId,\n callerDid: execCtx.metadata.callerDid,\n targetDid: execCtx.metadata.targetDid,\n agentNodeDid: execCtx.metadata.agentNodeDid,\n req: dummyReq,\n res: dummyRes,\n agent: this,\n aiClient: this.aiClient,\n memory: this.getMemoryInterface(execCtx.metadata),\n workflow: this.getWorkflowReporter(execCtx.metadata),\n did: this.getDidInterface(execCtx.metadata, input)\n })\n );\n await emitEvent('succeeded', result);\n return result;\n } catch (err) {\n await emitEvent('failed', err);\n throw err;\n }\n });\n }\n\n const metadata = ExecutionContext.getCurrent()?.metadata;\n return this.agentFieldClient.execute(target, input, {\n runId: metadata?.runId ?? metadata?.executionId,\n workflowId: metadata?.workflowId ?? metadata?.runId,\n parentExecutionId: metadata?.executionId,\n sessionId: metadata?.sessionId,\n actorId: metadata?.actorId,\n callerDid: metadata?.callerDid,\n targetDid: metadata?.targetDid,\n agentNodeDid: metadata?.agentNodeDid,\n agentNodeId: this.config.nodeId\n });\n }\n\n private registerDefaultRoutes() {\n this.app.get('/health', (_req, res) => {\n res.json(this.health());\n });\n\n // Discovery endpoint used for serverless registration (mirrors Python behaviour)\n this.app.get('/discover', (_req, res) => {\n res.json(this.discoveryPayload(this.config.deploymentType ?? 'long_running'));\n });\n\n // MCP health probe expected by control-plane UI\n this.app.get('/health/mcp', async (_req, res) => {\n if (!this.mcpClientRegistry) {\n res.json({ status: 'disabled', totalServers: 0, healthyServers: 0, servers: [] });\n return;\n }\n\n try {\n const summary = await this.mcpClientRegistry.healthSummary();\n res.json(summary);\n } catch (err: any) {\n res.status(500).json({ status: 'error', error: err?.message ?? 'MCP health check failed' });\n }\n });\n\n this.app.get('/mcp/status', (_req, res) => {\n res.json(this.mcpStatus());\n });\n\n this.app.get('/status', (_req, res) => {\n res.json({\n ...this.health(),\n reasoners: this.reasoners.all().map((r) => r.name),\n skills: this.skills.all().map((s) => s.name)\n });\n });\n\n this.app.get('/reasoners', (_req, res) => {\n res.json(this.reasoners.all().map((r) => r.name));\n });\n\n this.app.get('/skills', (_req, res) => {\n res.json(this.skills.all().map((s) => s.name));\n });\n\n this.app.post('/api/v1/reasoners/*', (req, res) => this.executeReasoner(req, res, (req.params as any)[0]));\n this.app.post('/reasoners/:name', (req, res) => this.executeReasoner(req, res, req.params.name));\n\n this.app.post('/api/v1/skills/*', (req, res) => this.executeSkill(req, res, (req.params as any)[0]));\n this.app.post('/skills/:name', (req, res) => this.executeSkill(req, res, req.params.name));\n\n // Serverless-friendly execute endpoint that accepts { target, input } or { reasoner, input }\n this.app.post('/execute', (req, res) => this.executeServerlessHttp(req, res));\n this.app.post('/execute/:name', (req, res) => this.executeServerlessHttp(req, res, req.params.name));\n }\n\n private async executeReasoner(req: express.Request, res: express.Response, name: string) {\n try {\n await this.executeInvocation({\n targetName: name,\n targetType: 'reasoner',\n input: req.body,\n metadata: this.buildMetadata(req),\n req,\n res,\n respond: true\n });\n } catch (err: any) {\n if (err instanceof TargetNotFoundError) {\n res.status(404).json({ error: err.message });\n } else {\n res.status(500).json({ error: err?.message ?? 'Execution failed' });\n }\n }\n }\n\n private async executeSkill(req: express.Request, res: express.Response, name: string) {\n try {\n await this.executeInvocation({\n targetName: name,\n targetType: 'skill',\n input: req.body,\n metadata: this.buildMetadata(req),\n req,\n res,\n respond: true\n });\n } catch (err: any) {\n if (err instanceof TargetNotFoundError) {\n res.status(404).json({ error: err.message });\n } else {\n res.status(500).json({ error: err?.message ?? 'Execution failed' });\n }\n }\n }\n\n private buildMetadata(req: express.Request) {\n return this.buildMetadataFromHeaders(req.headers);\n }\n\n private async executeServerlessHttp(req: express.Request, res: express.Response, explicitName?: string) {\n const invocation = this.extractInvocationDetails({\n path: req.path,\n explicitTarget: explicitName,\n query: req.query as Record<string, any>,\n body: req.body\n });\n\n if (!invocation.name) {\n res.status(400).json({ error: \"Missing 'target' or 'reasoner' in request\" });\n return;\n }\n\n try {\n const result = await this.executeInvocation({\n targetName: invocation.name,\n targetType: invocation.targetType,\n input: invocation.input,\n metadata: this.buildMetadata(req),\n req,\n res,\n respond: true\n });\n\n if (result !== undefined && !res.headersSent) {\n res.json(result);\n }\n } catch (err: any) {\n if (err instanceof TargetNotFoundError) {\n res.status(404).json({ error: err.message });\n } else {\n res.status(500).json({ error: err?.message ?? 'Execution failed' });\n }\n }\n }\n\n private buildMetadataFromHeaders(\n headers: Record<string, string | string[] | undefined>,\n overrides?: Partial<ExecutionMetadata>\n ): ExecutionMetadata {\n const normalized: Record<string, string | undefined> = {};\n Object.entries(headers ?? {}).forEach(([key, value]) => {\n normalized[key.toLowerCase()] = Array.isArray(value) ? value[0] : value;\n });\n\n const executionId = overrides?.executionId ?? normalized['x-execution-id'] ?? randomUUID();\n const runId = overrides?.runId ?? normalized['x-run-id'] ?? executionId;\n const workflowId = overrides?.workflowId ?? normalized['x-workflow-id'] ?? runId;\n\n return {\n executionId,\n runId,\n workflowId,\n sessionId: overrides?.sessionId ?? normalized['x-session-id'],\n actorId: overrides?.actorId ?? normalized['x-actor-id'],\n parentExecutionId: overrides?.parentExecutionId ?? normalized['x-parent-execution-id'],\n callerDid: overrides?.callerDid ?? normalized['x-caller-did'],\n targetDid: overrides?.targetDid ?? normalized['x-target-did'],\n agentNodeDid:\n overrides?.agentNodeDid ?? normalized['x-agent-node-did'] ?? normalized['x-agent-did']\n };\n }\n\n private handleHttpRequest(req: http.IncomingMessage | express.Request, res: http.ServerResponse | express.Response) {\n const handler = this.app as unknown as (req: http.IncomingMessage, res: http.ServerResponse) => void;\n return handler(req as any, res as any);\n }\n\n private async handleServerlessEvent(event: ServerlessEvent): Promise<ServerlessResponse> {\n const path = event?.path ?? event?.rawPath ?? '';\n const action = event?.action ?? '';\n\n if (path === '/discover' || action === 'discover') {\n return {\n statusCode: 200,\n headers: { 'content-type': 'application/json' },\n body: this.discoveryPayload(this.config.deploymentType ?? 'serverless')\n };\n }\n\n const body = this.normalizeEventBody(event);\n const invocation = this.extractInvocationDetails({\n path,\n query: event?.queryStringParameters,\n body,\n reasoner: event?.reasoner,\n target: event?.target,\n skill: event?.skill,\n type: event?.type\n });\n\n if (!invocation.name) {\n return {\n statusCode: 400,\n headers: { 'content-type': 'application/json' },\n body: { error: \"Missing 'target' or 'reasoner' in request\" }\n };\n }\n\n const metadata = this.buildMetadataFromHeaders(event?.headers ?? {}, this.mergeExecutionContext(event));\n\n try {\n const result = await this.executeInvocation({\n targetName: invocation.name,\n targetType: invocation.targetType,\n input: invocation.input,\n metadata\n });\n\n return { statusCode: 200, headers: { 'content-type': 'application/json' }, body: result };\n } catch (err: any) {\n if (err instanceof TargetNotFoundError) {\n return {\n statusCode: 404,\n headers: { 'content-type': 'application/json' },\n body: { error: err.message }\n };\n }\n\n return {\n statusCode: 500,\n headers: { 'content-type': 'application/json' },\n body: { error: err?.message ?? 'Execution failed' }\n };\n }\n }\n\n private normalizeEventBody(event: ServerlessEvent) {\n const parsed = this.parseBody((event as any)?.body);\n if (parsed && typeof parsed === 'object' && event?.input !== undefined && (parsed as any).input === undefined) {\n return { ...(parsed as Record<string, any>), input: event.input };\n }\n if ((parsed === undefined || parsed === null) && event?.input !== undefined) {\n return { input: event.input };\n }\n return parsed;\n }\n\n private mergeExecutionContext(event: ServerlessEvent): Partial<ExecutionMetadata> {\n const ctx = (event?.executionContext ?? (event as any)?.execution_context) as Partial<\n ExecutionMetadata & {\n execution_id?: string;\n run_id?: string;\n workflow_id?: string;\n parent_execution_id?: string;\n session_id?: string;\n actor_id?: string;\n caller_did?: string;\n target_did?: string;\n agent_node_did?: string;\n }\n >;\n\n if (!ctx) return {};\n\n return {\n executionId: (ctx as any).executionId ?? ctx.execution_id ?? ctx.executionId,\n runId: ctx.runId ?? (ctx as any).run_id,\n workflowId: ctx.workflowId ?? (ctx as any).workflow_id,\n parentExecutionId: ctx.parentExecutionId ?? (ctx as any).parent_execution_id,\n sessionId: ctx.sessionId ?? (ctx as any).session_id,\n actorId: ctx.actorId ?? (ctx as any).actor_id,\n callerDid: (ctx as any).callerDid ?? (ctx as any).caller_did,\n targetDid: (ctx as any).targetDid ?? (ctx as any).target_did,\n agentNodeDid: (ctx as any).agentNodeDid ?? (ctx as any).agent_node_did\n };\n }\n\n private extractInvocationDetails(params: {\n path?: string;\n explicitTarget?: string;\n query?: Record<string, any>;\n body?: any;\n reasoner?: string;\n target?: string;\n skill?: string;\n type?: string;\n }): { name?: string; targetType?: 'reasoner' | 'skill'; input: any } {\n const pathTarget = this.parsePathTarget(params.path);\n const name =\n this.firstDefined<string>(\n params.explicitTarget,\n pathTarget.name,\n params.query?.target,\n params.query?.reasoner,\n params.query?.skill,\n params.target,\n params.reasoner,\n params.skill,\n params.body?.target,\n params.body?.reasoner,\n params.body?.skill\n ) ?? pathTarget.name;\n\n const typeValue = (this.firstDefined<string>(\n pathTarget.targetType,\n params.type,\n params.query?.type,\n params.query?.targetType,\n params.body?.type,\n params.body?.targetType\n ) ?? undefined) as 'reasoner' | 'skill' | undefined;\n\n const input = this.normalizeInputPayload(params.body);\n\n return { name: name ?? undefined, targetType: typeValue, input };\n }\n\n private parsePathTarget(\n path?: string\n ): { name?: string; targetType?: 'reasoner' | 'skill' } {\n if (!path) return {};\n\n const normalized = path.split('?')[0];\n const reasonerMatch = normalized.match(/\\/reasoners\\/([^/]+)/);\n if (reasonerMatch?.[1]) {\n return { name: reasonerMatch[1], targetType: 'reasoner' };\n }\n\n const skillMatch = normalized.match(/\\/skills\\/([^/]+)/);\n if (skillMatch?.[1]) {\n return { name: skillMatch[1], targetType: 'skill' };\n }\n\n const executeMatch = normalized.match(/\\/execute\\/([^/]+)/);\n if (executeMatch?.[1]) {\n return { name: executeMatch[1] };\n }\n\n return {};\n }\n\n private parseBody(body: any) {\n if (body === undefined || body === null) return body;\n if (typeof body === 'string') {\n try {\n return JSON.parse(body);\n } catch {\n return body;\n }\n }\n return body;\n }\n\n private normalizeInputPayload(body: any) {\n if (body === undefined || body === null) return {};\n const parsed = this.parseBody(body);\n\n if (parsed && typeof parsed === 'object') {\n const { target, reasoner, skill, type, targetType, ...rest } = parsed as Record<string, any>;\n if ((parsed as any).input !== undefined) {\n return (parsed as any).input;\n }\n if ((parsed as any).data !== undefined) {\n return (parsed as any).data;\n }\n if (Object.keys(rest).length === 0) {\n return {};\n }\n return rest;\n }\n\n return parsed;\n }\n\n private firstDefined<T>(...values: Array<T | undefined | null>): T | undefined {\n for (const value of values) {\n if (value !== undefined && value !== null) {\n return value as T;\n }\n }\n return undefined;\n }\n\n private reasonerDefinitions() {\n return this.reasoners.all().map((r) => ({\n id: r.name,\n input_schema: r.options?.inputSchema ?? {},\n output_schema: r.options?.outputSchema ?? {},\n memory_config: r.options?.memoryConfig ?? {\n auto_inject: [] as string[],\n memory_retention: '',\n cache_results: false\n },\n tags: r.options?.tags ?? []\n }));\n }\n\n private skillDefinitions() {\n return this.skills.all().map((s) => ({\n id: s.name,\n input_schema: s.options?.inputSchema ?? {},\n tags: s.options?.tags ?? []\n }));\n }\n\n private discoveryPayload(deploymentType: DeploymentType) {\n return {\n node_id: this.config.nodeId,\n version: this.config.version,\n deployment_type: deploymentType,\n reasoners: this.reasonerDefinitions(),\n skills: this.skillDefinitions()\n };\n }\n\n private async executeInvocation(params: {\n targetName: string;\n targetType?: 'reasoner' | 'skill';\n input: any;\n metadata: ExecutionMetadata;\n req?: express.Request;\n res?: express.Response;\n respond?: boolean;\n }) {\n const targetType = params.targetType;\n\n if (targetType === 'skill') {\n const skill = this.skills.get(params.targetName);\n if (!skill) {\n throw new TargetNotFoundError(`Skill not found: ${params.targetName}`);\n }\n return this.runSkill(skill, params);\n }\n\n const reasoner = this.reasoners.get(params.targetName);\n if (reasoner) {\n return this.runReasoner(reasoner, params);\n }\n\n const fallbackSkill = this.skills.get(params.targetName);\n if (fallbackSkill) {\n return this.runSkill(fallbackSkill, params);\n }\n\n throw new TargetNotFoundError(`Reasoner not found: ${params.targetName}`);\n }\n\n private async runReasoner(\n reasoner: { handler: ReasonerHandler<any, any> },\n params: {\n targetName: string;\n input: any;\n metadata: ExecutionMetadata;\n req?: express.Request;\n res?: express.Response;\n respond?: boolean;\n }\n ) {\n const req = params.req ?? ({} as express.Request);\n const res = params.res ?? ({} as express.Response);\n const execCtx = new ExecutionContext({\n input: params.input,\n metadata: params.metadata,\n req,\n res,\n agent: this\n });\n\n return ExecutionContext.run(execCtx, async () => {\n try {\n const ctx = new ReasonerContext({\n input: params.input,\n executionId: params.metadata.executionId,\n runId: params.metadata.runId,\n sessionId: params.metadata.sessionId,\n actorId: params.metadata.actorId,\n workflowId: params.metadata.workflowId,\n parentExecutionId: params.metadata.parentExecutionId,\n callerDid: params.metadata.callerDid,\n targetDid: params.metadata.targetDid,\n agentNodeDid: params.metadata.agentNodeDid,\n req,\n res,\n agent: this,\n aiClient: this.aiClient,\n memory: this.getMemoryInterface(params.metadata),\n workflow: this.getWorkflowReporter(params.metadata),\n did: this.getDidInterface(params.metadata, params.input)\n });\n\n const result = await reasoner.handler(ctx);\n if (params.respond && params.res) {\n params.res.json(result);\n return;\n }\n return result;\n } catch (err: any) {\n if (params.respond && params.res) {\n params.res.status(500).json({ error: err?.message ?? 'Execution failed' });\n return;\n }\n throw err;\n }\n });\n }\n\n private async runSkill(\n skill: { handler: SkillHandler<any, any> },\n params: {\n targetName: string;\n input: any;\n metadata: ExecutionMetadata;\n req?: express.Request;\n res?: express.Response;\n respond?: boolean;\n }\n ) {\n const req = params.req ?? ({} as express.Request);\n const res = params.res ?? ({} as express.Response);\n const execCtx = new ExecutionContext({\n input: params.input,\n metadata: params.metadata,\n req,\n res,\n agent: this\n });\n\n return ExecutionContext.run(execCtx, async () => {\n try {\n const ctx = new SkillContext({\n input: params.input,\n executionId: params.metadata.executionId,\n sessionId: params.metadata.sessionId,\n workflowId: params.metadata.workflowId,\n req,\n res,\n agent: this,\n memory: this.getMemoryInterface(params.metadata),\n workflow: this.getWorkflowReporter(params.metadata),\n did: this.getDidInterface(params.metadata, params.input)\n });\n\n const result = await skill.handler(ctx);\n if (params.respond && params.res) {\n params.res.json(result);\n return;\n }\n return result;\n } catch (err: any) {\n if (params.respond && params.res) {\n params.res.status(500).json({ error: err?.message ?? 'Execution failed' });\n return;\n }\n throw err;\n }\n });\n }\n\n private async registerWithControlPlane() {\n try {\n const reasoners = this.reasonerDefinitions();\n const skills = this.skillDefinitions();\n\n const port = this.config.port ?? 8001;\n const hostForUrl = this.config.publicUrl\n ? undefined\n : (this.config.host && this.config.host !== '0.0.0.0' ? this.config.host : '127.0.0.1');\n const publicUrl =\n this.config.publicUrl ?? `http://${hostForUrl ?? '127.0.0.1'}:${port}`;\n\n await this.agentFieldClient.register({\n id: this.config.nodeId,\n version: this.config.version,\n base_url: publicUrl,\n public_url: publicUrl,\n deployment_type: this.config.deploymentType ?? 'long_running',\n reasoners,\n skills\n });\n } catch (err) {\n if (!this.config.devMode) {\n throw err;\n }\n console.warn('Control plane registration failed (devMode=true), continuing locally', err);\n }\n }\n\n private startHeartbeat() {\n const interval = this.config.heartbeatIntervalMs ?? 30_000;\n if (interval <= 0) return;\n\n const tick = async () => {\n try {\n await this.agentFieldClient.heartbeat('ready');\n } catch (err) {\n if (!this.config.devMode) {\n console.warn('Heartbeat failed', err);\n }\n }\n };\n\n this.heartbeatTimer = setInterval(tick, interval);\n tick();\n }\n\n private health(): HealthStatus {\n return {\n status: 'running',\n node_id: this.config.nodeId,\n version: this.config.version\n };\n }\n\n private mcpStatus() {\n const servers = this.mcpClientRegistry\n ? this.mcpClientRegistry.list().map((client) => ({\n alias: client.alias,\n baseUrl: client.baseUrl,\n transport: client.transport\n }))\n : [];\n\n const skills = this.skills\n .all()\n .filter((skill) => skill.options?.tags?.includes('mcp'))\n .map((skill) => skill.name);\n\n return {\n status: servers.length ? 'configured' : 'disabled',\n servers,\n skills\n };\n }\n\n private dispatchMemoryEvent(event: MemoryChangeEvent) {\n this.memoryWatchers.forEach(({ pattern, handler, scope, scopeId }) => {\n const scopeMatch = (!scope || scope === event.scope) && (!scopeId || scopeId === event.scopeId);\n if (scopeMatch && matchesPattern(pattern, event.key)) {\n handler(event);\n }\n });\n }\n\n private parseTarget(target: string): { agentId?: string; name: string } {\n if (!target.includes('.')) {\n return { name: target };\n }\n const [agentId, remainder] = target.split('.', 2);\n const name = remainder.replace(':', '/');\n return { agentId, name };\n }\n}\n","import type { ReasonerDefinition, ReasonerHandler, ReasonerOptions } from '../types/reasoner.js';\nimport type { SkillDefinition, SkillHandler, SkillOptions } from '../types/skill.js';\n\nexport interface AgentRouterOptions {\n prefix?: string;\n tags?: string[];\n}\n\nexport class AgentRouter {\n readonly prefix?: string;\n readonly tags?: string[];\n readonly reasoners: ReasonerDefinition[] = [];\n readonly skills: SkillDefinition[] = [];\n\n constructor(options: AgentRouterOptions = {}) {\n this.prefix = options.prefix;\n this.tags = options.tags;\n }\n\n reasoner<TInput = any, TOutput = any>(\n name: string,\n handler: ReasonerHandler<TInput, TOutput>,\n options?: ReasonerOptions\n ) {\n const fullName = this.prefix ? `${sanitize(this.prefix)}_${name}` : name;\n this.reasoners.push({ name: fullName, handler, options });\n return this;\n }\n\n skill<TInput = any, TOutput = any>(\n name: string,\n handler: SkillHandler<TInput, TOutput>,\n options?: SkillOptions\n ) {\n const fullName = this.prefix ? `${sanitize(this.prefix)}_${name}` : name;\n this.skills.push({ name: fullName, handler, options });\n return this;\n }\n}\n\nfunction sanitize(value: string) {\n return value.replace(/[^0-9a-zA-Z]+/g, '_').replace(/_+/g, '_').replace(/^_+|_+$/g, '');\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agentfield/sdk",
3
- "version": "0.1.19",
3
+ "version": "0.1.20-rc.1",
4
4
  "description": "AgentField TypeScript SDK",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -25,9 +25,15 @@
25
25
  "node": ">=18.0.0"
26
26
  },
27
27
  "dependencies": {
28
- "@ai-sdk/anthropic": "^2.0.50",
29
- "@ai-sdk/openai": "^2.0.74",
30
- "ai": "^5.0.104",
28
+ "@ai-sdk/anthropic": "^2.0.53",
29
+ "@ai-sdk/cohere": "^2.0.20",
30
+ "@ai-sdk/deepseek": "^1.0.31",
31
+ "@ai-sdk/google": "^2.0.44",
32
+ "@ai-sdk/groq": "^2.0.32",
33
+ "@ai-sdk/mistral": "^2.0.25",
34
+ "@ai-sdk/openai": "^2.0.77",
35
+ "@ai-sdk/xai": "^2.0.39",
36
+ "ai": "^5.0.106",
31
37
  "axios": "^1.6.2",
32
38
  "dotenv": "^16.4.5",
33
39
  "express": "^4.18.2",
@@ -39,8 +45,8 @@
39
45
  "@types/node": "^20.10.0",
40
46
  "@types/ws": "^8.5.10",
41
47
  "ts-node": "^10.9.2",
42
- "tsx": "^4.19.2",
43
48
  "tsup": "^8.0.0",
49
+ "tsx": "^4.19.2",
44
50
  "typescript": "^5.3.0",
45
51
  "vitest": "^1.0.0"
46
52
  },