{"_id":"@ainative/svelte-sdk","name":"@ainative/svelte-sdk","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@ainative/svelte-sdk","version":"1.0.0","description":"Official Svelte SDK for AINative Studio API - Stores and actions for chat completions and credit management","main":"dist/index.js","module":"dist/index.esm.js","types":"dist/index.d.ts","svelte":"src/index.ts","exports":{".":{"types":"./dist/index.d.ts","svelte":"./src/index.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,.svelte","lint:fix":"eslint . --ext .ts,.svelte --fix","type-check":"tsc --noEmit","prepublishOnly":"npm run test && npm run build"},"keywords":["ainative","svelte","sveltekit","stores","reactive","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":{"svelte":"^4.0.0 || ^5.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","@testing-library/svelte":"^4.0.5","@types/node":"^20.10.0","@typescript-eslint/eslint-plugin":"^6.13.0","@typescript-eslint/parser":"^6.13.0","@vitest/coverage-v8":"^1.6.0","eslint":"^8.54.0","eslint-plugin-svelte":"^2.35.0","jsdom":"^23.0.1","rollup":"^3.29.4","rollup-plugin-dts":"^5.3.1","svelte":"^4.2.8","tslib":"^2.6.2","typescript":"^5.3.2","vitest":"^1.6.0"},"engines":{"node":">=18.0.0"},"_id":"@ainative/svelte-sdk@1.0.0","gitHead":"8a82dd95afbd1c89bee4517527380f9359448e24","_nodeVersion":"22.21.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-eTLMHIViTT46QIQo+kHPhAEgRitO+QcunnoW7WIszL+IbDGAeaErZ1jH8FnfcsQwHQSkIrt0ohfitD/B4K/7vg==","shasum":"908ac59eba732e67b17b02bc5038f312e6b10326","tarball":"https://registry.npmjs.org/@ainative/svelte-sdk/-/svelte-sdk-1.0.0.tgz","fileCount":24,"unpackedSize":81561,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDvlEwZSHZtx4PxjYiND3Hsf+A+D+wh6ni5dH9gAWyjTgIgGh4ZwWa7uYx+C6OvzB38hUlBoZQyd6Tu3YmGXifA0vg="}]},"_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/svelte-sdk_1.0.0_1768464946867_0.9883528128138184"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-15T08:15:46.695Z","1.0.0":"2026-01-15T08:15:47.007Z","modified":"2026-01-15T08:15:47.340Z"},"maintainers":[{"name":"ainative-studio","email":"toby@rely.ventures"}],"description":"Official Svelte SDK for AINative Studio API - Stores and actions for chat completions and credit management","homepage":"https://ainative.studio","keywords":["ainative","svelte","sveltekit","stores","reactive","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/svelte-sdk\n\nOfficial Svelte SDK for AINative Studio API - Reactive stores for chat completions and credit management.\n\n[![npm version](https://badge.fury.io/js/%40ainative%2Fsvelte-sdk.svg)](https://www.npmjs.com/package/@ainative/svelte-sdk)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n## Features\n\n- 🎯 **Svelte Stores** - Reactive stores that integrate seamlessly with Svelte\n- 💬 **Chat Completions** - Stream AI responses with `createChat()`\n- 💰 **Credit Management** - Track balance with `createCredits()`\n- 📘 **TypeScript** - Full type safety with TypeScript definitions\n- 🔄 **Reactive** - Built on Svelte's reactivity system\n- 🪶 **Lightweight** - Minimal bundle size with tree-shaking support\n- ⚡ **Svelte 4 & 5** - Compatible with both Svelte versions\n\n## Installation\n\n```bash\nnpm install @ainative/svelte-sdk\n```\n\n## Quick Start\n\n### 1. Configure SDK\n\n```typescript\n// +layout.svelte or app initialization\n<script lang=\"ts\">\n  import { setAINativeConfig } from '@ainative/svelte-sdk';\n  import { onMount } from 'svelte';\n\n  onMount(() => {\n    setAINativeConfig({\n      apiKey: 'your-api-key-here',\n      baseUrl: 'https://api.ainative.studio' // optional\n    });\n  });\n</script>\n```\n\n### 2. Use Chat Store\n\n```svelte\n<script lang=\"ts\">\n  import { createChat, type Message } from '@ainative/svelte-sdk';\n\n  const chat = createChat({\n    model: 'claude-3-5-sonnet-20241022'\n  });\n\n  let input = '';\n\n  async function handleSubmit() {\n    if (!input.trim()) return;\n\n    const userMessage: Message = {\n      role: 'user',\n      content: input\n    };\n\n    try {\n      await chat.sendMessage([...$chat.messages, userMessage]);\n      input = '';\n    } catch (err) {\n      console.error('Failed to send message:', err);\n    }\n  }\n</script>\n\n<div class=\"chat-container\">\n  <div class=\"messages\">\n    {#each $chat.messages as msg}\n      <div class=\"message-{msg.role}\">\n        <strong>{msg.role}:</strong> {msg.content}\n      </div>\n    {/each}\n  </div>\n\n  {#if $chat.error}\n    <div class=\"error\">{$chat.error.message}</div>\n  {/if}\n\n  <form on:submit|preventDefault={handleSubmit}>\n    <input\n      bind:value={input}\n      disabled={$chat.isLoading}\n      placeholder=\"Type your message...\"\n    />\n    <button type=\"submit\" disabled={$chat.isLoading || !input.trim()}>\n      {$chat.isLoading ? 'Sending...' : 'Send'}\n    </button>\n  </form>\n\n  <button on:click={() => chat.reset()} type=\"button\">\n    Reset Chat\n  </button>\n</div>\n```\n\n### 3. Use Credits Store\n\n```svelte\n<script lang=\"ts\">\n  import { createCredits } from '@ainative/svelte-sdk';\n\n  const credits = createCredits({\n    autoFetch: true\n  });\n</script>\n\n<div class=\"credits-display\">\n  {#if $credits.isLoading}\n    <div>Loading balance...</div>\n  {:else if $credits.error}\n    <div class=\"error\">{$credits.error.message}</div>\n  {:else if $credits.balance}\n    <div>\n      <p>Balance: {$credits.balance.balance} {$credits.balance.currency}</p>\n      <p>User ID: {$credits.balance.userId}</p>\n    </div>\n  {/if}\n\n  <button on:click={() => credits.refetch()} disabled={$credits.isLoading}>\n    Refresh Balance\n  </button>\n</div>\n```\n\n### Using Derived Stores\n\n```svelte\n<script lang=\"ts\">\n  import { createChat } from '@ainative/svelte-sdk';\n\n  const chat = createChat();\n\n  // Access derived stores directly\n  const { messages, isLoading, error } = chat;\n</script>\n\n{#each $messages as msg}\n  <div>{msg.content}</div>\n{/each}\n\n{#if $isLoading}\n  <div>Loading...</div>\n{/if}\n\n{#if $error}\n  <div>Error: {$error.message}</div>\n{/if}\n```\n\n## API Reference\n\n### `setAINativeConfig(config)`\n\nConfigure the SDK with your API key and optional base URL.\n\n```typescript\nimport { setAINativeConfig } from '@ainative/svelte-sdk';\n\nsetAINativeConfig({\n  apiKey: 'your-api-key',\n  baseUrl: 'https://api.ainative.studio' // optional\n});\n```\n\n### `createChat(options?)`\n\nCreate a reactive chat store for managing conversations.\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- Store with `messages`, `isLoading`, `error` (derived stores)\n- `sendMessage(messages: Message[])` - Send messages\n- `reset()` - Reset conversation\n\n### `createCredits(options?)`\n\nCreate a reactive credits store for monitoring balance.\n\n**Options:**\n- `autoFetch?: boolean` - Automatically fetch on creation (default: `false`)\n\n**Returns:**\n- Store with `balance`, `isLoading`, `error` (derived stores)\n- `refetch()` - 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  ChatOptions,\n  CreditsOptions\n} from '@ainative/svelte-sdk';\n```\n\n## SvelteKit Integration\n\n```typescript\n// src/routes/+layout.ts\nimport { setAINativeConfig } from '@ainative/svelte-sdk';\nimport { PUBLIC_AINATIVE_API_KEY } from '$env/static/public';\n\nexport const load = () => {\n  setAINativeConfig({\n    apiKey: PUBLIC_AINATIVE_API_KEY\n  });\n};\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- SvelteKit integration\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-1327a7cc39d6cda555cc3c38af31b3c6"}