{"_id":"@autoark-ai/eva-client-sdk-ts","_rev":"26-5560f62c01a874498820b8fa66ecb31e","name":"@autoark-ai/eva-client-sdk-ts","dist-tags":{"release-1.0.5":"1.0.5","release-1.0.6":"1.0.6","latest":"1.0.7","release-1.0.7":"1.0.7"},"versions":{"0.0.2-dev":{"name":"@autoark-ai/eva-client-sdk-ts","version":"0.0.2-dev","license":"SEE LICENSE IN LICENSE","_id":"@autoark-ai/eva-client-sdk-ts@0.0.2-dev","maintainers":[{"name":"autoarkeva","email":"dev@autoark.ai"},{"name":"shuyuzhang777","email":"shyzhang777@gmail.com"}],"dist":{"shasum":"de6d7759049d198399827fc7c637b459957b27c6","tarball":"https://registry.npmjs.org/@autoark-ai/eva-client-sdk-ts/-/eva-client-sdk-ts-0.0.2-dev.tgz","fileCount":12,"integrity":"sha512-3Kk0HCLK1XwUJklf8qBl7SaNcgWnIrfqV2JtLswWAkwI9JAfqvjnerb7OnXgoLKl9dV83oHx1j52TPJbpKdajA==","signatures":[{"sig":"MEQCIGoR8elHVSJhljl8rld2b5s6S/yRNkb7Ljhq+iNuSbQqAiBAeDl6OmU8PMKODKQIN/W0qBjgvm6noR1D4pr0Fe/W2Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2469702},"main":"./dist/index.js","type":"module","_from":"file:output/eva-client-sdk-ts-0.0.2-dev.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./spi":{"types":"./dist/spi.d.ts","import":"./dist/spi.js","default":"./dist/spi.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"}},"scripts":{"test":"vitest run","build":"node scripts/build.mjs","check":"npm run build && npm run typecheck && npm run typecheck:test && npm run depcruise && npm test && npm run test:browser && npm run verify:pack","depcruise":"depcruise src --config .dependency-cruiser.cjs","typecheck":"tsc -p tsconfig.json --noEmit","verify:pack":"node scripts/verify-pack.mjs","test:browser":"vitest run --config vitest.browser.config.ts","version:sync":"node scripts/sync-package-version.mjs","typecheck:test":"tsc -p tsconfig.test.json","verify:consumer":"node scripts/verify-clean-consumer.mjs","quickstart:prepare":"npm run version:sync && npm run build && node scripts/prepare-browser-quickstart.mjs","verify:consumer:browser":"node scripts/verify-clean-browser.mjs","verify:consumer:gateway":"tsx test/e2e/direct-gateway/cli.ts","verify:release-candidate":"node scripts/verify-release-candidate.mjs"},"_npmUser":{"name":"shuyuzhang777","email":"shyzhang777@gmail.com"},"_resolved":"/Users/shuyuzhang/workspace/shyArk/repos/autoark-eva-client-sdk/typescript/output/eva-client-sdk-ts-0.0.2-dev.tgz","_integrity":"sha512-3Kk0HCLK1XwUJklf8qBl7SaNcgWnIrfqV2JtLswWAkwI9JAfqvjnerb7OnXgoLKl9dV83oHx1j52TPJbpKdajA==","_npmVersion":"11.16.0","description":"Eva 端侧 TypeScript SDK（契约驱动、浏览器优先）。","directories":{},"sideEffects":false,"_nodeVersion":"26.3.1","dependencies":{"onnxruntime-web":"1.26.0","@alexanderolsen/libsamplerate-js":"2.1.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.0","vite":"^8.1.4","vitest":"^4.1.10","esbuild":"^0.28.1","playwright":"^1.48.0","typescript":"^5.6.0","@types/node":"^22.20.1","@vitest/browser":"^4.1.10","dependency-cruiser":"^16.0.0","dts-bundle-generator":"^9.5.1","@vitest/browser-playwright":"^4.1.10"},"_npmOperationalInternal":{"tmp":"tmp/eva-client-sdk-ts_0.0.2-dev_1784520106663_0.25999012612618366","host":"s3://npm-registry-packages-npm-production"}},"0.0.3-dev":{"name":"@autoark-ai/eva-client-sdk-ts","version":"0.0.3-dev","keywords":["eva-client-sdk","typescript","conversational-ai","voice-agent"],"license":"SEE LICENSE IN LICENSE","_id":"@autoark-ai/eva-client-sdk-ts@0.0.3-dev","maintainers":[{"name":"autoarkeva","email":"dev@autoark.ai"},{"name":"shuyuzhang777","email":"shyzhang777@gmail.com"}],"dist":{"shasum":"0952db7fd53f4c290bf926b80f3e23053cce91c8","tarball":"https://registry.npmjs.org/@autoark-ai/eva-client-sdk-ts/-/eva-client-sdk-ts-0.0.3-dev.tgz","fileCount":12,"integrity":"sha512-NZgomPpKc40PYb+7AX4Rq6eG71Lom/q224jcVEpzRVbKKH5EICxvZpIhlob/FmAjvutBMegrgFzMax03ZHrJwg==","signatures":[{"sig":"MEQCIF1mxzVa3HD6Ajlpg3Z3XGjh3y6GuhqRY+OwrvNpTcL2AiA+s/Y/07TobEkrBhw/KficHVtsgnJuZe6Lq/OFmQKLsQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2469913},"main":"./dist/index.js","type":"module","_from":"file:output/eva-client-sdk-ts-0.0.3-dev.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./spi":{"types":"./dist/spi.d.ts","import":"./dist/spi.js","default":"./dist/spi.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"}},"scripts":{"test":"vitest run","build":"node scripts/build.mjs","check":"npm run build && npm run typecheck && npm run typecheck:test && npm run depcruise && npm test && npm run test:browser && npm run verify:pack","depcruise":"depcruise src --config .dependency-cruiser.cjs","typecheck":"tsc -p tsconfig.json --noEmit","verify:pack":"node scripts/verify-pack.mjs","test:browser":"vitest run --config vitest.browser.config.ts","version:sync":"node scripts/sync-package-version.mjs","typecheck:test":"tsc -p tsconfig.test.json","verify:consumer":"node scripts/verify-clean-consumer.mjs","verify:consumer:browser":"node scripts/verify-clean-browser.mjs","verify:consumer:gateway":"tsx test/e2e/direct-gateway/cli.ts","verify:release-candidate":"node scripts/verify-release-candidate.mjs"},"_npmUser":{"name":"shuyuzhang777","email":"shyzhang777@gmail.com"},"_resolved":"/Users/shuyuzhang/workspace/shyArk/repos/autoark-eva-client-sdk/typescript/output/eva-client-sdk-ts-0.0.3-dev.tgz","_integrity":"sha512-NZgomPpKc40PYb+7AX4Rq6eG71Lom/q224jcVEpzRVbKKH5EICxvZpIhlob/FmAjvutBMegrgFzMax03ZHrJwg==","_npmVersion":"11.16.0","description":"Eva 端侧 TypeScript SDK（契约驱动、浏览器优先）。","directories":{},"sideEffects":false,"_nodeVersion":"26.3.1","dependencies":{"onnxruntime-web":"1.26.0","@alexanderolsen/libsamplerate-js":"2.1.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"^4.23.0","vite":"^8.1.4","vitest":"^4.1.10","esbuild":"^0.28.1","playwright":"^1.48.0","typescript":"^5.6.0","@types/node":"^22.20.1","@vitest/browser":"^4.1.10","dependency-cruiser":"^16.0.0","dts-bundle-generator":"^9.5.1","@vitest/browser-playwright":"^4.1.10"},"_npmOperationalInternal":{"tmp":"tmp/eva-client-sdk-ts_0.0.3-dev_1784530061327_0.23879732587916958","host":"s3://npm-registry-packages-npm-production"}},"0.0.4-dev":{"name":"@autoark-ai/eva-client-sdk-ts","version":"0.0.4-dev","keywords":["eva-client-sdk","typescript","conversational-ai","voice-agent"],"license":"SEE LICENSE IN LICENSE","_id":"@autoark-ai/eva-client-sdk-ts@0.0.4-dev","maintainers":[{"name":"autoarkeva","email":"dev@autoark.ai"},{"name":"shuyuzhang777","email":"shyzhang777@gmail.com"}],"dist":{"shasum":"1b927bcc2e84fbd4f710421211ab7a0913320235","tarball":"https://registry.npmjs.org/@autoark-ai/eva-client-sdk-ts/-/eva-client-sdk-ts-0.0.4-dev.tgz","fileCount":12,"integrity":"sha512-j9srYUdtY7ItMMsT+CENEwYSZ+VYgDdg/qS9POk4l3GKO/ryIpm/e9r1eqfUKV8K5ishGEpe9beTQyNoTsKpeQ==","signatures":[{"sig":"MEQCIC0np8pobWi8AQz4DC6gJW0RspBpjjjVDn/8lLL2CqEzAiAq5VEtDAZIMa9ZUHmDBroSOlFqFU6QX1IfWOHtMfVpFw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2471471},"main":"./dist/index.js","type":"module","_from":"file:output/eva-client-sdk-ts-0.0.4-dev.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./spi":{"types":"./dist/spi.d.ts","import":"./dist/spi.js","default":"./dist/spi.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"}},"scripts":{"test":"vitest run","build":"node scripts/build.mjs","check":"npm run build && npm run typecheck && npm run typecheck:test && npm run depcruise && npm test && npm run test:browser && npm run verify:pack","depcruise":"depcruise src --config .dependency-cruiser.cjs","typecheck":"tsc -p tsconfig.json --noEmit","verify:pack":"node scripts/verify-pack.mjs","test:browser":"vitest run --config vitest.browser.config.ts","version:sync":"node scripts/sync-package-version.mjs","typecheck:test":"tsc -p tsconfig.test.json","verify:consumer":"node scripts/verify-clean-consumer.mjs","verify:consumer:browser":"node scripts/verify-clean-browser.mjs","verify:consumer:gateway":"tsx test/e2e/direct-gateway/cli.ts","verify:release-candidate":"node scripts/verify-release-candidate.mjs"},"_npmUser":{"name":"shuyuzhang777","email":"shyzhang777@gmail.com"},"_resolved":"/Users/shuyuzhang/workspace/shyArk/repos/autoark-eva-client-sdk/typescript/output/eva-client-sdk-ts-0.0.4-dev.tgz","_integrity":"sha512-j9srYUdtY7ItMMsT+CENEwYSZ+VYgDdg/qS9POk4l3GKO/ryIpm/e9r1eqfUKV8K5ishGEpe9beTQyNoTsKpeQ==","_npmVersion":"11.16.0","description":"EVA 端侧 TypeScript SDK（契约驱动、浏览器优先）。","directories":{},"sideEffects":false,"_nodeVersion":"26.3.1","dependencies":{"onnxruntime-web":"1.26.0","@alexanderolsen/libsamplerate-js":"2.1.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.0","vite":"^8.1.4","vitest":"^4.1.10","esbuild":"^0.28.1","playwright":"^1.48.0","typescript":"^5.6.0","@types/node":"^22.20.1","@vitest/browser":"^4.1.10","dependency-cruiser":"^16.0.0","dts-bundle-generator":"^9.5.1","@vitest/browser-playwright":"^4.1.10"},"_npmOperationalInternal":{"tmp":"tmp/eva-client-sdk-ts_0.0.4-dev_1784644085749_0.2705791621084035","host":"s3://npm-registry-packages-npm-production"}},"0.0.6-dev":{"name":"@autoark-ai/eva-client-sdk-ts","version":"0.0.6-dev","keywords":["eva-client-sdk","typescript","conversational-ai","voice-agent"],"license":"SEE LICENSE IN LICENSE","_id":"@autoark-ai/eva-client-sdk-ts@0.0.6-dev","maintainers":[{"name":"autoarkeva","email":"dev@autoark.ai"},{"name":"shuyuzhang777","email":"shyzhang777@gmail.com"}],"dist":{"shasum":"00a42c6d29b2bfb41c2d8987ebafbef0f2c19dc4","tarball":"https://registry.npmjs.org/@autoark-ai/eva-client-sdk-ts/-/eva-client-sdk-ts-0.0.6-dev.tgz","fileCount":12,"integrity":"sha512-qe3p6kiaWDcxKKSZZZ1ZSzuPLyvmc0YoLn+H50PndZTx8gDGhbXdUZVKpKpM8nI0qHdoDhNaXdasd5vzZttGvQ==","signatures":[{"sig":"MEUCIQC/7Uh1Mz2/EK376xTyQ90wXkwOzZkLhwp7nP38JTGtQAIgBKADdQubF+wJpExt0pSgQZjhmj6K2g7sJ07oDLu2xF4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2508295},"main":"./dist/index.js","type":"module","_from":"file:output/eva-client-sdk-ts-0.0.6-dev.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./spi":{"types":"./dist/spi.d.ts","import":"./dist/spi.js","default":"./dist/spi.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"}},"scripts":{"test":"vitest run","build":"node scripts/build.mjs","check":"npm run build && npm run typecheck && npm run typecheck:test && npm run depcruise && npm test && npm run test:browser && npm run verify:pack","depcruise":"depcruise src --config .dependency-cruiser.cjs","typecheck":"tsc -p tsconfig.json --noEmit","verify:pack":"node scripts/verify-pack.mjs","test:browser":"vitest run --config vitest.browser.config.ts","version:sync":"node scripts/sync-package-version.mjs","typecheck:test":"tsc -p tsconfig.test.json","verify:consumer":"node scripts/verify-clean-consumer.mjs","verify:consumer:browser":"node scripts/verify-clean-browser.mjs","verify:consumer:gateway":"tsx test/e2e/direct-gateway/cli.ts","verify:release-candidate":"node scripts/verify-release-candidate.mjs"},"_npmUser":{"name":"shuyuzhang777","email":"shyzhang777@gmail.com"},"_resolved":"/Users/shuyuzhang/.codex/worktrees/90c3/autoark-eva-client-sdk/typescript/output/eva-client-sdk-ts-0.0.6-dev.tgz","_integrity":"sha512-qe3p6kiaWDcxKKSZZZ1ZSzuPLyvmc0YoLn+H50PndZTx8gDGhbXdUZVKpKpM8nI0qHdoDhNaXdasd5vzZttGvQ==","_npmVersion":"11.16.0","description":"EVA 端侧 TypeScript SDK（契约驱动、浏览器优先）。","directories":{},"sideEffects":false,"_nodeVersion":"26.3.1","dependencies":{"onnxruntime-web":"1.26.0","@alexanderolsen/libsamplerate-js":"2.1.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"^4.23.0","vite":"^8.1.4","vitest":"^4.1.10","esbuild":"^0.28.1","playwright":"^1.48.0","typescript":"^5.6.0","@types/node":"^22.20.1","@vitest/browser":"^4.1.10","dependency-cruiser":"^16.0.0","dts-bundle-generator":"^9.5.1","@vitest/browser-playwright":"^4.1.10"},"_npmOperationalInternal":{"tmp":"tmp/eva-client-sdk-ts_0.0.6-dev_1784797047132_0.26088365480838616","host":"s3://npm-registry-packages-npm-production"}},"0.0.7-dev":{"name":"@autoark-ai/eva-client-sdk-ts","version":"0.0.7-dev","keywords":["eva-client-sdk","typescript","conversational-ai","voice-agent"],"license":"SEE LICENSE IN LICENSE","_id":"@autoark-ai/eva-client-sdk-ts@0.0.7-dev","maintainers":[{"name":"autoarkeva","email":"dev@autoark.ai"},{"name":"shuyuzhang777","email":"shyzhang777@gmail.com"}],"dist":{"shasum":"6b73b275bfcb26b46d430a2e16dcb8dd553d6769","tarball":"https://registry.npmjs.org/@autoark-ai/eva-client-sdk-ts/-/eva-client-sdk-ts-0.0.7-dev.tgz","fileCount":12,"integrity":"sha512-/HTPIevGkv0KQ3iQ4pwSwn+XV3UomrFC6wauli/eXCRQlv8bPToD2R3kHfKoEdGJvaz6GBgGE1T9rV/N5cHpQA==","signatures":[{"sig":"MEUCIQDGOBO8l3aHJTZ01J9v667DF0E6w/XE2hMpWCytnDbstgIgXIAoof5lZQ/A5oGyI8tUQr0hiIknL1LVdPQnSysgXgM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2512121},"main":"./dist/index.js","type":"module","_from":"file:output/eva-client-sdk-ts-0.0.7-dev.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./spi":{"types":"./dist/spi.d.ts","import":"./dist/spi.js","default":"./dist/spi.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"}},"scripts":{"test":"vitest run","build":"node scripts/build.mjs","check":"npm run build && npm run typecheck && npm run typecheck:test && npm run depcruise && npm test && npm run test:browser && npm run verify:pack","depcruise":"depcruise src --config .dependency-cruiser.cjs","typecheck":"tsc -p tsconfig.json --noEmit","verify:pack":"node scripts/verify-pack.mjs","test:browser":"vitest run --config vitest.browser.config.ts","version:sync":"node scripts/sync-package-version.mjs","typecheck:test":"tsc -p tsconfig.test.json","verify:consumer":"node scripts/verify-clean-consumer.mjs","verify:consumer:browser":"node scripts/verify-clean-browser.mjs","verify:consumer:gateway":"tsx test/e2e/direct-gateway/cli.ts","verify:release-candidate":"node scripts/verify-release-candidate.mjs"},"_npmUser":{"name":"shuyuzhang777","email":"shyzhang777@gmail.com"},"_resolved":"/Users/shuyuzhang/workspace/shyArk/repos/autoark-eva-client-sdk/typescript/output/eva-client-sdk-ts-0.0.7-dev.tgz","_integrity":"sha512-/HTPIevGkv0KQ3iQ4pwSwn+XV3UomrFC6wauli/eXCRQlv8bPToD2R3kHfKoEdGJvaz6GBgGE1T9rV/N5cHpQA==","_npmVersion":"11.16.0","description":"EVA 端侧 TypeScript SDK（契约驱动、浏览器优先）。","directories":{},"sideEffects":false,"_nodeVersion":"26.3.1","dependencies":{"onnxruntime-web":"1.26.0","@alexanderolsen/libsamplerate-js":"2.1.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"^4.23.0","vite":"^8.1.4","vitest":"^4.1.10","esbuild":"^0.28.1","playwright":"^1.48.0","typescript":"^5.6.0","@types/node":"^22.20.1","@vitest/browser":"^4.1.10","dependency-cruiser":"^16.0.0","dts-bundle-generator":"^9.5.1","@vitest/browser-playwright":"^4.1.10"},"_npmOperationalInternal":{"tmp":"tmp/eva-client-sdk-ts_0.0.7-dev_1784912353375_0.08569497150662264","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@autoark-ai/eva-client-sdk-ts","version":"1.0.0","keywords":["eva-client-sdk","typescript","conversational-ai","voice-agent"],"license":"SEE LICENSE IN LICENSE","_id":"@autoark-ai/eva-client-sdk-ts@1.0.0","maintainers":[{"name":"autoarkeva","email":"dev@autoark.ai"},{"name":"shuyuzhang777","email":"shyzhang777@gmail.com"},{"name":"ligalu","email":"841512192@qq.com"}],"dist":{"shasum":"5bc5da798753cbacbe0082272cee6409f3887992","tarball":"https://registry.npmjs.org/@autoark-ai/eva-client-sdk-ts/-/eva-client-sdk-ts-1.0.0.tgz","fileCount":12,"integrity":"sha512-X8uFxUefbYs2s4wFKuitCT1tmb3M1V3AxVOmw/Uev7DUvJY3bECJZqKChIie/75ZYVUsYuAz0k9AjU7HuhUKqw==","signatures":[{"sig":"MEQCIAJMF1y+hxWReutH0/Msn+X/ql2j2eZXJmCT7L0DoTNwAiBYXWhtfKcy7BP+b3ZR3bRn0hlRlfsMY6Fj6cmRZz3rRg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2521765},"main":"./dist/index.js","type":"module","_from":"file:/Users/shuyuzhang/workspace/shyArk/repos/autoark-eva-client-sdk/typescript/output/eva-client-sdk-ts-1.0.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./spi":{"types":"./dist/spi.d.ts","import":"./dist/spi.js","default":"./dist/spi.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"}},"scripts":{"lint":"eslint src test scripts *.config.ts *.config.mjs .dependency-cruiser.cjs","test":"vitest run","build":"node scripts/build.mjs","check":"npm run build && npm run typecheck && npm run typecheck:test && npm run lint && npm run format:check && npm run verify:install-scripts && npm run depcruise && npm run test:coverage && npm run test:browser && npm run verify:pack","depcruise":"depcruise src --config .dependency-cruiser.cjs","typecheck":"tsc -p tsconfig.json --noEmit","check:local":"node scripts/local-release/cli.mjs check","verify:pack":"node scripts/verify-pack.mjs","format:check":"node scripts/verify-format-ratchet.mjs","test:browser":"vitest run --config vitest.browser.config.ts","version:sync":"node scripts/sync-package-version.mjs","release:local":"node scripts/local-release/cli.mjs release","test:coverage":"vitest run --coverage","release:freeze":"node scripts/freeze-release-candidate.mjs","typecheck:test":"tsc -p tsconfig.test.json && tsc -p tsconfig.type-tests.json","verify:consumer":"node scripts/verify-clean-consumer.mjs","release:artifacts":"node scripts/local-release/artifacts-cli.mjs","verify:install-scripts":"node scripts/verify-install-script-policy.mjs","verify:consumer:browser":"node scripts/verify-clean-browser.mjs","verify:consumer:gateway":"tsx test/e2e/direct-gateway/cli.ts","verify:release-candidate":"node scripts/verify-release-candidate.mjs"},"_npmUser":{"name":"shuyuzhang777","email":"shyzhang777@gmail.com"},"_resolved":"/Users/shuyuzhang/workspace/shyArk/repos/autoark-eva-client-sdk/typescript/output/eva-client-sdk-ts-1.0.0.tgz","_integrity":"sha512-X8uFxUefbYs2s4wFKuitCT1tmb3M1V3AxVOmw/Uev7DUvJY3bECJZqKChIie/75ZYVUsYuAz0k9AjU7HuhUKqw==","_npmVersion":"11.16.0","description":"EVA 端侧 TypeScript SDK（契约驱动，支持浏览器及兼容 Web API 的运行时）。","directories":{},"sideEffects":false,"_nodeVersion":"26.3.1","allowScripts":{"esbuild@0.28.1":true,"fsevents@2.3.2":true,"fsevents@2.3.3":true,"protobufjs@7.6.5":true},"dependencies":{"onnxruntime-web":"1.26.0","@alexanderolsen/libsamplerate-js":"2.1.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.0","vite":"8.1.5","eslint":"10.8.0","vitest":"^4.1.10","esbuild":"^0.28.1","globals":"17.8.0","prettier":"3.9.6","@eslint/js":"10.0.1","playwright":"^1.48.0","typescript":"^5.6.0","@types/node":"^22.20.1","@vitest/browser":"^4.1.10","typescript-eslint":"8.65.0","dependency-cruiser":"^16.0.0","@vitest/coverage-v8":"4.1.10","dts-bundle-generator":"^9.5.1","@vitest/browser-playwright":"^4.1.10"},"_npmOperationalInternal":{"tmp":"tmp/eva-client-sdk-ts_1.0.0_1785382144608_0.03215140386729143","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@autoark-ai/eva-client-sdk-ts","version":"1.0.1","keywords":["eva-client-sdk","typescript","conversational-ai","voice-agent"],"license":"SEE LICENSE IN LICENSE","_id":"@autoark-ai/eva-client-sdk-ts@1.0.1","maintainers":[{"name":"autoarkeva","email":"dev@autoark.ai"},{"name":"shuyuzhang777","email":"shyzhang777@gmail.com"},{"name":"ligalu","email":"841512192@qq.com"}],"dist":{"shasum":"ad491902ea089c726ddfcb6b579f532579b339c8","tarball":"https://registry.npmjs.org/@autoark-ai/eva-client-sdk-ts/-/eva-client-sdk-ts-1.0.1.tgz","fileCount":12,"integrity":"sha512-CJMI/Eg3fZVmFHOG1breqvgu10H5FdqjrqV0ST6jkxZFM2Dvl4+DvxN/jei7xDF/BzX1Z5NdZAQSwLjLG3S3VA==","signatures":[{"sig":"MEUCIQDHlt9/EHJLOmcpLwRwk5d2xDlnr/yNN1+8gwGLds+mhQIgCAi/xx+4s5d3nuC+Tj3a/zpwlSyGZETVT84pA3lZqak=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2525031},"main":"./dist/index.js","type":"module","_from":"file:output/eva-client-sdk-ts-1.0.1.tgz","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./spi":{"types":"./dist/spi.d.ts","import":"./dist/spi.js","default":"./dist/spi.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"}},"scripts":{"lint":"eslint src test scripts *.config.ts *.config.mjs .dependency-cruiser.cjs","test":"vitest run","build":"node scripts/build.mjs","check":"npm run build && npm run typecheck && npm run typecheck:test && npm run lint && npm run format:check && npm run verify:install-scripts && npm run depcruise && npm run test:coverage && npm run test:browser && npm run verify:pack","depcruise":"depcruise src --config .dependency-cruiser.cjs","typecheck":"tsc -p tsconfig.json --noEmit","check:local":"node scripts/local-release/cli.mjs check","verify:pack":"node scripts/verify-pack.mjs","format:check":"node scripts/verify-format-ratchet.mjs","test:browser":"vitest run --config vitest.browser.config.ts","version:sync":"node scripts/sync-package-version.mjs","release:local":"node scripts/local-release/cli.mjs release","test:coverage":"vitest run --coverage","release:freeze":"node scripts/freeze-release-candidate.mjs","typecheck:test":"tsc -p tsconfig.test.json && tsc -p tsconfig.type-tests.json","verify:consumer":"node scripts/verify-clean-consumer.mjs","release:artifacts":"node scripts/local-release/artifacts-cli.mjs","verify:install-scripts":"node scripts/verify-install-script-policy.mjs","verify:consumer:browser":"node scripts/verify-clean-browser.mjs","verify:consumer:gateway":"tsx test/e2e/direct-gateway/cli.ts","verify:release-candidate":"node scripts/verify-release-candidate.mjs"},"_npmUser":{"name":"shuyuzhang777","email":"shyzhang777@gmail.com"},"_resolved":"/Users/shuyuzhang/.codex/worktrees/e3ac/autoark-eva-client-sdk/typescript/output/eva-client-sdk-ts-1.0.1.tgz","_integrity":"sha512-CJMI/Eg3fZVmFHOG1breqvgu10H5FdqjrqV0ST6jkxZFM2Dvl4+DvxN/jei7xDF/BzX1Z5NdZAQSwLjLG3S3VA==","_npmVersion":"11.16.0","description":"EVA 端侧 TypeScript SDK（契约驱动，支持浏览器及兼容 Web API 的运行时）。","directories":{},"sideEffects":false,"_nodeVersion":"26.3.1","allowScripts":{"esbuild@0.28.1":true,"fsevents@2.3.2":true,"fsevents@2.3.3":true,"protobufjs@7.6.5":true},"dependencies":{"onnxruntime-web":"1.26.0","@alexanderolsen/libsamplerate-js":"2.1.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.0","vite":"8.1.5","eslint":"10.8.0","vitest":"^4.1.10","esbuild":"^0.28.1","globals":"17.8.0","prettier":"3.9.6","@eslint/js":"10.0.1","playwright":"^1.48.0","typescript":"^5.6.0","@types/node":"^22.20.1","@vitest/browser":"^4.1.10","typescript-eslint":"8.65.0","dependency-cruiser":"^16.0.0","@vitest/coverage-v8":"4.1.10","dts-bundle-generator":"^9.5.1","@vitest/browser-playwright":"^4.1.10"},"_npmOperationalInternal":{"tmp":"tmp/eva-client-sdk-ts_1.0.1_1785484279895_0.5358932492293","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@autoark-ai/eva-client-sdk-ts","version":"1.0.2","keywords":["eva-client-sdk","typescript","conversational-ai","voice-agent"],"license":"SEE LICENSE IN LICENSE","_id":"@autoark-ai/eva-client-sdk-ts@1.0.2","maintainers":[{"name":"autoarkeva","email":"dev@autoark.ai"},{"name":"shuyuzhang777","email":"shyzhang777@gmail.com"},{"name":"ligalu","email":"841512192@qq.com"}],"dist":{"shasum":"c6664edea0155b405ec5d11dc4c9dd0fb81be9f6","tarball":"https://registry.npmjs.org/@autoark-ai/eva-client-sdk-ts/-/eva-client-sdk-ts-1.0.2.tgz","fileCount":12,"integrity":"sha512-89YDZWskHsiILOL0BuOWlA0MFqbbHkyur6E9WlklH4AVL18H6VvJM/mLKfbjrNSoXtk8jsKXBmXGO09/owMChg==","signatures":[{"sig":"MEYCIQDB3uEQrRXMPZDVkd1JY8hZPp7BOoOXgllZPq23He0iIAIhANDSePbKj24CGRyGma12fXTizWstin57O3lTH0dVMHPk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2525402},"main":"./dist/index.js","type":"module","_from":"file:/Users/shuyuzhang/.codex/worktrees/7924/autoark-eva-client-sdk/typescript/output/eva-client-sdk-ts-1.0.2.tgz","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./spi":{"types":"./dist/spi.d.ts","import":"./dist/spi.js","default":"./dist/spi.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"}},"scripts":{"lint":"eslint src test scripts *.config.ts *.config.mjs .dependency-cruiser.cjs","test":"vitest run","build":"node scripts/build.mjs","check":"npm run build && npm run typecheck && npm run typecheck:test && npm run lint && npm run format:check && npm run verify:install-scripts && npm run depcruise && npm run test:coverage && npm run test:browser && npm run verify:pack","depcruise":"depcruise src --config .dependency-cruiser.cjs","typecheck":"tsc -p tsconfig.json --noEmit","check:local":"node scripts/local-release/cli.mjs check","verify:pack":"node scripts/verify-pack.mjs","format:check":"node scripts/verify-format-ratchet.mjs","test:browser":"vitest run --config vitest.browser.config.ts","version:sync":"node scripts/sync-package-version.mjs","release:local":"node scripts/local-release/cli.mjs release","test:coverage":"vitest run --coverage","release:freeze":"node scripts/freeze-release-candidate.mjs","typecheck:test":"tsc -p tsconfig.test.json && tsc -p tsconfig.type-tests.json","verify:consumer":"node scripts/verify-clean-consumer.mjs","release:artifacts":"node scripts/local-release/artifacts-cli.mjs","verify:install-scripts":"node scripts/verify-install-script-policy.mjs","verify:consumer:browser":"node scripts/verify-clean-browser.mjs","verify:consumer:gateway":"tsx test/e2e/direct-gateway/cli.ts","verify:release-candidate":"node scripts/verify-release-candidate.mjs"},"_npmUser":{"name":"shuyuzhang777","email":"shyzhang777@gmail.com"},"_resolved":"/Users/shuyuzhang/.codex/worktrees/7924/autoark-eva-client-sdk/typescript/output/eva-client-sdk-ts-1.0.2.tgz","_integrity":"sha512-89YDZWskHsiILOL0BuOWlA0MFqbbHkyur6E9WlklH4AVL18H6VvJM/mLKfbjrNSoXtk8jsKXBmXGO09/owMChg==","_npmVersion":"11.16.0","description":"EVA 端侧 TypeScript SDK（契约驱动，支持浏览器及兼容 Web API 的运行时）。","directories":{},"sideEffects":false,"_nodeVersion":"26.3.1","allowScripts":{"esbuild@0.28.1":true,"fsevents@2.3.2":true,"fsevents@2.3.3":true,"protobufjs@7.6.5":true},"dependencies":{"onnxruntime-web":"1.26.0","@alexanderolsen/libsamplerate-js":"2.1.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.0","vite":"8.1.5","eslint":"10.8.0","vitest":"^4.1.10","esbuild":"^0.28.1","globals":"17.8.0","prettier":"3.9.6","@eslint/js":"10.0.1","playwright":"^1.48.0","typescript":"^5.6.0","@types/node":"^22.20.1","@vitest/browser":"^4.1.10","typescript-eslint":"8.65.0","dependency-cruiser":"^16.0.0","@vitest/coverage-v8":"4.1.10","dts-bundle-generator":"^9.5.1","@vitest/browser-playwright":"^4.1.10"},"_npmOperationalInternal":{"tmp":"tmp/eva-client-sdk-ts_1.0.2_1785508437566_0.7472783943210926","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@autoark-ai/eva-client-sdk-ts","version":"1.0.3","keywords":["eva-client-sdk","typescript","conversational-ai","voice-agent"],"license":"SEE LICENSE IN LICENSE","_id":"@autoark-ai/eva-client-sdk-ts@1.0.3","maintainers":[{"name":"autoarkeva","email":"dev@autoark.ai"},{"name":"shuyuzhang777","email":"shyzhang777@gmail.com"},{"name":"ligalu","email":"841512192@qq.com"}],"dist":{"shasum":"1d5fe9f2cb877c7877ac2308c89b22e91e8a37e9","tarball":"https://registry.npmjs.org/@autoark-ai/eva-client-sdk-ts/-/eva-client-sdk-ts-1.0.3.tgz","fileCount":12,"integrity":"sha512-3wUp78IhaR8MNc3mg3yFbZQnJhzD45Sqgq4XAAzP2Kv294bFYsjTX/tRVrZ4/9fYbmLl3I4vDOcmK2dcnDCrvg==","signatures":[{"sig":"MEQCIEzsJ95/v9n0g6ZXY+MxTIqmumSKf0YeWhqq87ZoctkDAiBaS94Opi5gV7qCZ4BlonMWs1Fx/7/KfkYal5Tgd/wcIQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2528145},"main":"./dist/index.js","type":"module","_from":"file:/Users/shuyuzhang/.codex/worktrees/8923/autoark-eva-client-sdk/typescript/output/eva-client-sdk-ts-1.0.3.tgz","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./spi":{"types":"./dist/spi.d.ts","import":"./dist/spi.js","default":"./dist/spi.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"}},"scripts":{"lint":"eslint src test scripts *.config.ts *.config.mjs .dependency-cruiser.cjs","test":"vitest run","build":"node scripts/build.mjs","check":"npm run build && npm run typecheck && npm run typecheck:test && npm run lint && npm run format:check && npm run verify:install-scripts && npm run depcruise && npm run test:coverage && npm run test:browser && npm run verify:pack","depcruise":"depcruise src --config .dependency-cruiser.cjs","typecheck":"tsc -p tsconfig.json --noEmit","check:local":"node scripts/local-release/cli.mjs check","verify:pack":"node scripts/verify-pack.mjs","format:check":"node scripts/verify-format-ratchet.mjs","test:browser":"vitest run --config vitest.browser.config.ts","version:sync":"node scripts/sync-package-version.mjs","release:local":"node scripts/local-release/cli.mjs release","test:coverage":"vitest run --coverage","release:freeze":"node scripts/freeze-release-candidate.mjs","typecheck:test":"tsc -p tsconfig.test.json && tsc -p tsconfig.type-tests.json","verify:consumer":"node scripts/verify-clean-consumer.mjs","release:artifacts":"node scripts/local-release/artifacts-cli.mjs","verify:install-scripts":"node scripts/verify-install-script-policy.mjs","verify:consumer:browser":"node scripts/verify-clean-browser.mjs","verify:consumer:gateway":"tsx test/e2e/direct-gateway/cli.ts","verify:release-candidate":"node scripts/verify-release-candidate.mjs"},"_npmUser":{"name":"shuyuzhang777","email":"shyzhang777@gmail.com"},"_resolved":"/Users/shuyuzhang/.codex/worktrees/8923/autoark-eva-client-sdk/typescript/output/eva-client-sdk-ts-1.0.3.tgz","_integrity":"sha512-3wUp78IhaR8MNc3mg3yFbZQnJhzD45Sqgq4XAAzP2Kv294bFYsjTX/tRVrZ4/9fYbmLl3I4vDOcmK2dcnDCrvg==","_npmVersion":"11.16.0","description":"EVA 端侧 TypeScript SDK（契约驱动，支持浏览器及兼容 Web API 的运行时）。","directories":{},"sideEffects":false,"_nodeVersion":"26.3.1","allowScripts":{"esbuild@0.28.1":true,"fsevents@2.3.2":true,"fsevents@2.3.3":true,"protobufjs@7.6.5":true},"dependencies":{"onnxruntime-web":"1.26.0","@alexanderolsen/libsamplerate-js":"2.1.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.0","vite":"8.1.5","eslint":"10.8.0","vitest":"^4.1.10","esbuild":"^0.28.1","globals":"17.8.0","prettier":"3.9.6","@eslint/js":"10.0.1","playwright":"^1.48.0","typescript":"^5.6.0","@types/node":"^22.20.1","@vitest/browser":"^4.1.10","typescript-eslint":"8.65.0","dependency-cruiser":"^16.0.0","@vitest/coverage-v8":"4.1.10","dts-bundle-generator":"^9.5.1","@vitest/browser-playwright":"^4.1.10"},"_npmOperationalInternal":{"tmp":"tmp/eva-client-sdk-ts_1.0.3_1785556372620_0.6133260822912061","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@autoark-ai/eva-client-sdk-ts","version":"1.0.4","keywords":["eva-client-sdk","typescript","conversational-ai","voice-agent"],"license":"SEE LICENSE IN LICENSE","_id":"@autoark-ai/eva-client-sdk-ts@1.0.4","maintainers":[{"name":"autoarkeva","email":"dev@autoark.ai"},{"name":"shuyuzhang777","email":"shyzhang777@gmail.com"},{"name":"ligalu","email":"841512192@qq.com"}],"dist":{"shasum":"51d112ad539f0c848f0615404aef112110b8d657","tarball":"https://registry.npmjs.org/@autoark-ai/eva-client-sdk-ts/-/eva-client-sdk-ts-1.0.4.tgz","fileCount":12,"integrity":"sha512-2GCxXaKV37kJGEY4eKOFsX0ibeYeE+I4M5gOJAq2Wk/n6KCXvF8CVPgyhx/m1yHBt7mTCTKQPlWKXr/xL5OR7Q==","signatures":[{"sig":"MEUCID/pomapotTHUJ6u3jd44P/5BaLQ9dfV1tw3ssq4xsv0AiEA1+qmT5K5XuZijCJcM0ESA/YTl1lYcUBAh6qubmRW9Gs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2534398},"main":"./dist/index.js","type":"module","_from":"file:/Users/shuyuzhang/workspace/shyArk/repos/autoark-eva-client-sdk/typescript/output/eva-client-sdk-ts-1.0.4.tgz","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./spi":{"types":"./dist/spi.d.ts","import":"./dist/spi.js","default":"./dist/spi.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"}},"scripts":{"lint":"eslint src test scripts *.config.ts *.config.mjs .dependency-cruiser.cjs","test":"vitest run","build":"node scripts/build.mjs","check":"npm run build && npm run typecheck && npm run typecheck:test && npm run verify:public-config-docs && npm run lint && npm run format:check && npm run verify:install-scripts && npm run depcruise && npm run test:coverage && npm run test:browser","depcruise":"depcruise src --config .dependency-cruiser.cjs","typecheck":"tsc -p tsconfig.json --noEmit","check:local":"node scripts/local-release/cli.mjs check","verify:pack":"node scripts/verify-pack.mjs","format:check":"node scripts/verify-format-ratchet.mjs","test:browser":"vitest run --config vitest.browser.config.ts","version:sync":"node scripts/sync-package-version.mjs","release:local":"node scripts/local-release/cli.mjs release","test:coverage":"vitest run --coverage","release:freeze":"node scripts/freeze-release-candidate.mjs","typecheck:test":"tsc -p tsconfig.test.json && tsc -p tsconfig.type-tests.json","verify:consumer":"node scripts/verify-clean-consumer.mjs","release:artifacts":"node scripts/local-release/artifacts-cli.mjs","verify:install-scripts":"node scripts/verify-install-script-policy.mjs","verify:consumer:browser":"node scripts/verify-clean-browser.mjs","verify:consumer:gateway":"tsx test/e2e/direct-gateway/cli.ts","verify:release-candidate":"node scripts/verify-release-candidate.mjs","verify:public-config-docs":"node scripts/verify-public-configuration-docs.mjs"},"_npmUser":{"name":"shuyuzhang777","email":"shyzhang777@gmail.com"},"_resolved":"/Users/shuyuzhang/workspace/shyArk/repos/autoark-eva-client-sdk/typescript/output/eva-client-sdk-ts-1.0.4.tgz","overrides":{"fast-uri":"3.1.5","brace-expansion":"5.0.9"},"_integrity":"sha512-2GCxXaKV37kJGEY4eKOFsX0ibeYeE+I4M5gOJAq2Wk/n6KCXvF8CVPgyhx/m1yHBt7mTCTKQPlWKXr/xL5OR7Q==","_npmVersion":"11.16.0","description":"EVA 端侧 TypeScript SDK（契约驱动，支持浏览器及兼容 Web API 的运行时）。","directories":{},"sideEffects":false,"_nodeVersion":"26.3.1","allowScripts":{"esbuild@0.28.1":true,"fsevents@2.3.2":true,"fsevents@2.3.3":true,"protobufjs@7.6.5":true},"dependencies":{"onnxruntime-web":"1.26.0","@alexanderolsen/libsamplerate-js":"2.1.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"^4.23.0","vite":"8.1.5","eslint":"10.8.0","vitest":"^4.1.10","esbuild":"^0.28.1","globals":"17.8.0","prettier":"3.9.6","@eslint/js":"10.0.1","playwright":"^1.48.0","typescript":"^5.6.0","@types/node":"^22.20.1","@vitest/browser":"^4.1.10","typescript-eslint":"8.65.0","dependency-cruiser":"^16.0.0","@vitest/coverage-v8":"4.1.10","dts-bundle-generator":"^9.5.1","@vitest/browser-playwright":"^4.1.10"},"_npmOperationalInternal":{"tmp":"tmp/eva-client-sdk-ts_1.0.4_1786072605638_0.5875396441804968","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@autoark-ai/eva-client-sdk-ts","version":"1.0.5","keywords":["eva-client-sdk","typescript","conversational-ai","voice-agent"],"license":"SEE LICENSE IN LICENSE","_id":"@autoark-ai/eva-client-sdk-ts@1.0.5","maintainers":[{"name":"autoarkeva","email":"dev@autoark.ai"},{"name":"shuyuzhang777","email":"shyzhang777@gmail.com"},{"name":"ligalu","email":"841512192@qq.com"}],"dist":{"shasum":"b354e865d4c36a0ceb1a26453983382c485012c8","tarball":"https://registry.npmjs.org/@autoark-ai/eva-client-sdk-ts/-/eva-client-sdk-ts-1.0.5.tgz","fileCount":12,"integrity":"sha512-Ya0ytpvaYhDK7YE8tmRybZgQwuKvQ7DEl/uMFZh9AsddobBGRg2xsorGgOI7PHzvn9NMnrIB49NrmHLA5HRlyQ==","signatures":[{"sig":"MEQCIE4TM6TWDwNmQTqbGI9EYv8Cw1cMJ1//xJFn7CzB3GGHAiBlMmIEI/g8a/SF1+h5pyY26r79hqATEmb5UJgKuzM6Jw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2538394},"main":"./dist/index.js","type":"module","_from":"file:/Users/shuyuzhang/workspace/shyArk/repos/autoark-eva-client-sdk/typescript/output/prod/eva-client-sdk-ts-1.0.5.tgz","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./spi":{"types":"./dist/spi.d.ts","import":"./dist/spi.js","default":"./dist/spi.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"}},"scripts":{"lint":"eslint src test scripts *.config.ts *.config.mjs .dependency-cruiser.cjs","test":"vitest run","build":"node scripts/build.mjs","check":"npm run build && npm run typecheck && npm run typecheck:test && npm run verify:public-config-docs && npm run lint && npm run format:check && npm run verify:install-scripts && npm run depcruise && npm run test:coverage && npm run test:browser","depcruise":"depcruise src --config .dependency-cruiser.cjs","typecheck":"tsc -p tsconfig.json --noEmit","check:local":"node scripts/local-release/cli.mjs check","release:tag":"node scripts/release-tag-cli.mjs","verify:pack":"node scripts/verify-pack.mjs","format:check":"node scripts/verify-format-ratchet.mjs","test:browser":"vitest run --config vitest.browser.config.ts","version:sync":"node scripts/sync-package-version.mjs","release:local":"node scripts/local-release/cli.mjs release","test:coverage":"vitest run --coverage","release:freeze":"node scripts/freeze-release-candidate.mjs","release:public":"node scripts/release-prepare-cli.mjs public","typecheck:test":"tsc -p tsconfig.test.json && tsc -p tsconfig.type-tests.json","release:confirm":"node scripts/registry-confirmation-cli.mjs","release:publish":"node scripts/controlled-publish-cli.mjs","release:version":"node scripts/release-version-cli.mjs","verify:consumer":"node scripts/verify-clean-consumer.mjs","release:internal":"node scripts/release-prepare-cli.mjs internal","release:artifacts":"node scripts/local-release/artifacts-cli.mjs","release:git-check":"node scripts/release-mainline-cli.mjs","release:public:tag":"node scripts/release-step-cli.mjs public tag","release:public:publish":"node scripts/release-step-cli.mjs public publish","verify:install-scripts":"node scripts/verify-install-script-policy.mjs","release:public:push-tag":"node scripts/release-step-cli.mjs public push-tag","verify:consumer:browser":"node scripts/verify-clean-browser.mjs","verify:consumer:gateway":"tsx test/e2e/direct-gateway/cli.ts","release:internal:publish":"node scripts/release-step-cli.mjs internal publish","release:public:push-main":"node scripts/release-step-cli.mjs public push-main","verify:release-candidate":"node scripts/verify-release-candidate.mjs","verify:public-config-docs":"node scripts/verify-public-configuration-docs.mjs"},"_npmUser":{"name":"shuyuzhang777","email":"shyzhang777@gmail.com"},"_resolved":"/Users/shuyuzhang/workspace/shyArk/repos/autoark-eva-client-sdk/typescript/output/prod/eva-client-sdk-ts-1.0.5.tgz","overrides":{"fast-uri":"3.1.5","brace-expansion":"5.0.9"},"_integrity":"sha512-Ya0ytpvaYhDK7YE8tmRybZgQwuKvQ7DEl/uMFZh9AsddobBGRg2xsorGgOI7PHzvn9NMnrIB49NrmHLA5HRlyQ==","_npmVersion":"11.16.0","description":"EVA 端侧 TypeScript SDK（契约驱动，支持浏览器及兼容 Web API 的运行时）。","directories":{},"sideEffects":false,"_nodeVersion":"26.3.1","allowScripts":{"esbuild@0.28.1":true,"fsevents@2.3.2":true,"fsevents@2.3.3":true,"protobufjs@7.6.5":true},"dependencies":{"onnxruntime-web":"1.26.0","@alexanderolsen/libsamplerate-js":"2.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.0","vite":"8.1.5","eslint":"10.8.0","vitest":"^4.1.10","esbuild":"^0.28.1","globals":"17.8.0","prettier":"3.9.6","@eslint/js":"10.0.1","playwright":"^1.48.0","typescript":"^5.6.0","@types/node":"^22.20.1","@vitest/browser":"^4.1.10","typescript-eslint":"8.65.0","dependency-cruiser":"^16.0.0","@vitest/coverage-v8":"4.1.10","dts-bundle-generator":"^9.5.1","@vitest/browser-playwright":"^4.1.10"},"_npmOperationalInternal":{"tmp":"tmp/eva-client-sdk-ts_1.0.5_1786634234358_0.14705291603159565","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@autoark-ai/eva-client-sdk-ts","version":"1.0.6","keywords":["eva-client-sdk","typescript","conversational-ai","voice-agent"],"license":"SEE LICENSE IN LICENSE","_id":"@autoark-ai/eva-client-sdk-ts@1.0.6","maintainers":[{"name":"autoarkeva","email":"dev@autoark.ai"},{"name":"shuyuzhang777","email":"shyzhang777@gmail.com"},{"name":"ligalu","email":"841512192@qq.com"}],"dist":{"shasum":"9eb797e96355aa6a35a81ebfbfd6cb870a0c6b69","tarball":"https://registry.npmjs.org/@autoark-ai/eva-client-sdk-ts/-/eva-client-sdk-ts-1.0.6.tgz","fileCount":12,"integrity":"sha512-Jex9LLaKqV6DtmPgRLoFKGX2k9enJGy606XnT3lnAcuBfgNAHvuFnzThzWL6SE0B3RfBm8kjZclE8vaYK7yXmw==","signatures":[{"sig":"MEUCIQCmRu+2WVGBXREjLoooMpwWtaedN+ke2h5BjvC2XWk2OgIgDSebxTwr5YG62uAXa80CsYzvee4zwezWMfrhRKkmZ4k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCICqksDXzMHnxlMh1GbXaKHXDvAUFXFG6MqxhlNfvH0YwAiEApjufJb5p8bTRFXWcdjpPMBpI9LlRN4pBS1Lf2NsoDSY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2538372},"main":"./dist/index.js","type":"module","_from":"file:/Users/shuyuzhang/workspace/shyArk/repos/autoark-eva-client-sdk/typescript/output/prod/eva-client-sdk-ts-1.0.6.tgz","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./spi":{"types":"./dist/spi.d.ts","import":"./dist/spi.js","default":"./dist/spi.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"}},"scripts":{"lint":"eslint src test scripts *.config.ts *.config.mjs .dependency-cruiser.cjs","test":"vitest run","build":"node scripts/build.mjs","check":"npm run build && npm run typecheck && npm run typecheck:test && npm run verify:public-config-docs && npm run lint && npm run format:check && npm run verify:install-scripts && npm run depcruise && npm run test:coverage && npm run test:browser","depcruise":"depcruise src --config .dependency-cruiser.cjs","typecheck":"tsc -p tsconfig.json --noEmit","check:local":"node scripts/local-release/cli.mjs check","release:tag":"node scripts/release-tag-cli.mjs","verify:pack":"node scripts/verify-pack.mjs","format:check":"node scripts/verify-format-ratchet.mjs","test:browser":"vitest run --config vitest.browser.config.ts","version:sync":"node scripts/sync-package-version.mjs","release:local":"node scripts/local-release/cli.mjs release","test:coverage":"vitest run --coverage","release:freeze":"node scripts/freeze-release-candidate.mjs","release:public":"node scripts/release-prepare-cli.mjs public","typecheck:test":"tsc -p tsconfig.test.json && tsc -p tsconfig.type-tests.json","release:confirm":"node scripts/registry-confirmation-cli.mjs","release:publish":"node scripts/controlled-publish-cli.mjs","release:version":"node scripts/release-version-cli.mjs","verify:consumer":"node scripts/verify-clean-consumer.mjs","release:internal":"node scripts/release-prepare-cli.mjs internal","release:artifacts":"node scripts/local-release/artifacts-cli.mjs","release:git-check":"node scripts/release-mainline-cli.mjs","release:public:tag":"node scripts/release-step-cli.mjs public tag","release:public:publish":"node scripts/release-step-cli.mjs public publish","verify:install-scripts":"node scripts/verify-install-script-policy.mjs","release:public:push-tag":"node scripts/release-step-cli.mjs public push-tag","verify:consumer:browser":"node scripts/verify-clean-browser.mjs","verify:consumer:gateway":"tsx test/e2e/direct-gateway/cli.ts","release:internal:publish":"node scripts/release-step-cli.mjs internal publish","release:public:push-main":"node scripts/release-step-cli.mjs public push-main","verify:release-candidate":"node scripts/verify-release-candidate.mjs","verify:public-config-docs":"node scripts/verify-public-configuration-docs.mjs"},"_npmUser":{"name":"shuyuzhang777","email":"shyzhang777@gmail.com"},"_resolved":"/Users/shuyuzhang/workspace/shyArk/repos/autoark-eva-client-sdk/typescript/output/prod/eva-client-sdk-ts-1.0.6.tgz","overrides":{"fast-uri":"3.1.8","brace-expansion":"5.0.9"},"_integrity":"sha512-Jex9LLaKqV6DtmPgRLoFKGX2k9enJGy606XnT3lnAcuBfgNAHvuFnzThzWL6SE0B3RfBm8kjZclE8vaYK7yXmw==","_npmVersion":"11.19.1","description":"EVA 端侧 TypeScript SDK（契约驱动，支持浏览器及兼容 Web API 的运行时）。","directories":{},"sideEffects":false,"_nodeVersion":"26.3.1","allowScripts":{"esbuild@0.28.1":true,"fsevents@2.3.2":true,"fsevents@2.3.3":true,"protobufjs@7.6.6":true},"dependencies":{"onnxruntime-web":"1.26.0","@alexanderolsen/libsamplerate-js":"2.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.0","vite":"8.1.5","eslint":"10.8.0","vitest":"^4.1.10","esbuild":"^0.28.1","globals":"17.8.0","prettier":"3.9.6","@eslint/js":"10.0.1","playwright":"^1.48.0","typescript":"^5.6.0","@types/node":"^22.20.1","@vitest/browser":"^4.1.10","typescript-eslint":"8.65.0","dependency-cruiser":"^16.0.0","@vitest/coverage-v8":"4.1.10","dts-bundle-generator":"^9.5.1","@vitest/browser-playwright":"^4.1.10"},"_npmOperationalInternal":{"tmp":"tmp/eva-client-sdk-ts_1.0.6_1789618767742_0.6517283198520372","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"@autoark-ai/eva-client-sdk-ts","version":"1.0.7","keywords":["eva-client-sdk","typescript","conversational-ai","voice-agent"],"license":"SEE LICENSE IN LICENSE","_id":"@autoark-ai/eva-client-sdk-ts@1.0.7","maintainers":[{"name":"autoarkeva","email":"dev@autoark.ai"},{"name":"shuyuzhang777","email":"shyzhang777@gmail.com"},{"name":"ligalu","email":"841512192@qq.com"}],"dist":{"shasum":"773a26d12af97183911536d0cd9cc514577d1b13","tarball":"https://registry.npmjs.org/@autoark-ai/eva-client-sdk-ts/-/eva-client-sdk-ts-1.0.7.tgz","fileCount":13,"integrity":"sha512-hG6RSpBMT2at8pEwFzz3UHQqIEYBBUgYYIQlxDYgWP/n2TLwrdZAI3ko9EXb6x4rsrvsO8DEQAo00ygyEtK+gA==","signatures":[{"sig":"MEUCIQDQ2QwzNuQ6uMO4bGCHARRgiyY9AKJdjm+/sscteaBN7AIgMC3Sn2V2P1B/p3bjij9UmLGPf6GX7taPs1WadxEfNek=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIFhbfXVNNnH+HnSjH8VSAPp8K7nc66TdH1ibn0wyG0eBAiEAtBAcZgEYCyhzlBtqpMiA6WeFD5TLA3zoFxpsAu2THhE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2554478},"main":"./dist/index.js","type":"module","_from":"file:/Users/shuyuzhang/workspace/shyArk/repos/autoark-eva-client-sdk/typescript/output/prod/eva-client-sdk-ts-1.0.7.tgz","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./spi":{"types":"./dist/spi.d.ts","import":"./dist/spi.js","default":"./dist/spi.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"}},"scripts":{"lint":"eslint src test scripts *.config.ts *.config.mjs .dependency-cruiser.cjs","test":"vitest run","build":"node scripts/build.mjs","check":"npm run build && npm run typecheck && npm run typecheck:test && npm run verify:public-config-docs && npm run lint && npm run format:check && npm run verify:install-scripts && npm run depcruise && npm run test:coverage && npm run test:browser","depcruise":"depcruise src --config .dependency-cruiser.cjs","typecheck":"tsc -p tsconfig.json --noEmit","check:local":"node scripts/local-release/cli.mjs check","release:tag":"node scripts/release-tag-cli.mjs","verify:pack":"node scripts/verify-pack.mjs","format:check":"node scripts/verify-format-ratchet.mjs","test:browser":"vitest run --config vitest.browser.config.ts","version:sync":"node scripts/sync-package-version.mjs","release:local":"node scripts/local-release/cli.mjs release","test:coverage":"vitest run --coverage","release:freeze":"node scripts/freeze-release-candidate.mjs","release:public":"node scripts/release-prepare-cli.mjs public","typecheck:test":"tsc -p tsconfig.test.json && tsc -p tsconfig.type-tests.json","release:confirm":"node scripts/registry-confirmation-cli.mjs","release:publish":"node scripts/controlled-publish-cli.mjs","release:version":"node scripts/release-version-cli.mjs","verify:consumer":"node scripts/verify-clean-consumer.mjs","release:internal":"node scripts/release-prepare-cli.mjs internal","release:artifacts":"node scripts/local-release/artifacts-cli.mjs","release:git-check":"node scripts/release-mainline-cli.mjs","release:public:tag":"node scripts/release-step-cli.mjs public tag","release:public:publish":"node scripts/release-step-cli.mjs public publish","verify:install-scripts":"node scripts/verify-install-script-policy.mjs","release:public:push-tag":"node scripts/release-step-cli.mjs public push-tag","verify:consumer:browser":"node scripts/verify-clean-browser.mjs","verify:consumer:gateway":"tsx test/e2e/direct-gateway/cli.ts","release:internal:publish":"node scripts/release-step-cli.mjs internal publish","release:public:push-main":"node scripts/release-step-cli.mjs public push-main","verify:release-candidate":"node scripts/verify-release-candidate.mjs","verify:public-config-docs":"node scripts/verify-public-configuration-docs.mjs"},"_npmUser":{"name":"shuyuzhang777","email":"shyzhang777@gmail.com"},"_resolved":"/Users/shuyuzhang/workspace/shyArk/repos/autoark-eva-client-sdk/typescript/output/prod/eva-client-sdk-ts-1.0.7.tgz","overrides":{"fast-uri":"3.1.8","brace-expansion":"5.0.9"},"_integrity":"sha512-hG6RSpBMT2at8pEwFzz3UHQqIEYBBUgYYIQlxDYgWP/n2TLwrdZAI3ko9EXb6x4rsrvsO8DEQAo00ygyEtK+gA==","_npmVersion":"12.0.2","description":"EVA 端侧 TypeScript SDK（契约驱动，支持浏览器及兼容 Web API 的运行时）。","directories":{},"sideEffects":false,"_nodeVersion":"26.3.1","allowScripts":{"esbuild@0.28.1":true,"fsevents@2.3.2":true,"fsevents@2.3.3":true,"protobufjs@7.6.6":true},"dependencies":{"onnxruntime-web":"1.26.0","@alexanderolsen/libsamplerate-js":"2.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.0","vite":"8.1.5","eslint":"10.8.0","vitest":"^4.1.10","esbuild":"^0.28.1","globals":"17.8.0","prettier":"3.9.6","@eslint/js":"10.0.1","playwright":"^1.48.0","typescript":"^5.6.0","@types/node":"^22.20.1","@vitest/browser":"^4.1.10","typescript-eslint":"8.65.0","dependency-cruiser":"^16.0.0","@vitest/coverage-v8":"4.1.10","dts-bundle-generator":"^9.5.1","@vitest/browser-playwright":"^4.1.10"},"_npmOperationalInternal":{"tmp":"tmp/eva-client-sdk-ts_1.0.7_1789720128417_0.3566465703537942","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2026-07-20T04:01:46.484Z","modified":"2026-09-18T08:29:46.373Z","0.0.2-dev":"2026-07-20T04:01:46.881Z","0.0.3-dev":"2026-07-20T06:47:41.468Z","0.0.4-dev":"2026-07-21T14:28:05.962Z","0.0.5-dev":"2026-07-23T08:42:18.511Z","0.0.6-dev":"2026-07-23T08:57:27.334Z","0.0.7-dev":"2026-07-24T16:59:13.582Z","1.0.0":"2026-07-30T03:29:04.772Z","1.0.1":"2026-07-31T07:51:20.058Z","1.0.2":"2026-07-31T14:33:57.712Z","1.0.3":"2026-08-01T03:52:52.862Z","1.0.4":"2026-08-07T03:16:45.832Z","1.0.5":"2026-08-13T15:17:14.596Z","1.0.6":"2026-09-17T04:19:27.895Z","1.0.7":"2026-09-18T08:28:48.543Z"},"license":"SEE LICENSE IN LICENSE","keywords":["eva-client-sdk","typescript","conversational-ai","voice-agent"],"description":"EVA 端侧 TypeScript SDK（契约驱动，支持浏览器及兼容 Web API 的运行时）。","maintainers":[{"name":"autoarkeva","email":"dev@autoark.ai"},{"name":"shuyuzhang777","email":"shyzhang777@gmail.com"},{"name":"ligalu","email":"841512192@qq.com"}],"readme":"# EVA TypeScript SDK\n\n`@autoark-ai/eva-client-sdk-ts` 是面向浏览器及具备 Web API 的运行时（例如 Electron renderer）的 EVA 多轮语音对话 SDK。它提供一个稳定的 Agent Facade、可观察的消息与事件，以及可替换的音频输入、输出、AEC 和摄像头扩展点。\n\n## 安装\n\n正式版本通过 npm `latest` 提供：\n\n```bash\nnpm install @autoark-ai/eva-client-sdk-ts\n```\n\n生产应用应固定实际验收过的完整 package version；默认安装解析 npm `latest`。\n\n## 环境要求\n\n- 前端构建环境要求 Node.js `>=22`。\n- 核心 Agent Facade 与媒体 SPI 不限定于浏览器。`./browser` 提供的默认媒体实现依赖 `MediaDevices`、Web Audio、video/canvas 等 Web API，可用于浏览器和已启用这些 API 的 Electron renderer；其他运行时请通过 `./spi` 接入自己的媒体实现。\n- 自动浏览器验收覆盖 Chromium-based browsers；Safari 尚未以绑定当前候选 SHA 的真实浏览器结果复验，不属于本候选的自动支持证据。\n\n使用 Electron？查看[Electron 接入注意事项](guides/integration-and-troubleshooting.md#electron)。其他构建工具配置见同一指南的[构建工具配置](guides/integration-and-troubleshooting.md#build)。\n\n## 版本与 Gateway\n\n公网正式版本使用普通 SemVer `X.Y.Z`。SDK 使用内置的固定 EVA Gateway；Gateway 地址不能通过\nAgent 配置或任意 URL 改写。\n\n包只提供三个入口：\n\n```ts\nimport {\n  createEvaVoiceDialogueAgent,\n  DEFAULT_EMOTION_CODES,\n  EvaSdkError,\n  type AgentEvent,\n  type ConversationMessage,\n  type CommandRegistration,\n  type DefaultEmotionCode,\n  type EmotionConfig,\n  type EvaVoiceDialogueAgent,\n  type EvaVoiceDialogueAgentConfig,\n} from \"@autoark-ai/eva-client-sdk-ts\";\n\nimport type {\n  AecProcessor,\n  AudioInputSource,\n  AudioOutputSink,\n  CameraSnapshotSource,\n  MediaTransportsConfig,\n} from \"@autoark-ai/eva-client-sdk-ts/spi\";\n\nimport {\n  createBrowserAudioInputSource,\n  createBrowserAudioOutputSink,\n  createBrowserCameraSnapshotSource,\n  createPassthroughAecProcessor,\n} from \"@autoark-ai/eva-client-sdk-ts/browser\";\n```\n\n## 浏览器最小用法\n\n下面演示 SDK 公共 API 的最小组合。模型参数取自[官方模型表](https://eva.autoarkai.com/api-docs/guide/gateway-model-list.md)，属于示例组合，不是 SDK 默认值或跨设备效果保证。运行时由应用取得 `applicationManagedApiKey`；构建不依赖它是否存在。配置选择与验证见[接入配置注意事项](guides/integration-and-troubleshooting.md#configuration)。\n\n```ts\nimport { createEvaVoiceDialogueAgent, type AgentEvent } from \"@autoark-ai/eva-client-sdk-ts\";\nimport type { MediaTransportsConfig } from \"@autoark-ai/eva-client-sdk-ts/spi\";\nimport {\n  createBrowserAudioInputSource,\n  createBrowserAudioOutputSink,\n  createPassthroughAecProcessor,\n} from \"@autoark-ai/eva-client-sdk-ts/browser\";\n\n// 应用在运行时提供，例如由用户输入；此声明仅表示接入边界。\ndeclare const applicationManagedApiKey: string;\n\nconst transports: MediaTransportsConfig = {\n  input: createBrowserAudioInputSource({\n    echoCancellation: true,\n    noiseSuppression: true,\n    autoGainControl: true,\n    maxBufferedChunks: 64,\n  }),\n  output: createBrowserAudioOutputSink(),\n  aec: createPassthroughAecProcessor(),\n};\n\nconst agent = createEvaVoiceDialogueAgent({\n  apiKey: applicationManagedApiKey,\n  asr: {\n    model: \"ark-asr-plus\",\n    sampleRate: 16_000,\n  },\n  llm: {\n    model: \"volcengine-doubao-seed-2.0-lite\",\n  },\n  tts: {\n    model: \"ark-tts-flash\",\n    voice: \"zh_en_female_sophie\",\n    sampleRate: 44100,\n  },\n  vad: {}, // 使用 SDK 默认值作为验证起点，需在目标设备验收。\n  transports,\n});\n\nconst unsubscribe = agent.onEvent((event: AgentEvent) => {\n  if (event.type === \"reply.partial\") {\n    console.log(event.text);\n  }\n});\n\nawait agent.start();\nawait agent.setAudioInputEnabled(true);\nawait agent.submitText(\"你好\");\n\nconsole.log(agent.getMessages());\n\nawait agent.setTtsEnabled(false);\nawait agent.stop();\nunsubscribe();\n```\n\n## 可选：增加摄像头\n\n需要图片输入时，在上例的 `transports` 中增加 browser camera source：\n\n```ts\nimport { createBrowserCameraSnapshotSource } from \"@autoark-ai/eva-client-sdk-ts/browser\";\n\nconst cameraTransports: MediaTransportsConfig = {\n  ...transports,\n  camera: createBrowserCameraSnapshotSource(),\n};\n```\n\n创建 Agent 时使用 `cameraTransports`。摄像头默认关闭；调用\n`await agent.setCameraCaptureEnabled(true)` 后才会申请权限并持有 camera session，关闭后释放。\n启用期间，每个 speech turn 至多采集一张图片供当前 LLM 请求使用；不开启或不提供 camera source\n都不影响语音和文本对话。\n\n## Agent Facade\n\n`createEvaVoiceDialogueAgent(config)` 返回的 `EvaVoiceDialogueAgent` 只有八个方法：\n\n```ts\ninterface EvaVoiceDialogueAgent {\n  start(): Promise<void>;\n  submitText(text: string, options?: SubmitTextOptions): Promise<void>;\n  setAudioInputEnabled(enabled: boolean): Promise<void>;\n  setCameraCaptureEnabled(enabled: boolean): Promise<void>;\n  setTtsEnabled(enabled: boolean): Promise<void>;\n  getMessages(): readonly ConversationMessage[];\n  onEvent(listener: AgentEventListener): Unsubscribe;\n  stop(): Promise<void>;\n}\n```\n\n| 方法                        | created                      | running                        | stopped        |\n| --------------------------- | ---------------------------- | ------------------------------ | -------------- |\n| `start()`                   | 启动 Agent；并发调用共享结果 | 幂等                           | 拒绝           |\n| `submitText()`              | 拒绝                         | 提交文本 turn，可打断当前 turn | 拒绝           |\n| `setAudioInputEnabled()`    | 设置初始麦克风状态           | 开启或关闭后续音频输入         | 拒绝           |\n| `setCameraCaptureEnabled()` | 设置初始摄像头状态，默认关闭 | 开启或关闭持续 camera session  | 拒绝           |\n| `setTtsEnabled()`           | 设置初始 TTS 状态            | 控制后续合成与播放             | 拒绝           |\n| `getMessages()`             | 返回空快照                   | 返回当前最终消息快照           | 仍可读取       |\n| `onEvent()`                 | 可订阅                       | 可订阅                         | 同步拒绝新订阅 |\n| `stop()`                    | 进入终态                     | 完成收尾后进入终态             | 幂等           |\n\nAgent 一旦开始停止，就不再接受新的 turn 或事件订阅。需要新会话时，请创建新的 Agent。\n\n## 配置\n\nREADME 只介绍顶层配置及其用途。字段级的必填性、默认值、范围、单位、调节方向、代价和校验规则，\n请查看对应 TypeScript declaration 的双语 JSDoc（IDE hover 或随包 `.d.ts`）。\n\n| 顶层配置 / 入口                                                               | 控制什么                                                                   |\n| ----------------------------------------------------------------------------- | -------------------------------------------------------------------------- |\n| `createEvaVoiceDialogueAgent(config)`                                         | 创建一个 Agent；`config` 在 provider 工作前完成校验和快照。                |\n| `EvaVoiceDialogueAgentConfig.apiKey`                                          | 控制 Agent 以哪个 Gateway 凭证访问 ASR、LLM 和 TTS。                       |\n| `EvaVoiceDialogueAgentConfig.asr`                                             | 控制语音转写使用的 model 和目标 PCM 采样率。                               |\n| `EvaVoiceDialogueAgentConfig.llm`                                             | 控制回复生成使用的 model 及其生成参数。                                    |\n| `EvaVoiceDialogueAgentConfig.tts`                                             | 控制语音合成使用的 model、音色及合成参数。                                 |\n| `EvaVoiceDialogueAgentConfig.vad`                                             | 控制本地语音起止检测。                                                     |\n| `EvaVoiceDialogueAgentConfig.systemPrompt`                                    | 控制每次 LLM 请求使用的 system instruction。                               |\n| `EvaVoiceDialogueAgentConfig.greeting`                                        | 控制 Agent 启动时是否问候，以及问候如何生成。                              |\n| `EvaVoiceDialogueAgentConfig.history`                                         | 控制后续 LLM 请求是否携带历史问答，以及最多携带多少轮。                    |\n| `EvaVoiceDialogueAgentConfig.camera`                                          | 控制单次图片采集的等待时限；不会自动启用摄像头。                           |\n| `EvaVoiceDialogueAgentConfig.emotion`                                         | 控制是否为用户输入执行情绪识别，以及分类目录和输入上限。                   |\n| `EvaVoiceDialogueAgentConfig.bargeIn`                                         | 控制播放期间何时允许新语音进入打断判定。                                   |\n| `EvaVoiceDialogueAgentConfig.commands`                                        | 控制 Agent 可调用的 command 及每个 turn 的调用预算。                       |\n| `EvaVoiceDialogueAgentConfig.metadata`                                        | 控制附加到 Agent 事件和消息的稳定业务 metadata。                           |\n| `EvaVoiceDialogueAgentConfig.transports`                                      | 控制 Agent 使用哪些 audio、AEC 和 camera media roles；省略时为 text-only。 |\n| `SubmitTextOptions`                                                           | 控制一次手动文本 turn 的 identity 和 metadata。                            |\n| `MediaTransportsConfig`                                                       | 定义注入 Agent 的完整 media role 集合。                                    |\n| `AecProcessorConfiguration`                                                   | 保留 AEC processor 的配置入口；当前版本没有可设置字段。                    |\n| `BrowserAudioInputOptions` / `createBrowserAudioInputSource(options)`         | 控制默认浏览器麦克风 source 的采集约束和缓冲。                             |\n| `BrowserCameraSnapshotOptions` / `createBrowserCameraSnapshotSource(options)` | 控制默认浏览器 camera source 的设备约束和图片编码。                        |\n\n`llm.extraParameters` 用于 SDK 尚未预定义的模型参数。例如（复用上例的凭证、媒体装配与 VAD）：\n\n```ts\nconst agent = createEvaVoiceDialogueAgent({\n  apiKey: applicationManagedApiKey,\n  transports,\n  vad: {},\n  asr: { model: \"ark-asr-plus\", sampleRate: 16_000 },\n  llm: {\n    model: \"volcengine-doubao-seed-2.0-lite\",\n    extraParameters: {\n      thinking: {\n        type: \"disabled\",\n      },\n    },\n  },\n  tts: {\n    model: \"ark-tts-flash\",\n    voice: \"zh_en_female_sophie\",\n    sampleRate: 44100,\n  },\n});\n```\n\n`extraParameters` 中的字段会直接添加到 LLM request body 顶层，且不能覆盖 SDK 管理的请求字段；\n具体 model 参数见下方外部配置参考。\n\n## 外部配置参考 / External configuration references\n\n- 用户可在 [控制台](https://eva.autoarkai.com/console/api-keys) 创建并获取 API Key，格式如\n  `ak-xxxxxxxx...`；也可使用 [EVA Skill](https://eva.autoarkai.com/api-docs/guide/eva-skill)，\n  或参考 [EVA CLI 文档](https://eva.autoarkai.com/api-docs/guide/eva-cli)获取 API Key。\n\nASR、LLM、TTS model、TTS voice，以及采样率和模型参数的支持范围、准确值与默认值见\n[EVA Models](https://eva.autoarkai.com/api-docs/guide/gateway-model-list.md)。选择 model 时，相关采样率、voice、生成参数与\nmodel-specific 参数必须配套使用。修改模型、音色、采样率、语言、输出格式或任一依赖参数后，重新核对该模型的整组兼容关系；不能沿用其他模型的音色或参数。`temperature`、token 上限等可选调音参数可以省略，由 Gateway\n或 model 使用默认行为；带 SDK 默认值的字段仍以对应 JSDoc 为准。SDK 只校验字段形状和基础\n数值，不维护动态 model 兼容矩阵。\n\n当前 SDK 使用 Chat Completions（`/llm/v1/chat/completions`）。查看 EVA Models 的 LLM 参数时，\n请使用 **Chat Completions** 部分。\n\n当前 SDK 的托管 ASR 和 TTS 链路只支持 PCM（`pcm_s16le`）：ASR model 必须支持 PCM 输入，\nTTS model 必须支持 PCM 输出。不支持 PCM 的 model 无法用于当前 SDK。这里的 `pcm_s16le` 是 SDK 音频格式，官方模型表中的线协议格式写作 `pcm`，不是可随意切换的输出格式配置项。\n\n以上示例于 2026-09-18 核对官方模型表：ASR 使用 `ark-asr-plus` 的 16000 Hz PCM；LLM 使用 Chat Completions 下的 `volcengine-doubao-seed-2.0-lite`（支持 `thinking.type: disabled`）；TTS 使用 `ark-tts-flash`、44100 Hz PCM，不传该模型不支持的语速或音高。中英文示例选用 `zh_en_female_sophie`，它是显式选择的示例音色，不是模型默认值；音色的当前支持范围以[官方音色目录](https://eva.autoarkai.com/models/voices)为准。模型表核对覆盖模型和采样率等参数，不代替具体音色的语言支持核对或中英文实际试听，也不保证账号权限、服务可用性或目标设备音质。\n\n## Emotion\n\n通过 `emotion.enabled` 开启情绪识别后，SDK 会同时处理麦克风转写和 `submitText()` 提交的用户文本，\n并通过 `emotion.detected` 事件返回分类结果。例如：\n\n```ts\nconst emotion: EmotionConfig = {\n  enabled: true,\n  labels: [\"happy\", \"sad\"],\n  instructions: \"这是儿童陪伴场景，重点区分害怕、难过和开心。\",\n};\n```\n\n`emotionCode` 默认来自 `DEFAULT_EMOTION_CODES`；custom `labels` 会完整替换默认业务标签，SDK\n仍会保留 `unknown`。`confidence` 是模型自报的可选信心度，不是经过统计校准的概率；\n`source`、`textPreview` 和 `latencyMs` 分别表示输入来源、用户内容预览和分类耗时，记录事件时应按\n应用的隐私规则处理 `textPreview`。\n\n情绪识别与正常回复并发，不改写 reply、history、messages 或 TTS，也不保证相对\n`reply.final` 的到达顺序。分类请求失败会发出非致命 `error`，但不会中断正常回复；\n`instructions` 只补充业务语境，不需要自定义分类时可以省略。字段默认值和校验规则见\n`EmotionConfig` JSDoc。\n\n## Command\n\nCommand 通过 `commands.registrations` 在 Agent 构造时注册。每项同时包含提供给模型的\n`definition` 和执行具体业务的 `handler`：\n\n```ts\nimport type { CommandsConfig } from \"@autoark-ai/eva-client-sdk-ts\";\n\nconst commandConfig: CommandsConfig = {\n  registrations: [\n    {\n      definition: {\n        name: \"get_current_time\",\n        description: \"获取当前时间。\",\n      },\n      handler(_call, context) {\n        if (context.signal.aborted) {\n          return { ok: false, message: \"Command cancelled\" };\n        }\n        return { ok: true, data: { isoTime: new Date().toISOString() } };\n      },\n    },\n  ],\n};\n```\n\n将 `commandConfig` 传给 Agent config 的 `commands` 字段。完整字段和行为说明请查看对应 JSDoc。\n\n## 消息\n\n`getMessages()` 同步返回按提交顺序排列的只读快照。每条 `ConversationMessage` 包含：\n\n```ts\ninterface ConversationMessage {\n  readonly id: string;\n  readonly turnId: string;\n  readonly role: \"user\" | \"assistant\";\n  readonly content: string;\n  readonly createdAt: number;\n  readonly metadata: JsonObject;\n}\n```\n\nuser 与 assistant 的最终文本才会进入消息列表。同一轮的两条消息共享 `turnId`。`history.maxTurns` 只控制送给 LLM 的上下文，不会裁剪 `getMessages()` 的会话记录。\n\n## 事件\n\n`onEvent()` 接收 `AgentEvent` discriminated union。`AgentEventType` 是 type-only 字符串联合。\n\n所有 public listener 都只是同步观察者。SDK 会逐个隔离 listener 抛出的异常，继续通知其他 listener，并继续正常的 Agent/handler 流程；listener 异常不会变成 LLM/Gateway error。接入方负责在自己的 listener 内处理和上报异常。\n\n隔离并不意味着静默吞：如果你的某个 listener 自身抛错，SDK 除了隔离它之外，还会把该异常连同触发事件的 `type` 与安全 id（`streamId` / `turnId`）经 `console.error` 记录一次。这是一条**独立于事件订阅**的带外通道——即便你唯一的 listener 崩了、再也无法从 `error` 事件察觉，也能在控制台看到它崩了。同样地，每个浮现的 `error` 事件也会把其脱敏公共视图经 `console.error` tee 一份，作为事件流之外的冗余安全网（即使当前没有任何 listener 也会记录）。该带外通道只记 error 级，不含事件 payload、转写/回复文本、凭证或原始异常类，也不承载对话进展；SDK 不提供可注入的 logger，输出目的地就是宿主 `console`。\n\n| `type`               | 主要字段                                                           | 含义                                                 |\n| -------------------- | ------------------------------------------------------------------ | ---------------------------------------------------- |\n| `speech.started`     | —                                                                  | 检测到开始说话                                       |\n| `image.captured`     | `image`                                                            | 当前语音 turn 已在本地成功采图；不表示模型已接受图片 |\n| `speech.stopped`     | —                                                                  | 检测到停止说话                                       |\n| `transcript.partial` | `text`, `source: \"speech\"`                                         | 增量转写                                             |\n| `transcript.final`   | `text`, `source`                                                   | 最终用户文本                                         |\n| `interruption`       | `reason`                                                           | 用户语音或手动文本打断当前 turn                      |\n| `reply.started`      | —                                                                  | assistant 开始回复                                   |\n| `reply.partial`      | `text`                                                             | 新增回复片段                                         |\n| `reply.final`        | `text`                                                             | 完整最终回复                                         |\n| `playback.started`   | —                                                                  | TTS 开始播放                                         |\n| `playback.stopped`   | —                                                                  | TTS 停止播放                                         |\n| `turn.latency`       | `latency`                                                          | turn 总耗时与可用的阶段耗时                          |\n| `emotion.detected`   | `source`, `textPreview`, `emotionCode`, `confidence?`, `latencyMs` | 当前最终用户 utterance 的旁路 emotion 分类           |\n| `command.called`     | `call`                                                             | handler 入场承诺点；call含解析后的参数与不透明id     |\n| `command.completed`  | `call`, `result`                                                   | handler返回合法成功result                            |\n| `command.failed`     | `call`, `result`                                                   | 已入场handler业务失败、抛错或返回无效值              |\n| `error`              | `error`                                                            | 可交给应用处理的结构化错误                           |\n\n所有事件都有 `streamId`、`partial`、`final` 和只读 `metadata`；除无法定位 turn 的错误外都有 `turnId`。还可能包含 `sequence`、`timestamp` 和 `frameId`。\n\n建议用穷尽 switch 消费事件：\n\n```ts\nfunction consume(event: AgentEvent): void {\n  switch (event.type) {\n    case \"speech.started\":\n    case \"image.captured\":\n    case \"speech.stopped\":\n    case \"reply.started\":\n    case \"playback.started\":\n    case \"playback.stopped\":\n      return;\n    case \"transcript.partial\":\n    case \"transcript.final\":\n    case \"reply.partial\":\n    case \"reply.final\":\n      console.log(event.text);\n      return;\n    case \"interruption\":\n      console.log(event.reason);\n      return;\n    case \"turn.latency\":\n      console.log(event.latency);\n      return;\n    case \"emotion.detected\":\n      console.log(event.emotionCode, event.confidence, event.textPreview);\n      return;\n    case \"command.called\":\n      console.log(event.call.name, event.call.arguments);\n      return;\n    case \"command.completed\":\n    case \"command.failed\":\n      console.log(event.call.id, event.result);\n      return;\n    case \"error\":\n      console.error(event.error);\n      return;\n    default:\n      event satisfies never;\n  }\n}\n```\n\n## 错误\n\n启动或控制方法的 Promise 拒绝需要单独 `catch`；运行期间的异步失败通过 `error` 事件处理。\n不能只订阅事件来判断启动是否成功，也不要假定同一次方法失败还会再发一个事件：\n\n```ts\nimport { EvaSdkError } from \"@autoark-ai/eva-client-sdk-ts\";\n\nagent.onEvent((event) => {\n  if (event.type === \"error\") console.error(event.error); // 已脱敏公共视图\n});\ntry {\n  await agent.start();\n} catch (error) {\n  if (error instanceof EvaSdkError) {\n    console.error({ message: error.message, source: error.source, fatal: error.fatal });\n  } else {\n    console.error(\"Agent start failed\");\n  }\n}\n```\n\n内置 VAD 的安全 `message` 会说明已识别的模型资源、会话初始化、音频转换、推理或释放失败环节。\n它供人排查，不是稳定错误码，不应通过匹配文案做业务分支。不要把完整异常、`cause` 或堆栈写入应用日志。\n\n遇到启动或 VAD 错误？查看[常见报错与处理](guides/integration-and-troubleshooting.md#errors)。\n\n同步输入校验和 lifecycle 错误会抛出 `EvaSdkError`。事件中的 `StructuredError` 提供：\n\n```ts\ninterface StructuredError {\n  message: string;\n  fatal: boolean;\n  source: \"sdk\" | \"provider\" | \"gateway\" | \"media\";\n  provider?: string;\n  statusCode?: number;\n  traceId?: string;\n  role?: \"audio-input\" | \"audio-output\" | \"aec\" | \"camera\";\n  operation?: \"start\" | \"capture\" | \"stop\";\n  reason?:\n    | \"not_configured\"\n    | \"permission_denied\"\n    | \"device_unavailable\"\n    | \"unsupported\"\n    | \"timeout\"\n    | \"invalid_data\"\n    | \"operation_failed\";\n}\n```\n\nGateway 错误的 `traceId` 只在响应头提供合法 `autoark-trace-id` 时出现，用于把客户端错误与 Gateway 日志关联；错误分类仍使用 `source`、`provider` 与 `statusCode`。SDK 不从响应 body、`request_id` 或 `x-request-id` 回退生成该字段。\n\n事件和错误不会额外回显 AK、Authorization header 或原始 provider 响应。\n\n## 可扩展 Media SPI\n\n音频输入、音频输出、AEC 和摄像头都是可替换的公共扩展点。应用可以直接使用 SDK 提供的浏览器默认实现，也可以按角色接入自己的实现。\n\n扩展契约从 `@autoark-ai/eva-client-sdk-ts/spi` 导入：\n\n- **输入 `AudioInputSource`**：负责采集音频，通过 `frames()` 以 `AsyncIterable<AudioChunk>` 持续产出数据；适合接入浏览器麦克风、原生采集桥、文件或其它实时音频源。\n- **输出 `AudioOutputSink`**：负责接收并播放音频，通过 `enqueue()`、`flush()`、`drain()` 和 `stop()` 管理队列与播放生命周期；可以替换为自定义播放器或原生音频输出。\n- **AEC `AecProcessor`**：接收 SDK 路由的 far-end TTS reference，并在 near-end 输入进入对话链路前返回处理后的音频。它是数据链路中的必填角色，但不表示回声消除一定发生在该对象内：采集端已经通过平台 AEC 得到干净音频时应装配 passthrough；显式 software/native AEC 则在该角色中处理 near-end。\n- **摄像头 `CameraSnapshotSource`**：以必需 `AbortSignal` 管理 `start()` / `capture()`，并通过幂等 `stop()` 释放 session；snapshot 只含图片 bytes、MIME 和实际尺寸。\n\n四个角色可以分别替换；其中 `input`、`output` 与 `aec` 是 `MediaTransportsConfig` 必填项，`camera` 可选。构造 Agent 后，已装配对象的 lifecycle 由 Agent 独占驱动，应用不应再并发调用这些对象。\n\nAEC 有两种不同的装配方式：\n\n| 模式                     | 回声消除发生位置               | `AecProcessor` 的作用                        |\n| ------------------------ | ------------------------------ | -------------------------------------------- |\n| 平台 AEC                 | 浏览器或操作系统管理的采集链路 | 装配 passthrough，保持 SDK 媒体管路完整      |\n| 显式 software/native AEC | 应用提供的 AEC 实现            | 消费 far-end reference，并处理 near-end 音频 |\n\nSDK 核提供给 `AecProcessor.pushFarEnd()` 的是逻辑 TTS reference；`AudioOutputSink.enqueue()` 接收该音频不代表设备已经实际播放。三个音频 SPI 独立替换不自动保证设备播放时钟级对齐（playback-clock alignment）。\n\n当前 TypeScript 包只提供平台 AEC + passthrough 的默认组合，不提供内置 software/native AEC 或 output-clocked coordination helper。接入显式 software/native AEC 且需要增强消回声效果时，应由应用联合构造 output/AEC 两个角色，让它们在内部共享实际播放进度，并由 output/AEC integration 在实际播放边界（output playback boundary）协调播放 reference；实现应避免把 SDK 核提供的逻辑 reference 与 output 提供的实际播放 reference 重复送入同一算法路径。最终效果仍须在目标设备验证，接口可装配本身不是 AEC 质量承诺。\n\n```ts\nimport type {\n  AecProcessor,\n  AudioInputSource,\n  AudioOutputSink,\n  CameraSnapshotSource,\n  MediaTransportsConfig,\n} from \"@autoark-ai/eva-client-sdk-ts/spi\";\n\ndeclare const customInput: AudioInputSource;\ndeclare const customOutput: AudioOutputSink;\ndeclare const customAec: AecProcessor;\ndeclare const customCamera: CameraSnapshotSource;\n\nconst customTransports: MediaTransportsConfig = {\n  input: customInput,\n  output: customOutput,\n  aec: customAec,\n  camera: customCamera,\n};\n```\n\n上面的写法只表示三个 SPI 可以独立装配。需要实际播放时钟 reference 的 software/native AEC，可以由应用通过一个共同的 factory 创建相互协作、但仍分别满足公共 SPI 的 output/AEC 实例：\n\n```ts\ntype OutputAecPair = Pick<MediaTransportsConfig, \"output\" | \"aec\">;\n\n// 应用自有实现，不是 SDK 导出的 factory。\ndeclare function createAppOutputAecPair(): OutputAecPair;\n\nconst outputAec = createAppOutputAecPair();\nconst softwareAecTransports: MediaTransportsConfig = {\n  input: customInput,\n  ...outputAec,\n};\n```\n\n## SDK 提供的浏览器默认实现\n\n如果不需要自定义媒体链路，可以从 `@autoark-ai/eva-client-sdk-ts/browser` 直接使用 SDK 提供的四个默认 factory：\n\n| 角色   | 默认 factory                          | 行为                                         |\n| ------ | ------------------------------------- | -------------------------------------------- |\n| 输入   | `createBrowserAudioInputSource()`     | 使用浏览器麦克风采集音频                     |\n| 输出   | `createBrowserAudioOutputSink()`      | 使用 Web Audio 播放 TTS 音频                 |\n| AEC    | `createPassthroughAecProcessor()`     | 透传音频；平台 AEC 由采集端另行请求 |\n| 摄像头 | `createBrowserCameraSnapshotSource()` | 提供可选的浏览器静态图片采集                 |\n\n```ts\nconst defaultTransports: MediaTransportsConfig = {\n  input: createBrowserAudioInputSource({ echoCancellation: true }),\n  output: createBrowserAudioOutputSink(),\n  aec: createPassthroughAecProcessor(),\n};\n```\n\n摄像头按前文的可选小节加入，不会由 agent factory 自动补齐。\n\n默认组合向浏览器 input 请求 `echoCancellation: true`，同时使用 passthrough AEC。请求约束不等于平台一定支持、实际启用或达到某种消回声效果；这些取决于浏览器、操作系统、设备和音频路由，须在目标环境验证。passthrough 本身不做主动消回声，不代表整个采集链路没有回声消除能力。如果接入自己的软件 AEC，应将 `echoCancellation` 设为 `false`，避免平台 AEC 与软件 AEC 重复处理。\n\n默认浏览器平台 AEC 不需要复制上述显式 software/native AEC 的 render-reference 机制；其采集、播放和回声处理时序由浏览器与操作系统管理。\n\n## AK 责任边界\n\n`apiKey` 由应用提供和管理。只要 AK 进入浏览器应用，最终用户就可能通过开发者工具观察到它；SDK 不提供浏览器端秘密存储。构建期环境变量写入前端 bundle 也不能隐藏凭证。生产环境的凭证发放、授权、有效期和滥用防护由消费方架构负责，SDK 不提供代理服务或短期令牌系统。SDK 的边界是不会通过公共事件、错误、metadata 或配置读取接口再次暴露 AK。\n\n凭证应在运行时取得后再创建 Agent；暂缺凭证时提示用户补充，不要因此从构建结果移除 SDK、媒体功能或模型/WASM。具体见[构建期与运行时配置](guides/integration-and-troubleshooting.md#configuration)。\n\n## 许可与 Gateway 服务\n\n本 SDK 是公开下载的专有软件，并非开源软件。安装或使用 SDK 即表示接受 [Proprietary SDK License Agreement](LICENSE)：其中允许在应用中集成 SDK、执行正常的打包/压缩/Tree Shaking 等构建操作，并在应用内分发编译产物；禁止修改、逆向工程、制作衍生 SDK、单独再分发或绕过/替换/模拟官方 Gateway。\n\nSDK 许可不包含 Gateway 使用权，也不承诺 Gateway 免费或无限使用；Gateway 适用规则见独立的 [Gateway Service Notice](GATEWAY_TERMS.md)。第三方软件与模型资产适用 [Third-Party Notices](THIRD_PARTY_NOTICES.md) 中列明的各自许可。\n","readmeFilename":"README.md"}