{"_id":"@best-agent/server","_rev":"3-6f3c0722b60a5a8aa967e80701176cd3","name":"@best-agent/server","dist-tags":{"latest":"0.0.2-beta.8","beta":"0.0.2-beta.2"},"versions":{"0.0.1-beta.1":{"name":"@best-agent/server","version":"0.0.1-beta.1","_id":"@best-agent/server@0.0.1-beta.1","maintainers":[{"name":"simon_he","email":"13917107469@163.com"}],"dist":{"shasum":"5f9d5ee17449b6a57a16ac5145060a7068b8ca99","tarball":"https://registry.npmjs.org/@best-agent/server/-/server-0.0.1-beta.1.tgz","fileCount":59,"integrity":"sha512-KRz4tBMrRsenZCaXtVJmgAgNyoGQ7gAFPufb+rkCVCrXz2XaBbwvQFEyVOqCLpGDQn0roSjFM6f0EWgZJGx8Ww==","signatures":[{"sig":"MEUCIQD9xCTtd2STY4g+DZYvAXB9lMmeq5Y9EFoBOnpwHpqSeAIgc3SeMEul3rEupzlSJhv+OktGHLEDlJ7alVoVXuul/qk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":502111},"main":"./dist/index.js","type":"module","_from":"file:best-agent-server-0.0.1-beta.1.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"release":"pnpm -w build && pnpm publish --access public --no-git-checks"},"_npmUser":{"name":"simon_he","email":"13917107469@163.com"},"_resolved":"/private/var/folders/z8/w1qvd0cd46z6k8_swl1n33d00000gn/T/c16219945acf6b3eb81a96f73796937d/best-agent-server-0.0.1-beta.1.tgz","_integrity":"sha512-KRz4tBMrRsenZCaXtVJmgAgNyoGQ7gAFPufb+rkCVCrXz2XaBbwvQFEyVOqCLpGDQn0roSjFM6f0EWgZJGx8Ww==","_npmVersion":"10.9.2","description":"Transport adapters over the shared runtime.","directories":{},"_nodeVersion":"23.11.0","dependencies":{"@best-agent/engine":"0.0.1-beta.1","@best-agent/protocol":"0.0.1-beta.1","@best-agent/extensions":"0.0.1-beta.1","@best-agent/foundation":"0.0.1-beta.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/server_0.0.1-beta.1_1779708584811_0.7646425243047226","host":"s3://npm-registry-packages-npm-production"}},"0.0.2-beta.2":{"name":"@best-agent/server","version":"0.0.2-beta.2","_id":"@best-agent/server@0.0.2-beta.2","maintainers":[{"name":"simon_he","email":"13917107469@163.com"}],"dist":{"shasum":"190b62dc342c50d2b8f87d20da223f463187ed9e","tarball":"https://registry.npmjs.org/@best-agent/server/-/server-0.0.2-beta.2.tgz","fileCount":59,"integrity":"sha512-+cMZV6NYJtNyjKsV6Is1Z0wKuLcg1nMN0fXiIMjSyUExoojOEnngFJ33EGWVsuNrkr9sfW183/O31+aU5komqg==","signatures":[{"sig":"MEYCIQCcccMn+AHTX7GWufZ3NJC3GTyK7bGv+Ghm8sGGHBLbDwIhAKpo47rvGgGC16Xr/lU3wpXbqwryMyU/0P7WqmKZDE3P","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":502111},"main":"./dist/index.js","type":"module","_from":"file:best-agent-server-0.0.2-beta.2.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"release":"pnpm -w build && pnpm publish --access public --no-git-checks"},"_npmUser":{"name":"simon_he","email":"13917107469@163.com"},"_resolved":"/private/var/folders/z8/w1qvd0cd46z6k8_swl1n33d00000gn/T/4a070b777683ae581e02ec236a6c1ad4/best-agent-server-0.0.2-beta.2.tgz","_integrity":"sha512-+cMZV6NYJtNyjKsV6Is1Z0wKuLcg1nMN0fXiIMjSyUExoojOEnngFJ33EGWVsuNrkr9sfW183/O31+aU5komqg==","_npmVersion":"10.9.2","description":"Transport adapters over the shared runtime.","directories":{},"_nodeVersion":"23.11.0","dependencies":{"@best-agent/engine":"0.0.2-beta.2","@best-agent/protocol":"0.0.2-beta.2","@best-agent/extensions":"0.0.2-beta.2","@best-agent/foundation":"0.0.2-beta.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/server_0.0.2-beta.2_1779794966868_0.5219317423635901","host":"s3://npm-registry-packages-npm-production"}},"0.0.2-beta.8":{"name":"@best-agent/server","version":"0.0.2-beta.8","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"dependencies":{"@best-agent/engine":"0.0.2-beta.8","@best-agent/extensions":"0.0.2-beta.8","@best-agent/foundation":"0.0.2-beta.8","@best-agent/protocol":"0.0.2-beta.8"},"scripts":{"release":"pnpm -w build && pnpm publish --access public --no-git-checks"},"_id":"@best-agent/server@0.0.2-beta.8","description":"Transport adapters over the shared runtime.","_integrity":"sha512-ENtpPXySuSVLkrBtnwhwPZhmi0n2nXX5pQdUpnCepDLdoQeNrhw3RyElbTR5xvlJ+kTvdewLTKY4CoVVDE8fdQ==","_resolved":"/private/var/folders/z8/w1qvd0cd46z6k8_swl1n33d00000gn/T/1b82a151c10cde809a0b8a80e4f969d9/best-agent-server-0.0.2-beta.8.tgz","_from":"file:best-agent-server-0.0.2-beta.8.tgz","_nodeVersion":"23.11.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-ENtpPXySuSVLkrBtnwhwPZhmi0n2nXX5pQdUpnCepDLdoQeNrhw3RyElbTR5xvlJ+kTvdewLTKY4CoVVDE8fdQ==","shasum":"f957b90c6606de179c333f80902d771cf9ec25c4","tarball":"https://registry.npmjs.org/@best-agent/server/-/server-0.0.2-beta.8.tgz","fileCount":59,"unpackedSize":510580,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIFwJMdC2iORRbaIL45LkmOcE5HdgSTWXfjCreQ3OO/lmAiAzmh9Dvcz33cJUBKh2cPawj8pH7b/rgUR/l14DZJtKNA=="}]},"_npmUser":{"name":"simon_he","email":"13917107469@163.com"},"directories":{},"maintainers":[{"name":"simon_he","email":"13917107469@163.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/server_0.0.2-beta.8_1780387088892_0.20106065917145277"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-25T11:29:44.672Z","modified":"2026-06-02T07:58:09.157Z","0.0.1-beta.1":"2026-05-25T11:29:44.959Z","0.0.2-beta.2":"2026-05-26T11:29:27.023Z","0.0.2-beta.8":"2026-06-02T07:58:09.034Z"},"description":"Transport adapters over the shared runtime.","maintainers":[{"name":"simon_he","email":"13917107469@163.com"}],"readme":"# @best-agent/server\n\nTransport adapters over the shared runtime.\n\n## Main Exports\n\n- `AppServer`\n- `createAppServer(...)`\n- `runStdioServer(...)`\n- `runHttpServer(...)`\n- `handleRpcRequest(...)`\n- `runSocketDaemon(...)`\n- `readDaemonMetadata(...)`\n- `AcpServer`\n- `createAcpServer(...)`\n- `runStdioAcpServer(...)`\n\n## Features\n\n- stdio `app-server`\n- HTTP + SSE `app-server`\n- native-socket or named-pipe daemon-backed `app-server`\n- stdio `acp-server`\n- shared reverse-RPC hosted-plugin bridge across stdio and daemon `app-server` transports\n- current HTTP adapter coverage for:\n  - initialize, host status, and runtime metadata discovery\n  - approval grant listing and revocation\n  - project-memory get/set/clear\n  - team-memory shared-store GET/PATCH keyed by normalized git remote\n  - project-memory sync diagnostics surfaced on `memory.get/set/clear`\n  - thread start, rename, metadata update, detail, history, handoff, diagnostics, compaction, resume, and event catch-up\n  - fork plus archive, unarchive, and purge lifecycle operations\n  - queued-turn enqueue, dequeue, and listing plus scratch pruning\n  - thread mode updates plus plan draft read, todo update, export, approve, and reject\n  - deep-research report and evidence reads plus generic thread evidence reads\n  - turn run, interrupt, and steer\n  - approval and ask-user responses\n  - SSE turn streams that carry queue and workspace lifecycle events such as `turn.queued` and `workspace.file.updated`\n- shared runtime factory wiring for:\n  - `cwd`\n  - `storageRoot`\n  - provider config\n  - guardian config\n  - programmatic `webSearch` adapter plus `webSearchAvailability` gate\n  - extension manifests\n  - hosted plugins\n- runtime event forwarding for:\n  - turns\n  - approvals\n  - plan drafts and approval lifecycle\n  - workflows\n  - research\n  - telemetry\n  - compaction\n  - child-thread deltas\n- HTTP auth boundary:\n  - loopback hosts (`127.0.0.1`, `::1`, `localhost`) remain no-auth by default\n  - non-loopback `runHttpServer(...)` requires `BEST_AGENT_HTTP_TOKEN`\n  - authenticated JSON routes require `Authorization: Bearer <token>`\n  - authenticated SSE routes also accept `?access_token=<token>`\n\n## Example\n\n```ts\nimport { runHttpServer } from \"@best-agent/server\";\n\nawait runHttpServer({\n  cwd: process.cwd(),\n  host: \"127.0.0.1\",\n  port: 3000,\n  storageRoot: \"/tmp/best-agent-demo\",\n});\n```\n\nFor non-loopback hosts, export `BEST_AGENT_HTTP_TOKEN` before starting the server.\n\nExternal search hosts should inject capability, not just a vendor key string. The intended shape is:\n\n```ts\nimport { createAppServer } from \"@best-agent/server\";\n\nawait createAppServer({\n  providerConfig,\n  webSearchAvailability: () => Boolean(searchConfig.apiKey),\n  webSearch: async (input) => await searchBackend(input, searchConfig),\n});\n```\n\nIf `searchConfig.apiKey` changes while the process stays alive, the next turn should see the updated `web-search` capability. See `/Users/Simon/Github/best-agent/docs/architecture/web-search-capability-and-configuration.md` for the full contract.\n\n## Does Not Own\n\n- independent business logic\n- a second runtime\n- separate policy or tool implementations\n\n`server` stays thin: it maps requests and notifications onto one shared `AgentRuntime`, whether the transport is stdio, HTTP+SSE, a local daemon socket, or ACP stdio.\n","readmeFilename":"README.md"}