{"_id":"@awesomate/platform-sdk","_rev":"10-109638d8d9a39f98c7b22710b32dd1e7","name":"@awesomate/platform-sdk","dist-tags":{"latest":"0.9.0"},"versions":{"0.1.0":{"name":"@awesomate/platform-sdk","version":"0.1.0","license":"UNLICENSED","_id":"@awesomate/platform-sdk@0.1.0","maintainers":[{"name":"awesomate","email":"andrew@itmooti.com"}],"homepage":"https://github.com/itmooti/platform#readme","bugs":{"url":"https://github.com/itmooti/platform/issues"},"dist":{"shasum":"f16495f47d80ef8051c9b217e0c610a7430848b8","tarball":"https://registry.npmjs.org/@awesomate/platform-sdk/-/platform-sdk-0.1.0.tgz","fileCount":45,"integrity":"sha512-ycma1GTJqJqmUNmyhMhlwwKdyz23v9z/Fc5iqM030PuU2Dc3d60Vrx6V9wqSSevSKSRiv++NFqnP/YrUlGN+OQ==","signatures":[{"sig":"MEYCIQDVm65YVEt96reFKoybQoxarYyq4wvkOssu7VOWpcR+KgIhANzdoYajROs11sAvp9VVk/C02H6JWoZ17HS9DPQqJcHE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":188519},"main":"./dist/cjs/index.js","type":"module","_from":"file:awesomate-platform-sdk-0.1.0.tgz","types":"./dist/esm/index.d.ts","module":"./dist/esm/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/esm/index.d.ts","default":"./dist/esm/index.js"},"require":{"types":"./dist/cjs/index.d.ts","default":"./dist/cjs/index.js"}}},"scripts":{"lint":"tsc --noEmit -p tsconfig.json","test":"vitest run","build":"tsc -p tsconfig.json && tsc -p tsconfig.cjs.json && echo '{\"type\":\"commonjs\"}' > dist/cjs/package.json"},"_npmUser":{"name":"awesomate","email":"andrew@itmooti.com"},"_resolved":"/tmp/38e7700157281278e5fddedd5c8b0e51/awesomate-platform-sdk-0.1.0.tgz","_integrity":"sha512-ycma1GTJqJqmUNmyhMhlwwKdyz23v9z/Fc5iqM030PuU2Dc3d60Vrx6V9wqSSevSKSRiv++NFqnP/YrUlGN+OQ==","repository":{"url":"git+https://github.com/itmooti/platform.git","type":"git","directory":"packages/sdk"},"_npmVersion":"10.9.8","description":"Typed client for the Awesomate platform /v1 API — tenant API (answer, query, media, ingest, data) and the hub service channel. Browser + Node, no dependencies.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.1.11","typescript":"5.9.2","@types/node":"22.20.1"},"_npmOperationalInternal":{"tmp":"tmp/platform-sdk_0.1.0_1787987407514_0.5263604063549545","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@awesomate/platform-sdk","version":"0.2.0","license":"UNLICENSED","_id":"@awesomate/platform-sdk@0.2.0","maintainers":[{"name":"awesomate","email":"andrew@itmooti.com"}],"homepage":"https://github.com/itmooti/platform#readme","bugs":{"url":"https://github.com/itmooti/platform/issues"},"dist":{"shasum":"35e29c2da6e4159aafd0e97ebbbbed2cbcc7568f","tarball":"https://registry.npmjs.org/@awesomate/platform-sdk/-/platform-sdk-0.2.0.tgz","fileCount":45,"integrity":"sha512-irV4kmE2U0VlJKY86p8bAqRhHyRljdOn7OarIxt4DUYP+fGqIqCJWoj0IwYbP/E+NU/TSBrNhN0EZ9YTIKwFbw==","signatures":[{"sig":"MEQCIENWniz1P+8M+1VGo/23jqtLclDJHwnhmev+8XUTSppJAiA5724KcP3+hBY2q0tgR2A301a25fqWq92zzgn6boqeIg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":213416},"main":"./dist/cjs/index.js","type":"module","_from":"file:awesomate-platform-sdk-0.2.0.tgz","types":"./dist/esm/index.d.ts","module":"./dist/esm/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/esm/index.d.ts","default":"./dist/esm/index.js"},"require":{"types":"./dist/cjs/index.d.ts","default":"./dist/cjs/index.js"}}},"scripts":{"lint":"tsc --noEmit -p tsconfig.json","test":"vitest run","build":"tsc -p tsconfig.json && tsc -p tsconfig.cjs.json && echo '{\"type\":\"commonjs\"}' > dist/cjs/package.json"},"_npmUser":{"name":"awesomate","email":"andrew@itmooti.com"},"_resolved":"/tmp/66c89c40cea2f3b1075dcfac719c5dda/awesomate-platform-sdk-0.2.0.tgz","_integrity":"sha512-irV4kmE2U0VlJKY86p8bAqRhHyRljdOn7OarIxt4DUYP+fGqIqCJWoj0IwYbP/E+NU/TSBrNhN0EZ9YTIKwFbw==","repository":{"url":"git+https://github.com/itmooti/platform.git","type":"git","directory":"packages/sdk"},"_npmVersion":"10.9.8","description":"Typed client for the Awesomate platform /v1 API — tenant API (answer, query, media, ingest, data) and the hub service channel. Browser + Node, no dependencies.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.1.11","typescript":"5.9.2","@types/node":"22.20.1"},"_npmOperationalInternal":{"tmp":"tmp/platform-sdk_0.2.0_1787991783400_0.5719371265343358","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@awesomate/platform-sdk","version":"0.3.0","license":"UNLICENSED","_id":"@awesomate/platform-sdk@0.3.0","maintainers":[{"name":"awesomate","email":"andrew@itmooti.com"}],"homepage":"https://github.com/itmooti/platform#readme","bugs":{"url":"https://github.com/itmooti/platform/issues"},"dist":{"shasum":"593203ea05cfd80819d01d5be6d6f8584e36241b","tarball":"https://registry.npmjs.org/@awesomate/platform-sdk/-/platform-sdk-0.3.0.tgz","fileCount":45,"integrity":"sha512-Mq3YCKctqhovcjIX4omLBk3CYyoWdkzgT+xvOXw0nVZnp4GYBFKH0jTOh2ScWirWVElANTl8JxxbgluGo41yjw==","signatures":[{"sig":"MEYCIQCU7ggn3ZOI5hwof1a2hvnE3BnW8nHoj5DKvAbl9MQh3QIhAMHheo5RyVbyen0jNDiMhbc8rFKZEcM9xS67GCgviz4G","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":227560},"main":"./dist/cjs/index.js","type":"module","_from":"file:awesomate-platform-sdk-0.3.0.tgz","types":"./dist/esm/index.d.ts","module":"./dist/esm/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/esm/index.d.ts","default":"./dist/esm/index.js"},"require":{"types":"./dist/cjs/index.d.ts","default":"./dist/cjs/index.js"}}},"scripts":{"lint":"tsc --noEmit -p tsconfig.json","test":"vitest run","build":"tsc -p tsconfig.json && tsc -p tsconfig.cjs.json && echo '{\"type\":\"commonjs\"}' > dist/cjs/package.json"},"_npmUser":{"name":"awesomate","email":"andrew@itmooti.com"},"_resolved":"/tmp/7dcd7b61a674cc6c1e050ca0002b3fb6/awesomate-platform-sdk-0.3.0.tgz","_integrity":"sha512-Mq3YCKctqhovcjIX4omLBk3CYyoWdkzgT+xvOXw0nVZnp4GYBFKH0jTOh2ScWirWVElANTl8JxxbgluGo41yjw==","repository":{"url":"git+https://github.com/itmooti/platform.git","type":"git","directory":"packages/sdk"},"_npmVersion":"10.9.8","description":"Typed client for the Awesomate platform /v1 API — tenant API (answer, query, media, ingest, data) and the hub service channel. Browser + Node, no dependencies.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.1.11","typescript":"5.9.2","@types/node":"22.20.1"},"_npmOperationalInternal":{"tmp":"tmp/platform-sdk_0.3.0_1788006185764_0.7000106873144145","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@awesomate/platform-sdk","version":"0.3.1","license":"UNLICENSED","_id":"@awesomate/platform-sdk@0.3.1","maintainers":[{"name":"awesomate","email":"andrew@itmooti.com"}],"homepage":"https://github.com/itmooti/platform#readme","bugs":{"url":"https://github.com/itmooti/platform/issues"},"dist":{"shasum":"4866268a80199b6884e668927ab220197459062f","tarball":"https://registry.npmjs.org/@awesomate/platform-sdk/-/platform-sdk-0.3.1.tgz","fileCount":45,"integrity":"sha512-eAA1j5e6OTh0mhz1SY+maAkVkY2cGaZmfrMsQjDaFTrGXrK1bPXcI7WKeqPbS2piMwsDQdAqJLUsIxj0S+lbXQ==","signatures":[{"sig":"MEQCIHWcIIbgOqHDT80rKjEjkrr3QBGhcXIyaDO6yowwvJvmAiAYco2FSNCyNgS03krkjlg/TifWCRfuzIAMRrfLf7wMeQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":228916},"main":"./dist/cjs/index.js","type":"module","_from":"file:awesomate-platform-sdk-0.3.1.tgz","types":"./dist/esm/index.d.ts","module":"./dist/esm/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/esm/index.d.ts","default":"./dist/esm/index.js"},"require":{"types":"./dist/cjs/index.d.ts","default":"./dist/cjs/index.js"}}},"scripts":{"lint":"tsc --noEmit -p tsconfig.json","test":"vitest run","build":"tsc -p tsconfig.json && tsc -p tsconfig.cjs.json && echo '{\"type\":\"commonjs\"}' > dist/cjs/package.json"},"_npmUser":{"name":"awesomate","email":"andrew@itmooti.com"},"_resolved":"/tmp/45eb3faf08607d5d9045c26b4783e525/awesomate-platform-sdk-0.3.1.tgz","_integrity":"sha512-eAA1j5e6OTh0mhz1SY+maAkVkY2cGaZmfrMsQjDaFTrGXrK1bPXcI7WKeqPbS2piMwsDQdAqJLUsIxj0S+lbXQ==","repository":{"url":"git+https://github.com/itmooti/platform.git","type":"git","directory":"packages/sdk"},"_npmVersion":"10.9.8","description":"Typed client for the Awesomate platform /v1 API — tenant API (answer, query, media, ingest, data) and the hub service channel. Browser + Node, no dependencies.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.1.11","typescript":"5.9.2","@types/node":"22.20.1"},"_npmOperationalInternal":{"tmp":"tmp/platform-sdk_0.3.1_1788022890718_0.4788206970835349","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@awesomate/platform-sdk","version":"0.4.0","license":"UNLICENSED","_id":"@awesomate/platform-sdk@0.4.0","maintainers":[{"name":"awesomate","email":"andrew@itmooti.com"}],"homepage":"https://github.com/itmooti/platform#readme","bugs":{"url":"https://github.com/itmooti/platform/issues"},"dist":{"shasum":"67b78bf2bcebe187d34527119c66340d3e106ec9","tarball":"https://registry.npmjs.org/@awesomate/platform-sdk/-/platform-sdk-0.4.0.tgz","fileCount":45,"integrity":"sha512-Qyp9Z0XRZoGN2euy/Sc8Ch7HPIcx+IOwOO63Mt8lciUpSrR2DnH3FaVI3ljUdhBmuvTdi+3D58wRluIulDDgjg==","signatures":[{"sig":"MEYCIQDIeD8lEiuNx5Tbs1G5CJqqG1qlaeQKN2cv/JC+akcJtgIhAMVuboIRVmA9DGmy7ODjDTxfZvTXrpGxhyPbJHQuaJc2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":256140},"main":"./dist/cjs/index.js","type":"module","_from":"file:awesomate-platform-sdk-0.4.0.tgz","types":"./dist/esm/index.d.ts","module":"./dist/esm/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/esm/index.d.ts","default":"./dist/esm/index.js"},"require":{"types":"./dist/cjs/index.d.ts","default":"./dist/cjs/index.js"}}},"scripts":{"lint":"tsc --noEmit -p tsconfig.json","test":"vitest run","build":"tsc -p tsconfig.json && tsc -p tsconfig.cjs.json && echo '{\"type\":\"commonjs\"}' > dist/cjs/package.json"},"_npmUser":{"name":"awesomate","email":"andrew@itmooti.com"},"_resolved":"/tmp/4cd901bc4c4415a7c83668ff9193e8b4/awesomate-platform-sdk-0.4.0.tgz","_integrity":"sha512-Qyp9Z0XRZoGN2euy/Sc8Ch7HPIcx+IOwOO63Mt8lciUpSrR2DnH3FaVI3ljUdhBmuvTdi+3D58wRluIulDDgjg==","repository":{"url":"git+https://github.com/itmooti/platform.git","type":"git","directory":"packages/sdk"},"_npmVersion":"10.9.8","description":"Typed client for the Awesomate platform /v1 API — tenant API (answer, query, media, ingest, data) and the hub service channel. Browser + Node, no dependencies.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.1.11","typescript":"5.9.2","@types/node":"22.20.1"},"_npmOperationalInternal":{"tmp":"tmp/platform-sdk_0.4.0_1788090749792_0.8563835377184688","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@awesomate/platform-sdk","version":"0.5.0","license":"UNLICENSED","_id":"@awesomate/platform-sdk@0.5.0","maintainers":[{"name":"awesomate","email":"andrew@itmooti.com"}],"homepage":"https://github.com/itmooti/platform#readme","bugs":{"url":"https://github.com/itmooti/platform/issues"},"dist":{"shasum":"540c164db88d747801825e82e054ab4fa531d89a","tarball":"https://registry.npmjs.org/@awesomate/platform-sdk/-/platform-sdk-0.5.0.tgz","fileCount":45,"integrity":"sha512-8B74P7jpObWFIsA9ki1ckpEluuZ9krh33Ev42OYFQrEfnyf8Msy9kDkM5S6CHBepIXMpsIBnB4k3eZlFqAEkIA==","signatures":[{"sig":"MEQCIFPu0Waj2YRyN0MP3m1V/LV0gw4X/e2Ktuhh51S2pAtsAiBqu0e3K2pTtclCz7kyNG5R4CUxHDPJxCOYEsJqNUsjOQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":270811},"main":"./dist/cjs/index.js","type":"module","_from":"file:awesomate-platform-sdk-0.5.0.tgz","types":"./dist/esm/index.d.ts","module":"./dist/esm/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/esm/index.d.ts","default":"./dist/esm/index.js"},"require":{"types":"./dist/cjs/index.d.ts","default":"./dist/cjs/index.js"}}},"scripts":{"lint":"tsc --noEmit -p tsconfig.json","test":"vitest run","build":"tsc -p tsconfig.json && tsc -p tsconfig.cjs.json && echo '{\"type\":\"commonjs\"}' > dist/cjs/package.json"},"_npmUser":{"name":"awesomate","email":"andrew@itmooti.com"},"_resolved":"/tmp/4dfd5643a5acbb7a01090e363d671953/awesomate-platform-sdk-0.5.0.tgz","_integrity":"sha512-8B74P7jpObWFIsA9ki1ckpEluuZ9krh33Ev42OYFQrEfnyf8Msy9kDkM5S6CHBepIXMpsIBnB4k3eZlFqAEkIA==","repository":{"url":"git+https://github.com/itmooti/platform.git","type":"git","directory":"packages/sdk"},"_npmVersion":"10.9.8","description":"Typed client for the Awesomate platform /v1 API — tenant API (answer, query, media, ingest, data) and the hub service channel. Browser + Node, no dependencies.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.1.11","typescript":"5.9.2","@types/node":"22.20.1"},"_npmOperationalInternal":{"tmp":"tmp/platform-sdk_0.5.0_1788398587569_0.7560602737079087","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@awesomate/platform-sdk","version":"0.6.0","license":"UNLICENSED","_id":"@awesomate/platform-sdk@0.6.0","maintainers":[{"name":"awesomate","email":"andrew@itmooti.com"}],"homepage":"https://github.com/itmooti/platform#readme","bugs":{"url":"https://github.com/itmooti/platform/issues"},"dist":{"shasum":"0229728a098b86db4077abd1a8bf527e72d19f30","tarball":"https://registry.npmjs.org/@awesomate/platform-sdk/-/platform-sdk-0.6.0.tgz","fileCount":45,"integrity":"sha512-aBc3dBLXKqX7QJNO4ok+cF5bL5qk/1tnVompd9Xx3LNKrAjqQOR1M8ThdnyxHeQmM74x2b0Sy9v7DCFEAUnsYw==","signatures":[{"sig":"MEUCIQDDBKFps0zCa4ueRIIqjrGJ7xlaqP5tD9dtWwASIuX8aQIgI1Xbw0+vkVIQsPzJZJw0R5SRpmS+xOHUfPuFwtzUn1Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":276357},"main":"./dist/cjs/index.js","type":"module","_from":"file:awesomate-platform-sdk-0.6.0.tgz","types":"./dist/esm/index.d.ts","module":"./dist/esm/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/esm/index.d.ts","default":"./dist/esm/index.js"},"require":{"types":"./dist/cjs/index.d.ts","default":"./dist/cjs/index.js"}}},"scripts":{"lint":"tsc --noEmit -p tsconfig.json","test":"vitest run","build":"tsc -p tsconfig.json && tsc -p tsconfig.cjs.json && echo '{\"type\":\"commonjs\"}' > dist/cjs/package.json"},"_npmUser":{"name":"awesomate","email":"andrew@itmooti.com"},"_resolved":"/tmp/e18cf7065bf93f1d4f8dfd3a2a6e3c05/awesomate-platform-sdk-0.6.0.tgz","_integrity":"sha512-aBc3dBLXKqX7QJNO4ok+cF5bL5qk/1tnVompd9Xx3LNKrAjqQOR1M8ThdnyxHeQmM74x2b0Sy9v7DCFEAUnsYw==","repository":{"url":"git+https://github.com/itmooti/platform.git","type":"git","directory":"packages/sdk"},"_npmVersion":"10.9.8","description":"Typed client for the Awesomate platform /v1 API — tenant API (answer, query, media, ingest, data) and the hub service channel. Browser + Node, no dependencies.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.1.11","typescript":"5.9.2","@types/node":"22.20.1"},"_npmOperationalInternal":{"tmp":"tmp/platform-sdk_0.6.0_1788847050328_0.31108202380212346","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@awesomate/platform-sdk","version":"0.7.0","license":"UNLICENSED","_id":"@awesomate/platform-sdk@0.7.0","maintainers":[{"name":"awesomate","email":"andrew@itmooti.com"}],"homepage":"https://github.com/itmooti/platform#readme","bugs":{"url":"https://github.com/itmooti/platform/issues"},"dist":{"shasum":"52d5e19a944ba52bd2b158afd6fb0bf383ecb1db","tarball":"https://registry.npmjs.org/@awesomate/platform-sdk/-/platform-sdk-0.7.0.tgz","fileCount":45,"integrity":"sha512-Kp61dMBFSW07cg4wycFPKo1y0vmQv1sLw6KwKv8IoPf5CSrCFySbTtvWA854OjxyChIzwvukwMoJJ1hlSFZjCw==","signatures":[{"sig":"MEUCICsALcyxBcz6pYxWdyb/A2DbTW9S2qgqEr/zUcho1ayUAiEAywsNrpcqm3cmACUryPiIDbmmv8ptQF9rcCreH4YG/Wg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":289715},"main":"./dist/cjs/index.js","type":"module","_from":"file:awesomate-platform-sdk-0.7.0.tgz","types":"./dist/esm/index.d.ts","module":"./dist/esm/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/esm/index.d.ts","default":"./dist/esm/index.js"},"require":{"types":"./dist/cjs/index.d.ts","default":"./dist/cjs/index.js"}}},"scripts":{"lint":"tsc --noEmit -p tsconfig.json","test":"vitest run","build":"tsc -p tsconfig.json && tsc -p tsconfig.cjs.json && echo '{\"type\":\"commonjs\"}' > dist/cjs/package.json"},"_npmUser":{"name":"awesomate","email":"andrew@itmooti.com"},"_resolved":"/tmp/d29e5ed1d897517c2ad557cb213371f5/awesomate-platform-sdk-0.7.0.tgz","_integrity":"sha512-Kp61dMBFSW07cg4wycFPKo1y0vmQv1sLw6KwKv8IoPf5CSrCFySbTtvWA854OjxyChIzwvukwMoJJ1hlSFZjCw==","repository":{"url":"git+https://github.com/itmooti/platform.git","type":"git","directory":"packages/sdk"},"_npmVersion":"10.9.8","description":"Typed client for the Awesomate platform /v1 API — tenant API (answer, query, media, ingest, data) and the hub service channel. Browser + Node, no dependencies.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.1.11","typescript":"5.9.2","@types/node":"22.20.1"},"_npmOperationalInternal":{"tmp":"tmp/platform-sdk_0.7.0_1788955260128_0.7951679021962359","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@awesomate/platform-sdk","version":"0.8.0","license":"UNLICENSED","_id":"@awesomate/platform-sdk@0.8.0","maintainers":[{"name":"awesomate","email":"andrew@itmooti.com"}],"homepage":"https://github.com/itmooti/platform#readme","bugs":{"url":"https://github.com/itmooti/platform/issues"},"dist":{"shasum":"3ba28a3a289d2f2470380949bbc8bf4b4405e6bf","tarball":"https://registry.npmjs.org/@awesomate/platform-sdk/-/platform-sdk-0.8.0.tgz","fileCount":45,"integrity":"sha512-BAPfiLYf1z+zY9HAcCl3tGwi1L10xb9rKB24Z6xZvXv+qFIHShijgkHjQ82F/jn15n0zCfLxCs7IldAuohfG7g==","signatures":[{"sig":"MEUCIQCUSLv1o5aB5oK7Z3aiAD16l221OV96fHPKMQbgz7Y+7AIgXVhqkXetY0JKc0Qy8IjNNp51SocuvQDcil+QMNWCRUo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":291719},"main":"./dist/cjs/index.js","type":"module","_from":"file:awesomate-platform-sdk-0.8.0.tgz","types":"./dist/esm/index.d.ts","module":"./dist/esm/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/esm/index.d.ts","default":"./dist/esm/index.js"},"require":{"types":"./dist/cjs/index.d.ts","default":"./dist/cjs/index.js"}}},"scripts":{"lint":"tsc --noEmit -p tsconfig.json","test":"vitest run","build":"tsc -p tsconfig.json && tsc -p tsconfig.cjs.json && echo '{\"type\":\"commonjs\"}' > dist/cjs/package.json"},"_npmUser":{"name":"awesomate","email":"andrew@itmooti.com"},"_resolved":"/tmp/5cedd7d65395711bc88aec0c0393e4a2/awesomate-platform-sdk-0.8.0.tgz","_integrity":"sha512-BAPfiLYf1z+zY9HAcCl3tGwi1L10xb9rKB24Z6xZvXv+qFIHShijgkHjQ82F/jn15n0zCfLxCs7IldAuohfG7g==","repository":{"url":"git+https://github.com/itmooti/platform.git","type":"git","directory":"packages/sdk"},"_npmVersion":"10.9.8","description":"Typed client for the Awesomate platform /v1 API — tenant API (answer, query, media, ingest, data) and the hub service channel. Browser + Node, no dependencies.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.1.11","typescript":"5.9.2","@types/node":"22.20.1"},"_npmOperationalInternal":{"tmp":"tmp/platform-sdk_0.8.0_1789007677269_0.2339901699282989","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"_id":"@awesomate/platform-sdk@0.9.0","bugs":{"url":"https://github.com/itmooti/platform/issues"},"dist":{"shasum":"7120c2bd485918889f95df58765b514e84aeda7f","tarball":"https://registry.npmjs.org/@awesomate/platform-sdk/-/platform-sdk-0.9.0.tgz","fileCount":45,"integrity":"sha512-qtfGx27i4avUTRajNqqTpXRtQK7WQDQb7Pa4qZ1uO42ybKKGqQozSOUQywRTf4x3Wnss/DOOJHPTaa6m6JtwOg==","signatures":[{"sig":"MEQCIDPS+ZWobNxOfFkaNbJxnzW8D0VlhDH3PHeabu9q9N3bAiAFWm1H0QT8MtnodCllijSE4KSYSN85YeMMV828bgQouw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIC88sIZHmvIUjKPOFYkQcZvZQBF9P9EJqLe7vVJ/4+wiAiEAj0Ie/FJtkrwTDKKJXiPBDjyXVsoJEhDnKprVmbKps0Q="}],"unpackedSize":295155},"main":"./dist/cjs/index.js","name":"@awesomate/platform-sdk","type":"module","_from":"file:awesomate-platform-sdk-0.9.0.tgz","types":"./dist/esm/index.d.ts","module":"./dist/esm/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/esm/index.d.ts","default":"./dist/esm/index.js"},"require":{"types":"./dist/cjs/index.d.ts","default":"./dist/cjs/index.js"}}},"license":"UNLICENSED","scripts":{"lint":"tsc --noEmit -p tsconfig.json","test":"vitest run","build":"tsc -p tsconfig.json && tsc -p tsconfig.cjs.json && echo '{\"type\":\"commonjs\"}' > dist/cjs/package.json"},"version":"0.9.0","_npmUser":{"name":"awesomate","email":"andrew@itmooti.com"},"homepage":"https://github.com/itmooti/platform#readme","_resolved":"/tmp/abfcc0add8d16da5f93daf85ca73c962/awesomate-platform-sdk-0.9.0.tgz","_integrity":"sha512-qtfGx27i4avUTRajNqqTpXRtQK7WQDQb7Pa4qZ1uO42ybKKGqQozSOUQywRTf4x3Wnss/DOOJHPTaa6m6JtwOg==","repository":{"url":"git+https://github.com/itmooti/platform.git","type":"git","directory":"packages/sdk"},"_npmVersion":"10.9.8","description":"Typed client for the Awesomate platform /v1 API — tenant API (answer, query, media, ingest, data) and the hub service channel. Browser + Node, no dependencies.","directories":{},"maintainers":[{"name":"awesomate","email":"andrew@itmooti.com"}],"sideEffects":false,"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.1.11","typescript":"5.9.2","@types/node":"22.20.1"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/platform-sdk_0.9.0_1790830535589_0.015117831044342056"}}},"time":{"created":"2026-08-29T07:10:07.332Z","modified":"2026-10-01T04:55:35.829Z","0.1.0":"2026-08-29T07:10:07.637Z","0.2.0":"2026-08-29T08:23:03.548Z","0.3.0":"2026-08-29T12:23:05.909Z","0.3.1":"2026-08-29T17:01:30.868Z","0.4.0":"2026-08-30T11:52:29.944Z","0.5.0":"2026-09-03T01:23:07.726Z","0.6.0":"2026-09-08T05:57:30.471Z","0.7.0":"2026-09-09T12:01:00.268Z","0.8.0":"2026-09-10T02:34:37.409Z","0.9.0":"2026-10-01T04:55:35.672Z"},"bugs":{"url":"https://github.com/itmooti/platform/issues"},"license":"UNLICENSED","homepage":"https://github.com/itmooti/platform#readme","repository":{"url":"git+https://github.com/itmooti/platform.git","type":"git","directory":"packages/sdk"},"description":"Typed client for the Awesomate platform /v1 API — tenant API (answer, query, media, ingest, data) and the hub service channel. Browser + Node, no dependencies.","maintainers":[{"name":"awesomate","email":"andrew@itmooti.com"}],"readme":"# @awesomate/platform-sdk\n\nTyped client for the Awesomate platform `/v1` API ([docs/api-v1.md](../../docs/api-v1.md)).\nZero dependencies; runs in browsers and Node ≥ 20 (ESM and CommonJS builds). Apps talk to\nthe platform only through this — never through `@platform/*` packages, Postgres, Meilisearch\nor Ollama ([docs/design/app-layer-separation.md](../../docs/design/app-layer-separation.md)).\n\nTwo clients, one error contract:\n\n| Client | Auth | Who uses it |\n|---|---|---|\n| `PlatformClient` | a tenant key — `amk_q_` (server), `amk_p_` (browser, origin-locked), `amk_i_` (ingest), `amk_u_` (user token) | apps, n8n, widgets, the MCP server |\n| `ServiceClient` | `amk_s_` key + HMAC (`X-Awm-*` headers) | the hub only |\n\nEvery call resolves to a `PlatformResult<T>` and never throws on the request path:\n\n```ts\ntype PlatformResult<T> =\n  | { ok: true; status: number; data: T }\n  | { ok: false; status: number; error: string; message?: string; requestId?: string; retryAfter?: string } // 4xx envelope\n  | { ok: false; reason: \"unavailable\" };                                                                // 5xx, timeout, network, no config\n```\n\n## Tenant API\n\n```ts\nimport { PlatformClient } from \"@awesomate/platform-sdk\";\n\nconst platform = new PlatformClient({ baseUrl: \"https://knowledge.awesomate.ai\", apiKey: process.env.AMK_KEY! });\n\n// Validated answer, JSON\nconst r = await platform.answer({ question: \"What does chapter 3 say about pricing?\", session: \"user-42\", agent: \"knowledge\" });\nif (r.ok) console.log(r.data.answer_plain, r.data.sources);\n\n// Streamed: sources first, then sentences that already passed the citation gate, then meta\nconst s = await platform.answerStream({ question: \"…\", session: \"user-42\" });\nif (s.ok) {\n  for await (const e of s.events()) {\n    if (e.event === \"answer\") process.stdout.write(e.text);\n    else if (e.event === \"meta\") console.log(\"\\n\", e.meta.status, e.meta.repaired);\n  }\n}\n// …or pipe `s.body` (the raw text/event-stream) straight to your own response.\n\n// Raw passages, identity, feedback\nawait platform.query({ q: \"webinar funnels\", dataset: \"social\", limit: 5 });\nawait platform.whoami();\nawait platform.feedback({ session: \"user-42\", ref: 1, rating: \"up\" });\n\n// Business data\nawait platform.queryData({ dataset: \"ds-pnl\", measures: [{ column: \"c_amount\", agg: \"sum\" }], time: { preset: \"fy_to_date\" } });\n\n// Dataset routes (gated by the tenant's enabled datasets) — what the social console reads\nawait platform.social.summary();\nawait platform.social.topPosts({ metric: \"likes\", limit: 15, year: 2024 });\nawait platform.social.search({ q: \"webinar funnels\", mode: \"hybrid\" });\nawait platform.content.search({ q: \"pricing\", kind: \"video\" });\nawait platform.content.people();                         // covers are presigned URLs → <img src>\nawait platform.content.evidence(\"video-q3#t=612.0-640.5\"); // a citation → media moment / page render\nawait platform.content.collections();\n```\n\nIngestion with an `amk_i_` key: `createUpload → uploadBytes(put_url, bytes) → completeUpload →\ncreateJob({kind, upload_id}, {idempotencyKey})`, then `getJob` / `listJobs` / `cancelJob` / `retryJob`.\n\nIn a browser, use an `amk_p_` key minted with `allowed_origins`; the platform refuses it from any\nother Origin. Never ship a `q` or `i` key to a browser.\n\n## Service channel (hub)\n\n```ts\nimport { ServiceClient, countTenantSources } from \"@awesomate/platform-sdk\";\n\nconst admin = new ServiceClient({\n  adminUrl: process.env.KNOWLEDGE_PLATFORM_ADMIN_URL!,\n  serviceKey: process.env.KNOWLEDGE_PLATFORM_SERVICE_KEY!,\n  hmacSecret: process.env.KNOWLEDGE_PLATFORM_HMAC_SECRET!,\n});\n\nawait admin.upsertTenant(\"dale\", { contact_id: 42, display_name: \"Dale\", plan: \"pro\" }, `kt:dale:${version}`);\nconst minted = await admin.mintKey(\"dale\", { class: \"p\", name: \"social console\", allowed_origins: [\"https://social.awesomate.ai\"] }, \"key:dale:console:1\");\n// a website chatbot key with its own ceilings: 30 answers/min for the key, 1,000 a month\n// (q and p keys only). The platform answers 429 monthly_cap_exceeded once the month is spent.\nconst capped = await admin.mintKey(\"dale\", { class: \"p\", name: \"site chatbot\", agent_id, allowed_origins: [\"https://dale.example\"], per_minute_cap: 30, monthly_answer_cap: 1000 }, \"key:dale:chatbot:1\");\n// minted.data.key is returned exactly once — hand it to its destination and discard.\n```\n\nHow each agent is answering, in bands over a window (counts only, nothing a visitor typed):\n\n```ts\nconst rates = await admin.getAnswerRates(\"dale\", 30);\n// rates.data.agents: [{ agent_id, answered, partly, not_answered, errors, not_answered_by }]\n```\n\nEvery mutation takes an idempotency key (≤ 96 chars); replays return the platform's stored\nresponse. Reads carry none. `uploadBytes` PUTs to the platform's `put_url` verbatim, with no\nservice headers — the URL is the credential.\n\n### Form fields from scanned documents\n\nA scanned form's values are available as data, not only as an answer. Fields are extracted at\ningest when a page goes through vision, so this reads what is already stored:\n\n```ts\nconst cards = await admin.listFieldsCards(\"dale\");          // which sources have fields\nconst form = await admin.sourceFields(\"dale\", sourceId);    // one form's values\nif (form.ok) {\n  const licence = form.data.fields.find((f) => f.label.startsWith(\"Licence\"))?.value;\n  const residential = form.data.fields.find((f) => f.label === \"Residential\")?.checked;\n  // form.data.card is the exact text the agent reads, if you need to show what grounded an answer\n}\n```\n\n`checked` is `null` for a label/value pair and `true`/`false` only for a checkbox, so an unticked\nbox is distinguishable from something that is not a checkbox at all. A field with an empty\n`value` is kept on purpose: it says the field exists and is blank. A `404` means the source has\nno fields card, either because it has no digest or because its digest is a prose overview; the\nmessage says which. Only pages that went through vision produce fields, and extraction happens\nat ingest, so a document ingested before 2026-09-09 needs re-ingesting to get one.\n\n### Tenant limits and pausing on credit\n\n```ts\n// nested sections merge per key: this changes credit_paused and nothing else\nawait admin.patchConfig(\"dale\", { limits: { credit_paused: true } }, `credit:dale:${Date.now()}`);\n```\n\nWhile paused the platform refuses new metered jobs with `402 credit_exhausted` and no\n`Retry-After`, because waiting does not help and topping up does. Answers, search, reads,\nuploads, deletes and already-queued jobs keep working: the platform decides whether it takes on\nnew billable work, never whether a customer may ask a question. `TenantLimits` documents the\nother knobs, including `ocr_pages_per_month`, the rolling 30-day OCR ceiling.\n\n## Node streams\n\nThe SDK returns web `ReadableStream`s. In Node/Express:\n\n```ts\nimport { Readable } from \"node:stream\";\nif (s.ok) Readable.fromWeb(s.body as import(\"node:stream/web\").ReadableStream).pipe(res);\n```\n\n## Build\n\n`pnpm --filter @awesomate/platform-sdk build` emits `dist/esm` and `dist/cjs`; `test` runs vitest.\nVersion with the API it wraps: additive `/v1` changes bump the minor, `/v2` starts `1.0`.\n","readmeFilename":"README.md"}