{"_id":"@eazo/eak","_rev":"15-d89b0aae734aeeb444a0546ad0eca1ff","name":"@eazo/eak","dist-tags":{"latest":"0.3.4"},"versions":{"0.1.0":{"name":"@eazo/eak","version":"0.1.0","keywords":["eak","eazo","agent","sdk","delegation","gumem","webagent"],"license":"MIT","_id":"@eazo/eak@0.1.0","maintainers":[{"name":"luozhuowei","email":"zhuowei@fellou.ai"},{"name":"liaochangjiang_fellou","email":"liaochangjiang@fellou.ai"},{"name":"lucsun-fellou","email":"suntianxiang@fellou.ai"}],"homepage":"https://github.com/EazoAI/eak-sdk-node#readme","bugs":{"url":"https://github.com/EazoAI/eak-sdk-node/issues"},"dist":{"shasum":"2301e43f7a232408dcc24e10f40a87a9cf51ff42","tarball":"https://registry.npmjs.org/@eazo/eak/-/eak-0.1.0.tgz","fileCount":13,"integrity":"sha512-YYLsAWm67+34hyQMOJjtU/RYQ+FIaqyRO2FW3Qorqf62JJe16TaqC39Lys6coBw2Elo/Bf1s9tobLpGDxxl5Mg==","signatures":[{"sig":"MEYCIQCw2MkNrqT0o/IeZ3jTG5Q8fN9A+0nx/8PnNQGoTncyFgIhAMYKWIz3cIZeKd86U3h6VK+P5ruk97X22RTyLyJmfY7+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":360614},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"fe71f541be9a3efbaf508091fa5dd201dade8797","scripts":{"test":"vitest run","build":"tsup","prepack":"pnpm build","test:ci":"vitest run --coverage=false","typecheck":"tsc --noEmit","pack:dry-run":"pnpm build && pnpm pack --dry-run","typecheck:examples":"pnpm build && tsc --noEmit -p tsconfig.examples.json"},"_npmUser":{"name":"lucsun-fellou","email":"suntianxiang@fellou.ai"},"repository":{"url":"git+https://github.com/EazoAI/eak-sdk-node.git","type":"git"},"_npmVersion":"10.8.2","description":"Unified Node.js SDK for EAK Agent delegation, GUMem memory, and WebAgent automation.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.33.2","devDependencies":{"tsup":"^8.3.5","vitest":"^2.1.8","typescript":"^5.7.2","@types/node":"^20.17.10"},"_npmOperationalInternal":{"tmp":"tmp/eak_0.1.0_1780408144143_0.9642590873899295","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@eazo/eak","version":"0.1.1","keywords":["eak","eazo","agent","sdk","delegation","gumem","webagent"],"author":"","license":"MIT","_id":"@eazo/eak@0.1.1","maintainers":[{"name":"luozhuowei","email":"zhuowei@fellou.ai"},{"name":"liaochangjiang_fellou","email":"liaochangjiang@fellou.ai"},{"name":"lucsun-fellou","email":"suntianxiang@fellou.ai"}],"homepage":"https://github.com/EazoAI/eak-sdk-node#readme","bugs":{"url":"https://github.com/EazoAI/eak-sdk-node/issues"},"dist":{"shasum":"fc9ccd692e0517c8dc4c5acbf78ba8d82febe7f6","tarball":"https://registry.npmjs.org/@eazo/eak/-/eak-0.1.1.tgz","fileCount":22,"integrity":"sha512-Tw7+UBU2UHzkwG8CPP5ZX9BHQ4Fg/o+lQqaDmEVDcgQAERrwywYx4ED3sguAS8t/EeegJKD66DCNRo53xLLQlg==","signatures":[{"sig":"MEQCIAE9w0Oixmk2Elbc0vNYTyoxkJ4PHbBZcwpLGpEh+q+OAiA8cukD0Kmo96Vjd0ZUky+tZTJoTgI3GglHblZASKie4Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":453350},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"b7e034e2b966023d0119001b1db70b74e663bce3","scripts":{"test":"vitest run","build":"tsup","prepack":"pnpm build","test:ci":"vitest run --coverage=false","typecheck":"tsc --noEmit","pack:dry-run":"pnpm build && pnpm pack --dry-run","typecheck:examples":"pnpm build && tsc --noEmit -p tsconfig.examples.json"},"_npmUser":{"name":"lucsun-fellou","email":"suntianxiang@fellou.ai"},"repository":{"url":"git+https://github.com/EazoAI/eak-sdk-node.git","type":"git"},"_npmVersion":"10.8.2","description":"Unified Node.js SDK for EAK Agent delegation, GUMem memory, and WebAgent automation.","directories":{"doc":"docs","test":"tests","example":"examples"},"sideEffects":false,"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.33.2","devDependencies":{"tsup":"^8.3.5","vitest":"^2.1.8","typescript":"^5.7.2","@types/node":"^20.17.10"},"_npmOperationalInternal":{"tmp":"tmp/eak_0.1.1_1780480988363_0.24775311530217592","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@eazo/eak","version":"0.1.2","keywords":["eak","eazo","agent","sdk","delegation","gumem","webagent"],"author":"","license":"MIT","_id":"@eazo/eak@0.1.2","maintainers":[{"name":"luozhuowei","email":"zhuowei@fellou.ai"},{"name":"liaochangjiang_fellou","email":"liaochangjiang@fellou.ai"},{"name":"lucsun-fellou","email":"suntianxiang@fellou.ai"}],"homepage":"https://github.com/EazoAI/eak-sdk-node#readme","bugs":{"url":"https://github.com/EazoAI/eak-sdk-node/issues"},"dist":{"shasum":"4c82160cc4dbea1b2ec081e144bba2e526ee29fb","tarball":"https://registry.npmjs.org/@eazo/eak/-/eak-0.1.2.tgz","fileCount":22,"integrity":"sha512-e8cL+i3LSlqxF3vwAJit4gzZcwDrQkXEocgffOKLd1FGlYUmoQpCM7Ehh4jCgcB+ofWE4Ty6aDAzQ7OBlydxTg==","signatures":[{"sig":"MEYCIQDmSF9v2h9VkJ5K4sEc6jx9lQHuSXKvE4oYhAKZh5VD4AIhANml2i0PcyLRNC64OFXLksOhA8/V6uWa7acqJJyRbRPb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":457325},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"40814cd2c16e0b30855909dc455e213f3a9c1775","scripts":{"test":"vitest run","build":"tsup","prepack":"pnpm build","test:ci":"vitest run --coverage=false","typecheck":"tsc --noEmit","pack:dry-run":"pnpm build && pnpm pack --dry-run","typecheck:examples":"pnpm build && tsc --noEmit -p tsconfig.examples.json"},"_npmUser":{"name":"lucsun-fellou","email":"suntianxiang@fellou.ai"},"repository":{"url":"git+https://github.com/EazoAI/eak-sdk-node.git","type":"git"},"_npmVersion":"10.8.2","description":"Unified Node.js SDK for EAK Agent delegation, GUMem memory, and WebAgent automation.","directories":{"doc":"docs","test":"tests","example":"examples"},"sideEffects":false,"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.33.2","devDependencies":{"tsup":"^8.3.5","vitest":"^2.1.8","typescript":"^5.7.2","@types/node":"^20.17.10"},"_npmOperationalInternal":{"tmp":"tmp/eak_0.1.2_1780491064077_0.622221720168364","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@eazo/eak","version":"0.1.4","keywords":["eak","eazo","agent","sdk","delegation","gumem","webagent"],"author":"","license":"MIT","_id":"@eazo/eak@0.1.4","maintainers":[{"name":"luozhuowei","email":"zhuowei@fellou.ai"},{"name":"liaochangjiang_fellou","email":"liaochangjiang@fellou.ai"},{"name":"lucsun-fellou","email":"suntianxiang@fellou.ai"}],"homepage":"https://github.com/EazoAI/eak-sdk-node#readme","bugs":{"url":"https://github.com/EazoAI/eak-sdk-node/issues"},"dist":{"shasum":"173f0e291135157d158085705f19148cfbc09bad","tarball":"https://registry.npmjs.org/@eazo/eak/-/eak-0.1.4.tgz","fileCount":14,"integrity":"sha512-w5Ou8dV1wDJm/xro8ECR0qrIOw5IIVG5szaLx/CCEZVgwRxwgrzq+BhpS5CYv8G43pk1oqdE/wAecQ8hb1L48A==","signatures":[{"sig":"MEUCIFdM9N7P0flaN64oOO92cfiTAQFWqHRQSrDDQpIwBEh+AiEA5r0DxWy/UtCcz/82f0nmfsc5eqtZVyYoOTen1rhyf9M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":431114},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"9782f43516ac42146f7be534869887e5afecde6d","scripts":{"test":"vitest run","build":"tsup","prepack":"pnpm build","test:ci":"vitest run --coverage=false","typecheck":"tsc --noEmit","pack:dry-run":"pnpm build && pnpm pack --dry-run"},"_npmUser":{"name":"lucsun-fellou","email":"suntianxiang@fellou.ai"},"repository":{"url":"git+https://github.com/EazoAI/eak-sdk-node.git","type":"git"},"_npmVersion":"10.8.2","description":"Unified Node.js SDK for EAK Agent delegation, GUMem memory, and WebAgent automation.","directories":{"doc":"docs","test":"tests"},"sideEffects":false,"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.33.2","devDependencies":{"tsup":"^8.3.5","vitest":"^2.1.8","typescript":"^5.7.2","@types/node":"^20.17.10"},"_npmOperationalInternal":{"tmp":"tmp/eak_0.1.4_1780556388690_0.7206519867902099","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@eazo/eak","version":"0.1.5","keywords":["eak","eazo","agent","sdk","delegation","gumem","webagent"],"author":"","license":"MIT","_id":"@eazo/eak@0.1.5","maintainers":[{"name":"luozhuowei","email":"zhuowei@fellou.ai"},{"name":"liaochangjiang_fellou","email":"liaochangjiang@fellou.ai"},{"name":"lucsun-fellou","email":"suntianxiang@fellou.ai"}],"homepage":"https://github.com/EazoAI/eak-sdk-node#readme","bugs":{"url":"https://github.com/EazoAI/eak-sdk-node/issues"},"dist":{"shasum":"08bb5b569f702482df5604c35081c88d018c9072","tarball":"https://registry.npmjs.org/@eazo/eak/-/eak-0.1.5.tgz","fileCount":14,"integrity":"sha512-gIksp2cYDYhArSB8qmkl5AVHFoeaDcPY6pqDbOkhoR6YZru1/zwLiFTRPCFlHhYlBGuItH1Q5MTPJyFe0mSwXw==","signatures":[{"sig":"MEUCIQDGJIOFXLLJ0k6ISN1v2caovAU9dfotYp5WROnhkV2r8QIgMHMLYoGhUWhsb5Ol/xpSZ40ot2sWuRYldeubTMVMINs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":432518},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"7c54213e084ca1d69c0ba0dfd1fe47963ac32211","scripts":{"test":"vitest run","build":"tsup","prepack":"pnpm build","test:ci":"vitest run --coverage=false","typecheck":"tsc --noEmit","pack:dry-run":"pnpm build && pnpm pack --dry-run"},"_npmUser":{"name":"lucsun-fellou","email":"suntianxiang@fellou.ai"},"repository":{"url":"git+https://github.com/EazoAI/eak-sdk-node.git","type":"git"},"_npmVersion":"10.8.2","description":"Unified Node.js SDK for EAK Agent delegation, GUMem memory, and WebAgent automation.","directories":{"doc":"docs","test":"tests"},"sideEffects":false,"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.33.2","devDependencies":{"tsup":"^8.3.5","vitest":"^2.1.8","typescript":"^5.7.2","@types/node":"^20.17.10"},"_npmOperationalInternal":{"tmp":"tmp/eak_0.1.5_1780560268539_0.11323798364952697","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@eazo/eak","version":"0.1.6","keywords":["eak","eazo","agent","sdk","delegation","gumem","webagent"],"author":"","license":"MIT","_id":"@eazo/eak@0.1.6","maintainers":[{"name":"luozhuowei","email":"zhuowei@fellou.ai"},{"name":"liaochangjiang_fellou","email":"liaochangjiang@fellou.ai"},{"name":"lucsun-fellou","email":"suntianxiang@fellou.ai"}],"homepage":"https://github.com/EazoAI/eak-sdk-node#readme","bugs":{"url":"https://github.com/EazoAI/eak-sdk-node/issues"},"dist":{"shasum":"ed3e59f340cc47101d60550d84ab9e1393f3e5f7","tarball":"https://registry.npmjs.org/@eazo/eak/-/eak-0.1.6.tgz","fileCount":14,"integrity":"sha512-1rv5TAXKZWJiinxYZzvKNySsOclvoxlG+NyeCEkUyceCEO/ZKvu8UsUySKsAYXr5iHq+IJ+7sxJYQmGwx+K8SQ==","signatures":[{"sig":"MEYCIQCS6oTn80TrKvN1dpvIf8LpxYZsB13VxhdjFEMjFY0H/AIhAPsvuKXtn9BQe04QtQn6aDHOOjUYFAzDGAc5OO9DVHru","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":437864},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"3499ce11645cbe654a8a5c8d20935f267959535c","scripts":{"test":"vitest run","build":"tsup","prepack":"pnpm build","test:ci":"vitest run --coverage=false","typecheck":"tsc --noEmit","pack:dry-run":"pnpm build && pnpm pack --dry-run"},"_npmUser":{"name":"lucsun-fellou","email":"suntianxiang@fellou.ai"},"repository":{"url":"git+https://github.com/EazoAI/eak-sdk-node.git","type":"git"},"_npmVersion":"10.8.2","description":"Unified Node.js SDK for EAK Agent delegation, GUMem memory, and WebAgent automation.","directories":{"doc":"docs","test":"tests"},"sideEffects":false,"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.33.2","devDependencies":{"tsup":"^8.3.5","vitest":"^2.1.8","typescript":"^5.7.2","@types/node":"^20.17.10"},"_npmOperationalInternal":{"tmp":"tmp/eak_0.1.6_1780658659336_0.2163094971293904","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@eazo/eak","version":"0.1.7","keywords":["eak","eazo","agent","sdk","delegation","gumem","webagent"],"author":"","license":"MIT","_id":"@eazo/eak@0.1.7","maintainers":[{"name":"luozhuowei","email":"zhuowei@fellou.ai"},{"name":"liaochangjiang_fellou","email":"liaochangjiang@fellou.ai"},{"name":"lucsun-fellou","email":"suntianxiang@fellou.ai"}],"homepage":"https://github.com/EazoAI/eak-sdk-node#readme","bugs":{"url":"https://github.com/EazoAI/eak-sdk-node/issues"},"dist":{"shasum":"163ed280bb5baf70405fb9d71889fd092c9a39b3","tarball":"https://registry.npmjs.org/@eazo/eak/-/eak-0.1.7.tgz","fileCount":14,"integrity":"sha512-AmpNgAO3kdSeW6eMw0Kst7Y0ArPmkjTbSTWbq705Si2PioERUZaW/2DNBMK81GQLxMuMX6Cf1371enJT3+Fkbw==","signatures":[{"sig":"MEQCICGGbBHaI5tmsOlwZo62wtkPS5biTzLJzWrn+dPnHJ8nAiBZADpFBR2BEGnQqY6PMThIC2hZjgnh+T/NWW8K766ydA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":428175},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"34f6e012458bc5c20884d14a08f1d5a9ccf0de98","scripts":{"test":"vitest run","build":"tsup","prepack":"pnpm build","test:ci":"vitest run --coverage=false","typecheck":"tsc --noEmit","pack:dry-run":"pnpm build && pnpm pack --dry-run"},"_npmUser":{"name":"lucsun-fellou","email":"suntianxiang@fellou.ai"},"repository":{"url":"git+https://github.com/EazoAI/eak-sdk-node.git","type":"git"},"_npmVersion":"10.8.2","description":"Unified Node.js SDK for EAK Agent delegation, GUMem memory, and WebAgent automation.","directories":{"doc":"docs","test":"tests"},"sideEffects":false,"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.33.2","devDependencies":{"tsup":"^8.3.5","vitest":"^2.1.8","typescript":"^5.7.2","@types/node":"^20.17.10"},"_npmOperationalInternal":{"tmp":"tmp/eak_0.1.7_1780892175092_0.23549734864100746","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@eazo/eak","version":"0.2.0","keywords":["eak","eazo","agent","sdk","delegation","gumem","webagent"],"author":"","license":"MIT","_id":"@eazo/eak@0.2.0","maintainers":[{"name":"luozhuowei","email":"zhuowei@fellou.ai"},{"name":"liaochangjiang_fellou","email":"liaochangjiang@fellou.ai"},{"name":"lucsun-fellou","email":"suntianxiang@fellou.ai"}],"homepage":"https://github.com/EazoAI/eak-sdk-node#readme","bugs":{"url":"https://github.com/EazoAI/eak-sdk-node/issues"},"dist":{"shasum":"5229e05776cf4a71de9ff2f6fcdf2f4fa2472876","tarball":"https://registry.npmjs.org/@eazo/eak/-/eak-0.2.0.tgz","fileCount":14,"integrity":"sha512-z3HvV5Vf4bo76bkjRoKf+0T7zLhnWxIiboE4uYUf5LlZPnSqPn7paiT/6wVz89hA/YZUxTiFq6NobLxbTYh/9w==","signatures":[{"sig":"MEUCIQC5FY/NV/pcC0o47Nl+gaf0bdGfYvXiOtz1j/NtwifZ0QIgXkRIStxH4rheys1IjMQX+bvv8mcFbSttWVo5oSMoUVI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":562276},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"df5fc38947e32df6d68bb9e4ed90feafa7d56a5d","scripts":{"test":"vitest run","build":"tsup","prepack":"pnpm build","test:ci":"vitest run --coverage=false","typecheck":"tsc --noEmit","pack:dry-run":"pnpm build && pnpm pack --dry-run","smoke:auth-gum":"pnpm build && node scripts/sdk-auth-gum-smoke.mjs --mock","smoke:auth-gum:live":"pnpm build && EAK_SMOKE_MODE=live node scripts/sdk-auth-gum-smoke.mjs --live"},"_npmUser":{"name":"lucsun-fellou","email":"suntianxiang@fellou.ai"},"repository":{"url":"git+https://github.com/EazoAI/eak-sdk-node.git","type":"git"},"_npmVersion":"10.8.2","description":"Unified Node.js SDK for EAK Agent delegation, GUMem memory, and WebAgent automation.","directories":{"doc":"docs","test":"tests"},"sideEffects":false,"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.33.2","devDependencies":{"tsup":"^8.3.5","vitest":"^2.1.8","typescript":"^5.7.2","@types/node":"^20.17.10"},"_npmOperationalInternal":{"tmp":"tmp/eak_0.2.0_1781162372539_0.5090114447622072","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@eazo/eak","version":"0.2.1","keywords":["eak","eazo","agent","sdk","delegation","gumem","webagent"],"author":"","license":"MIT","_id":"@eazo/eak@0.2.1","maintainers":[{"name":"luozhuowei","email":"zhuowei@fellou.ai"},{"name":"liaochangjiang_fellou","email":"liaochangjiang@fellou.ai"},{"name":"lucsun-fellou","email":"suntianxiang@fellou.ai"}],"homepage":"https://github.com/EazoAI/eak-sdk-node#readme","bugs":{"url":"https://github.com/EazoAI/eak-sdk-node/issues"},"dist":{"shasum":"9019cf6ad73b43c88f0abf61956118fd596669fa","tarball":"https://registry.npmjs.org/@eazo/eak/-/eak-0.2.1.tgz","fileCount":14,"integrity":"sha512-hweQa1ijqkv4uZAHnTe4cE3dVnuW9jeded2g9tvmhZJtAJ9BovHAOFnIvNhbaPKmvaRfgkS5/42webYG3D3aLg==","signatures":[{"sig":"MEYCIQCOfJKmy5osOXs6A11w5REEJAJVkejvjio5X884PawtKgIhAKzZTParKLKfxN8YgMeitGy655haB4z32gO6a2Q+6u6R","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":562276},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"eef65534172782c501da75f579b29dbd704183d4","scripts":{"test":"vitest run","build":"tsup","prepack":"pnpm build","test:ci":"vitest run --coverage=false","typecheck":"tsc --noEmit","pack:dry-run":"pnpm build && pnpm pack --dry-run","smoke:auth-gum":"pnpm build && node scripts/sdk-auth-gum-smoke.mjs --mock","smoke:auth-gum:live":"pnpm build && EAK_SMOKE_MODE=live node scripts/sdk-auth-gum-smoke.mjs --live"},"_npmUser":{"name":"lucsun-fellou","email":"suntianxiang@fellou.ai"},"repository":{"url":"git+https://github.com/EazoAI/eak-sdk-node.git","type":"git"},"_npmVersion":"10.8.2","description":"Unified Node.js SDK for EAK Agent delegation, GUMem memory, and WebAgent automation.","directories":{"doc":"docs","test":"tests"},"sideEffects":false,"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.33.2","devDependencies":{"tsup":"^8.3.5","vitest":"^2.1.8","typescript":"^5.7.2","@types/node":"^20.17.10"},"_npmOperationalInternal":{"tmp":"tmp/eak_0.2.1_1781164085080_0.9820809835067825","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@eazo/eak","version":"0.2.3","keywords":["eak","eazo","agent","sdk","delegation","gumem","webagent"],"author":"","license":"MIT","_id":"@eazo/eak@0.2.3","maintainers":[{"name":"luozhuowei","email":"zhuowei@fellou.ai"},{"name":"liaochangjiang_fellou","email":"liaochangjiang@fellou.ai"},{"name":"lucsun-fellou","email":"suntianxiang@fellou.ai"}],"homepage":"https://github.com/EazoAI/eak-sdk-node#readme","bugs":{"url":"https://github.com/EazoAI/eak-sdk-node/issues"},"dist":{"shasum":"1f75c610c367983a6c957feca2c88491c6b94b5b","tarball":"https://registry.npmjs.org/@eazo/eak/-/eak-0.2.3.tgz","fileCount":14,"integrity":"sha512-ftOM62EtDOh/8BtuHhpARZ1NsoVlnTfNDWDLg5CHKQga+i6fOB75unk+yleBpBojoq/U8qQaAhi6KZtGLC8lnA==","signatures":[{"sig":"MEQCIBxpT4Y/mcJOSqWi05uhKdDgGmNnnSb9LU471XNTHs3EAiBECSITOgPJMPZsUwdUtKr3n18fznulDG55okcV+HhPYw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":776433},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"01c2047f5265bafa59f39e6fab8e001e2109c6b2","scripts":{"test":"pnpm test:mock","build":"tsup","prepack":"pnpm build","test:ci":"pnpm test:mock","test:e2e":"EAK_LIVE_E2E=1 vitest run --coverage=false --fileParallelism=false --maxWorkers=1 --testTimeout=120000 tests/live-e2e/*.test.ts","test:mock":"vitest run --coverage=false tests/eak.test.ts tests/semantic-surface.test.ts tests/open-source-readiness.test.ts tests/complete-coverage.test.ts tests/event-catalog.test.ts","typecheck":"tsc --noEmit","pack:dry-run":"pnpm build && pnpm pack --dry-run","test:package":"vitest run --coverage=false tests/package-surface.test.ts","smoke:auth-gum":"pnpm build && node scripts/sdk-auth-gum-smoke.mjs --mock","gen:event-types":"node scripts/gen-event-types.mjs","smoke:auth-gum:live":"pnpm build && EAK_SMOKE_MODE=live node scripts/sdk-auth-gum-smoke.mjs --live"},"_npmUser":{"name":"lucsun-fellou","email":"suntianxiang@fellou.ai"},"repository":{"url":"git+https://github.com/EazoAI/eak-sdk-node.git","type":"git"},"_npmVersion":"10.8.2","description":"Unified Node.js SDK for EAK Agent delegation, GUMem memory, and WebAgent automation.","directories":{"doc":"docs","test":"tests"},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"@eazo/eak":"^0.2.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.33.2","devDependencies":{"tsup":"^8.3.5","vitest":"^2.1.8","typescript":"^5.7.2","@types/node":"^20.17.10"},"_npmOperationalInternal":{"tmp":"tmp/eak_0.2.3_1781665291950_0.2221928683341554","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@eazo/eak","version":"0.3.0","keywords":["eak","eazo","agent","sdk","delegation","gumem","webagent"],"author":"","license":"MIT","_id":"@eazo/eak@0.3.0","maintainers":[{"name":"luozhuowei","email":"zhuowei@fellou.ai"},{"name":"liaochangjiang_fellou","email":"liaochangjiang@fellou.ai"},{"name":"lucsun-fellou","email":"suntianxiang@fellou.ai"}],"homepage":"https://github.com/EazoAI/eak-sdk-node#readme","bugs":{"url":"https://github.com/EazoAI/eak-sdk-node/issues"},"dist":{"shasum":"7c07eb4d0b719c2f976337c7b15dc01465470004","tarball":"https://registry.npmjs.org/@eazo/eak/-/eak-0.3.0.tgz","fileCount":14,"integrity":"sha512-pGSqBbSnFZNWDEG+QltNxoc/jqI+0X7VwBtTAa1emfYmNAYVz5YZReTi4Q7YuqtshAx957IBl5vpmdD1mneuYw==","signatures":[{"sig":"MEUCIH6LssvUqvcw85wlwBmOfI95CBmZugrYYWQIAibWsjeAAiEAvSuIl5nigBfBDAeGwTHu0TDjKD7qpP70kVWvRlvndkc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":856704},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"1df7f1d7a5bc92654e9a46506abe65051f2695ee","scripts":{"test":"pnpm test:mock","build":"tsup","prepack":"pnpm build","prepare":"tsup","test:ci":"pnpm test:mock","test:e2e":"EAK_LIVE_E2E=1 vitest run --coverage=false --fileParallelism=false --maxWorkers=1 --testTimeout=120000 tests/live-e2e/*.test.ts","test:mock":"vitest run --coverage=false tests/eak.test.ts tests/semantic-surface.test.ts tests/open-source-readiness.test.ts tests/complete-coverage.test.ts tests/event-catalog.test.ts tests/interactions.test.ts","typecheck":"tsc --noEmit","pack:dry-run":"pnpm build && pnpm pack --dry-run","test:package":"vitest run --coverage=false tests/package-surface.test.ts","smoke:auth-gum":"pnpm build && node scripts/sdk-auth-gum-smoke.mjs --mock","gen:event-types":"node scripts/gen-event-types.mjs","smoke:auth-gum:live":"pnpm build && EAK_SMOKE_MODE=live node scripts/sdk-auth-gum-smoke.mjs --live"},"_npmUser":{"name":"lucsun-fellou","email":"suntianxiang@fellou.ai"},"repository":{"url":"git+https://github.com/EazoAI/eak-sdk-node.git","type":"git"},"_npmVersion":"10.8.2","description":"Unified Node.js SDK for EAK Agent delegation, GUMem memory, and WebAgent automation.","directories":{"doc":"docs","test":"tests"},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"@eazo/eak":"^0.2.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.33.2","devDependencies":{"tsup":"^8.3.5","vitest":"^2.1.8","typescript":"^5.7.2","@types/node":"^20.17.10"},"_npmOperationalInternal":{"tmp":"tmp/eak_0.3.0_1781759332530_0.22072114229476236","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@eazo/eak","version":"0.3.1","keywords":["eak","eazo","agent","sdk","delegation","gumem","webagent"],"author":"","license":"MIT","_id":"@eazo/eak@0.3.1","maintainers":[{"name":"luozhuowei","email":"zhuowei@fellou.ai"},{"name":"liaochangjiang_fellou","email":"liaochangjiang@fellou.ai"},{"name":"lucsun-fellou","email":"suntianxiang@fellou.ai"}],"homepage":"https://github.com/EazoAI/eak-sdk-node#readme","bugs":{"url":"https://github.com/EazoAI/eak-sdk-node/issues"},"dist":{"shasum":"5b9d74c4e21db8a1261fa93ef258abbc08c72352","tarball":"https://registry.npmjs.org/@eazo/eak/-/eak-0.3.1.tgz","fileCount":14,"integrity":"sha512-t0UqNNXR43rS50cNRSuIHFndNID7qUCI2yKigjr9T6hnXGF2T2YpDc7dcNmItrH+QzfMdnT7NFJuDBkaqxbGyQ==","signatures":[{"sig":"MEQCIGEktzFVG2yZyUGW+0S+V5Uj1JRMddQ9xAi6v2h1tLVCAiBBykdTyCYqqUEniqIBFzKrE5JhDf8got0sOZ3ZNcPcnQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":857499},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"48ad0a9dc8e7e32f82aa9059d0fb067d956a2954","scripts":{"test":"pnpm test:mock","build":"tsup","prepack":"pnpm build","prepare":"tsup","test:ci":"pnpm test:mock","test:e2e":"EAK_LIVE_E2E=1 vitest run --coverage=false --fileParallelism=false --maxWorkers=1 --testTimeout=120000 tests/live-e2e/*.test.ts","test:mock":"vitest run --coverage=false tests/eak.test.ts tests/semantic-surface.test.ts tests/open-source-readiness.test.ts tests/complete-coverage.test.ts tests/event-catalog.test.ts tests/interactions.test.ts","typecheck":"tsc --noEmit","pack:dry-run":"pnpm build && pnpm pack --dry-run","test:package":"vitest run --coverage=false tests/package-surface.test.ts","smoke:auth-gum":"pnpm build && node scripts/sdk-auth-gum-smoke.mjs --mock","gen:event-types":"node scripts/gen-event-types.mjs","smoke:auth-gum:live":"pnpm build && EAK_SMOKE_MODE=live node scripts/sdk-auth-gum-smoke.mjs --live"},"_npmUser":{"name":"lucsun-fellou","email":"suntianxiang@fellou.ai"},"repository":{"url":"git+https://github.com/EazoAI/eak-sdk-node.git","type":"git"},"_npmVersion":"10.8.2","description":"Unified Node.js SDK for EAK Agent delegation, GUMem memory, and WebAgent automation.","directories":{"doc":"docs","test":"tests"},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"@eazo/eak":"^0.2.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.33.2","devDependencies":{"tsup":"^8.3.5","vitest":"^2.1.8","typescript":"^5.7.2","@types/node":"^20.17.10"},"_npmOperationalInternal":{"tmp":"tmp/eak_0.3.1_1781767368216_0.5595499427827126","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@eazo/eak","version":"0.3.2","keywords":["eak","eazo","agent","sdk","delegation","gumem","webagent"],"author":"","license":"MIT","_id":"@eazo/eak@0.3.2","maintainers":[{"name":"luozhuowei","email":"zhuowei@fellou.ai"},{"name":"liaochangjiang_fellou","email":"liaochangjiang@fellou.ai"},{"name":"lucsun-fellou","email":"suntianxiang@fellou.ai"}],"homepage":"https://github.com/EazoAI/eak-sdk-node#readme","bugs":{"url":"https://github.com/EazoAI/eak-sdk-node/issues"},"dist":{"shasum":"aa731f7d19d3d5fbad32910d7b4b0d56d68323c3","tarball":"https://registry.npmjs.org/@eazo/eak/-/eak-0.3.2.tgz","fileCount":14,"integrity":"sha512-P6TWOVYPMcd7JqaDKwLFdMJK7O2nr7ZUPd14QHBpNFkjNfMZur9dSNpiHYH7t7cI8sKJsHuNviyw1/usB6OcSw==","signatures":[{"sig":"MEUCIE71uih2DSwVXNBNll1QD0lelXdmOs+jXIy+tjeArEDOAiEA3uF9y0U6AnltZMv7Zqqm9wkrFbFR9OvKlqhsUjHgy8A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":870651},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"dee9587d4c9ee5be71b6e4ce8ccf39df39fc373a","scripts":{"test":"pnpm test:mock","build":"tsup","prepack":"pnpm build","prepare":"tsup","test:ci":"pnpm test:mock","test:e2e":"EAK_LIVE_E2E=1 vitest run --coverage=false --fileParallelism=false --maxWorkers=1 --testTimeout=120000 tests/live-e2e/*.test.ts","test:mock":"vitest run --coverage=false tests/eak.test.ts tests/semantic-surface.test.ts tests/open-source-readiness.test.ts tests/complete-coverage.test.ts tests/event-catalog.test.ts tests/interactions.test.ts","typecheck":"tsc --noEmit","pack:dry-run":"pnpm build && pnpm pack --dry-run","test:package":"vitest run --coverage=false tests/package-surface.test.ts","smoke:auth-gum":"pnpm build && node scripts/sdk-auth-gum-smoke.mjs --mock","gen:event-types":"node scripts/gen-event-types.mjs","smoke:auth-gum:live":"pnpm build && EAK_SMOKE_MODE=live node scripts/sdk-auth-gum-smoke.mjs --live"},"_npmUser":{"name":"lucsun-fellou","email":"suntianxiang@fellou.ai"},"repository":{"url":"git+https://github.com/EazoAI/eak-sdk-node.git","type":"git"},"_npmVersion":"10.8.2","description":"Unified Node.js SDK for EAK Agent delegation, GUMem memory, and WebAgent automation.","directories":{"doc":"docs","test":"tests"},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"@eazo/eak":"^0.2.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.33.2","devDependencies":{"tsup":"^8.3.5","vitest":"^2.1.8","typescript":"^5.7.2","@types/node":"^20.17.10"},"_npmOperationalInternal":{"tmp":"tmp/eak_0.3.2_1781769770928_0.7397396975056845","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"@eazo/eak","version":"0.3.3","keywords":["eak","eazo","agent","sdk","delegation","gumem","webagent"],"author":"","license":"MIT","_id":"@eazo/eak@0.3.3","maintainers":[{"name":"luozhuowei","email":"zhuowei@fellou.ai"},{"name":"liaochangjiang_fellou","email":"liaochangjiang@fellou.ai"},{"name":"lucsun-fellou","email":"suntianxiang@fellou.ai"}],"homepage":"https://github.com/EazoAI/eak-sdk-node#readme","bugs":{"url":"https://github.com/EazoAI/eak-sdk-node/issues"},"dist":{"shasum":"52c176b7043b6519ff8050260d7228cbf2da2353","tarball":"https://registry.npmjs.org/@eazo/eak/-/eak-0.3.3.tgz","fileCount":14,"integrity":"sha512-3y8PsiXbg5O2IpDmWsqkqGK2Ot0xuV6LnhgWzGKJRTkcYTSPqr9dGapo7W7CP5wlkc6JclzQHGrGNDzo8wCJBw==","signatures":[{"sig":"MEUCIQDot661jnSxByabYOeAl9j9AbwkXRO2HZWrewIuJZKQLAIgOwzgqNTnpx70oh9TID02aoqYPfouT0m7i2heFeQAFgI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":885995},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"3458c4189c73a12757dce20649c51e2720f6ae18","scripts":{"test":"pnpm test:mock","build":"tsup","prepack":"pnpm build","prepare":"tsup","test:ci":"pnpm test:mock","test:e2e":"EAK_LIVE_E2E=1 vitest run --coverage=false --fileParallelism=false --maxWorkers=1 --testTimeout=120000 tests/live-e2e/*.test.ts","test:mock":"vitest run --coverage=false tests/eak.test.ts tests/semantic-surface.test.ts tests/open-source-readiness.test.ts tests/complete-coverage.test.ts tests/event-catalog.test.ts tests/interactions.test.ts","typecheck":"tsc --noEmit","pack:dry-run":"pnpm build && pnpm pack --dry-run","test:package":"vitest run --coverage=false tests/package-surface.test.ts","smoke:auth-gum":"pnpm build && node scripts/sdk-auth-gum-smoke.mjs --mock","gen:event-types":"node scripts/gen-event-types.mjs","smoke:auth-gum:live":"pnpm build && EAK_SMOKE_MODE=live node scripts/sdk-auth-gum-smoke.mjs --live"},"_npmUser":{"name":"lucsun-fellou","email":"suntianxiang@fellou.ai"},"repository":{"url":"git+https://github.com/EazoAI/eak-sdk-node.git","type":"git"},"_npmVersion":"10.8.2","description":"Unified Node.js SDK for EAK Agent delegation, GUMem memory, and WebAgent automation.","directories":{"doc":"docs","test":"tests"},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"@eazo/eak":"^0.2.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.33.2","devDependencies":{"tsup":"^8.3.5","vitest":"^2.1.8","typescript":"^5.7.2","@types/node":"^20.17.10"},"_npmOperationalInternal":{"tmp":"tmp/eak_0.3.3_1781774005638_0.866671487792404","host":"s3://npm-registry-packages-npm-production"}},"0.3.4":{"name":"@eazo/eak","version":"0.3.4","description":"Unified Node.js SDK for EAK Agent delegation, GUMem memory, and WebAgent automation.","homepage":"https://github.com/EazoAI/eak-sdk-node#readme","bugs":{"url":"https://github.com/EazoAI/eak-sdk-node/issues"},"repository":{"type":"git","url":"git+https://github.com/EazoAI/eak-sdk-node.git"},"license":"MIT","type":"module","packageManager":"pnpm@10.33.2","keywords":["eak","eazo","agent","sdk","delegation","gumem","webagent"],"main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"build":"tsup","gen:event-types":"node scripts/gen-event-types.mjs","typecheck":"tsc --noEmit","test":"pnpm test:mock","test:mock":"vitest run --coverage=false tests/eak.test.ts tests/semantic-surface.test.ts tests/open-source-readiness.test.ts tests/complete-coverage.test.ts tests/event-catalog.test.ts tests/interactions.test.ts","test:e2e":"EAK_LIVE_E2E=1 vitest run --coverage=false --fileParallelism=false --maxWorkers=1 --testTimeout=120000 tests/live-e2e/*.test.ts","test:package":"vitest run --coverage=false tests/package-surface.test.ts","test:ci":"pnpm test:mock","smoke:auth-gum":"pnpm build && node scripts/sdk-auth-gum-smoke.mjs --mock","smoke:auth-gum:live":"pnpm build && EAK_SMOKE_MODE=live node scripts/sdk-auth-gum-smoke.mjs --live","pack:dry-run":"pnpm build && pnpm pack --dry-run","prepack":"pnpm build","prepare":"tsup"},"publishConfig":{"access":"public"},"sideEffects":false,"engines":{"node":">=18"},"devDependencies":{"@types/node":"^20.17.10","tsup":"^8.3.5","typescript":"^5.7.2","vitest":"^2.1.8"},"directories":{"doc":"docs","test":"tests"},"author":"","dependencies":{"@eazo/eak":"^0.2.1"},"_id":"@eazo/eak@0.3.4","gitHead":"1378a07d3b7f6f797edd58461f3b7f80fe8dee6c","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-DVH6n8UFI/4JKJ8KL/NKH6ecRTrJp7vq09SImHqb/6i2g6zcnyitYJzJt0Fa8MIql6yVdP0QcO51XHjM9nufbA==","shasum":"97cf6625c8653c7609f3abeca1ee4904686ebc3c","tarball":"https://registry.npmjs.org/@eazo/eak/-/eak-0.3.4.tgz","fileCount":14,"unpackedSize":886813,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCeU9dVtZVTjBoYLl4Hlo4tO35fB5HxQylanrGAoLIR9AIhAIizYFoxXGYuE78UC8bgvpeUR8fZ6Qn0SgRNYZ3AuEZH"}]},"_npmUser":{"name":"lucsun-fellou","email":"suntianxiang@fellou.ai"},"maintainers":[{"name":"luozhuowei","email":"zhuowei@fellou.ai"},{"name":"liaochangjiang_fellou","email":"liaochangjiang@fellou.ai"},{"name":"lucsun-fellou","email":"suntianxiang@fellou.ai"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/eak_0.3.4_1781795667161_0.4669462656236971"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-02T13:49:03.977Z","modified":"2026-06-18T15:14:27.519Z","0.1.0":"2026-06-02T13:49:04.337Z","0.1.1":"2026-06-03T10:03:08.493Z","0.1.2":"2026-06-03T12:51:04.216Z","0.1.4":"2026-06-04T06:59:48.839Z","0.1.5":"2026-06-04T08:04:28.672Z","0.1.6":"2026-06-05T11:24:19.487Z","0.1.7":"2026-06-08T04:16:15.233Z","0.2.0":"2026-06-11T07:19:32.704Z","0.2.1":"2026-06-11T07:48:05.242Z","0.2.3":"2026-06-17T03:01:32.160Z","0.3.0":"2026-06-18T05:08:52.789Z","0.3.1":"2026-06-18T07:22:48.407Z","0.3.2":"2026-06-18T08:02:51.121Z","0.3.3":"2026-06-18T09:13:25.803Z","0.3.4":"2026-06-18T15:14:27.351Z"},"bugs":{"url":"https://github.com/EazoAI/eak-sdk-node/issues"},"license":"MIT","homepage":"https://github.com/EazoAI/eak-sdk-node#readme","keywords":["eak","eazo","agent","sdk","delegation","gumem","webagent"],"repository":{"type":"git","url":"git+https://github.com/EazoAI/eak-sdk-node.git"},"description":"Unified Node.js SDK for EAK Agent delegation, GUMem memory, and WebAgent automation.","maintainers":[{"name":"luozhuowei","email":"zhuowei@fellou.ai"},{"name":"liaochangjiang_fellou","email":"liaochangjiang@fellou.ai"},{"name":"lucsun-fellou","email":"suntianxiang@fellou.ai"}],"readme":"# @eazo/eak\n\n[English](./README.md) | 中文\n\n`@eazo/eak` 是面向 Node.js 服务端的统一 EAK SDK，用一条清晰的调用链串起 Agent 委托授权、GenAuth 用户管理、GUMem 长期记忆、WebAgent 网页行动、Do Anything、Web Search 和 Track 监控能力。\n\n当一个 Agent 真正开始帮用户做事时，它不能只拿一把后台密钥到处调用接口。它需要知道用户是谁、用户允许它做什么、这次授权什么时候过期、页面里发生了什么、最后每一步能不能被追溯。\n\n`@eazo/eak` 解决的是两类服务端调用：运行时产品调用时，应用服务端先确认 GenAuth 用户，再通过 `delegateToken` 申请短期委托 token，之后每次 GUMem/WebAgent/Do Anything/Web Search/Track 调用都把这个 token 传入 `token` 字段；GenAuth 用户管理调用时，SDK 会用 EAK AK/SK 换取标准 GenAuth management token，再调用 GenAuth v3 users API。\n\nAK/SK 必须只保存在可信服务端，不能下发到浏览器、移动端、公开 CLI 配置或其他不可信运行环境。\n\n## 为什么使用 EAK\n\nEAK 把 Agent 授权模型收敛成几个稳定边界：\n\n- 一个 SDK 入口：`new EazoAgentKit({ accessKey, secretKey })`。\n- 一条发现路径：`host` 可在私有化或本地部署中覆盖 EAK Console/SDK 网关，SDK 通过 `/api/v3/eak/runtime-config` 获取 GenAuth、GUMem、WebAgent 等运行时地址。\n- 一个授权入口：调用 `delegateToken`；silent 模式直接返回 `data.token`，interactive 模式返回授权 URL，之后由业务服务端完成兑换。\n- 一条管理面路径：调用 `genauth.users.*`，SDK 会先用 AK/SK 换取 GenAuth management token，再调用 GenAuth v3 users API。\n- 一组能力命名空间：`genauth`、`gumem`、`webSearch`、`doAnything`、`track`。\n- 一组可读的 scope 字符串：让最小授权边界直接出现在业务代码里。\n- 一致的错误和审计字段：`requestId`、`traceId`、`auditId`、`retryable`。\n\n## 安装\n\n```bash\nnpm install @eazo/eak\n# 或\npnpm add @eazo/eak\n# 或\nyarn add @eazo/eak\n```\n\n运行要求：\n\n- Node.js 18 或更高版本。\n- 服务端运行环境提供 `fetch`。\n- 在 EAK Console 创建的 `accessKey` 与 `secretKey`。\n- silent 运行时产品调用需要一个来自该 EAK credential 绑定 GenAuth userpool 的真实用户 ID。Smoke 测试可以通过 `EAK_USER_ID` 传入，或调用 `eak.resolveAnyBoundUser()` 取绑定 userpool 里的第一个用户；业务代码中应通过 `currentUser` 或服务端已有登录态解析。interactive 委托创建时可以不传 `user` 或 `userId`，因为 EAK Console/BFF 会在授权过程中处理 GenAuth 登录。\n- `genauth.users.*` 管理面调用不需要 `EAK_USER_ID`。SDK 会用 AK/SK 向 EAK 换取 GenAuth management token。\n- 可选的 `host`，用于私有化或本地部署；托管版 EAK 通常保持未传。\n\n正常初始化 SDK 时不需要传 `tenantId`。EAK AK/SK 已经在服务端绑定了租户和应用边界。\n\n包同时发布 ESM 和 CommonJS 两套构建（都带 TypeScript 类型），两种引入方式都可用：\n\n```ts\nimport { EazoAgentKit } from \"@eazo/eak\";        // ESM / TypeScript\nconst { EazoAgentKit } = require(\"@eazo/eak\");    // CommonJS\n```\n\n## AI Skill\n\n`@eazo/eak` 不应该只给人读文档，也应该让 AI 工具能直接理解 SDK 的能力边界。可以通过 Skill 让 Codex、Claude Code 或内部 Agent 按同一套授权模型调用 EAK。\n\n安装 EAK Skill：\n\n```bash\nnpx skills add https://github.com/EazoAI/eak-sdk-node --skill eak-sdk\n```\n\n如果只想安装到 Claude Code，可以指定 Agent：\n\n```bash\nnpx skills add https://github.com/EazoAI/eak-sdk-node --agent claude-code --skill eak-sdk\n```\n\nnpm 包中包含 `skills/` 目录，但推荐仍使用上面的 GitHub 仓库安装命令，这样 AI 工具可以读取仓库内的 Skill 元数据。\n\n## 最短调用链\n\n先在可信服务端初始化 SDK。AK/SK 只留在服务端，管理面调用和运行时产品委托都复用这一个 SDK 实例。\n\n```ts\nimport fs from \"node:fs\";\nimport { EazoAgentKit } from \"@eazo/eak\";\n\nconst eak = new EazoAgentKit({\n  accessKey: process.env.EAK_ACCESS_KEY!,\n  secretKey: process.env.EAK_SECRET_KEY!,\n});\n```\n\n### GenAuth 用户管理\n\n`genauth.users.*` 属于管理面能力，不需要 `EAK_USER_ID` 或 `delegateToken`。SDK 会在内部签名请求 `POST /api/v3/eak/genauth/admin-token`，请求体是 `{}`，拿到 GenAuth management token 和 `userPoolId` 后再调用 GenAuth v3 users API。\n\n```ts\nconst users = await eak.genauth.users.list({\n  page: 1,\n  limit: 20,\n});\n\nconsole.log(\"GenAuth users:\", users.data);\n\nconst created = await eak.genauth.users.create<{ userId: string }>({\n  username: `sdk-demo-${Date.now()}`,\n  password: process.env.GENAUTH_DEMO_USER_PASSWORD!,\n});\n\nconst profile = await eak.genauth.users.get<{ userId: string }>({\n  userId: created.data.userId,\n});\n\nawait eak.genauth.users.update({\n  userId: profile.data.userId,\n  nickname: \"SDK demo user\",\n});\n\n// Smoke 测试结束后可以清理测试用户：\n// await eak.genauth.users.deleteBatch({ userIds: [profile.data.userId] });\n```\n\n### 运行时产品委托\n\nGUMem、WebAgent、Do Anything、Web Search、Track 是代表终端用户执行的运行时产品能力。silent 委托需要一个来自 EAK credential 绑定 userpool 的真实 GenAuth 用户 ID，再使用 `delegateToken` 返回的 token。\n\n```ts\nconst userId = process.env.EAK_USER_ID!;\nif (!userId) {\n  throw new Error(\"EAK_USER_ID 必须是 credential 绑定 userpool 下的真实 GenAuth 用户 ID\");\n}\n\n// `products` 是按产品授权的糖；`agent` 可以不传，默认 \"sdk\"。\nconst { token } = (\n  await eak.delegateToken({\n    user: { id: userId },\n    products: [\"doAnything\"],\n  })\n).data;\n\nconst run = await eak.doAnything.run({\n  token, // 入口传一次，句柄随后持有——句柄方法不再传 token\n  prompt: \"打开 https://en.wikipedia.org/wiki/Singapore ，总结新加坡的关键信息（首都、人口、货币）。\",\n  capture: { screenshots: true },\n});\n\nconst result = await run.wait({\n  onScreenshot: (img, i) => fs.writeFileSync(`step-${i}.jpg`, img.bytes),\n  onInteraction: (i) => {                 // 登录 / 澄清 / 确认 / 接管\n    if (i.can(\"confirm_signed_in\")) return i.confirmSignedIn();\n    if (i.can(\"confirm\")) return i.confirm();\n  },\n});\nconsole.log(result.output);\n```\n\n`run()` 返回一个 `RunHandle`。核心事件（状态、动作、交互、完成）始终默认推送；`capture: { screenshots: true }` 开启逐步截图，并且 SDK 已经把图片解码成字节。`wait()` 把任务跑到终态，并从权威 run envelope 结算结果（成本、步数、token 用量都在 `result.raw` 上）。\n\n需要逐步控制时，直接消费事件流，`switch (event.type)` 用 `EAKEventTypes` 常量匹配。每个产品的 handle 按产品分型（`eak.deepResearch.run()` 出来是 `RunHandle<DeepResearchEvent>`），TS 里写错产品的事件会编译报错、补全只列本产品的。内部细节（supervisor 编排、子 agent 点击/输入、telemetry）统一折叠成 `EAKEventTypes.Progress`；匹配到 `case` 后 `event.data` 就是该类型的固定形状。原始 wire 类型不导出。\n\n```ts\nimport { EAKEventTypes } from \"@eazo/eak\";\n\nconst run = await eak.deepResearch.run({ token, prompt: \"欧盟电池回收行业 2026 年现状\" }); // RunHandle<DeepResearchEvent>\n\nfor await (const event of run.events()) {\n  switch (event.type) {\n    case EAKEventTypes.Progress:      console.log(event.data); break; // data 直接就是那句话(string)\n    case EAKEventTypes.Phase:         console.log(event.data); break; // data 直接就是阶段名(string)\n    case EAKEventTypes.SectionReady:  console.log(event.data); break; // data 直接就是章节标题(string)\n    case EAKEventTypes.Message:       console.log(event.data.text); break; // 丰富 → { text, role }\n    case EAKEventTypes.Interaction: {                                      // 丰富 → 带类型的 Interaction 对象\n      const i = run.interactionHandle(event.data);                         // 例如大纲审批的 confirmation\n      if (i.can(\"confirm\")) await i.confirm();\n      break;\n    }\n    case EAKEventTypes.Done:          console.log(event.data.output); break; // 丰富 → 终态\n    // case EAKEventTypes.ResultsReady —— Web Search 才有，写这里 TS 编译报错\n  }\n  // event.runId / event.at / event.isTerminal / event.raw（逃生舱）\n}\n// 迭代器在终态（EAKEventTypes.Done）事件后自动结束。\n// 注:分型的编译期拦截是 TS 的能力;纯 JS 没类型检查,写错产品事件不报错、只是不触发。\n\nawait run.cancel(\"用户停止任务\"); // 幂等——对已结束的 run 调用也不会抛错\nconst followUp = await eak.doAnything.run({\n  token,\n  prompt: \"再打开马来西亚的维基百科页面，把它的人口和新加坡做个对比。\",\n  session: run.sessionRef, // 复用同一个浏览器会话\n});\nconst reattached = await eak.doAnything.attach(run.id, { token }); // 仅凭 run id 重连\n```\n\n这里的关键点不是方法有多少，而是每一步都有边界：Agent 只能做 token 里 scope 允许的事情，授权过期后不能继续执行，后端可以通过 `auditId` 追溯这次行为。\n\n## 授权模型\n\n### Runtime Discovery\n\n`host` 指向 EAK Console/SDK 网关，不直接指向 GenAuth、GUMem 或 WebAgent。托管版集成通常不传 `host`；私有化和本地部署可以传入自己的网关地址。\n\nSDK 会签名请求：\n\n```text\nGET /api/v3/eak/runtime-config\n```\n\n返回值提供 EAK runtime、GenAuth、GUMem、WebAgent 等服务地址。普通业务代码不需要分别配置这些产品 URL。\n\n### 服务端 AK/SK\n\n`accessKey` 和 `secretKey` 表示 EAK Console 中已经配置好的租户和应用边界。SDK 只在可信服务端用它们签名 EAK 请求，包括委托授权和产品 token exchange。\n\n### delegateToken\n\nsilent 模式下，`delegateToken` 绑定四件事：\n\n- 当前用户 ID。\n- Agent ID。\n- 本次请求的 scopes。\n- token 过期时间与审计上下文。\n\nsilent 产品能力方法传入 `token: delegation.data.token`。如果这个 token 是 EAK delegation token，SDK 会在内部换成 GUMem 或 WebAgent 所需的产品 access token，再调用下游服务。\n\n**入参形态。** `delegateToken` 用 `mode` 判别：\n\n- **Silent**（`mode: \"silent\"`，默认）——代表某个终端用户,所以 user **必填**：传 `user: { id: <genauthUserId> }`（推荐）或已废弃的顶层 `userId`。不传会在请求发出前本地抛 `EAKValidationError`。授权用 `products` 语法糖和/或显式 `scopes`。\n- **Interactive**（`mode: \"interactive\"`）——传 `redirectUri`、`state`、`agent`、`scopes`，**不传** user（EAK Console 在授权时解析登录）。返回 `data.authorizationUrl` 而非 token；在服务端用 `completeDelegateToken({ grantId, code, state })` 完成。\n\n`agent` 可选，默认 `\"sdk\"`。\n\n```ts\nconst delegation = await eak.delegateToken({\n  userId,\n  agent: \"research-assistant\",\n  scopes: [\"gumem.memory:read\"],\n  mode: \"silent\",\n});\n\nawait eak.gumem.recall({\n  token: delegation.data.token,\n  query: \"研究偏好\",\n});\n```\n\ninteractive 模式下，业务服务端仍然先调用 `delegateToken`，但这一步不会拿到 token：\n\n```ts\nconst grant = await eak.delegateToken({\n  mode: \"interactive\",\n  redirectUri: \"https://app.example.com/eak/callback\",\n  state: \"business-csrf-state\",\n  agent: \"research-assistant\",\n  scopes: [\"gumem.memory:read\", \"webagent.do_anything:manage\"],\n});\n\nredirectUserTo(grant.data.authorizationUrl);\n```\n\n用户访问 `authorizationUrl` 进入 EAK Console/BFF。若用户未登录，Console/BFF 会先走 GenAuth 登录；授权确认后由 Console/BFF 统一 complete，再回跳业务 `redirectUri`，只带一次性 `code`、业务 `state`、`grant_state`/`grantId`。浏览器不会拿到 delegation token。\n\n业务 callback handler 在服务端用 AK/SK 兑换最终 token：\n\n```ts\nconst completed = await eak.completeDelegateToken({\n  grantId: String(req.query.grantId ?? req.query.grant_id),\n  code: String(req.query.code),\n  state: String(req.query.state),\n});\n\nawait eak.gumem.recall({\n  token: completed.data.token,\n  query: \"研究偏好\",\n});\n```\n\n`completeDelegateToken` 是推荐的服务端 callback helper。`delegateAgent` 和 `completeDelegateAgent` 仍保留为 deprecated 兼容命名，但当前 callback 契约是 `{ grantId, code, state }`；旧的 `{ code, state }` complete 签名不再兼容。\n\n## Scope 怎么选\n\n每个 WebAgent 产品只有两个 scope：`read`（只读观察——状态、事件、产物）与 `manage`（一切改变执行状态的操作——发起、取消、应答、消息、监控的增删改）。全集共 8 个：`webagent.{do_anything, web_search, deep_research, track}:{read, manage}`。最简单的授权方式是 `products` 糖——每个产品名展开为该产品的 `read` + `manage` 一对：\n\n```ts\nawait eak.delegateToken({\n  user: { id: userId },\n  products: [\"doAnything\", \"webSearch\", \"deepResearch\", \"track\"],\n  scopes: [\"gumem.memory:read\"], // 可以和细粒度 scope 并用\n});\n```\n\nscope 字符串在发请求前就会本地预检：漏掉服务前缀（比如写成 `do_anything:manage` 而不是 `webagent.do_anything:manage`）会立即抛出 `EAKValidationError`，错误消息里带正确写法。\n\n需要让授权边界直接出现在业务代码里时，使用显式 scope 字符串。\n\n| 场景 | 推荐 scope | 用户能理解的描述 |\n| --- | --- | --- |\n| 读取用户记忆 | `gumem.memory:read` | Agent 可以读取与你相关的历史偏好。 |\n| 创建 GUMem 会话并召回上下文 | `gumem.memory:read`, `gumem.memory:write`, `gumem.message:write` | Agent 可以为当前用户创建记忆会话、写入消息并召回上下文。 |\n| 写入任务结果 | `gumem.message:write`, `gumem.action:write` | Agent 可以把本次确认过的结果写回 GUMem。 |\n| 搜索公开网页 | `webagent.web_search:read`, `webagent.web_search:manage` | Agent 可以搜索公开网页并读取结果。 |\n| 执行网页任务 | `webagent.do_anything:read`, `webagent.do_anything:manage` | Agent 可以执行有边界的网页任务、读取进度、停止任务，并在需要时介入控制。 |\n| 创建长期监控 | `webagent.track:read`, `webagent.track:manage` | Agent 可以配置监控、读取事件、立即运行检查，并停止监控。 |\n\n低风险能力通常可以静默授权，例如读取当前用户自己的 GUMem、写入本次会话摘要、搜索公开网页、读取普通任务结果。\n\n高风险能力建议显式授权，例如接管浏览器、请求或确认外部站点登录、创建长期监控、提交表单、读取浏览器画面/录屏/附件/研究产物等敏感内容。\n\nSDK 也导出了常见 GUMem 会话、写入、召回场景的 scope bundle：\n\n```ts\nEAKScopeBundles.GUMEM_SESSION_RECALL\n```\n\n## 能力示例\n\n### GUMem\n\n```ts\nawait eak.gumem.createSession({\n  token,\n  userId,\n  sessionId: \"daily-assistant\",\n  title: \"日常助手记忆\",\n});\n\n// 你的业务已经向用户收集并确认了这条偏好。\nconst confirmedPreference =\n  \"请保持每日计划建议简洁，只给出下一步行动。\";\n\nawait eak.gumem.addMessages({\n  token,\n  sessionId: \"daily-assistant\",\n  messages: [\n    {\n      role: \"user\",\n      content: confirmedPreference,\n    },\n    {\n      role: \"assistant\",\n      content: `已保存用户确认的偏好：${confirmedPreference}`,\n    },\n  ],\n});\n\nconst context = await eak.gumem.recall({\n  token,\n  sessionId: \"daily-assistant\",\n  query: \"这个用户下一个任务需要考虑哪些已经确认的偏好？\",\n  details: true,\n});\n\n// 将 context.data 传给你自己的助手回复生成、任务规划或产品逻辑。\n// SDK 示例到这里结束，因为应用编排由你的业务决定。\n```\n\n### Do Anything\n\n```ts\nconst run = await eak.doAnything.run({\n  token,\n  prompt: \"打开 https://en.wikipedia.org/wiki/Solid-state_battery ，总结它相对锂离子电池的主要优势。\",\n});\n\nconst status = await run.status(); // 刷新并返回当前状态\nawait run.cancel(\"用户停止任务\"); // 幂等\n```\n\n### Web Search\n\n```ts\nconst search = await eak.webSearch.run({\n  token,\n  prompt: \"欧盟电池回收法规 2026\",\n  maxResultsPerQuery: 5,\n});\n\nconst result = await search.wait();\nconsole.log(result.output); // 搜索结果\n```\n\n### Deep Research\n\n```ts\nconst research = await eak.deepResearch.run({\n  token,\n  prompt: \"欧盟电池回收行业 2026 年现状\",\n  depth: \"standard\", // light | standard | deep —— 调研深度，主要的旋钮\n  limits: { maxDurationMinutes: 120 }, // 墙钟上限，跑超自动终止\n});\n\nconst report = await research.wait();\nfor (const artifact of report.artifacts) {\n  fs.writeFileSync(artifact.name ?? artifact.id, await artifact.content());\n}\n\n// 追问：起一个继承前序上下文的新 run。\nconst followUp = await eak.deepResearch.run({\n  token,\n  prompt: \"再对比一下 2025 年的数据。\",\n  session: research.sessionRef,\n});\n```\n\n### Track\n\n```ts\nconst monitor = await eak.track.create({\n  token,\n  prompt: \"每分钟监控一次比特币价格。\",\n});\n\n// 新建的 monitor 先处于 `pending_clarification`（后端把意图对齐成具体规格），\n// 几秒后转为 `active`（意图含糊时可能先发一个 interaction）。runNow()/refine()\n// 都要求 `active`，所以先等它就绪再操作：\nfor await (const event of monitor.events()) {\n  if (event.type === \"interaction\") {\n    const i = monitor.interactionHandle(event.data); // 如 needs-reauth 的 site_login\n    if (i.can(\"confirm\")) await i.confirm();\n    continue;\n  }\n  const { status } = await monitor.get();\n  if (status === \"active\") break;\n}\n\nawait monitor.runNow();                     // 立即触发一次 tick\nconst ticks = await monitor.runs({ limit: 10 }); // tick 产生的 run 只读列表\n\n// 用 refine() 改定义（任意字段子集：schedule / targetUrls / extractionSchema /\n// triggerDsl / stopConditionDsl / notifyChannel）。`schedule` 是\n// { kind: \"cron\", expr } 或 { kind: \"interval\", intervalSeconds }。\n// 自然语言意图不可 refine——要改描述请新建 monitor：\nawait monitor.refine({ schedule: { kind: \"cron\", expr: \"0 9 * * *\" } });\nawait monitor.pause();   // 停掉定时 tick 但不删除\nawait monitor.resume();\nawait monitor.delete();\n\n// 之后可以用存下来的 id 重连：\nconst sameMonitor = await eak.track.attach(monitor.id, { token });\n```\n\n### GenAuth 用户上下文与用户管理\n\n```ts\nconst client = new EazoAgentKit({\n  accessKey: process.env.EAK_ACCESS_KEY!,\n  secretKey: process.env.EAK_SECRET_KEY!,\n});\n\nconst profile = await client.genauth.userInfo({\n  accessToken: process.env.GENAUTH_ACCESS_TOKEN!,\n});\n\nconst users = await client.genauth.users.list({\n  page: 1,\n  limit: 20,\n});\n\nconst created = await client.genauth.users.create({\n  username: \"sdk-demo-user\",\n  password: process.env.GENAUTH_DEMO_USER_PASSWORD!,\n});\n```\n\n`currentUser`、`genauth.userInfo` 使用 GenAuth access token 读取已登录用户身份。`genauth.users.*` 也属于管理面能力，但业务代码仍然用 EAK AK/SK 初始化 SDK：SDK 会签名请求 `POST /api/v3/eak/genauth/admin-token`，请求体是空 JSON `{}`，拿到标准 GenAuth management token 和 `userPoolId`，再携带 `Authorization: Bearer ...` 与 `x-authing-userpool-id` 调用 GenAuth v3 用户管理 API。这里不传 `resource`、`actions`、`expiresIn` 或 `EAK_USER_ID`。GUMem/WebAgent/Track 等运行时能力才使用 `delegateToken` 返回的 token。\n\n## API 概览\n\n### Client\n\n```ts\nconst eak = new EazoAgentKit({\n  accessKey: process.env.EAK_ACCESS_KEY!,\n  secretKey: process.env.EAK_SECRET_KEY!,\n  timeoutMs: 30_000,\n});\n```\n\n| 参数 | 类型 | 必填 | 说明 |\n| --- | --- | --- | --- |\n| `accessKey` | `string` | 是 | EAK Console 创建的 access key。 |\n| `secretKey` | `string` | 是 | EAK Console 创建的 secret key。 |\n| `host` | `string` | 否 | 私有化或本地部署时可选的 EAK Console/SDK 网关覆盖地址。 |\n| `fetch` | `typeof fetch` | 否 | 自定义传输实现。 |\n| `timeoutMs` | `number` | 否 | 单次请求超时（连接 + 响应头），默认 `30000`。 |\n\n> **`timeoutMs` 不会限制长任务。** 它只作用于单次一次性 HTTP 请求（委托、`status()`、单个 POST）。事件流（`events()` / `wait()`）**不受它约束**——流的响应头一到，这个单次计时器就被清掉了,所以一个跑一小时的 Deep Research 在默认 30s 客户端超时下也能正常流式。要限制等待时长用 `wait({ timeoutMs })`；不传则 `wait()` 一直等到终态。`wait()` 超时**不会停止 run**——它在服务端继续跑，可以再 `attach()` 回去。\n\n兼容导出：\n\n```ts\nimport { EAK, EazoAgentKit } from \"@eazo/eak\";\n```\n\n### 命名空间\n\n| 命名空间 | 方法 |\n| --- | --- |\n| 委托授权 | `delegateToken`, `completeDelegateToken`；兼容别名：`delegateAgent`, `completeDelegateAgent` |\n| GenAuth | `userInfo`, `jwks`, `discovery`, `introspectDelegationToken`, `users.list`, `users.get`, `users.getBatch`, `users.create`, `users.createBatch`, `users.update`, `users.deleteBatch` |\n| GUMem | `createSession`, `addMessages`, `recall`, `uploadResource`, `actions.record`, `actions.recall`, `actions.stream` |\n| Do Anything | `run`, `attach` → `RunHandle` |\n| Deep Research | `run`, `attach` → `RunHandle` |\n| Web Search | `run`, `attach` → `RunHandle` |\n| Track | `create`, `attach` → `MonitorHandle` |\n\n三个任务型产品共用同一个句柄形态：\n\n```ts\nrun.id\nrun.sessionRef                          // 传回 run({ session }) 复用会话\nawait run.status()                      // 刷新并返回当前状态\nrun.events(opts?)                       // AsyncIterable<RunEvent>，终态自动结束\nawait run.wait({ timeoutMs?, onEvent?, onInteraction?, onScreenshot? })\nrun.interactionHandle(interaction)      // 带类型的 HITL 句柄（见下方「交互」）\nawait run.cancel(reason?)               // 幂等\n```\n\n`await run.wait(...)` 结算成一个 `RunResult`：\n\n```ts\ninterface RunResult {\n  runId: string;\n  status: \"succeeded\" | \"failed\" | \"canceled\";  // run 的交付状态\n  output?: unknown;            // 最终答案 / 载荷（形状随任务而定）\n  artifacts: Artifact[];       // 交付物——deepResearch 报告；其它产品为 []\n  isTaskSuccessful?: boolean;  // 任务是否达成目标（与 status 不同）\n  terminalReason?: string;\n  raw: JsonObject;             // 完整 wire envelope——成本、步数、token 用量\n}\n```\n\n每个 `Artifact` 暴露 `id`、`name?`、`mime?`、`sizeBytes?`、`createdAt?` 和 `content(): Promise<Uint8Array>`（懒加载字节）。其余方法都返回下文的 `EAKResponse<T>` 信封,`T` 是该调用的具体载荷类型（例如 `genauth.users.list` → `.data` 上的分页用户列表）。`T` 的精确形状见随包的 `.d.ts`，与后端契约一致。\n\n`MonitorHandle`（Track）提供 `id`、`get()`、`pause()`、`resume()`、`refine(patch)`、`runNow()`、`events()`、`interactionHandle()`、`runs()`、`run(runId)`、`delete()`。`runNow()` 和 `refine()` 要求 monitor 处于 `active`——新建的 monitor 会先短暂处于 `pending_clarification`（见上方 Track 示例）。\n\n### 交互（HITL）\n\n当 run 需要用户参与——登录某站、回答澄清、审批计划、接管浏览器、或等待——会发出一个 `interaction` 事件，`event.data` 是带类型的 `Interaction`（用 `type` 判别：`site_login` / `clarification` / `confirmation` / `take_control` / `wait`）。把它包成句柄再调动作方法即可；每个方法会 POST 到交互 `actions[]` 里后端声明的 endpoint，不需要写死路由：\n\n```ts\nfor await (const event of run.events()) {\n  if (event.type === \"interaction\") {\n    const i = run.interactionHandle(event.data);   // event.data 就是 Interaction\n    if (i.type === \"clarification\" && i.can(\"answer\")) await i.answer(\"蓝色那个按钮\");\n    else if (i.can(\"confirm\")) await i.confirm();\n    else if (i.can(\"confirm_signed_in\")) await i.confirmSignedIn();\n    else if (i.can(\"release_control\")) await i.releaseControl();\n  }\n}\n```\n\n方法：`answer(text)`、`skip()`、`confirm()`、`reject()`、`openLogin()`、`confirmSignedIn()`、`connectControl()`、`refreshControl()`、`releaseControl()`、`retry()`、`switchProfile()`。`i.can(kind)` 判断该交互当前是否提供这个动作；调用后端没声明的方法会抛错（所以「恢复」按钮只有在真能用时才出现）。\n\n上面用到的判别字符串也都导出成了常量，避免裸写字面量：`InteractionTypes`（`site_login` / `clarification` / `confirmation` / `take_control` / `wait`）、`InteractionStatuses`、`ActionKinds`（`i.can(...)` 的动作名）。授权 scope 同样有：`EAKScopes`（每个单独 scope）、`EAKProductScopes`（`products` 语法糖展开成的 per-product `read`+`manage` 对）、`EAKScopeBundles`（精选 bundle）。用它们代替手写字符串：\n\n```ts\nimport { InteractionTypes, ActionKinds, EAKScopes } from \"@eazo/eak\";\n\nif (i.type === InteractionTypes.Clarification && i.can(ActionKinds.answer)) {\n  await i.answer(\"蓝色那个按钮\");\n}\n```\n\n### Wire 级逃生舱\n\n与后端 HTTP 契约一一对应的低层方法保留在 `eak.<product>.api.*` 下（如 `eak.doAnything.api.createSession`、`eak.deepResearch.api.followUp`、`eak.track.api.createMonitor`）。这些方法直接镜像 wire 形状——snake_case 字段、双层 envelope 事件、run 操作统一走 `/{product}/runs/{run_id}` 单 ID 寻址——形状会随 API 演进变化，不在冻结的公开契约范围内。\n\n原始 wire 事件类型（`run.action.started` 这种内部传输名，命名是历史遗留、也不一致）**不作为公开导出**——开发者按上面那套精选 `event.type` 匹配即可；极少数要精确 wire 的场景，`event.raw.event` 是个原始字符串，直接比对。\n\nBrowser Use、Site Login 的 scope 已预留，但产品运行时 SDK 方法导出前不作为公开方法说明。\n\n### 返回结构\n\n大部分 SDK 方法返回：\n\n```ts\ntype EAKResponse<T> = {\n  data: T;\n  meta: {\n    requestId?: string;\n    traceId?: string;\n    auditId?: string;\n    service?: \"eak\" | \"genauth\" | \"gumem\" | \"webagent\";\n  };\n};\n```\n\n句柄事件流（`run.events()`、`monitor.events()`）产出判别联合 `RunEvent`——匹配 `event.type` 后 `event.data` 就是该类型的固定形状：\n\n```ts\n// event.type → event.data：\n//   简单事件 —— event.data 直接就是那个值(不用记字段名):\n//     \"progress\"       string   —— 一句话进度\n//     \"phase\"          string   —— Deep Research 阶段名\n//     \"sectionReady\"   string   —— Deep Research 章节标题\n//     \"resultsReady\"   number   —— Web Search 结果数\n//     \"monitorCreated\" string   —— Track monitor id\n//     \"triggered\"      string   —— Track 变化摘要\n//     \"checkCompleted\" boolean  —— Track:这次检查有没有发现变化\n//   丰富事件 —— event.data 是个小对象:\n//     \"message\"        { text, role }\n//     \"interaction\"    带类型的 Interaction 对象（HITL）—— 见「交互」一节\n//     \"screenshot\"     { pageUrl?, step? }   + 解码后的图在 event.image\n//     \"done\"           { output, succeeded, terminalReason }\n// 公共字段:runId、at(ISO 8601)、isTerminal(仅 \"done\" 为 true)、raw(原始 wire 事件,逃生舱)。\n```\n\n每个产品的 handle 只含自己那一套（分型）：\n\n| 产品 | `event.type` 集合 |\n|---|---|\n| Do Anything | 核心:`progress` / `message` / `interaction` / `screenshot` / `done` |\n| Web Search | 核心 + `resultsReady` |\n| Deep Research | 核心 + `phase` / `sectionReady`（大纲审批走 `interaction`） |\n| Track（`MonitorHandle`） | 核心 + `monitorCreated` / `triggered` / `checkCompleted` |\n\n断线会带 `Last-Event-ID` 自动重连续传；迭代器在终态事件后自动结束。\n\nWire 级流式方法（`eak.<product>.api.events`）返回 `AsyncIterable<EAKEvent<T>>`：\n\n```ts\ntype EAKEvent<T = unknown> = {\n  id?: string;\n  event?: string;\n  data: T;\n};\n```\n\n## 错误处理\n\n所有 SDK 错误都继承自 `EAKError`，并尽量暴露 `code`、`status`、`requestId`、`traceId`、`auditId`、`retryable` 和原始响应 `body`。`code` 的类型是 `EAKErrorCode`（已知 SDK / 后端 code 加 `(string & {})`），既有字面量自动补全、可对已知集做 `switch (err.code)` 穷尽处理，又兼容后端新增的 code。\n\n所有错误类都已导出，可用 `instanceof` 匹配：\n\n| 类 | 触发时机 | 典型处理 |\n| --- | --- | --- |\n| `EAKValidationError` | 请求发出前的本地校验失败（scope 字符串格式错、silent 委托缺 user）。 | 按消息修正调用——消息里给出正确写法。 |\n| `EAKAuthError` | AK/SK 签名被 EAK 拒绝（凭据错误/已轮换）。 | 检查 `accessKey` / `secretKey`。 |\n| `EAKPermissionDeniedError` | delegation token 缺所需 scope（403）。 | 带上缺失 scope 重新 `delegateToken`。 |\n| `EAKTokenExpiredError` | delegation / 产品 token 过期。 | 重新 mint token 再试。 |\n| `EAKDelegationRequiredError` | 产品调用没带 `token`，或带的是网关不接受的裸 token。 | 把 `delegation.data.token` 传给产品调用。 |\n| `EAKRateLimitError` | 被限流（429）。 | 退避后重试（`retryable === true`）。 |\n| `EAKTimeoutError` | 请求（或 `wait({ timeoutMs })`）超时。 | 重试；run 仍在服务端执行，可 `attach()` 回去。 |\n| `EAKUpstreamError` | 下游服务失败（5xx / 上游换 token 失败）。 | `retryable` 时退避后重试。 |\n| `EAKError` | 基类 / 其它 code。 | 看 `err.code`。 |\n\nSDK **不会自动重试**。`err.retryable` 告诉你重试是否可能成功，退避由你自己实现。\n\n```ts\nimport {\n  EAKDelegationRequiredError,\n  EAKPermissionDeniedError,\n  EAKRateLimitError,\n  EAKTimeoutError,\n  EAKTokenExpiredError,\n  EAKUpstreamError,\n} from \"@eazo/eak\";\n\ntry {\n  await eak.webSearch.run({ token, prompt: \"EAK SDK\" });\n} catch (error) {\n  if (\n    error instanceof EAKPermissionDeniedError ||\n    error instanceof EAKTokenExpiredError ||\n    error instanceof EAKDelegationRequiredError\n  ) {\n    // 重新 mint delegation token（补上缺失 scope / 刷新过期）后重试。\n  }\n\n  if (\n    error instanceof EAKRateLimitError ||\n    error instanceof EAKTimeoutError ||\n    error instanceof EAKUpstreamError\n  ) {\n    // 瞬时错误——`error.retryable` 为 true 时退避重试。\n  }\n\n  throw error;\n}\n```\n\n常见首次接入错误：\n\n| 错误 | 含义 | 下一步 |\n| --- | --- | --- |\n| `agent must be a string` | 当前线上 delegation API 期望 `agent` 是字符串 ID。 | 使用 `agent: \"memory-agent\"`，不要传对象。 |\n| `eak.delegation.user_not_bound` | `userId` 不属于该 EAK credential 绑定的 GenAuth userpool。 | 使用 `currentUser` 返回的真实用户 ID，或确认用户来自同一个绑定 userpool。 |\n| `eak.genauth.userpool_binding_missing` | AK/SK 没有绑定 GenAuth userpool，`genauth.users.*` 无法换取 management token。 | 先把 EAK credential 绑定到目标 GenAuth userpool。 |\n| `eak.genauth.userpool_owner_missing` | 绑定的 GenAuth userpool 找不到可用于签发 management token 的 owner 用户。 | 修复 GenAuth userpool owner 数据或绑定。 |\n| `eak.token_exchange.upstream_failed` 且包含 `unauthorized_client` 或 `grant_type is not enabled` | Delegation 已成功，但 managed delegation app 缺少 token-exchange grant，或租户绑定发生漂移。 | 先修复 managed delegation app 绑定，再调用 GUMem 或 WebAgent 产品能力。 |\n| `delegation.required` | GUMem/WebAgent 调用没有传 `token`。 | 把 `delegation.data.token` 传给产品能力方法。 |\n| `direct delegation token deprecated` | 应用直接把 EAK delegation token 打到了产品服务。 | 通过 SDK 调产品能力，让 SDK 在内部完成 token exchange。 |\n\n## 安全建议\n\n- AK/SK 只保存在可信服务端。\n- 不要把 delegation token 暴露给不可信客户端。\n- 每次 Agent 行动只申请必要 scope。\n- 浏览器接管、站点登录、长期监控、敏感产物访问优先使用 `interactive`。\n- 在业务日志中记录 `auditId`、`requestId`、`traceId`，方便后续审计。\n- 如果怀疑 AK/SK 泄露，应在 EAK Console 中轮换密钥。\n\n## License\n\nMIT\n","readmeFilename":"README.zh-CN.md"}