{"_id":"@aichatkit/network-adapter","_rev":"7-9a3e78fe15dc0c3ea5de15354af17f7e","name":"@aichatkit/network-adapter","dist-tags":{"latest":"0.0.0-alpha.6"},"versions":{"0.0.0-alpha.0":{"name":"@aichatkit/network-adapter","version":"0.0.0-alpha.0","keywords":["chat","network","adapter","api","communication","hypermode"],"author":{"name":"Hypermode"},"license":"MIT","_id":"@aichatkit/network-adapter@0.0.0-alpha.0","maintainers":[{"name":"danstarns","email":"danielstarns@hotmail.com"}],"homepage":"https://github.com/hypermodeinc/chatkit/tree/main/packages/network-adapter#readme","dist":{"shasum":"7cca16bce0583b11f0566167398b9c2627077899","tarball":"https://registry.npmjs.org/@aichatkit/network-adapter/-/network-adapter-0.0.0-alpha.0.tgz","fileCount":7,"integrity":"sha512-S/Zh3SIsciUGT4O2pzddOw/bLRtFCDWDxRIDgI4+Rb4vQYc3w8ECAgu5DY6xJFQ2v6DNlioVX5B2Xr+5wv6QMQ==","signatures":[{"sig":"MEUCIEJaigZcoqb6FFLG2wwyFTeXgWBLc7buwPNbQnlxUj10AiEAkUS5p6LRD1T+dc6Uv2sZFuqd4EqwaDP0z60v+my1bRs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7945},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","gitHead":"ff46453f845c886e2819a16bfcee93f01706eabf","scripts":{"dev":"tsup src/index.ts --format cjs,esm --dts --watch","build":"tsup src/index.ts --format cjs,esm --dts"},"_npmUser":{"name":"danstarns","email":"danielstarns@hotmail.com"},"_npmVersion":"10.9.2","description":"Base network adapter for Hypermode ChatKit","directories":{},"_nodeVersion":"22.14.0","dependencies":{"@aichatkit/types":"workspace:^"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","typescript":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/network-adapter_0.0.0-alpha.0_1748541591556_0.3699303800339273","host":"s3://npm-registry-packages-npm-production"}},"0.0.0-alpha.1":{"name":"@aichatkit/network-adapter","version":"0.0.0-alpha.1","keywords":["chat","network","adapter","api","communication","hypermode"],"author":{"name":"Hypermode"},"license":"MIT","_id":"@aichatkit/network-adapter@0.0.0-alpha.1","maintainers":[{"name":"danstarns","email":"danielstarns@hotmail.com"}],"homepage":"https://github.com/hypermodeinc/chatkit/tree/main/packages/network-adapter#readme","dist":{"shasum":"5ce8418d706e1ec317e76e732e661518064d1c9c","tarball":"https://registry.npmjs.org/@aichatkit/network-adapter/-/network-adapter-0.0.0-alpha.1.tgz","fileCount":4,"integrity":"sha512-2ZsjOAt/BR2Ntbn1246VEt+IKXcpN3o7ahHyJnnurTqyzP1GRSE9KeZrn0SjABRc9V9NWKISz3XjsVlRsofK1w==","signatures":[{"sig":"MEUCIAxmbt1dPyxwBngG3xX9EoDdauvLqdoKSNlhWe5XA8+eAiEAo8LFqD7eZidSJx1V/Mqcaasp2o5cEqKf95u+rPpnG68=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4440},"main":"dist/index.js","_from":"file:aichatkit-network-adapter-0.0.0-alpha.1.tgz","types":"dist/index.d.ts","module":"dist/index.mjs","scripts":{"dev":"tsup src/index.ts --format cjs,esm --dts --watch","build":"tsup src/index.ts --format cjs,esm --dts"},"_npmUser":{"name":"danstarns","email":"danielstarns@hotmail.com"},"_resolved":"/tmp/9a0304f527f8cf0d846a640981690f20/aichatkit-network-adapter-0.0.0-alpha.1.tgz","_integrity":"sha512-2ZsjOAt/BR2Ntbn1246VEt+IKXcpN3o7ahHyJnnurTqyzP1GRSE9KeZrn0SjABRc9V9NWKISz3XjsVlRsofK1w==","_npmVersion":"10.9.2","description":"Base network adapter for Hypermode ChatKit","directories":{},"_nodeVersion":"22.13.0","dependencies":{"@aichatkit/types":"0.0.0-alpha.1"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","typescript":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/network-adapter_0.0.0-alpha.1_1748543216867_0.4487215399721518","host":"s3://npm-registry-packages-npm-production"}},"0.0.0-alpha.2":{"name":"@aichatkit/network-adapter","version":"0.0.0-alpha.2","keywords":["chat","network","adapter","api","communication","hypermode"],"author":{"name":"Hypermode"},"license":"MIT","_id":"@aichatkit/network-adapter@0.0.0-alpha.2","maintainers":[{"name":"danstarns","email":"danielstarns@hotmail.com"}],"homepage":"https://github.com/hypermodeinc/chatkit/tree/main/packages/network-adapter#readme","dist":{"shasum":"7f3ea6179df2b6b7912ae6bcc03afa6dcbab5e00","tarball":"https://registry.npmjs.org/@aichatkit/network-adapter/-/network-adapter-0.0.0-alpha.2.tgz","fileCount":8,"integrity":"sha512-QMUJT0fNF1kMmrcRjskv8dphu92/vFPtoVkyVY5lmvTq9Og7G+3cWNdPkC+gp4z7+EenuFi5Ka7UAb2DfTYfwg==","signatures":[{"sig":"MEUCIC7V6yFc4ciFH6e6LAuu+YOn/Imp1FfeFKU6RKFYj0hsAiEAzqRzC+PRqe9420mvdivxP53AZ2eXuMRFvH1yoK6g7tE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9012},"main":"dist/index.js","_from":"file:aichatkit-network-adapter-0.0.0-alpha.2.tgz","types":"dist/index.d.ts","module":"dist/index.mjs","scripts":{"dev":"tsup src/index.ts --format cjs,esm --dts --watch","build":"tsup src/index.ts --format cjs,esm --dts"},"_npmUser":{"name":"danstarns","email":"danielstarns@hotmail.com"},"_resolved":"/tmp/786e7b4f7d3d41578901214afd804c66/aichatkit-network-adapter-0.0.0-alpha.2.tgz","_integrity":"sha512-QMUJT0fNF1kMmrcRjskv8dphu92/vFPtoVkyVY5lmvTq9Og7G+3cWNdPkC+gp4z7+EenuFi5Ka7UAb2DfTYfwg==","_npmVersion":"10.9.2","description":"Base network adapter for Hypermode ChatKit","directories":{},"_nodeVersion":"22.13.0","dependencies":{"@aichatkit/types":"0.0.0-alpha.2"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","typescript":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/network-adapter_0.0.0-alpha.2_1748544026231_0.2426349929546796","host":"s3://npm-registry-packages-npm-production"}},"0.0.0-alpha.3":{"name":"@aichatkit/network-adapter","version":"0.0.0-alpha.3","keywords":["chat","network","adapter","api","communication","hypermode"],"author":{"name":"Hypermode"},"license":"MIT","_id":"@aichatkit/network-adapter@0.0.0-alpha.3","maintainers":[{"name":"danstarns","email":"danielstarns@hotmail.com"}],"homepage":"https://github.com/hypermodeinc/chatkit/tree/main/packages/network-adapter#readme","dist":{"shasum":"de4405f180976d50ba9b1172f2a1b56a1af6670c","tarball":"https://registry.npmjs.org/@aichatkit/network-adapter/-/network-adapter-0.0.0-alpha.3.tgz","fileCount":8,"integrity":"sha512-9csESpq+/KEaLM/IjYRMHszR1cYmBUxVZ29GGieUdhY7XwxBgAZHujmCnpTPpMjFlP3aRaUezZMPEDfcgAb2wg==","signatures":[{"sig":"MEUCIFlx8NkEKgqqTrrbglhGeMs3jQr16a+fgRbinpaUeJxLAiEAoSOA1RdQEiflqi5NPkyPwS9Vdx8pLHg+kFfjPgY88AI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9012},"main":"dist/index.js","_from":"file:aichatkit-network-adapter-0.0.0-alpha.3.tgz","types":"dist/index.d.ts","module":"dist/index.mjs","scripts":{"dev":"tsup src/index.ts --format cjs,esm --dts --watch","build":"tsup src/index.ts --format cjs,esm --dts"},"_npmUser":{"name":"danstarns","email":"danielstarns@hotmail.com"},"_resolved":"/tmp/6e16c459b6e71eb949e40b111cb48db9/aichatkit-network-adapter-0.0.0-alpha.3.tgz","_integrity":"sha512-9csESpq+/KEaLM/IjYRMHszR1cYmBUxVZ29GGieUdhY7XwxBgAZHujmCnpTPpMjFlP3aRaUezZMPEDfcgAb2wg==","_npmVersion":"10.9.2","description":"Base network adapter for Hypermode ChatKit","directories":{},"_nodeVersion":"22.13.0","dependencies":{"@aichatkit/types":"0.0.0-alpha.3"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","typescript":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/network-adapter_0.0.0-alpha.3_1748544380006_0.0025877907788851573","host":"s3://npm-registry-packages-npm-production"}},"0.0.0-alpha.4":{"name":"@aichatkit/network-adapter","version":"0.0.0-alpha.4","keywords":["chat","network","adapter","api","communication","hypermode"],"author":{"name":"Hypermode"},"license":"MIT","_id":"@aichatkit/network-adapter@0.0.0-alpha.4","maintainers":[{"name":"danstarns","email":"danielstarns@hotmail.com"}],"homepage":"https://github.com/hypermodeinc/chatkit/tree/main/packages/network-adapter#readme","dist":{"shasum":"9bc9c6ac432456046c0c016432f94d6c566efa12","tarball":"https://registry.npmjs.org/@aichatkit/network-adapter/-/network-adapter-0.0.0-alpha.4.tgz","fileCount":8,"integrity":"sha512-K/e6kYvy4BUkYSWs2NKqXSDcicpD/Mv3gdcdYQS6Z0B5yrEqH3Ubdc14UFKQQUtVXyeu+/LrmTEnpsF64I6DUg==","signatures":[{"sig":"MEYCIQCFnXOjzNS+YkNy8HSNXIJzxodubmTzDdu3vNsgsoyLNwIhALWWaVBkQu+RDMtAbcl7ReLGu6/AVZHfooMt9tLPzNDX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9111},"main":"dist/index.js","_from":"file:aichatkit-network-adapter-0.0.0-alpha.4.tgz","types":"dist/index.d.ts","module":"dist/index.mjs","scripts":{"dev":"tsup src/index.ts --format cjs,esm --dts --watch","build":"tsup src/index.ts --format cjs,esm --dts"},"_npmUser":{"name":"danstarns","email":"danielstarns@hotmail.com"},"_resolved":"/tmp/d060e1d3ba931bfaaeaa4e46db4d5773/aichatkit-network-adapter-0.0.0-alpha.4.tgz","_integrity":"sha512-K/e6kYvy4BUkYSWs2NKqXSDcicpD/Mv3gdcdYQS6Z0B5yrEqH3Ubdc14UFKQQUtVXyeu+/LrmTEnpsF64I6DUg==","_npmVersion":"10.9.2","description":"Base network adapter for Hypermode ChatKit","directories":{},"_nodeVersion":"22.13.0","dependencies":{"@aichatkit/types":"0.0.0-alpha.4"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","typescript":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/network-adapter_0.0.0-alpha.4_1748599503519_0.03597633691901625","host":"s3://npm-registry-packages-npm-production"}},"0.0.0-alpha.5":{"name":"@aichatkit/network-adapter","version":"0.0.0-alpha.5","keywords":["chat","network","adapter","api","communication","hypermode"],"author":{"name":"Hypermode"},"license":"MIT","_id":"@aichatkit/network-adapter@0.0.0-alpha.5","maintainers":[{"name":"danstarns","email":"danielstarns@hotmail.com"}],"homepage":"https://github.com/hypermodeinc/chatkit/tree/main/packages/network-adapter#readme","dist":{"shasum":"a15e28952e583b2d4ca9c5304a15e55e630fb556","tarball":"https://registry.npmjs.org/@aichatkit/network-adapter/-/network-adapter-0.0.0-alpha.5.tgz","fileCount":8,"integrity":"sha512-3VE7B1Y0VPU4WR4y3uu1fCxN8tFCHgUF4TbhFN2s0Z5glW/S1o6oKKaL71F4pIGxfDUKuW+wLWgQ+p/kOWRyOQ==","signatures":[{"sig":"MEUCIQDuNBLAx/bT+n45ZStCqK2zO38ZGxu3DUEBTg9K/i7fwgIgRlANqKwg6ZT4j/XqwBzrJbtb+Dz6ynV92AgibV9IIRo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14059},"main":"dist/index.js","_from":"file:aichatkit-network-adapter-0.0.0-alpha.5.tgz","types":"dist/index.d.ts","module":"dist/index.mjs","scripts":{"dev":"tsup src/index.ts --format cjs,esm --dts --watch","build":"tsup src/index.ts --format cjs,esm --dts"},"_npmUser":{"name":"danstarns","actor":{"name":"danstarns","type":"user","email":"danielstarns@hotmail.com"},"email":"danielstarns@hotmail.com"},"_resolved":"/tmp/199f27f6e26d8248ce995ddf10890add/aichatkit-network-adapter-0.0.0-alpha.5.tgz","_integrity":"sha512-3VE7B1Y0VPU4WR4y3uu1fCxN8tFCHgUF4TbhFN2s0Z5glW/S1o6oKKaL71F4pIGxfDUKuW+wLWgQ+p/kOWRyOQ==","_npmVersion":"10.9.2","description":"Base network adapter for Hypermode ChatKit","directories":{},"_nodeVersion":"22.13.0","dependencies":{"@aichatkit/types":"0.0.0-alpha.5"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","typescript":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/network-adapter_0.0.0-alpha.5_1750312727035_0.18594139979543844","host":"s3://npm-registry-packages-npm-production"}},"0.0.0-alpha.6":{"name":"@aichatkit/network-adapter","version":"0.0.0-alpha.6","description":"Base network adapter for Hypermode ChatKit","main":"dist/index.js","module":"dist/index.mjs","types":"dist/index.d.ts","keywords":["chat","network","adapter","api","communication","hypermode"],"author":{"name":"Hypermode"},"license":"MIT","homepage":"https://github.com/hypermodeinc/chatkit/tree/main/packages/network-adapter#readme","dependencies":{"@aichatkit/types":"0.0.0-alpha.6"},"devDependencies":{"typescript":"^5.0.0","tsup":"^8.0.0"},"scripts":{"build":"tsup src/index.ts --format cjs,esm --dts","dev":"tsup src/index.ts --format cjs,esm --dts --watch"},"_id":"@aichatkit/network-adapter@0.0.0-alpha.6","_integrity":"sha512-eqkyj7ZykD1E9rE6tbPWD9zMUY9NLUF/8hU7s3n5F04LGJ58+MG2cPzP5HR4tw1gKyBccvWsileYnhn8ftajnw==","_resolved":"/tmp/9749477106b3cc3534715dc2124c5858/aichatkit-network-adapter-0.0.0-alpha.6.tgz","_from":"file:aichatkit-network-adapter-0.0.0-alpha.6.tgz","_nodeVersion":"22.13.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-eqkyj7ZykD1E9rE6tbPWD9zMUY9NLUF/8hU7s3n5F04LGJ58+MG2cPzP5HR4tw1gKyBccvWsileYnhn8ftajnw==","shasum":"63b7ce7c9e818dde1b07c1b90f858f1c509d9615","tarball":"https://registry.npmjs.org/@aichatkit/network-adapter/-/network-adapter-0.0.0-alpha.6.tgz","fileCount":8,"unpackedSize":19002,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCICtGOgvaRGAROaYjhKXp+JQ0ZtUcnmPEsE7ufzVVr5GQAiEA2h0FhAta1Id/DTbVCnWISfipVu/WJ7xjZYcyWvFMe7Q="}]},"_npmUser":{"name":"danstarns","email":"danielstarns@hotmail.com","actor":{"name":"danstarns","email":"danielstarns@hotmail.com","type":"user"}},"directories":{},"maintainers":[{"name":"danstarns","email":"danielstarns@hotmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/network-adapter_0.0.0-alpha.6_1751223239388_0.4349931394263389"},"_hasShrinkwrap":false}},"time":{"created":"2025-05-29T17:59:51.447Z","modified":"2025-06-29T18:53:59.741Z","0.0.0-alpha.0":"2025-05-29T17:59:51.806Z","0.0.0-alpha.1":"2025-05-29T18:26:57.046Z","0.0.0-alpha.2":"2025-05-29T18:40:26.432Z","0.0.0-alpha.3":"2025-05-29T18:46:20.191Z","0.0.0-alpha.4":"2025-05-30T10:05:03.737Z","0.0.0-alpha.5":"2025-06-19T05:58:47.217Z","0.0.0-alpha.6":"2025-06-29T18:53:59.548Z"},"author":{"name":"Hypermode"},"license":"MIT","homepage":"https://github.com/hypermodeinc/chatkit/tree/main/packages/network-adapter#readme","keywords":["chat","network","adapter","api","communication","hypermode"],"description":"Base network adapter for Hypermode ChatKit","maintainers":[{"name":"danstarns","email":"danielstarns@hotmail.com"}],"readme":"# @aichatkit/network-adapter\n\nBase network adapter abstract class for Hypermode ChatKit with support for stateful chat agents and\nrich response items.\n\n## Installation\n\n```bash\nnpm install @aichatkit/network-adapter\n```\n\n## Usage\n\nThis package provides the base abstract class for implementing network adapters. You typically won't\nuse this package directly, but rather create or use an implementation like\n`@aichatkit/apollo-adapter`.\n\n```typescript\nimport { NetworkAdapter } from \"@aichatkit/network-adapter\"\nimport { ChatResponse, ChatResponseItem, Message } from \"@aichatkit/types\"\n\n// Example: Create a custom adapter implementation\nclass CustomNetworkAdapter extends NetworkAdapter {\n  async startChatAgent(): Promise<string> {\n    // Create a new chat agent/session and return its ID\n    const response = await fetch(\"https://your-api.com/agents\", {\n      method: \"POST\",\n    })\n    const data = await response.json()\n    return data.agentId\n  }\n\n  async sendMessage(agentId: string, message: string): Promise<ChatResponse> {\n    // Send message to a specific agent and get rich response\n    const response = await fetch(`https://your-api.com/agents/${agentId}/messages`, {\n      method: \"POST\",\n      body: JSON.stringify({ message }),\n      headers: { \"Content-Type\": \"application/json\" },\n    })\n\n    const data = await response.json()\n\n    return {\n      items: data.items, // Array of messages, tool calls, cards, etc.\n      conversationId: data.conversationId,\n    }\n  }\n\n  async getConversationItems(agentId: string): Promise<ChatResponseItem[]> {\n    // Retrieve all conversation items from the agent\n    const response = await fetch(`https://your-api.com/agents/${agentId}/items`)\n    const data = await response.json()\n\n    return data.items // Mixed array of messages, tool calls, cards, etc.\n  }\n\n  async getConversationHistory(agentId: string): Promise<Message[]> {\n    // Get only message items (convenience method)\n    const items = await this.getConversationItems(agentId)\n\n    // Filter and convert to messages\n    return items\n      .filter((item) => item.type === \"message\")\n      .map((item) => ({\n        id: item.id,\n        content: item.content,\n        role: item.role,\n        timestamp: item.timestamp,\n      }))\n  }\n\n  async clearConversationHistory(agentId: string): Promise<void> {\n    // Clear the agent's conversation history\n    await fetch(`https://your-api.com/agents/${agentId}/history`, {\n      method: \"DELETE\",\n    })\n  }\n\n  async stopChatAgent(agentId: string): Promise<void> {\n    // Stop/terminate the chat agent\n    await fetch(`https://your-api.com/agents/${agentId}`, {\n      method: \"DELETE\",\n    })\n  }\n}\n```\n\n## Abstract Methods\n\nAll network adapters must implement these methods:\n\n### startChatAgent(): Promise<string>\n\nCreates a new chat agent/session and returns its unique identifier.\n\n```typescript\nabstract startChatAgent(): Promise<string>;\n```\n\n**Returns**: Promise resolving to the agent ID\n\n**Example**:\n\n```typescript\nconst agentId = await adapter.startChatAgent()\nconsole.log(\"New agent created:\", agentId)\n```\n\n### sendMessage(agentId: string, message: string): Promise<ChatResponse>\n\nSends a message to a specific chat agent and returns the response with rich content items.\n\n```typescript\nabstract sendMessage(agentId: string, message: string): Promise<ChatResponse>;\n```\n\n**Parameters**:\n\n- `agentId`: The ID of the agent to send the message to\n- `message`: The message content to send\n\n**Returns**: Promise resolving to the chat response containing mixed item types\n\n**Example**:\n\n```typescript\nconst response = await adapter.sendMessage(\"agent-123\", \"Hello, world!\")\nconsole.log(\"Response items:\", response.items)\n// Items can include messages, tool calls, cards, etc.\n```\n\n### getConversationItems(agentId: string): Promise<ChatResponseItem[]>\n\nRetrieves all conversation items from a specific agent.\n\n```typescript\nabstract getConversationItems(agentId: string): Promise<ChatResponseItem[]>;\n```\n\n**Parameters**:\n\n- `agentId`: The ID of the agent\n\n**Returns**: Promise resolving to an array of mixed response items\n\n**Example**:\n\n```typescript\nconst items = await adapter.getConversationItems(\"agent-123\")\nconsole.log(\"Total items:\", items.length)\n// Items include messages, tool calls, cards, etc.\n```\n\n### getConversationHistory(agentId: string): Promise<Message[]>\n\nRetrieves only the message history from a specific agent (convenience method).\n\n```typescript\nasync getConversationHistory(agentId: string): Promise<Message[]>\n```\n\n**Parameters**:\n\n- `agentId`: The ID of the agent\n\n**Returns**: Promise resolving to an array of messages only\n\n**Example**:\n\n```typescript\nconst messages = await adapter.getConversationHistory(\"agent-123\")\nconsole.log(\"Message count:\", messages.length)\n// Only message items, filtered from all response items\n```\n\n### clearConversationHistory(agentId: string): Promise<void>\n\nClears the conversation history for a specific agent.\n\n```typescript\nabstract clearConversationHistory(agentId: string): Promise<void>;\n```\n\n**Parameters**:\n\n- `agentId`: The ID of the agent\n\n**Example**:\n\n```typescript\nawait adapter.clearConversationHistory(\"agent-123\")\nconsole.log(\"History cleared\")\n```\n\n### stopChatAgent(agentId: string): Promise<void>\n\nStops/terminates a chat agent and cleans up resources.\n\n```typescript\nabstract stopChatAgent(agentId: string): Promise<void>;\n```\n\n**Parameters**:\n\n- `agentId`: The ID of the agent to stop\n\n**Example**:\n\n```typescript\nawait adapter.stopChatAgent(\"agent-123\")\nconsole.log(\"Agent stopped\")\n```\n\n## Optional Methods\n\n### initialize(config?: Record<string, any>): Promise<void>\n\nOptional initialization method for setting up the adapter.\n\n```typescript\nasync initialize(config?: Record<string, any>): Promise<void> {\n  // Default implementation does nothing\n  return Promise.resolve();\n}\n```\n\n**Example Override**:\n\n```typescript\nclass CustomAdapter extends NetworkAdapter {\n  async initialize(config?: Record<string, any>): Promise<void> {\n    // Initialize connection pools, auth tokens, etc.\n    this.apiKey = config?.apiKey || process.env.API_KEY\n    await this.validateConnection()\n  }\n}\n```\n\n## Response Item Types\n\nThe adapter supports various response item types:\n\n### Message Items\n\nStandard chat messages between user and assistant.\n\n```typescript\n{\n  id: \"msg_123\",\n  type: \"message\",\n  content: \"Hello there!\",\n  role: \"assistant\",\n  timestamp: \"2024-01-01T00:00:00Z\"\n}\n```\n\n### Tool Call Items\n\nRepresents tool/function executions with status and results.\n\n```typescript\n{\n  id: \"tool_123\",\n  type: \"tool_call\",\n  toolCall: {\n    id: \"call_123\",\n    name: \"get_weather\",\n    arguments: { location: \"New York\" },\n    status: \"completed\",\n    result: { temperature: \"22°C\", condition: \"Sunny\" }\n  }\n}\n```\n\n### Card Items\n\nRich content displays with structured data and interactive actions.\n\n```typescript\n{\n  id: \"card_123\",\n  type: \"card\",\n  card: {\n    id: \"weather_card\",\n    type: \"weather\",\n    title: \"Weather Information\",\n    content: { location: \"New York\", temperature: \"22°C\" },\n    actions: [\n      {\n        id: \"view_forecast\",\n        label: \"View Forecast\",\n        type: \"button\",\n        action: \"show_forecast\"\n      }\n    ]\n  }\n}\n```\n\n## Agent-Based Architecture\n\nThis adapter is designed around the concept of stateful chat agents:\n\n1. **Agent Lifecycle**: Each conversation is backed by a unique agent that maintains state\n2. **Rich Responses**: Agents can return various item types including messages, tool calls, and\n   cards\n3. **Stateful Conversations**: Agents remember conversation context and all response items\n4. **Isolated Sessions**: Each agent represents an isolated conversation session\n5. **Resource Management**: Agents can be stopped to free up resources\n\n### Typical Flow\n\n```typescript\n// 1. Start a new agent for a conversation\nconst agentId = await adapter.startChatAgent()\n\n// 2. Send messages to the agent and get rich responses\nconst response1 = await adapter.sendMessage(agentId, \"Hello\")\nconst response2 = await adapter.sendMessage(agentId, \"What's the weather?\")\n// Responses can contain messages, tool calls, cards, etc.\n\n// 3. Get all conversation items from the agent\nconst allItems = await adapter.getConversationItems(agentId)\n\n// 4. Get only messages if needed\nconst messagesOnly = await adapter.getConversationHistory(agentId)\n\n// 5. Clean up when done\nawait adapter.stopChatAgent(agentId)\n```\n\n## Available Implementations\n\n- **[@aichatkit/apollo-adapter](../apollo-adapter)**: GraphQL implementation for Hypermode\n- **Custom implementations**: Create your own for REST APIs, WebSockets, etc.\n\n## License\n\n[MIT](../../LICENSE) © Hypermode\n","readmeFilename":"README.md"}