{"_id":"@acosmi/sdk-ts","_rev":"45-e027c4efdaea9ceb7109815d28806b5d","name":"@acosmi/sdk-ts","dist-tags":{"latest":"2.19.6"},"versions":{"1.0.0":{"name":"@acosmi/sdk-ts","version":"1.0.0","keywords":["acosmi","anthropic","openai","llm","sdk","claude","crabcode","crabclaw"],"author":{"name":"Acosmi"},"license":"MIT","_id":"@acosmi/sdk-ts@1.0.0","maintainers":[{"name":"acosmi","email":"fushihua@acosmi.com"}],"homepage":"https://github.com/acosmi/sdk-ts#readme","bugs":{"url":"https://github.com/acosmi/sdk-ts/issues"},"dist":{"shasum":"08466b51868c946e5b326451d57482592e0fb56c","tarball":"https://registry.npmjs.org/@acosmi/sdk-ts/-/sdk-ts-1.0.0.tgz","fileCount":35,"integrity":"sha512-AC2/JwZ8RIqqJB6BwS8Vvde83ITQk8C57cQWCpc+rGWq2zWfrVKhqQvruq3tff3lfYJ2SsQXocm0hImZ59QhEg==","signatures":[{"sig":"MEYCIQCmoFckt937UGjCJ11icuHRU8esBG6VPNoApljvE/cyJwIhAJiK7yrtJIGMKR8RxMMdc/VRdwuTKsFjDHyf6fPT9ftj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@acosmi%2fsdk-ts@1.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2477544},"main":"./dist/node/index.cjs","type":"module","types":"./dist/node/index.d.ts","module":"./dist/node/index.mjs","engines":{"node":">=18"},"exports":{".":{"deno":"./dist/index.mjs","node":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.mjs","require":"./dist/node/index.cjs"},"types":"./dist/node/index.d.ts","browser":"./dist/browser/index.mjs","default":"./dist/index.mjs"},"./sanitize":{"types":"./dist/node/sanitize/index.d.ts","import":"./dist/node/sanitize/index.mjs","require":"./dist/node/sanitize/index.cjs"},"./package.json":"./package.json","./adapters/openai":{"types":"./dist/node/adapters/openai.d.ts","import":"./dist/node/adapters/openai.mjs","require":"./dist/node/adapters/openai.cjs"},"./adapters/anthropic":{"types":"./dist/node/adapters/anthropic.d.ts","import":"./dist/node/adapters/anthropic.mjs","require":"./dist/node/adapters/anthropic.cjs"}},"gitHead":"e60a88e30667b933df0aadbb16a20e3e9dd1aa75","scripts":{"lint":"eslint src --ext .ts","test":"vitest run","build":"tsup","format":"prettier --write \"src/**/*.{ts,json}\"","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run lint && npm test && npm run build"},"_npmUser":{"name":"acosmi","email":"fushihua@acosmi.com"},"repository":{"url":"git+https://github.com/acosmi/sdk-ts.git","type":"git"},"_npmVersion":"10.8.2","description":"Acosmi 模型网关 TypeScript SDK — 双格式 (Anthropic + OpenAI) 多端 (浏览器 / Node ≥18 / Deno / Bun)。Go SDK 全量端口, 1.0 稳定测试版。","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^8.57.0","vitest":"^1.0.0","prettier":"^3.0.0","typescript":"^5.4.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-ts_1.0.0_1777621881829_0.08368852411629302","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@acosmi/sdk-ts","version":"1.0.1","keywords":["acosmi","anthropic","openai","llm","sdk","claude","crabcode","crabclaw"],"author":{"name":"Acosmi"},"license":"MIT","_id":"@acosmi/sdk-ts@1.0.1","maintainers":[{"name":"acosmi","email":"fushihua@acosmi.com"}],"homepage":"https://github.com/acosmi/sdk-ts#readme","bugs":{"url":"https://github.com/acosmi/sdk-ts/issues"},"dist":{"shasum":"f8805a0443c9b36ce7d559bd333a472ecb8fcef4","tarball":"https://registry.npmjs.org/@acosmi/sdk-ts/-/sdk-ts-1.0.1.tgz","fileCount":36,"integrity":"sha512-CwJMxyCRULQCZT34O/dACSR65bjkRDY2T357oc0q31YFEw8LDEA/+r1Kuy7u/MmuZlsXc0q85cxFjcVcn5RgkA==","signatures":[{"sig":"MEQCIBIGBPaznx0b3riiCnw9h1YlZeGjy4nmR7Oe17Zcz2ctAiA9h+2uGJmC6WT16liN1iWAlPfhj9aHoL7Rflk4ExP1Sw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@acosmi%2fsdk-ts@1.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2481424},"main":"./dist/node/index.cjs","type":"module","types":"./dist/node/index.d.ts","module":"./dist/node/index.mjs","engines":{"node":">=18"},"exports":{".":{"deno":"./dist/index.mjs","node":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.mjs","require":"./dist/node/index.cjs"},"types":"./dist/node/index.d.ts","browser":"./dist/browser/index.mjs","default":"./dist/index.mjs"},"./sanitize":{"types":"./dist/node/sanitize/index.d.ts","import":"./dist/node/sanitize/index.mjs","require":"./dist/node/sanitize/index.cjs"},"./package.json":"./package.json","./adapters/openai":{"types":"./dist/node/adapters/openai.d.ts","import":"./dist/node/adapters/openai.mjs","require":"./dist/node/adapters/openai.cjs"},"./adapters/anthropic":{"types":"./dist/node/adapters/anthropic.d.ts","import":"./dist/node/adapters/anthropic.mjs","require":"./dist/node/adapters/anthropic.cjs"}},"gitHead":"0d8c0a98d03660f69a238832e305e11544315c8e","scripts":{"lint":"eslint src --ext .ts","test":"vitest run","build":"tsup","format":"prettier --write \"src/**/*.{ts,json}\"","test:pack":"node scripts/smoke-pack.mjs","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run lint && npm test && npm run build && npm run test:pack"},"_npmUser":{"name":"acosmi","email":"fushihua@acosmi.com"},"repository":{"url":"git+https://github.com/acosmi/sdk-ts.git","type":"git"},"_npmVersion":"10.8.2","description":"Acosmi 模型网关 TypeScript SDK — 双格式 (Anthropic + OpenAI) 多端 (浏览器 / Node ≥18 / Deno / Bun)。Go SDK 全量端口, 1.0 稳定测试版。","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^8.57.0","vitest":"^1.0.0","prettier":"^3.0.0","typescript":"^5.4.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-ts_1.0.1_1777633360586_0.13963063482307736","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@acosmi/sdk-ts","version":"1.0.2","keywords":["acosmi","anthropic","openai","llm","sdk","claude","crabcode","crabclaw"],"author":{"name":"Acosmi"},"license":"MIT","_id":"@acosmi/sdk-ts@1.0.2","maintainers":[{"name":"acosmi","email":"fushihua@acosmi.com"}],"homepage":"https://github.com/acosmi/sdk-ts#readme","bugs":{"url":"https://github.com/acosmi/sdk-ts/issues"},"dist":{"shasum":"c26023bf5f8028ddcf75561675cc5ff68069f30c","tarball":"https://registry.npmjs.org/@acosmi/sdk-ts/-/sdk-ts-1.0.2.tgz","fileCount":36,"integrity":"sha512-5fVVmSaapFglQ6m2lpre+xaxPDbmzuXBo56itVzpEjpVDTWJD7FRzIfcfbFKg6Tqd1OW2mnVlY0yjo02A93u4Q==","signatures":[{"sig":"MEUCIQDxf10XIzUL0lw98slWVw5rIKwk5HwpW+BtIrHAnkUF6QIgUp9B4PGZDgHD2ExEKNqavHfxPcLHoAxX0hBxZa1jE2c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@acosmi%2fsdk-ts@1.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2555551},"main":"./dist/node/index.cjs","type":"module","types":"./dist/node/index.d.ts","module":"./dist/node/index.mjs","engines":{"node":">=18"},"exports":{".":{"deno":"./dist/index.mjs","node":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.mjs","require":"./dist/node/index.cjs"},"types":"./dist/node/index.d.ts","browser":"./dist/browser/index.mjs","default":"./dist/index.mjs"},"./sanitize":{"types":"./dist/node/sanitize/index.d.ts","import":"./dist/node/sanitize/index.mjs","require":"./dist/node/sanitize/index.cjs"},"./package.json":"./package.json","./adapters/openai":{"types":"./dist/node/adapters/openai.d.ts","import":"./dist/node/adapters/openai.mjs","require":"./dist/node/adapters/openai.cjs"},"./adapters/anthropic":{"types":"./dist/node/adapters/anthropic.d.ts","import":"./dist/node/adapters/anthropic.mjs","require":"./dist/node/adapters/anthropic.cjs"}},"gitHead":"30d5db406ee9e82808d8eba24441cb8c2853c2a6","scripts":{"lint":"eslint src --ext .ts","test":"vitest run","build":"tsup","format":"prettier --write \"src/**/*.{ts,json}\"","test:pack":"node scripts/smoke-pack.mjs","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run lint && npm test && npm run build && npm run test:pack"},"_npmUser":{"name":"acosmi","email":"fushihua@acosmi.com"},"repository":{"url":"git+https://github.com/acosmi/sdk-ts.git","type":"git"},"_npmVersion":"10.8.2","description":"Acosmi 模型网关 TypeScript SDK — 双格式 (Anthropic + OpenAI) 多端 (浏览器 / Node ≥18 / Deno / Bun)。Go SDK 全量端口, 1.0 稳定测试版。","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^8.57.0","vitest":"^1.0.0","prettier":"^3.0.0","typescript":"^5.4.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-ts_1.0.2_1778086153788_0.3073043753429303","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@acosmi/sdk-ts","version":"1.1.0","keywords":["acosmi","anthropic","openai","llm","sdk","claude","crabcode","crabclaw"],"author":{"name":"Acosmi"},"license":"MIT","_id":"@acosmi/sdk-ts@1.1.0","maintainers":[{"name":"acosmi","email":"fushihua@acosmi.com"}],"homepage":"https://github.com/acosmi/sdk-ts#readme","bugs":{"url":"https://github.com/acosmi/sdk-ts/issues"},"dist":{"shasum":"abdd17142ea0521fbbde89c31b184e4016ccde05","tarball":"https://registry.npmjs.org/@acosmi/sdk-ts/-/sdk-ts-1.1.0.tgz","fileCount":36,"integrity":"sha512-KLs6Yn33CkgEkc2LalE2kMZdQbhdP+c3SA3R0XeDof0qnU6a8lWbKxu9l2ZigVApaUzUt4V3JCkyV27biHozvg==","signatures":[{"sig":"MEUCIH7g2SlwGORfd+G0q6SeoGHhcpOKs7w4VzL7b2Rz7ZvLAiEAk8Vj9u5/A4q+ETNDusYSDW6nQKoXHixCmw6qamDPaLc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@acosmi%2fsdk-ts@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2805441},"main":"./dist/node/index.cjs","type":"module","types":"./dist/node/index.d.ts","module":"./dist/node/index.mjs","engines":{"node":">=18"},"exports":{".":{"deno":"./dist/index.mjs","node":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.mjs","require":"./dist/node/index.cjs"},"types":"./dist/node/index.d.ts","browser":"./dist/browser/index.mjs","default":"./dist/index.mjs"},"./sanitize":{"types":"./dist/node/sanitize/index.d.ts","import":"./dist/node/sanitize/index.mjs","require":"./dist/node/sanitize/index.cjs"},"./package.json":"./package.json","./adapters/openai":{"types":"./dist/node/adapters/openai.d.ts","import":"./dist/node/adapters/openai.mjs","require":"./dist/node/adapters/openai.cjs"},"./adapters/anthropic":{"types":"./dist/node/adapters/anthropic.d.ts","import":"./dist/node/adapters/anthropic.mjs","require":"./dist/node/adapters/anthropic.cjs"}},"gitHead":"1a6c9dc6b9ee28dafb3701345873fccbc4e28962","scripts":{"lint":"eslint src --ext .ts","test":"vitest run","build":"tsup","format":"prettier --write \"src/**/*.{ts,json}\"","test:pack":"node scripts/smoke-pack.mjs","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run lint && npm test && npm run build && npm run test:pack"},"_npmUser":{"name":"acosmi","email":"fushihua@acosmi.com"},"repository":{"url":"git+https://github.com/acosmi/sdk-ts.git","type":"git"},"_npmVersion":"10.8.2","description":"Acosmi 模型网关与 Agent Run Gateway TypeScript SDK — 双格式 (Anthropic + OpenAI) 多端 (浏览器 / Node ≥18 / Deno / Bun)。","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^8.57.0","vitest":"^1.0.0","prettier":"^3.0.0","typescript":"^5.4.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-ts_1.1.0_1778097137606_0.8316351885063495","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@acosmi/sdk-ts","version":"1.2.0","keywords":["acosmi","anthropic","openai","llm","sdk","claude","crabcode","crabclaw"],"author":{"name":"Acosmi"},"license":"MIT","_id":"@acosmi/sdk-ts@1.2.0","maintainers":[{"name":"acosmi","email":"fushihua@acosmi.com"}],"homepage":"https://github.com/acosmi/sdk-ts#readme","bugs":{"url":"https://github.com/acosmi/sdk-ts/issues"},"dist":{"shasum":"a9d421c96363f483b850508782c340bc693243b6","tarball":"https://registry.npmjs.org/@acosmi/sdk-ts/-/sdk-ts-1.2.0.tgz","fileCount":36,"integrity":"sha512-I5/WPnCMOXC37bl/qmZv1HbcVnD+swZhZPaEDhwGFO8MGIFpnrJT0OLZR2eORIE8DxrULAximRmSRw5qAfvwKQ==","signatures":[{"sig":"MEYCIQDD7XTz9OgMlfFE4lK47i522JNtzdT2YtsAtChHmDGAaAIhAKaJm0wnVdOqzWlf/1XVzLvOndPz6prgtl7pDXZX6xKl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@acosmi%2fsdk-ts@1.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2867287},"main":"./dist/node/index.cjs","type":"module","types":"./dist/node/index.d.ts","module":"./dist/node/index.mjs","engines":{"node":">=18"},"exports":{".":{"deno":"./dist/index.mjs","node":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.mjs","require":"./dist/node/index.cjs"},"types":"./dist/node/index.d.ts","browser":"./dist/browser/index.mjs","default":"./dist/index.mjs"},"./sanitize":{"types":"./dist/node/sanitize/index.d.ts","import":"./dist/node/sanitize/index.mjs","require":"./dist/node/sanitize/index.cjs"},"./package.json":"./package.json","./adapters/openai":{"types":"./dist/node/adapters/openai.d.ts","import":"./dist/node/adapters/openai.mjs","require":"./dist/node/adapters/openai.cjs"},"./adapters/anthropic":{"types":"./dist/node/adapters/anthropic.d.ts","import":"./dist/node/adapters/anthropic.mjs","require":"./dist/node/adapters/anthropic.cjs"}},"gitHead":"aa1776c0036d7ce5e805e459ab432d4f048bf778","scripts":{"lint":"eslint src --ext .ts","test":"vitest run","build":"tsup","format":"prettier --write \"src/**/*.{ts,json}\"","test:pack":"node scripts/smoke-pack.mjs","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run lint && npm test && npm run build && npm run test:pack"},"_npmUser":{"name":"acosmi","email":"fushihua@acosmi.com"},"repository":{"url":"git+https://github.com/acosmi/sdk-ts.git","type":"git"},"_npmVersion":"10.8.2","description":"Acosmi 模型网关与 Agent Run Gateway TypeScript SDK — 双格式 (Anthropic + OpenAI) 多端 (浏览器 / Node ≥18 / Deno / Bun)。","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^8.57.0","vitest":"^1.0.0","prettier":"^3.0.0","typescript":"^5.4.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-ts_1.2.0_1779117882183_0.5036500232711503","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@acosmi/sdk-ts","version":"1.3.0","keywords":["acosmi","anthropic","openai","llm","sdk","claude","crabcode","crabclaw"],"author":{"name":"Acosmi"},"license":"MIT","_id":"@acosmi/sdk-ts@1.3.0","maintainers":[{"name":"acosmi","email":"fushihua@acosmi.com"}],"homepage":"https://github.com/acosmi/sdk-ts#readme","bugs":{"url":"https://github.com/acosmi/sdk-ts/issues"},"dist":{"shasum":"2a380e5782e56be4c5669b6634d06e3ac0104baf","tarball":"https://registry.npmjs.org/@acosmi/sdk-ts/-/sdk-ts-1.3.0.tgz","fileCount":40,"integrity":"sha512-9+DODO5DydiB327Fhnx+i1CW1CTt6izOp5e8lTblYk9jBKpNnDSsiwnpREz6eMLzNlYyP3OVnZ8utyIe4ggNZA==","signatures":[{"sig":"MEYCIQCNGKEkgsD/HS6cvuK76xzBbJ6veBwy8oZubST3+oPbOwIhAOJBg1LE5bSx6gVnhCYBgvcATedsa8aVArbUp8bx26pM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@acosmi%2fsdk-ts@1.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3300125},"main":"./dist/node/index.cjs","type":"module","types":"./dist/node/index.d.ts","module":"./dist/node/index.mjs","engines":{"node":">=18"},"exports":{".":{"deno":"./dist/index.mjs","node":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.mjs","require":"./dist/node/index.cjs"},"types":"./dist/node/index.d.ts","browser":"./dist/browser/index.mjs","default":"./dist/index.mjs"},"./sanitize":{"types":"./dist/node/sanitize/index.d.ts","import":"./dist/node/sanitize/index.mjs","require":"./dist/node/sanitize/index.cjs"},"./package.json":"./package.json","./adapters/openai":{"types":"./dist/node/adapters/openai.d.ts","import":"./dist/node/adapters/openai.mjs","require":"./dist/node/adapters/openai.cjs"},"./adapters/anthropic":{"types":"./dist/node/adapters/anthropic.d.ts","import":"./dist/node/adapters/anthropic.mjs","require":"./dist/node/adapters/anthropic.cjs"}},"gitHead":"218f765fda1f2f2775309cd7e71f3cea0afa3f25","scripts":{"lint":"eslint src --ext .ts","test":"vitest run","build":"tsup","format":"prettier --write \"src/**/*.{ts,json}\"","test:pack":"node scripts/smoke-pack.mjs","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run lint && npm test && npm run build && npm run test:pack"},"_npmUser":{"name":"acosmi","email":"fushihua@acosmi.com"},"repository":{"url":"git+https://github.com/acosmi/sdk-ts.git","type":"git"},"_npmVersion":"10.8.2","description":"Acosmi 模型网关与 Agent Run Gateway TypeScript SDK — 双格式 (Anthropic + OpenAI) 多端 (浏览器 / Node ≥18 / Deno / Bun)。","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^8.57.0","vitest":"^1.0.0","prettier":"^3.0.0","typescript":"^5.4.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-ts_1.3.0_1779260744614_0.7024596386406385","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"@acosmi/sdk-ts","version":"1.3.1","keywords":["acosmi","anthropic","openai","llm","sdk","compliance","evidence","timestamp","esignature","claude","crabcode","crabclaw"],"author":{"name":"Acosmi"},"license":"MIT","_id":"@acosmi/sdk-ts@1.3.1","maintainers":[{"name":"acosmi","email":"fushihua@acosmi.com"}],"homepage":"https://github.com/acosmi/sdk-ts#readme","bugs":{"url":"https://github.com/acosmi/sdk-ts/issues"},"dist":{"shasum":"846c8a3986b10449dd6c832d0df62a29203044f0","tarball":"https://registry.npmjs.org/@acosmi/sdk-ts/-/sdk-ts-1.3.1.tgz","fileCount":40,"integrity":"sha512-pWy7B7Uz6rEtnjZflBR64QL/o6gWbUoJihM9R6D2s1SJ4sKRk4+x3T4eUsvVLL3qYBs69ApPaKFVg/Bg9g+MJQ==","signatures":[{"sig":"MEYCIQClVZKxGxrdTPSL+VkdfpVFJBEYHTM5iNCCs0WSXLluegIhAOMF/KYwPJmKJqYCcKmiexY9jKespa/3paedDSrJ8awK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@acosmi%2fsdk-ts@1.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3300754},"main":"./dist/node/index.cjs","type":"module","types":"./dist/node/index.d.ts","module":"./dist/node/index.mjs","engines":{"node":">=18"},"exports":{".":{"deno":"./dist/index.mjs","node":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.mjs","require":"./dist/node/index.cjs"},"types":"./dist/node/index.d.ts","browser":"./dist/browser/index.mjs","default":"./dist/index.mjs"},"./sanitize":{"types":"./dist/node/sanitize/index.d.ts","import":"./dist/node/sanitize/index.mjs","require":"./dist/node/sanitize/index.cjs"},"./package.json":"./package.json","./adapters/openai":{"types":"./dist/node/adapters/openai.d.ts","import":"./dist/node/adapters/openai.mjs","require":"./dist/node/adapters/openai.cjs"},"./adapters/anthropic":{"types":"./dist/node/adapters/anthropic.d.ts","import":"./dist/node/adapters/anthropic.mjs","require":"./dist/node/adapters/anthropic.cjs"}},"gitHead":"a68cf87b4e6b2e9155e30e292b3c36a2317cea53","scripts":{"lint":"eslint src --ext .ts","test":"vitest run","build":"tsup","format":"prettier --write \"src/**/*.{ts,json}\"","test:pack":"node scripts/smoke-pack.mjs","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run lint && npm test && npm run build && npm run test:pack"},"_npmUser":{"name":"acosmi","email":"fushihua@acosmi.com"},"repository":{"url":"git+https://github.com/acosmi/sdk-ts.git","type":"git"},"_npmVersion":"10.8.2","description":"Acosmi TypeScript SDK：模型网关、Agent Run Gateway 与 Compliance（电子证据、时间章、报告、签署 envelope）统一客户端，支持浏览器 / Node ≥18 / Deno / Bun。","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^8.57.0","vitest":"^1.0.0","prettier":"^3.0.0","typescript":"^5.4.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-ts_1.3.1_1779261130514_0.9363418984939389","host":"s3://npm-registry-packages-npm-production"}},"1.3.2":{"name":"@acosmi/sdk-ts","version":"1.3.2","keywords":["acosmi","anthropic","openai","llm","sdk","compliance","evidence","timestamp","esignature","claude","crabcode","crabclaw"],"author":{"name":"Acosmi"},"license":"MIT","_id":"@acosmi/sdk-ts@1.3.2","maintainers":[{"name":"acosmi","email":"fushihua@acosmi.com"}],"homepage":"https://github.com/acosmi/sdk-ts#readme","bugs":{"url":"https://github.com/acosmi/sdk-ts/issues"},"dist":{"shasum":"e5df98f93e886da751476b6ac4fb6c91121ff85a","tarball":"https://registry.npmjs.org/@acosmi/sdk-ts/-/sdk-ts-1.3.2.tgz","fileCount":40,"integrity":"sha512-YGTmWm+9cbAE+efPItooeKrB6Fpw9cTaDeOUwLqeS7qnuWb5BuwoyzdpIC/oxxJsQn7t7KDz/lqkcMy+AnwyOw==","signatures":[{"sig":"MEUCIQDc4phyYItEuwxyv2q5qdCJuUFzFetPQJed2uQp3Q83VQIgDbCicT/xVoSlg2KbCvNdbJxI+2dJj6iZtCew2Dirdkw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@acosmi%2fsdk-ts@1.3.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3338267},"main":"./dist/node/index.cjs","type":"module","types":"./dist/node/index.d.ts","module":"./dist/node/index.mjs","engines":{"node":">=18"},"exports":{".":{"deno":"./dist/index.mjs","node":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.mjs","require":"./dist/node/index.cjs"},"types":"./dist/node/index.d.ts","browser":"./dist/browser/index.mjs","default":"./dist/index.mjs"},"./sanitize":{"types":"./dist/node/sanitize/index.d.ts","import":"./dist/node/sanitize/index.mjs","require":"./dist/node/sanitize/index.cjs"},"./package.json":"./package.json","./adapters/openai":{"types":"./dist/node/adapters/openai.d.ts","import":"./dist/node/adapters/openai.mjs","require":"./dist/node/adapters/openai.cjs"},"./adapters/anthropic":{"types":"./dist/node/adapters/anthropic.d.ts","import":"./dist/node/adapters/anthropic.mjs","require":"./dist/node/adapters/anthropic.cjs"}},"gitHead":"a3a318fb5e78714e47c54cd25037b30dbbf0237e","scripts":{"lint":"eslint src --ext .ts","test":"vitest run","build":"tsup","format":"prettier --write \"src/**/*.{ts,json}\"","test:pack":"node scripts/smoke-pack.mjs","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run lint && npm test && npm run build && npm run test:pack"},"_npmUser":{"name":"acosmi","email":"fushihua@acosmi.com"},"repository":{"url":"git+https://github.com/acosmi/sdk-ts.git","type":"git"},"_npmVersion":"10.8.2","description":"Acosmi TypeScript SDK：模型网关、Agent Run Gateway 与 Compliance（电子证据、时间章、报告、签署 envelope）统一客户端，支持浏览器 / Node ≥18 / Deno / Bun。","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^8.57.0","vitest":"^1.0.0","prettier":"^3.0.0","typescript":"^5.4.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-ts_1.3.2_1779294585027_0.7064595331429053","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@acosmi/sdk-ts","version":"1.4.0","keywords":["acosmi","anthropic","openai","llm","sdk","compliance","evidence","timestamp","esignature","claude","crabcode","crabclaw"],"author":{"name":"Acosmi"},"license":"MIT","_id":"@acosmi/sdk-ts@1.4.0","maintainers":[{"name":"acosmi","email":"fushihua@acosmi.com"}],"homepage":"https://github.com/acosmi/sdk-ts#readme","bugs":{"url":"https://github.com/acosmi/sdk-ts/issues"},"dist":{"shasum":"c55fdc6ea230e5c8daaf631fbee12d8122830acf","tarball":"https://registry.npmjs.org/@acosmi/sdk-ts/-/sdk-ts-1.4.0.tgz","fileCount":40,"integrity":"sha512-1j7ipEBtpJFA51YI353PUwATDlyDhzaoiXH6VcZmt5J9mQUrQPFrZZEDkEjaHFQO7+QSadysINcCo6dAG5UFiA==","signatures":[{"sig":"MEUCIQD2pjXnyRFF60M5IWmjmc/j1+rZHZRqfQj7iayjUxvvsAIgZK7HFne3dhfD/44wd/RBez+WvZX6l+2V4h0QQOBmlB8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@acosmi%2fsdk-ts@1.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3425012},"main":"./dist/node/index.cjs","type":"module","types":"./dist/node/index.d.ts","module":"./dist/node/index.mjs","engines":{"node":">=18"},"exports":{".":{"deno":"./dist/index.mjs","node":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.mjs","require":"./dist/node/index.cjs"},"types":"./dist/node/index.d.ts","browser":"./dist/browser/index.mjs","default":"./dist/index.mjs"},"./sanitize":{"types":"./dist/node/sanitize/index.d.ts","import":"./dist/node/sanitize/index.mjs","require":"./dist/node/sanitize/index.cjs"},"./package.json":"./package.json","./adapters/openai":{"types":"./dist/node/adapters/openai.d.ts","import":"./dist/node/adapters/openai.mjs","require":"./dist/node/adapters/openai.cjs"},"./adapters/anthropic":{"types":"./dist/node/adapters/anthropic.d.ts","import":"./dist/node/adapters/anthropic.mjs","require":"./dist/node/adapters/anthropic.cjs"}},"gitHead":"14071b9a09a7c6bba7bed8d14b409c23d27b70a7","scripts":{"lint":"eslint src --ext .ts","test":"vitest run","build":"tsup","format":"prettier --write \"src/**/*.{ts,json}\"","test:pack":"node scripts/smoke-pack.mjs","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run lint && npm test && npm run build && npm run test:pack"},"_npmUser":{"name":"acosmi","email":"fushihua@acosmi.com"},"repository":{"url":"git+https://github.com/acosmi/sdk-ts.git","type":"git"},"_npmVersion":"10.8.2","description":"Acosmi TypeScript SDK：模型网关、Agent Run Gateway 与 Compliance（电子证据、时间章、报告、签署 envelope）统一客户端，支持浏览器 / Node ≥18 / Deno / Bun。","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^8.57.0","vitest":"^1.0.0","prettier":"^3.0.0","typescript":"^5.4.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-ts_1.4.0_1779419926062_0.14585088452690909","host":"s3://npm-registry-packages-npm-production"}},"1.4.1":{"name":"@acosmi/sdk-ts","version":"1.4.1","keywords":["acosmi","anthropic","openai","llm","sdk","compliance","evidence","timestamp","esignature","claude","crabcode","crabclaw"],"author":{"name":"Acosmi"},"license":"MIT","_id":"@acosmi/sdk-ts@1.4.1","maintainers":[{"name":"acosmi","email":"fushihua@acosmi.com"}],"homepage":"https://github.com/acosmi/sdk-ts#readme","bugs":{"url":"https://github.com/acosmi/sdk-ts/issues"},"dist":{"shasum":"a9a9bb3e1c3c92eb33fbe1cbb7172bde9e639490","tarball":"https://registry.npmjs.org/@acosmi/sdk-ts/-/sdk-ts-1.4.1.tgz","fileCount":40,"integrity":"sha512-sCZVxDbUaNYZv0nzhL6drpGRxE8u7k6hAIGj6WTHVlDQ6EcNIkn200KA37IpjZY7LwQjMaZ1728Nh2X/ezClPQ==","signatures":[{"sig":"MEQCIFHKFG+httIs3z56CelSrmpv30iL9lQmH4mV0YqxqulCAiAg83E/KBISOGdgu24IcfI+bH3he4AkUw6qLWFB+dUQ7w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@acosmi%2fsdk-ts@1.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3466925},"main":"./dist/node/index.cjs","type":"module","types":"./dist/node/index.d.ts","module":"./dist/node/index.mjs","engines":{"node":">=18"},"exports":{".":{"deno":"./dist/index.mjs","node":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.mjs","require":"./dist/node/index.cjs"},"types":"./dist/node/index.d.ts","browser":"./dist/browser/index.mjs","default":"./dist/index.mjs"},"./sanitize":{"types":"./dist/node/sanitize/index.d.ts","import":"./dist/node/sanitize/index.mjs","require":"./dist/node/sanitize/index.cjs"},"./package.json":"./package.json","./adapters/openai":{"types":"./dist/node/adapters/openai.d.ts","import":"./dist/node/adapters/openai.mjs","require":"./dist/node/adapters/openai.cjs"},"./adapters/anthropic":{"types":"./dist/node/adapters/anthropic.d.ts","import":"./dist/node/adapters/anthropic.mjs","require":"./dist/node/adapters/anthropic.cjs"}},"gitHead":"590b0a875765316372b9d665e9c77ed710b081ff","scripts":{"lint":"eslint src --ext .ts","test":"vitest run","build":"tsup","format":"prettier --write \"src/**/*.{ts,json}\"","test:pack":"node scripts/smoke-pack.mjs","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run lint && npm test && npm run build && npm run test:pack"},"_npmUser":{"name":"acosmi","email":"fushihua@acosmi.com"},"repository":{"url":"git+https://github.com/acosmi/sdk-ts.git","type":"git"},"_npmVersion":"10.8.2","description":"Acosmi TypeScript SDK：模型网关、Agent Run Gateway 与 Compliance（电子证据、时间章、报告、签署 envelope）统一客户端，支持浏览器 / Node ≥18 / Deno / Bun。","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^8.57.0","vitest":"^1.0.0","prettier":"^3.0.0","typescript":"^5.4.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-ts_1.4.1_1779423659478_0.19416940909562297","host":"s3://npm-registry-packages-npm-production"}},"1.4.2":{"name":"@acosmi/sdk-ts","version":"1.4.2","keywords":["acosmi","anthropic","openai","llm","sdk","compliance","evidence","timestamp","esignature","claude","crabcode","crabclaw"],"author":{"name":"Acosmi"},"license":"MIT","_id":"@acosmi/sdk-ts@1.4.2","maintainers":[{"name":"acosmi","email":"fushihua@acosmi.com"}],"homepage":"https://github.com/acosmi/sdk-ts#readme","bugs":{"url":"https://github.com/acosmi/sdk-ts/issues"},"dist":{"shasum":"4b53de0fa3ecc03edb04cb0bf5e82005b781f107","tarball":"https://registry.npmjs.org/@acosmi/sdk-ts/-/sdk-ts-1.4.2.tgz","fileCount":45,"integrity":"sha512-H+0sy4GqGgGZ7PizvtRJLJ+nsZIF+5hOyY//XHqFJZg7d2HthRxMt//ARp7XarfJdTGUkFLwe5cLQM5Kx5nOHw==","signatures":[{"sig":"MEQCIGzBnaogIizSNuIWAncD3xi5yqz0qQBv8ueiAsxmb5PlAiA3CIaDlKQXG7GkOqFpzY9HKBEHM8JlyhWRE7+D1ugGnw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@acosmi%2fsdk-ts@1.4.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3371571},"main":"./dist/node/index.cjs","type":"module","types":"./dist/node/index.d.ts","module":"./dist/node/index.mjs","engines":{"node":">=18"},"exports":{".":{"deno":"./dist/index.mjs","node":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.mjs","require":"./dist/node/index.cjs"},"types":"./dist/node/index.d.ts","browser":"./dist/browser/index.mjs","default":"./dist/index.mjs"},"./sanitize":{"types":"./dist/node/sanitize/index.d.ts","import":"./dist/node/sanitize/index.mjs","require":"./dist/node/sanitize/index.cjs"},"./package.json":"./package.json","./adapters/openai":{"types":"./dist/node/adapters/openai.d.ts","import":"./dist/node/adapters/openai.mjs","require":"./dist/node/adapters/openai.cjs"},"./adapters/anthropic":{"types":"./dist/node/adapters/anthropic.d.ts","import":"./dist/node/adapters/anthropic.mjs","require":"./dist/node/adapters/anthropic.cjs"}},"gitHead":"2e5eae754aa3d1bb75df7c4a2d69e00b65152cf3","scripts":{"docs":"typedoc","lint":"eslint src --ext .ts","test":"vitest run","build":"tsup","format":"prettier --write \"src/**/*.{ts,json}\"","test:pack":"node scripts/smoke-pack.mjs","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run lint && npm test && npm run build && npm run test:pack && npm run docs"},"_npmUser":{"name":"acosmi","email":"fushihua@acosmi.com"},"repository":{"url":"git+https://github.com/acosmi/sdk-ts.git","type":"git"},"_npmVersion":"10.8.2","description":"Acosmi TypeScript SDK：模型网关、Agent Run Gateway 与 Compliance（电子证据、时间章、报告、签署 envelope）统一客户端，支持浏览器 / Node ≥18 / Deno / Bun。","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^8.57.0","vitest":"^1.0.0","typedoc":"^0.28.19","prettier":"^3.0.0","typescript":"^5.4.0","@types/node":"^20.0.0","typedoc-plugin-markdown":"^4.11.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-ts_1.4.2_1779471259660_0.665908639044966","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"@acosmi/sdk-ts","version":"1.5.0","keywords":["acosmi","anthropic","openai","llm","sdk","compliance","evidence","timestamp","esignature","claude","crabcode","crabclaw"],"author":{"name":"Acosmi"},"license":"MIT","_id":"@acosmi/sdk-ts@1.5.0","maintainers":[{"name":"acosmi","email":"fushihua@acosmi.com"}],"homepage":"https://github.com/acosmi/sdk-ts#readme","bugs":{"url":"https://github.com/acosmi/sdk-ts/issues"},"dist":{"shasum":"d8130aa3cf5ebcff5f302e73ace780023f69ebb8","tarball":"https://registry.npmjs.org/@acosmi/sdk-ts/-/sdk-ts-1.5.0.tgz","fileCount":45,"integrity":"sha512-9CwTF541itZHBqlzsDPeC2bTHzTaPhxVRsbhQ3nHRh54CN4Cq8uMyqGblD4Enkla+f4cHbM6Vq6Tv8/bTZIRrg==","signatures":[{"sig":"MEUCIQD6wx1vHrLsmqTWfyY/8IftMFY0+mDaog0AAzqAfpiJoQIgc8Tc5pgTbki1xc0y95rSf4OZKIGYeBPSW7kScUgoP5I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@acosmi%2fsdk-ts@1.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3753489},"main":"./dist/node/index.cjs","type":"module","types":"./dist/node/index.d.ts","module":"./dist/node/index.mjs","engines":{"node":">=18"},"exports":{".":{"deno":"./dist/index.mjs","node":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.mjs","require":"./dist/node/index.cjs"},"types":"./dist/node/index.d.ts","browser":"./dist/browser/index.mjs","default":"./dist/index.mjs"},"./sanitize":{"types":"./dist/node/sanitize/index.d.ts","import":"./dist/node/sanitize/index.mjs","require":"./dist/node/sanitize/index.cjs"},"./package.json":"./package.json","./adapters/openai":{"types":"./dist/node/adapters/openai.d.ts","import":"./dist/node/adapters/openai.mjs","require":"./dist/node/adapters/openai.cjs"},"./adapters/anthropic":{"types":"./dist/node/adapters/anthropic.d.ts","import":"./dist/node/adapters/anthropic.mjs","require":"./dist/node/adapters/anthropic.cjs"}},"gitHead":"ec769365e1a55afbc96db6c2517e10988fb6b1be","scripts":{"docs":"typedoc","lint":"eslint src --ext .ts","test":"vitest run","build":"tsup","format":"prettier --write \"src/**/*.{ts,json}\"","test:pack":"node scripts/smoke-pack.mjs","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run lint && npm test && npm run build && npm run test:pack && npm run docs"},"_npmUser":{"name":"acosmi","email":"fushihua@acosmi.com"},"repository":{"url":"git+https://github.com/acosmi/sdk-ts.git","type":"git"},"_npmVersion":"10.8.2","description":"Acosmi TypeScript SDK：模型网关、Agent Run Gateway 与 Compliance（电子证据、时间章、报告、签署 envelope）统一客户端，支持浏览器 / Node ≥18 / Deno / Bun。","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^8.57.0","vitest":"^1.0.0","typedoc":"^0.28.19","prettier":"^3.0.0","typescript":"^5.4.0","@types/node":"^20.0.0","typedoc-plugin-markdown":"^4.11.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-ts_1.5.0_1779531122595_0.5119887238068912","host":"s3://npm-registry-packages-npm-production"}},"1.5.1":{"name":"@acosmi/sdk-ts","version":"1.5.1","keywords":["acosmi","anthropic","openai","llm","sdk","compliance","evidence","timestamp","esignature","claude","crabcode","crabclaw"],"author":{"name":"Acosmi"},"license":"MIT","_id":"@acosmi/sdk-ts@1.5.1","maintainers":[{"name":"acosmi","email":"fushihua@acosmi.com"}],"homepage":"https://github.com/acosmi/sdk-ts#readme","bugs":{"url":"https://github.com/acosmi/sdk-ts/issues"},"dist":{"shasum":"601f667a05108d30d53fb285072b0f89fc6767e8","tarball":"https://registry.npmjs.org/@acosmi/sdk-ts/-/sdk-ts-1.5.1.tgz","fileCount":45,"integrity":"sha512-3ivDs3w6RJaHU6GVWwzMiGYXSe6zDsnmV5NwwQc3hvIRbdaO2ZEc5OVTnr8YWTlrYCer69ggGXXo0q/Y7mUvJA==","signatures":[{"sig":"MEQCIFDxLfDhWOfA0ngFlB6BiEj1l4GZpz/q4ljteRjPhhk3AiAFiOVmFKzs1FeIYGr3T9PzJ4Gq44mL4HlbYK6+M013og==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@acosmi%2fsdk-ts@1.5.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3771662},"main":"./dist/node/index.cjs","type":"module","types":"./dist/node/index.d.ts","module":"./dist/node/index.mjs","engines":{"node":">=18"},"exports":{".":{"deno":"./dist/index.mjs","node":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.mjs","require":"./dist/node/index.cjs"},"types":"./dist/node/index.d.ts","browser":"./dist/browser/index.mjs","default":"./dist/index.mjs"},"./sanitize":{"types":"./dist/node/sanitize/index.d.ts","import":"./dist/node/sanitize/index.mjs","require":"./dist/node/sanitize/index.cjs"},"./package.json":"./package.json","./adapters/openai":{"types":"./dist/node/adapters/openai.d.ts","import":"./dist/node/adapters/openai.mjs","require":"./dist/node/adapters/openai.cjs"},"./adapters/anthropic":{"types":"./dist/node/adapters/anthropic.d.ts","import":"./dist/node/adapters/anthropic.mjs","require":"./dist/node/adapters/anthropic.cjs"}},"gitHead":"009f2fb75aed96f3588d2c79f6838e5e1e083daf","scripts":{"docs":"typedoc","lint":"eslint src --ext .ts","test":"vitest run","build":"tsup","format":"prettier --write \"src/**/*.{ts,json}\"","test:pack":"node scripts/smoke-pack.mjs","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run lint && npm test && npm run build && npm run test:pack && npm run docs"},"_npmUser":{"name":"acosmi","email":"fushihua@acosmi.com"},"repository":{"url":"git+https://github.com/acosmi/sdk-ts.git","type":"git"},"_npmVersion":"10.8.2","description":"Acosmi TypeScript SDK：模型网关、Agent Run Gateway 与 Compliance（电子证据、时间章、报告、签署 envelope）统一客户端，支持浏览器 / Node ≥18 / Deno / Bun。","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^8.57.0","vitest":"^1.0.0","typedoc":"^0.28.19","prettier":"^3.0.0","typescript":"^5.4.0","@types/node":"^20.0.0","typedoc-plugin-markdown":"^4.11.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-ts_1.5.1_1779556068372_0.3602897223513466","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"@acosmi/sdk-ts","version":"1.6.0","keywords":["acosmi","anthropic","openai","llm","sdk","compliance","evidence","timestamp","esignature","claude","crabcode","crabclaw"],"author":{"name":"Acosmi"},"license":"MIT","_id":"@acosmi/sdk-ts@1.6.0","maintainers":[{"name":"acosmi","email":"fushihua@acosmi.com"}],"homepage":"https://github.com/acosmi/sdk-ts#readme","bugs":{"url":"https://github.com/acosmi/sdk-ts/issues"},"dist":{"shasum":"5ebc2be6d22593c1788bfca30e8891764dcf6d9a","tarball":"https://registry.npmjs.org/@acosmi/sdk-ts/-/sdk-ts-1.6.0.tgz","fileCount":45,"integrity":"sha512-bz/8xf8RTHUXpqzHaYpp8Rm9n2Z65FR88i7JaaIzByrJLdksn15cY+x7W+Sd+eFdl9T71I2Gr1LMZfvnAYcSKA==","signatures":[{"sig":"MEYCIQC3Zr9oUAOgpcy5pS7RAtNMz2y/3QwhB/fz5yHRramDJQIhAPrIku1XABHZIrS11uU5FRRwikFycqADwnidLN9JK4em","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@acosmi%2fsdk-ts@1.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3815204},"main":"./dist/node/index.cjs","type":"module","types":"./dist/node/index.d.ts","module":"./dist/node/index.mjs","engines":{"node":">=18"},"exports":{".":{"deno":"./dist/index.mjs","node":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.mjs","require":"./dist/node/index.cjs"},"types":"./dist/node/index.d.ts","browser":"./dist/browser/index.mjs","default":"./dist/index.mjs"},"./sanitize":{"types":"./dist/node/sanitize/index.d.ts","import":"./dist/node/sanitize/index.mjs","require":"./dist/node/sanitize/index.cjs"},"./package.json":"./package.json","./adapters/openai":{"types":"./dist/node/adapters/openai.d.ts","import":"./dist/node/adapters/openai.mjs","require":"./dist/node/adapters/openai.cjs"},"./adapters/anthropic":{"types":"./dist/node/adapters/anthropic.d.ts","import":"./dist/node/adapters/anthropic.mjs","require":"./dist/node/adapters/anthropic.cjs"}},"gitHead":"e016ee0a577338fa5be4cc8ab2e8a90edea10879","scripts":{"docs":"typedoc","lint":"eslint src --ext .ts","test":"vitest run","build":"tsup","format":"prettier --write \"src/**/*.{ts,json}\"","test:pack":"node scripts/smoke-pack.mjs","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run lint && npm test && npm run build && npm run test:pack && npm run docs"},"_npmUser":{"name":"acosmi","email":"fushihua@acosmi.com"},"repository":{"url":"git+https://github.com/acosmi/sdk-ts.git","type":"git"},"_npmVersion":"11.12.1","description":"Acosmi TypeScript SDK：模型网关、Agent Run Gateway 与 Compliance（电子证据、时间章、报告、签署 envelope）统一客户端，支持浏览器 / Node ≥18 / Deno / Bun。","directories":{},"_nodeVersion":"24.15.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^8.57.0","vitest":"^4.1.7","typedoc":"^0.28.19","prettier":"^3.0.0","typescript":"^5.4.0","@types/node":"^20.0.0","typedoc-plugin-markdown":"^4.11.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-ts_1.6.0_1779642287279_0.03954152952783363","host":"s3://npm-registry-packages-npm-production"}},"1.9.0":{"name":"@acosmi/sdk-ts","version":"1.9.0","keywords":["acosmi","anthropic","openai","llm","sdk","compliance","evidence","timestamp","esignature","claude","crabcode","crabclaw"],"author":{"name":"Acosmi"},"license":"MIT","_id":"@acosmi/sdk-ts@1.9.0","maintainers":[{"name":"acosmi","email":"fushihua@acosmi.com"}],"homepage":"https://github.com/acosmi/sdk-ts#readme","bugs":{"url":"https://github.com/acosmi/sdk-ts/issues"},"dist":{"shasum":"01b95692826bcce273aa4293031d2601cd2d89d1","tarball":"https://registry.npmjs.org/@acosmi/sdk-ts/-/sdk-ts-1.9.0.tgz","fileCount":45,"integrity":"sha512-5IRfaPyul61FKGtSQ1X+4BnD7IjBibeJHXd7p2hnL1o7x80gfW5ZOLI+mowgsoJPor8mnVULoYWjmKqYUFgHuQ==","signatures":[{"sig":"MEUCIQDHNSRbpStv3ZUCKRnUMgOofU25cse9RqDtLm58c7rUgAIgbMM62JJIfa7mheiYsfMR8mDkb8sRTcnREKhCKZWa5F0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@acosmi%2fsdk-ts@1.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4073732},"main":"./dist/node/index.cjs","type":"module","types":"./dist/node/index.d.ts","module":"./dist/node/index.mjs","engines":{"node":">=18"},"exports":{".":{"deno":"./dist/index.mjs","node":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.mjs","require":"./dist/node/index.cjs"},"types":"./dist/node/index.d.ts","browser":"./dist/browser/index.mjs","default":"./dist/index.mjs"},"./sanitize":{"types":"./dist/node/sanitize/index.d.ts","import":"./dist/node/sanitize/index.mjs","require":"./dist/node/sanitize/index.cjs"},"./package.json":"./package.json","./adapters/openai":{"types":"./dist/node/adapters/openai.d.ts","import":"./dist/node/adapters/openai.mjs","require":"./dist/node/adapters/openai.cjs"},"./adapters/anthropic":{"types":"./dist/node/adapters/anthropic.d.ts","import":"./dist/node/adapters/anthropic.mjs","require":"./dist/node/adapters/anthropic.cjs"}},"gitHead":"c18d7f25366b0e0ed446bbea4fae861e8d4d8ceb","scripts":{"docs":"typedoc","lint":"eslint src --ext .ts","test":"vitest run","build":"tsup","format":"prettier --write \"src/**/*.{ts,json}\"","test:pack":"node scripts/smoke-pack.mjs","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run lint && npm test && npm run build && npm run test:pack && npm run docs"},"_npmUser":{"name":"acosmi","email":"fushihua@acosmi.com"},"repository":{"url":"git+https://github.com/acosmi/sdk-ts.git","type":"git"},"_npmVersion":"11.12.1","description":"Acosmi TypeScript SDK：模型网关、Agent Run Gateway 与 Compliance（电子证据、时间章、报告、签署 envelope）统一客户端，支持浏览器 / Node ≥18 / Deno / Bun。","directories":{},"_nodeVersion":"24.15.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^8.57.0","vitest":"^4.1.7","typedoc":"^0.28.19","prettier":"^3.0.0","typescript":"^5.4.0","@types/node":"^20.0.0","typedoc-plugin-markdown":"^4.11.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-ts_1.9.0_1779728109163_0.8331257216433976","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@acosmi/sdk-ts","version":"2.0.0","keywords":["acosmi","anthropic","openai","llm","sdk","compliance","evidence","timestamp","esignature","claude","crabcode","crabclaw"],"author":{"name":"Acosmi"},"license":"MIT","_id":"@acosmi/sdk-ts@2.0.0","maintainers":[{"name":"acosmi","email":"fushihua@acosmi.com"}],"homepage":"https://github.com/acosmi/sdk-ts#readme","bugs":{"url":"https://github.com/acosmi/sdk-ts/issues"},"dist":{"shasum":"219e4abbc7b03ba33fa61b57fc951e7dd7969487","tarball":"https://registry.npmjs.org/@acosmi/sdk-ts/-/sdk-ts-2.0.0.tgz","fileCount":45,"integrity":"sha512-HCS9tQlZM5VXnho5CBV0j39yHCa0lLy660h6bNs/MgfqTnIMP9p5anKCCUa4XjM0t3JsDUzC/UJulvBy+o5z4g==","signatures":[{"sig":"MEQCIEZ8//q6oZqEMLA00FuLxS/MSSfV3LIZHh9tCivFPxuVAiA6jmprWHasJ+21AFRe8qScgRhoNLlgmryl+yN+9/sERA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@acosmi%2fsdk-ts@2.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4108952},"main":"./dist/node/index.cjs","type":"module","types":"./dist/node/index.d.ts","module":"./dist/node/index.mjs","engines":{"node":">=18"},"exports":{".":{"deno":"./dist/index.mjs","node":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.mjs","require":"./dist/node/index.cjs"},"types":"./dist/node/index.d.ts","browser":"./dist/browser/index.mjs","default":"./dist/index.mjs"},"./sanitize":{"types":"./dist/node/sanitize/index.d.ts","import":"./dist/node/sanitize/index.mjs","require":"./dist/node/sanitize/index.cjs"},"./package.json":"./package.json","./adapters/openai":{"types":"./dist/node/adapters/openai.d.ts","import":"./dist/node/adapters/openai.mjs","require":"./dist/node/adapters/openai.cjs"},"./adapters/anthropic":{"types":"./dist/node/adapters/anthropic.d.ts","import":"./dist/node/adapters/anthropic.mjs","require":"./dist/node/adapters/anthropic.cjs"}},"gitHead":"bdbe2061941c6b9e88192201680a72fc588358e9","scripts":{"docs":"typedoc","lint":"eslint src --ext .ts","test":"vitest run","build":"tsup","format":"prettier --write \"src/**/*.{ts,json}\"","test:pack":"node scripts/smoke-pack.mjs","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run lint && npm test && npm run build && npm run test:pack && npm run docs"},"_npmUser":{"name":"acosmi","email":"fushihua@acosmi.com"},"repository":{"url":"git+https://github.com/acosmi/sdk-ts.git","type":"git"},"_npmVersion":"11.12.1","description":"Acosmi TypeScript SDK：模型网关、Agent Run Gateway 与 Compliance（电子证据、时间章、报告、签署 envelope）统一客户端，支持浏览器 / Node ≥18 / Deno / Bun。","directories":{},"_nodeVersion":"24.15.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^8.57.0","vitest":"^4.1.7","typedoc":"^0.28.19","prettier":"^3.0.0","typescript":"^5.4.0","@types/node":"^20.0.0","typedoc-plugin-markdown":"^4.11.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-ts_2.0.0_1779775003333_0.4827731718715351","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"@acosmi/sdk-ts","version":"2.0.1","keywords":["acosmi","anthropic","openai","llm","sdk","compliance","evidence","timestamp","esignature","claude","crabcode","crabclaw"],"author":{"name":"Acosmi"},"license":"MIT","_id":"@acosmi/sdk-ts@2.0.1","maintainers":[{"name":"acosmi","email":"fushihua@acosmi.com"}],"homepage":"https://github.com/acosmi/sdk-ts#readme","bugs":{"url":"https://github.com/acosmi/sdk-ts/issues"},"dist":{"shasum":"d46057cf40c3d4a3d5818f857753c03eb51b3bce","tarball":"https://registry.npmjs.org/@acosmi/sdk-ts/-/sdk-ts-2.0.1.tgz","fileCount":47,"integrity":"sha512-WbmldKepNyvNZGxes/nrCmhY45P/1z6NVES5v8PE9NrbpH4957qXsW2emDqx1d3WNmpeVwQRv1I4QvdWfHvDzw==","signatures":[{"sig":"MEQCIDDf2U8PMhPB2FQIw99OTKRbWh30klNImXSIFnYdo1pyAiBi8Go4rXGOSM6Ep5ZWzG/jLiIm5XKUw5Ctw9jT9+R3DA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@acosmi%2fsdk-ts@2.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4159146},"main":"./dist/node/index.cjs","type":"module","types":"./dist/node/index.d.ts","module":"./dist/node/index.mjs","engines":{"node":">=18"},"exports":{".":{"deno":"./dist/index.mjs","node":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.mjs","require":"./dist/node/index.cjs"},"types":"./dist/node/index.d.ts","browser":"./dist/browser/index.mjs","default":"./dist/index.mjs"},"./sanitize":{"types":"./dist/node/sanitize/index.d.ts","import":"./dist/node/sanitize/index.mjs","require":"./dist/node/sanitize/index.cjs"},"./package.json":"./package.json","./adapters/openai":{"types":"./dist/node/adapters/openai.d.ts","import":"./dist/node/adapters/openai.mjs","require":"./dist/node/adapters/openai.cjs"},"./adapters/anthropic":{"types":"./dist/node/adapters/anthropic.d.ts","import":"./dist/node/adapters/anthropic.mjs","require":"./dist/node/adapters/anthropic.cjs"}},"gitHead":"063b3799068742eeb77f28b3b4abf01da0602dac","scripts":{"docs":"typedoc","lint":"eslint src --ext .ts","test":"vitest run","build":"tsup","format":"prettier --write \"src/**/*.{ts,json}\"","test:pack":"node scripts/smoke-pack.mjs","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run lint && npm test && npm run build && npm run test:pack && npm run docs"},"_npmUser":{"name":"acosmi","email":"fushihua@acosmi.com"},"repository":{"url":"git+https://github.com/acosmi/sdk-ts.git","type":"git"},"_npmVersion":"11.12.1","description":"Acosmi TypeScript SDK：模型网关、Agent Run Gateway 与 Compliance（电子证据、时间章、报告、签署 envelope）统一客户端，支持浏览器 / Node ≥18 / Deno / Bun。","directories":{},"_nodeVersion":"24.15.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^8.57.0","vitest":"^4.1.7","typedoc":"^0.28.19","prettier":"^3.0.0","typescript":"^5.4.0","@types/node":"^20.0.0","typedoc-plugin-markdown":"^4.11.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-ts_2.0.1_1779775240089_0.43637005431795317","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"@acosmi/sdk-ts","version":"2.1.0","keywords":["acosmi","anthropic","openai","llm","sdk","compliance","evidence","timestamp","esignature","claude","crabcode","crabclaw"],"author":{"name":"Acosmi"},"license":"MIT","_id":"@acosmi/sdk-ts@2.1.0","maintainers":[{"name":"acosmi","email":"fushihua@acosmi.com"}],"homepage":"https://github.com/acosmi/sdk-ts#readme","bugs":{"url":"https://github.com/acosmi/sdk-ts/issues"},"dist":{"shasum":"b01c509a0b2810c5669909ade1d26003846eb8f0","tarball":"https://registry.npmjs.org/@acosmi/sdk-ts/-/sdk-ts-2.1.0.tgz","fileCount":47,"integrity":"sha512-Arm2dxQ7oELBZBEI2LvcX/9Jb7Y36lG2pargMjYMl+nPhFf8l7W2If7V0Ni8zEA/cLnyfmb+cqWo3yDRMFSdJA==","signatures":[{"sig":"MEUCIQDus8hkfTpZMjG3JE0PTT+J03I2m3/hRQbanrue5ZLz9AIgO7FXVP8HSBPEotYroLFmlCd3x8g+hC6APde54yphiFE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@acosmi%2fsdk-ts@2.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4483670},"main":"./dist/node/index.cjs","type":"module","types":"./dist/node/index.d.ts","module":"./dist/node/index.mjs","engines":{"node":">=18"},"exports":{".":{"deno":"./dist/index.mjs","node":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.mjs","require":"./dist/node/index.cjs"},"types":"./dist/node/index.d.ts","browser":"./dist/browser/index.mjs","default":"./dist/index.mjs"},"./sanitize":{"types":"./dist/node/sanitize/index.d.ts","import":"./dist/node/sanitize/index.mjs","require":"./dist/node/sanitize/index.cjs"},"./package.json":"./package.json","./adapters/openai":{"types":"./dist/node/adapters/openai.d.ts","import":"./dist/node/adapters/openai.mjs","require":"./dist/node/adapters/openai.cjs"},"./adapters/anthropic":{"types":"./dist/node/adapters/anthropic.d.ts","import":"./dist/node/adapters/anthropic.mjs","require":"./dist/node/adapters/anthropic.cjs"}},"gitHead":"9d8d97dc651b1068dac81f72b716f57d7bacd83d","scripts":{"docs":"typedoc","lint":"eslint src --ext .ts","test":"vitest run","build":"tsup","format":"prettier --write \"src/**/*.{ts,json}\"","test:pack":"node scripts/smoke-pack.mjs","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run lint && npm test && npm run build && npm run test:pack && npm run docs"},"_npmUser":{"name":"acosmi","email":"fushihua@acosmi.com"},"repository":{"url":"git+https://github.com/acosmi/sdk-ts.git","type":"git"},"_npmVersion":"11.13.0","description":"Acosmi TypeScript SDK：模型网关、Agent Run Gateway 与 Compliance（电子证据、时间章、报告、签署 envelope）统一客户端，支持浏览器 / Node ≥18 / Deno / Bun。","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^8.57.0","vitest":"^4.1.7","typedoc":"^0.28.19","prettier":"^3.0.0","typescript":"^5.4.0","@types/node":"^20.0.0","typedoc-plugin-markdown":"^4.11.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-ts_2.1.0_1780022331090_0.9781300359376184","host":"s3://npm-registry-packages-npm-production"}},"2.2.0":{"name":"@acosmi/sdk-ts","version":"2.2.0","keywords":["acosmi","anthropic","openai","llm","sdk","compliance","evidence","timestamp","esignature","claude","crabcode","crabclaw"],"author":{"name":"Acosmi"},"license":"MIT","_id":"@acosmi/sdk-ts@2.2.0","maintainers":[{"name":"acosmi","email":"fushihua@acosmi.com"}],"homepage":"https://github.com/acosmi/sdk-ts#readme","bugs":{"url":"https://github.com/acosmi/sdk-ts/issues"},"dist":{"shasum":"87361d0ca9e7c188bd4cd3efc81d96a55e3f51c5","tarball":"https://registry.npmjs.org/@acosmi/sdk-ts/-/sdk-ts-2.2.0.tgz","fileCount":47,"integrity":"sha512-6giwgVt0iL2hP4Jmxkl99FQTiOKJ4kfPY1/NRPg1NrnnroPJMyg5TKzUS+SmfzHDYxZtSLw/WEbLOPUJYhj7Hw==","signatures":[{"sig":"MEYCIQDQpn0KWunaBa6uEreuEHqwmUuymefo9WHl2RLUMkZkmwIhAM40jz7f7+TiV+ZvwZjSl3kdHjwM0OXx6ZEqWlRZ+uB6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@acosmi%2fsdk-ts@2.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4535919},"main":"./dist/node/index.cjs","type":"module","types":"./dist/node/index.d.ts","module":"./dist/node/index.mjs","engines":{"node":">=18"},"exports":{".":{"deno":"./dist/index.mjs","node":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.mjs","require":"./dist/node/index.cjs"},"types":"./dist/node/index.d.ts","browser":"./dist/browser/index.mjs","default":"./dist/index.mjs"},"./sanitize":{"types":"./dist/node/sanitize/index.d.ts","import":"./dist/node/sanitize/index.mjs","require":"./dist/node/sanitize/index.cjs"},"./package.json":"./package.json","./adapters/openai":{"types":"./dist/node/adapters/openai.d.ts","import":"./dist/node/adapters/openai.mjs","require":"./dist/node/adapters/openai.cjs"},"./adapters/anthropic":{"types":"./dist/node/adapters/anthropic.d.ts","import":"./dist/node/adapters/anthropic.mjs","require":"./dist/node/adapters/anthropic.cjs"}},"gitHead":"8f106132bd3a4b30d652cedb60aa34bca5f4389e","scripts":{"docs":"typedoc","lint":"eslint src --ext .ts","test":"vitest run","build":"tsup","format":"prettier --write \"src/**/*.{ts,json}\"","test:pack":"node scripts/smoke-pack.mjs","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run lint && npm test && npm run build && npm run test:pack && npm run docs"},"_npmUser":{"name":"acosmi","email":"fushihua@acosmi.com"},"repository":{"url":"git+https://github.com/acosmi/sdk-ts.git","type":"git"},"_npmVersion":"11.13.0","description":"Acosmi TypeScript SDK：模型网关、Agent Run Gateway 与 Compliance（电子证据、时间章、报告、签署 envelope）统一客户端，支持浏览器 / Node ≥18 / Deno / Bun。","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^8.57.0","vitest":"^4.1.7","typedoc":"^0.28.19","prettier":"^3.0.0","typescript":"^5.4.0","@types/node":"^20.0.0","typedoc-plugin-markdown":"^4.11.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-ts_2.2.0_1780047190320_0.060842555682956156","host":"s3://npm-registry-packages-npm-production"}},"2.2.1":{"name":"@acosmi/sdk-ts","version":"2.2.1","keywords":["acosmi","anthropic","openai","llm","sdk","compliance","evidence","timestamp","esignature","claude","crabcode","crabclaw"],"author":{"name":"Acosmi"},"license":"MIT","_id":"@acosmi/sdk-ts@2.2.1","maintainers":[{"name":"acosmi","email":"fushihua@acosmi.com"}],"homepage":"https://github.com/acosmi/sdk-ts#readme","bugs":{"url":"https://github.com/acosmi/sdk-ts/issues"},"dist":{"shasum":"ad5d57facfd639e91d032b7a7221f6220acaa5f3","tarball":"https://registry.npmjs.org/@acosmi/sdk-ts/-/sdk-ts-2.2.1.tgz","fileCount":47,"integrity":"sha512-wVRTxk4GlYQmQBV0tU0at4RfD1eumPjtktwweDbJn5YMbkSt8fx8zndNxD9aQ2ovGkAovaI8sOCVL95dA5S8KA==","signatures":[{"sig":"MEUCIE7n0YJWqSfNqu2Lkq0vVchjk129rLQkJVhcZEInaAlZAiEAySR142VX0gFQtRlgUbfy/thG6/q1MQ2CTSq9Xn7SmiU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@acosmi%2fsdk-ts@2.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4537649},"main":"./dist/node/index.cjs","type":"module","types":"./dist/node/index.d.ts","module":"./dist/node/index.mjs","engines":{"node":">=18"},"exports":{".":{"deno":"./dist/index.mjs","node":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.mjs","require":"./dist/node/index.cjs"},"types":"./dist/node/index.d.ts","browser":"./dist/browser/index.mjs","default":"./dist/index.mjs"},"./sanitize":{"types":"./dist/node/sanitize/index.d.ts","import":"./dist/node/sanitize/index.mjs","require":"./dist/node/sanitize/index.cjs"},"./package.json":"./package.json","./adapters/openai":{"types":"./dist/node/adapters/openai.d.ts","import":"./dist/node/adapters/openai.mjs","require":"./dist/node/adapters/openai.cjs"},"./adapters/anthropic":{"types":"./dist/node/adapters/anthropic.d.ts","import":"./dist/node/adapters/anthropic.mjs","require":"./dist/node/adapters/anthropic.cjs"}},"gitHead":"f48394cf2e1f61f87b35dd204ce649a89bab97b5","scripts":{"docs":"typedoc","lint":"eslint src --ext .ts","test":"vitest run","build":"tsup","format":"prettier --write \"src/**/*.{ts,json}\"","test:pack":"node scripts/smoke-pack.mjs","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run lint && npm test && npm run build && npm run test:pack && npm run docs"},"_npmUser":{"name":"acosmi","email":"fushihua@acosmi.com"},"repository":{"url":"git+https://github.com/acosmi/sdk-ts.git","type":"git"},"_npmVersion":"11.13.0","description":"Acosmi TypeScript SDK：模型网关、Agent Run Gateway 与 Compliance（电子证据、时间章、报告、签署 envelope）统一客户端，支持浏览器 / Node ≥18 / Deno / Bun。","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^8.57.0","vitest":"^4.1.7","typedoc":"^0.28.19","prettier":"^3.0.0","typescript":"^5.4.0","@types/node":"^20.0.0","typedoc-plugin-markdown":"^4.11.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-ts_2.2.1_1780048486317_0.20768714389972143","host":"s3://npm-registry-packages-npm-production"}},"2.3.0":{"name":"@acosmi/sdk-ts","version":"2.3.0","keywords":["acosmi","anthropic","openai","llm","sdk","compliance","evidence","timestamp","esignature","claude","crabcode","crabclaw"],"author":{"name":"Acosmi"},"license":"MIT","_id":"@acosmi/sdk-ts@2.3.0","maintainers":[{"name":"acosmi","email":"fushihua@acosmi.com"}],"homepage":"https://github.com/acosmi/sdk-ts#readme","bugs":{"url":"https://github.com/acosmi/sdk-ts/issues"},"dist":{"shasum":"8209f0df04639f2496a443c26220d6e8b55e5626","tarball":"https://registry.npmjs.org/@acosmi/sdk-ts/-/sdk-ts-2.3.0.tgz","fileCount":47,"integrity":"sha512-tgX5n2OVY+HuuYIt52czD7lMx915foHZB26fnhQkAmaQlKP7OFD5VGSGRZkgOYQElPQr1rOuOca9XkTef5pUrQ==","signatures":[{"sig":"MEQCIEM1/ym65pT6Kqf2Z/o/m+/BLgUvMHSU8CGkGTJy1BReAiAdQRkvPvgrofrTiykO0SPxMwlUt6tyMfxYqho2nzbfTA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@acosmi%2fsdk-ts@2.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4548718},"main":"./dist/node/index.cjs","type":"module","types":"./dist/node/index.d.ts","module":"./dist/node/index.mjs","engines":{"node":">=18"},"exports":{".":{"deno":"./dist/index.mjs","node":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.mjs","require":"./dist/node/index.cjs"},"types":"./dist/node/index.d.ts","browser":"./dist/browser/index.mjs","default":"./dist/index.mjs"},"./sanitize":{"types":"./dist/node/sanitize/index.d.ts","import":"./dist/node/sanitize/index.mjs","require":"./dist/node/sanitize/index.cjs"},"./package.json":"./package.json","./adapters/openai":{"types":"./dist/node/adapters/openai.d.ts","import":"./dist/node/adapters/openai.mjs","require":"./dist/node/adapters/openai.cjs"},"./adapters/anthropic":{"types":"./dist/node/adapters/anthropic.d.ts","import":"./dist/node/adapters/anthropic.mjs","require":"./dist/node/adapters/anthropic.cjs"}},"gitHead":"7f8e5530df982613c09639ab4439ddd17b3e1f51","scripts":{"docs":"typedoc","lint":"eslint src --ext .ts","test":"vitest run","build":"tsup","format":"prettier --write \"src/**/*.{ts,json}\"","test:pack":"node scripts/smoke-pack.mjs","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run lint && npm test && npm run build && npm run test:pack && npm run docs"},"_npmUser":{"name":"acosmi","email":"fushihua@acosmi.com"},"repository":{"url":"git+https://github.com/acosmi/sdk-ts.git","type":"git"},"_npmVersion":"11.13.0","description":"Acosmi TypeScript SDK：模型网关、Agent Run Gateway 与 Compliance（电子证据、时间章、报告、签署 envelope）统一客户端，支持浏览器 / Node ≥18 / Deno / Bun。","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^8.57.0","vitest":"^4.1.7","typedoc":"^0.28.19","prettier":"^3.0.0","typescript":"^5.4.0","@types/node":"^20.0.0","typedoc-plugin-markdown":"^4.11.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-ts_2.3.0_1780129454253_0.08434270228766638","host":"s3://npm-registry-packages-npm-production"}},"2.4.0":{"name":"@acosmi/sdk-ts","version":"2.4.0","keywords":["acosmi","anthropic","openai","llm","sdk","compliance","evidence","timestamp","esignature","claude","crabcode","crabclaw"],"author":{"name":"Acosmi"},"license":"MIT","_id":"@acosmi/sdk-ts@2.4.0","maintainers":[{"name":"acosmi","email":"fushihua@acosmi.com"}],"homepage":"https://github.com/acosmi/sdk-ts#readme","bugs":{"url":"https://github.com/acosmi/sdk-ts/issues"},"dist":{"shasum":"1cf14ee262ee5f78918ae349e745f7f52be7c549","tarball":"https://registry.npmjs.org/@acosmi/sdk-ts/-/sdk-ts-2.4.0.tgz","fileCount":47,"integrity":"sha512-ufIoo9cOyw/0akuCODs/dJGOYAH6/xYYN381Ik9jpyzSrmagfS/1sLjiKUoLwxa6VmdGF0Gp479xKP+MVUXt7g==","signatures":[{"sig":"MEUCIQC8QQHAoNpyaxFXSj4O8RmF/Xwt5EBf45W7I6/Nj1LaewIgY/AgfHrsD75o7YXDMT3MjUmvHtxO3k9e9fzN7wrzS80=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@acosmi%2fsdk-ts@2.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4551305},"main":"./dist/node/index.cjs","type":"module","types":"./dist/node/index.d.ts","module":"./dist/node/index.mjs","engines":{"node":">=18"},"exports":{".":{"deno":"./dist/index.mjs","node":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.mjs","require":"./dist/node/index.cjs"},"types":"./dist/node/index.d.ts","browser":"./dist/browser/index.mjs","default":"./dist/index.mjs"},"./sanitize":{"types":"./dist/node/sanitize/index.d.ts","import":"./dist/node/sanitize/index.mjs","require":"./dist/node/sanitize/index.cjs"},"./package.json":"./package.json","./adapters/openai":{"types":"./dist/node/adapters/openai.d.ts","import":"./dist/node/adapters/openai.mjs","require":"./dist/node/adapters/openai.cjs"},"./adapters/anthropic":{"types":"./dist/node/adapters/anthropic.d.ts","import":"./dist/node/adapters/anthropic.mjs","require":"./dist/node/adapters/anthropic.cjs"}},"gitHead":"d3d6a0f0b274864d1a305b05d39eb3e15e46e0b5","scripts":{"docs":"typedoc","lint":"eslint src --ext .ts","test":"vitest run","build":"tsup","format":"prettier --write \"src/**/*.{ts,json}\"","test:pack":"node scripts/smoke-pack.mjs","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run lint && npm test && npm run build && npm run test:pack && npm run docs"},"_npmUser":{"name":"acosmi","email":"fushihua@acosmi.com"},"repository":{"url":"git+https://github.com/acosmi/sdk-ts.git","type":"git"},"_npmVersion":"11.13.0","description":"Acosmi TypeScript SDK：模型网关、Agent Run Gateway 与 Compliance（电子证据、时间章、报告、签署 envelope）统一客户端，支持浏览器 / Node ≥18 / Deno / Bun。","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^8.57.0","vitest":"^4.1.7","typedoc":"^0.28.19","prettier":"^3.0.0","typescript":"^5.4.0","@types/node":"^20.0.0","typedoc-plugin-markdown":"^4.11.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-ts_2.4.0_1780132585821_0.9226168902506868","host":"s3://npm-registry-packages-npm-production"}},"2.5.1":{"name":"@acosmi/sdk-ts","version":"2.5.1","keywords":["acosmi","anthropic","openai","llm","sdk","compliance","evidence","timestamp","esignature","claude","crabcode","crabclaw"],"author":{"name":"Acosmi"},"license":"MIT","_id":"@acosmi/sdk-ts@2.5.1","maintainers":[{"name":"acosmi","email":"fushihua@acosmi.com"}],"homepage":"https://github.com/acosmi/sdk-ts#readme","bugs":{"url":"https://github.com/acosmi/sdk-ts/issues"},"dist":{"shasum":"c00827d0a42d38d86b1e1aa733ec7dce0ef6e0e0","tarball":"https://registry.npmjs.org/@acosmi/sdk-ts/-/sdk-ts-2.5.1.tgz","fileCount":47,"integrity":"sha512-8gN8IFSTIzQH8ABmWACAVFS0ZS8TkJe3GRivOOKuToB7eZEOMOEDuha+hucizaEAf15+xYenJUqzY0HtJkej0w==","signatures":[{"sig":"MEUCIQDkqXulW7bnZb1D2lUYdF1uVw91CXhLL0OQOBuvNplAeQIgbis4dNsPp94qGBv9oD7zqvPtfA80Q8inBQ1AH3l+B6o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@acosmi%2fsdk-ts@2.5.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4714609},"main":"./dist/node/index.cjs","type":"module","types":"./dist/node/index.d.ts","module":"./dist/node/index.mjs","engines":{"node":">=18"},"exports":{".":{"deno":"./dist/index.mjs","node":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.mjs","require":"./dist/node/index.cjs"},"types":"./dist/node/index.d.ts","browser":"./dist/browser/index.mjs","default":"./dist/index.mjs"},"./sanitize":{"types":"./dist/node/sanitize/index.d.ts","import":"./dist/node/sanitize/index.mjs","require":"./dist/node/sanitize/index.cjs"},"./package.json":"./package.json","./adapters/openai":{"types":"./dist/node/adapters/openai.d.ts","import":"./dist/node/adapters/openai.mjs","require":"./dist/node/adapters/openai.cjs"},"./adapters/anthropic":{"types":"./dist/node/adapters/anthropic.d.ts","import":"./dist/node/adapters/anthropic.mjs","require":"./dist/node/adapters/anthropic.cjs"}},"gitHead":"ea2f227da4546426f66b251366609dca5f56970a","scripts":{"docs":"typedoc","lint":"eslint src --ext .ts","test":"vitest run","build":"tsup","format":"prettier --write \"src/**/*.{ts,json}\"","test:pack":"node scripts/smoke-pack.mjs","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run lint && npm test && npm run build && npm run test:pack && npm run docs"},"_npmUser":{"name":"acosmi","email":"fushihua@acosmi.com"},"repository":{"url":"git+https://github.com/acosmi/sdk-ts.git","type":"git"},"_npmVersion":"11.13.0","description":"Acosmi TypeScript SDK：模型网关、Agent Run Gateway 与 Compliance（电子证据、时间章、报告、签署 envelope）统一客户端，支持浏览器 / Node ≥18 / Deno / Bun。","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^8.57.0","vitest":"^4.1.7","typedoc":"^0.28.19","prettier":"^3.0.0","typescript":"^5.4.0","@types/node":"^20.0.0","typedoc-plugin-markdown":"^4.11.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-ts_2.5.1_1780286828726_0.47091397376776567","host":"s3://npm-registry-packages-npm-production"}},"2.6.0":{"name":"@acosmi/sdk-ts","version":"2.6.0","keywords":["acosmi","anthropic","openai","llm","sdk","compliance","evidence","timestamp","esignature","claude","crabcode","crabclaw"],"author":{"name":"Acosmi"},"license":"MIT","_id":"@acosmi/sdk-ts@2.6.0","maintainers":[{"name":"acosmi","email":"fushihua@acosmi.com"}],"homepage":"https://github.com/acosmi/sdk-ts#readme","bugs":{"url":"https://github.com/acosmi/sdk-ts/issues"},"dist":{"shasum":"5103e70a0ab24cc28f4f38945cbd7f9849ecea3c","tarball":"https://registry.npmjs.org/@acosmi/sdk-ts/-/sdk-ts-2.6.0.tgz","fileCount":47,"integrity":"sha512-ltsqabuDkHNP3F8xnFpZEni/YsD6kQEIyo0Fw1hb6MzeA9/dgTVwO3xm40zKWMHTaNLoLfQIzeoghPuY17kuYQ==","signatures":[{"sig":"MEYCIQC51CVOgN596nW98++lwDhTek90b8DFUBcAaBDkRZNhRgIhAMh6fzv9vZLfEFow7gUZSatwY0d8A/zg6LQqje+NYAAJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@acosmi%2fsdk-ts@2.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4770875},"main":"./dist/node/index.cjs","type":"module","types":"./dist/node/index.d.ts","module":"./dist/node/index.mjs","engines":{"node":">=18"},"exports":{".":{"deno":"./dist/index.mjs","node":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.mjs","require":"./dist/node/index.cjs"},"types":"./dist/node/index.d.ts","browser":"./dist/browser/index.mjs","default":"./dist/index.mjs"},"./sanitize":{"types":"./dist/node/sanitize/index.d.ts","import":"./dist/node/sanitize/index.mjs","require":"./dist/node/sanitize/index.cjs"},"./package.json":"./package.json","./adapters/openai":{"types":"./dist/node/adapters/openai.d.ts","import":"./dist/node/adapters/openai.mjs","require":"./dist/node/adapters/openai.cjs"},"./adapters/anthropic":{"types":"./dist/node/adapters/anthropic.d.ts","import":"./dist/node/adapters/anthropic.mjs","require":"./dist/node/adapters/anthropic.cjs"}},"gitHead":"f8a0d39fae2f688803804e1a2c099b6ace4925a1","scripts":{"docs":"typedoc","lint":"eslint src --ext .ts","test":"vitest run","build":"tsup","format":"prettier --write \"src/**/*.{ts,json}\"","test:pack":"node scripts/smoke-pack.mjs","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run lint && npm test && npm run build && npm run test:pack && npm run docs"},"_npmUser":{"name":"acosmi","email":"fushihua@acosmi.com"},"repository":{"url":"git+https://github.com/acosmi/sdk-ts.git","type":"git"},"_npmVersion":"11.13.0","description":"Acosmi TypeScript SDK：模型网关、Agent Run Gateway 与 Compliance（电子证据、时间章、报告、签署 envelope）统一客户端，支持浏览器 / Node ≥18 / Deno / Bun。","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^8.57.0","vitest":"^4.1.7","typedoc":"^0.28.19","prettier":"^3.0.0","typescript":"^5.4.0","@types/node":"^20.0.0","typedoc-plugin-markdown":"^4.11.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-ts_2.6.0_1780833793987_0.3136741783760377","host":"s3://npm-registry-packages-npm-production"}},"2.7.0":{"name":"@acosmi/sdk-ts","version":"2.7.0","keywords":["acosmi","anthropic","openai","llm","sdk","compliance","evidence","timestamp","esignature","claude","crabcode","crabclaw"],"author":{"name":"Acosmi"},"license":"MIT","_id":"@acosmi/sdk-ts@2.7.0","maintainers":[{"name":"acosmi","email":"fushihua@acosmi.com"}],"homepage":"https://github.com/acosmi/sdk-ts#readme","bugs":{"url":"https://github.com/acosmi/sdk-ts/issues"},"dist":{"shasum":"4169ec7218c70391de0a5604274e00f635bfe5bc","tarball":"https://registry.npmjs.org/@acosmi/sdk-ts/-/sdk-ts-2.7.0.tgz","fileCount":47,"integrity":"sha512-Mhf7l8Q0ulRV53AqPLFr6uFLy6izSOyv39A61jxH/UBZNoRNgEIn4OMwFRfXDe+TMPQTJ+KXrlIRmAyX7pe7gQ==","signatures":[{"sig":"MEYCIQDhGP5ICJsWMhvrbUvm8vnMbtYD4ezvXLBrd42r46YW0gIhAOLpkGwJQIhJ72u4vWLKRxbDB7b1Rbhyd1+eElS9yItT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@acosmi%2fsdk-ts@2.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4967801},"main":"./dist/node/index.cjs","type":"module","types":"./dist/node/index.d.ts","module":"./dist/node/index.mjs","engines":{"node":">=18"},"exports":{".":{"deno":"./dist/index.mjs","node":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.mjs","require":"./dist/node/index.cjs"},"types":"./dist/node/index.d.ts","browser":"./dist/browser/index.mjs","default":"./dist/index.mjs"},"./sanitize":{"types":"./dist/node/sanitize/index.d.ts","import":"./dist/node/sanitize/index.mjs","require":"./dist/node/sanitize/index.cjs"},"./package.json":"./package.json","./adapters/openai":{"types":"./dist/node/adapters/openai.d.ts","import":"./dist/node/adapters/openai.mjs","require":"./dist/node/adapters/openai.cjs"},"./adapters/anthropic":{"types":"./dist/node/adapters/anthropic.d.ts","import":"./dist/node/adapters/anthropic.mjs","require":"./dist/node/adapters/anthropic.cjs"}},"gitHead":"9c06be62254f74d4e73a396d4d3a82841211d481","scripts":{"docs":"typedoc","lint":"eslint src --ext .ts","test":"vitest run","build":"tsup","format":"prettier --write \"src/**/*.{ts,json}\"","test:pack":"node scripts/smoke-pack.mjs","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run lint && npm test && npm run build && npm run test:pack && npm run docs"},"_npmUser":{"name":"acosmi","email":"fushihua@acosmi.com"},"repository":{"url":"git+https://github.com/acosmi/sdk-ts.git","type":"git"},"_npmVersion":"11.13.0","description":"Acosmi TypeScript SDK：模型网关、Agent Run Gateway 与 Compliance（电子证据、时间章、报告、签署 envelope）统一客户端，支持浏览器 / Node ≥18 / Deno / Bun。","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^8.57.0","vitest":"^4.1.7","typedoc":"^0.28.19","prettier":"^3.0.0","typescript":"^5.4.0","@types/node":"^20.0.0","typedoc-plugin-markdown":"^4.11.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-ts_2.7.0_1781237392929_0.8581377456137493","host":"s3://npm-registry-packages-npm-production"}},"2.8.0":{"name":"@acosmi/sdk-ts","version":"2.8.0","keywords":["acosmi","anthropic","openai","llm","sdk","compliance","evidence","timestamp","esignature","claude","crabcode","crabclaw"],"author":{"name":"Acosmi"},"license":"MIT","_id":"@acosmi/sdk-ts@2.8.0","maintainers":[{"name":"acosmi","email":"fushihua@acosmi.com"}],"homepage":"https://github.com/acosmi/sdk-ts#readme","bugs":{"url":"https://github.com/acosmi/sdk-ts/issues"},"dist":{"shasum":"5ff9f824ae7c12f4d41789d7718b9c979f8871ac","tarball":"https://registry.npmjs.org/@acosmi/sdk-ts/-/sdk-ts-2.8.0.tgz","fileCount":47,"integrity":"sha512-N3PoVyaddErXb4ES35hvRVWVo0R3ePjRXA2VcmeAsPeg5Yk4AE16o79J/Jl5638qFMINh7/ZS0eDtDrn1u9D9g==","signatures":[{"sig":"MEQCIA0nU+htMtiKjr8oTrVvdGONAkJkoQZ8A87s7Vk8jEc8AiBz4ZAEAtuy9g4knNpBloaR0J0ccMk6VftnKk6Zzw9i9A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@acosmi%2fsdk-ts@2.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4982615},"main":"./dist/node/index.cjs","type":"module","types":"./dist/node/index.d.ts","module":"./dist/node/index.mjs","engines":{"node":">=18"},"exports":{".":{"deno":"./dist/index.mjs","node":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.mjs","require":"./dist/node/index.cjs"},"types":"./dist/node/index.d.ts","browser":"./dist/browser/index.mjs","default":"./dist/index.mjs"},"./sanitize":{"types":"./dist/node/sanitize/index.d.ts","import":"./dist/node/sanitize/index.mjs","require":"./dist/node/sanitize/index.cjs"},"./package.json":"./package.json","./adapters/openai":{"types":"./dist/node/adapters/openai.d.ts","import":"./dist/node/adapters/openai.mjs","require":"./dist/node/adapters/openai.cjs"},"./adapters/anthropic":{"types":"./dist/node/adapters/anthropic.d.ts","import":"./dist/node/adapters/anthropic.mjs","require":"./dist/node/adapters/anthropic.cjs"}},"gitHead":"8a297e3dfe39ed74930757d970882c7f48e46798","scripts":{"docs":"typedoc","lint":"eslint src --ext .ts","test":"vitest run","build":"tsup","format":"prettier --write \"src/**/*.{ts,json}\"","test:pack":"node scripts/smoke-pack.mjs","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run lint && npm test && npm run build && npm run test:pack && npm run docs"},"_npmUser":{"name":"acosmi","email":"fushihua@acosmi.com"},"repository":{"url":"git+https://github.com/acosmi/sdk-ts.git","type":"git"},"_npmVersion":"11.13.0","description":"Acosmi TypeScript SDK：模型网关、Agent Run Gateway 与 Compliance（电子证据、时间章、报告、签署 envelope）统一客户端，支持浏览器 / Node ≥18 / Deno / Bun。","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^8.57.0","vitest":"^4.1.7","typedoc":"^0.28.19","prettier":"^3.0.0","typescript":"^5.4.0","@types/node":"^20.0.0","typedoc-plugin-markdown":"^4.11.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-ts_2.8.0_1781620135603_0.5225555573454697","host":"s3://npm-registry-packages-npm-production"}},"2.9.0":{"name":"@acosmi/sdk-ts","version":"2.9.0","keywords":["acosmi","anthropic","openai","llm","sdk","compliance","evidence","timestamp","esignature","claude","crabcode","crabclaw"],"author":{"name":"Acosmi"},"license":"MIT","_id":"@acosmi/sdk-ts@2.9.0","maintainers":[{"name":"acosmi","email":"fushihua@acosmi.com"}],"homepage":"https://github.com/acosmi/sdk-ts#readme","bugs":{"url":"https://github.com/acosmi/sdk-ts/issues"},"dist":{"shasum":"fbecbcbac52ba61341019fee39baf8d06e3e8448","tarball":"https://registry.npmjs.org/@acosmi/sdk-ts/-/sdk-ts-2.9.0.tgz","fileCount":47,"integrity":"sha512-KBHP5POMLKpQ28OrLqUWi78lNIuEm99l3Yp+p78IHYgeGzk8bmbx3eqoAZmK2/CSu5fjwKq1DNwzPXtECMkdmA==","signatures":[{"sig":"MEUCIQCGyJBJOf7mGEswuI8lZyE9QLtan4awigDZFN2RUFaQigIgFdpFUfFM6bNaIaCCgl2pjqdtu675jypp5cJS9hRsegc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@acosmi%2fsdk-ts@2.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5034632},"main":"./dist/node/index.cjs","type":"module","types":"./dist/node/index.d.ts","module":"./dist/node/index.mjs","engines":{"node":">=18"},"exports":{".":{"deno":"./dist/index.mjs","node":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.mjs","require":"./dist/node/index.cjs"},"types":"./dist/node/index.d.ts","browser":"./dist/browser/index.mjs","default":"./dist/index.mjs"},"./sanitize":{"types":"./dist/node/sanitize/index.d.ts","import":"./dist/node/sanitize/index.mjs","require":"./dist/node/sanitize/index.cjs"},"./package.json":"./package.json","./adapters/openai":{"types":"./dist/node/adapters/openai.d.ts","import":"./dist/node/adapters/openai.mjs","require":"./dist/node/adapters/openai.cjs"},"./adapters/anthropic":{"types":"./dist/node/adapters/anthropic.d.ts","import":"./dist/node/adapters/anthropic.mjs","require":"./dist/node/adapters/anthropic.cjs"}},"gitHead":"a342921de95db8e920c86d23694719e6ad7cbebf","scripts":{"docs":"typedoc","lint":"eslint src --ext .ts","test":"vitest run","build":"tsup","format":"prettier --write \"src/**/*.{ts,json}\"","test:pack":"node scripts/smoke-pack.mjs","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run lint && npm test && npm run build && npm run test:pack && npm run docs"},"_npmUser":{"name":"acosmi","email":"fushihua@acosmi.com"},"repository":{"url":"git+https://github.com/acosmi/sdk-ts.git","type":"git"},"_npmVersion":"11.13.0","description":"Acosmi TypeScript SDK：模型网关、Agent Run Gateway 与 Compliance（电子证据、时间章、报告、签署 envelope）统一客户端，支持浏览器 / Node ≥18 / Deno / Bun。","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^8.57.0","vitest":"^4.1.7","typedoc":"^0.28.19","prettier":"^3.0.0","typescript":"^5.4.0","@types/node":"^20.0.0","typedoc-plugin-markdown":"^4.11.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-ts_2.9.0_1781966155758_0.17484252768675512","host":"s3://npm-registry-packages-npm-production"}},"2.10.0":{"name":"@acosmi/sdk-ts","version":"2.10.0","keywords":["acosmi","anthropic","openai","llm","sdk","compliance","evidence","timestamp","esignature","claude","crabcode","crabclaw"],"author":{"name":"Acosmi"},"license":"MIT","_id":"@acosmi/sdk-ts@2.10.0","maintainers":[{"name":"acosmi","email":"fushihua@acosmi.com"}],"homepage":"https://github.com/acosmi/sdk-ts#readme","bugs":{"url":"https://github.com/acosmi/sdk-ts/issues"},"dist":{"shasum":"c5cc4091ec1c91f6bde8b60714e033a7c6e5bbac","tarball":"https://registry.npmjs.org/@acosmi/sdk-ts/-/sdk-ts-2.10.0.tgz","fileCount":47,"integrity":"sha512-hLCn/FOBhHtbowNcbXkw03jjl2BBWJ3viLgWL+objuTIdJJUuobpAbi8JCE2kkf5/KUfjkHg6E2T775RJeocVg==","signatures":[{"sig":"MEUCIQDUtpZM269Jzdz2GMHv1IqDqYyYO4o/Xw93jishJH8aBgIgeJE+ot0EjE4mqtG+XPLkSutRaYkwHtuPbTKS380gPFM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@acosmi%2fsdk-ts@2.10.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5055614},"main":"./dist/node/index.cjs","type":"module","types":"./dist/node/index.d.ts","module":"./dist/node/index.mjs","engines":{"node":">=18"},"exports":{".":{"deno":"./dist/index.mjs","node":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.mjs","require":"./dist/node/index.cjs"},"types":"./dist/node/index.d.ts","browser":"./dist/browser/index.mjs","default":"./dist/index.mjs"},"./sanitize":{"types":"./dist/node/sanitize/index.d.ts","import":"./dist/node/sanitize/index.mjs","require":"./dist/node/sanitize/index.cjs"},"./package.json":"./package.json","./adapters/openai":{"types":"./dist/node/adapters/openai.d.ts","import":"./dist/node/adapters/openai.mjs","require":"./dist/node/adapters/openai.cjs"},"./adapters/anthropic":{"types":"./dist/node/adapters/anthropic.d.ts","import":"./dist/node/adapters/anthropic.mjs","require":"./dist/node/adapters/anthropic.cjs"}},"gitHead":"df43f9a3f5f497f700436644ef5342cedde60562","scripts":{"docs":"typedoc","lint":"eslint src --ext .ts","test":"vitest run","build":"tsup","format":"prettier --write \"src/**/*.{ts,json}\"","test:pack":"node scripts/smoke-pack.mjs","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run lint && npm test && npm run build && npm run test:pack && npm run docs"},"_npmUser":{"name":"acosmi","email":"fushihua@acosmi.com"},"repository":{"url":"git+https://github.com/acosmi/sdk-ts.git","type":"git"},"_npmVersion":"11.13.0","description":"Acosmi TypeScript SDK：模型网关、Agent Run Gateway 与 Compliance（电子证据、时间章、报告、签署 envelope）统一客户端，支持浏览器 / Node ≥18 / Deno / Bun。","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^8.57.0","vitest":"^4.1.7","typedoc":"^0.28.19","prettier":"^3.0.0","typescript":"^5.4.0","@types/node":"^20.0.0","typedoc-plugin-markdown":"^4.11.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-ts_2.10.0_1781974545136_0.9996392883647207","host":"s3://npm-registry-packages-npm-production"}},"2.11.0":{"name":"@acosmi/sdk-ts","version":"2.11.0","keywords":["acosmi","anthropic","openai","llm","sdk","compliance","evidence","timestamp","esignature","claude","crabcode","crabclaw"],"author":{"name":"Acosmi"},"license":"MIT","_id":"@acosmi/sdk-ts@2.11.0","maintainers":[{"name":"acosmi","email":"fushihua@acosmi.com"}],"homepage":"https://github.com/acosmi/sdk-ts#readme","bugs":{"url":"https://github.com/acosmi/sdk-ts/issues"},"dist":{"shasum":"7c3eea97ec1f76eda2fa6644d40e9c5d13c38f01","tarball":"https://registry.npmjs.org/@acosmi/sdk-ts/-/sdk-ts-2.11.0.tgz","fileCount":47,"integrity":"sha512-E9GctRFGU1z48d8UBxcijLdpyapOwZGlhrhtoaywTmOq0jql1VAfxDzz2c/YCd92NvIbyTiVkRpIO78MPb3LFQ==","signatures":[{"sig":"MEUCIQDjcEdlTE2v3LrpjiZSJUjG6PiFMu5GnGe/wLo8fU7k4gIgGGV31ZPLvHLg1d+VsR149FvGm8i0a9Bq5u4bRdjM0eE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@acosmi%2fsdk-ts@2.11.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5116058},"main":"./dist/node/index.cjs","type":"module","types":"./dist/node/index.d.ts","module":"./dist/node/index.mjs","engines":{"node":">=18"},"exports":{".":{"deno":"./dist/index.mjs","node":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.mjs","require":"./dist/node/index.cjs"},"types":"./dist/node/index.d.ts","browser":"./dist/browser/index.mjs","default":"./dist/index.mjs"},"./sanitize":{"types":"./dist/node/sanitize/index.d.ts","import":"./dist/node/sanitize/index.mjs","require":"./dist/node/sanitize/index.cjs"},"./package.json":"./package.json","./adapters/openai":{"types":"./dist/node/adapters/openai.d.ts","import":"./dist/node/adapters/openai.mjs","require":"./dist/node/adapters/openai.cjs"},"./adapters/anthropic":{"types":"./dist/node/adapters/anthropic.d.ts","import":"./dist/node/adapters/anthropic.mjs","require":"./dist/node/adapters/anthropic.cjs"}},"gitHead":"97acb32a60f9015aa5da6f8222223ff839b87c3d","scripts":{"docs":"typedoc","lint":"eslint src --ext .ts","test":"vitest run","build":"tsup","format":"prettier --write \"src/**/*.{ts,json}\"","test:pack":"node scripts/smoke-pack.mjs","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run lint && npm test && npm run build && npm run test:pack && npm run docs"},"_npmUser":{"name":"acosmi","email":"fushihua@acosmi.com"},"repository":{"url":"git+https://github.com/acosmi/sdk-ts.git","type":"git"},"_npmVersion":"11.16.0","description":"Acosmi TypeScript SDK：模型网关、Agent Run Gateway 与 Compliance（电子证据、时间章、报告、签署 envelope）统一客户端，支持浏览器 / Node ≥18 / Deno / Bun。","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^8.57.0","vitest":"^4.1.7","typedoc":"^0.28.19","prettier":"^3.0.0","typescript":"^5.4.0","@types/node":"^20.0.0","typedoc-plugin-markdown":"^4.11.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-ts_2.11.0_1783685543849_0.7068811741319008","host":"s3://npm-registry-packages-npm-production"}},"2.12.0":{"name":"@acosmi/sdk-ts","version":"2.12.0","keywords":["acosmi","anthropic","openai","llm","sdk","compliance","evidence","timestamp","esignature","claude","crabcode","crabclaw"],"author":{"name":"Acosmi"},"license":"MIT","_id":"@acosmi/sdk-ts@2.12.0","maintainers":[{"name":"acosmi","email":"fushihua@acosmi.com"}],"homepage":"https://github.com/acosmi/sdk-ts#readme","bugs":{"url":"https://github.com/acosmi/sdk-ts/issues"},"dist":{"shasum":"6b21259abeb9b33a882e104610710972f6427a58","tarball":"https://registry.npmjs.org/@acosmi/sdk-ts/-/sdk-ts-2.12.0.tgz","fileCount":47,"integrity":"sha512-lDzD3kmzCykvDsj8/oTwJseogD7HQ4cepM1zUtM3J1SynUc2G/71mrSTBifpCiRUVrbfM/gOPHzLTztYX9e2WQ==","signatures":[{"sig":"MEQCIDjW7LnPXCdQi4Ix8R843djf87R1fuQ2j3LtQZNW/KvMAiB0FysIqY+xg2G94IDdpEbpOBC7pdR5RmLoGcaXRlL3fw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@acosmi%2fsdk-ts@2.12.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5167147},"main":"./dist/node/index.cjs","type":"module","types":"./dist/node/index.d.ts","module":"./dist/node/index.mjs","engines":{"node":">=18"},"exports":{".":{"deno":"./dist/index.mjs","node":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.mjs","require":"./dist/node/index.cjs"},"types":"./dist/node/index.d.ts","browser":"./dist/browser/index.mjs","default":"./dist/index.mjs"},"./sanitize":{"types":"./dist/node/sanitize/index.d.ts","import":"./dist/node/sanitize/index.mjs","require":"./dist/node/sanitize/index.cjs"},"./package.json":"./package.json","./adapters/openai":{"types":"./dist/node/adapters/openai.d.ts","import":"./dist/node/adapters/openai.mjs","require":"./dist/node/adapters/openai.cjs"},"./adapters/anthropic":{"types":"./dist/node/adapters/anthropic.d.ts","import":"./dist/node/adapters/anthropic.mjs","require":"./dist/node/adapters/anthropic.cjs"}},"gitHead":"75631917049b13b0258ef47ca7256cedcbfbd812","scripts":{"docs":"typedoc","lint":"eslint src --ext .ts","test":"vitest run","build":"tsup","format":"prettier --write \"src/**/*.{ts,json}\"","test:pack":"node scripts/smoke-pack.mjs","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run lint && npm test && npm run build && npm run test:pack && npm run docs"},"_npmUser":{"name":"acosmi","email":"fushihua@acosmi.com"},"repository":{"url":"git+https://github.com/acosmi/sdk-ts.git","type":"git"},"_npmVersion":"11.16.0","description":"Acosmi TypeScript SDK：模型网关、Agent Run Gateway 与 Compliance（电子证据、时间章、报告、签署 envelope）统一客户端，支持浏览器 / Node ≥18 / Deno / Bun。","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^8.57.0","vitest":"^4.1.7","typedoc":"^0.28.19","prettier":"^3.0.0","typescript":"^5.4.0","@types/node":"^20.0.0","typedoc-plugin-markdown":"^4.11.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-ts_2.12.0_1783772513091_0.37550449168776945","host":"s3://npm-registry-packages-npm-production"}},"2.13.0":{"name":"@acosmi/sdk-ts","version":"2.13.0","keywords":["acosmi","anthropic","openai","llm","sdk","compliance","evidence","timestamp","esignature","claude","crabcode","crabclaw"],"author":{"name":"Acosmi"},"license":"MIT","_id":"@acosmi/sdk-ts@2.13.0","maintainers":[{"name":"acosmi","email":"fushihua@acosmi.com"}],"homepage":"https://github.com/acosmi/sdk-ts#readme","bugs":{"url":"https://github.com/acosmi/sdk-ts/issues"},"dist":{"shasum":"09875263f1d4ca1b88b7725bd3a9930429f2ec50","tarball":"https://registry.npmjs.org/@acosmi/sdk-ts/-/sdk-ts-2.13.0.tgz","fileCount":47,"integrity":"sha512-F8TGuqed736SV+YAIlFNqGqYCB0w1edy2Jn9EIMDPkEiS7k5m+DQw0VLreawIstjfqJr4ZJN+PlmoYcpiwsGcQ==","signatures":[{"sig":"MEQCIDEQl7DDyWQtBuMqAKpGFHYevyceGJfVUJ64nDPprE/MAiAgOC4dkF093DRBCYXBSkR3Q1siPNlytEU8L6TqR5pbpg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@acosmi%2fsdk-ts@2.13.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5203086},"main":"./dist/node/index.cjs","type":"module","types":"./dist/node/index.d.ts","module":"./dist/node/index.mjs","engines":{"node":">=18"},"exports":{".":{"deno":"./dist/index.mjs","node":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.mjs","require":"./dist/node/index.cjs"},"types":"./dist/node/index.d.ts","browser":"./dist/browser/index.mjs","default":"./dist/index.mjs"},"./sanitize":{"types":"./dist/node/sanitize/index.d.ts","import":"./dist/node/sanitize/index.mjs","require":"./dist/node/sanitize/index.cjs"},"./package.json":"./package.json","./adapters/openai":{"types":"./dist/node/adapters/openai.d.ts","import":"./dist/node/adapters/openai.mjs","require":"./dist/node/adapters/openai.cjs"},"./adapters/anthropic":{"types":"./dist/node/adapters/anthropic.d.ts","import":"./dist/node/adapters/anthropic.mjs","require":"./dist/node/adapters/anthropic.cjs"}},"gitHead":"9f17a8a8c2d3dd17c18a2b5f7ecd87c48e727e91","scripts":{"docs":"typedoc","lint":"eslint src --ext .ts","test":"vitest run","build":"tsup","format":"prettier --write \"src/**/*.{ts,json}\"","test:pack":"node scripts/smoke-pack.mjs","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run lint && npm test && npm run build && npm run test:pack && npm run docs"},"_npmUser":{"name":"acosmi","email":"fushihua@acosmi.com"},"repository":{"url":"git+https://github.com/acosmi/sdk-ts.git","type":"git"},"_npmVersion":"11.16.0","description":"Acosmi TypeScript SDK：模型网关、Agent Run Gateway 与 Compliance（电子证据、时间章、报告、签署 envelope）统一客户端，支持浏览器 / Node ≥18 / Deno / Bun。","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^8.57.0","vitest":"^4.1.7","typedoc":"^0.28.19","prettier":"^3.0.0","typescript":"^5.4.0","@types/node":"^20.0.0","typedoc-plugin-markdown":"^4.11.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-ts_2.13.0_1785643056965_0.20100812164503257","host":"s3://npm-registry-packages-npm-production"}},"2.14.0":{"name":"@acosmi/sdk-ts","version":"2.14.0","keywords":["acosmi","anthropic","openai","llm","sdk","compliance","evidence","timestamp","esignature","claude","crabcode","crabclaw"],"author":{"name":"Acosmi"},"license":"MIT","_id":"@acosmi/sdk-ts@2.14.0","maintainers":[{"name":"acosmi","email":"fushihua@acosmi.com"}],"homepage":"https://github.com/acosmi/sdk-ts#readme","bugs":{"url":"https://github.com/acosmi/sdk-ts/issues"},"dist":{"shasum":"5559f189bbc9828745190211cecdfddbcf79245c","tarball":"https://registry.npmjs.org/@acosmi/sdk-ts/-/sdk-ts-2.14.0.tgz","fileCount":47,"integrity":"sha512-aO6N/OQUmWpPIRRu9bdy11cQMH5yQhED/ekv4HukbH6bp7b5/SYtmP+YuRSX8wN0qK0WfQT3CpB6LZbH/y+CtQ==","signatures":[{"sig":"MEYCIQDkcQaTXUpmaeK9emDI5XmaMtrRn2yPGEmUu+AaeDOGugIhANqcEwoCrBUx43hLn/+ruhan5djIbRvRH9zc0Z4qc18K","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@acosmi%2fsdk-ts@2.14.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5226444},"main":"./dist/node/index.cjs","type":"module","types":"./dist/node/index.d.ts","module":"./dist/node/index.mjs","engines":{"node":">=18"},"exports":{".":{"deno":"./dist/index.mjs","node":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.mjs","require":"./dist/node/index.cjs"},"types":"./dist/node/index.d.ts","browser":"./dist/browser/index.mjs","default":"./dist/index.mjs"},"./sanitize":{"types":"./dist/node/sanitize/index.d.ts","import":"./dist/node/sanitize/index.mjs","require":"./dist/node/sanitize/index.cjs"},"./package.json":"./package.json","./adapters/openai":{"types":"./dist/node/adapters/openai.d.ts","import":"./dist/node/adapters/openai.mjs","require":"./dist/node/adapters/openai.cjs"},"./adapters/anthropic":{"types":"./dist/node/adapters/anthropic.d.ts","import":"./dist/node/adapters/anthropic.mjs","require":"./dist/node/adapters/anthropic.cjs"}},"gitHead":"fd7cfd48bee9327554de62418d451a267e84a85c","scripts":{"docs":"typedoc","lint":"eslint src --ext .ts","test":"vitest run","build":"tsup","format":"prettier --write \"src/**/*.{ts,json}\"","test:pack":"node scripts/smoke-pack.mjs","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run lint && npm test && npm run build && npm run test:pack && npm run docs"},"_npmUser":{"name":"acosmi","email":"fushihua@acosmi.com"},"repository":{"url":"git+https://github.com/acosmi/sdk-ts.git","type":"git"},"_npmVersion":"11.16.0","description":"Acosmi TypeScript SDK：模型网关、Agent Run Gateway 与 Compliance（电子证据、时间章、报告、签署 envelope）统一客户端，支持浏览器 / Node ≥18 / Deno / Bun。","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^8.57.0","vitest":"^4.1.7","typedoc":"^0.28.19","prettier":"^3.0.0","typescript":"^5.4.0","@types/node":"^20.0.0","typedoc-plugin-markdown":"^4.11.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-ts_2.14.0_1785674665916_0.7750819086460294","host":"s3://npm-registry-packages-npm-production"}},"2.15.0":{"name":"@acosmi/sdk-ts","version":"2.15.0","keywords":["acosmi","anthropic","openai","llm","sdk","compliance","evidence","timestamp","esignature","claude","crabcode","crabclaw"],"author":{"name":"Acosmi"},"license":"MIT","_id":"@acosmi/sdk-ts@2.15.0","maintainers":[{"name":"acosmi","email":"fushihua@acosmi.com"}],"homepage":"https://github.com/acosmi/sdk-ts#readme","bugs":{"url":"https://github.com/acosmi/sdk-ts/issues"},"dist":{"shasum":"5e80a60d0e84f907353cfa9e6f2bd6d2f339ac32","tarball":"https://registry.npmjs.org/@acosmi/sdk-ts/-/sdk-ts-2.15.0.tgz","fileCount":47,"integrity":"sha512-Z3b35Im/+AwcFmyeleMfAKu12EweQrwqR5ffjTkZyxnQKfAZ5TjffemxcJobV4qh17/PiyFGg4RPEwE/qyMUHA==","signatures":[{"sig":"MEQCIBprG3Rtm0PW8WnrnervyjEU986GYbq+ctSJRb6TJC6cAiAZNVCmOF9DqsjvcV064vAJwBajH9OXEXHO5NkokosMbw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@acosmi%2fsdk-ts@2.15.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5280721},"main":"./dist/node/index.cjs","type":"module","types":"./dist/node/index.d.ts","module":"./dist/node/index.mjs","engines":{"node":">=18"},"exports":{".":{"deno":"./dist/index.mjs","node":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.mjs","require":"./dist/node/index.cjs"},"types":"./dist/node/index.d.ts","browser":"./dist/browser/index.mjs","default":"./dist/index.mjs"},"./sanitize":{"types":"./dist/node/sanitize/index.d.ts","import":"./dist/node/sanitize/index.mjs","require":"./dist/node/sanitize/index.cjs"},"./package.json":"./package.json","./adapters/openai":{"types":"./dist/node/adapters/openai.d.ts","import":"./dist/node/adapters/openai.mjs","require":"./dist/node/adapters/openai.cjs"},"./adapters/anthropic":{"types":"./dist/node/adapters/anthropic.d.ts","import":"./dist/node/adapters/anthropic.mjs","require":"./dist/node/adapters/anthropic.cjs"}},"gitHead":"2f42ddb3b9d503373e143748784c22ff5888f6f4","scripts":{"docs":"typedoc","lint":"eslint src --ext .ts","test":"vitest run","build":"tsup","format":"prettier --write \"src/**/*.{ts,json}\"","test:pack":"node scripts/smoke-pack.mjs","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run lint && npm test && npm run build && npm run test:pack && npm run docs"},"_npmUser":{"name":"acosmi","email":"fushihua@acosmi.com"},"repository":{"url":"git+https://github.com/acosmi/sdk-ts.git","type":"git"},"_npmVersion":"11.16.0","description":"Acosmi TypeScript SDK：模型网关、Agent Run Gateway 与 Compliance（电子证据、时间章、报告、签署 envelope）统一客户端，支持浏览器 / Node ≥18 / Deno / Bun。","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^8.57.0","vitest":"^4.1.7","typedoc":"^0.28.19","prettier":"^3.0.0","typescript":"^5.4.0","@types/node":"^20.0.0","typedoc-plugin-markdown":"^4.11.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-ts_2.15.0_1785742024894_0.3662002663484125","host":"s3://npm-registry-packages-npm-production"}},"2.16.0":{"name":"@acosmi/sdk-ts","version":"2.16.0","keywords":["acosmi","anthropic","openai","llm","sdk","compliance","evidence","timestamp","esignature","claude","crabcode","crabclaw"],"author":{"name":"Acosmi"},"license":"MIT","_id":"@acosmi/sdk-ts@2.16.0","maintainers":[{"name":"acosmi","email":"fushihua@acosmi.com"}],"homepage":"https://github.com/acosmi/sdk-ts#readme","bugs":{"url":"https://github.com/acosmi/sdk-ts/issues"},"dist":{"shasum":"8d1871317dbf2437a17a55f324787a48290d8e6f","tarball":"https://registry.npmjs.org/@acosmi/sdk-ts/-/sdk-ts-2.16.0.tgz","fileCount":47,"integrity":"sha512-5B+LWJxegLrmOyyyBClZ+LPabDbfrwxF2o9ZGgi8M2ArI0VUFt2hYknvAms3JsQxokr7O0L3VSaOd7OJvuapWA==","signatures":[{"sig":"MEQCIFL6U89KFXzCWA2c4TlZ42bgfzkrv/VYVEaHKzIyY+o7AiBpCBvCE+5gzUU1AhtzlB06aBWK+eyt/wmm2jUnkIIq7w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@acosmi%2fsdk-ts@2.16.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5330028},"main":"./dist/node/index.cjs","type":"module","types":"./dist/node/index.d.ts","module":"./dist/node/index.mjs","engines":{"node":">=18"},"exports":{".":{"deno":"./dist/index.mjs","node":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.mjs","require":"./dist/node/index.cjs"},"types":"./dist/node/index.d.ts","browser":"./dist/browser/index.mjs","default":"./dist/index.mjs"},"./sanitize":{"types":"./dist/node/sanitize/index.d.ts","import":"./dist/node/sanitize/index.mjs","require":"./dist/node/sanitize/index.cjs"},"./package.json":"./package.json","./adapters/openai":{"types":"./dist/node/adapters/openai.d.ts","import":"./dist/node/adapters/openai.mjs","require":"./dist/node/adapters/openai.cjs"},"./adapters/anthropic":{"types":"./dist/node/adapters/anthropic.d.ts","import":"./dist/node/adapters/anthropic.mjs","require":"./dist/node/adapters/anthropic.cjs"}},"gitHead":"4b0d81b0ee8290fc2841f746086a053cd7d7a6ed","scripts":{"docs":"typedoc","lint":"eslint src --ext .ts","test":"vitest run","build":"tsup","format":"prettier --write \"src/**/*.{ts,json}\"","test:pack":"node scripts/smoke-pack.mjs","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run lint && npm test && npm run build && npm run test:pack && npm run docs"},"_npmUser":{"name":"acosmi","email":"fushihua@acosmi.com"},"repository":{"url":"git+https://github.com/acosmi/sdk-ts.git","type":"git"},"_npmVersion":"11.16.0","description":"Acosmi TypeScript SDK：模型网关、Agent Run Gateway 与 Compliance（电子证据、时间章、报告、签署 envelope）统一客户端，支持浏览器 / Node ≥18 / Deno / Bun。","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^8.57.0","vitest":"^4.1.7","typedoc":"^0.28.19","prettier":"^3.0.0","typescript":"^5.4.0","@types/node":"^20.0.0","typedoc-plugin-markdown":"^4.11.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-ts_2.16.0_1786038598576_0.01787003978798074","host":"s3://npm-registry-packages-npm-production"}},"2.17.0":{"name":"@acosmi/sdk-ts","version":"2.17.0","keywords":["acosmi","anthropic","openai","llm","sdk","compliance","evidence","timestamp","esignature","claude","crabcode","crabclaw"],"author":{"name":"Acosmi"},"license":"MIT","_id":"@acosmi/sdk-ts@2.17.0","maintainers":[{"name":"acosmi","email":"fushihua@acosmi.com"}],"homepage":"https://github.com/acosmi/sdk-ts#readme","bugs":{"url":"https://github.com/acosmi/sdk-ts/issues"},"dist":{"shasum":"71efa7f66a39e06dfb40926f450990dac3ad9cf2","tarball":"https://registry.npmjs.org/@acosmi/sdk-ts/-/sdk-ts-2.17.0.tgz","fileCount":47,"integrity":"sha512-8fvkhaSFlAy3YN13Zt9QH/u8u28Khpl4V63CLa/gGpU4Fhy1RzUIGC10TPctRdQkWG5pXSZdFpRYiu1jUBrgEA==","signatures":[{"sig":"MEUCIQCAKMlWWh57RnhP8UbLsHwhfTzMGj5AhZR17COU0VyAlQIgdHEXwV4tRsynZsuTLbJOG28cy6Hdoy3Q2ocTbXpAmYA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@acosmi%2fsdk-ts@2.17.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5359799},"main":"./dist/node/index.cjs","type":"module","types":"./dist/node/index.d.ts","module":"./dist/node/index.mjs","engines":{"node":">=18"},"exports":{".":{"deno":"./dist/index.mjs","node":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.mjs","require":"./dist/node/index.cjs"},"types":"./dist/node/index.d.ts","browser":"./dist/browser/index.mjs","default":"./dist/index.mjs"},"./sanitize":{"types":"./dist/node/sanitize/index.d.ts","import":"./dist/node/sanitize/index.mjs","require":"./dist/node/sanitize/index.cjs"},"./package.json":"./package.json","./adapters/openai":{"types":"./dist/node/adapters/openai.d.ts","import":"./dist/node/adapters/openai.mjs","require":"./dist/node/adapters/openai.cjs"},"./adapters/anthropic":{"types":"./dist/node/adapters/anthropic.d.ts","import":"./dist/node/adapters/anthropic.mjs","require":"./dist/node/adapters/anthropic.cjs"}},"gitHead":"6139b2d1b24cb2da3d4f925ed17ad91f3dc4c81d","scripts":{"docs":"typedoc","lint":"eslint src --ext .ts","test":"vitest run","build":"tsup","format":"prettier --write \"src/**/*.{ts,json}\"","test:pack":"node scripts/smoke-pack.mjs","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run lint && npm test && npm run build && npm run test:pack && npm run docs"},"_npmUser":{"name":"acosmi","email":"fushihua@acosmi.com"},"overrides":{"esbuild@>=0.27.3 <0.28.1":"^0.28.2"},"repository":{"url":"git+https://github.com/acosmi/sdk-ts.git","type":"git"},"_npmVersion":"11.17.0","description":"Acosmi TypeScript SDK：模型网关、Agent Run Gateway 与 Compliance（电子证据、时间章、报告、签署 envelope）统一客户端，支持浏览器 / Node ≥18 / Deno / Bun。","directories":{},"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^8.57.0","vitest":"^4.1.7","typedoc":"^0.28.19","prettier":"^3.0.0","typescript":"^5.4.0","@types/node":"^20.0.0","typedoc-plugin-markdown":"^4.11.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-ts_2.17.0_1786815952976_0.7459632862156818","host":"s3://npm-registry-packages-npm-production"}},"2.18.0":{"name":"@acosmi/sdk-ts","version":"2.18.0","keywords":["acosmi","anthropic","openai","llm","sdk","compliance","evidence","timestamp","esignature","claude","crabcode","crabclaw"],"author":{"name":"Acosmi"},"license":"MIT","_id":"@acosmi/sdk-ts@2.18.0","maintainers":[{"name":"acosmi","email":"fushihua@acosmi.com"}],"homepage":"https://github.com/acosmi/sdk-ts#readme","bugs":{"url":"https://github.com/acosmi/sdk-ts/issues"},"dist":{"shasum":"4a2f4a6de0e5abeffa1705e8239cf0d2cbacbad9","tarball":"https://registry.npmjs.org/@acosmi/sdk-ts/-/sdk-ts-2.18.0.tgz","fileCount":47,"integrity":"sha512-TnTyYxKCjWpm1JRyF7z1Ho7be65UtqBga35FE6LQ5DEDFrH5T0DUVhSm+dsuem2k3bSbp11LFo10TcfQcj/WSA==","signatures":[{"sig":"MEQCIFBMqVIW9Fzvx9lwReFzYSFqZCBsj6QmUkqlyQg3aVJbAiA0zp3KG0ahycyRuXGHCtNARgIRGlYpwYj1Im5u4OfX8g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@acosmi%2fsdk-ts@2.18.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5370709},"main":"./dist/node/index.cjs","type":"module","types":"./dist/node/index.d.ts","module":"./dist/node/index.mjs","engines":{"node":">=18"},"exports":{".":{"deno":"./dist/index.mjs","node":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.mjs","require":"./dist/node/index.cjs"},"types":"./dist/node/index.d.ts","browser":"./dist/browser/index.mjs","default":"./dist/index.mjs"},"./sanitize":{"types":"./dist/node/sanitize/index.d.ts","import":"./dist/node/sanitize/index.mjs","require":"./dist/node/sanitize/index.cjs"},"./package.json":"./package.json","./adapters/openai":{"types":"./dist/node/adapters/openai.d.ts","import":"./dist/node/adapters/openai.mjs","require":"./dist/node/adapters/openai.cjs"},"./adapters/anthropic":{"types":"./dist/node/adapters/anthropic.d.ts","import":"./dist/node/adapters/anthropic.mjs","require":"./dist/node/adapters/anthropic.cjs"}},"gitHead":"ee5226b35f3cc1ce531be876fbbd9b2c12d360ac","scripts":{"docs":"typedoc","lint":"eslint src --ext .ts","test":"vitest run","build":"tsup","format":"prettier --write \"src/**/*.{ts,json}\"","test:pack":"node scripts/smoke-pack.mjs","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run lint && npm test && npm run build && npm run test:pack && npm run docs"},"_npmUser":{"name":"acosmi","email":"fushihua@acosmi.com"},"overrides":{"esbuild@>=0.27.3 <0.28.1":"^0.28.2"},"repository":{"url":"git+https://github.com/acosmi/sdk-ts.git","type":"git"},"_npmVersion":"11.17.0","description":"Acosmi TypeScript SDK：模型网关、Agent Run Gateway 与 Compliance（电子证据、时间章、报告、签署 envelope）统一客户端，支持浏览器 / Node ≥18 / Deno / Bun。","directories":{},"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^8.57.0","vitest":"^4.1.7","typedoc":"^0.28.19","prettier":"^3.0.0","typescript":"^5.4.0","@types/node":"^20.0.0","typedoc-plugin-markdown":"^4.11.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-ts_2.18.0_1788062202898_0.30890229161325444","host":"s3://npm-registry-packages-npm-production"}},"2.19.0":{"name":"@acosmi/sdk-ts","version":"2.19.0","keywords":["acosmi","anthropic","openai","llm","sdk","compliance","evidence","timestamp","esignature","claude","crabcode","crabclaw"],"author":{"name":"Acosmi"},"license":"MIT","_id":"@acosmi/sdk-ts@2.19.0","maintainers":[{"name":"acosmi","email":"fushihua@acosmi.com"}],"homepage":"https://github.com/acosmi/sdk-ts#readme","bugs":{"url":"https://github.com/acosmi/sdk-ts/issues"},"dist":{"shasum":"e74717f05e457e824d9f9cc257e4b1f46c9fda34","tarball":"https://registry.npmjs.org/@acosmi/sdk-ts/-/sdk-ts-2.19.0.tgz","fileCount":47,"integrity":"sha512-RwKWNKQhXBbdSxiUM38Be+0hqeN1V1xyucL2RtzQDWTA1dRc9lJaO42SUlJdU+yRT2xhpSbdd8ZkWMUlglfBdw==","signatures":[{"sig":"MEUCIQDifDtDYXpEET7WnvWtag2n1G7i6RHqpe1zHgU9wwjw3AIgBfXiU6L9czeOFe2+k2xNXfdBDYRtZn8hSIZusxch5CY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@acosmi%2fsdk-ts@2.19.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5403934},"main":"./dist/node/index.cjs","type":"module","types":"./dist/node/index.d.ts","module":"./dist/node/index.mjs","engines":{"node":">=18"},"exports":{".":{"deno":"./dist/index.mjs","node":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.mjs","require":"./dist/node/index.cjs"},"types":"./dist/node/index.d.ts","browser":"./dist/browser/index.mjs","default":"./dist/index.mjs"},"./sanitize":{"types":"./dist/node/sanitize/index.d.ts","import":"./dist/node/sanitize/index.mjs","require":"./dist/node/sanitize/index.cjs"},"./package.json":"./package.json","./adapters/openai":{"types":"./dist/node/adapters/openai.d.ts","import":"./dist/node/adapters/openai.mjs","require":"./dist/node/adapters/openai.cjs"},"./adapters/anthropic":{"types":"./dist/node/adapters/anthropic.d.ts","import":"./dist/node/adapters/anthropic.mjs","require":"./dist/node/adapters/anthropic.cjs"}},"gitHead":"d245a7b003f286ee5fe5d513d3b6746ecd63664c","scripts":{"docs":"typedoc","lint":"eslint src --ext .ts","test":"vitest run","build":"tsup","format":"prettier --write \"src/**/*.{ts,json}\"","test:pack":"node scripts/smoke-pack.mjs","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run lint && npm test && npm run build && npm run test:pack && npm run docs"},"_npmUser":{"name":"acosmi","email":"fushihua@acosmi.com"},"overrides":{"esbuild@>=0.27.3 <0.28.1":"^0.28.2"},"repository":{"url":"git+https://github.com/acosmi/sdk-ts.git","type":"git"},"_npmVersion":"11.17.0","description":"Acosmi TypeScript SDK：模型网关、Agent Run Gateway 与 Compliance（电子证据、时间章、报告、签署 envelope）统一客户端，支持浏览器 / Node ≥18 / Deno / Bun。","directories":{},"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^8.57.0","vitest":"^4.1.7","typedoc":"^0.28.19","prettier":"^3.0.0","typescript":"^5.4.0","@types/node":"^20.0.0","typedoc-plugin-markdown":"^4.11.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-ts_2.19.0_1788264301816_0.25896591319417084","host":"s3://npm-registry-packages-npm-production"}},"2.19.1":{"name":"@acosmi/sdk-ts","version":"2.19.1","keywords":["acosmi","anthropic","openai","llm","sdk","compliance","evidence","timestamp","esignature","claude","crabcode","crabclaw"],"author":{"name":"Acosmi"},"license":"MIT","_id":"@acosmi/sdk-ts@2.19.1","maintainers":[{"name":"acosmi","email":"fushihua@acosmi.com"}],"homepage":"https://github.com/acosmi/sdk-ts#readme","bugs":{"url":"https://github.com/acosmi/sdk-ts/issues"},"dist":{"shasum":"5ea1879086cdd8cca50746c50363cfb4a0245c68","tarball":"https://registry.npmjs.org/@acosmi/sdk-ts/-/sdk-ts-2.19.1.tgz","fileCount":47,"integrity":"sha512-yB7ewDfBAhRDDtOjmhp1qTnj7PtaGD6xWEThX67vNrIlqH2ZJf1yux0tJABpU+OyYamHCOwJrxjURFWOe7bvfQ==","signatures":[{"sig":"MEQCICdxfJgkDtfUv8hiDL0BsSxOczz2l7J1ofHOnChxG+5+AiBKmyLUBBihlrA1H4woFxdFbyRgfLEs2Vv2P2SiPk3lng==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCzYhgqUh2tbe3Z6ykdpJ2eBcg7VqKIGlvFVV4Zo+LoFAIgYJpMluIcTRwpmKw3KIfKPHwS59MG792nLbSEYHD4qd0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@acosmi%2fsdk-ts@2.19.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6065961},"main":"./dist/node/index.cjs","type":"module","types":"./dist/node/index.d.ts","module":"./dist/node/index.mjs","engines":{"node":">=18"},"exports":{".":{"deno":"./dist/index.mjs","node":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.mjs","require":"./dist/node/index.cjs"},"types":"./dist/node/index.d.ts","browser":"./dist/browser/index.mjs","default":"./dist/index.mjs"},"./sanitize":{"types":"./dist/node/sanitize/index.d.ts","import":"./dist/node/sanitize/index.mjs","require":"./dist/node/sanitize/index.cjs"},"./package.json":"./package.json","./adapters/openai":{"types":"./dist/node/adapters/openai.d.ts","import":"./dist/node/adapters/openai.mjs","require":"./dist/node/adapters/openai.cjs"},"./adapters/anthropic":{"types":"./dist/node/adapters/anthropic.d.ts","import":"./dist/node/adapters/anthropic.mjs","require":"./dist/node/adapters/anthropic.cjs"}},"gitHead":"56cb09ed9c20677f4768dddda207c43c07b4c47b","scripts":{"docs":"typedoc","lint":"eslint src --ext .ts","test":"vitest run","build":"tsup","format":"prettier --write \"src/**/*.{ts,json}\"","test:pack":"node scripts/smoke-pack.mjs","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run lint && npm test && npm run build && npm run test:pack && npm run docs"},"_npmUser":{"name":"acosmi","email":"fushihua@acosmi.com"},"overrides":{"esbuild@>=0.27.3 <0.28.1":"^0.28.2"},"repository":{"url":"git+https://github.com/acosmi/sdk-ts.git","type":"git"},"_npmVersion":"11.19.0","description":"Acosmi TypeScript SDK：模型网关、Agent Run Gateway 与 Compliance（电子证据、时间章、报告、签署 envelope）统一客户端，支持浏览器 / Node ≥18 / Deno / Bun。","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^8.57.0","vitest":"^4.1.7","typedoc":"^0.28.19","prettier":"^3.0.0","typescript":"^5.4.0","@types/node":"^20.0.0","typedoc-plugin-markdown":"^4.11.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-ts_2.19.1_1788875778154_0.8242740601052148","host":"s3://npm-registry-packages-npm-production"}},"2.19.2":{"name":"@acosmi/sdk-ts","version":"2.19.2","keywords":["acosmi","anthropic","openai","llm","sdk","compliance","evidence","timestamp","esignature","claude","crabcode","crabclaw"],"author":{"name":"Acosmi"},"license":"MIT","_id":"@acosmi/sdk-ts@2.19.2","maintainers":[{"name":"acosmi","email":"fushihua@acosmi.com"}],"homepage":"https://github.com/acosmi/sdk-ts#readme","bugs":{"url":"https://github.com/acosmi/sdk-ts/issues"},"dist":{"shasum":"4d4954ca6c40cda25a35b675895247a257727241","tarball":"https://registry.npmjs.org/@acosmi/sdk-ts/-/sdk-ts-2.19.2.tgz","fileCount":47,"integrity":"sha512-cgnvxsgqzDfWYX2HFoUV+DUlQTXRUKMC5Amjeq/jDlQRpqkJvfUTYqIlGLJI+pUC/2f2VocEG6CNFQLTLuYTmA==","signatures":[{"sig":"MEUCIAjHQNo6ZZsoZ6IhY3LGxSenMC9Ju1YDZAxGoxLS1UeDAiEA6KUN4FhuFmBDUY0mvJOtXOEwYC9UcF4g0+GyNF9T+PI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDTjX0jiczlNFrWnVtdLR2TUbtqiWzu6C7/qC7D5P+nUAIgAnaOs+pvo9Z83XNlIyL9ipyOoG5zI3fv8zYhYq5KfWE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@acosmi%2fsdk-ts@2.19.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6075314},"main":"./dist/node/index.cjs","type":"module","types":"./dist/node/index.d.ts","module":"./dist/node/index.mjs","engines":{"node":">=18"},"exports":{".":{"deno":"./dist/index.mjs","node":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.mjs","require":"./dist/node/index.cjs"},"types":"./dist/node/index.d.ts","browser":"./dist/browser/index.mjs","default":"./dist/index.mjs"},"./sanitize":{"types":"./dist/node/sanitize/index.d.ts","import":"./dist/node/sanitize/index.mjs","require":"./dist/node/sanitize/index.cjs"},"./package.json":"./package.json","./adapters/openai":{"types":"./dist/node/adapters/openai.d.ts","import":"./dist/node/adapters/openai.mjs","require":"./dist/node/adapters/openai.cjs"},"./adapters/anthropic":{"types":"./dist/node/adapters/anthropic.d.ts","import":"./dist/node/adapters/anthropic.mjs","require":"./dist/node/adapters/anthropic.cjs"}},"gitHead":"c2ee38bcbb0eca617ad1e5d08f796cf5ca8d8982","scripts":{"docs":"typedoc","lint":"eslint src --ext .ts","test":"vitest run","build":"tsup","format":"prettier --write \"src/**/*.{ts,json}\"","test:pack":"node scripts/smoke-pack.mjs","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run lint && npm test && npm run build && npm run test:pack && npm run docs"},"_npmUser":{"name":"acosmi","email":"fushihua@acosmi.com"},"overrides":{"esbuild@>=0.27.3 <0.28.1":"^0.28.2"},"repository":{"url":"git+https://github.com/acosmi/sdk-ts.git","type":"git"},"_npmVersion":"11.19.0","description":"Acosmi TypeScript SDK：模型网关、Agent Run Gateway 与 Compliance（电子证据、时间章、报告、签署 envelope）统一客户端，支持浏览器 / Node ≥18 / Deno / Bun。","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^8.57.0","vitest":"^4.1.7","typedoc":"^0.28.19","prettier":"^3.0.0","typescript":"^5.4.0","@types/node":"^20.0.0","typedoc-plugin-markdown":"^4.11.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-ts_2.19.2_1789116980162_0.04440892401518126","host":"s3://npm-registry-packages-npm-production"}},"2.19.3":{"name":"@acosmi/sdk-ts","version":"2.19.3","keywords":["acosmi","anthropic","openai","llm","sdk","compliance","evidence","timestamp","esignature","claude","crabcode","crabclaw"],"author":{"name":"Acosmi"},"license":"MIT","_id":"@acosmi/sdk-ts@2.19.3","maintainers":[{"name":"acosmi","email":"fushihua@acosmi.com"}],"homepage":"https://github.com/acosmi/sdk-ts#readme","bugs":{"url":"https://github.com/acosmi/sdk-ts/issues"},"dist":{"shasum":"58c01ba436b512fdc6670061239db98cdd262a1e","tarball":"https://registry.npmjs.org/@acosmi/sdk-ts/-/sdk-ts-2.19.3.tgz","fileCount":47,"integrity":"sha512-rbtTtlROQ7HCzqP3cJ+/huYwoE2DAdkDcG0we3wh1Z7XZ2vTUnVc3JRBKUZWblietU42yslpfbg/ixK9Z+ia/A==","signatures":[{"sig":"MEUCIDqWV8LbTdknbE5uRhG+VSPyL+OfVG7Cd0kzYMGSzapRAiEA6r2z+ZPCrutB+E+Ih+zU3QXUsXrr1QBLeCai4djBQL4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCR8ImAnl9MFJnw1szVelyLrY3kShhuyuIlPdMcm46MJgIhAOuEUsckAD78T4uDjODXMFAEvPiT+dzhOauLGW22LllB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@acosmi%2fsdk-ts@2.19.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6085155},"main":"./dist/node/index.cjs","type":"module","types":"./dist/node/index.d.ts","module":"./dist/node/index.mjs","engines":{"node":">=18"},"exports":{".":{"deno":"./dist/index.mjs","node":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.mjs","require":"./dist/node/index.cjs"},"types":"./dist/node/index.d.ts","browser":"./dist/browser/index.mjs","default":"./dist/index.mjs"},"./sanitize":{"types":"./dist/node/sanitize/index.d.ts","import":"./dist/node/sanitize/index.mjs","require":"./dist/node/sanitize/index.cjs"},"./package.json":"./package.json","./adapters/openai":{"types":"./dist/node/adapters/openai.d.ts","import":"./dist/node/adapters/openai.mjs","require":"./dist/node/adapters/openai.cjs"},"./adapters/anthropic":{"types":"./dist/node/adapters/anthropic.d.ts","import":"./dist/node/adapters/anthropic.mjs","require":"./dist/node/adapters/anthropic.cjs"}},"gitHead":"7af2a8d3279a5178dc84a24ebf962553ab9fa04d","scripts":{"docs":"typedoc","lint":"eslint src --ext .ts","test":"vitest run","build":"tsup","format":"prettier --write \"src/**/*.{ts,json}\"","test:pack":"node scripts/smoke-pack.mjs","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run lint && npm test && npm run build && npm run test:pack && npm run docs"},"_npmUser":{"name":"acosmi","email":"fushihua@acosmi.com"},"overrides":{"esbuild@>=0.27.3 <0.28.1":"^0.28.2"},"repository":{"url":"git+https://github.com/acosmi/sdk-ts.git","type":"git"},"_npmVersion":"11.19.0","description":"Acosmi TypeScript SDK：模型网关、Agent Run Gateway 与 Compliance（电子证据、时间章、报告、签署 envelope）统一客户端，支持浏览器 / Node ≥18 / Deno / Bun。","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^8.57.0","vitest":"^4.1.7","typedoc":"^0.28.19","prettier":"^3.0.0","typescript":"^5.4.0","@types/node":"^20.0.0","typedoc-plugin-markdown":"^4.11.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-ts_2.19.3_1789398504886_0.36137544169483005","host":"s3://npm-registry-packages-npm-production"}},"2.19.4":{"name":"@acosmi/sdk-ts","version":"2.19.4","keywords":["acosmi","anthropic","openai","llm","sdk","compliance","evidence","timestamp","esignature","claude","crabcode","crabclaw"],"author":{"name":"Acosmi"},"license":"MIT","_id":"@acosmi/sdk-ts@2.19.4","maintainers":[{"name":"acosmi","email":"fushihua@acosmi.com"}],"homepage":"https://github.com/acosmi/sdk-ts#readme","bugs":{"url":"https://github.com/acosmi/sdk-ts/issues"},"dist":{"shasum":"29829c4abb64edf10367fdcba622a48432ee1c32","tarball":"https://registry.npmjs.org/@acosmi/sdk-ts/-/sdk-ts-2.19.4.tgz","fileCount":47,"integrity":"sha512-iIL/yrwvWA77TwAdPnPU9o3M2mAtf8+aNXgG6woSDhUnBC0KjXRDMjSMIXADMjRgB+5JBSQlEMJgAmhEYbK5hw==","signatures":[{"sig":"MEYCIQD/VBF0rvmlYtJVy1jidz7lFeOUmt3njSbNAVm1xK9HAgIhAJWygND9saMuFFZqinAqM/XHXr2uxUog/ZAPCU49OQbh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCHXvrHtW5GxSIrRJ++QupA+QTmjHrEvFj2g633ekOQBAIgBCUwXPC1O99v8j71mHYqNW/qeOciDde/DIA9TLphrdQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@acosmi%2fsdk-ts@2.19.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6192204},"main":"./dist/node/index.cjs","type":"module","types":"./dist/node/index.d.ts","module":"./dist/node/index.mjs","engines":{"node":">=18"},"exports":{".":{"deno":"./dist/index.mjs","node":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.mjs","require":"./dist/node/index.cjs"},"types":"./dist/node/index.d.ts","browser":"./dist/browser/index.mjs","default":"./dist/index.mjs"},"./sanitize":{"types":"./dist/node/sanitize/index.d.ts","import":"./dist/node/sanitize/index.mjs","require":"./dist/node/sanitize/index.cjs"},"./package.json":"./package.json","./adapters/openai":{"types":"./dist/node/adapters/openai.d.ts","import":"./dist/node/adapters/openai.mjs","require":"./dist/node/adapters/openai.cjs"},"./adapters/anthropic":{"types":"./dist/node/adapters/anthropic.d.ts","import":"./dist/node/adapters/anthropic.mjs","require":"./dist/node/adapters/anthropic.cjs"}},"gitHead":"4cf58fd4e9b24fc8f5601565e02c0724eea832f2","scripts":{"docs":"typedoc","lint":"eslint src --ext .ts","test":"vitest run","build":"tsup","format":"prettier --write \"src/**/*.{ts,json}\"","test:pack":"node scripts/smoke-pack.mjs","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run lint && npm test && npm run build && npm run test:pack && npm run docs"},"_npmUser":{"name":"acosmi","email":"fushihua@acosmi.com"},"overrides":{"esbuild@>=0.27.3 <0.28.1":"^0.28.2"},"repository":{"url":"git+https://github.com/acosmi/sdk-ts.git","type":"git"},"_npmVersion":"11.19.0","description":"Acosmi TypeScript SDK：模型网关、Agent Run Gateway 与 Compliance（电子证据、时间章、报告、签署 envelope）统一客户端，支持浏览器 / Node ≥18 / Deno / Bun。","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^8.57.0","vitest":"^4.1.7","typedoc":"^0.28.19","prettier":"^3.0.0","typescript":"^5.4.0","@types/node":"^20.0.0","typedoc-plugin-markdown":"^4.11.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-ts_2.19.4_1789722940770_0.32851907515939494","host":"s3://npm-registry-packages-npm-production"}},"2.19.5":{"name":"@acosmi/sdk-ts","version":"2.19.5","keywords":["acosmi","anthropic","openai","llm","sdk","compliance","evidence","timestamp","esignature","claude","crabcode","crabclaw"],"author":{"name":"Acosmi"},"license":"MIT","_id":"@acosmi/sdk-ts@2.19.5","maintainers":[{"name":"acosmi","email":"fushihua@acosmi.com"}],"homepage":"https://github.com/acosmi/sdk-ts#readme","bugs":{"url":"https://github.com/acosmi/sdk-ts/issues"},"dist":{"shasum":"5397b9933334d275a02ae4cdcdff1644d7a601c9","tarball":"https://registry.npmjs.org/@acosmi/sdk-ts/-/sdk-ts-2.19.5.tgz","fileCount":47,"integrity":"sha512-smdtKphzehu18nFDyurEM3b+uqZzdSddEKbyVmTpEIfh9uMGwNbsBtemwWYzZ5VWIg8IWMozM90Cb17q6OuL6Q==","signatures":[{"sig":"MEQCICXYy08nzHWG+P5nCbsjBOQtvYMkqsfQ5MkzalbD72BfAiAYvJZ4IClLykROmPs+QAvB025ixlFO/JB9hdt7FsaLbQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIDIZSZl4ISgo47Vnk0Xjpz4P3B6sAB3p+0KcFxCSS2OOAiEAgAwoLX5IhSSgCOLB6SRJQVGqEdBz200U68HSQexZRnc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@acosmi%2fsdk-ts@2.19.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6287944},"main":"./dist/node/index.cjs","type":"module","types":"./dist/node/index.d.ts","module":"./dist/node/index.mjs","engines":{"node":">=18"},"exports":{".":{"deno":"./dist/index.mjs","node":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.mjs","require":"./dist/node/index.cjs"},"types":"./dist/node/index.d.ts","browser":"./dist/browser/index.mjs","default":"./dist/index.mjs"},"./sanitize":{"types":"./dist/node/sanitize/index.d.ts","import":"./dist/node/sanitize/index.mjs","require":"./dist/node/sanitize/index.cjs"},"./package.json":"./package.json","./adapters/openai":{"types":"./dist/node/adapters/openai.d.ts","import":"./dist/node/adapters/openai.mjs","require":"./dist/node/adapters/openai.cjs"},"./adapters/anthropic":{"types":"./dist/node/adapters/anthropic.d.ts","import":"./dist/node/adapters/anthropic.mjs","require":"./dist/node/adapters/anthropic.cjs"}},"gitHead":"46c3466634e1d38924c4ab2f58e89afce67c1777","scripts":{"docs":"typedoc","lint":"eslint src --ext .ts","test":"vitest run","build":"tsup","format":"prettier --write \"src/**/*.{ts,json}\"","test:pack":"node scripts/smoke-pack.mjs","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run lint && npm test && npm run build && npm run test:pack && npm run docs"},"_npmUser":{"name":"acosmi","email":"fushihua@acosmi.com"},"overrides":{"esbuild@>=0.27.3 <0.28.1":"^0.28.2"},"repository":{"url":"git+https://github.com/acosmi/sdk-ts.git","type":"git"},"_npmVersion":"11.19.0","description":"Acosmi TypeScript SDK：模型网关、Agent Run Gateway 与 Compliance（电子证据、时间章、报告、签署 envelope）统一客户端，支持浏览器 / Node ≥18 / Deno / Bun。","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^8.57.0","vitest":"^4.1.7","typedoc":"^0.28.19","prettier":"^3.0.0","typescript":"^5.4.0","@types/node":"^20.0.0","typedoc-plugin-markdown":"^4.11.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-ts_2.19.5_1789802981693_0.21920778298413168","host":"s3://npm-registry-packages-npm-production"}},"2.19.6":{"_id":"@acosmi/sdk-ts@2.19.6","bugs":{"url":"https://github.com/acosmi/sdk-ts/issues"},"dist":{"shasum":"fcfdf7b5873b974049c2bc7af173582eb8893507","tarball":"https://registry.npmjs.org/@acosmi/sdk-ts/-/sdk-ts-2.19.6.tgz","fileCount":47,"integrity":"sha512-X20EKB1vPic/GDHhoVqA2GjFam4Dd/zE1v773IW6KFM+ZsI8GWYmA+UKl7VJxd58Ei5ER320klkxP7W+B731fQ==","signatures":[{"sig":"MEUCIG7n3HS8Qjvwp0QPN4yQqvmioUipCbtfrN4M3n3UV6BvAiEAnPMnTEWGECkN06K7tZnhlrwFOOlOJnDLVWq+zm+FHnA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDnidxb1xScTF0Qq4Pmsz9UMI8lxY84yu/lB7hmgX9QhgIhAN/jwuCFPo7pbnNzRySX8c82UH5FJSdh6it4SzVBqAWO"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@acosmi%2fsdk-ts@2.19.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6317398},"main":"./dist/node/index.cjs","name":"@acosmi/sdk-ts","type":"module","types":"./dist/node/index.d.ts","author":{"name":"Acosmi"},"module":"./dist/node/index.mjs","engines":{"node":">=18"},"exports":{".":{"deno":"./dist/index.mjs","node":{"types":"./dist/node/index.d.ts","import":"./dist/node/index.mjs","require":"./dist/node/index.cjs"},"types":"./dist/node/index.d.ts","browser":"./dist/browser/index.mjs","default":"./dist/index.mjs"},"./sanitize":{"types":"./dist/node/sanitize/index.d.ts","import":"./dist/node/sanitize/index.mjs","require":"./dist/node/sanitize/index.cjs"},"./package.json":"./package.json","./adapters/openai":{"types":"./dist/node/adapters/openai.d.ts","import":"./dist/node/adapters/openai.mjs","require":"./dist/node/adapters/openai.cjs"},"./adapters/anthropic":{"types":"./dist/node/adapters/anthropic.d.ts","import":"./dist/node/adapters/anthropic.mjs","require":"./dist/node/adapters/anthropic.cjs"}},"gitHead":"39c73fb11b11b0dd2ff5270d219f6d00441994be","license":"MIT","scripts":{"docs":"typedoc","lint":"eslint src --ext .ts","test":"vitest run","build":"tsup","format":"prettier --write \"src/**/*.{ts,json}\"","test:pack":"node scripts/smoke-pack.mjs","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run lint && npm test && npm run build && npm run test:pack && npm run docs"},"version":"2.19.6","_npmUser":{"name":"acosmi","email":"fushihua@acosmi.com"},"homepage":"https://github.com/acosmi/sdk-ts#readme","keywords":["acosmi","anthropic","openai","llm","sdk","compliance","evidence","timestamp","esignature","claude","crabcode","crabclaw"],"overrides":{"esbuild@>=0.27.3 <0.28.1":"^0.28.2"},"repository":{"url":"git+https://github.com/acosmi/sdk-ts.git","type":"git"},"_npmVersion":"11.19.0","description":"Acosmi TypeScript SDK：模型网关、Agent Run Gateway 与 Compliance（电子证据、时间章、报告、签署 envelope）统一客户端，支持浏览器 / Node ≥18 / Deno / Bun。","directories":{},"maintainers":[{"name":"acosmi","email":"fushihua@acosmi.com"}],"_nodeVersion":"24.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^8.57.0","vitest":"^4.1.7","typedoc":"^0.28.19","prettier":"^3.0.0","typescript":"^5.4.0","@types/node":"^20.0.0","typedoc-plugin-markdown":"^4.11.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sdk-ts_2.19.6_1789910800020_0.33316159870485995"}}},"time":{"created":"2026-05-01T07:51:21.685Z","modified":"2026-09-20T13:26:40.479Z","1.0.0":"2026-05-01T07:51:22.012Z","1.0.1":"2026-05-01T11:02:40.806Z","1.0.2":"2026-05-06T16:49:13.968Z","1.1.0":"2026-05-06T19:52:17.780Z","1.2.0":"2026-05-18T15:24:42.403Z","1.3.0":"2026-05-20T07:05:44.781Z","1.3.1":"2026-05-20T07:12:10.671Z","1.3.2":"2026-05-20T16:29:45.191Z","1.4.0":"2026-05-22T03:18:46.217Z","1.4.1":"2026-05-22T04:20:59.659Z","1.4.2":"2026-05-22T17:34:19.888Z","1.11.0":"2026-05-23T09:29:02.855Z","1.5.0":"2026-05-23T10:12:02.926Z","1.5.1":"2026-05-23T17:07:48.536Z","1.6.0":"2026-05-24T17:04:47.521Z","1.9.0":"2026-05-25T16:55:09.322Z","2.0.0":"2026-05-26T05:56:43.508Z","2.0.1":"2026-05-26T06:00:40.325Z","2.1.0":"2026-05-29T02:38:51.301Z","2.2.0":"2026-05-29T09:33:10.544Z","2.2.1":"2026-05-29T09:54:46.472Z","2.3.0":"2026-05-30T08:24:14.467Z","2.4.0":"2026-05-30T09:16:26.074Z","2.5.1":"2026-06-01T04:07:08.997Z","2.6.0":"2026-06-07T12:03:14.146Z","2.7.0":"2026-06-12T04:09:53.103Z","2.8.0":"2026-06-16T14:28:55.816Z","2.9.0":"2026-06-20T14:35:55.932Z","2.10.0":"2026-06-20T16:55:45.316Z","2.11.0":"2026-07-10T12:12:24.078Z","2.12.0":"2026-07-11T12:21:53.294Z","2.13.0":"2026-08-02T03:57:37.182Z","2.14.0":"2026-08-02T12:44:26.117Z","2.15.0":"2026-08-03T07:27:05.096Z","2.16.0":"2026-08-06T17:49:58.778Z","2.17.0":"2026-08-15T17:45:53.227Z","2.18.0":"2026-08-30T03:56:43.081Z","2.19.0":"2026-09-01T12:05:02.024Z","2.19.1":"2026-09-08T13:56:18.272Z","2.19.2":"2026-09-11T08:56:20.292Z","2.19.3":"2026-09-14T15:08:25.012Z","2.19.4":"2026-09-18T09:15:40.929Z","2.19.5":"2026-09-19T07:29:41.845Z","2.19.6":"2026-09-20T13:26:40.128Z"},"bugs":{"url":"https://github.com/acosmi/sdk-ts/issues"},"author":{"name":"Acosmi"},"license":"MIT","homepage":"https://github.com/acosmi/sdk-ts#readme","keywords":["acosmi","anthropic","openai","llm","sdk","compliance","evidence","timestamp","esignature","claude","crabcode","crabclaw"],"repository":{"url":"git+https://github.com/acosmi/sdk-ts.git","type":"git"},"description":"Acosmi TypeScript SDK：模型网关、Agent Run Gateway 与 Compliance（电子证据、时间章、报告、签署 envelope）统一客户端，支持浏览器 / Node ≥18 / Deno / Bun。","maintainers":[{"name":"acosmi","email":"fushihua@acosmi.com"}],"readme":"# @acosmi/sdk-ts\n\n> Acosmi 模型网关 + Agent Run Gateway TypeScript SDK — 双格式（Anthropic + OpenAI）多端（浏览器 / Node ≥18 / Deno / Bun）\n\n[![npm](https://img.shields.io/npm/v/%40acosmi%2Fsdk-ts.svg)](https://www.npmjs.com/package/@acosmi/sdk-ts)\n\n## 状态\n\n- **主实现 / 事实标准**：本 TS SDK 现为 Acosmi SDK 的主力实现。Go SDK [acosmi-sdk-go](https://github.com/acosmi/acosmi-sdk-go) 已暂停维护，待 TS 稳定后再从 TS 反向翻译补齐。\n- **当前版本：`2.19.5`**（流内重试提示透出 + 流式可选项，2026-09-19）。\n- **`v2.19.1`**：可选 versioned 凭据存储、原子刷新与本地退出，支持将 HTTP / WebSocket 绑定到固定登录身份；外部凭据使用独立的 external 模式。所有模式仅在完整网关错误合同证明用户访问凭据失效且请求未接收时自动刷新重试，普通 401 原样返回。versioned 模式要求上游 metadata 的认证合同为 2、网关错误合同为 1；默认 legacy 存储接口继续可用。详见 [CHANGELOG](./CHANGELOG.md)。\n- **`v2.18.0`（加性类型发布）**：`ManagedModel` 新增可选字段 `thinking_levels?: string[]` —— 网关下发的**升序思考档位 id 列表**（`ThinkingOff`/`ThinkingHigh`/`ThinkingMax` 的子集）。`listModels` 对它原样透传，公开签名向后兼容、零行为变化；`[]` = 该模型无思考档，`undefined` = 旧网关未播报（按\"未知\"处理，严禁自行推档）。详见〈思考档位 `thinking_levels`〉。\n- **`v2.17.0`（安全修复发布）**：桌面 loopback `authorize()` 对 `/callback` 的**一切形态**（成功 / OAuth error / 畸形）先行校验 CSRF `state`，且必须\"恰好一个\"并严格等值 —— 缺失、重复（含重复的正确值）、错值一律以稳定错误码 `state_mismatch` 拒绝本次登录；此前携带 OAuth error 的回调绕过 state 直接结算 `auth_denied`，本机任意进程零知识即可打断/塑形等待中的登录，且 `?code=…&state=<正确值>&state=x` 这类重复参数可蒙混通过。`finally` 补 `closeIdleConnections()`，每条终止路径以端口完全关闭收尾。公开 API 签名零变化；回归闸门 `test/auth/desktop-loopback-state.test.ts` 十路终止矩阵。\n- **`v2.15.0`（加性兼容发布）**：新增 `classifySourcesEvent()`、`SourcesEventParseResult` 与稳定 issue code，把 `not_sources`、合法 `empty_sources`、非空 `sources`、`malformed_sources` 明确分开。既有 `parseSourcesEvent()` 的代码路径、宽松判定、`null` 条件和返回对象形状保持原样；现有 consumer 无需改动，新 consumer 才选择严格 API。\n- **`v2.6.0`（会员订阅查询 + 类型修正，2026-06-04）**：新增 `subscription.getMembership()` / `getSubscriptionTier()` / `subscriptionPrecheck()`；`ManagedModel` 补档位门控字段（`locked`/`freeTier`/`minPlanTier`/`chatRuntimeSupported`/`defaultToolIds`）；auth 新增 `ScopeChatBridge`(+read/write/rotate) 与 `chatBridgeScopes()`。**破坏性类型修正**：`BalanceDetail` 形状对齐网关 `InternalBalanceResponse`、`Order` 拆为 `BuyResponse`/`OrderListItem`、`getOrderStatus`/`waitForPayment` 改用 `BuyResponse.paymentStatus`（修死循环）、`PayPayload.payMethod`→`paymentMethod`、`TokenPackage` 对齐 `toProductView`、`WalletStats`/`Transaction` `amount` 由 string 改 number、consume-records 分页修正、notifications WebSocket 用一次性 `stream-ticket` 取代 URL `?token=` JWT。废弃 `listUserSubscriptions`（改用 `getMembership`）、`ModelCoefficient`/`listCoefficients`（系数退役恒空）、`ManagedModel.pricePerMTok`/`isDefault`（公开端点不返回）；notifications 设备/偏好方法标 `@experimental`。详见 CHANGELOG。\n- **`v2.5.1`（格式一致性护栏，2026-05-31）**：`getAdapterForModel` 路由加固 —— `preferred_format` 现仅在**确被 `supported_formats` 收录**时才采信（或 `supported_formats` 未声明时维持原样）。防止上游元数据漂移（如 `preferred_format=anthropic` 但 `supported_formats=[openai]`）把 SDK 路由到模型并不支持的格式端点，撞 `/anthropic`「未绑定 Anthropic」4xx。`supported_formats` 为空/未知（旧上游）时**行为逐字节不变**。新增 3 条 routing 用例钉死矛盾场景。\n- **`v2.5.0`（健康度审计根因修复，2026-05-31）**：源码深度审计后修复一批真实运行时缺陷 —— `agentRuns.downloadArtifact()` 超限不再静默截断而是抛错；本地工具回调 `Promise.race` 硬超时（忽略 `signal` 的 handler 也不再永挂）；OpenAI 流式 `reasoning_content` 后直接 `tool_calls`（无 text）时 block index 不再错乱；非法 `expires_at` 视为过期 + TokenStore 形状校验；OAuth 发现/注册/换/吊销链路统一走注入 `fetchImpl`；空成功响应（204）不再抛 JSON parse error；`apiBaseURL`/`complianceBaseURL` 与 gateway base 同级校验（拒 ws/wss/query/hash）；非流式请求默认超时；WebSocket 重复 connect 先关旧连接；`FileTokenStore.save()` 真 fsync；chat 请求对象不再被原地 mutate；Anthropic `extraBody` 不能覆盖 SDK 管理字段。**公开类型/方法签名零移除、零改名**（新增导出 `normalizeOverrideBaseURL` / `DEFAULT_API_TIMEOUT_MS`）。casehall/finance/enterprise 业务域路径经生产实证确认正确（同源代理直连 tk-dist），**未改**，并新增 URL 组装回归测试钉死契约。\n- **`v2.1.0`（已发布）**：远程控制 CrabCode 多接入面 —— `serverURL`/`baseURL` Gateway URL 公共契约（见下方小节）、`agentRuns.createRemoteRun` / `agentRuns.streamRemoteControl` + 11 事件 union（见 §Agent Runs → 远程控制）、`chatbridge` 第三方聊天平台桥接类型（types-only 骨架，见 §Chat Bridge）、专用 `remote_control` scope（不进 `allScopes()`）。契约见 `docs/audit/sdk-remote-control-contract-2026-05-27.md`。\n- **v2.0.0 BREAKING（Phase 3 复核 + 全量根治，2026-05-25）摘要**：\n  - SDK 同步主仓 9 commit 闭环 20 P0（RBAC 表达式统一 / PII 真落盘加密链 / K7 视频 webhook 幂等 / K8 OCR SSRF / K9 KYC main flow / admin 写端点错误码契约）。\n  - 新增 `casehall.getMyLawyerCredentialStatus()` + `enterprise.getMyEnterpriseKycStatus()` 律师 / 企业 OWNER 自查端点（纯增量）。\n  - `finance/types.ts` P2-016 PII Javadoc 升级（含 `keyVersion` v1/v2 payload 协议 + 4 角色 × 3 PII 级矩阵）。\n  - 新建 `docs/pii-role-matrix.md`（4 角色：`platform_admin` / `s2s` / `lawyer` / `consumer`）。\n  - admin 写端点错误码改 HTTP 状态码语义（`200+{ok:false}` → `403/404/501`），上游契约整流。\n  - **升级路径详见下方 \"v2.0.0 升级指引\"**。\n- **v1.x 历史链**：1.9.0 finance / 1.8.1 enterprise / 1.8.0 casehall / 1.7.0 csign+pricing+products+subscription / 1.6.0 endUserId+11min 保活 / 1.5.x 跨域共享 DTO + Compliance S1-S6 rollup / 1.4.x 浏览器 Web OAuth / 1.3.x compliance SDK / 1.2.x InputModality / 1.1.x agentRuns / 1.0.x 包发布修复。详见 [CHANGELOG](./CHANGELOG.md)。\n- **测试**：发布前需通过 `typecheck` / `lint` / `vitest` / `build` / `test:pack`（packed-tarball consumer smoke）。\n- **API 参考文档**：`npm run docs`（TypeDoc）生成到 `docs/api/`。\n- **包链接**：[npm](https://www.npmjs.com/package/@acosmi/sdk-ts) · [GitHub Releases](https://github.com/acosmi/sdk-ts/releases)。\n\n### v2.0.0 升级指引\n\nv2.0.0 标 BREAKING，但 **TS SDK 公开类型与方法签名零移除、零改名**；BREAKING 范围在网关后端，集成方按以下清单核对：\n\n| 受影响场景 | 集成方动作 | 关联 |\n|------------|----------|------|\n| 持有 `ROLE_ADMIN` 角色（不是 `platform_admin`）想读 PII L3 字段（如发票税号、律师执照号） | **必须 review** — 网关 `SensitiveSerializer` 不再把 `ROLE_ADMIN` 当 `platform_admin` 别名 fail-OPEN，统一收敛为 4 角色严格白名单。仍需 PII L3 read 的角色须重新申请 `platform_admin` | `docs/pii-role-matrix.md` |\n| 持有 admin 写端点 (`/admin/**/...`) 旧契约 — 期望 `200+{ok:false,code:xxx}` 业务错误码 | **必须改** — 改读 HTTP 状态码：`403` 鉴权不足 / `404` 资源不存在 / `501` `NOT_CONFIGURED_CODE` 网关未配置 provider；body 不再保证带业务码 | 主仓 `K10AdminController` |\n| 用 `client.casehall.*` / `client.enterprise.*` 调律师 / 企业 OWNER 资质相关接口 | **零改动** — 新增 `getMyLawyerCredentialStatus()` / `getMyEnterpriseKycStatus()` 是纯增量，不影响既有方法 | `src/casehall/client.ts`、`src/enterprise/client.ts` |\n| 读 `Invoice.taxId` / `Invoice.bankAccount` 等 PII 字段 | **零代码改动** — 字段名 / wire-format 不变，仅 Javadoc 标注从\"脱敏\"升级为\"keyVersion v1/v2 真加密 + AAD field binding\"，运行时 transparent | `src/finance/types.ts` |\n| 集成 v1.x 时按\"`ROLE_ADMIN` 自动当 `platform_admin`\"测试用例 | **必须改** — 删掉别名假设；测试角色显式写 `platform_admin` / `s2s` / `lawyer` / `consumer` 之一 | `docs/pii-role-matrix.md` §角色映射表 |\n\n> v2.0.0 → v2.0.1 是纯 packaging fix（`package.json.files` 数组补 2 个 docs），无源码改动；从 v2.0.0 升 v2.0.1 不需要任何 review。\n\n## 安装\n\n```sh\nnpm install @acosmi/sdk-ts\n```\n\n## 快速开始\n\n```ts\nimport { Client, allScopes } from '@acosmi/sdk-ts';\n\nconst client = new Client({ baseURL: process.env.ACOSMI_BASE_URL! });\nawait client.login('My App', allScopes());\n\nconst resp = await client.chat('claude-opus-4-7', {\n  messages: [{ role: 'user', content: 'Hello' }],\n  max_tokens: 1024, // ChatRequest 走 snake_case wire 字段（与上游 Go json tag 对齐）\n  endUserId: 'user-abc-123', // v1.6.0+ 业务侧稳定 id, 启用上游隔离 / KV-cache / 调度策略\n});\nconsole.log(resp.content);\n```\n\n### Acosmi Gateway URL — `serverURL` / `baseURL` 公共契约 (v2.1+)\n\n`Client` 配置中 `serverURL` / `baseURL` / `baseUrl` 三字段同语义、互为 alias，归一化后必须相等；任传其一即可，多写时 normalize 后冲突会立刻抛错。\n\n```ts\n// 推荐拼写\nconst client = new Client({ baseURL: 'https://acosmi.com' });\n\n// 与历史 serverURL 完全等价\nconst same = new Client({ serverURL: 'https://acosmi.com' });\n\n// 多写一致 OK; 不一致抛错\nnew Client({ serverURL: 'https://a.example', baseURL: 'https://b.example' });\n// → Error: Acosmi Gateway URL conflict: …\n```\n\n**红线 (Phase 0 契约 §1-§2)** — Acosmi Gateway URL 是 `@acosmi/sdk-ts` 调 Acosmi nexus-v4 API 的根：\n\n- 只接受 `http:` / `https:`；`ws:` / `wss:` 是 CrabCode `--sdk-url` RemoteIO 会话通道，**不是** SDK gateway URL，传入立刻抛错。\n- agent-runs / managed-models / notifications WS / compliance 都从同一个 normalized base 派生；SDK 内部 `apiURL()` 自动追加 `/api/v4`，不会重复拼。\n- 不推荐 runtime mutate `client.serverURL`；多 base 用 per-instance Client cache（例如 `Map<normalizedGatewayURL, Promise<Client>>`）。\n- `complianceBaseURL` 是独立第二根地址，不被 `baseURL` alias 覆盖。\n\n公共 helper：\n\n```ts\nimport { Client, normalizeGatewayBaseURL, DEFAULT_GATEWAY_BASE_URL } from '@acosmi/sdk-ts';\n\nnormalizeGatewayBaseURL('https://gw.example/api/v4/'); // → 'https://gw.example/api/v4'\nnormalizeGatewayBaseURL('wss://session.example');      // → throw: only allows http/https\nDEFAULT_GATEWAY_BASE_URL;                              // → 'https://acosmi.com'\n\nconst c = new Client({ baseURL: 'https://gw.example' });\nc.getBaseURL();   // → 'https://gw.example'  (= c.getServerURL())\nc.apiURL('/agent-runs'); // → 'https://gw.example/api/v4/agent-runs'\n```\n\n详见 `docs/audit/sdk-remote-control-contract-2026-05-27.md`。\n\n### 用户隔离 (v1.6.0+)\n\n`ChatRequest.endUserId` — 业务侧终端用户的稳定标识, **跨 provider 通用语义**, 不绑死 DeepSeek。SDK 自动按 wire-format 注入: OpenAI 顶层 `user_id` / Anthropic `metadata.user_id`; 网关侧校验并派生后送达上游, 命中三项隔离能力 (内容安全 / KV-cache / 调度)。\n\n**约束**: 字符集 `[a-zA-Z0-9_-]+`, 长度 ≤ 512, **禁止包含 PII** (邮箱 / 手机 / 真名等)。可用 `validateEndUserId(s)` helper 自校验。\n\n```ts\nimport { validateEndUserId } from '@acosmi/sdk-ts';\n\nconst err = validateEndUserId(uid);\nif (err) {\n  // 处理: PII / 长度 / 字符集不合规\n  throw new Error(err);\n}\n```\n\n不传 `endUserId` 时网关从认证身份 HMAC-SHA256 自动派生 32 字符稳定 id, 业务无感知。流式 + 同步 + Anthropic + OpenAI 四条路径均支持。\n\n## 图片 / 视频生成（托管模型网关，v2.2+）\n\n图片生成、视频生成与文本对话**同属托管模型网关**（同一个 `Client`、同一套 `models:chat` 鉴权面），**不是工作流**。只有 `capabilities.supports_image_generation` / `supports_video_generation` 为真的模型可调；计费结算在营销系统，SDK / 网关只做调用与用量上报。\n\n**先按 capability 筛模型**：\n\n```ts\nconst models = await client.listModels();\nconst imageModel = models.find((m) => m.capabilities?.supports_image_generation);\nconst videoModel = models.find((m) => m.capabilities?.supports_video_generation);\n```\n\n> 这两个能力字段随 catalog 下发：`capabilities` 是 `ManagedModel` 的必填字段，`listModels` 对 `capabilities` 对象**原样透传**（保持 wire snake_case，不归一化为 camelCase）。字段为可选——上游未声明时为 `undefined`（按 false 处理），**严禁用模型名 substring 推断**。注意目前**没有**图片/视频生成的专用 catalog helper（不像 `inputModalities` 那条线有 `modelSupportsImageInput` 等），按上面直接读字段筛即可。\n\n### 图片生成（同步）\n\n`generateImage` 一次调用直接拿图（内部超时与 chat 同级 11min，容纳上游耗时；DashScope 万相图片在网关内部建任务并轮询到终态后同步返回，对 SDK 仍是一次调用）。\n\n```ts\nconst img = await client.generateImage(imageModel!.id, {\n  prompt: '一只在雪地里奔跑的柴犬，电影感光影',\n  width: 1024,   // 缺省 1024\n  height: 1024,  // 缺省 1024\n  style: 'cinematic', // 可选\n});\nconsole.log(img.url ?? img.b64_json); // ImageGenerationResponse: url / b64_json / revised_prompt / requestId\n```\n\n### 视频生成（异步：建任务 → 轮询）\n\n`generateVideo` 返回 `taskId`，再用 `pollVideoTask` 轮询到 `completed`。`durationSeconds` 务必回传创建时的秒数——网关在 `completed` 时据此上报真实视频时长用量。\n\n```ts\nconst task = await client.generateVideo(videoModel!.id, {\n  prompt: '海浪拍打礁石的慢镜头',\n  resolution: '1280x720', // 可选\n  duration: 5,            // 秒\n});\n\nlet res = task;\nwhile (res.status !== 'completed' && res.status !== 'failed') {\n  await new Promise((r) => setTimeout(r, 3000));\n  res = await client.pollVideoTask(videoModel!.id, task.taskId, 5); // 回传 duration=5\n}\nif (res.status === 'failed') throw new Error(res.error);\nconsole.log(res.videoUrl); // VideoTaskResponse: taskId / status / videoUrl / error / requestId\n```\n\n**请求字段速查**\n\n| | 图片 `ImageGenerationRequest` | 视频 `VideoGenerationRequest` |\n| --- | --- | --- |\n| 必填 | `prompt` | `prompt` |\n| 尺寸 | `width` / `height`（缺省 1024） | `resolution`（如 `\"1280x720\"`） |\n| 其他 | `style` | `duration`（秒） |\n\n> 字段是网关**通用契约**；某厂商支持哪些取值由上游模型决定（如万相尺寸 `宽*高` 星号格式由网关代转）。网关适配范围：OpenAI 兼容图片 + 火山引擎（即梦/豆包）视频 + DashScope 通义万相（wanx）原生异步任务（图片+视频）。\n\n## 思考档位 `thinking_levels`（v2.18+）\n\n`ManagedModel.thinking_levels?: string[]` —— 该模型**可选的思考深度档位 id**，升序下发，取值是 `ThinkingOff` / `ThinkingHigh` / `ThinkingMax`（`'off'` / `'high'` / `'max'`）的子集。网关按「admin 声明 ∩ wire 层真投递」读时派生；`listModels` 对它**原样透传**（与 `supported_formats` / `preferred_format` 同为 wire snake_case，不做 camelCase 重映射）。\n\n**三态必须分开处理 —— `[]` 与 `undefined` 不是同一件事**：\n\n```ts\nconst m = (await client.listModels()).find((x) => x.id === modelId)!;\nif (m.thinking_levels === undefined) renderThinkingUnknown();     // 旧网关未播报 → 按\"未知\"处理\nelse if (m.thinking_levels.length === 0) hideThinkingPicker();    // 该模型没有思考档 → 不渲染档位选择\nelse renderThinkingPicker(m.thinking_levels);                     // 升序档位, 原样渲染\n```\n\n缺失时**严禁**自己推档或按模型名 substring 猜 —— 档位值域归网关模型目录所有，靠运营动作扩张，不靠发 SDK 新版（同 `inputModalities` 开放值域的教训，见 v2.14.0）。该字段与 `capabilities.supports_thinking` / `supports_max_effort` 是**正交**两件事：后者描述模型有无该能力，前者描述**这条链路上此刻真能选哪几档**。\n\n## 向量 / 重排序（托管模型网关，v2.9+）\n\n向量（embedding）与重排序（rerank）走与 chat 同一套**会员计费**（Hold→Settle→Release，按 `total_tokens` 套 input 费率），上游接阿里云百炼 DashScope。仅 `capabilities.supports_embedding` / `supports_rerank` 的托管模型可用；具体上游模型名由管理员在后台自填。\n\n### 向量（同步）\n\n`embeddings` 一次调用拿向量，响应即 OpenAI `/v1/embeddings` 标准格式。\n\n```ts\nconst models = await client.listModels();\nconst embModel = models.find((m) => m.capabilities?.supports_embedding);\n\nconst resp = await client.embeddings(embModel!.id, {\n  input: ['第一段文本', '第二段文本'], // string 或 string[]\n  dimensions: 1024,                   // 可选\n});\nconsole.log(resp.data[0].embedding);  // number[]\nconsole.log(resp.usage.total_tokens);\n```\n\n### 重排序（同步）\n\n`rerank` 传入 query + 候选文档，返回按相关性排序的下标与得分。\n\n```ts\nconst rerankModel = models.find((m) => m.capabilities?.supports_rerank);\n\nconst resp = await client.rerank(rerankModel!.id, {\n  query: '什么是文本排序模型',\n  documents: ['文档A', '文档B', '文档C'],\n  top_n: 3,              // 可选\n  return_documents: true, // 可选：结果内回传文档原文\n});\nfor (const r of resp.results) {\n  console.log(r.index, r.relevance_score, r.document);\n}\n```\n\n> 重排序对外是**统一扁平契约**；网关内部按模型绑定的线路（DashScope 原生嵌套 `gte-rerank-v2` / OpenAI 兼容扁平 `qwen3-rerank`）自动转换并归一化响应，SDK 侧无需关心。\n\n### 多模态向量 / 重排序（v2.10+，text / image / video）\n\n对接 DashScope `qwen3-vl-embedding`（多模态向量）与 `qwen3-vl-rerank`（多模态重排序）。向量用 `contents` 取代 `input`；重排序的 `query` / `documents` 接受多模态对象（`{ text? , image?, video? }`）。适用于自建搜索引擎的图文 / 视频检索。\n\n```ts\n// 多模态向量：图 / 视频 / 文本混合\nconst emb = await client.embeddings(mmEmbModel!.id, {\n  contents: [{ text: '一只橘猫' }, { image: 'https://…/cat.png' }, { video: 'https://…/clip.mp4' }],\n  output_type: 'dense', // 可选\n  fps: 2,               // 可选：视频抽帧率\n});\n\n// 多模态重排序：query 与候选可为多模态对象，也可混入纯文本字符串\nconst rr = await client.rerank(mmRerankModel!.id, {\n  query: { text: '红色跑车' },\n  documents: [{ image: 'https://…/car.png' }, { video: 'https://…/road.mp4' }, '一段描述文字'],\n  fps: 1.5, // 可选\n});\n```\n\n> 文本调用完全向后兼容：`input` / 字符串 `query` / 字符串 `documents` 行为不变。多模态托管模型须由管理员在后台勾选对应能力位与输入模态（text/image/video）。\n\n## 双格式红线（设计核心）\n\nSDK 同时提供 **Anthropic + OpenAI 两条 endpoint**，**等地位**，对应两个不同下游产品。\n\n| Adapter            | 端点                                  | 用途                                |\n| ------------------ | ------------------------------------- | ----------------------------------- |\n| `AnthropicAdapter` | `POST /managed-models/:id/anthropic`  | Anthropic 原生格式（含 thinking 等）|\n| `OpenAIAdapter`    | `POST /managed-models/:id/chat`       | OpenAI 兼容格式（DeepSeek/GLM 等）  |\n\n路由由 `getAdapterForModel(model)` 按 ManagedModel 的 `preferred_format` / `supported_formats` 决策（wire-format 字段，snake_case 与上游 Go json tag 严格对齐；ManagedModel 上其余顶层字段如 `modelId` / `isEnabled` / `inputModalities` 走 camelCase，详见 `src/models/types.ts`）：\n\n1. `preferred_format` 非空 **且**该格式在 `supported_formats` 内（或 `supported_formats` 未声明）→ 按值（`anthropic` | `openai`）\n2. `supported_formats` 含 `anthropic` → AnthropicAdapter\n3. `supported_formats` 含 `openai` → OpenAIAdapter\n4. 两字段均空（旧上游）→ 按 `provider` 名回落\n\n> **格式一致性护栏（v2.5.1）**：第 1 步收紧后，`preferred_format` 与 `supported_formats` 矛盾时（如 `preferred_format=anthropic` 但 `supported_formats=[openai]`）不再盲信 `preferred_format`，而落到第 2/3 步按实际支持的格式选择，避免路由到模型并不支持的端点。`supported_formats` 未声明（旧上游）时 `preferred_format` 仍直接采信，向后兼容。\n\n`client.chat()` / `client.chatStream()` 内部自动调 `getAdapterForModel`，使用方无需关心。\n\n## 多端\n\n| 平台            | HTTP   | SSE              | WebSocket                                | TokenStore                       |\n| --------------- | ------ | ---------------- | ---------------------------------------- | -------------------------------- |\n| 浏览器          | fetch  | ReadableStream   | WebSocket                                | `LocalStorageTokenStore`         |\n| Node ≥18        | fetch  | ReadableStream   | WebSocket（Node 22+）/ `ws`（18-21 自装）| `FileTokenStore` (~/.acosmi/)    |\n| Deno / Bun      | fetch  | ReadableStream   | WebSocket                                | File                             |\n\n构建产物：`dist/{node,browser}/` 各自 ESM + CJS + `.d.ts`，主入口约 120 KB。\n\n> **安全权衡（集成方必读）**：\n> - **浏览器 `LocalStorageTokenStore`**：token 落在 `localStorage`，受同源 XSS 威胁可被读取，且不随标签页关闭清除。仅在可接受该风险的场景使用；高安全场景应改用内存 store + 服务端 session/同源代理（Route Handler）持有 token。\n> - **Notifications WebSocket 把 token 放 URL query（`?token=`）**：query string 可能进入 nginx access log / 代理日志 / 浏览器历史。浏览器端 WebSocket 无法设自定义 header 是此设计的根因；Node 环境（`ws` 包支持 `options.headers`）应优先 header 或 `Sec-WebSocket-Protocol` 子协议承载 token，部署上需对 WS 端点关闭 query 日志。\n\n## 流式\n\n```ts\nconst stream = client.chatStream('claude-opus-4-7', {\n  messages: [{ role: 'user', content: '写一首诗' }],\n  max_tokens: 1024,\n});\n\nfor await (const ev of stream) {\n  if (ev.event === 'content_block_delta' && ev.data) {\n    // 解析 delta 输出 token\n    process.stdout.write(parseDelta(ev.data));\n  }\n}\n```\n\n`chatStreamWithUsage()` 返回带 usage/error/sources 标签的 AsyncIterable，便于聚合统计（详见 `src/core/client.ts`）。\n\n### 上游活性回调 `onUpstreamActivity`（v2.16+）\n\n如果你的集成层自带**流空闲看门狗**（\"多久没收到事件就判定连接死了\"），必须接这个回调，否则看门狗会误杀健康连接。\n\nSSE 上有两类**有字节、无事件**的情形，看门狗对它们完全失明：\n\n1. 上游（如 DeepSeek）与网关在开始推理前发的保活注释行 `: keep-alive` —— 按 SSE 规范它们不构成事件，被 `isSSECommentLine` 跳过；\n2. OpenAI 格式下 converter 对某些 data 行返回零事件。\n\n两种情形连接都健康、字节都在流动。**心跳只有在抵达做判决的那一层时才叫心跳** —— 网关补了心跳而 SDK 吞掉，等于没补。\n\n```ts\nlet lastActivity = Date.now();\n\nconst stream = client.chatMessagesStream(\n  modelId,\n  { messages, max_tokens: 4096 },\n  abortSignal,\n  () => { lastActivity = Date.now(); },   // ← 每条 SSE 行触发一次，含注释行\n);\n```\n\n语义是「链路刚刚有动静」，不是「来了一个事件」；对每条 SSE 行触发一次，早于任何过滤与解析。回调抛出的错误会被吞掉且不中断流（旁路信号不该有能力杀死主链路）。不传时行为逐字节不变。\n\n### 网关请求 ID 回调 `onGatewayRequestID`（v2.19+）\n\n如果你要把**用户可见的失败**关联回上游那一次网关调用与它产生的计费行，接这个回调。\n\n网关在响应头 `X-Acosmi-Request-Id`（常量 `GATEWAY_REQUEST_ID_HEADER`）里下发 `consumeRequestID` —— 它就是 `managed_model_usage_logs.request_id` 的值，是能 join 到计费行的那个键。\n\n> ⚠️ 它**不是**网关的传输层 `X-Request-ID`。那一个独立生成、从不写进任何计费表，两者永不相等。用错的后果是恒空 join —— 不报错，只是下次事故照样查不动。\n\n```ts\nlet gatewayRequestId: string | undefined;\n\nconst stream = client.chatMessagesStream(\n  modelId,\n  { messages, max_tokens: 4096 },\n  abortSignal,\n  onUpstreamActivity,\n  id => { gatewayRequestId = id; },   // ← 响应头到达时触发，早于第一个事件\n);\n```\n\n回调在响应头到达后触发**至多一次**，且在第一个 SSE 事件之前 —— 因此它覆盖「流中段被掐断」「上游 200 但零事件」「HTTP 错误」全部形态；流内事件在「事件根本没来」的场景里恰恰不存在，而那正是最需要诊断的那一种。\n\n同步路径 `chatMessages` / `chat` 的第 4 个实参是同一个回调。\n\n网关没下发（旧版本 / 非托管路径）时回调**一次都不触发**，SDK 绝不合成占位值；流照常出。浏览器端消费方还需网关 CORS `Access-Control-Expose-Headers` 放行该头（网关 v2026-09-01 起已放行）。\n\n### 流式可选项 `ChatStreamOptions`（v2.19.5+）\n\n`chatStream` / `chatMessagesStream` 的**末位**可选实参。两项都是追加语义，不传时行为与既往逐字一致。\n\n```ts\nconst stream = client.chatMessagesStream(\n  modelId,\n  { messages, max_tokens: 4096 },\n  abortSignal,\n  onUpstreamActivity,\n  onGatewayRequestID,\n  {\n    requestTimeoutMs: 60 * 60 * 1000,        // ← 安全网，不是主判据\n    onResponseHeaders: h => {\n      const keepalive = h.get('X-Acosmi-Stream-Keepalive'); // 秒；缺失为 null\n      if (keepalive) armIdleWatchdog(Number(keepalive));\n    },\n  },\n);\n```\n\n- **`requestTimeoutMs`** —— 这一次流的**总时长**预算，从开始迭代算到流结束；与 `signal` 先到者生效，调用方 `break` 提前退出也会释放计时器。**缺席或非有限正数 = 不武装任何计时器**（流式链路历来只受调用方 `signal` 约束；`CHAT_REQUEST_TIMEOUT_MS` 只作用于非流式的 `chat` / `chatMessages`）。杀一条流的判据应当是**失去活性证据**（见上面的 `onUpstreamActivity`）而不是「活得太久」—— 这一条的职责只是给「看门狗本身坏掉」兜底，因此应当显著长于活性预算。\n- **`onResponseHeaders`** —— 在拿到响应之后、判断 `resp.ok` **之前**触发，因此 HTTP 错误响应上同样触发；401 刷新重试后由真正开始流的那次响应触发。网关的流控提示只存在于响应头里，等流内事件已经晚了，而最需要它的恰恰是一个事件都不来的流。与其它两个流式回调同构：旁路信号，回调抛错被吞掉且不中断流。\n\n### Sources SSE 四态分类（v2.15+）\n\n`sources: []` 是检索成功但没有可展示引用的合法零结果，不是传输损坏。需要精确区分状态的新 consumer 使用加性接口 `classifySourcesEvent()`：\n\n```ts\nimport { classifySourcesEvent, type StreamEvent } from '@acosmi/sdk-ts';\n\nfunction consume(event: StreamEvent) {\n  const result = classifySourcesEvent(event);\n  switch (result.kind) {\n    case 'not_sources':\n      return; // 交给其他 SSE 事件处理器\n    case 'empty_sources':\n      return; // 合法 no-op；不得升级为 turn/runtime fatal\n    case 'sources':\n      renderSources(result.value.sources);\n      return;\n    case 'malformed_sources':\n      recordCompatibilityCode(result.code); // 只记录稳定机器码，不记录来源内容\n  }\n}\n```\n\n分类器同时识别 SSE `event: sources` 和 JSON payload `type: \"sources\"`，校验数组、item、`title`、`url`、可选 `snippet` 与 `session_id` 的类型，并允许未知额外字段。JSON 无法解析但 SSE 已声明为 sources 时返回 `malformed_sources/invalid_json`。\n\n`parseSourcesEvent()` 保留给既有集成：它仍按历史宽松规则解析，空数组、缺失数组、非 sources 或 JSON 损坏仍返回 `null`，非空时仍只返回 `{ sources, session_id }`。它没有改为调用严格分类器，避免严格字段校验改变旧 consumer 对历史/第三方 frame 的接受范围。升级到 2.15.0 不要求关联方迁移；只有需要四态语义的调用方才采用新 API。\n\n## Agent Runs\n\n`client.agentRuns` 是下游产品接入 Acosmi 云端智能体循环的正式 SDK 边界。CrabDesign、CrabCode、CrabClaw 等产品应通过这里创建、流式消费、取消、查询和下载智能体任务，不要直连 Nexus 内部 `/api/v4/chat/completions`。\n\n服务端 Agent Run Gateway 会按认证上下文做 `tenantId + userId` 隔离，run 状态、SSE event、artifact 和 local tool result 都是 durable store；任务执行会进入 Acosmi 统一 entitlement 预扣/结算/释放链路。结算只使用 provider/ADK 透传的精确 usage；如果 provider 未返回 `exact: true` usage，服务端会释放 hold，不会使用估算 token 扣费。\n\n```ts\nimport { Client, allScopes } from '@acosmi/sdk-ts';\n\nconst client = new Client({ serverURL: process.env.ACOSMI_SERVER_URL! });\nawait client.login('CrabDesign', allScopes());\n\nconst run = await client.agentRuns.create({\n  appId: 'crabdesign',\n  mode: 'design',\n  sessionId: 'session-optional',\n  input: 'Create a landing page mockup for a fintech dashboard',\n  activeSkillIds: ['brand-system'],\n  knowledgeBaseIds: ['kb-product'],\n  localContextPolicy: {\n    enabled: true,\n    readonly: true,\n    maxBytes: 128_000,\n    allowedTools: ['read_file'],\n  },\n  artifactPolicy: { enabled: true, maxFiles: 10 },\n});\n\nfor await (const event of client.agentRuns.stream(run.runId, { throwOnError: false })) {\n  switch (event.type) {\n    case 'text_delta':\n      process.stdout.write(event.text);\n      break;\n    case 'reasoning_delta':\n      console.debug('[reasoning]', event.text);\n      break;\n    case 'local_tool_request': {\n      // SDK only defines the protocol. Product code owns local read-only tools.\n      const content = await readReadonlyLocalContext(event.name, event.input);\n      await client.agentRuns.submitLocalToolResult(run.runId, {\n        requestId: event.requestId,\n        ok: true,\n        content,\n      });\n      break;\n    }\n    case 'artifact': {\n      const file = await client.agentRuns.downloadArtifact(run.runId, event.artifact.id);\n      console.log('artifact', file.filename, file.contentType, file.data.byteLength);\n      break;\n    }\n    case 'error':\n      throw new Error(event.error.message);\n  }\n}\n\nawait client.agentRuns.cancel(run.runId); // safe to call from UI cancel buttons\n```\n\n本地工具桥是显式 opt-in：SDK 不内置任何 CrabDesign/CrabCode 专属文件读取逻辑。`local_tool_request` 由下游处理，结果通过 `submitLocalToolResult({ requestId, ok, content | error })` 返回；拒绝、超时和取消都由下游 handler 控制。`allowedTools` 必须使用稳定的 ASCII function name，例如 `read_file`。\n\n`stream(runId)` 支持 durable replay：断线后重新连接同一个 run，会先回放已持久化的 Agent Run SSE 事件，再继续消费运行中的事件。`usage` / `settle` 事件会暴露 `exact`、`cacheReadTokens`、`cacheCreateTokens` 等字段，便于下游展示真实结算状态。\n\n**`AgentRunStreamEvent` 完整事件类型**（union，详见 `src/agent-runs/types.ts`；上面示例只演示了 4 种常见分支）：\n\n| `type` | 触发 / 含义 | 关键字段 |\n| --- | --- | --- |\n| `run_started` | 流首事件，确认服务端已开始执行 | `runId`、`sessionId` |\n| `status` | 任务粗粒度状态变化 | `status` (`queued`/`running`/`completed`/`failed`/`cancelled`)、`message?` |\n| `text_delta` | 主要文本输出增量 | `text` |\n| `reasoning_delta` | 推理 / 思考过程增量（debug 用，不一定向终端用户展示） | `text` |\n| `tool_call` | Agent 发起内置 / 网关工具调用 | `id`、`name`、`input?` |\n| `tool_result` | 内置 / 网关工具调用结果 | `id`、`name?`、`result?`、`error?` |\n| `local_tool_request` | Agent 请求宿主提供本地只读工具结果，宿主须用 `submitLocalToolResult` 回填 | `requestId`、`name`、`input` |\n| `artifact` | 产出文件（图片 / 代码 / 文档等）；用 `downloadArtifact(runId, artifact.id)` 下载 | `artifact: AgentRunArtifact` |\n| `sources` | 网络检索 / RAG 来源信息 | `sources` |\n| `usage` | provider/ADK 透传的 token usage | `usage.exact`、`inputTokens`、`outputTokens`、`totalTokens`、`cacheReadTokens`、`cacheCreateTokens` |\n| `settle` | 服务端结算事件 | `settlement.status`、`tokenRemaining`、`callRemaining`、`exact`、`retryQueued` |\n| `error` | 失败事件（`throwOnError:true` 默认会转 `AgentRunStreamError` 抛出） | `error.code`、`error.message`、`error.stage`、`error.retryable` |\n| `done` | 流终止 | `runId`、`status` |\n\n### 远程控制 — CrabCode remote-control（v2.1.0）\n\n远程控制是 Agent Run 的一个独立 runtime（`runtime: 'crabcode_remote'`），用于把 CrabCode 子进程的会话/工具/权限循环经服务端适配成 C 端可消费的事件流。它**不复用** `agentRuns.stream` 的旧事件 union，事件协议另成一套（契约 §4 的 11 事件）。\n\n```ts\nimport { Client, remoteControlScopes } from '@acosmi/sdk-ts';\n\nconst client = new Client({ baseURL: process.env.ACOSMI_BASE_URL! });\n// 远控是高风险 scope，不在 allScopes() 内，必须显式申请\nawait client.login('CrabCode Remote', remoteControlScopes());\n\nconst run = await client.agentRuns.createRemoteRun({\n  appId: 'crabcode',\n  input: '重构这个函数并跑测试',\n  runtime: 'crabcode_remote', // 固定值\n  runner: 'cloud',            // 'cloud' | 'desktop' | 'local_embedded'\n  adapter: 'remote_io',       // 6 选 1，见下表\n  permissionPolicy: { shellAllowed: true, shellDenyList: ['rm', 'shutdown'], approvalTimeoutMs: 30_000 },\n  workspacePolicy: { readOnly: false, deniedPaths: ['/etc', '/root'] },\n});\n\nfor await (const ev of client.agentRuns.streamRemoteControl(run.runId)) {\n  switch (ev.type) {\n    case 'text_delta':         process.stdout.write(ev.text); break;\n    case 'permission_request': // 渲染审批卡片后回写决策 (仅 approved|rejected, 契约 §14)\n      await client.agentRuns.submitPermissionResult(run.runId, {\n        requestId: ev.requestId, decision: 'approved',\n      });\n      break;\n    case 'settle':             console.log('billed', ev.billed); break;\n  }\n}\n\n// 会话中途追加用户消息 (role 服务端硬编码 user, ≤64KB)\nawait client.agentRuns.submitUserMessage(run.runId, { content: '继续, 用方案B' });\n\nawait client.agentRuns.cancel(run.runId); // UI 中止走服务端 cancel control frame，不是 fetch abort\n```\n\n#### 远控管理面（v2.7.0）\n\n| 方法 | 端点 | 说明 |\n| --- | --- | --- |\n| `agentRuns.list(opts?)` | `GET /agent-runs` | 调用者自己的 run 列表（新→旧）；`{ runtime: 'crabcode_remote' }` 过滤远控 run，分页 `{records,total,page,pageSize}`。view 只含元数据，永不含 session token / policy / messages（契约 §6） |\n| `agentRuns.submitPermissionResult(runId, {requestId, decision, reason?})` | `POST /:runId/permission-results` | 回写 `permission_request` 决策；仅 `approved` \\| `rejected`（`timeout`/`cancelled` 由服务端产生）。409 = 远控会话已不可用 |\n| `agentRuns.submitUserMessage(runId, {content, requestId?})` | `POST /:runId/messages` | 会话中途追加用户消息；role 服务端硬编码 `user`（契约 §6 #5 防注入），返回服务端最终幂等键 |\n| `agentRuns.revealRemoteToken(runId)` | `POST /:runId/remote-token` | **仅 desktop runner / desktop launcher 用**：一次性 session token（重复调用 409）。token 永不落浏览器存储，native 层接收后只注入 CrabCode 子进程 env；响应含 `workspace`（用户声明的项目目录，契约 §18.3 r4） |\n\n**metadata 约定键（契约 §18.3 r4）**：`metadata.title`（列表显示标题，缺省服务端从 input 首行派生）、`metadata.workspace`（期望项目目录，经 `revealRemoteToken().workspace` 下发给桌面端采纳）。常量 `AGENT_RUN_META_TITLE` / `AGENT_RUN_META_WORKSPACE`。服务端上限 ≤32 条 / 键 ≤64B / 值 ≤2KB。\n\n#### BYOK — 用户自有模型密钥（v2.7.0，契约 §18.2）\n\n`client.crabcodeByok` 管理 BYO 模型密钥（守卫 `remote_control` scope）；创建后把 `credentialRef` 传给 `createRemoteRun({ byokCredentialRef })`（仅 `runner: 'cloud'`）。明文一次性提交、服务端加密落库后即弃，所有读取只回 masked 视图（ref + fingerprint）——解密只发生在网关 cloud runner 启动时的子进程 env 注入点。\n\n```ts\nconst cred = await client.crabcodeByok.create({\n  provider: 'deepseek',          // anthropic|openai|deepseek|dashscope|zhipu|volcengine|custom\n  plaintext: process.env.MY_KEY!, // 一次性提交; SDK/服务端永不回传\n  name: '我的 DeepSeek 钥匙',\n});\nawait client.agentRuns.createRemoteRun({\n  appId: '', input: '…', runtime: 'crabcode_remote', runner: 'cloud', adapter: 'remote_io',\n  byokCredentialRef: cred.credentialRef,\n});\nawait client.crabcodeByok.rotate(cred.credentialRef, 'sk-new'); // ref 不变, fingerprint 更新\nawait client.crabcodeByok.revoke(cred.credentialRef);           // 软吊销 + 抹密文, 幂等\n```\n\n要点：\n\n- **scope 隔离**：远控用专用 `remote_control` scope（服务端展开为 `remote_control:{agent-run,session-control,permission-response}` 三子项）；**绝不复用** `models:chat`/`ai`，且 `allScopes()` 不含它——桌面登录不会自动获得远控权限。用 `remoteControlScopes()` 或显式 `[...allScopes(), ScopeRemoteControl]`。\n- **adapter / runner**（`AdapterKind` / `RunnerKind`，契约 §3 placement 矩阵）：\n\n  | adapter | 适用 |\n  | --- | --- |\n  | `remote_io` | 单次纯会话流（CrabCode `--sdk-url` ws/wss） |\n  | `app_server_tcp_ws` | Desktop 已登录、本机 AppServer loopback RPC |\n  | `bridge_ccr` | 云端/托管 runner，session pool + heartbeat |\n  | `app_server_uds` / `stdio_stream_json` | 同机父子进程内嵌 |\n  | `tauri_managed_app_server` | Tauri native 托管 lifecycle |\n\n- **wire 约定（契约 §12-§14，按平面分）**：远控属 **snake_case 平面**——`permissionPolicy`/`workspacePolicy` 等 SDK camelCase 入参由 SDK 翻译为 snake_case wire（`shell_allowed`/`approval_timeout_ms`/`denied_paths`…）；时长一律**整数毫秒**（`approvalTimeoutMs`，禁 `time.Duration` 上 wire）。事件帧为**扁平信封**（`type`+`seq`+字段同级，snake_case），SDK 用 `parseRemoteControlEvent(raw)` 翻译为强类型 `RemoteControlEvent`。\n- **11 事件 union**（`RemoteControlEvent`，契约 §4）：`text_delta` / `reasoning_delta` / `tool_call` / `tool_result` / `permission_request` / `permission_result` / `usage` / `settle` / `status` / `error` / `done`。`error` **恒为非终结**（终结性错误由 `done.reason`/`done.finalStatus` 承载），`done` / `settle` 才终结流——故 `streamRemoteControl` 不接受 options、从不抛异常；用 `isTerminalRemoteEvent(ev)` 判终结。\n- **辅助导出**：`parseRemoteControlEvent` / `isTerminalRemoteEvent` / `AdapterKind` / `RunnerKind` / `RemoteControlEvent` / `RemoteSessionPlacement` / `PermissionPolicy` / `WorkspacePolicy`（`src/agent-runs/remote-control.ts`）。\n\n## Chat Bridge（第三方聊天平台桥接，v2.7.0 · Phase 7B 管理面 CRUD 落地）\n\n`client.chatBridge` 提供第三方聊天平台（飞书/企微/钉钉/Slack/Teams/Telegram/WhatsApp）集成与凭证的管理面 CRUD。**云端控制台与下游（CrabCode 等）调的是同一组端点、同一份按租户隔离的数据**——任一端创建/修改，另一端即时可见，无需同步机制。平台 webhook adapter（验签/收发消息）是 Phase 8 后端工作，SDK 不承载。\n\n```ts\nimport { Client, chatBridgeScopes } from '@acosmi/sdk-ts';\n\nconst client = new Client({ baseURL: process.env.ACOSMI_BASE_URL! });\n// chat_bridge 是高风险 scope, 不在 allScopes() 内, 必须显式申请\nawait client.login('CrabCode 平台接入', chatBridgeScopes());\n\n// 1. 创建集成 (chat_bridge:write); 平台原始 ID 服务端只存 SHA256 hash\nconst integ = await client.chatBridge.createIntegration({\n  appId: 'crabcode', platform: 'feishu', region: 'cn',\n  workspaceId: 'ou_xxx', botId: 'cli_xxx',\n});\n\n// 2. 存凭证 (明文一次性提交; 响应恒为 masked 视图, 永不回明文/密文)\nconst cred = await client.chatBridge.storeCredential(integ.id, {\n  secretKind: 'app_secret', plaintext: process.env.FEISHU_SECRET!,\n});\n\n// 3. 激活\nawait client.chatBridge.updateIntegrationStatus(integ.id, 'active');\n\n// 查询 (chat_bridge:read) / 轮换与吊销 (chat_bridge:rotate, 高风险独立 scope)\nawait client.chatBridge.listIntegrations('crabcode');\nawait client.chatBridge.listCredentials(integ.id);\nawait client.chatBridge.rotateCredential(integ.id, 'app_secret', 'new-secret');\nawait client.chatBridge.revokeCredential(cred.credentialRef);\n```\n\n类型守卫与 branded ref 仍从根入口导出：\n\n```ts\nimport { isPlatform, asCredentialRef, type Platform } from '@acosmi/sdk-ts';\nisPlatform('feishu');             // → true（7 平台枚举运行时守卫）\nasCredentialRef('cred_abc...');   // → branded CredentialRef（防 plaintext 误传）\n```\n\n边界（契约 §6 + §12 + §16）：\n\n- 平台 secret（bot token / signing key / AES key）**只在 `storeCredential`/`rotateCredential` 请求体出现一次**，服务端加密落库后即弃；SDK 公共面只见 `CredentialRef`（`cred_<base32>`）+ `fingerprint` + 脱敏 metadata，**永不**出现 ciphertext / plaintext（`ChatCredentialPublic` 编译期即无密文字段）。\n- **wire 平面**：请求体为 snake_case（SDK 自动转换），响应资源视图走 nexus-v4 model-direct 序列化为 **camelCase**（与 remote-control 的 snake_case 平面不同，详见契约 §12）。`ChatIntegration.configJson` 服务端从不返回（`json:\"-\"`），写入走 `createIntegration({ configJson })`。\n- 平台原始 thread / sender / workspace ID 一律 SHA256 hash 后入库（`threadHash`/`senderHash`/`workspaceIdHash`）。\n- scope 三档最小授权：`chat_bridge:read`（查询）/ `chat_bridge:write`（创建集成/存凭证）/ `chat_bridge:rotate`（轮换/吊销，高风险）；分组 scope `chat_bridge` 自包含三子项。跨租户引用服务端一律 404。\n\n## 认证\n\n### 浏览器内 / 自动 OAuth（推荐）\n\n```ts\nawait client.login('My App', allScopes());     // 自动跳转浏览器完成 OAuth\nconst token = await client.ensureToken();      // 拿到当前有效 access token\n```\n\n### 手动 OAuth（CLI / 自定义流程）\n\n底层 helper 适用于自管 token 的 CLI / 自定义授权 UI。**大多数场景直接用 `client.login(appName, scopes)` 即可**——它内部封装了下面全部步骤。完整可运行示例见 [`examples/auth-oauth-flow.ts`](./examples/auth-oauth-flow.ts)。\n\n```ts\nimport {\n  discover,           // RFC 8414 元数据发现\n  register,           // RFC 7591 动态客户端注册\n  authorize,          // 本地 loopback PKCE（仅 Node）\n  exchangeCode,       // code + verifier → token\n  refreshToken,       // 续期\n  newTokenSet,        // 把 TokenResponse 包成可持久化 TokenSet\n  FileTokenStore,\n  allScopes,\n} from '@acosmi/sdk-ts';\n\nconst meta = await discover(process.env.ACOSMI_SERVER_URL!);\nconst reg = await register(meta, 'My CLI');            // 不接 scopes 参数\nconst scopes = allScopes();\n\n// authorize 返回 { result, verifier }，result.code + result.redirectURI 给 exchangeCode\nconst { result, verifier } = await authorize(meta, reg.client_id, scopes, {\n  handler: (ev) => {\n    if (ev.type === 'auth_url') console.log('open in browser:', ev.url);\n  },\n});\n\nconst tokenResp = await exchangeCode(\n  meta,\n  reg.client_id,\n  result.code,\n  result.redirectURI,      // 来自 authorize 返回；不是手动构造的 redirect_uri\n  verifier,                 // 来自 authorize 返回；不是 result.* 上的字段\n);\n\nconst tokens = newTokenSet(tokenResp, reg.client_id, process.env.ACOSMI_SERVER_URL!);\nawait new FileTokenStore('./tokens.json').save(tokens);\n```\n\n> **state 语义（v2.17.0 起）**：桌面 loopback 流程自动生成 32 字节随机 `state` 并对 `/callback` 的一切形态先行校验 —— 恰好一个且严格等值，缺失 / 重复 / 错值一律以错误码 `state_mismatch` 拒绝本次登录并关闭 listener（含携带 OAuth error 的回调；用户真拒绝须回传正确 state 才结算为 `auth_denied`）。调用方零改动：`state` 由 SDK 内部管理，不出现在 `authorize()` 的公开签名里。授权服务器按 RFC 6749 §4.1.2.1 在**错误响应**上也必须原样回传 `state`（Acosmi 官方 consent 页已适配）。\n>\n> 浏览器侧（无法启 loopback HTTP server）请改用 v1.4.0+ Web OAuth 原语 `discoverWebOAuthMetadata` + `registerWebOAuthClient` + `createWebAuthorizationRequest` + `completeWebAuthorizationRequest`，由调用方实现 popup / 同窗口 redirect handler，SDK 负责 PKCE / state 校验 / token 兑换。\n\n### Token 持久化\n\n```ts\nimport { Client, FileTokenStore, LocalStorageTokenStore } from '@acosmi/sdk-ts';\n\n// Node — 默认 ~/.acosmi/tokens.json，可自定义路径\nconst client = new Client({ serverURL: process.env.ACOSMI_SERVER_URL!, store: new FileTokenStore('./my-tokens.json') });\n\n// 浏览器 — 自动用 LocalStorage（无 LocalStorage 时退化为内存）\n```\n\n## API 总览\n\n| 模块         | 主要方法                                                                             |\n| ------------ | ------------------------------------------------------------------------------------ |\n| **Client 构造** | `new Client(cfg)`（同步），`Client.create(cfg)`（async；预加载已有 TokenStore）            |\n| **Chat**     | `chat`, `chatStream`, `chatStreamWithUsage`, `chatMessages`, `chatMessagesStream`, `buildChatRequest` |\n| **图片 / 视频生成**（v2.2.0+） | `generateImage`（同步）, `generateVideo`（建异步任务）, `pollVideoTask`（轮询）；仅 `capabilities.supports_image_generation` / `supports_video_generation` 模型可用 |\n| **向量 / 重排序**（v2.9.0+） | `embeddings`（同步）, `rerank`（同步）；仅 `capabilities.supports_embedding` / `supports_rerank` 模型可用 |\n| **Agent Runs** | `agentRuns.create`, `agentRuns.stream`, `agentRuns.run`, `agentRuns.cancel`, `agentRuns.get`, `agentRuns.listArtifacts`, `agentRuns.downloadArtifact`, `agentRuns.submitLocalToolResult`, `agentRuns.runWithLocalTools` |\n| **Agent Runs — 远程控制**（v2.1） | `agentRuns.createRemoteRun`, `agentRuns.streamRemoteControl`；helper：`parseRemoteControlEvent`, `isTerminalRemoteEvent`；scope：`remoteControlScopes()` / `ScopeRemoteControl`（不进 `allScopes()`） |\n| **Chat Bridge**（v2.1 · types-only） | 无 client 方法（Phase 7B 后端落地）；导出类型守卫 `isPlatform`, `isRegion`, `isIntegrationStatus`, `isChannelInboundEvent`, `asCredentialRef` |\n| **Auth — 内置 Loopback OAuth** | `login`, `loginWithHandler`, `logout`, `ensureToken`, `forceRefresh`, `isAuthorized`, `getTokenSet` |\n| **Auth — 手动 OAuth 原语** | `discover`, `discoverWithProfile`, `register`, `authorize`, `exchangeCode`, `refreshToken`, `revokeToken`, `generateState` |\n| **Auth — 浏览器 Web OAuth (v1.4.0+)** | `discoverWebOAuthMetadata`, `registerWebOAuthClient`, `createWebAuthorizationRequest`, `completeWebAuthorizationRequest` |\n| **Models**   | `listModels`, `listModelsWithStatus`, `getModelCapabilities`, `getQuotaSummary`, `ensureModelCached`, `modelSupportsInputModality`, `modelSupportsImageInput`, `findFirstModelByInputModality`, `findDesktopVisualUnderstandingModel` |\n| **Skills**   | `browseSkillStore`, `browseSkills`, `browseSkillsList`, `getSkillDetail`, `getSkillSummary`, `resolveSkill`, `installSkill`, `downloadSkill`, `uploadSkill`, `generateSkill`, `optimizeSkill`, `validateSkill`, `certifySkill`, `getCertificationStatus` |\n| **Tools**    | `listTools`, `getTool`                                                               |\n| **Wallet**   | `getWalletStats`, `getWalletTransactions`                                            |\n| **Entitlements** | `getBalance`, `getBalanceDetail`, `listEntitlements`, `listConsumeRecords`, `claimMonthlyFree`, `getByModel`, `listBuckets`, `listCoefficients`, `invalidateCoefficientCache` |\n| **Entitlements — 窗口重置券**（v2.13.0+） | `getWindowResetSummary`（邀请奖励券总览）, `redeemWindowReset`（核销一张券清空当前窗口已用量；`clientRequestId` 为幂等键） |\n| **Packages** | `listTokenPackages`, `getTokenPackageDetail`, `buyTokenPackage`, `getOrderStatus`, `listMyOrders`, `waitForPayment` |\n| **Notifications** | `listNotifications`, `getUnreadCount`, `markNotificationRead`, `markAllNotificationsRead`, `deleteNotification`, `registerDevice`, `unregisterDevice`, `listNotificationPreferences`, `updateNotificationPreference` |\n| **Notifications — WebSocket** | `connect`, `disconnect`, `isConnected` (实时推送订阅；浏览器走原生 WebSocket，Node 18-21 需自装 `ws`，Node 22+ 用原生) |\n| **Bug Report** | `submitBugReport`, `getBugReport`                                                  |\n| **Web Search** | `newWebSearchTool` (factory)                                                       |\n| **Subscription**（v1.7.0+；v2.6.0 +会员查询） | `listPlans`, `getPlanByCode`（v2.1+）, `getMembership`（v2.6+）, `getSubscriptionTier`（v2.6+）, `subscriptionPrecheck`（v2.6+）, ~~`listUserSubscriptions`~~（deprecated，改用 `getMembership`） |\n| **Pricing**（v1.7.0+） | `getPricingConfig`, `quoteCompliance`                                            |\n| **Products**（v1.7.0+） | `getProductBySlug`, `listProductsByFamily`, `listComplianceSkus`, `listPublicModels` |\n| **Casehall — 法律案件**（v1.8.0+） | `listLawyers`, `getLawyer`, `submitCaseLead`, `listMyCaseLeads`, `getMyCases`, `bookConsultation`, `listMyConsultations`, `listMyLegalOrders`, `listLegalSKUs`, `getMyLawyerCredentialStatus`（v2.0.0+） |\n| **Enterprise — 企业席位**（v1.8.1+） | `listMyEnterprises`, `getEnterprise`, `inviteMember`, `listEnterpriseMembers`, `listOrgSubscriptions`, `listSeats`, `assignSeat`, `revokeSeat`, `getOrgConsumeReport`, `getMyEnterpriseKycStatus`（v2.0.0+） |\n| **Finance — 财务**（v1.9.0+） | `listMyInvoices`, `requestInvoice`, `listMyRefunds`, `requestRefund`, `listMyCorporateTransfers`, `initiateCorporateTransfer`, `uploadCorporateTransferProof` |\n| **Compliance — 证据 / 章戳 / 公开验真** | `compliance.createEvidenceAsset`, `compliance.getEvidenceAsset`, `compliance.verifyEvidencePublic`（匿名公开验真，v1.3.2+）, `compliance.issueTimestamp`, `compliance.issueTimestampForAsset`, `compliance.getTimestamp`, `compliance.verifyTimestamp`, `compliance.waitForTimestampVerified`, `compliance.buildEvidencePackage` |\n| **Compliance — 报告** | `compliance.createReport`（写，带 `Idempotency-Key`）, `compliance.getReport`, `compliance.publishReport`（step-up + 写）, `compliance.downloadReport` |\n| **Compliance — 签署 envelope** | `compliance.createSigningEnvelope`（写）, `compliance.getSigningEnvelope`, `compliance.signEnvelope`（step-up + gate + 写）, `compliance.createH5SigningUrl`（step-up + gate + 写）, `compliance.syncSigningEnvelopeStatus`（写） |\n| **Compliance — 用印审批** | `compliance.submitSealApproval`（写）, `compliance.approveSealApproval`（step-up + 写）, `compliance.rejectSealApproval`（写）, `compliance.cancelSealApproval`（写）, `compliance.listPendingSealApprovals`, `compliance.getSealApproval` |\n| **Compliance — Provider Request** | `compliance.getProviderRequest`, `compliance.waitForProviderRequestTerminal`, `compliance.classifyError` |\n| **Compliance — 分页列表** | `compliance.listEvidenceAssets`, `compliance.listTimestamps`, `compliance.listEvidencePackages`, `compliance.listReports`, `compliance.listSigningEnvelopes`, `compliance.listSealApprovals`, `compliance.listSealUses`（均返回 `PageResult<T>`） |\n| **Compliance — 能力与操作投影** | `compliance.getCapabilities`, `compliance.getFeatureGate`, `compliance.listOperations`, `compliance.getOperation` |\n| **Compliance — TSA 只读视图** | `compliance.listTsaProviders`, `compliance.getTsaStats` |\n| **Compliance — envelope 收尾** | `compliance.listEnvelopeContracts`, `compliance.listEnvelopeProviderRequests`, `compliance.voidEnvelope`（`void` 为写、带 `Idempotency-Key`） |\n| **Compliance — 合同模板** | `compliance.createContractTemplate`, `compliance.updateContractTemplate`, `compliance.deleteContractTemplate`, `compliance.getContractTemplate`, `compliance.listContractTemplates`, `compliance.uploadContractTemplatePdf`, `compliance.publishContractTemplate`, `compliance.archiveContractTemplate`, `compliance.listContractTemplateVersions`（写均带 `Idempotency-Key`） |\n\n完整签名见 `dist/node/index.d.ts`，IDE 自带补全。\n\n### 跨域共享 DTO（`shared`，v1.5.0）\n\n`src/shared/` 收口跨域基础设施类型，从根入口直接导出，供各业务域统一引用：\n\n| 文件 | 导出 | 说明 |\n| --- | --- | --- |\n| `pagination` | `PageRequest`、`PageResult<T>`、`SortDirection` | `PageResult<T>` 是 `YudaoPageResult<T>` 的别名，全 SDK 单一分页结果结构 |\n| `operation` | `OperationId`、`OperationSource`、`OperationStatus`、`VerifyStatus`、`IdempotencyKey`、`IdempotencyKeyHeader`、`ProviderRequestStatus` | `operationId` 跨来源关联键；`IdempotencyKeyHeader` 写接口幂等键 header 单一真相源 |\n| `retry-advice` | `RetryAdvice`、`RetryAdviceReason`、`retryReasonForComplianceKey()`、`retryReasonForOAuthError()`、`complianceErrorToRetryAdvice()` | 统一失败补救建议——**叠加**在 `RetryPolicy` / `ComplianceErrorInfo` 之上，不替换 |\n| `principal` | `PrincipalRef`、`TenantRef`、`ApiClientRef` | 轻量身份 / 租户引用 |\n| `gate` | `FeatureGateStatus`、`FeatureGateState`、`StepUpStatus`、`GateQuota`、`BillingPreflightResult` | gate / capability / step-up / preflight 查询形态 |\n\n> 这些是为后续平台控制面（`tenant` / `iam` / `operations` / `gateway` 等）与\n> `compliance` 分页 / gate 能力预沉淀的【共享原语】；消费这些类型的命名空间方法\n> 须待对应后端端点就绪后才落地，当前 8 个占位命名空间尚未从根入口导出。\n\n### `sanitize` 命名空间（历史消息清理）\n\n`@acosmi/sdk-ts` 把 `src/sanitize/` 整体以命名空间方式导出（`import { sanitize } from '@acosmi/sdk-ts'`），同时也通过 `@acosmi/sdk-ts/sanitize` 子路径单独导入。Client 与 ChatRequest 的粘合（`Client.prototype.applyRequestSanitizers`）由 `src/core/sanitize-bridge.ts` 通过 declaration merging 自动注入。**默认零开销**——只有显式调用 `client.setDefensiveSanitize(cfg)` 或 `client.setAutoStripEphemeralHistory(true)` 后才走流水线。\n\n| 公开符号 | 形态 | 用途 |\n| --- | --- | --- |\n| `client.setDefensiveSanitize(cfg)` | Client 方法（runtime 注入） | 配置请求前底线防御（`maxMessagesTurns` 历史轮深度、`permanentDenyBlocks` block 类型黑名单、`maxImageBytes` / `maxVideoBytes` / `maxPDFBytes` base64 内联媒体上限）；传 `{}` 关闭 |\n| `client.setAutoStripEphemeralHistory(on)` | Client 方法（runtime 注入） | 开启后每次请求自动从 `rawMessages` 剥除带 `acosmi_ephemeral:true` 标记的 block，并联动剥引用已剥 `tool_use_id` 的 `tool_result` |\n| `client.applyRequestSanitizers(req)` | Client 方法（buildChatRequest 内部自动调用） | 一般无需手动调；自定义 build 链路时可直接复用 |\n| `sanitize.sanitize(messages, cfg)` | 函数 | 对消息历史做白名单过滤 + 深度 / 尺寸校验 + ephemeral 剥离，返回新数组 |\n| `sanitize.dropBlocks(messages, predicate)` | 函数 | 按谓词剔除 content blocks（联动剔除引用同 tool_use_id 的 tool_result） |\n| `sanitize.stripEphemeral(messages)` | 函数 | 剥离 `acosmi_ephemeral:true` 块（端口自 Go `sanitize.StripEphemeral`，bug-for-bug） |\n| `sanitize.MinimalSanitizeConfig` | 类型 | sanitize 配置 |\n| `sanitize.BlockType` / `BlockText` / `BlockImage` / `BlockVideo` / `BlockDocument` / `BlockSearchResult` / `BlockThinking` / `BlockRedactedThinking` / `BlockToolUse` / `BlockToolResult` / `BlockToolReference` / `BlockServerToolUse` / `BlockWebSearchToolResult` / `BlockCodeExecutionToolResult` / `BlockMCPToolUse` / `BlockMCPToolResult` / `BlockContainerUpload` | 类型 + 常量 | 已知 block 类型常量 |\n| `sanitize.HistoryTooDeepError` / `BlockDeniedError` / `SizeError` | 错误 | sanitize 规则不通过时分类抛出（也导出对应单例 `ErrHistoryTooDeep` / `ErrBlockDenied`） |\n\n```ts\nimport { Client, sanitize } from '@acosmi/sdk-ts';\n\nconst client = new Client({ serverURL });\n\n// 启用底线防御 + 自动剥 ephemeral\nclient.setDefensiveSanitize({\n  maxMessagesTurns: 64,\n  // 其他字段按 MinimalSanitizeConfig 形态填充\n});\nclient.setAutoStripEphemeralHistory(true);\n\n// 之后 chat / chatStream 走 buildChatRequest 时自动应用 applyRequestSanitizers。\n```\n\n> 红线：**thinking 块在 Anthropic 续轮的\"上一轮返回什么、下一轮就必须原样回传\"硬约束下走豁免**，禁止从历史中剔除；`tool_use_id` 联动剔除规则参考 `test/sanitize/history.test.ts` 的 P0 红线测试。详细行为见 `src/sanitize/history.ts` + `defensive.ts`。\n\n### 示例：Skill 商店搜索\n\n```ts\nimport { Client } from '@acosmi/sdk-ts';\n\nconst client = new Client({ serverURL: process.env.ACOSMI_SERVER_URL! });\n\n// 公共端点 — 无需登录\nconst result = await client.browseSkills(\n  1, 20,            // page, pageSize\n  'ACTION',         // category: ACTION|TRIGGER|TRANSFORM|''\n  '关键词',         // keyword\n  '',               // tag\n  'BUILTIN',        // source: BUILTIN|COMMUNITY|USER|''\n);\nconsole.log(result.total, result.items);\n```\n\n### 示例：LLM 联网搜索（Anthropic Web Search Tool）\n\n```ts\nimport { Client, newWebSearchTool } from '@acosmi/sdk-ts';\n\nconst tool = newWebSearchTool({\n  max_uses: 5,\n  allowed_domains: ['anthropic.com', 'developer.mozilla.org'],\n});\n\nconst resp = await client.chat('claude-opus-4-7', {\n  messages: [{ role: 'user', content: '查一下 Web Components 最新规范' }],\n  max_tokens: 2048,\n  tools: [tool],\n});\n```\n\n`AllowedDomains` / `BlockedDomains` 互斥，同时传入抛 `Error`。\n\n### 示例：桌面视觉理解 sidecar 选模型（CrabCode desktop automation / computer-use）\n\n```ts\nimport {\n  Client,\n  findDesktopVisualUnderstandingModel,\n  modelSupportsImageInput,\n} from '@acosmi/sdk-ts';\n\nconst client = new Client({ serverURL: process.env.ACOSMI_SERVER_URL! });\nconst models = await client.listModels();\n\n// 1) 主模型是否能直接吃截图？\nconst primaryCanSeeImages = modelSupportsImageInput(\n  models.find((m) => m.modelId === 'deepseek-v4') ?? null,\n);\n\n// 2) 不能 → 走桌面视觉 sidecar：截图先送 sidecar 解析为结构化 UI 描述，再喂主模型\nconst sidecar = findDesktopVisualUnderstandingModel(models);\nif (!sidecar) {\n  throw new Error('No desktop visual understanding model available — 让管理员在网关启用一个 sidecar 模型');\n}\nconsole.log('sidecar →', sidecar.modelId);\n```\n\n红线：\n\n- `ManagedModel.inputModalities` 用于客户端判断模型可接收的用户输入类型（'text' | 'image'）。\n- `capabilities.supports_desktop_visual_understanding` 用于选择专门解析桌面截图的视觉 sidecar 模型，与 `inputModalities` 是正交两件事（普通视觉模型不一定擅长 UI 解析）。\n- 客户端不应硬编码模型名做能力推断，应完全依赖 SDK catalog 字段。\n- 上游未下发 `inputModalities` 时 SDK 保持 `undefined`，调用方必须保守按 text-only / unknown 处理。\n\n### 示例：钱包 + 余额 + 流量包购买\n\n```ts\n// WalletStats 金额字段是 number（Go float64 端点 wallet.go；非 json.Number）\nconst stats = await client.getWalletStats();\n// { balance: 100.0, monthlyConsumption: 32.5, monthlyRecharge: 150.0, transactionCount: 12 }\n\nconst balance = await client.getBalance();             // 聚合权益余额（EntitlementBalance）\n\nconst pkgs = await client.listTokenPackages();\n// PayPayload.paymentMethod 取枚举字面量（'WECHAT_NATIVE' | 'ALIPAY_PRECREATE' | 'BANK_TRANSFER'）\nconst order = await client.buyTokenPackage(pkgs[0].id, { paymentMethod: 'WECHAT_NATIVE' });\n// BuyResponse 用 orderId（number）/ orderNo（string），无 .id；waitForPayment 取 string\nconst status = await client.waitForPayment(String(order.orderId), 2000);  // 2s 轮询直到终态\n```\n\n> ⚠️ **额度单位双体系（务必区分，不要跨单位相加）**：`getBalance` / `getBalanceDetail` /\n> `listEntitlements` / `getMembership` 返回的 `token*` 字段（`tokenQuota`/`tokenRemaining`/\n> `tokenUsed`/`tokenTotal`）单位**取决于权益是否付费**：\n>\n> - **免费档（TK 体系）**：`type` 非 `TOKEN_PACKAGE`/`SUBSCRIPTION` 的权益（每月领取的免费额度等），\n>   数值即**原始 Token**，UI 以「千万/万 Token」展示。免费额度通过 `claimMonthlyFree()` 领取。\n> - **付费会员（Credits 代币体系）**：`type` 为 `TOKEN_PACKAGE` / `SUBSCRIPTION` 的权益，数值是\n>   **微 Credits**，**÷1000 = Credits（代币）**，UI 以「亿/万 Credits」展示。各档位标准额度\n>   （BASIC 0.6 亿 / PRO 3 亿 / PRO_MAX 9 亿 / ULTRA 24 亿 Credits）即按 Credits 计。\n>\n> 因此**绝不能把免费区与付费区的 `token*` 数值直接求和**——两者单位不同（Token vs 微Credits）。\n> 判定付费区的唯一判据是权益 `type ∈ {TOKEN_PACKAGE, SUBSCRIPTION}`。`getMembership()` 的\n> `tokenQuota`/`tokenUsed` 在有活跃付费订阅（`hasActive=true`）时同为微 Credits。\n\n### 示例：Bug Report（CrabCode CLI 反馈端点）\n\n```ts\n// reportData 任意 JSON 可编码对象，后端做脱敏 + 字段抽取（无须客户端过滤密钥）\nconst result = await client.submitBugReport({\n  description: 'Stream 卡住',\n  platform: 'darwin',\n  version: '1.0.0',\n  errors: [/* ... */],\n  transcript: [/* ... */],\n});\nconsole.log(result.feedback_id, result.detail_url);\n\n// 公开页 ViewModel（无需 auth）\nconst view = await client.getBugReport(result.feedback_id);\n```\n\n## 错误处理\n\n所有方法 `throw` 类型化错误（不是 Go 风格多返回值）：\n\n| 错误类型             | 触发                                                                   |\n| -------------------- | ---------------------------------------------------------------------- |\n| `HTTPError`          | 4xx/5xx，含 `statusCode` / `body` / `type` / `retryAfter`              |\n| `NetworkError`       | TCP/DNS/TLS 失败；含 `isTimeout()` / `isEOF()` 便捷判定                  |\n| `StreamError`        | gateway `managed_model_stream_failed` 事件解析（含 `code` / `stage` / `retryable`；v2.19.5 起另带 `serverRetryable` = 帧上 `retryable` 原值、`retryAfterSecs` = 建议等待秒数，缺席均为 `undefined`。跨 realm 用 `isStreamError()` 判，别用 `instanceof`） |\n| `AgentRunStreamError` | Agent Runs 流返回 `error` 事件（默认抛出；可设 `throwOnError:false` 自行消费） |\n| `BusinessError`      | 网关返回 `code !== 0`，含 `code` (number) / `message` (字符串)         |\n| `RateLimitError`     | 429（含 `retryAfter`）                                                 |\n| `OrderTerminalError` | `waitForPayment` 终态失败                                              |\n| `ModelNotFoundError` | `chat` / `ensureModelCached`：listModels 自动刷新一次后仍未命中目标 modelId（v0.13.x 起替代旧硬返 anthropic 占位的行为，含 `modelId` 字段） |\n| `CompliancePollError` | `waitForTimestampVerified` / `waitForProviderRequestTerminal` 终态失败或超时（含 `kind: 'timeout' | 'terminal_failure' | 'unknown'`） |\n\n```ts\nimport { HTTPError, BusinessError } from '@acosmi/sdk-ts';\n\ntry {\n  await client.chat(...);\n} catch (e) {\n  if (e instanceof HTTPError && e.statusCode === 401) await client.login(...);\n  if (e instanceof BusinessError) console.error(e.code, e.message);\n  throw e;\n}\n```\n\n### Compliance 错误分类\n\n合规域使用 Java 数值错误码（1-031-xxx-xxx），SDK 通过 `classifyComplianceError` 把\n`BusinessError` 映射到 symbolic key，便于分支判断：\n\n```ts\nimport { BusinessError, classifyComplianceError, isComplianceBusinessError } from '@acosmi/sdk-ts';\n\ntry {\n  await client.compliance.publishReport(reportId, { idempotencyKey });\n} catch (e) {\n  if (e instanceof BusinessError && isComplianceBusinessError(e)) {\n    const info = classifyComplianceError(e);\n    if (info.stepUpRequired) {\n      // 引导用户重新做 OAuth introspection / 重新登录后用同一 idempotency-key 再试\n    } else if (info.terminal) {\n      // 终态错误（gate closed / provider not configured 等），不要 retry，用新 key 重发\n    }\n  }\n  throw e;\n}\n```\n\n## Compliance (时间章 / 电子证据 / 合同签署)\n\n合规域走独立子客户端 `client.compliance.*`，使用独立 base URL。**SDK 永远不接触\nprovider endpoint、证书/密钥材料、provider raw payload / callback billing commit**；\n所有 provider 选择由服务端按配置决定，调用方不传 `provider` 字段。\n\n完整 API 指南见 [docs/compliance.md](./docs/compliance.md)。\n\n```ts\nimport { Client, complianceScopes } from '@acosmi/sdk-ts';\n\n// 1. 配置 — complianceBaseURL 默认 ${serverURL}/admin-api\nconst client = await Client.create({\n  serverURL: process.env.ACOSMI_SERVER_URL!,\n  // complianceBaseURL: process.env.ACOSMI_COMPLIANCE_BASE_URL,  // 独立 ingress 时显式覆盖\n});\n\n// 2. 登录 — OAuth scope 申请按业务最小集合\nawait client.login('My App', complianceScopes());\n\n// 3. 申请时间章（写操作；strongly recommended 持久化 idempotency-key）\nconst idempotencyKey = `ts-${orderId}-${Date.now()}`;\nawait persistKey(idempotencyKey);\nconst token = await client.compliance.issueTimestamp(\n  { name: 'release-artifact', hashAlgorithm: 'sha256', digest: sha256Hex },\n  { idempotencyKey },\n);\n\n// 4. 轮询到本地 verify 通过\nconst verified = await client.compliance.waitForTimestampVerified(token.id, {\n  timeoutMs: 60_000,\n});\n\n// 5. 公开 verify — 不要求登录、不暴露 PII / 合同原文\nconst result = await client.compliance.verifyEvidencePublic({ evidenceNo: 'EV-001' });\nconsole.log(result.manifestOfflineVerify);\n```\n\n### 公开 verify 匿名语义\n\n`verifyEvidencePublic` 可匿名调用：未 `login()` 时 SDK 直接发匿名请求，不会抛\n`not authorized, call login() first`。客户端已持有 token 时请求会附带 `Authorization`，\n便于后端保留审计上下文。与认证 GET 读不同，public verify 收到 `401` 不会触发\n`forceRefresh`、不做 refresh replay。\n\n### 写操作幂等与 401 策略\n\n合规域写操作有别于普通 API：\n\n- **Idempotency-Key**：所有 POST 写操作支持 `Idempotency-Key` header；调用方必须**持久化**\n  key（重启后仍可用）。同一 key 重发等价于\"对账查询同一业务结果\"，避免 provider 侧重复\n  请求 / 重复扣费。\n- **401 不自动重放**：写操作 401 直接抛 `HTTPError`，**不会自动 refresh + replay**。\n  调用方需要重新登录后用**同一 idempotency-key** 调用同一方法。GET 读操作仍走单次 401\n  refresh 重试。\n- **5xx / timeout 不自动重试**：合规域写操作完全禁用自动重试。\n- **step-up 错误（`COMPLIANCE_STEP_UP_REQUIRED`，code=1031000013）**：通过\n  `classifyComplianceError` 识别后引导用户重新做 OAuth introspection / 升级 token 等级。\n- **gate closed / provider not configured / unknown**：terminal 错误，禁止自动重发原请求。\n\n### 隐私边界\n\n`verifyEvidencePublic` 返回字段：`evidenceNo` / `assetType` / `hashAlgorithm` / `contentHash` /\n`size` / `manifestHash` / `packageHash` / `manifestOfflineVerify` / `verifiedAt`。**不暴露**\nPII / 合同原文 / storage bucket+key / subject snapshot / provider raw / TSA 证书内部字段。\n\n### 完整 API 列表\n\n标注约定：\n- `// 写` — POST / PUT / DELETE 写操作，**必传 `Idempotency-Key`**（即第二参数 `options?: ComplianceWriteOptions` 的 `idempotencyKey` 字段）；写操作不自动 retry，401 不 refresh + replay\n- `// step-up` — 需 OAuth token 升级等级；失败抛 `BusinessError` 含 code `1031000013`，调用方按 `classifyComplianceError` 分支引导用户重新 introspection\n- `// gate` — 受 capability gate 控制，未闭合时 fail-closed；先用 `getCapabilities` / `getFeatureGate` 探测\n- `// 分页` — 走 `GET .../page` 返回 `PageResult<T>`（`{ total, list }`）\n- 无标注 — GET 读路径，单次 401 refresh 重试\n\n#### 证据资产（evidence）\n\n```ts\nclient.compliance.createEvidenceAsset(req, options?)        // 写\nclient.compliance.getEvidenceAsset(id, signal?)\nclient.compliance.verifyEvidencePublic(req, signal?)        // 匿名公开验真（未 login 不抛 not-authorized）\nclient.compliance.listEvidenceAssets(req?, signal?)         // 分页\nclient.compliance.listEvidencePackages(req?, signal?)       // 分页\nclient.compliance.buildEvidencePackage(assetId, timestampTokenId?, options?)  // 写\n```\n\n#### 时间章（timestamp）\n\n```ts\nclient.compliance.issueTimestamp(req, options?)                       // 写\nclient.compliance.issueTimestampForAsset(assetId, options?)           // 写\nclient.compliance.getTimestamp(id, signal?)\nclient.compliance.verifyTimestamp(req, options?)                      // 写（远端 verify 落审计）\nclient.compliance.waitForTimestampVerified(id, opts?)\nclient.compliance.listTimestamps(req?, signal?)                       // 分页\nclient.compliance.listTsaProviders(signal?)                           // TSA provider 只读列表\nclient.compliance.getTsaStats(signal?)                                // 时间章统计只读视图\n```\n\n#### 出证报告（report）\n\n```ts\nclient.compliance.createReport(req, options?)               // 写，需 compliance:reports:write\nclient.compliance.getReport(id, signal?)\nclient.compliance.publishReport(id, options?)               // 写 + step-up\nclient.compliance.downloadReport(id, signal?)               // 离线复核 hash 视图\nclient.compliance.listReports(req?, signal?)                // 分页\n```\n\n#### 签署 envelope\n\n```ts\nclient.compliance.createSigningEnvelope(req, options?)                 // 写\nclient.compliance.getSigningEnvelope(envelopeId, signal?)\nclient.compliance.signEnvelope(envelopeId, req, options?)              // 写 + step-up + gate\nclient.compliance.createH5SigningUrl(envelopeId, req, options?)        // 写 + step-up + gate\nclient.compliance.syncSigningEnvelopeStatus(envelopeId, options?)      // 写\nclient.compliance.listSigningEnvelopes(req?, signal?)                  // 分页\nclient.compliance.listEnvelopeContracts(envelopeId, signal?)           // 合同列表（数组，非 PageResult）\nclient.compliance.listEnvelopeProviderRequests(envelopeId, signal?)    // provider 请求列表（数组，非 PageResult）\nclient.compliance.voidEnvelope(envelopeId, req, options?)              // 写\n```\n\n#### 用印审批（seal approval / seal use）\n\n```ts\nclient.compliance.submitSealApproval(req, options?)         // 写\nclient.compliance.approveSealApproval(id, query, options?)  // 写 + step-up\nclient.compliance.rejectSealApproval(id, query, options?)   // 写\nclient.compliance.cancelSealApproval(id, query, options?)   // 写\nclient.compliance.listPendingSealApprovals(signal?)\nclient.compliance.getSealApproval(id, signal?)\nclient.compliance.listSealApprovals(req?, signal?)          // 分页\nclient.compliance.listSealUses(req?, signal?)               // 分页（用印执行）\n```\n\n#### Provider request 状态轮询\n\n```ts\nclient.compliance.getProviderRequest(id, signal?)\nclient.compliance.waitForProviderRequestTerminal(id, opts?)\n```\n\n#### 能力闸门 / 操作投影\n\n```ts\nclient.compliance.getCapabilities(signal?)                  // 能力闸门列表（拿不到必须 fail-closed）\nclient.compliance.getFeatureGate(action, signal?)           // 单动作能力（便捷，一次网络请求）\nclient.compliance.listOperations(req?, signal?)             // 分页（操作投影）\nclient.compliance.getOperation(id, signal?)\nclient.compliance.classifyError(err)                        // BusinessError → ComplianceErrorInfo | null（同顶层 classifyComplianceError，便于 catch 块链式调用）\n```\n\n#### 合同模板（contract template，v1.5.0 S5）\n\n```ts\nclient.compliance.createContractTemplate(req, options?)               // 写，DRAFT\nclient.compliance.updateContractTemplate(id, req, options?)           // 写（仅 DRAFT）\nclient.compliance.deleteContractTemplate(id, options?)                // 写（仅 DRAFT）\nclient.compliance.getContractTemplate(id, signal?)                    // 模板详情\nclient.compliance.listContractTemplates(req?, signal?)                // 分页\nclient.compliance.uploadContractTemplatePdf(id, req, options?)        // 写（上传 PDF base64）\nclient.compliance.publishContractTemplate(id, options?)               // 写，DRAFT → PUBLISHED\nclient.compliance.archiveContractTemplate(id, options?)               // 写，PUBLISHED → ARCHIVED\nclient.compliance.listContractTemplateVersions(id, signal?)           // 版本快照列表（数组）\n```\n\n> 6 个 `list*` 分页方法（compliance gateway S1）均走 `GET .../page`，返回\n> yudao `PageResult<T>`（`{ total, list }`）。请求参数继承共享 `PageRequest`\n> （`pageNo` / `pageSize` / `sortBy` / `sortDirection`，全部可选）+ 各自的过滤项。\n> `createTimeStart` / `createTimeEnd` 由调用方按 `yyyy-MM-dd HH:mm:ss` 字符串提供，\n> SDK 原样透传、不做格式校验。\n\n> compliance gateway S2 新增能力闸门查询（`getCapabilities` / `getFeatureGate`）\n> 与操作投影读（`listOperations` / `getOperation`）。`getCapabilities` 为每个高\n> 风险 / 收费动作返回 `executable` / `state` / `requiredScopes` / `requiredStepUp`\n> ——拿不到能力时必须 fail-closed。均走 GET 读路径（`401` 单次刷新重放）。\n\n> compliance gateway S4 新增 envelope 收尾方法：`listEnvelopeContracts` /\n> `listEnvelopeProviderRequests` 走 GET 读路径返回普通数组（非 `PageResult`），\n> `listEnvelopeProviderRequests` 复用操作投影类型 `OperationPageItem`；\n> `voidEnvelope` 为写方法——走 compliance 写路径（`Idempotency-Key`、不重试、\n> `401` 不重放），`reason` 随 JSON body 提交。envelope 的 send / remind /\n> authorize / download / token 等动作在后端 S4 范围之外暂缓。\n\n> compliance gateway S5 新增合同模板（contract template）9 个方法：DRAFT →\n> PUBLISHED → ARCHIVED 全生命周期。读方法（`getContractTemplate` /\n> `listContractTemplates` / `listContractTemplateVersions`）走 GET 读路径；写\n> 方法（`createContractTemplate` / `updateContractTemplate` /\n> `deleteContractTemplate` / `uploadContractTemplatePdf` /\n> `publishContractTemplate` / `archiveContractTemplate`）走 compliance 写路径\n> （`Idempotency-Key`、不重试、`401` 不重放）。新增 2 个 scope —\n> `compliance:contract_template:read` / `compliance:contract_template:write` —\n> 不要求 step-up。版本列表与列表项视图都不下发模板【字段叠加】，字段只在详情 /\n> 版本快照里返回。\n\n> compliance gateway S6 新增用印执行（seal use）分页只读方法：`listSealUses`。\n> 走 `GET /compliance/seal-uses/page`，返回 yudao `PageResult<SealUsePageItem>`；\n> 过滤支持 `sealId` / `envelopeId` / `usageStatus` / `createTimeStart` /\n> `createTimeEnd`。复用既有 `compliance:contract_signing:read` scope，不引入新\n> scope。印章授权 / 印章 CRUD（U-3 / U-11）仍为后端推迟项（CFCA 私有 jar /\n> W3 闸门），本版本不引入 SDK 方法。\n\n### 示例\n\n`examples/` 下提供可直接运行的端到端示例，并随 npm 包一起发布：\n\n- `examples/core-chat.ts` — Client 构造 / 配置 / 模型列举 / 同步与流式 chat\n- `examples/auth-oauth-flow.ts` — 手动 OAuth 2.1 PKCE 流程（discover / register / authorize / exchangeCode / refreshToken / token store）\n- `examples/agent-runs-stream.ts` — Agent Run Gateway 创建 / 流式消费 / 本地工具桥 / 产物下载\n- `examples/compliance-read.ts` — 只读 / public verify 流程\n- `examples/compliance-evidence-timestamp.ts` — hash-only evidence + timestamp + package 链路\n- `examples/compliance-envelope.ts` — envelope 创建 / 错误正确处理（step-up / gate closed）\n\n### 后端边界\n\n- Java compliance 后端负责 provider 集成、受控材料、provider raw payload、local verify、\n  billing 状态机和对外 public DTO 收敛。\n- Go OAuth/JWKS 层负责 token 签发、scope 与 step-up/introspection 语义。\n- TS SDK 只申请 scope、发送公共 DTO、传递 `Idempotency-Key`、分类公开错误码并轮询脱敏状态视图。\n\n## AbortSignal\n\n每个异步方法都接 `signal?: AbortSignal`，用于取消请求或流：\n\n```ts\nconst ctl = new AbortController();\nsetTimeout(() => ctl.abort(), 5000);\n\nawait client.chat('claude-opus-4-7', { ... }, ctl.signal);\n```\n\n## 开发\n\n```sh\nnpm install\nnpm run typecheck\nnpm run lint\nnpm test\nnpm run build\nnpm run docs    # 经 TypeDoc 生成 API 参考到 docs/api/\n```\n\n## 更新历史\n\n完整变更日志见 [CHANGELOG.md](./CHANGELOG.md)。\n\n| 版本 | 状态 | 概要 |\n| --- | --- | --- |\n| 2.19.6 | **当前版本** | **订阅池加油包份额（2026-09-20）**。`QuotaSummarySubscriptionPool` 加性新增 `boosterRemaining?` / `boosterCount?` / `boosterNextExpiresAt?`：网关在既有那一次 alive 遍历里，对 alive 的 COMMERCIAL 桶中 `sourceType === 'booster_pack'` 的行求和（微 Credits，÷1000 = Credits）、计数（一行 = 一个加油包）、并在这些 alive **限期**桶里选举最早到期时刻。**三者缺席 = 老网关或此刻没有加油包，都不可读成 0**（网关一行都认不出时三个键一起不下发，绝不写 0）；`boosterNextExpiresAt` 另可因「加油包全是永久桶」而单独缺席，此时前两个字段仍在场。加油包是「加总额度」的产品动作，与只清 5 小时 / 7 天窗口、对额度池零交互的重置卡是两笔账。纯类型面追加，无运行时改动。 |\n| 2.19.5 | 稳定版 | **流内重试提示透出 + 流式可选项（2026-09-19）**。`StreamError` 加性新增 `serverRetryable`（帧上 `retryable` **原值**，不与 `requestDisposition` 合取 —— 合取会把「服务端明说可重试」与「服务端没说」压成同一个 `false`）与 `retryAfterSecs`（只收有限非负数，非法值一律 `undefined`）；加性导出结构判据 `isStreamError()`（worker / `vm` / 二次打包下 `instanceof` 静默为假）；`chatStream` / `chatMessagesStream` 新增**末位**可选实参 `ChatStreamOptions`（`requestTimeoutMs` 总时长安全网、`onResponseHeaders` 在 `resp.ok` 判断前交出响应头，用于读 `X-Acosmi-Stream-Keepalive` 等流控提示）。全部追加式；不传 `requestTimeoutMs` 时**不武装任何计时器**，流式链路行为与 2.19.4 逐字一致。另修 `FileTokenStore.withLock` 在 Windows delete-pending 窗口把 `EPERM` / `EBUSY` 当成致命错误（NT 在 `unlink` 之后、最后一个句柄关闭之前抛的不是 `EEXIST`，于是同一把锁上的一次正常交接被报成永久失败）；这两个码现在按「锁被占」退避重试并跳过 stale 检测，`EACCES` 刻意不收，非 Windows 平台控制流逐字节不变。 |\n| 2.19.4 | 稳定版 | **OpenAI 线流式 usage 尾帧回收 + 子路径入口修复 + 一批 wire 容错**。`stream_options.include_usage` 下上游在 `finish_reason` 帧之后才发 `{\"choices\":[],\"usage\":{...}}`，转换器此前丢弃一切不带 `choices` 的帧、且已在 `finish_reason` 帧上发出不带 usage 的 `message_delta` 与 `message_stop`，于是 OpenAI 线经 `chatMessagesStream` 的回合从来没有带过 usage、消费方一律记成 0；现在任何帧上的 usage 都被记录（后帧覆盖前帧）并写进 `message_stop` 前紧邻的那条 `message_delta`。内容块仍在 `finish_reason` 帧关闭，但尚未见到 usage 时 `message_delta` / `message_stop` 会等「带 usage 的帧 / `data: [DONE]` / body 结束」三者中最先到的一个，新增 `OpenAIStreamConverter.flush()` 在流末补发这次延迟收口（绝不为从未给过 `finish_reason` 的流伪造收口，也没有任何路径会发两次 `message_stop`）。流式 usage 映射与非流式逐字相同（`prompt_tokens`→`input_tokens`、`completion_tokens`→`output_tokens`），缓存 token 与 reasoning token 明细既不映射也不冲抵，缺失或非有限数一律省略而不是写 0。修复 `@acosmi/sdk-ts/adapters/openai` 与 `@acosmi/sdk-ts/adapters/anthropic` 两个子路径入口**加载即抛**（Node ESM / CJS 下 `OpenAIAdapter is not a constructor`、Bun 下 `undefined is not a constructor`）：`ProviderFormat` / `ProviderAdapter` 迁进不 import 任何 adapter 实现的叶子模块，各入口导出名一字不变；`test:pack` 现在会在各自全新的 Node 进程里对每个声明了 `import` 或 `require` 条件的 `exports` 子路径真加载一次。另容忍不带 `delta` 的流 `choice`、不带 `choices` 的非流式响应、不带 `usage` 的非流式响应（分别按空 delta / 空数组 / 0 处理，不再抛错，其余字段照常转换）；修正 text 先于 `reasoning_content` 到达时两个 `content_block_start` 都落在 index 0 的块序错乱。类型面加性新增 `WindowLimitStatus.fiveHourSoftContinuing?`、`WindowLimitStatus.inflightHeldCredits?`、`QuotaSummary.subscriptionPool?` —— 三者缺席都表示「旧网关没播报」，不得读成 `false` / `0`。 |\n| 2.19.3 | 稳定版 | **OpenAI 线网关流失败帧不再把自己撞崩**。网关用 `event: failed` 发结构化错误帧，而 `chatMessagesStream` 的 OpenAI 分支捕获了 SSE 事件名却从不读它，错误帧于是被送进 OpenAI chunk 转换器、死在 `chunk.choices.length` 上 —— 真实上游原因被一个无关的 TypeError 顶掉。该分支现在把 `failed` / `error` 帧交给既有的 `parseStreamError`，与 `chatStreamWithUsage` 早已在做的完全一致；`OpenAIStreamChunk.choices` 同版改为可选（类型声明必填而 wire 确实会省，正是那个 TypeError 的来处）。Anthropic 线零行为变化，请求构造零变化。 |\n| 2.19.2 | 稳定版 | **思考档位透传补全**。目录支持的 low / medium / xhigh / max 四档在两个 chat adapter 上原样保留；显式「关闭思考」的请求被真正投递给 OpenAI 兼容网关；2.19.1 的凭据与请求 ID 行为保持不变。 |\n| 2.19.1 | 稳定版 | **认证生命周期与上游错误归属修复（2026-09-08）**。新增显式 `credentialMode: 'versioned'`，通过调用方提供的 `VersionedCredentialStore` 原子读写凭据，多进程同时刷新共用同一份持久状态、刷新结果不确定时要求重新登录；新增 `credentialRequestOwner` 把请求绑定到构造时的存储实例、登录会话与已验证身份（已退出或被替换的客户端不能借用另一个账号的凭据，WebSocket 票据与晚到事件遵守同一归属）；新增 `logoutCredential(signal?, expected?)`，本地提交结果与远端吊销结果分开；新增显式 `credentialMode: 'external'` 与 `accessTokenProvider`。HTTP 401 只有在完整错误合同明确归属用户访问凭据失效、且请求未被接收时才触发一次刷新重试，提供商拒绝 / 已接收请求 / 缺失合同的错误不再被误当成登录过期。默认仍为 `legacy` 模式。 |\n| 2.19.0 | 稳定版 | **网关消费请求 ID 透出（2026-09-01）**。网关把 `consumeRequestID`（即 `managed_model_usage_logs.request_id`）放进 `X-Acosmi-Request-Id` 响应头；加性导出 `GATEWAY_REQUEST_ID_HEADER` 与 `GatewayRequestIDCallback`，`chatMessagesStream` / `chatStream` 新增第 5 个可选实参、`chatMessages` / `chat` 新增第 4 个可选实参。响应头在首字节之前到达，因此覆盖流中段中断 / 零事件 / HTTP 错误全部形态。旧网关下回调零触发、绝不合成占位值，流照常出。不传回调时行为逐字节不变。 |\n| 2.18.0 | 稳定版 | **`ManagedModel.thinking_levels` 类型面对齐（2026-08-29）**。加性新增可选字段 `thinking_levels?: string[]`：网关下发的升序思考档位 id 列表（`'off'`/`'high'`/`'max'` 的子集，按「admin 声明 ∩ wire 层真投递」派生）。`listModels` 原样透传，无归一化、无新方法、公开签名零变化。`[]` = 该模型无思考档；`undefined` = 旧网关未播报，调用方按\"未知\"处理，严禁按模型名推档。 |\n| 2.17.0 | 稳定版 | **桌面 loopback OAuth state 全路径闸 + 端口确定性关闭（2026-08-15）**。`/callback` 一切形态（成功 / OAuth error / 畸形）先验 `state` 且必须恰好一个并严格等值；缺失 / 重复（含重复的正确值）/ 错值一律 `state_mismatch` 拒绝且不再被误结算为 `auth_denied`；错误信息只描述形态，不回显 code / state / token / 完整 callback query。`finally` 补 `closeIdleConnections()`（Node 18 上 `close()` 不关残留 idle keep-alive）。用户真拒绝（OAuth error + 正确 state）语义保留为 `auth_denied`。公开 API 签名零变化。 |\n| 2.16.0 | 稳定版 | **chat 超时预算真正下传 + 流式活性回调（2026-08-06","readmeFilename":"README.md"}