{"_id":"@dmemo/sdk-wrappers","name":"@dmemo/sdk-wrappers","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@dmemo/sdk-wrappers","version":"0.1.0","description":"dMemo Phase 2 inference leg — 0G Router client preset (T2.1) and OpenAI/Anthropic SDK memory wrappers (T2.2) via native custom-fetch and Anthropic middleware extension points.","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"engines":{"node":">=18"},"dependencies":{"openai":"^6.49.0","@anthropic-ai/sdk":"^0.115.0"},"devDependencies":{"typescript":"^5.6.3","@types/node":"^20.14.0"},"repository":{"type":"git","url":"git+https://github.com/dmemo-ai/dmemo.git","directory":"packages/sdk-wrappers"},"license":"MIT","publishConfig":{"access":"public"},"keywords":["dmemo","0g","openai","anthropic","memory","router"],"scripts":{"build":"tsc -b","test":"node --test $(find dist -name '*.test.js')","clean":"rm -rf dist"},"_id":"@dmemo/sdk-wrappers@0.1.0","bugs":{"url":"https://github.com/dmemo-ai/dmemo/issues"},"homepage":"https://github.com/dmemo-ai/dmemo#readme","_integrity":"sha512-XDHnh2iYV03KOXRv5+crYnsHo7dtEulEveEdOUwMDvJNqbbW7jqorYnT3KRB6o4741maqOlExZXSOAacpC/rkw==","_resolved":"/private/var/folders/m4/8977wlvx6jxcc9wy9vbvpjbm0000gn/T/a58c4551081b116b33b1fcee537d9970/dmemo-sdk-wrappers-0.1.0.tgz","_from":"file:dmemo-sdk-wrappers-0.1.0.tgz","_nodeVersion":"26.0.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-XDHnh2iYV03KOXRv5+crYnsHo7dtEulEveEdOUwMDvJNqbbW7jqorYnT3KRB6o4741maqOlExZXSOAacpC/rkw==","shasum":"67ce1f4b900f0ffd741d8728970735a43d7dab53","tarball":"https://registry.npmjs.org/@dmemo/sdk-wrappers/-/sdk-wrappers-0.1.0.tgz","fileCount":35,"unpackedSize":67633,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCkMZLMP3sYr0H841mAlvXRpG+FVOIrTRKdbRjHZsyGHAIhALxHA31i6qC3papERDaKAcndTbZJ8fl5adwfFb8Q53oB"}]},"_npmUser":{"name":"toomingos","email":"toomingos@gmail.com"},"directories":{},"maintainers":[{"name":"toomingos","email":"toomingos@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sdk-wrappers_0.1.0_1785029751471_0.8444816538773852"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-26T01:35:51.303Z","0.1.0":"2026-07-26T01:35:51.609Z","modified":"2026-07-26T01:35:51.877Z"},"maintainers":[{"name":"toomingos","email":"toomingos@gmail.com"}],"description":"dMemo Phase 2 inference leg — 0G Router client preset (T2.1) and OpenAI/Anthropic SDK memory wrappers (T2.2) via native custom-fetch and Anthropic middleware extension points.","homepage":"https://github.com/dmemo-ai/dmemo#readme","keywords":["dmemo","0g","openai","anthropic","memory","router"],"repository":{"type":"git","url":"git+https://github.com/dmemo-ai/dmemo.git","directory":"packages/sdk-wrappers"},"bugs":{"url":"https://github.com/dmemo-ai/dmemo/issues"},"license":"MIT","readme":"# @dmemo/sdk-wrappers\n\ndMemo's inference leg for raw OpenAI/Anthropic SDK users: a preconfigured\n0G Compute Router client factory, plus memory-injection wrappers built on\neach SDK's own native `fetch`/`middleware` extension points — no\nsubclassing, no monkey-patching.\n\nThis package is dependency-light on purpose: it does **not** depend on\n`@dmemo/core`. It types against a small structural `DmemoMemorySession`\ninterface, satisfied by `@dmemo/core`'s `DmemoSession` public surface.\n\n## Install\n\n```bash\nnpm install @dmemo/sdk-wrappers\n```\n\n## Router client preset (T2.1)\n\n```ts\nimport { createRouterClients, listPrivateModels } from '@dmemo/sdk-wrappers';\n\nconst { openai, anthropic } = createRouterClients({\n  network: 'testnet',\n  apiKey: process.env.ZEROG_API_KEY!, // a Router sk-... key, minted at pc.0g.ai\n});\n\n// Filters GET /v1/models for verifiability === \"TeeML\" (private inference).\nconst models = await listPrivateModels({ network: 'testnet' });\n```\n\nEvery request carries `X-0G-Provider-Trust-Mode: private` (TeeML-only\nrouting) by default — this is what makes \"private inference\" true. As of\n2026-07-25 there is no TeeML **chat** model live on testnet (catalog\ndrift — see `docs/disclosure.md`); `listPrivateModels()` will reflect\nwhatever the Router currently advertises.\n\n## SDK memory wrappers (T2.2)\n\n```ts\nimport OpenAI from 'openai';\nimport { createOpenAIMemoryFetch } from '@dmemo/sdk-wrappers';\n\nconst client = new OpenAI({\n  baseURL: '<router-url>/v1',\n  apiKey: 'sk-...',\n  fetch: createOpenAIMemoryFetch(dmemoSession, { topK: 5 }),\n});\n```\n\nThe custom `fetch` injects `session.search()` results into the request body\nbefore the call, and writes the assistant's reply back via `session.add()`\n+ `session.flush()` after — handling both non-streaming responses and\nstreamed responses (`Stream.tee()`) transparently.\n\nFor Anthropic/Claude traffic, `createAnthropicMemoryMiddleware` (built on\nthe SDK's exported `middleware` extension point, v0.101.0+) is the\npreferred alternative to custom-fetch — it runs inside the retry loop and\ngives an independent stream copy via `ctx.parse(response)`.\n\n## What this package does not do\n\n- No retry/failover/provider pooling (the Router does this).\n- No support for the deprecated `@0glabs/0g-serving-broker`.\n- No `/v1/responses` support (Codex inference through 0G is out of scope —\n  the Router has no such endpoint).\n","readmeFilename":"README.md","_rev":"1-d538cbc0effdbd5010d7e8d58d082df0"}