agentxjs 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +602 -0
- package/dist/index.cjs +1292 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +88 -0
- package/dist/index.d.ts +88 -0
- package/dist/index.js +1283 -0
- package/dist/index.js.map +1 -0
- package/dist/runtime/sse/index.cjs +633 -0
- package/dist/runtime/sse/index.cjs.map +1 -0
- package/dist/runtime/sse/index.d.cts +159 -0
- package/dist/runtime/sse/index.d.ts +159 -0
- package/dist/runtime/sse/index.js +621 -0
- package/dist/runtime/sse/index.js.map +1 -0
- package/dist/server/adapters/express.cjs +81 -0
- package/dist/server/adapters/express.cjs.map +1 -0
- package/dist/server/adapters/express.d.cts +75 -0
- package/dist/server/adapters/express.d.ts +75 -0
- package/dist/server/adapters/express.js +78 -0
- package/dist/server/adapters/express.js.map +1 -0
- package/dist/server/adapters/hono.cjs +32 -0
- package/dist/server/adapters/hono.cjs.map +1 -0
- package/dist/server/adapters/hono.d.cts +96 -0
- package/dist/server/adapters/hono.d.ts +96 -0
- package/dist/server/adapters/hono.js +28 -0
- package/dist/server/adapters/hono.js.map +1 -0
- package/dist/server/adapters/index.cjs +135 -0
- package/dist/server/adapters/index.cjs.map +1 -0
- package/dist/server/adapters/index.d.cts +5 -0
- package/dist/server/adapters/index.d.ts +5 -0
- package/dist/server/adapters/index.js +125 -0
- package/dist/server/adapters/index.js.map +1 -0
- package/dist/server/adapters/next.cjs +30 -0
- package/dist/server/adapters/next.cjs.map +1 -0
- package/dist/server/adapters/next.d.cts +107 -0
- package/dist/server/adapters/next.d.ts +107 -0
- package/dist/server/adapters/next.js +25 -0
- package/dist/server/adapters/next.js.map +1 -0
- package/dist/server/index.cjs +1093 -0
- package/dist/server/index.cjs.map +1 -0
- package/dist/server/index.d.cts +131 -0
- package/dist/server/index.d.ts +131 -0
- package/dist/server/index.js +1080 -0
- package/dist/server/index.js.map +1 -0
- package/dist/types-Cgfcw91r.d.cts +282 -0
- package/dist/types-Cgfcw91r.d.ts +282 -0
- package/dist/types-OVKV6qpE.d.cts +118 -0
- package/dist/types-OVKV6qpE.d.ts +118 -0
- package/package.json +78 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/defineAgent.ts","../src/managers/definition/DefinitionManagerImpl.ts","../src/managers/image/ImageManagerImpl.ts","../src/managers/agent/AgentManager.ts","../src/managers/session/SessionManagerImpl.ts","../src/managers/error/ErrorManager.ts","../src/managers/remote/HttpClient.ts","../src/container/ContainerManagerImpl.ts","../src/AgentX.ts","../src/runtime/sse/SSEDriver.ts","../src/runtime/sse/repository/RemoteRepository.ts","../src/runtime/sse/logger/BrowserLogger.ts","../src/runtime/sse/logger/BrowserLoggerFactory.ts","../src/runtime/sse/RemoteAgentIdResolver.ts","../src/runtime/sse/SSERuntime.ts"],"names":["createLogger","logger","generateMetaImageId","ky","AgentEngine","agent","AgentInstance","STREAM_EVENT_TYPE_NAMES","LogLevelEnum","setLoggerFactory"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * defineAgent implementation\n *\n * \"Define Once, Run Anywhere\"\n *\n * Creates an AgentDefinition with business-level config.\n *\n * @example\n * ```typescript\n * import { defineAgent, createAgentX } from \"agentxjs\";\n * import { runtime } from \"agentxjs-runtime\";\n *\n * const MyAgent = defineAgent({\n * name: \"Translator\",\n * systemPrompt: \"You are a translator\",\n * });\n *\n * const agentx = createAgentX(runtime);\n * const agent = agentx.agents.create(MyAgent);\n * ```\n */\n\nimport type { AgentDefinition, DefineAgentInput } from \"@agentxjs/types\";\n\n/**\n * defineAgent - Create an agent definition\n *\n * @param input - Agent definition input\n * @returns Agent definition\n */\nexport function defineAgent(input: DefineAgentInput): AgentDefinition {\n const { name, description, systemPrompt } = input;\n\n return {\n name,\n description,\n systemPrompt,\n };\n}\n","/**\n * DefinitionManagerImpl - Repository-based implementation of DefinitionManager\n *\n * Part of Docker-style layered architecture:\n * AgentFile/Code → register → Definition → MetaImage → Session → Agent\n *\n * This implementation:\n * - Stores definitions via Repository (in-memory by default)\n * - Auto-creates MetaImage when definition is registered\n * - Maintains local cache for sync access (register/get/list are sync)\n */\n\nimport type {\n DefinitionManager,\n AgentDefinition,\n Repository,\n ImageRecord,\n DefinitionRecord,\n} from \"@agentxjs/types\";\nimport { createLogger } from \"@agentxjs/common\";\n\nconst logger = createLogger(\"agentx/DefinitionManager\");\n\n/**\n * Generate MetaImage ID from definition name\n */\nfunction generateMetaImageId(definitionName: string): string {\n return `meta_${definitionName}`;\n}\n\n/**\n * Convert AgentDefinition to DefinitionRecord\n */\nfunction toDefinitionRecord(definition: AgentDefinition): DefinitionRecord {\n const now = new Date();\n return {\n name: definition.name,\n description: definition.description,\n systemPrompt: definition.systemPrompt,\n definition: definition as unknown as Record<string, unknown>,\n source: \"code\",\n createdAt: now,\n updatedAt: now,\n };\n}\n\n/**\n * DefinitionManager implementation using Repository\n */\nexport class DefinitionManagerImpl implements DefinitionManager {\n // Local cache for sync access\n private cache = new Map<string, AgentDefinition>();\n\n constructor(private readonly repository: Repository) {}\n\n register(definition: AgentDefinition): void {\n if (this.cache.has(definition.name)) {\n throw new Error(`Definition already exists: ${definition.name}`);\n }\n\n // Store in local cache (sync)\n this.cache.set(definition.name, definition);\n\n // Store in repository (async, fire-and-forget)\n const definitionRecord = toDefinitionRecord(definition);\n this.repository.saveDefinition(definitionRecord).catch((err) => {\n logger.error(\"Failed to save definition\", { name: definition.name, error: err });\n });\n\n // Auto-create MetaImage\n const metaImageId = generateMetaImageId(definition.name);\n const imageRecord: ImageRecord = {\n imageId: metaImageId,\n type: \"meta\",\n definitionName: definition.name,\n parentImageId: null,\n definition: definition as unknown as Record<string, unknown>,\n config: {},\n messages: [],\n createdAt: new Date(),\n };\n\n // Save MetaImage to repository (async, fire-and-forget)\n this.repository.saveImage(imageRecord).catch((err) => {\n logger.error(\"Failed to save MetaImage\", { definitionName: definition.name, error: err });\n });\n\n logger.info(\"Definition registered\", {\n name: definition.name,\n metaImageId,\n });\n }\n\n get(name: string): AgentDefinition | undefined {\n return this.cache.get(name);\n }\n\n list(): AgentDefinition[] {\n return Array.from(this.cache.values());\n }\n\n has(name: string): boolean {\n return this.cache.has(name);\n }\n\n unregister(name: string): boolean {\n const definition = this.cache.get(name);\n if (!definition) {\n return false;\n }\n\n // Remove from local cache\n this.cache.delete(name);\n\n // Remove from repository (async, fire-and-forget)\n this.repository.deleteDefinition(name).catch((err) => {\n logger.error(\"Failed to delete definition\", { name, error: err });\n });\n\n // Remove associated MetaImage\n const metaImageId = generateMetaImageId(name);\n this.repository.deleteImage(metaImageId).catch((err) => {\n logger.error(\"Failed to delete MetaImage\", { definitionName: name, error: err });\n });\n\n logger.info(\"Definition unregistered\", { name });\n return true;\n }\n}\n","/**\n * ImageManagerImpl - Implementation of ImageManager\n *\n * Part of Docker-style layered architecture:\n * Definition → [auto] → MetaImage → Session → [commit] → DerivedImage\n *\n * This implementation uses Repository for persistence and ContainerManager for\n * creating agents from images (like `docker run`).\n */\n\nimport type {\n ImageManager,\n AgentImage,\n MetaImage,\n Repository,\n ImageRecord,\n AgentDefinition,\n Agent,\n ContainerManager,\n} from \"@agentxjs/types\";\nimport { createLogger } from \"@agentxjs/common\";\n\nconst logger = createLogger(\"agentx/ImageManager\");\n\n/**\n * Generate MetaImage ID from definition name\n */\nfunction generateMetaImageId(definitionName: string): string {\n return `meta_${definitionName}`;\n}\n\n/**\n * Convert ImageRecord to AgentImage\n */\nfunction toAgentImage(record: ImageRecord): AgentImage {\n const definition = record.definition as unknown as AgentDefinition;\n\n if (record.type === \"meta\") {\n const metaImage: MetaImage = {\n type: \"meta\",\n imageId: record.imageId,\n definitionName: record.definitionName,\n definition,\n config: record.config,\n messages: [] as const,\n createdAt: record.createdAt,\n };\n return metaImage;\n } else {\n return {\n type: \"derived\",\n imageId: record.imageId,\n parentImageId: record.parentImageId!,\n definitionName: record.definitionName,\n definition,\n config: record.config,\n messages: record.messages as unknown as AgentImage[\"messages\"],\n createdAt: record.createdAt,\n } as AgentImage;\n }\n}\n\n/**\n * ImageManager implementation using Repository and ContainerManager\n */\nexport class ImageManagerImpl implements ImageManager {\n private readonly repository: Repository;\n private readonly containerManager: ContainerManager;\n private defaultContainerId?: string;\n\n constructor(\n repository: Repository,\n containerManager: ContainerManager,\n defaultContainerId?: string\n ) {\n this.repository = repository;\n this.containerManager = containerManager;\n this.defaultContainerId = defaultContainerId;\n }\n\n async get(imageId: string): Promise<AgentImage | undefined> {\n const record = await this.repository.findImageById(imageId);\n if (!record) {\n return undefined;\n }\n return toAgentImage(record);\n }\n\n async getMetaImage(definitionName: string): Promise<MetaImage | undefined> {\n const metaImageId = generateMetaImageId(definitionName);\n const record = await this.repository.findImageById(metaImageId);\n\n if (!record || record.type !== \"meta\") {\n return undefined;\n }\n\n return toAgentImage(record) as MetaImage;\n }\n\n async list(): Promise<AgentImage[]> {\n const records = await this.repository.findAllImages();\n return records.map(toAgentImage);\n }\n\n async listByDefinition(definitionName: string): Promise<AgentImage[]> {\n const allRecords = await this.repository.findAllImages();\n const filtered = allRecords.filter((r) => r.definitionName === definitionName);\n return filtered.map(toAgentImage);\n }\n\n async exists(imageId: string): Promise<boolean> {\n return this.repository.imageExists(imageId);\n }\n\n async delete(imageId: string): Promise<boolean> {\n // Check if image exists and is not MetaImage\n const record = await this.repository.findImageById(imageId);\n if (!record) {\n return false;\n }\n\n if (record.type === \"meta\") {\n logger.warn(\"Cannot delete MetaImage directly\", { imageId });\n return false;\n }\n\n await this.repository.deleteImage(imageId);\n logger.info(\"Image deleted\", { imageId });\n return true;\n }\n\n async run(imageId: string, options?: { containerId?: string }): Promise<Agent> {\n logger.info(\"Running agent from image\", { imageId, containerId: options?.containerId });\n\n // Get image\n const image = await this.get(imageId);\n if (!image) {\n throw new Error(`Image not found: ${imageId}`);\n }\n\n // Resolve containerId (explicit > default > auto-create)\n let containerId = options?.containerId || this.defaultContainerId;\n\n if (!containerId) {\n // Auto-create default container\n const container = await this.containerManager.create();\n containerId = container.containerId;\n this.defaultContainerId = containerId;\n logger.debug(\"Auto-created default container\", { containerId });\n }\n\n // Delegate to container manager\n return this.containerManager.run(image, containerId);\n }\n}\n","/**\n * AgentManager - Running agent query and management\n *\n * Docker-style design: Agent creation happens via ContainerManager.run() or ContainerManager.resume(),\n * NOT via AgentManager. AgentManager only queries and manages running agents.\n *\n * All operations delegate to ContainerManager.\n */\n\nimport type { AgentManager as IAgentManager, Agent, ContainerManager } from \"@agentxjs/types\";\nimport { createLogger } from \"@agentxjs/common\";\n\nconst logger = createLogger(\"agentx/AgentManager\");\n\n/**\n * Agent query manager implementation\n *\n * Delegates all operations to ContainerManager.\n */\nexport class AgentManager implements IAgentManager {\n constructor(private readonly containerManager: ContainerManager) {}\n\n /**\n * Get an existing agent by ID\n */\n get(agentId: string): Agent | undefined {\n return this.containerManager.getAgent(agentId);\n }\n\n /**\n * Check if an agent exists\n */\n has(agentId: string): boolean {\n return this.containerManager.hasAgent(agentId);\n }\n\n /**\n * List all agents\n */\n list(): Agent[] {\n return this.containerManager.listAgents();\n }\n\n /**\n * Destroy an agent by ID\n */\n async destroy(agentId: string): Promise<void> {\n logger.debug(\"Destroying agent\", { agentId });\n await this.containerManager.destroyAgent(agentId);\n logger.info(\"Agent destroyed\", { agentId });\n }\n\n /**\n * Destroy all agents\n */\n async destroyAll(): Promise<void> {\n const agents = this.containerManager.listAgents();\n logger.debug(\"Destroying all agents\", { count: agents.length });\n await this.containerManager.destroyAllAgents();\n logger.info(\"All agents destroyed\", { count: agents.length });\n }\n}\n","/**\n * SessionManagerImpl - Session management implementation\n *\n * Manages session lifecycle using Repository for persistence.\n *\n * Part of Docker-style layered architecture:\n * Definition → build → Image → run → Agent\n * ↓\n * Session (external wrapper)\n */\n\nimport type {\n Session,\n SessionManager,\n Repository,\n SessionRecord,\n ImageRecord,\n Agent,\n ContainerManager,\n Message,\n} from \"@agentxjs/types\";\nimport type { MessageRecord, MessageRole } from \"@agentxjs/types\";\nimport { createLogger } from \"@agentxjs/common\";\n\nconst logger = createLogger(\"agentx/SessionManager\");\n\n/**\n * Generate unique session ID\n */\nfunction generateSessionId(): string {\n const timestamp = Date.now().toString(36);\n const random = Math.random().toString(36).substring(2, 8);\n return `session_${timestamp}_${random}`;\n}\n\n/**\n * Generate unique image ID\n */\nfunction generateImageId(): string {\n const timestamp = Date.now().toString(36);\n const random = Math.random().toString(36).substring(2, 8);\n return `image_${timestamp}_${random}`;\n}\n\n/**\n * Session implementation with resume and fork capability\n */\nclass SessionImpl implements Session {\n readonly sessionId: string;\n readonly userId: string;\n readonly imageId: string;\n readonly createdAt: number;\n\n private _title: string | null;\n private _updatedAt: number;\n private readonly repository: Repository;\n private readonly containerManager: ContainerManager;\n private readonly defaultContainerId?: string;\n\n constructor(\n record: SessionRecord,\n repository: Repository,\n containerManager: ContainerManager,\n defaultContainerId?: string\n ) {\n this.sessionId = record.sessionId;\n this.userId = record.userId;\n this.imageId = record.imageId;\n this._title = record.title;\n this.createdAt = record.createdAt.getTime();\n this._updatedAt = record.updatedAt.getTime();\n this.repository = repository;\n this.containerManager = containerManager;\n this.defaultContainerId = defaultContainerId;\n }\n\n get title(): string | null {\n return this._title;\n }\n\n get updatedAt(): number {\n return this._updatedAt;\n }\n\n async resume(options?: { containerId?: string }): Promise<Agent> {\n logger.info(\"Resuming agent from session\", {\n sessionId: this.sessionId,\n imageId: this.imageId,\n containerId: options?.containerId,\n });\n\n // Resolve containerId (explicit > default > auto-create)\n let containerId = options?.containerId || this.defaultContainerId;\n\n if (!containerId) {\n // Auto-create default container\n const container = await this.containerManager.create();\n containerId = container.containerId;\n logger.debug(\"Auto-created default container for session\", {\n containerId,\n sessionId: this.sessionId,\n });\n }\n\n // Delegate to container manager\n const agent = await this.containerManager.resume(this, containerId);\n\n // Auto-collect messages from agent\n this.collect(agent);\n\n return agent;\n }\n\n collect(agent: Agent): void {\n logger.debug(\"Collecting messages from agent\", {\n sessionId: this.sessionId,\n agentId: agent.agentId,\n });\n\n const sessionId = this.sessionId;\n const repository = this.repository;\n\n // Subscribe to all message events and persist them\n const saveMessage = (data: Message, role: MessageRole) => {\n const record: MessageRecord = {\n messageId: data.id,\n sessionId,\n role,\n content: data as unknown as Record<string, unknown>,\n createdAt: new Date(data.timestamp ?? Date.now()),\n };\n\n repository.saveMessage(record).catch((error) => {\n logger.error(\"Failed to persist message\", {\n sessionId,\n messageId: record.messageId,\n error,\n });\n });\n };\n\n agent.on(\"user_message\", (event) => saveMessage(event.data, \"user\"));\n agent.on(\"assistant_message\", (event) => saveMessage(event.data, \"assistant\"));\n agent.on(\"tool_call_message\", (event) => saveMessage(event.data, \"tool\"));\n agent.on(\"tool_result_message\", (event) => saveMessage(event.data, \"tool\"));\n }\n\n async getMessages(): Promise<Message[]> {\n logger.debug(\"Getting messages for session\", { sessionId: this.sessionId });\n\n const records = await this.repository.findMessagesBySessionId(this.sessionId);\n\n // Convert MessageRecord to Message (content stores the full message)\n return records.map((record) => record.content as unknown as Message);\n }\n\n async fork(): Promise<Session> {\n logger.info(\"Forking session\", { sessionId: this.sessionId });\n\n // Get current image\n const imageRecord = await this.repository.findImageById(this.imageId);\n if (!imageRecord) {\n throw new Error(`Image not found: ${this.imageId}`);\n }\n\n // Create new image with copied data (DerivedImage from fork)\n const newImageId = generateImageId();\n const newImageRecord: ImageRecord = {\n imageId: newImageId,\n type: \"derived\",\n definitionName: imageRecord.definitionName,\n parentImageId: imageRecord.imageId,\n definition: imageRecord.definition,\n config: imageRecord.config,\n messages: [...imageRecord.messages], // Copy messages\n createdAt: new Date(),\n };\n await this.repository.saveImage(newImageRecord);\n\n // Create new session pointing to new image\n const newSessionId = generateSessionId();\n const now = new Date();\n const newSessionRecord: SessionRecord = {\n sessionId: newSessionId,\n userId: this.userId,\n imageId: newImageId,\n title: this._title ? `Fork of ${this._title}` : null,\n createdAt: now,\n updatedAt: now,\n };\n await this.repository.saveSession(newSessionRecord);\n\n logger.info(\"Session forked\", {\n originalSessionId: this.sessionId,\n newSessionId,\n newImageId,\n });\n\n return new SessionImpl(\n newSessionRecord,\n this.repository,\n this.containerManager,\n this.defaultContainerId\n );\n }\n\n async setTitle(title: string): Promise<void> {\n logger.debug(\"Setting session title\", { sessionId: this.sessionId, title });\n\n const now = new Date();\n await this.repository.saveSession({\n sessionId: this.sessionId,\n userId: this.userId,\n imageId: this.imageId,\n title,\n createdAt: new Date(this.createdAt),\n updatedAt: now,\n });\n\n this._title = title;\n this._updatedAt = now.getTime();\n\n logger.info(\"Session title updated\", { sessionId: this.sessionId, title });\n }\n}\n\n/**\n * SessionManager implementation\n */\nexport class SessionManagerImpl implements SessionManager {\n private readonly repository: Repository;\n private readonly containerManager: ContainerManager;\n private readonly defaultContainerId?: string;\n\n constructor(\n repository: Repository,\n containerManager: ContainerManager,\n defaultContainerId?: string\n ) {\n this.repository = repository;\n this.containerManager = containerManager;\n this.defaultContainerId = defaultContainerId;\n }\n\n async create(imageId: string, userId: string): Promise<Session> {\n const sessionId = generateSessionId();\n const now = new Date();\n\n const record: SessionRecord = {\n sessionId,\n userId,\n imageId,\n title: null,\n createdAt: now,\n updatedAt: now,\n };\n\n await this.repository.saveSession(record);\n\n logger.info(\"Session created\", { sessionId, imageId, userId });\n\n return new SessionImpl(record, this.repository, this.containerManager, this.defaultContainerId);\n }\n\n async get(sessionId: string): Promise<Session | undefined> {\n const record = await this.repository.findSessionById(sessionId);\n if (!record) return undefined;\n\n return new SessionImpl(record, this.repository, this.containerManager, this.defaultContainerId);\n }\n\n async has(sessionId: string): Promise<boolean> {\n return this.repository.sessionExists(sessionId);\n }\n\n async list(): Promise<Session[]> {\n const records = await this.repository.findAllSessions();\n return records.map(\n (r) => new SessionImpl(r, this.repository, this.containerManager, this.defaultContainerId)\n );\n }\n\n async listByImage(imageId: string): Promise<Session[]> {\n const records = await this.repository.findSessionsByImageId(imageId);\n return records.map(\n (r) => new SessionImpl(r, this.repository, this.containerManager, this.defaultContainerId)\n );\n }\n\n async listByUser(userId: string): Promise<Session[]> {\n const records = await this.repository.findSessionsByUserId(userId);\n return records.map(\n (r) => new SessionImpl(r, this.repository, this.containerManager, this.defaultContainerId)\n );\n }\n\n async destroy(sessionId: string): Promise<void> {\n await this.repository.deleteSession(sessionId);\n logger.info(\"Session destroyed\", { sessionId });\n }\n\n async destroyByImage(imageId: string): Promise<void> {\n await this.repository.deleteSessionsByImageId(imageId);\n logger.info(\"Sessions destroyed by image\", { imageId });\n }\n\n async destroyAll(): Promise<void> {\n const sessions = await this.repository.findAllSessions();\n for (const session of sessions) {\n await this.repository.deleteSession(session.sessionId);\n }\n logger.info(\"All sessions destroyed\");\n }\n}\n","/**\n * ErrorManager - Platform-level error management\n *\n * Collects and handles all agent errors at the platform level.\n * Ensures no error is lost, even if user doesn't register handlers.\n *\n * Design:\n * - Default behavior: Always logs errors (no silent failures)\n * - Extensible: User can add custom handlers (Sentry, alerting, etc.)\n * - Unified: All agent errors flow through here\n *\n * Note: Only available in Local mode. Remote clients handle\n * errors themselves due to environment-specific differences.\n */\n\nimport type {\n ErrorManager as IErrorManager,\n ErrorHandler,\n AgentError,\n ErrorEvent,\n Unsubscribe,\n} from \"@agentxjs/types\";\nimport { createLogger } from \"@agentxjs/common\";\n\nconst logger = createLogger(\"agentx/ErrorManager\");\n\n/**\n * Platform-level error manager implementation\n */\nexport class ErrorManager implements IErrorManager {\n private readonly handlers: Set<ErrorHandler> = new Set();\n\n /**\n * Handle an error from any agent\n *\n * Called internally when an agent emits an error event.\n * 1. Default logging (always)\n * 2. Custom handlers (user-registered)\n */\n handle(agentId: string, error: AgentError, event: ErrorEvent): void {\n // 1. Default logging (always happens)\n this.logError(agentId, error);\n\n // 2. Custom handlers\n for (const handler of this.handlers) {\n try {\n handler.handle(agentId, error, event);\n } catch (e) {\n // Handler error should not break the chain\n logger.error(\"ErrorHandler failed\", { error: e });\n }\n }\n }\n\n /**\n * Add a custom error handler\n */\n addHandler(handler: ErrorHandler): Unsubscribe {\n this.handlers.add(handler);\n return () => {\n this.handlers.delete(handler);\n };\n }\n\n /**\n * Remove an error handler\n */\n removeHandler(handler: ErrorHandler): void {\n this.handlers.delete(handler);\n }\n\n /**\n * Default error logging\n */\n private logError(agentId: string, error: AgentError): void {\n const prefix = `[${agentId}] ${error.category}/${error.code}`;\n\n if (error.severity === \"fatal\") {\n logger.error(`${prefix}: ${error.message}`, { error });\n } else if (error.severity === \"error\") {\n logger.error(`${prefix}: ${error.message}`);\n } else {\n logger.warn(`${prefix}: ${error.message}`);\n }\n }\n}\n","/**\n * HttpClient - ky-based HTTP client for Remote managers\n */\n\nimport ky, { type KyInstance } from \"ky\";\n\n/**\n * HTTP client options\n */\nexport interface HttpClientOptions {\n baseUrl: string;\n headers?: Record<string, string>;\n timeout?: number;\n}\n\n/**\n * API error from server\n */\nexport class ApiError extends Error {\n constructor(\n public readonly code: string,\n message: string,\n public readonly details?: unknown\n ) {\n super(message);\n this.name = \"ApiError\";\n }\n}\n\n/**\n * Create HTTP client instance\n */\nexport function createHttpClient(options: HttpClientOptions): KyInstance {\n return ky.create({\n prefixUrl: options.baseUrl.replace(/\\/+$/, \"\"),\n headers: options.headers,\n timeout: options.timeout || 30000,\n hooks: {\n afterResponse: [\n async (_request, _options, response) => {\n if (!response.ok) {\n const data = (await response.json().catch(() => ({}))) as {\n error?: { code?: string; message?: string; details?: unknown };\n };\n throw new ApiError(\n data.error?.code || \"UNKNOWN_ERROR\",\n data.error?.message || `Request failed: ${response.status}`,\n data.error?.details\n );\n }\n return response;\n },\n ],\n },\n });\n}\n\nexport type { KyInstance };\n","/**\n * ContainerManagerImpl - Implementation of ContainerManager\n *\n * Manages container lifecycle and agent runtime using:\n * - Repository: Persistence for ContainerRecord\n * - Runtime: createSandbox, createDriver for agent creation\n * - AgentEngine: Event processing\n */\n\nimport type {\n Agent,\n AgentImage,\n Session,\n ContainerRecord,\n ContainerConfig,\n Repository,\n Runtime,\n AgentContext,\n AgentDefinition,\n} from \"@agentxjs/types\";\nimport { AgentInstance } from \"@agentxjs/agent\";\nimport { AgentEngine } from \"@agentxjs/engine\";\nimport { createLogger } from \"@agentxjs/common\";\nimport type { ContainerManager } from \"./ContainerManager\";\n\nconst logger = createLogger(\"agentx/ContainerManager\");\n\n/**\n * Generate unique container ID\n */\nfunction generateContainerId(): string {\n const timestamp = Date.now().toString(36);\n const random = Math.random().toString(36).substring(2, 8);\n return `container_${timestamp}_${random}`;\n}\n\n/**\n * Generate unique agent ID\n */\nfunction generateAgentId(): string {\n const timestamp = Date.now().toString(36);\n const random = Math.random().toString(36).substring(2, 8);\n return `agent_${timestamp}_${random}`;\n}\n\n/**\n * ContainerManager implementation\n */\nexport class ContainerManagerImpl implements ContainerManager {\n private readonly agents = new Map<string, Agent>();\n private readonly engine: AgentEngine;\n private readonly runtime: Runtime;\n private readonly repository: Repository;\n\n constructor(runtime: Runtime, repository: Repository) {\n this.runtime = runtime;\n this.repository = repository;\n this.engine = new AgentEngine();\n }\n\n // ==================== Container Lifecycle ====================\n\n async create(config?: ContainerConfig): Promise<ContainerRecord> {\n const containerId = generateContainerId();\n const now = Date.now();\n\n const record: ContainerRecord = {\n containerId,\n createdAt: now,\n updatedAt: now,\n config,\n };\n\n await this.repository.saveContainer(record);\n\n logger.info(\"Container created\", { containerId });\n\n return record;\n }\n\n async get(containerId: string): Promise<ContainerRecord | null> {\n return this.repository.findContainerById(containerId);\n }\n\n async list(): Promise<ContainerRecord[]> {\n return this.repository.findAllContainers();\n }\n\n async delete(containerId: string): Promise<boolean> {\n const exists = await this.repository.containerExists(containerId);\n if (!exists) {\n return false;\n }\n\n await this.repository.deleteContainer(containerId);\n logger.info(\"Container deleted\", { containerId });\n return true;\n }\n\n async exists(containerId: string): Promise<boolean> {\n return this.repository.containerExists(containerId);\n }\n\n // ==================== Agent Runtime ====================\n\n async run(image: AgentImage, containerId: string): Promise<Agent> {\n logger.info(\"Running agent from image\", {\n imageId: image.imageId,\n containerId,\n });\n\n // Verify container exists\n const container = await this.repository.findContainerById(containerId);\n if (!container) {\n throw new Error(`Container not found: ${containerId}`);\n }\n\n // Resolve agent ID (local or from server depending on Runtime)\n let agentId: string;\n if (this.runtime.agentIdResolver) {\n agentId = await this.runtime.agentIdResolver.resolveForRun(image.imageId, containerId);\n } else {\n agentId = generateAgentId();\n }\n\n // Create context\n const context: AgentContext = {\n agentId,\n createdAt: Date.now(),\n };\n\n // Create sandbox using containerId for isolation\n const sandbox = this.runtime.createSandbox(containerId);\n\n // Create driver\n const driver = this.runtime.createDriver(image.definition, context, sandbox);\n\n // Create agent\n const agent = new AgentInstance(image.definition, context, this.engine, driver, sandbox);\n\n // Register agent\n this.agents.set(agentId, agent);\n\n logger.info(\"Agent started\", {\n agentId,\n imageId: image.imageId,\n containerId,\n definitionName: image.definition.name,\n });\n\n return agent;\n }\n\n async resume(session: Session, containerId: string): Promise<Agent> {\n logger.info(\"Resuming agent from session\", {\n sessionId: session.sessionId,\n imageId: session.imageId,\n containerId,\n });\n\n // Verify container exists\n const container = await this.repository.findContainerById(containerId);\n if (!container) {\n throw new Error(`Container not found: ${containerId}`);\n }\n\n // Get image from repository\n const imageRecord = await this.repository.findImageById(session.imageId);\n if (!imageRecord) {\n throw new Error(`Image not found: ${session.imageId}`);\n }\n\n // Resolve agent ID (local or from server depending on Runtime)\n let agentId: string;\n if (this.runtime.agentIdResolver) {\n agentId = await this.runtime.agentIdResolver.resolveForResume(session.sessionId, containerId);\n } else {\n agentId = generateAgentId();\n }\n\n // Create context\n const context: AgentContext = {\n agentId,\n createdAt: Date.now(),\n };\n\n // Create sandbox using containerId for isolation\n const sandbox = this.runtime.createSandbox(containerId);\n\n // Create driver\n const definition = imageRecord.definition as unknown as AgentDefinition;\n const driver = this.runtime.createDriver(definition, context, sandbox);\n\n // Create agent\n const agent = new AgentInstance(definition, context, this.engine, driver, sandbox);\n\n // Register agent\n this.agents.set(agentId, agent);\n\n logger.info(\"Agent resumed\", {\n agentId,\n sessionId: session.sessionId,\n imageId: session.imageId,\n containerId,\n });\n\n return agent;\n }\n\n async destroyAgent(agentId: string): Promise<void> {\n const agent = this.agents.get(agentId);\n if (!agent) {\n logger.warn(\"Agent not found for destroy\", { agentId });\n return;\n }\n\n logger.debug(\"Destroying agent\", { agentId });\n await agent.destroy();\n this.agents.delete(agentId);\n logger.info(\"Agent destroyed\", { agentId });\n }\n\n getAgent(agentId: string): Agent | undefined {\n return this.agents.get(agentId);\n }\n\n hasAgent(agentId: string): boolean {\n return this.agents.has(agentId);\n }\n\n listAgents(): Agent[] {\n return Array.from(this.agents.values());\n }\n\n async destroyAllAgents(): Promise<void> {\n const agentIds = Array.from(this.agents.keys());\n logger.debug(\"Destroying all agents\", { count: agentIds.length });\n await Promise.all(agentIds.map((id) => this.destroyAgent(id)));\n logger.info(\"All agents destroyed\", { count: agentIds.length });\n }\n}\n","/**\n * AgentX - Platform API Implementation\n *\n * The central entry point for all agent operations.\n * Runtime determines the execution environment (Node.js, Browser, etc.)\n *\n * @example\n * ```typescript\n * import { createAgentX } from \"agentxjs\";\n * import { nodeRuntime } from \"agentxjs-runtime\";\n *\n * const agentx = createAgentX(nodeRuntime());\n *\n * // Simple usage (auto-created default container)\n * const agent = await agentx.images.run(imageId);\n *\n * // Multi-tenant usage (explicit container)\n * const container = await agentx.containers.create();\n * const agent = await agentx.images.run(imageId, { containerId: container.containerId });\n * ```\n */\n\nimport type { AgentX, Runtime } from \"@agentxjs/types\";\nimport { createLogger } from \"@agentxjs/common\";\nimport {\n AgentManager,\n SessionManagerImpl,\n ErrorManager,\n DefinitionManagerImpl,\n ImageManagerImpl,\n} from \"./managers\";\nimport { ContainerManagerImpl } from \"./container\";\n\nconst logger = createLogger(\"agentx/AgentX\");\n\n/**\n * AgentX creation options\n */\nexport interface CreateAgentXOptions {\n /**\n * Default container ID to use for operations\n * If not provided, a default container will be auto-created\n */\n containerId?: string;\n}\n\n/**\n * Create AgentX instance with Runtime\n *\n * @param runtime - Runtime provides infrastructure (createSandbox, createDriver, repository)\n * @param options - Optional configuration\n * @returns AgentX instance\n *\n * @example\n * ```typescript\n * import { createAgentX } from \"agentxjs\";\n * import { nodeRuntime } from \"agentxjs-runtime\";\n *\n * // Simple usage - auto-creates default container\n * const agentx = createAgentX(nodeRuntime());\n *\n * // Multi-tenant - specify container\n * const agentx = createAgentX(nodeRuntime(), { containerId: \"tenant_123\" });\n * ```\n */\nexport function createAgentX(runtime: Runtime, options?: CreateAgentXOptions): AgentX {\n logger.info(\"Creating AgentX instance\", { runtime: runtime.name });\n\n // Check repository\n if (!runtime.repository) {\n throw new Error(\"Runtime must have a repository for persistence\");\n }\n\n const repository = runtime.repository;\n\n // Create container manager\n const containerManager = new ContainerManagerImpl(runtime, repository);\n\n // Create other managers\n const errorManager = new ErrorManager();\n const definitionManager = new DefinitionManagerImpl(repository);\n const agentManager = new AgentManager(containerManager);\n\n // Create image manager with repository and container manager\n const imageManager = new ImageManagerImpl(repository, containerManager, options?.containerId);\n\n // Create session manager with repository and container manager\n const sessionManager = new SessionManagerImpl(repository, containerManager, options?.containerId);\n\n logger.debug(\"AgentX instance created\", { runtime: runtime.name });\n\n return {\n mode: \"local\",\n containers: containerManager,\n definitions: definitionManager,\n images: imageManager,\n agents: agentManager,\n sessions: sessionManager,\n errors: errorManager,\n };\n}\n","/* eslint-disable no-undef */\n/**\n * SSEDriver - Browser-side driver that connects to remote AgentX server via SSE\n *\n * This driver enables the client to use the full agentx stack (including AgentEngine)\n * by bridging SSE push events to the async generator pull model.\n *\n * @example\n * ```typescript\n * import { createSSERuntime } from \"agentxjs/client\";\n * import { createAgentX, defineAgent } from \"agentxjs\";\n *\n * const runtime = createSSERuntime({\n * serverUrl: \"http://localhost:5200/agentx\",\n * agentId: \"agent_123\"\n * });\n * const agentx = createAgentX(runtime);\n * const agent = agentx.agents.create(defineAgent({ name: \"Assistant\" }));\n *\n * agent.on(\"assistant_message\", (event) => {\n * console.log(event.data.content);\n * });\n *\n * await agent.receive(\"Hello!\");\n * ```\n */\n\nimport type { UserMessage, StreamEventType, AgentDriver } from \"@agentxjs/types\";\nimport { STREAM_EVENT_TYPE_NAMES } from \"@agentxjs/types\";\n\n/**\n * Persistent SSE connection manager\n *\n * Maintains a single SSE connection for the lifetime of the driver.\n * Bridges SSE push model to async generator pull model for each receive() call.\n */\nclass PersistentSSEConnection {\n private eventSource: EventSource | null = null;\n private messageQueue: StreamEventType[] = [];\n private activeIterators: Set<{\n resolve: (result: IteratorResult<StreamEventType>) => void;\n reject: (error: Error) => void;\n }> = new Set();\n private isDone = false;\n\n constructor(\n private readonly serverUrl: string,\n private readonly agentId: string,\n private readonly sseParams: Record<string, string> = {}\n ) {}\n\n /**\n * Initialize SSE connection\n */\n connect(): void {\n if (this.eventSource) {\n return; // Already connected\n }\n\n // Build SSE URL with optional query parameters (for auth, etc.)\n let sseUrl = `${this.serverUrl}/agents/${this.agentId}/sse`;\n if (Object.keys(this.sseParams).length > 0) {\n const params = new URLSearchParams(this.sseParams);\n sseUrl += `?${params.toString()}`;\n }\n this.eventSource = new EventSource(sseUrl);\n\n const handleEvent = (event: MessageEvent) => {\n try {\n const data = JSON.parse(event.data) as StreamEventType;\n\n // Notify all active iterators\n if (this.activeIterators.size > 0) {\n const iterator = this.activeIterators.values().next().value;\n if (iterator) {\n this.activeIterators.delete(iterator);\n iterator.resolve({ value: data, done: false });\n }\n } else {\n // Queue event if no iterator is waiting\n this.messageQueue.push(data);\n }\n } catch {\n // Ignore parse errors\n }\n };\n\n const handleError = () => {\n this.isDone = true;\n this.eventSource?.close();\n this.eventSource = null;\n\n // Reject all waiting iterators\n for (const iterator of this.activeIterators) {\n iterator.reject(new Error(\"SSE connection error\"));\n }\n this.activeIterators.clear();\n };\n\n // Listen for all stream event types\n for (const eventType of STREAM_EVENT_TYPE_NAMES) {\n this.eventSource.addEventListener(eventType, handleEvent as any);\n }\n\n // Listen for error events (independent from stream events, transportable via SSE)\n this.eventSource.addEventListener(\"error\", handleEvent as any);\n\n // Also listen for generic message events (fallback)\n this.eventSource.onmessage = handleEvent;\n\n // Handle SSE connection errors (different from our ErrorEvent)\n this.eventSource.onerror = handleError;\n }\n\n /**\n * Create an async iterable for a single receive() call\n *\n * This iterator continues until a final message_stop is received (stopReason !== \"tool_use\").\n * For tool calls, this means it will span multiple message_start/message_stop cycles.\n * The SSE connection itself remains open for future receive() calls.\n */\n createIterator(): AsyncIterable<StreamEventType> {\n const connection = this;\n\n return {\n [Symbol.asyncIterator]() {\n let turnComplete = false;\n\n return {\n async next(): Promise<IteratorResult<StreamEventType>> {\n // Return queued events first\n if (connection.messageQueue.length > 0) {\n const event = connection.messageQueue.shift()!;\n\n // Check if turn is complete at message_stop\n // Continue if stopReason is \"tool_use\", stop otherwise\n if (event.type === \"message_stop\") {\n const stopReason = event.data.stopReason;\n if (stopReason !== \"tool_use\") {\n turnComplete = true;\n }\n }\n\n return { value: event, done: false };\n }\n\n // If turn is complete, end iteration (but keep connection open for next receive())\n if (turnComplete) {\n return { done: true, value: undefined as any };\n }\n\n // If connection died, end iteration\n if (connection.isDone) {\n return { done: true, value: undefined as any };\n }\n\n // Wait for next event\n return new Promise((resolve, reject) => {\n // Wrap resolve to check for completion\n const wrappedResolve = (result: IteratorResult<StreamEventType>) => {\n if (!result.done) {\n // Check if turn is complete at message_stop\n if (result.value.type === \"message_stop\") {\n const stopReason = result.value.data.stopReason;\n if (stopReason !== \"tool_use\") {\n turnComplete = true;\n }\n }\n }\n resolve(result);\n };\n\n const iterator = { resolve: wrappedResolve, reject };\n connection.activeIterators.add(iterator);\n });\n },\n\n async return(): Promise<IteratorResult<StreamEventType>> {\n // Cleanup this iterator (but keep connection alive)\n return { done: true, value: undefined as any };\n },\n };\n },\n };\n }\n\n /**\n * Close the connection\n */\n close(): void {\n this.isDone = true;\n\n if (this.eventSource) {\n this.eventSource.close();\n this.eventSource = null;\n }\n\n // Reject all waiting iterators\n for (const iterator of this.activeIterators) {\n iterator.reject(new Error(\"Connection closed\"));\n }\n this.activeIterators.clear();\n this.messageQueue = [];\n }\n}\n\n/**\n * SSEDriver configuration\n */\nexport interface SSEDriverConfig {\n serverUrl: string;\n agentId: string;\n headers?: Record<string, string>;\n /**\n * Query parameters to append to SSE URL.\n * Use this for authentication since EventSource doesn't support headers.\n */\n sseParams?: Record<string, string>;\n}\n\n/**\n * Create an SSEDriver instance\n *\n * Factory function for browser-side SSE driver.\n */\nexport function createSSEDriver(config: SSEDriverConfig): AgentDriver {\n const { serverUrl, agentId, headers = {}, sseParams = {} } = config;\n let connection: PersistentSSEConnection | null = null;\n\n return {\n name: \"SSEDriver\",\n\n async *receive(message: UserMessage): AsyncIterable<StreamEventType> {\n // 1. Ensure SSE connection is established\n if (!connection) {\n connection = new PersistentSSEConnection(serverUrl, agentId, sseParams);\n connection.connect();\n }\n\n // 2. Send message to server via HTTP POST\n const messageUrl = `${serverUrl}/agents/${agentId}/messages`;\n const response = await fetch(messageUrl, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n ...headers,\n },\n body: JSON.stringify({\n content: typeof message.content === \"string\" ? message.content : message.content,\n }),\n });\n\n if (!response.ok) {\n const errorBody = (await response.json().catch(() => ({}))) as {\n error?: { message?: string };\n };\n throw new Error(errorBody.error?.message || `HTTP ${response.status}`);\n }\n\n // 3. Yield events from persistent SSE connection\n yield* connection.createIterator();\n },\n\n interrupt(): void {\n // Call server interrupt endpoint (fire-and-forget)\n const interruptUrl = `${serverUrl}/agents/${agentId}/interrupt`;\n fetch(interruptUrl, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n ...headers,\n },\n }).catch(() => {\n // Ignore errors - interrupt is best-effort\n });\n },\n };\n}\n","/**\n * RemoteRepository - HTTP-based repository implementation\n *\n * Communicates with remote AgentX server for persistence.\n *\n * Part of Docker-style layered architecture:\n * Definition → build → Image → run → Agent\n * ↓\n * Session (external wrapper)\n */\n\nimport type {\n Repository,\n DefinitionRecord,\n ImageRecord,\n SessionRecord,\n MessageRecord,\n ContainerRecord,\n} from \"@agentxjs/types\";\nimport { createLogger } from \"@agentxjs/common\";\nimport { createHttpClient, type KyInstance } from \"~/managers/remote/HttpClient\";\n\nconst logger = createLogger(\"agentx/RemoteRepository\");\n\nexport interface RemoteRepositoryOptions {\n serverUrl: string;\n headers?: Record<string, string>;\n}\n\nexport class RemoteRepository implements Repository {\n private readonly client: KyInstance;\n\n constructor(options: RemoteRepositoryOptions) {\n this.client = createHttpClient({\n baseUrl: options.serverUrl,\n headers: options.headers,\n });\n logger.debug(\"RemoteRepository created\", { serverUrl: options.serverUrl });\n }\n\n // ==================== Definition ====================\n\n async saveDefinition(record: DefinitionRecord): Promise<void> {\n await this.client.put(`definitions/${record.name}`, { json: record });\n }\n\n async findDefinitionByName(name: string): Promise<DefinitionRecord | null> {\n try {\n const result = await this.client.get(`definitions/${name}`).json<DefinitionRecord>();\n return this.parseDefinitionRecord(result);\n } catch (error: unknown) {\n if (this.isNotFound(error)) return null;\n throw error;\n }\n }\n\n async findAllDefinitions(): Promise<DefinitionRecord[]> {\n const result = await this.client.get(\"definitions\").json<DefinitionRecord[]>();\n return result.map((r) => this.parseDefinitionRecord(r));\n }\n\n async deleteDefinition(name: string): Promise<void> {\n await this.client.delete(`definitions/${name}`);\n }\n\n async definitionExists(name: string): Promise<boolean> {\n try {\n await this.client.head(`definitions/${name}`);\n return true;\n } catch {\n return false;\n }\n }\n\n // ==================== Image ====================\n\n async saveImage(record: ImageRecord): Promise<void> {\n await this.client.put(`images/${record.imageId}`, { json: record });\n }\n\n async findImageById(imageId: string): Promise<ImageRecord | null> {\n try {\n const result = await this.client.get(`images/${imageId}`).json<ImageRecord>();\n return this.parseImageRecord(result);\n } catch (error: unknown) {\n if (this.isNotFound(error)) return null;\n throw error;\n }\n }\n\n async findAllImages(): Promise<ImageRecord[]> {\n const result = await this.client.get(\"images\").json<ImageRecord[]>();\n return result.map((r) => this.parseImageRecord(r));\n }\n\n async deleteImage(imageId: string): Promise<void> {\n await this.client.delete(`images/${imageId}`);\n }\n\n async imageExists(imageId: string): Promise<boolean> {\n try {\n await this.client.head(`images/${imageId}`);\n return true;\n } catch {\n return false;\n }\n }\n\n // ==================== Session ====================\n\n async saveSession(record: SessionRecord): Promise<void> {\n await this.client.put(`sessions/${record.sessionId}`, { json: record });\n }\n\n async findSessionById(sessionId: string): Promise<SessionRecord | null> {\n try {\n const result = await this.client.get(`sessions/${sessionId}`).json<SessionRecord>();\n return this.parseSessionRecord(result);\n } catch (error: unknown) {\n if (this.isNotFound(error)) return null;\n throw error;\n }\n }\n\n async findSessionsByImageId(imageId: string): Promise<SessionRecord[]> {\n const result = await this.client.get(`images/${imageId}/sessions`).json<SessionRecord[]>();\n return result.map((r) => this.parseSessionRecord(r));\n }\n\n async findSessionsByUserId(userId: string): Promise<SessionRecord[]> {\n const result = await this.client.get(`users/${userId}/sessions`).json<SessionRecord[]>();\n return result.map((r) => this.parseSessionRecord(r));\n }\n\n async findAllSessions(): Promise<SessionRecord[]> {\n const result = await this.client.get(\"sessions\").json<SessionRecord[]>();\n return result.map((r) => this.parseSessionRecord(r));\n }\n\n async deleteSession(sessionId: string): Promise<void> {\n await this.client.delete(`sessions/${sessionId}`);\n }\n\n async deleteSessionsByImageId(imageId: string): Promise<void> {\n await this.client.delete(`images/${imageId}/sessions`);\n }\n\n async sessionExists(sessionId: string): Promise<boolean> {\n try {\n await this.client.head(`sessions/${sessionId}`);\n return true;\n } catch {\n return false;\n }\n }\n\n // ==================== Message ====================\n\n /**\n * Save message - noop in browser\n *\n * Messages are persisted by server-side SessionCollector.\n * Browser-side calls this but it does nothing to avoid duplicate saves.\n */\n async saveMessage(_record: MessageRecord): Promise<void> {\n // Noop - server handles persistence via SessionCollector\n logger.debug(\"saveMessage called (noop in browser)\");\n }\n\n async findMessageById(messageId: string): Promise<MessageRecord | null> {\n try {\n const result = await this.client.get(`messages/${messageId}`).json<MessageRecord>();\n return this.parseMessageRecord(result);\n } catch (error: unknown) {\n if (this.isNotFound(error)) return null;\n throw error;\n }\n }\n\n async findMessagesBySessionId(sessionId: string): Promise<MessageRecord[]> {\n const result = await this.client.get(`sessions/${sessionId}/messages`).json<MessageRecord[]>();\n return result.map((r) => this.parseMessageRecord(r));\n }\n\n async deleteMessage(messageId: string): Promise<void> {\n await this.client.delete(`messages/${messageId}`);\n }\n\n async deleteMessagesBySessionId(sessionId: string): Promise<void> {\n await this.client.delete(`sessions/${sessionId}/messages`);\n }\n\n async countMessagesBySessionId(sessionId: string): Promise<number> {\n const result = await this.client\n .get(`sessions/${sessionId}/messages/count`)\n .json<{ count: number }>();\n return result.count;\n }\n\n // ==================== Container ====================\n\n async saveContainer(record: ContainerRecord): Promise<void> {\n await this.client.put(`containers/${record.containerId}`, { json: record });\n }\n\n async findContainerById(containerId: string): Promise<ContainerRecord | null> {\n try {\n const result = await this.client.get(`containers/${containerId}`).json<ContainerRecord>();\n return this.parseContainerRecord(result);\n } catch (error: unknown) {\n if (this.isNotFound(error)) return null;\n throw error;\n }\n }\n\n async findAllContainers(): Promise<ContainerRecord[]> {\n const result = await this.client.get(\"containers\").json<ContainerRecord[]>();\n return result.map((r) => this.parseContainerRecord(r));\n }\n\n async deleteContainer(containerId: string): Promise<void> {\n await this.client.delete(`containers/${containerId}`);\n }\n\n async containerExists(containerId: string): Promise<boolean> {\n try {\n await this.client.head(`containers/${containerId}`);\n return true;\n } catch {\n return false;\n }\n }\n\n // ==================== Helpers ====================\n\n private isNotFound(error: unknown): boolean {\n return (error as { response?: { status: number } })?.response?.status === 404;\n }\n\n private parseDefinitionRecord(raw: DefinitionRecord): DefinitionRecord {\n return {\n ...raw,\n createdAt: new Date(raw.createdAt),\n updatedAt: new Date(raw.updatedAt),\n };\n }\n\n private parseImageRecord(raw: ImageRecord): ImageRecord {\n return {\n ...raw,\n createdAt: new Date(raw.createdAt),\n };\n }\n\n private parseSessionRecord(raw: SessionRecord): SessionRecord {\n return {\n ...raw,\n createdAt: new Date(raw.createdAt),\n updatedAt: new Date(raw.updatedAt),\n };\n }\n\n private parseMessageRecord(raw: MessageRecord): MessageRecord {\n return {\n ...raw,\n createdAt: new Date(raw.createdAt),\n };\n }\n\n private parseContainerRecord(raw: ContainerRecord): ContainerRecord {\n return {\n ...raw,\n // ContainerRecord uses number timestamps, no conversion needed\n };\n }\n}\n","/**\n * BrowserLogger - Styled console logger for browsers\n *\n * Uses CSS styling for beautiful console output in browser DevTools.\n * Provides colorful, grouped logs with timestamps.\n */\n\nimport type { Logger, LogContext, LogLevel } from \"@agentxjs/types\";\nimport { LogLevel as LogLevelEnum } from \"@agentxjs/types\";\n\nexport interface BrowserLoggerOptions {\n level?: LogLevel;\n collapsed?: boolean; // Use console.groupCollapsed for context\n}\n\nexport class BrowserLogger implements Logger {\n readonly name: string;\n readonly level: LogLevel;\n private readonly collapsed: boolean;\n\n // CSS styles for different log levels\n private static readonly STYLES = {\n DEBUG: \"color: #6B7280; font-weight: normal;\", // gray\n INFO: \"color: #10B981; font-weight: normal;\", // green\n WARN: \"color: #F59E0B; font-weight: bold;\", // amber\n ERROR: \"color: #EF4444; font-weight: bold;\", // red\n TIMESTAMP: \"color: #9CA3AF; font-weight: normal;\", // light gray\n NAME: \"color: #8B5CF6; font-weight: normal;\", // purple\n MESSAGE: \"color: inherit; font-weight: normal;\",\n };\n\n // Badge styles for level indicators\n private static readonly BADGE_STYLES = {\n DEBUG:\n \"background: #E5E7EB; color: #374151; padding: 2px 6px; border-radius: 3px; font-size: 11px;\",\n INFO: \"background: #D1FAE5; color: #065F46; padding: 2px 6px; border-radius: 3px; font-size: 11px;\",\n WARN: \"background: #FEF3C7; color: #92400E; padding: 2px 6px; border-radius: 3px; font-size: 11px;\",\n ERROR:\n \"background: #FEE2E2; color: #991B1B; padding: 2px 6px; border-radius: 3px; font-size: 11px;\",\n };\n\n constructor(name: string, options: BrowserLoggerOptions = {}) {\n this.name = name;\n this.level = options.level ?? LogLevelEnum.INFO;\n this.collapsed = options.collapsed ?? true;\n }\n\n debug(message: string, context?: LogContext): void {\n if (this.isDebugEnabled()) {\n this.log(\"DEBUG\", message, context);\n }\n }\n\n info(message: string, context?: LogContext): void {\n if (this.isInfoEnabled()) {\n this.log(\"INFO\", message, context);\n }\n }\n\n warn(message: string, context?: LogContext): void {\n if (this.isWarnEnabled()) {\n this.log(\"WARN\", message, context);\n }\n }\n\n error(message: string | Error, context?: LogContext): void {\n if (this.isErrorEnabled()) {\n if (message instanceof Error) {\n this.log(\"ERROR\", message.message, { ...context, stack: message.stack });\n } else {\n this.log(\"ERROR\", message, context);\n }\n }\n }\n\n isDebugEnabled(): boolean {\n return this.level <= LogLevelEnum.DEBUG;\n }\n\n isInfoEnabled(): boolean {\n return this.level <= LogLevelEnum.INFO;\n }\n\n isWarnEnabled(): boolean {\n return this.level <= LogLevelEnum.WARN;\n }\n\n isErrorEnabled(): boolean {\n return this.level <= LogLevelEnum.ERROR;\n }\n\n private log(level: string, message: string, context?: LogContext): void {\n const timestamp = new Date().toLocaleTimeString();\n const consoleMethod = this.getConsoleMethod(level);\n const badgeStyle = BrowserLogger.BADGE_STYLES[level as keyof typeof BrowserLogger.BADGE_STYLES];\n\n // Format: [TIME] [LEVEL] [NAME] message\n const format = `%c${timestamp} %c${level}%c %c[${this.name}]%c ${message}`;\n const styles = [\n BrowserLogger.STYLES.TIMESTAMP,\n badgeStyle,\n \"\", // reset after badge\n BrowserLogger.STYLES.NAME,\n BrowserLogger.STYLES.MESSAGE,\n ];\n\n if (context && Object.keys(context).length > 0) {\n // Use grouping for context\n const groupMethod = this.collapsed ? console.groupCollapsed : console.group;\n groupMethod.call(console, format, ...styles);\n console.log(\"Context:\", context);\n console.groupEnd();\n } else {\n consoleMethod(format, ...styles);\n }\n }\n\n private getConsoleMethod(level: string): (...args: unknown[]) => void {\n switch (level) {\n case \"DEBUG\":\n return console.debug.bind(console);\n case \"INFO\":\n return console.info.bind(console);\n case \"WARN\":\n return console.warn.bind(console);\n case \"ERROR\":\n return console.error.bind(console);\n default:\n return console.log.bind(console);\n }\n }\n}\n","/**\n * BrowserLoggerFactory - Factory for creating BrowserLogger instances\n *\n * Creates styled console loggers for browser environments.\n * Used by SSERuntime to provide browser-optimized logging.\n */\n\nimport type { Logger, LoggerFactory, LogLevel } from \"@agentxjs/types\";\nimport { BrowserLogger, type BrowserLoggerOptions } from \"./BrowserLogger\";\n\nexport interface BrowserLoggerFactoryOptions {\n level?: LogLevel;\n collapsed?: boolean;\n}\n\nexport class BrowserLoggerFactory implements LoggerFactory {\n private readonly options: BrowserLoggerOptions;\n private readonly loggers: Map<string, BrowserLogger> = new Map();\n\n constructor(options: BrowserLoggerFactoryOptions = {}) {\n this.options = options;\n }\n\n getLogger(name: string): Logger {\n if (this.loggers.has(name)) {\n return this.loggers.get(name)!;\n }\n\n const logger = new BrowserLogger(name, this.options);\n this.loggers.set(name, logger);\n return logger;\n }\n}\n","/**\n * RemoteAgentIdResolver - Resolves agent ID from remote server\n *\n * Calls server API to create agent and returns server's agent ID.\n * This ensures browser and server use the same agentId.\n */\n\nimport type { AgentIdResolver } from \"@agentxjs/types\";\nimport { createHttpClient, type KyInstance } from \"~/managers/remote/HttpClient\";\nimport { createLogger } from \"@agentxjs/common\";\n\nconst logger = createLogger(\"agentx/RemoteAgentIdResolver\");\n\nexport interface RemoteAgentIdResolverOptions {\n serverUrl: string;\n headers?: Record<string, string>;\n}\n\ninterface RunImageResponse {\n agentId: string;\n}\n\ninterface ResumeSessionResponse {\n agentId: string;\n}\n\n/**\n * Remote implementation of AgentIdResolver\n *\n * Calls server API to create agent before local agent is created.\n */\nexport class RemoteAgentIdResolver implements AgentIdResolver {\n private readonly client: KyInstance;\n\n constructor(options: RemoteAgentIdResolverOptions) {\n this.client = createHttpClient({\n baseUrl: options.serverUrl,\n headers: options.headers,\n });\n }\n\n async resolveForRun(imageId: string, containerId: string): Promise<string> {\n logger.debug(\"Resolving agent ID for run\", { imageId, containerId });\n\n const response = await this.client\n .post(`images/${imageId}/run`, {\n json: { containerId },\n })\n .json<RunImageResponse>();\n\n logger.info(\"Agent ID resolved for run\", { imageId, agentId: response.agentId });\n return response.agentId;\n }\n\n async resolveForResume(sessionId: string, containerId: string): Promise<string> {\n logger.debug(\"Resolving agent ID for resume\", { sessionId, containerId });\n\n const response = await this.client\n .post(`sessions/${sessionId}/resume`, {\n json: { containerId },\n })\n .json<ResumeSessionResponse>();\n\n logger.info(\"Agent ID resolved for resume\", { sessionId, agentId: response.agentId });\n return response.agentId;\n }\n}\n","/**\n * SSERuntime - Browser Runtime implementation\n *\n * \"Define Once, Run Anywhere\"\n *\n * Provides Runtime for browser that connects to remote AgentX server via SSE.\n * Uses the same API as NodeRuntime, enabling unified code across platforms.\n *\n * @example\n * ```typescript\n * import { createAgentX } from \"agentxjs\";\n * import { createSSERuntime } from \"agentxjs/client\";\n * import { defineAgent } from \"agentxjs\";\n *\n * const MyAgent = defineAgent({\n * name: \"Assistant\",\n * systemPrompt: \"You are a helpful assistant\",\n * });\n *\n * // Browser: connect to remote server\n * const runtime = createSSERuntime({ serverUrl: \"http://localhost:5200/agentx\" });\n * const agentx = createAgentX(runtime);\n * const agent = agentx.agents.create(MyAgent);\n *\n * // Same API as server-side!\n * agent.on(\"assistant_message\", (event) => {\n * console.log(event.data.content);\n * });\n *\n * await agent.receive(\"Hello!\");\n * ```\n */\n\nimport type {\n Runtime,\n Sandbox,\n RuntimeDriver,\n AgentContext,\n AgentDefinition,\n Repository,\n LoggerFactory,\n Logger,\n AgentIdResolver,\n} from \"@agentxjs/types\";\nimport { setLoggerFactory } from \"@agentxjs/common\";\nimport { createSSEDriver } from \"./SSEDriver\";\nimport { RemoteRepository } from \"./repository\";\nimport { BrowserLoggerFactory } from \"./logger\";\nimport { RemoteAgentIdResolver } from \"./RemoteAgentIdResolver\";\n\n// ============================================================================\n// NoopSandbox - Browser doesn't need local resources\n// ============================================================================\n\nconst noopSandbox: Sandbox = {\n name: \"browser-noop\",\n workspace: {\n id: \"noop\",\n name: \"noop\",\n path: \"\", // Browser has no local workspace\n },\n llm: {\n name: \"noop\",\n provide: () => ({}),\n },\n};\n\n// ============================================================================\n// SSERuntime - Browser Runtime implementation\n// ============================================================================\n\n/**\n * SSERuntime configuration\n */\nexport interface SSERuntimeConfig {\n /**\n * Server base URL (e.g., \"http://localhost:5200/agentx\")\n */\n serverUrl: string;\n\n /**\n * Optional request headers (for auth, etc.)\n * Note: These headers are used for HTTP requests (POST, DELETE, etc.)\n * but NOT for SSE connections (EventSource doesn't support headers).\n * For SSE auth, use sseParams to pass token via query string.\n */\n headers?: Record<string, string>;\n\n /**\n * Optional query parameters to append to SSE URL.\n * Use this for authentication since EventSource doesn't support headers.\n *\n * @example\n * ```typescript\n * createSSERuntime({\n * serverUrl: \"http://localhost:5200/agentx\",\n * headers: { Authorization: \"Bearer xxx\" }, // For HTTP requests\n * sseParams: { token: \"xxx\" }, // For SSE connections\n * });\n * ```\n */\n sseParams?: Record<string, string>;\n}\n\n/**\n * SSERuntime - Runtime for browser with SSE driver\n *\n * Connects to remote AgentX server via SSE.\n * All resources (LLM, etc.) are provided by the server.\n *\n * Uses RemoteContainer which calls server POST /agents to create agents.\n * This ensures browser and server use the same agentId.\n */\nclass SSERuntime implements Runtime {\n readonly name = \"sse\";\n readonly repository: Repository;\n readonly loggerFactory: LoggerFactory;\n readonly agentIdResolver: AgentIdResolver;\n\n private readonly serverUrl: string;\n private readonly headers: Record<string, string>;\n private readonly sseParams: Record<string, string>;\n\n constructor(config: SSERuntimeConfig) {\n this.serverUrl = config.serverUrl.replace(/\\/+$/, \"\"); // Remove trailing slash\n this.headers = config.headers ?? {};\n this.sseParams = config.sseParams ?? {};\n\n // Create and configure BrowserLoggerFactory\n this.loggerFactory = new BrowserLoggerFactory({\n collapsed: true,\n });\n\n // Set as global logger factory\n setLoggerFactory(this.loggerFactory);\n\n this.repository = new RemoteRepository({\n serverUrl: this.serverUrl,\n headers: this.headers,\n });\n\n // Create agent ID resolver for remote agent creation\n this.agentIdResolver = new RemoteAgentIdResolver({\n serverUrl: this.serverUrl,\n headers: this.headers,\n });\n }\n\n createSandbox(_containerId: string): Sandbox {\n // Browser doesn't need local resources\n return noopSandbox;\n }\n\n createDriver(\n _definition: AgentDefinition,\n context: AgentContext,\n _sandbox: Sandbox\n ): RuntimeDriver {\n // context.agentId is already resolved by RemoteContainer\n // which called POST /agents on server - so it's the server's agentId\n const driver = createSSEDriver({\n serverUrl: this.serverUrl,\n agentId: context.agentId,\n headers: this.headers,\n sseParams: this.sseParams,\n });\n\n // SSEDriver implements AgentDriver, wrap it as RuntimeDriver\n return {\n ...driver,\n sandbox: noopSandbox,\n };\n }\n\n createLogger(name: string): Logger {\n return this.loggerFactory.getLogger(name);\n }\n}\n\n// ============================================================================\n// Factory function\n// ============================================================================\n\n/**\n * Create SSE Runtime for browser\n *\n * @example\n * ```typescript\n * import { createAgentX } from \"agentxjs\";\n * import { sseRuntime } from \"agentxjs/runtime/sse\";\n *\n * createAgentX(sseRuntime({\n * serverUrl: \"http://localhost:5200/agentx\",\n * headers: { Authorization: \"Bearer xxx\" },\n * }));\n * ```\n */\nexport function sseRuntime(config: SSERuntimeConfig): Runtime {\n return new SSERuntime(config);\n}\n\n/**\n * @deprecated Use `sseRuntime()` instead for consistency with `nodeRuntime()`\n */\nexport const createSSERuntime = sseRuntime;\n\n// Also export class for advanced use\nexport { SSERuntime };\n"]}
|
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { DefineAgentInput, AgentDefinition, Runtime, AgentX } from '@agentxjs/types';
|
|
2
|
+
export { Agent, AgentContainer, AgentContext, AgentDefinition, AgentDriver, AgentError, AgentEventHandler, AgentEventType, AgentInfo, AgentLifecycle, AgentManager, AgentOutput, AgentPresenter, AgentX, AgentXLocal, AgentXRemote, ContainerConfig, ContainerManager, ContainerRecord, CreateAgentEndpoint, CreateAgentRequest, CreateAgentResponse, CreateSessionEndpoint, DefineAgentInput, DestroyAgentEndpoint, DestroySessionEndpoint, ErrorHandler, ErrorManager, ErrorSeverity, GetAgentEndpoint, GetHealthEndpoint, GetInfoEndpoint, GetSessionEndpoint, HealthStatus, ListAgentsEndpoint, ListAgentsResponse, ListSessionsEndpoint, ListSessionsResponse, PlatformInfo, PlatformManager, Runtime, RuntimeDriver, Sandbox, Session, SessionManager, Unsubscribe } from '@agentxjs/types';
|
|
3
|
+
export { C as ConnectionState, S as SSERuntimeConfig, c as createSSERuntime, s as sseRuntime } from './types-OVKV6qpE.cjs';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* defineAgent implementation
|
|
7
|
+
*
|
|
8
|
+
* "Define Once, Run Anywhere"
|
|
9
|
+
*
|
|
10
|
+
* Creates an AgentDefinition with business-level config.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* import { defineAgent, createAgentX } from "agentxjs";
|
|
15
|
+
* import { runtime } from "agentxjs-runtime";
|
|
16
|
+
*
|
|
17
|
+
* const MyAgent = defineAgent({
|
|
18
|
+
* name: "Translator",
|
|
19
|
+
* systemPrompt: "You are a translator",
|
|
20
|
+
* });
|
|
21
|
+
*
|
|
22
|
+
* const agentx = createAgentX(runtime);
|
|
23
|
+
* const agent = agentx.agents.create(MyAgent);
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* defineAgent - Create an agent definition
|
|
29
|
+
*
|
|
30
|
+
* @param input - Agent definition input
|
|
31
|
+
* @returns Agent definition
|
|
32
|
+
*/
|
|
33
|
+
declare function defineAgent(input: DefineAgentInput): AgentDefinition;
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* AgentX - Platform API Implementation
|
|
37
|
+
*
|
|
38
|
+
* The central entry point for all agent operations.
|
|
39
|
+
* Runtime determines the execution environment (Node.js, Browser, etc.)
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```typescript
|
|
43
|
+
* import { createAgentX } from "agentxjs";
|
|
44
|
+
* import { nodeRuntime } from "agentxjs-runtime";
|
|
45
|
+
*
|
|
46
|
+
* const agentx = createAgentX(nodeRuntime());
|
|
47
|
+
*
|
|
48
|
+
* // Simple usage (auto-created default container)
|
|
49
|
+
* const agent = await agentx.images.run(imageId);
|
|
50
|
+
*
|
|
51
|
+
* // Multi-tenant usage (explicit container)
|
|
52
|
+
* const container = await agentx.containers.create();
|
|
53
|
+
* const agent = await agentx.images.run(imageId, { containerId: container.containerId });
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* AgentX creation options
|
|
59
|
+
*/
|
|
60
|
+
interface CreateAgentXOptions {
|
|
61
|
+
/**
|
|
62
|
+
* Default container ID to use for operations
|
|
63
|
+
* If not provided, a default container will be auto-created
|
|
64
|
+
*/
|
|
65
|
+
containerId?: string;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Create AgentX instance with Runtime
|
|
69
|
+
*
|
|
70
|
+
* @param runtime - Runtime provides infrastructure (createSandbox, createDriver, repository)
|
|
71
|
+
* @param options - Optional configuration
|
|
72
|
+
* @returns AgentX instance
|
|
73
|
+
*
|
|
74
|
+
* @example
|
|
75
|
+
* ```typescript
|
|
76
|
+
* import { createAgentX } from "agentxjs";
|
|
77
|
+
* import { nodeRuntime } from "agentxjs-runtime";
|
|
78
|
+
*
|
|
79
|
+
* // Simple usage - auto-creates default container
|
|
80
|
+
* const agentx = createAgentX(nodeRuntime());
|
|
81
|
+
*
|
|
82
|
+
* // Multi-tenant - specify container
|
|
83
|
+
* const agentx = createAgentX(nodeRuntime(), { containerId: "tenant_123" });
|
|
84
|
+
* ```
|
|
85
|
+
*/
|
|
86
|
+
declare function createAgentX(runtime: Runtime, options?: CreateAgentXOptions): AgentX;
|
|
87
|
+
|
|
88
|
+
export { createAgentX, defineAgent };
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { DefineAgentInput, AgentDefinition, Runtime, AgentX } from '@agentxjs/types';
|
|
2
|
+
export { Agent, AgentContainer, AgentContext, AgentDefinition, AgentDriver, AgentError, AgentEventHandler, AgentEventType, AgentInfo, AgentLifecycle, AgentManager, AgentOutput, AgentPresenter, AgentX, AgentXLocal, AgentXRemote, ContainerConfig, ContainerManager, ContainerRecord, CreateAgentEndpoint, CreateAgentRequest, CreateAgentResponse, CreateSessionEndpoint, DefineAgentInput, DestroyAgentEndpoint, DestroySessionEndpoint, ErrorHandler, ErrorManager, ErrorSeverity, GetAgentEndpoint, GetHealthEndpoint, GetInfoEndpoint, GetSessionEndpoint, HealthStatus, ListAgentsEndpoint, ListAgentsResponse, ListSessionsEndpoint, ListSessionsResponse, PlatformInfo, PlatformManager, Runtime, RuntimeDriver, Sandbox, Session, SessionManager, Unsubscribe } from '@agentxjs/types';
|
|
3
|
+
export { C as ConnectionState, S as SSERuntimeConfig, c as createSSERuntime, s as sseRuntime } from './types-OVKV6qpE.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* defineAgent implementation
|
|
7
|
+
*
|
|
8
|
+
* "Define Once, Run Anywhere"
|
|
9
|
+
*
|
|
10
|
+
* Creates an AgentDefinition with business-level config.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* import { defineAgent, createAgentX } from "agentxjs";
|
|
15
|
+
* import { runtime } from "agentxjs-runtime";
|
|
16
|
+
*
|
|
17
|
+
* const MyAgent = defineAgent({
|
|
18
|
+
* name: "Translator",
|
|
19
|
+
* systemPrompt: "You are a translator",
|
|
20
|
+
* });
|
|
21
|
+
*
|
|
22
|
+
* const agentx = createAgentX(runtime);
|
|
23
|
+
* const agent = agentx.agents.create(MyAgent);
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* defineAgent - Create an agent definition
|
|
29
|
+
*
|
|
30
|
+
* @param input - Agent definition input
|
|
31
|
+
* @returns Agent definition
|
|
32
|
+
*/
|
|
33
|
+
declare function defineAgent(input: DefineAgentInput): AgentDefinition;
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* AgentX - Platform API Implementation
|
|
37
|
+
*
|
|
38
|
+
* The central entry point for all agent operations.
|
|
39
|
+
* Runtime determines the execution environment (Node.js, Browser, etc.)
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```typescript
|
|
43
|
+
* import { createAgentX } from "agentxjs";
|
|
44
|
+
* import { nodeRuntime } from "agentxjs-runtime";
|
|
45
|
+
*
|
|
46
|
+
* const agentx = createAgentX(nodeRuntime());
|
|
47
|
+
*
|
|
48
|
+
* // Simple usage (auto-created default container)
|
|
49
|
+
* const agent = await agentx.images.run(imageId);
|
|
50
|
+
*
|
|
51
|
+
* // Multi-tenant usage (explicit container)
|
|
52
|
+
* const container = await agentx.containers.create();
|
|
53
|
+
* const agent = await agentx.images.run(imageId, { containerId: container.containerId });
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* AgentX creation options
|
|
59
|
+
*/
|
|
60
|
+
interface CreateAgentXOptions {
|
|
61
|
+
/**
|
|
62
|
+
* Default container ID to use for operations
|
|
63
|
+
* If not provided, a default container will be auto-created
|
|
64
|
+
*/
|
|
65
|
+
containerId?: string;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Create AgentX instance with Runtime
|
|
69
|
+
*
|
|
70
|
+
* @param runtime - Runtime provides infrastructure (createSandbox, createDriver, repository)
|
|
71
|
+
* @param options - Optional configuration
|
|
72
|
+
* @returns AgentX instance
|
|
73
|
+
*
|
|
74
|
+
* @example
|
|
75
|
+
* ```typescript
|
|
76
|
+
* import { createAgentX } from "agentxjs";
|
|
77
|
+
* import { nodeRuntime } from "agentxjs-runtime";
|
|
78
|
+
*
|
|
79
|
+
* // Simple usage - auto-creates default container
|
|
80
|
+
* const agentx = createAgentX(nodeRuntime());
|
|
81
|
+
*
|
|
82
|
+
* // Multi-tenant - specify container
|
|
83
|
+
* const agentx = createAgentX(nodeRuntime(), { containerId: "tenant_123" });
|
|
84
|
+
* ```
|
|
85
|
+
*/
|
|
86
|
+
declare function createAgentX(runtime: Runtime, options?: CreateAgentXOptions): AgentX;
|
|
87
|
+
|
|
88
|
+
export { createAgentX, defineAgent };
|