{"_id":"@aiia.io/agui-sdk","name":"@aiia.io/agui-sdk","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@aiia.io/agui-sdk","version":"1.0.0","description":"AG-UI Streaming SDK for AIIA client 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"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.mjs","require":"./dist/react/index.js"}},"scripts":{"build":"tsup src/index.ts src/react/index.ts --format cjs,esm --dts","dev":"tsup src/index.ts src/react/index.ts --format cjs,esm --dts --watch","lint":"eslint src --ext .ts,.tsx","test":"vitest","typecheck":"tsc --noEmit"},"peerDependencies":{"react":">=17.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"devDependencies":{"@types/react":"^18.0.0","react":"^18.0.0","tsup":"^8.0.0","typescript":"^5.0.0","vitest":"^1.0.0"},"keywords":["aiia","ag-ui","sse","streaming","sdk"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/aiia/agui-sdk.git"},"_id":"@aiia.io/agui-sdk@1.0.0","gitHead":"2d8cbf4190cfdfca71389e7df82e127f9c61b6a2","bugs":{"url":"https://github.com/aiia/agui-sdk/issues"},"homepage":"https://github.com/aiia/agui-sdk#readme","_nodeVersion":"22.15.1","_npmVersion":"10.9.2","dist":{"integrity":"sha512-O0g8rQTPpo113AhKjY/yVrA6+AGi5JFtrkaqts1JZuWxQQQvBWPyWNEU7dFcmWJoBUNRlGL1OTxxZmdG9+j3PA==","shasum":"8d3f0e3d9fbc7a02a15c4731d69c644620b6c395","tarball":"https://registry.npmjs.org/@aiia.io/agui-sdk/-/agui-sdk-1.0.0.tgz","fileCount":13,"unpackedSize":76091,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCEhuM3SZx61ivPzEJrjSyNSb5Vq2UcDsrQmMi4rKuToAIgKVWWsp+lyQ9t3EIe0oSC6YtRXI+cpqSluSl7PzhDIY8="}]},"_npmUser":{"name":"caixo","email":"harold@aiia.io"},"directories":{},"maintainers":[{"name":"caixo","email":"harold@aiia.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/agui-sdk_1.0.0_1767270636076_0.27009387006315144"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-01T12:30:35.971Z","1.0.0":"2026-01-01T12:30:36.209Z","modified":"2026-01-01T12:30:36.532Z"},"maintainers":[{"name":"caixo","email":"harold@aiia.io"}],"description":"AG-UI Streaming SDK for AIIA client applications","homepage":"https://github.com/aiia/agui-sdk#readme","keywords":["aiia","ag-ui","sse","streaming","sdk"],"repository":{"type":"git","url":"git+https://github.com/aiia/agui-sdk.git"},"bugs":{"url":"https://github.com/aiia/agui-sdk/issues"},"license":"MIT","readme":"# @aiia/agui-sdk\n\nAG-UI Streaming SDK for AIIA client applications.\n\n## Overview\n\nThis SDK provides a platform-agnostic client for consuming AG-UI Server-Sent Events (SSE) streams. It works with:\n\n- **Web Apps**: React, Vue, Angular, vanilla JavaScript\n- **Mobile Apps**: React Native (iOS & Android)\n- **Node.js**: Server-side streaming consumption\n\n## Installation\n\n```bash\nnpm install @aiia/agui-sdk\n# or\nyarn add @aiia/agui-sdk\n# or\npnpm add @aiia/agui-sdk\n```\n\n## Usage\n\n### Basic Client (Platform-Agnostic)\n\n```typescript\nimport { AGUIClient, createAGUIClient } from '@aiia/agui-sdk';\n\nconst client = createAGUIClient({\n  baseUrl: 'https://api.aiia.io',\n  token: 'your-bearer-token',\n  tenantId: 'your-tenant-id', // optional\n  clientId: 'your-client-id', // optional\n});\n\n// Set up event handlers\nclient.setHandlers({\n  onLifecycle: (event) => {\n    console.log(`Status: ${event.status}, Step: ${event.step}/${event.total_steps}`);\n  },\n  onTextDelta: (event) => {\n    process.stdout.write(event.content); // Streaming text\n  },\n  onToolCall: (event) => {\n    console.log(`Tool ${event.tool_name}: ${event.status}`);\n  },\n  onResult: (event) => {\n    console.log('Result:', event.data);\n  },\n  onError: (event) => {\n    console.error(`Error: ${event.error_message}`);\n  },\n});\n\n// Start streaming\nawait client.stream('Show me the profit and loss report');\n```\n\n### React Hook\n\n```tsx\nimport { useAGUIStream } from '@aiia/agui-sdk/react';\n\nfunction ChatComponent() {\n  const {\n    isStreaming,\n    isConnecting,\n    status,\n    step,\n    totalSteps,\n    text,\n    toolCalls,\n    result,\n    error,\n    stream,\n    abort,\n    reset,\n  } = useAGUIStream({\n    baseUrl: 'https://api.aiia.io',\n    token: authToken,\n  });\n\n  const handleSubmit = async (query: string) => {\n    await stream(query);\n  };\n\n  return (\n    <div>\n      {isConnecting && <p>Connecting...</p>}\n\n      {isStreaming && (\n        <div>\n          <p>Step {step} of {totalSteps}: {status}</p>\n          <button onClick={abort}>Cancel</button>\n        </div>\n      )}\n\n      {text && <p>{text}</p>}\n\n      {toolCalls.map((tc) => (\n        <div key={tc.name}>\n          {tc.name}: {tc.status}\n          {tc.duration && ` (${tc.duration}ms)`}\n        </div>\n      ))}\n\n      {error && <p className=\"error\">{error.message}</p>}\n    </div>\n  );\n}\n```\n\n### React Native\n\nThe SDK works with React Native using the same API:\n\n```tsx\nimport { useAGUIStream } from '@aiia/agui-sdk/react';\nimport { View, Text, Button, ActivityIndicator } from 'react-native';\n\nfunction AIAssistant() {\n  const { isStreaming, text, stream, abort } = useAGUIStream({\n    baseUrl: 'https://api.aiia.io',\n    token: authToken,\n  });\n\n  return (\n    <View>\n      {isStreaming && <ActivityIndicator />}\n      <Text>{text}</Text>\n      <Button title=\"Ask\" onPress={() => stream('What are my expenses?')} />\n      <Button title=\"Cancel\" onPress={abort} disabled={!isStreaming} />\n    </View>\n  );\n}\n```\n\n## Event Types\n\n### Lifecycle Events\n```typescript\ninterface LifecycleEvent {\n  type: 'lifecycle';\n  status: 'started' | 'parsing' | 'intent_found' | 'routing' | 'executing' | 'completed' | 'error';\n  step?: number;\n  total_steps?: number;\n}\n```\n\n### Text Delta Events\n```typescript\ninterface TextDeltaEvent {\n  type: 'text_delta';\n  content: string;\n  content_type: 'text' | 'markdown' | 'code';\n  is_complete: boolean;\n}\n```\n\n### Tool Call Events\n```typescript\ninterface ToolCallEvent {\n  type: 'tool_call';\n  tool_name: string;\n  status: 'started' | 'completed' | 'error';\n  duration_ms?: number;\n  error_message?: string;\n}\n```\n\n### Result Events\n```typescript\ninterface ResultEvent {\n  type: 'result';\n  success: boolean;\n  data?: unknown;\n  bob_name?: string;\n  execution_time_ms?: number;\n}\n```\n\n### Error Events\n```typescript\ninterface ErrorEvent {\n  type: 'error';\n  error_code: string;\n  error_message: string;\n  recoverable: boolean;\n  suggestions?: string[];\n}\n```\n\n## Configuration\n\n| Option | Type | Default | Description |\n|--------|------|---------|-------------|\n| `baseUrl` | string | required | API base URL |\n| `token` | string | required | Bearer authentication token |\n| `tenantId` | string | optional | Tenant ID for multi-tenant |\n| `clientId` | string | optional | Client ID for multi-tenant |\n| `maxRetries` | number | 3 | Max reconnection attempts |\n| `retryDelayMs` | number | 1000 | Base delay for backoff |\n| `timeoutMs` | number | 30000 | Connection timeout |\n| `debug` | boolean | false | Enable debug logging |\n\n## Features\n\n- **Automatic Reconnection**: Exponential backoff with configurable retries\n- **Event Replay**: Uses `Last-Event-ID` header for missed event recovery\n- **Multi-Tenant Support**: Tenant and client ID headers\n- **Type-Safe**: Full TypeScript support with comprehensive types\n- **Platform-Agnostic**: Works in browser, Node.js, and React Native\n\n## Publishing\n\nTo publish to npm:\n\n```bash\n# Login to npm (one-time)\nnpm login\n\n# Build and publish\nnpm run build\nnpm publish --access public\n```\n\nFor scoped packages, ensure the package name is `@aiia/agui-sdk` and use `--access public` for public packages.\n\n## License\n\nMIT\n","readmeFilename":"README.md","_rev":"1-32ce24c1b7c3360113b27db742c265e3"}