@agentfield/sdk 0.1.0
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/README.md +40 -0
- package/dist/index.d.ts +823 -0
- package/dist/index.js +2257 -0
- package/dist/index.js.map +1 -0
- package/package.json +59 -0
|
@@ -0,0 +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","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 } 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(prompt: string, options?: AIRequestOptions) {\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 { embed, embedMany, generateText, streamText, type StreamTextResult } from 'ai';\nimport { createOpenAI } from '@ai-sdk/openai';\nimport { createAnthropic } from '@ai-sdk/anthropic';\nimport type { ZodSchema } from 'zod';\nimport type { AIConfig } from '../types/agent.js';\nimport { StatelessRateLimiter } from './RateLimiter.js';\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\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 = any>(prompt: string, options: AIRequestOptions = {}): Promise<T | string> {\n const model = this.buildModel(options);\n const call = async () =>\n generateText({\n // type cast to avoid provider-model signature drift\n model: model as any,\n prompt,\n system: options.system,\n temperature: options.temperature ?? this.config.temperature,\n maxTokens: options.maxTokens ?? this.config.maxTokens,\n schema: options.schema\n } as any);\n\n const response = await this.withRateLimitRetry(call);\n\n if (options.schema && (response as any).object !== undefined) {\n return (response as any).object as T;\n }\n\n return (response as any).text as string;\n }\n\n async stream(prompt: string, options: AIRequestOptions = {}): Promise<AIStream> {\n const model = this.buildModel(options);\n const streamResult: StreamTextResult<any> = await this.withRateLimitRetry(() =>\n streamText({\n model: model as any,\n prompt,\n system: options.system,\n temperature: options.temperature ?? this.config.temperature,\n maxTokens: options.maxTokens ?? this.config.maxTokens\n } as any)\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 as any,\n value\n } as any)\n );\n return (result as any).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 as any,\n values\n } as any)\n );\n return (result as any).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) as any;\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 return openai(modelName) as any;\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 }) as any;\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) as any;\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 this.defaultHeaders = this.sanitizeHeaders(config.defaultHeaders ?? {});\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 nodeId: 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
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@agentfield/sdk",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "AgentField TypeScript SDK",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"files": [
|
|
9
|
+
"dist"
|
|
10
|
+
],
|
|
11
|
+
"scripts": {
|
|
12
|
+
"build": "tsup",
|
|
13
|
+
"dev": "tsup --watch",
|
|
14
|
+
"lint": "tsc --noEmit",
|
|
15
|
+
"test": "vitest run",
|
|
16
|
+
"prepare": "npm run build"
|
|
17
|
+
},
|
|
18
|
+
"exports": {
|
|
19
|
+
".": {
|
|
20
|
+
"import": "./dist/index.js",
|
|
21
|
+
"types": "./dist/index.d.ts"
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"engines": {
|
|
25
|
+
"node": ">=18.0.0"
|
|
26
|
+
},
|
|
27
|
+
"dependencies": {
|
|
28
|
+
"@ai-sdk/anthropic": "^0.0.24",
|
|
29
|
+
"@ai-sdk/openai": "^0.0.24",
|
|
30
|
+
"ai": "^3.0.0",
|
|
31
|
+
"axios": "^1.6.2",
|
|
32
|
+
"dotenv": "^16.4.5",
|
|
33
|
+
"express": "^4.18.2",
|
|
34
|
+
"ws": "^8.16.0",
|
|
35
|
+
"zod": "^3.22.4"
|
|
36
|
+
},
|
|
37
|
+
"devDependencies": {
|
|
38
|
+
"@types/express": "^4.17.21",
|
|
39
|
+
"@types/node": "^20.10.0",
|
|
40
|
+
"@types/ws": "^8.5.10",
|
|
41
|
+
"ts-node": "^10.9.2",
|
|
42
|
+
"tsx": "^4.19.2",
|
|
43
|
+
"tsup": "^8.0.0",
|
|
44
|
+
"typescript": "^5.3.0",
|
|
45
|
+
"vitest": "^1.0.0"
|
|
46
|
+
},
|
|
47
|
+
"repository": {
|
|
48
|
+
"type": "git",
|
|
49
|
+
"url": "https://github.com/Agent-Field/agentfield.git",
|
|
50
|
+
"directory": "sdk/typescript"
|
|
51
|
+
},
|
|
52
|
+
"homepage": "https://github.com/Agent-Field/agentfield/tree/main/sdk/typescript",
|
|
53
|
+
"bugs": {
|
|
54
|
+
"url": "https://github.com/Agent-Field/agentfield/issues"
|
|
55
|
+
},
|
|
56
|
+
"license": "MIT",
|
|
57
|
+
"keywords": ["agentfield", "ai-agents", "llm", "multi-agent", "orchestration"],
|
|
58
|
+
"author": "AgentField Team"
|
|
59
|
+
}
|