{"_id":"@ainative/ai-kit-vue","_rev":"6-a97092b51d28e9dff911e4a2c8ec56ff","name":"@ainative/ai-kit-vue","dist-tags":{"alpha":"0.1.0-alpha.0","latest":"0.2.1"},"versions":{"0.1.0-alpha.0":{"name":"@ainative/ai-kit-vue","version":"0.1.0-alpha.0","keywords":["ainative","ai","llm","typescript","ai-agents","ai-primitives","ainative-developer","claude","claude-code","openai","anthropic","vue","vue3","composition-api","composables","ui","components"],"author":{"name":"AINative Studio"},"license":"MIT","_id":"@ainative/ai-kit-vue@0.1.0-alpha.0","maintainers":[{"name":"ainative-studio","email":"toby@rely.ventures"}],"homepage":"https://ainative.studio/ai-kit","bugs":{"url":"https://github.com/AINative-Studio/ai-kit/issues"},"dist":{"shasum":"6deec1b7117fe21b30f831cbd73af55b21d92080","tarball":"https://registry.npmjs.org/@ainative/ai-kit-vue/-/ai-kit-vue-0.1.0-alpha.0.tgz","fileCount":9,"integrity":"sha512-3lA4HH/j52aoPlRVNQaJ9K4ZD3jCLC0D9JjYNcQ06lYDWMZAhknkx/79Za9mpmTnaDKuRLUxHX//6kSNknlvJw==","signatures":[{"sig":"MEQCICOWErlf+rCaM7LrfAH9Cbrb7cJaRZA1DgKWG0jWhADMAiA7175c41Lg+d6UdpWUgcIjrta6vYp0znxiQd9gWXDldw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61774},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"fc76d30b210657f175234126d6c0edbaa71d4140","scripts":{"dev":"tsup --watch","lint":"eslint src","test":"vitest","build":"tsup","clean":"rm -rf dist","type-check":"tsc --noEmit","test:coverage":"vitest --coverage"},"_npmUser":{"name":"ainative-studio","email":"toby@rely.ventures"},"repository":{"url":"git+https://github.com/AINative-Studio/ai-kit.git","type":"git","directory":"packages/vue"},"_npmVersion":"10.9.4","description":"AI Kit - Vue 3 composables for building AI-powered applications","directories":{},"_nodeVersion":"22.21.0","dependencies":{"@ainative/ai-kit-core":"workspace:*"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.4.0","tsup":"^8.0.1","vitest":"^1.0.0","happy-dom":"^12.10.3","typescript":"^5.3.0","@types/node":"^20.10.0","@vue/test-utils":"^2.4.0","@vitest/coverage-v8":"^1.0.0"},"peerDependencies":{"vue":"^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-kit-vue_0.1.0-alpha.0_1763692680857_0.756577571343692","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-alpha.1":{"name":"@ainative/ai-kit-vue","version":"0.1.0-alpha.1","keywords":["ainative","ai","llm","typescript","ai-agents","ai-primitives","ainative-developer","claude","claude-code","openai","anthropic","vue","vue3","composition-api","composables","ui","components"],"author":{"name":"AINative Studio"},"license":"MIT","_id":"@ainative/ai-kit-vue@0.1.0-alpha.1","maintainers":[{"name":"ainative-studio","email":"toby@rely.ventures"}],"homepage":"https://ainative.studio/ai-kit","bugs":{"url":"https://github.com/AINative-Studio/ai-kit/issues"},"dist":{"shasum":"e6901efa6704641df9eef51eb9723d8fb4d9f5a9","tarball":"https://registry.npmjs.org/@ainative/ai-kit-vue/-/ai-kit-vue-0.1.0-alpha.1.tgz","fileCount":9,"integrity":"sha512-BHKuHcAbF3LqACYq0A69v99QHBpNZXGjvP5IP23hKJFzZgQyrfvH5HN/JoCA6pOgLI3hRRWgkofTEVRyr+C0mw==","signatures":[{"sig":"MEQCIByT5jiFSvGWMn26yVRwI1+ZaQ4W+dypz6uipze1cFFlAiBCmrfBqAxpR9yd0z+9fCI/lKQiPMkCWOmd/oVHDgVrwA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61767},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"dc8dc4a4951e8951a407b2c28d26fcda12bf373d","scripts":{"dev":"tsup --watch","lint":"eslint src","test":"vitest","build":"tsup","clean":"rm -rf dist","type-check":"tsc --noEmit","test:coverage":"vitest --coverage"},"_npmUser":{"name":"ainative-studio","email":"toby@rely.ventures"},"repository":{"url":"git+https://github.com/AINative-Studio/ai-kit.git","type":"git","directory":"packages/vue"},"_npmVersion":"10.9.4","description":"AI Kit - Vue 3 composables for building AI-powered applications","directories":{},"_nodeVersion":"22.21.0","dependencies":{"@ainative/ai-kit-core":"^0.1.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.4.0","tsup":"^8.0.1","vitest":"^1.0.0","happy-dom":"^12.10.3","typescript":"^5.3.0","@types/node":"^20.10.0","@vue/test-utils":"^2.4.0","@vitest/coverage-v8":"^1.0.0"},"peerDependencies":{"vue":"^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-kit-vue_0.1.0-alpha.1_1763767365502_0.2071859201566879","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-alpha.2":{"name":"@ainative/ai-kit-vue","version":"0.1.0-alpha.2","keywords":["ainative","ai","llm","typescript","ai-agents","ai-primitives","ainative-developer","claude","claude-code","openai","anthropic","vue","vue3","composition-api","composables","ui","components"],"author":{"name":"AINative Studio"},"license":"MIT","_id":"@ainative/ai-kit-vue@0.1.0-alpha.2","maintainers":[{"name":"ainative-studio","email":"toby@rely.ventures"}],"homepage":"https://ainative.studio/ai-kit","bugs":{"url":"https://github.com/AINative-Studio/ai-kit/issues"},"dist":{"shasum":"e287f82480d2037fb5d5cbde71d83238c83e4610","tarball":"https://registry.npmjs.org/@ainative/ai-kit-vue/-/ai-kit-vue-0.1.0-alpha.2.tgz","fileCount":9,"integrity":"sha512-c+8UyllkSfaR5YNX/j/ajS03HIDq45TJRr6YKYQh3SCl0SllxjaLZOFzCGuRQXwdL5kKPIDGUXZk6mw+n24IZw==","signatures":[{"sig":"MEYCIQD0Q9Ke8VMkQj3dL6f4wFrGsWv1DXnnB1JGHPHSz83ssQIhAMHOp2CmiN1s6D3PoqfISmRHml2D9SpMM26ze0ytKttF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61773},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"dc8dc4a4951e8951a407b2c28d26fcda12bf373d","scripts":{"dev":"tsup --watch","lint":"eslint src","test":"vitest","build":"tsup","clean":"rm -rf dist","type-check":"tsc --noEmit","test:coverage":"vitest --coverage"},"_npmUser":{"name":"ainative-studio","email":"toby@rely.ventures"},"repository":{"url":"git+https://github.com/AINative-Studio/ai-kit.git","type":"git","directory":"packages/vue"},"_npmVersion":"10.9.4","description":"AI Kit - Vue 3 composables for building AI-powered applications","directories":{},"_nodeVersion":"22.21.0","dependencies":{"@ainative-studio/aikit-core":"^0.1.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.4.0","tsup":"^8.0.1","vitest":"^1.0.0","happy-dom":"^12.10.3","typescript":"^5.3.0","@types/node":"^20.10.0","@vue/test-utils":"^2.4.0","@vitest/coverage-v8":"^1.0.0"},"peerDependencies":{"vue":"^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-kit-vue_0.1.0-alpha.2_1763779306840_0.36867878110186947","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-alpha.3":{"name":"@ainative/ai-kit-vue","version":"0.1.0-alpha.3","keywords":["ainative","ai","llm","typescript","ai-agents","ai-primitives","ainative-developer","claude","claude-code","openai","anthropic","vue","vue3","composition-api","composables","ui","components"],"author":{"name":"AINative Studio"},"license":"MIT","_id":"@ainative/ai-kit-vue@0.1.0-alpha.3","maintainers":[{"name":"ainative-studio","email":"toby@rely.ventures"}],"homepage":"https://ainative.studio/ai-kit","bugs":{"url":"https://github.com/AINative-Studio/ai-kit/issues"},"dist":{"shasum":"5eb600fab4a1269df1c1ee97ba5ca6bf5b6016d9","tarball":"https://registry.npmjs.org/@ainative/ai-kit-vue/-/ai-kit-vue-0.1.0-alpha.3.tgz","fileCount":9,"integrity":"sha512-OQumUZstA6UmueaLkQGwq5RNq9Raj4EbvBZz4xfN/7hlc/YuxyTloc8DQb+ic/JCavA3+Zgn5nXj1G5wogSrgw==","signatures":[{"sig":"MEQCIBuX54kb5O2pUs9/1wv0Ydq6rF13fY5eexudziSbt4dcAiBG3B4qdziRESTMa0XnJhEgvyLrYekJbOzbaNphsxTMlQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61780},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"d6b72c3dc5155c1f9ed5cf03652ec41ab173eeda","scripts":{"dev":"tsup --watch","lint":"eslint src","test":"vitest run","build":"tsup","clean":"rm -rf dist","type-check":"tsc --noEmit","test:coverage":"vitest --coverage"},"_npmUser":{"name":"ainative-studio","email":"toby@rely.ventures"},"repository":{"url":"git+https://github.com/AINative-Studio/ai-kit.git","type":"git","directory":"packages/vue"},"_npmVersion":"10.9.4","description":"AI Kit - Vue 3 composables for building AI-powered applications","directories":{},"_nodeVersion":"22.21.0","dependencies":{"@ainative/ai-kit-core":"workspace:*"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.4.0","tsup":"^8.0.1","vitest":"^1.0.0","happy-dom":"^12.10.3","typescript":"^5.3.0","@types/node":"^20.10.0","@vue/test-utils":"^2.4.0","@vitest/coverage-v8":"^1.0.0"},"peerDependencies":{"vue":"^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-kit-vue_0.1.0-alpha.3_1765567525922_0.2882893971262488","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@ainative/ai-kit-vue","version":"0.2.0","keywords":["ainative","ai","llm","typescript","ai-agents","ai-primitives","ainative-developer","claude","claude-code","openai","anthropic","vue","vue3","composition-api","composables","ui","components"],"author":{"name":"AINative Studio"},"license":"MIT","_id":"@ainative/ai-kit-vue@0.2.0","maintainers":[{"name":"ainative-studio","email":"toby@rely.ventures"}],"homepage":"https://ainative.studio/ai-kit","bugs":{"url":"https://github.com/AINative-Studio/ai-kit/issues"},"dist":{"shasum":"785333a25da501a0f351523f5a72a2111a95a1a5","tarball":"https://registry.npmjs.org/@ainative/ai-kit-vue/-/ai-kit-vue-0.2.0.tgz","fileCount":9,"integrity":"sha512-0B1wVVRhVy8x0Ob3Lri3cWZfeRuHSlkAb6zTOscQVYmzlmava3Uuuy0zRmrEWNNuEkieZgv2n1FdfZeBmLC0Xg==","signatures":[{"sig":"MEUCIFFnN2osLae8dcqufp4bD6w7Jccaxv1Lo1cTAyvUH7GjAiEA40GEV8FuXL0TgWm2SXUvDluEmzuTuvsiX0qO4QXZRbY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61674},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"20c46435e47c7b04321440147c853677f79c7982","scripts":{"dev":"tsup --watch","lint":"eslint src","test":"vitest run","build":"tsup","clean":"rm -rf dist","build:cdn":"tsup --config tsup.cdn.config.ts","type-check":"tsc --noEmit","test:coverage":"vitest --coverage"},"_npmUser":{"name":"ainative-studio","email":"toby@rely.ventures"},"repository":{"url":"git+https://github.com/AINative-Studio/ai-kit.git","type":"git","directory":"packages/vue"},"_npmVersion":"10.9.4","description":"AI Kit - Vue 3 composables for building AI-powered applications","directories":{},"_nodeVersion":"22.21.0","dependencies":{"@ainative/ai-kit-core":"workspace:*"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.4.0","tsup":"^8.0.1","vitest":"^4.0.18","happy-dom":"^12.10.3","typescript":"^5.3.0","@types/node":"^20.10.0","@vue/test-utils":"^2.4.0","@vitest/coverage-v8":"^4.0.18"},"peerDependencies":{"vue":"^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-kit-vue_0.2.0_1770580039935_0.5582288938923405","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@ainative/ai-kit-vue","version":"0.2.1","description":"AI Kit - Vue 3 composables for building AI-powered applications","main":"./dist/index.js","module":"./dist/index.mjs","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"build":"tsup","build:cdn":"tsup --config tsup.cdn.config.ts","dev":"tsup --watch","test":"vitest run","test:coverage":"vitest --coverage","type-check":"tsc --noEmit","lint":"eslint src","clean":"rm -rf dist","prepublishOnly":"tsx ../../scripts/check-no-workspace-protocol.ts"},"keywords":["ainative","ai","llm","typescript","ai-agents","ai-primitives","ainative-developer","claude","claude-code","openai","anthropic","vue","vue3","composition-api","composables","ui","components"],"author":{"name":"AINative Studio"},"license":"MIT","homepage":"https://ainative.studio/ai-kit","repository":{"type":"git","url":"git+https://github.com/AINative-Studio/ai-kit.git","directory":"packages/vue"},"bugs":{"url":"https://github.com/AINative-Studio/ai-kit/issues"},"dependencies":{"@ainative/ai-kit-core":"0.2.0"},"peerDependencies":{"vue":"^3.0.0"},"devDependencies":{"@types/node":"^20.10.0","@vitest/coverage-v8":"^4.0.18","@vue/test-utils":"^2.4.0","happy-dom":"^12.10.3","tsup":"^8.0.1","typescript":"^5.3.0","vitest":"^4.0.18","vue":"^3.4.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"engines":{"node":">=18.0.0"},"_id":"@ainative/ai-kit-vue@0.2.1","gitHead":"669962f093747eaa3f6013c614fdba2f0e5be431","_nodeVersion":"22.21.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-PyXCmTYlzQpLXsgCASbkyoU5IBVsRpPf+084bJ8wgYrJnUYtkiJMmPwMJGLr+5KnAXrX1+56cBq75U3OL6WuDg==","shasum":"0e9ae3a38ff73ca79654c7ae800bcca281155c76","tarball":"https://registry.npmjs.org/@ainative/ai-kit-vue/-/ai-kit-vue-0.2.1.tgz","fileCount":9,"unpackedSize":61742,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCScpL9ThCB8sjlF4+yxlU4OAGV1QdKDztExDJ2NAStCwIgFqhd278WKpa+udIb96K5XtgPEijTjzZhT/VaNe6hRQA="}]},"_npmUser":{"name":"ainative-studio","email":"toby@rely.ventures"},"directories":{},"maintainers":[{"name":"ainative-studio","email":"toby@rely.ventures"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ai-kit-vue_0.2.1_1789350182389_0.9616825962901359"},"_hasShrinkwrap":false}},"time":{"created":"2025-11-21T02:38:00.777Z","modified":"2026-09-14T01:43:02.701Z","0.1.0-alpha.0":"2025-11-21T02:38:01.049Z","0.1.0-alpha.1":"2025-11-21T23:22:45.687Z","0.1.0-alpha.2":"2025-11-22T02:41:47.050Z","0.1.0-alpha.3":"2025-12-12T19:25:26.066Z","0.2.0":"2026-02-08T19:47:20.079Z","0.2.1":"2026-09-14T01:43:02.525Z"},"bugs":{"url":"https://github.com/AINative-Studio/ai-kit/issues"},"author":{"name":"AINative Studio"},"license":"MIT","homepage":"https://ainative.studio/ai-kit","keywords":["ainative","ai","llm","typescript","ai-agents","ai-primitives","ainative-developer","claude","claude-code","openai","anthropic","vue","vue3","composition-api","composables","ui","components"],"repository":{"type":"git","url":"git+https://github.com/AINative-Studio/ai-kit.git","directory":"packages/vue"},"description":"AI Kit - Vue 3 composables for building AI-powered applications","maintainers":[{"name":"ainative-studio","email":"toby@rely.ventures"}],"readme":"# @ainative/ai-kit-vue\n\nVue 3 composables for building AI-powered applications with streaming support and conversation persistence.\n\n## Installation\n\n```bash\nnpm install @ainative/ai-kit-vue @ainative/ai-kit-core\n# or\npnpm add @ainative/ai-kit-vue @ainative/ai-kit-core\n# or\nyarn add @ainative/ai-kit-vue @ainative/ai-kit-core\n```\n\n## Features\n\n- **Vue 3 Composition API** - Modern composable pattern with full TypeScript support\n- **Reactive State Management** - Automatic reactivity with Vue refs\n- **Streaming Support** - Real-time AI response streaming with `useAIStream`\n- **Conversation Persistence** - Save and load conversations with `useConversation`\n- **Error Handling** - Built-in error management and recovery\n- **Token Usage Tracking** - Monitor API usage and costs\n- **Auto-Save** - Automatic conversation persistence with debouncing\n- **Retry Logic** - Automatic retry with exponential backoff\n- **Lifecycle Management** - Automatic cleanup on component unmount\n\n## Quick Start\n\n### Basic Streaming\n\n```vue\n<script setup lang=\"ts\">\nimport { useAIStream } from '@ainative/ai-kit-vue'\n\nconst { messages, isStreaming, error, send, reset, usage } = useAIStream({\n  endpoint: '/api/chat',\n  model: 'gpt-4',\n})\n\nconst handleSend = () => {\n  send('Hello, AI!')\n}\n</script>\n\n<template>\n  <div>\n    <div v-for=\"message in messages\" :key=\"message.id\">\n      <strong>{{ message.role }}:</strong> {{ message.content }}\n    </div>\n\n    <div v-if=\"isStreaming\">Streaming...</div>\n    <div v-if=\"error\">Error: {{ error.message }}</div>\n\n    <button @click=\"handleSend\" :disabled=\"isStreaming\">\n      Send Message\n    </button>\n    <button @click=\"reset\">Reset</button>\n\n    <div>Tokens: {{ usage.totalTokens }}</div>\n  </div>\n</template>\n```\n\n### Persistent Conversations\n\n```vue\n<script setup lang=\"ts\">\nimport { useConversation } from '@ainative/ai-kit-vue'\nimport { createStore } from '@ainative/ai-kit-core'\n\nconst store = createStore({ type: 'memory' })\n\nconst {\n  messages,\n  isLoading,\n  isSaving,\n  error,\n  appendMessage,\n  clearConversation,\n  saveConversation,\n} = useConversation({\n  store,\n  conversationId: 'chat-session-1',\n  autoSave: true,\n  autoSaveDelay: 1000,\n})\n\nconst handleAddMessage = () => {\n  appendMessage({\n    id: Date.now().toString(),\n    role: 'user',\n    content: 'Hello!',\n    timestamp: Date.now(),\n  })\n}\n</script>\n\n<template>\n  <div>\n    <div v-if=\"isLoading\">Loading conversation...</div>\n    <div v-if=\"isSaving\">Saving...</div>\n\n    <div v-for=\"message in messages\" :key=\"message.id\">\n      {{ message.content }}\n    </div>\n\n    <button @click=\"handleAddMessage\">Add Message</button>\n    <button @click=\"clearConversation\">Clear</button>\n    <button @click=\"saveConversation\">Save Now</button>\n  </div>\n</template>\n```\n\n## API Reference\n\n### `useAIStream(config)`\n\nA Vue 3 composable for managing AI streaming conversations.\n\n**Parameters:**\n- `config: StreamConfig` - Configuration object for the AI stream\n\n**Returns:**\n- `messages: Ref<Message[]>` - Reactive array of conversation messages\n- `isStreaming: Ref<boolean>` - Reactive streaming status\n- `error: Ref<Error | null>` - Reactive error state\n- `usage: Ref<Usage>` - Reactive token usage statistics\n- `send: (content: string) => Promise<void>` - Send a message\n- `reset: () => void` - Reset the conversation\n- `retry: () => Promise<void>` - Retry the last message\n- `stop: () => void` - Stop the current stream\n\n### `useConversation(options)`\n\nA Vue 3 composable for managing persistent conversations.\n\n**Parameters:**\n- `options: UseConversationOptions` - Configuration object\n\n**Options:**\n- `store: ConversationStore` - Store instance for persistence\n- `conversationId: string` - Unique conversation identifier\n- `autoSave?: boolean` - Enable auto-save (default: true)\n- `autoSaveDelay?: number` - Debounce delay in ms (default: 1000)\n- `autoLoad?: boolean` - Auto-load on mount (default: true)\n- `ttl?: number` - Time-to-live in seconds\n- `metadata?: Record<string, any>` - Custom metadata\n- `onLoad?: (conversation: Conversation) => void` - Load callback\n- `onSave?: (conversation: Conversation) => void` - Save callback\n- `onError?: (error: Error) => void` - Error callback\n- `onAutoSave?: (conversation: Conversation) => void` - Auto-save callback\n\n**Returns:**\n- `messages: Ref<Message[]>` - Reactive messages array\n- `isLoading: Ref<boolean>` - Loading state\n- `isSaving: Ref<boolean>` - Saving state\n- `error: Ref<Error | null>` - Error state\n- `hasMore: Ref<boolean>` - Pagination state\n- `metadata: Ref<ConversationMetadata | null>` - Conversation metadata\n- `currentOffset: Ref<number>` - Pagination offset\n- `loadConversation: (id?: string) => Promise<void>` - Load conversation\n- `saveConversation: () => Promise<void>` - Save conversation\n- `appendMessage: (message: Message) => Promise<void>` - Add message\n- `appendMessages: (messages: Message[]) => Promise<void>` - Add multiple messages\n- `deleteMessage: (messageId: string) => Promise<void>` - Delete message\n- `updateMessage: (messageId: string, updates: Partial<Message>) => Promise<void>` - Update message\n- `clearConversation: () => Promise<void>` - Clear all messages\n- `loadMore: () => Promise<void>` - Load older messages\n- `reload: () => Promise<void>` - Reload from store\n- `clearError: () => void` - Clear error state\n\n## Migration from React Package\n\nIf you were previously using Vue composables from `@ainative/ai-kit-react`, you should now import from `@ainative/ai-kit-vue`:\n\n```typescript\n// Before\nimport { useAIStream } from '@ainative/ai-kit-react/vue'\n\n// After\nimport { useAIStream } from '@ainative/ai-kit-vue'\n```\n\nThe API remains the same, ensuring a smooth transition.\n\n## Storage Backends\n\nThe `useConversation` composable supports multiple storage backends:\n\n### Memory Store (Development)\n```typescript\nimport { createStore } from '@ainative/ai-kit-core'\nconst store = createStore({ type: 'memory' })\n```\n\n### Redis Store (Production)\n```typescript\nconst store = createStore({\n  type: 'redis',\n  redis: {\n    host: 'localhost',\n    port: 6379,\n  },\n})\n```\n\n### ZeroDB Store (Cloud)\n```typescript\nconst store = createStore({\n  type: 'zerodb',\n  zerodb: {\n    apiKey: 'your-api-key',\n    projectId: 'your-project-id',\n  },\n})\n```\n\n## TypeScript Support\n\nThis package is written in TypeScript and provides full type definitions. All composables return properly typed reactive refs.\n\n```typescript\nimport type {\n  UseAIStreamResult,\n  UseConversationReturn,\n  Message,\n  Usage,\n  StreamConfig,\n} from '@ainative/ai-kit-vue'\n```\n\n## Browser Compatibility\n\nSame as Vue 3 requirements:\n- Modern browsers with ES2015 support\n- Chrome >= 64\n- Firefox >= 67\n- Safari >= 12\n- Edge >= 79\n\n## Documentation\n\nFor full documentation, visit [https://ainative.studio/ai-kit](https://ainative.studio/ai-kit)\n\n## License\n\nMIT\n","readmeFilename":"README.md"}