{"_id":"@agent-labs/agent-toolkit","_rev":"5-1d746946da06fbf33c2abe449c9e9f74","name":"@agent-labs/agent-toolkit","dist-tags":{"latest":"0.2.2"},"versions":{"0.1.0":{"name":"@agent-labs/agent-toolkit","version":"0.1.0","keywords":["agent","streaming","tooling","rxjs"],"author":{"name":"Agent Labs"},"license":"MIT","_id":"@agent-labs/agent-toolkit@0.1.0","maintainers":[{"name":"peiiii","email":"1535376447@qq.com"}],"dist":{"shasum":"4acfb44ca9b0e5421a584afaa5a5ca1559aec139","tarball":"https://registry.npmjs.org/@agent-labs/agent-toolkit/-/agent-toolkit-0.1.0.tgz","fileCount":6,"integrity":"sha512-TdTg73PJrpvuCKr4a5H9oPUgtTDcmEUYPAxAYI466yyCIjb/0AHw4VNlRbWQ+EHmdim/o/Vl0FoUxcxDwWDDBQ==","signatures":[{"sig":"MEUCIQCgJxhpirBSs9daavrAM0uIweeyLM37uBTQz+Bd+7lh/AIgdc01sS6c8wBxvzHHtsxym3u9Mx1ybv/6gpakmhqggrs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15774},"main":"dist/index.js","type":"module","_from":"file:agent-labs-agent-toolkit-0.1.0.tgz","types":"dist/index.d.ts","private":false,"scripts":{"dev":"tsdown --watch","lint":"echo 'no lint config yet'","test":"node --version","build":"tsdown","examples:streams:fake":"tsx examples/streams/openai-to-agent-event.example.ts"},"_npmUser":{"name":"peiiii","email":"1535376447@qq.com"},"_resolved":"/private/var/folders/gp/ls0ngf8d1qn97_g1t48670zc0000gn/T/8ce80c4cae512c21b3087bc6e8ebe407/agent-labs-agent-toolkit-0.1.0.tgz","_integrity":"sha512-TdTg73PJrpvuCKr4a5H9oPUgtTDcmEUYPAxAYI466yyCIjb/0AHw4VNlRbWQ+EHmdim/o/Vl0FoUxcxDwWDDBQ==","_npmVersion":"10.9.2","description":"Pure logic toolkit for agent streaming, tool orchestration, and argument accumulation.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"rxjs":"^7.8.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.4","tsdown":"^0.12.7","typescript":"^5.3.2"},"_npmOperationalInternal":{"tmp":"tmp/agent-toolkit_0.1.0_1763044226719_0.7641550936165342","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@agent-labs/agent-toolkit","version":"0.1.2","keywords":["agent","streaming","tooling","rxjs"],"author":{"name":"Agent Labs"},"license":"MIT","_id":"@agent-labs/agent-toolkit@0.1.2","maintainers":[{"name":"peiiii","email":"1535376447@qq.com"}],"dist":{"shasum":"2d617e86ae5d6d744a27d6d2ec4bdaf495f811db","tarball":"https://registry.npmjs.org/@agent-labs/agent-toolkit/-/agent-toolkit-0.1.2.tgz","fileCount":6,"integrity":"sha512-j9Mpmzf2meziHdzJM4wzZLzkmCp+kSnIHnhWtnPN9U6r23huOMWkEKe9fGj5RsqZOO8GOizsgUh36dCDdzlfmQ==","signatures":[{"sig":"MEQCIHJLIbKpPBgIn6zf1iy/vkhwNZF5VD6oigGmseJrId1qAiAW0JhdwrofZis+j+HG/a+e+X7OROnyFjmZJgiza4DY1Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17286},"main":"dist/index.js","type":"module","_from":"file:agent-labs-agent-toolkit-0.1.2.tgz","types":"dist/index.d.ts","private":false,"scripts":{"dev":"tsdown --watch","lint":"echo 'no lint config yet'","test":"node --version","build":"tsdown","release":"bumpp && pnpm publish","examples:streams:fake":"tsx examples/streams/openai-to-agent-event.example.ts"},"_npmUser":{"name":"peiiii","email":"1535376447@qq.com"},"_resolved":"/private/var/folders/gp/ls0ngf8d1qn97_g1t48670zc0000gn/T/8141c0dcf584859835fabe994d8846b4/agent-labs-agent-toolkit-0.1.2.tgz","_integrity":"sha512-j9Mpmzf2meziHdzJM4wzZLzkmCp+kSnIHnhWtnPN9U6r23huOMWkEKe9fGj5RsqZOO8GOizsgUh36dCDdzlfmQ==","_npmVersion":"10.9.2","description":"Pure logic toolkit for agent streaming, tool orchestration, and argument accumulation.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"rxjs":"^7.8.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.4","tsdown":"^0.12.7","typescript":"^5.3.2"},"_npmOperationalInternal":{"tmp":"tmp/agent-toolkit_0.1.2_1763986461652_0.8784384310043223","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@agent-labs/agent-toolkit","version":"0.1.3","keywords":["agent","streaming","tooling","rxjs"],"author":{"name":"Agent Labs"},"license":"MIT","_id":"@agent-labs/agent-toolkit@0.1.3","maintainers":[{"name":"peiiii","email":"1535376447@qq.com"}],"dist":{"shasum":"58e48c5f1cac8d9891f79c2dd469b97c7313a6e7","tarball":"https://registry.npmjs.org/@agent-labs/agent-toolkit/-/agent-toolkit-0.1.3.tgz","fileCount":6,"integrity":"sha512-ZjmQZKGcBSywiz3HMKoxW0IUfKL3BScQA01F8c+8dUHbmyvwTwDtEB6Hd22t9jvRoCNpVNXLhSCUrL2GWBMhpw==","signatures":[{"sig":"MEQCIAdKHp3i8KEiq7tI7x1VtO4gKPx4NX4eeW7eYpMoHaNUAiAqKkbVmGHCgnjrXeuRxrRUW34UgIwK9rEFJ9kIM0DKrA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":18946},"main":"dist/index.js","type":"module","_from":"file:agent-labs-agent-toolkit-0.1.3.tgz","types":"dist/index.d.ts","private":false,"scripts":{"dev":"tsdown --watch","lint":"echo 'no lint config yet'","test":"node --version","build":"tsdown","release":"bumpp && pnpm publish","examples:streams:fake":"tsx examples/streams/openai-to-agent-event.example.ts"},"_npmUser":{"name":"peiiii","email":"1535376447@qq.com"},"_resolved":"/private/var/folders/gp/ls0ngf8d1qn97_g1t48670zc0000gn/T/45dac6ee72811743d86d0a38188a37d5/agent-labs-agent-toolkit-0.1.3.tgz","_integrity":"sha512-ZjmQZKGcBSywiz3HMKoxW0IUfKL3BScQA01F8c+8dUHbmyvwTwDtEB6Hd22t9jvRoCNpVNXLhSCUrL2GWBMhpw==","_npmVersion":"10.9.2","description":"Pure logic toolkit for agent streaming, tool orchestration, and argument accumulation.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"rxjs":"^7.8.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.4","tsdown":"^0.12.7","typescript":"^5.3.2"},"_npmOperationalInternal":{"tmp":"tmp/agent-toolkit_0.1.3_1763997242976_0.5985314421139529","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@agent-labs/agent-toolkit","version":"0.2.1","keywords":["agent","streaming","tooling","rxjs"],"author":{"name":"Agent Labs"},"license":"MIT","_id":"@agent-labs/agent-toolkit@0.2.1","maintainers":[{"name":"peiiii","email":"1535376447@qq.com"}],"dist":{"shasum":"b8dd08157e41124eea47e47f859bafbccaafc925","tarball":"https://registry.npmjs.org/@agent-labs/agent-toolkit/-/agent-toolkit-0.2.1.tgz","fileCount":6,"integrity":"sha512-ATR0FM4STWnGZ1Feg7qXJhb97lXPZhB3qRGBZSHEakZkYlx08sXBTVaTGqQ8lSWZMoUMJHswdlrTi/LO5mrEEw==","signatures":[{"sig":"MEYCIQCtwpEKyEr0VGk1xlW0pE/Mm9x0XWYg+0UarqYiU3+iBgIhAIV5zbn73rRCgZUYWmiB1bKHOSwUkZkc/XleWQNKGGGr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49496},"main":"dist/index.js","type":"module","_from":"file:agent-labs-agent-toolkit-0.2.1.tgz","types":"dist/index.d.ts","private":false,"scripts":{"dev":"tsdown --watch","lint":"echo 'no lint config yet'","test":"node --version","build":"tsdown","release":"bumpp && pnpm publish","examples:streams:fake":"tsx examples/streams/openai-to-agent-event.example.ts"},"_npmUser":{"name":"peiiii","email":"1535376447@qq.com"},"_resolved":"/private/var/folders/gp/ls0ngf8d1qn97_g1t48670zc0000gn/T/d7ffee1c0579cd700fbca26ef5056e21/agent-labs-agent-toolkit-0.2.1.tgz","_integrity":"sha512-ATR0FM4STWnGZ1Feg7qXJhb97lXPZhB3qRGBZSHEakZkYlx08sXBTVaTGqQ8lSWZMoUMJHswdlrTi/LO5mrEEw==","_npmVersion":"10.9.2","description":"Pure logic toolkit for agent streaming, tool orchestration, and argument accumulation.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"rxjs":"^7.8.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.4","tsdown":"^0.12.7","typescript":"^5.3.2"},"peerDependencies":{"openai":"^4.0.0","@agent-labs/agent-chat":"^1.21.0"},"peerDependenciesMeta":{"openai":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/agent-toolkit_0.2.1_1766587112771_0.5508895098592632","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@agent-labs/agent-toolkit","version":"0.2.2","private":false,"description":"Pure logic toolkit for agent streaming, tool orchestration, and argument accumulation.","type":"module","main":"dist/index.js","types":"dist/index.d.ts","dependencies":{"rxjs":"^7.8.1"},"peerDependencies":{"@agent-labs/agent-chat":"^1.21.0","openai":"^4.0.0"},"peerDependenciesMeta":{"openai":{"optional":true}},"devDependencies":{"tsdown":"^0.12.7","typescript":"^5.3.2","tsx":"^4.19.4"},"keywords":["agent","streaming","tooling","rxjs"],"author":{"name":"Agent Labs"},"license":"MIT","publishConfig":{"access":"public"},"scripts":{"build":"tsdown","release":"bumpp && pnpm publish","dev":"tsdown --watch","lint":"echo 'no lint config yet'","test":"node --version","examples:streams:fake":"tsx examples/streams/openai-to-agent-event.example.ts"},"_id":"@agent-labs/agent-toolkit@0.2.2","_integrity":"sha512-Fz9U6/y+3y4S/pYIjrZ5pgG3WFcTHrgogMCHwCnjX0rGXTKi3woj4Q+LpG0u3p/LZ1tC4d7540hkXDdUS/y1nA==","_resolved":"/private/var/folders/gp/ls0ngf8d1qn97_g1t48670zc0000gn/T/4e6dd90aa435481522b2db419a474383/agent-labs-agent-toolkit-0.2.2.tgz","_from":"file:agent-labs-agent-toolkit-0.2.2.tgz","_nodeVersion":"22.16.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-Fz9U6/y+3y4S/pYIjrZ5pgG3WFcTHrgogMCHwCnjX0rGXTKi3woj4Q+LpG0u3p/LZ1tC4d7540hkXDdUS/y1nA==","shasum":"4b2a4247181ffee544bf5aa2afdbaae6b99e10f0","tarball":"https://registry.npmjs.org/@agent-labs/agent-toolkit/-/agent-toolkit-0.2.2.tgz","fileCount":6,"unpackedSize":50380,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIGZiSExEdQYgJUTV28xWiiCG4NMtbCO1UCOyYpYYhjexAiEAkLP0Rm2BaPXLD91SQ1foE9IPii8ymcl6XVD0+v4xJRk="}]},"_npmUser":{"name":"peiiii","email":"1535376447@qq.com"},"directories":{},"maintainers":[{"name":"peiiii","email":"1535376447@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/agent-toolkit_0.2.2_1766587890117_0.6246655815966515"},"_hasShrinkwrap":false}},"time":{"created":"2025-11-13T14:30:26.657Z","modified":"2025-12-24T14:51:30.517Z","0.1.0":"2025-11-13T14:30:26.913Z","0.1.2":"2025-11-24T12:14:21.852Z","0.1.3":"2025-11-24T15:14:03.166Z","0.2.1":"2025-12-24T14:38:32.923Z","0.2.2":"2025-12-24T14:51:30.308Z"},"author":{"name":"Agent Labs"},"license":"MIT","keywords":["agent","streaming","tooling","rxjs"],"description":"Pure logic toolkit for agent streaming, tool orchestration, and argument accumulation.","maintainers":[{"name":"peiiii","email":"1535376447@qq.com"}],"readme":"# @agent-labs/agent-toolkit\n\nA growing set of agent utilities. Today it ships a single utility to convert OpenAI ChatCompletion chunk streams into AgentEvent streams; more agent-focused helpers will join here over time.\n\nScope (now and next)\n- Now (v0.1.x)\n  - `openAIChunksToAgentEvents$`: AsyncIterable<chunk> → Observable<AgentEvent>\n    - Text: `TEXT_START` → many `TEXT_DELTA` → `TEXT_END`\n    - Tools: per tool_call `TOOL_CALL_START` → `TOOL_CALL_ARGS_DELTA` → `TOOL_CALL_END`\n    - Supports parallel tool_calls (tracked by `index`), handles id-late by backfilling the first delta\n- Next (roadmap)\n  - Provider-agnostic chunk normalizers (OpenAI-compatible and others)\n  - JSON argument streaming helpers (accumulate/validate partial args)\n  - Tool orchestration helpers (scheduling, dedupe, retries)\n  - Message/thread utilities for multi-step agent runs\n\nInstall\n\n```bash\npnpm add @agent-labs/agent-toolkit\n```\n\nOptional (browser OpenAI agent)\n\n```bash\npnpm add @agent-labs/agent-toolkit openai @agent-labs/agent-chat\n```\n\nQuick Start\n\n```ts\nimport { openAIChunksToAgentEvents$ } from '@agent-labs/agent-toolkit'\n\nconst events$ = openAIChunksToAgentEvents$(openAIAsyncIterable, { messageId: 'msg-1' })\nconst sub = events$.subscribe(evt => console.log('[AgentEvent]', evt))\n```\n\nBrowser Agent (OpenAI SDK)\n\n```ts\nimport { createOpenAIChatAgent } from '@agent-labs/agent-toolkit'\n\nconst agent = createOpenAIChatAgent({\n  apiKey: import.meta.env.VITE_OPENAI_API_KEY,\n  model: import.meta.env.VITE_OPENAI_MODEL,\n  baseUrl: import.meta.env.VITE_OPENAI_BASE_URL,\n})\n```\n\nRun Example\n\n```bash\npnpm -F @agent-labs/agent-toolkit run examples:streams:fake\n```\n\nAPI\n\n```ts\nopenAIChunksToAgentEvents$(\n  stream: AsyncIterable<OpenAIChatChunk>,\n  options: { messageId: string; threadId?: string }\n): Observable<AgentEvent>\n```\n\nBehavior & Guarantees\n- Realtime: reducer-only pipeline; no buffering on the main path.\n- Id-late: if tool_call id arrives after args, we emit a backfilled first ARGS_DELTA so the UI can reconstruct valid JSON by END.\n- Finish: TOOL_CALL_END only when `finish_reason === 'tool_calls'`.\n- Parallelism: tool_calls are tracked independently by their `index`.\n- Abort: abort-like errors are treated as a normal completion (no `RUN_ERROR`).\n\nContributing New Utilities\n- Place code under `src/` with a clear folder (e.g. `src/streams/`, `src/tools/`)\n- Export from `src/index.ts`\n- Add a runnable example in `examples/` and a short section in this README\n- Keep APIs small and transport-agnostic; prefer typed helpers over framework bindings\n\nDevelop & Publish\n- Build locally: `pnpm -F @agent-labs/agent-toolkit build`\n- Run example: `pnpm -F @agent-labs/agent-toolkit run examples:streams:fake`\n- Release (maintainers):\n  1) Bump version in `package.json`\n  2) `pnpm -F @agent-labs/agent-toolkit build`\n  3) `pnpm -F @agent-labs/agent-toolkit publish --access public`\n\nNotes\n- UI/server agnostic; works in Node and modern bundlers.\n- Implemented in TypeScript + RxJS; no DOM/Express dependencies.\n","readmeFilename":"README.md"}