{"_id":"@ainative/vue-sdk","name":"@ainative/vue-sdk","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@ainative/vue-sdk","version":"1.0.0","description":"Official Vue SDK for AINative Studio API - Composables for chat completions and credit management","main":"dist/index.js","module":"dist/index.esm.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.esm.js","require":"./dist/index.js"}},"scripts":{"build":"rollup -c rollup.config.mjs","build:watch":"rollup -c -w","test":"vitest run","test:watch":"vitest --watch","test:coverage":"vitest --coverage","lint":"eslint . --ext .ts,.vue","lint:fix":"eslint . --ext .ts,.vue --fix","type-check":"vue-tsc --noEmit","prepublishOnly":"npm run test && npm run build"},"keywords":["ainative","vue","vue3","composables","composition-api","api","sdk","chat","ai","typescript"],"author":{"name":"AINative Studio"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/AINative-Studio/ainative-sdks.git"},"bugs":{"url":"https://github.com/AINative-Studio/ainative-sdks/issues"},"homepage":"https://ainative.studio","peerDependencies":{"vue":"^3.0.0"},"devDependencies":{"@rollup/plugin-commonjs":"^25.0.7","@rollup/plugin-node-resolve":"^15.2.3","@rollup/plugin-typescript":"^11.1.5","@rollup/plugin-terser":"^0.4.4","@types/node":"^20.10.0","@typescript-eslint/eslint-plugin":"^6.13.0","@typescript-eslint/parser":"^6.13.0","@vitejs/plugin-vue":"^5.0.0","@vitest/coverage-v8":"^1.6.0","@vue/test-utils":"^2.4.0","eslint":"^8.54.0","eslint-plugin-vue":"^9.18.0","happy-dom":"^12.10.3","rollup":"^3.29.4","rollup-plugin-dts":"^5.3.1","tslib":"^2.6.2","typescript":"^5.3.2","vitest":"^1.6.0","vue":"^3.4.0","vue-tsc":"^1.8.0"},"engines":{"node":">=18.0.0"},"_id":"@ainative/vue-sdk@1.0.0","gitHead":"8a82dd95afbd1c89bee4517527380f9359448e24","_nodeVersion":"22.21.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-xk3jmv0uesS+mlW3wVX4VwNTDr5noTPz3HMKnTUVGP9ImQHHMKXWJQRWLJTydJEFUNY8p2flmsBrNQk5eX52mA==","shasum":"359a020263ff29ef1d651b9d69f5063b5f68f72c","tarball":"https://registry.npmjs.org/@ainative/vue-sdk/-/vue-sdk-1.0.0.tgz","fileCount":18,"unpackedSize":959339,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDLsNTP3MnQQCtSvBqMOP+UbtRHveJG5UPYwZhNQLg6KQIgSiA2WaPmxKx5C88N3XIGb/wDOO+6OOJifWk8cdVHRA0="}]},"_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/vue-sdk_1.0.0_1768464884607_0.5511489712928912"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-15T08:14:44.509Z","1.0.0":"2026-01-15T08:14:44.771Z","modified":"2026-01-15T08:14:45.059Z"},"maintainers":[{"name":"ainative-studio","email":"toby@rely.ventures"}],"description":"Official Vue SDK for AINative Studio API - Composables for chat completions and credit management","homepage":"https://ainative.studio","keywords":["ainative","vue","vue3","composables","composition-api","api","sdk","chat","ai","typescript"],"repository":{"type":"git","url":"git+https://github.com/AINative-Studio/ainative-sdks.git"},"author":{"name":"AINative Studio"},"bugs":{"url":"https://github.com/AINative-Studio/ainative-sdks/issues"},"license":"MIT","readme":"# @ainative/vue-sdk\n\nOfficial Vue SDK for AINative Studio API - Composables for chat completions and credit management.\n\n[![npm version](https://badge.fury.io/js/%40ainative%2Fvue-sdk.svg)](https://www.npmjs.com/package/@ainative/vue-sdk)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n## Features\n\n- 🎯 **Vue 3 Composition API** - Modern composables for seamless integration\n- 💬 **Chat Completions** - Stream AI responses with `useChat()`\n- 💰 **Credit Management** - Track balance with `useCredits()`\n- 📘 **TypeScript** - Full type safety with TypeScript definitions\n- 🔄 **Reactive** - Built on Vue's reactivity system\n- 🪶 **Lightweight** - Minimal bundle size with tree-shaking support\n\n## Installation\n\n```bash\nnpm install @ainative/vue-sdk\n```\n\n## Quick Start\n\n### 1. Provide Configuration\n\n```typescript\n// main.ts\nimport { createApp } from 'vue';\nimport { AINativeConfigKey } from '@ainative/vue-sdk';\nimport App from './App.vue';\n\nconst app = createApp(App);\n\napp.provide(AINativeConfigKey, {\n  apiKey: 'your-api-key-here',\n  baseUrl: 'https://api.ainative.studio' // optional\n});\n\napp.mount('#app');\n```\n\n### 2. Use Chat Composable\n\n```vue\n<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { useChat, type Message } from '@ainative/vue-sdk';\n\nconst { messages, isLoading, error, sendMessage, reset } = useChat({\n  model: 'claude-3-5-sonnet-20241022'\n});\n\nconst input = ref('');\n\nconst handleSubmit = async () => {\n  if (!input.value.trim()) return;\n\n  const userMessage: Message = {\n    role: 'user',\n    content: input.value\n  };\n\n  try {\n    await sendMessage([...messages.value, userMessage]);\n    input.value = '';\n  } catch (err) {\n    console.error('Failed to send message:', err);\n  }\n};\n</script>\n\n<template>\n  <div class=\"chat-container\">\n    <div class=\"messages\">\n      <div v-for=\"(msg, index) in messages\" :key=\"index\" :class=\"`message-${msg.role}`\">\n        <strong>{{ msg.role }}:</strong> {{ msg.content }}\n      </div>\n    </div>\n\n    <div v-if=\"error\" class=\"error\">\n      {{ error.message }}\n    </div>\n\n    <form @submit.prevent=\"handleSubmit\">\n      <input\n        v-model=\"input\"\n        :disabled=\"isLoading\"\n        placeholder=\"Type your message...\"\n      />\n      <button type=\"submit\" :disabled=\"isLoading || !input.trim()\">\n        {{ isLoading ? 'Sending...' : 'Send' }}\n      </button>\n    </form>\n\n    <button @click=\"reset\" type=\"button\">Reset Chat</button>\n  </div>\n</template>\n```\n\n### 3. Use Credits Composable\n\n```vue\n<script setup lang=\"ts\">\nimport { useCredits } from '@ainative/vue-sdk';\n\nconst { balance, isLoading, error, refetch } = useCredits({\n  autoFetch: true\n});\n</script>\n\n<template>\n  <div class=\"credits-display\">\n    <div v-if=\"isLoading\">Loading balance...</div>\n    <div v-else-if=\"error\" class=\"error\">{{ error.message }}</div>\n    <div v-else-if=\"balance\">\n      <p>Balance: {{ balance.balance }} {{ balance.currency }}</p>\n      <p>User ID: {{ balance.userId }}</p>\n    </div>\n\n    <button @click=\"refetch\" :disabled=\"isLoading\">\n      Refresh Balance\n    </button>\n  </div>\n</template>\n```\n\n## API Reference\n\n### `useAINative()`\n\nAccess the SDK configuration provided at the app level.\n\n```typescript\nimport { useAINative } from '@ainative/vue-sdk';\n\nconst config = useAINative();\nconsole.log(config.apiKey, config.baseUrl);\n```\n\n### `useChat(options?)`\n\nManage chat conversations with AI models.\n\n**Options:**\n- `initialMessages?: Message[]` - Initial conversation messages\n- `model?: string` - AI model to use (default: `claude-3-5-sonnet-20241022`)\n\n**Returns:**\n- `messages: Ref<Message[]>` - Chat message history\n- `isLoading: Ref<boolean>` - Loading state\n- `error: Ref<AINativeError | null>` - Error state\n- `sendMessage: (messages: Message[]) => Promise<ChatCompletionResponse | null>` - Send messages\n- `reset: () => void` - Reset conversation\n\n### `useCredits(options?)`\n\nMonitor credit balance.\n\n**Options:**\n- `autoFetch?: boolean` - Automatically fetch on mount (default: `true`)\n\n**Returns:**\n- `balance: Ref<CreditBalance | null>` - Credit balance\n- `isLoading: Ref<boolean>` - Loading state\n- `error: Ref<AINativeError | null>` - Error state\n- `refetch: () => Promise<void>` - Manually refetch balance\n\n## TypeScript Support\n\nFull TypeScript definitions included:\n\n```typescript\nimport type {\n  AINativeConfig,\n  Message,\n  ChatCompletionResponse,\n  CreditBalance,\n  AINativeError,\n  UseChatOptions,\n  UseCreditsOptions\n} from '@ainative/vue-sdk';\n```\n\n## Examples\n\nSee the `/examples` directory for complete example applications:\n\n- Basic chat application\n- Credit monitoring dashboard\n- Multi-model comparison\n- Chat with history persistence\n\n## License\n\nMIT © AINative Studio\n\n## Support\n\n- **Documentation**: https://api.ainative.studio/docs\n- **Email**: support@ainative.studio\n- **Discord**: https://discord.com/invite/paipalooza\n- **Issues**: https://github.com/AINative-Studio/ainative-sdks/issues\n","readmeFilename":"README.md","_rev":"1-0614e3f20a232265677a3848e4c7d4d5"}