{"_id":"@bragi-ai/sdk","name":"@bragi-ai/sdk","dist-tags":{"latest":"0.2.0"},"versions":{"0.2.0":{"name":"@bragi-ai/sdk","version":"0.2.0","description":"Bragi Platform SDK — runtime kits for audio apps + portal management types","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"},"./runtime":{"types":"./dist/runtime.d.ts","import":"./dist/runtime.mjs","require":"./dist/runtime.js"},"./portal":{"types":"./dist/portal.d.ts","import":"./dist/portal.mjs","require":"./dist/portal.js"},"./client":{"types":"./dist/client.d.ts","import":"./dist/client.mjs","require":"./dist/client.js"}},"peerDependencies":{"@bragi-ai/types":"0.3.0-rc.1"},"devDependencies":{"tsup":"^8.5.0","typescript":"^5.0.0","vitest":"^3.2.0","@bragi-ai/types":"0.3.0-rc.1"},"license":"MIT","private":false,"scripts":{"build":"tsup","dev":"tsup --watch","test":"vitest run","test:watch":"vitest"},"_id":"@bragi-ai/sdk@0.2.0","_integrity":"sha512-YXE/ImgXZWzrX1L53k36LsiVvBDS3BwB28qp3ciz69zOSVw89lOFCC7P6zQRZhgTF3X/sWrsSGUHpr2YGhP0LA==","_resolved":"/private/var/folders/98/cbv2fl9n2qbdbtnbcpdd8gq00000gn/T/36e88592827ee19224b565da25148ac7/bragi-ai-sdk-0.2.0.tgz","_from":"file:bragi-ai-sdk-0.2.0.tgz","_nodeVersion":"22.22.2","_npmVersion":"10.9.7","dist":{"integrity":"sha512-YXE/ImgXZWzrX1L53k36LsiVvBDS3BwB28qp3ciz69zOSVw89lOFCC7P6zQRZhgTF3X/sWrsSGUHpr2YGhP0LA==","shasum":"4455632d049b5297152d704dcf7742f6c5c82c32","tarball":"https://registry.npmjs.org/@bragi-ai/sdk/-/sdk-0.2.0.tgz","fileCount":50,"unpackedSize":980131,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCkzfm2JVyOLAzau4uhWepYtBq/sra2CPUJahALqJeBEgIgVIcP3zA5iql3PI0Uo3rkLF9zNrov4basBtYwRDC6ZUI="}]},"_npmUser":{"name":"nihviid","email":"nikolaj.hviid@bragi.com"},"directories":{},"maintainers":[{"name":"nihviid","email":"nikolaj.hviid@bragi.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sdk_0.2.0_1776963480045_0.5591824247807222"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-23T16:57:59.675Z","0.2.0":"2026-04-23T16:58:00.233Z","modified":"2026-04-23T16:58:00.524Z"},"maintainers":[{"name":"nihviid","email":"nikolaj.hviid@bragi.com"}],"description":"Bragi Platform SDK — runtime kits for audio apps + portal management types","license":"MIT","readme":"# Bragi Platform SDK\n\nThe Bragi Platform SDK provides kits for building audio apps and dynamic pages on the Bragi Platform. It includes everything needed to communicate with the Bragi Host App, manage device features, handle voice AI, and build interactive experiences.\n\n## Installation\n\n```bash\nnpm install @bragi-ai/sdk\n# or\npnpm add @bragi-ai/sdk\n```\n\n## Building from Source\n\nTo build the SDK from source:\n\n```bash\n# From the monorepo root\npnpm build:sdk\n\n# Or from the SDK directory\npnpm --filter @bragi-ai/sdk build\n\n# For development with watch mode\npnpm --filter @bragi-ai/sdk dev\n```\n\nThe built artifacts will be available in the `dist/` directory:\n- `dist/index.js` — CommonJS build\n- `dist/index.mjs` — ES modules build\n- `dist/index.d.ts` — TypeScript type definitions\n\n## Kits\n\n### DeviceKit\n\nManage device connection, features (Active Noise Cancellation, EQ), and handle gesture events.\n\n```typescript\nimport { createDeviceKit } from '@bragi-ai/sdk';\n\nconst deviceKit = createDeviceKit();\n\n// Listen for device state changes\ndeviceKit.state$.subscribe((state) => {\n  console.log('Battery level:', state.battery);\n  console.log('ANC mode:', state.ancMode);\n});\n\n// Update device features\ndeviceKit.setAncMode('on');\ndeviceKit.setEqPreset('bass-boost');\n\n// Handle gestures\ndeviceKit.on('gesture', (event) => {\n  if (event.tap === 2 && event.side === 'right') {\n    console.log('Double tap on right side detected');\n  }\n});\n```\n\n### AgentKit\n\nBuild voice AI experiences with Text-to-Speech (TTS), Speech-to-Text (STT), and agent state management.\n\n```typescript\nimport { createAgentKit } from '@bragi-ai/sdk';\n\nconst agentKit = createAgentKit({\n  voiceName: 'Alloy',\n  ttsProvider: 'openai',\n});\n\n// Start listening for voice input\nawait agentKit.startListening();\n\n// Synthesize and play speech\nawait agentKit.speak('Hello, how can I help you?');\n\n// Access agent state\nagentKit.state$.subscribe((state) => {\n  console.log('Is listening:', state.isListening);\n  console.log('Is speaking:', state.isSpeaking);\n});\n```\n\n### PhoneKit\n\nAccess phone capabilities like screen state, location, and time.\n\n```typescript\nimport { createPhoneKit } from '@bragi-ai/sdk';\n\nconst phoneKit = createPhoneKit();\n\n// Get phone state\nphoneKit.state$.subscribe((state) => {\n  console.log('Screen is on:', state.isScreenOn);\n  console.log('Location:', state.location);\n  console.log('Current time:', state.currentTime);\n});\n```\n\n### PlayKit\n\nControl media playback including play, pause, queue management, and seeking.\n\n```typescript\nimport { createPlayKit } from '@bragi-ai/sdk';\n\nconst playKit = createPlayKit();\n\n// Play a track\nawait playKit.play({\n  id: 'track-1',\n  title: 'Song Title',\n  artist: 'Artist Name',\n  url: 'https://example.com/song.mp3',\n});\n\n// Control playback\nawait playKit.pause();\nawait playKit.resume();\nawait playKit.seek(45000); // Seek to 45 seconds\n\n// Queue management\nawait playKit.addToQueue([track1, track2, track3]);\nawait playKit.setRepeatMode('one');\n```\n\n### MemoryKit\n\nStore and retrieve user memories, app storage, and user preferences.\n\n```typescript\nimport { createMemoryKit } from '@bragi-ai/sdk';\n\nconst memoryKit = createMemoryKit();\n\n// Store user memory\nawait memoryKit.saveUserMemory({\n  content: 'User prefers morning workouts',\n  category: 'preferences',\n});\n\n// Store app data\nawait memoryKit.setAppStorage('theme', 'dark');\n\n// Save preferences\nawait memoryKit.setUserPreference('notifications_enabled', true);\n```\n\n### SystemKit\n\nAccess platform info, app lifecycle, and send notifications.\n\n```typescript\nimport { createSystemKit } from '@bragi-ai/sdk';\n\nconst systemKit = createSystemKit();\n\n// Get platform info\nsystemKit.state$.subscribe((state) => {\n  console.log('Platform version:', state.platformInfo.version);\n  console.log('App lifecycle:', state.appLifecycleState);\n});\n\n// Send notification\nawait systemKit.sendNotification({\n  title: 'New Message',\n  body: 'You have a new message',\n  priority: 'high',\n});\n```\n\n### DynamicPageKit\n\nBuild interactive dynamic pages within audio apps.\n\n```typescript\nimport { createDynamicPageKit } from '@bragi-ai/sdk';\n\nconst pageKit = createDynamicPageKit();\n\n// Handle page lifecycle\npageKit.on('mounted', () => {\n  console.log('Page mounted');\n});\n\npageKit.on('visible', () => {\n  console.log('Page is now visible');\n});\n\n// Navigate to another page\nawait pageKit.navigate({\n  destination: 'home',\n  params: { id: '123' },\n});\n```\n\n## API Reference\n\nThe SDK also exports the complete Bragi API definitions including:\n\n- Message types and payloads\n- Command and event definitions\n- API versioning information\n\n```typescript\nimport { BragiApi, BragiMessage } from '@bragi-ai/sdk';\n\n// Use API types for type-safe communication\nconst message: BragiMessage = {\n  // ...\n};\n```\n\n## License\n\nProprietary -- Bragi GmbH\n","readmeFilename":"README.md","_rev":"1-3d158f12e54a74b34764b029b3f8ce0e"}