{"_id":"@curlygao/prism-agent-sdk","_rev":"2-163c14eb6265629e5a9f132ad3e27af3","name":"@curlygao/prism-agent-sdk","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"@curlygao/prism-agent-sdk","version":"0.1.0","_id":"@curlygao/prism-agent-sdk@0.1.0","maintainers":[{"name":"curlygao","email":"curlygao@qq.com"}],"dist":{"shasum":"9959af8df7f5c8c205a1c3d3018635222948e8df","tarball":"https://registry.npmjs.org/@curlygao/prism-agent-sdk/-/prism-agent-sdk-0.1.0.tgz","fileCount":106,"integrity":"sha512-uWBrfkbUSGTAk/g890W3SM4gxgb+6vWBixtT2SpCF5SPM4o+m9Y+hO+QYcjbJtNkcuMc2plI3rxOf26klqWNKA==","signatures":[{"sig":"MEUCIF4IYtHVHIPMTYacNPp/omnjVXI0/mz2/dsTt2VqH+1sAiEAsxvfRfpfuT3NgdrLj9XU7kLcx5kYkj8C2YxpMRBXHwk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":451089},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./sdk":{"types":"./dist/sdk/index.d.ts","import":"./dist/sdk/index.js","require":"./dist/sdk/index.cjs"}},"gitHead":"feff9048f3af0748309b1220f53572a4d23240d3","scripts":{"dev":"tsup --watch","test":"vitest","build":"tsup"},"_npmUser":{"name":"curlygao","email":"curlygao@qq.com"},"_npmVersion":"11.6.2","description":"Prism Agent SDK - AI Assistant SDK with session management, tool calling, and LLM provider support","directories":{},"_nodeVersion":"24.13.0","dependencies":{"zod":"^4.3.6","glob":"^13.0.6","openai":"^6.32.0","gray-matter":"^4.0.3","eventemitter3":"^5.0.1","@anthropic-ai/sdk":"^0.80.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^1.2.0","typescript":"~5.3.0","@types/node":"^20.11.0"},"optionalDependencies":{"@google/generative-ai":"^0.21.0"},"_npmOperationalInternal":{"tmp":"tmp/prism-agent-sdk_0.1.0_1774246489622_0.4559373079269766","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@curlygao/prism-agent-sdk","version":"0.1.1","description":"Prism Agent SDK - AI Assistant SDK with session management, tool calling, and LLM provider support","type":"module","main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./sdk":{"types":"./dist/sdk/index.d.ts","import":"./dist/sdk/index.js","require":"./dist/sdk/index.cjs"}},"scripts":{"build":"tsup","dev":"tsup --watch","test":"vitest"},"dependencies":{"@anthropic-ai/sdk":"^0.80.0","eventemitter3":"^5.0.1","glob":"^13.0.6","gray-matter":"^4.0.3","openai":"^6.32.0","zod":"^4.3.6"},"optionalDependencies":{"@google/generative-ai":"^0.21.0"},"devDependencies":{"@types/node":"^20.11.0","tsup":"^8.0.0","typescript":"~5.3.0","vitest":"^1.2.0"},"gitHead":"1ac88d11df1cf99cb50c369f87401620baadf0c1","_id":"@curlygao/prism-agent-sdk@0.1.1","_nodeVersion":"24.13.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-RZIFONG+CvX54PERXL/9MKNvymPJAq2CYGsGwFMKIVHXmD6ojUz4elrBo6fU2/ORKrF6OJXSfQZPgvjsaLALLw==","shasum":"68348091e5236222d16d43fc210461ffdef26cbf","tarball":"https://registry.npmjs.org/@curlygao/prism-agent-sdk/-/prism-agent-sdk-0.1.1.tgz","fileCount":15,"unpackedSize":1317848,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIHPzyZdSH4FYxJ0O7hZPC+5vVeWY89nZnmO/cFMQVV19AiAqGhG0sFNYcmsbxggxCTCpeXv6LgQm2PSfw8eBca9piQ=="}]},"_npmUser":{"name":"curlygao","email":"curlygao@qq.com"},"directories":{},"maintainers":[{"name":"curlygao","email":"curlygao@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/prism-agent-sdk_0.1.1_1774251983808_0.31603281503241165"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-23T06:14:49.509Z","modified":"2026-03-23T07:46:24.411Z","0.1.0":"2026-03-23T06:14:49.781Z","0.1.1":"2026-03-23T07:46:23.980Z"},"description":"Prism Agent SDK - AI Assistant SDK with session management, tool calling, and LLM provider support","maintainers":[{"name":"curlygao","email":"curlygao@qq.com"}],"readme":"# Prism Agent SDK\n\n[中文文档](./README-zh.md) | English\n\n## Overview\n\nPrism Agent SDK is a core library for building AI assistant applications, providing session management, message handling, tool calling, and storage management features.\n\n## Installation\n\n```bash\nnpm install @curlygao/prism-agent-sdk\n```\n\n## Quick Start\n\n### 1. Initialize SDK\n\n```typescript\nimport { PrismAgentSDK } from '@curlygao/prism-agent-sdk';\n\nconst sdk = new PrismAgentSDK({\n  workingDir: '/path/to/workspace',  // Working directory\n  configDir: '~/.prism-agent',      // Config directory (optional)\n  logLevel: 'info',                // Log level (optional)\n});\n```\n\n### 2. Create Session and Send Message\n\n```typescript\n// Create a new session\nconst session = await sdk.sessions.create({\n  title: 'My First Session',\n  projectId: 'optional-project-id'  // Optional\n});\n\n// Send a message\nconst response = await session.sendMessage('Hello, introduce yourself');\nconsole.log('AI Response:', response);\n```\n\n### 3. Listen to Events\n\n```typescript\nsession.on('text:start', () => {\n  console.log('Text generation started...');\n});\n\nsession.on('text:delta', (data) => {\n  process.stdout.write(data.delta);\n});\n\nsession.on('text:done', () => {\n  console.log('\\nText generation completed');\n});\n```\n\n## Core Modules\n\n### PrismAgentSDK\n\nThe main entry point class containing all sub-modules:\n\n```typescript\nconst sdk = new PrismAgentSDK(options);\n\nsdk.events      // Event bus\nsdk.sessions    // Session manager\nsdk.tools       // Tool registry\nsdk.storage     // Storage module\nsdk.app         // App config and state\nsdk.providers   // LLM provider management\n```\n\n### SessionManager\n\nManages session lifecycle:\n\n```typescript\n// Create session\nconst session = await sdk.sessions.create({ title: 'Session Title' });\n\n// Get existing session\nconst existingSession = await sdk.sessions.get('session-id');\n\n// List sessions\nconst sessions = await sdk.sessions.list();\n\n// Update session\nawait sdk.sessions.update('session-id', { title: 'New Title' });\n\n// Delete session\nawait sdk.sessions.delete('session-id');\n```\n\n### SessionHandle\n\nInterface for interacting with a single session:\n\n```typescript\n// Send message\nconst response = await session.sendMessage('User message');\n\n// Get session state\nconst state = session.getState();\nconsole.log('Session ID:', state.sessionId);\n\n// Listen to events\nsession.on('text:delta', (data) => process.stdout.write(data.delta));\n\n// Close session\nawait session.close();\n```\n\n## Event System\n\n### Session Event Types\n\n| Event | Description | Data |\n|-------|-------------|------|\n| `text:start` | Text generation started | - |\n| `text:delta` | Text delta update | `{ delta: string }` |\n| `text:done` | Text generation completed | `{ content: string }` |\n| `reasoning:start` | Reasoning started | - |\n| `reasoning:delta` | Reasoning delta update | `{ delta: string }` |\n| `reasoning:done` | Reasoning completed | - |\n| `tool:call:start` | Tool call started | `{ toolName: string, args: object }` |\n| `tool:call:done` | Tool call completed | `{ toolName: string, result: any }` |\n| `tool:execute:start` | Tool execution started | `{ toolName: string }` |\n| `tool:execute:done` | Tool execution completed | `{ toolName: string, result: any }` |\n| `tool:execute:error` | Tool execution error | `{ toolName: string, error: Error }` |\n| `agent:done` | Agent processing completed | `{ response: AgentResponse }` |\n| `agent:error` | Error occurred | `{ error: Error }` |\n\n## Built-in Tools\n\n- `read_file` - Read file content\n- `write_file` - Write file content\n- `list_dir` - List directory contents\n- `exec_command` - Execute terminal commands\n- `http_get` - Send HTTP GET requests\n\n## LLM Provider Management\n\n```typescript\n// List available providers\nconst providers = sdk.providers.list();\n\n// Get current provider\nconst currentProvider = sdk.providers.getCurrent();\n\n// Switch provider\nsdk.providers.switch('openai');\n```\n\n## Complete Example\n\n```typescript\nimport { PrismAgentSDK } from '@curlygao/prism-agent-sdk';\n\nasync function main() {\n  const sdk = new PrismAgentSDK({\n    workingDir: process.cwd(),\n    configDir: '~/.prism-agent',\n    logLevel: 'info',\n  });\n\n  try {\n    const session = await sdk.sessions.create({ title: 'My Session' });\n\n    session.on('text:delta', (data) => {\n      process.stdout.write(data.delta);\n    });\n\n    const response = await session.sendMessage('Hello');\n    console.log('Response:', response.finishReason);\n\n    await session.close();\n  } finally {\n    await sdk.close();\n  }\n}\n\nmain().catch(console.error);\n```\n\n## Error Handling\n\n```typescript\nimport { SessionNotFoundError, SessionClosedError, SessionBusyError } from '@curlygao/prism-agent-sdk/sdk';\n\ntry {\n  const session = await sdk.sessions.get('non-existent-id');\n} catch (error) {\n  if (error instanceof SessionNotFoundError) {\n    console.error('Session not found');\n  } else if (error instanceof SessionClosedError) {\n    console.error('Session is closed');\n  } else if (error instanceof SessionBusyError) {\n    console.error('Session is busy');\n  }\n}\n```\n\n## Best Practices\n\n1. **Resource Cleanup**: Call `sdk.close()` to release resources after use\n2. **Event Listeners**: Use `once()` for one-time listeners\n3. **Error Handling**: Always use try-catch\n4. **Session Management**: Regularly clean up unused sessions\n\n## Examples\n\nSee [examples](./examples/) directory for more examples.\n\n## Roadmap\n\nPlanned features for future releases:\n\n- [ ] **Context Compression** - Add context compression to handle longer conversations efficiently\n- [ ] **More Built-in Tools** - Expand the tool ecosystem with additional utility tools\n- [ ] **MCP Server Support** - Add support for Model Context Protocol (MCP) services\n\n## License\n\nMIT\n","readmeFilename":"README.md"}