{"_id":"@abto-app/event","_rev":"20-f6b290361f9a39346535e670aa8aa54a","name":"@abto-app/event","dist-tags":{"latest":"1.1.0"},"versions":{"0.1.0":{"name":"@abto-app/event","version":"0.1.0","keywords":["abto","analytics","autocapture","browser","llm","observability"],"license":"MIT","_id":"@abto-app/event@0.1.0","maintainers":[{"name":"turtlehwan","email":"turtlehwan@gmail.com"},{"name":"wejust.greedy","email":"wejust.greedy@gmail.com"}],"homepage":"https://docs.abto.app/sdk/javascript/browser/","bugs":{"url":"https://github.com/greedy-co/abto-sdk/issues"},"dist":{"shasum":"73360532e9da71f32070c0ca2f742e64bed77304","tarball":"https://registry.npmjs.org/@abto-app/event/-/event-0.1.0.tgz","fileCount":63,"integrity":"sha512-hSN6kVNBUUd7tpVwwi3AI0KgR3yXmcaCw4d92QgtvKu/cQ/8ZAGzzzWTzpRCJO26w3FZ4GMNLnF2RwxctM1PUA==","signatures":[{"sig":"MEUCIQDqig77hlxQ9A8JOd+b72iLATilUphd/AJEkCY/egXmgwIgIJxOkKOXr0ufRYKRV00OwhZr3ZVPiHyzfn6DPcgmJeo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":252007},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"npm run clean && tsc","clean":"rm -rf dist","prepack":"npm run build","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run test && npm run build"},"_npmUser":{"name":"turtlehwan","email":"turtlehwan@gmail.com"},"repository":{"url":"git+https://github.com/greedy-co/abto-sdk.git","type":"git","directory":"packages/browser/javascript"},"_npmVersion":"11.12.1","description":"ABTO Browser SDK — autocapture, typed custom events, identity, sessions, and AI trace correlation.","directories":{},"sideEffects":false,"_nodeVersion":"24.15.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","vitest":"^4.1.10","typescript":"^5.4.0"},"_npmOperationalInternal":{"tmp":"tmp/event_0.1.0_1785218225871_0.4819139271841977","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@abto-app/event","version":"0.1.1","keywords":["abto","analytics","autocapture","browser","llm","observability"],"license":"MIT","_id":"@abto-app/event@0.1.1","maintainers":[{"name":"turtlehwan","email":"turtlehwan@gmail.com"},{"name":"wejust.greedy","email":"wejust.greedy@gmail.com"}],"homepage":"https://docs.abto.app/sdk/javascript/browser/","bugs":{"url":"https://github.com/greedy-co/abto-sdk/issues"},"dist":{"shasum":"7e0087fcb46dc4bd1c811f707ddd98a75ec804a3","tarball":"https://registry.npmjs.org/@abto-app/event/-/event-0.1.1.tgz","fileCount":63,"integrity":"sha512-Rwxc3hqzYZFknx7uzDWYrTykCyxE0oUmeUI5lidw7Nem0/oYiHfgTcXloWjRu3zxpyZoVD149dJtHwmEL9rmHA==","signatures":[{"sig":"MEYCIQCEkxkuQpXKDPG1xFsCRUbvswisTWF3rlPsthk50oHOugIhALbJoN/gh+f/60rm0oVxq8U9r9OYcjOnRed2r1V0YGn3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@abto-app%2fevent@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":252028},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"ef5b706085d6dc465e32b4ca7d85101c651b3836","scripts":{"test":"vitest run","build":"npm run clean && tsc","clean":"rm -rf dist","prepack":"npm run build","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run test && npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ab58c578-cda7-481a-b128-ba1b58d7ec71"}},"repository":{"url":"git+https://github.com/greedy-co/abto-sdk.git","type":"git","directory":"packages/browser/javascript"},"_npmVersion":"11.18.0","description":"ABTO Browser SDK — autocapture, typed custom events, identity, sessions, and AI trace correlation.","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","vitest":"^4.1.10","typescript":"^5.4.0"},"_npmOperationalInternal":{"tmp":"tmp/event_0.1.1_1785757169094_0.4587284400182683","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@abto-app/event","version":"0.1.2","keywords":["abto","analytics","autocapture","browser","llm","observability"],"license":"MIT","_id":"@abto-app/event@0.1.2","maintainers":[{"name":"turtlehwan","email":"turtlehwan@gmail.com"},{"name":"wejust.greedy","email":"wejust.greedy@gmail.com"}],"homepage":"https://docs.abto.app/sdk/javascript/browser/","bugs":{"url":"https://github.com/greedy-co/abto-sdk/issues"},"dist":{"shasum":"a0234cbd511d5988e7aa847019bed9f44e1f2a79","tarball":"https://registry.npmjs.org/@abto-app/event/-/event-0.1.2.tgz","fileCount":63,"integrity":"sha512-44kAzEaKaBeJ5D26TGdwDt5T9yTbNN/UhdGhI/vVNc+LtiN/nSSyEOkTgArxdbzLq/OLKmnLlV6T5lw/4HwHQw==","signatures":[{"sig":"MEQCIGaYsRcId/dnplmHiFwPGCQWObva/dlvxfR6LqfLDRrZAiBKNX/Pf3s6fwwX7EG0l/CRdvYDTFXZbdmMNRO6+S7wAw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@abto-app%2fevent@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":252290},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"3bbca7b3355cba7518c248d36a9885a09601b66c","scripts":{"test":"vitest run","build":"npm run clean && tsc","clean":"rm -rf dist","prepack":"npm run build","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run test && npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ab58c578-cda7-481a-b128-ba1b58d7ec71"}},"repository":{"url":"git+https://github.com/greedy-co/abto-sdk.git","type":"git","directory":"packages/browser/javascript"},"_npmVersion":"11.18.0","description":"ABTO Browser SDK — autocapture, typed custom events, identity, sessions, and AI trace correlation.","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","vitest":"^4.1.10","typescript":"^5.4.0"},"_npmOperationalInternal":{"tmp":"tmp/event_0.1.2_1785816786758_0.7312201353096976","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@abto-app/event","version":"0.1.3","keywords":["abto","analytics","autocapture","browser","llm","observability"],"license":"MIT","_id":"@abto-app/event@0.1.3","maintainers":[{"name":"turtlehwan","email":"turtlehwan@gmail.com"},{"name":"wejust.greedy","email":"wejust.greedy@gmail.com"}],"homepage":"https://docs.abto.app/sdk/javascript/browser/","bugs":{"url":"https://github.com/greedy-co/abto-sdk/issues"},"dist":{"shasum":"8ac15b27b3609f76384b02de9de93f7dbc203a74","tarball":"https://registry.npmjs.org/@abto-app/event/-/event-0.1.3.tgz","fileCount":63,"integrity":"sha512-GosX/l9kuQynJ9tHpHky6aoMogZRJ4/NjHF3K4aDDrYL41bGRKYVcAJWxXQOlp28dZTe9n70xZuwyydq/tGktg==","signatures":[{"sig":"MEUCIDmybYTHl+3BHQdxEe1tCnRdlsJ8lC/tKDasI0Htd9HkAiEA1vZ8z9QLujjjrnKvxrh23dZ//QEjUlsIarAXgFOOYSg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@abto-app%2fevent@0.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":252382},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"c722e9170dc41501260922a00da46e4805803c4e","scripts":{"test":"vitest run","build":"npm run clean && tsc","clean":"rm -rf dist","prepack":"npm run build","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run test && npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ab58c578-cda7-481a-b128-ba1b58d7ec71"}},"repository":{"url":"git+https://github.com/greedy-co/abto-sdk.git","type":"git","directory":"packages/browser/javascript"},"_npmVersion":"11.18.0","description":"ABTO Browser SDK — autocapture, typed custom events, identity, sessions, and AI trace correlation.","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","vitest":"^4.1.10","typescript":"^5.4.0"},"_npmOperationalInternal":{"tmp":"tmp/event_0.1.3_1785830077941_0.8798817730299393","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@abto-app/event","version":"0.1.4","keywords":["abto","analytics","autocapture","browser","llm","observability"],"license":"MIT","_id":"@abto-app/event@0.1.4","maintainers":[{"name":"turtlehwan","email":"turtlehwan@gmail.com"},{"name":"wejust.greedy","email":"wejust.greedy@gmail.com"}],"homepage":"https://docs.abto.app/sdk/javascript/browser/","bugs":{"url":"https://github.com/greedy-co/abto-sdk/issues"},"dist":{"shasum":"eca280710fc8647870ce2c5edc267dd6667de667","tarball":"https://registry.npmjs.org/@abto-app/event/-/event-0.1.4.tgz","fileCount":63,"integrity":"sha512-kpBqPuWX5ytmW3iXF+4LEL7jXvtp1HNcPxybcWeO8sn8cxYRqmOnYkliluzeTMqQ+vOp6k4n6rVF2GDE0XW6sA==","signatures":[{"sig":"MEQCIGDYwwA+IQvABiFj9s+0MZKIxRZlWT9/CTnzruM/eC99AiBSLEeeC9n0rnJIWn1wLwGCXxsqzjHpizftU9tXmpVfQA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@abto-app%2fevent@0.1.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":252319},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"6b9c6b8abce3d0df4cab7ad01169cf4e28ea12c1","scripts":{"test":"vitest run","build":"npm run clean && tsc","clean":"rm -rf dist","prepack":"npm run build","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run test && npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ab58c578-cda7-481a-b128-ba1b58d7ec71"}},"repository":{"url":"git+https://github.com/greedy-co/abto-sdk.git","type":"git","directory":"packages/browser/javascript"},"_npmVersion":"11.18.0","description":"ABTO Browser SDK — autocapture, typed custom events, identity, sessions, and AI trace correlation.","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","vitest":"^4.1.10","typescript":"^5.4.0"},"_npmOperationalInternal":{"tmp":"tmp/event_0.1.4_1785916970155_0.13005435471527016","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@abto-app/event","version":"0.1.5","keywords":["abto","analytics","autocapture","browser","llm","observability"],"license":"MIT","_id":"@abto-app/event@0.1.5","maintainers":[{"name":"turtlehwan","email":"turtlehwan@gmail.com"},{"name":"wejust.greedy","email":"wejust.greedy@gmail.com"}],"homepage":"https://docs.abto.app/sdk/javascript/browser/","bugs":{"url":"https://github.com/greedy-co/abto-sdk/issues"},"dist":{"shasum":"c010e24f33cd996ce07ad6cbd6736ca273a2475c","tarball":"https://registry.npmjs.org/@abto-app/event/-/event-0.1.5.tgz","fileCount":63,"integrity":"sha512-8Zj124byMbTSI+lGI6DoKmMpoweEvbuPA4K6Aodv2KgQ6NqalW7Sly4CajicDG3FuIPgiwZbiOIWUQwlG76+sA==","signatures":[{"sig":"MEUCIG6vSbc6sDyHzVNah17K/uIMcrPsePuJr61AUFtMuxRkAiEAwxhP8vC8APTWCGr2bs3LDl388XpSC6Mms2tlMTBwXrQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@abto-app%2fevent@0.1.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":253270},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"f57fa038be846143fea5b33a4021bc35295e9f5a","scripts":{"test":"vitest run","build":"npm run clean && tsc","clean":"rm -rf dist","prepack":"npm run build","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run test && npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ab58c578-cda7-481a-b128-ba1b58d7ec71"}},"repository":{"url":"git+https://github.com/greedy-co/abto-sdk.git","type":"git","directory":"packages/browser/javascript"},"_npmVersion":"11.18.0","description":"ABTO Browser SDK — typed custom events, identity, sessions, AI trace correlation, and opt-in autocapture.","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","vitest":"^4.1.10","typescript":"^5.4.0"},"_npmOperationalInternal":{"tmp":"tmp/event_0.1.5_1787818224411_0.4990605801525514","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@abto-app/event","version":"0.1.6","keywords":["abto","analytics","autocapture","browser","llm","observability"],"license":"MIT","_id":"@abto-app/event@0.1.6","maintainers":[{"name":"turtlehwan","email":"turtlehwan@gmail.com"},{"name":"wejust.greedy","email":"wejust.greedy@gmail.com"}],"homepage":"https://docs.abto.app/sdk/javascript/browser/","bugs":{"url":"https://github.com/greedy-co/abto-sdk/issues"},"dist":{"shasum":"08c5d73c75a31ba3217b2d9645e40ef56e60d83f","tarball":"https://registry.npmjs.org/@abto-app/event/-/event-0.1.6.tgz","fileCount":63,"integrity":"sha512-nnPiV4/NELn/6ij8tT4kFvE1/71ln8MyG89fw5vO38I9RR5QIvLd5sSUTE4WjzjnvY7BFmyTbXoFY09tlGPIOg==","signatures":[{"sig":"MEUCIFc+5Xwwikbz22AP9G0EdVJoWiYODsK3RGvwoxkZGPj+AiEA8oLiebUfIxWwSnZXipll7yAF1LIcy4Ij7UxWHuuHQR4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@abto-app%2fevent@0.1.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":255586},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"c4fc5ad7fd14fde92cb74462582e14584547cc38","scripts":{"test":"vitest run","build":"npm run clean && tsc","clean":"rm -rf dist","prepack":"npm run build","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run test && npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ab58c578-cda7-481a-b128-ba1b58d7ec71"}},"repository":{"url":"git+https://github.com/greedy-co/abto-sdk.git","type":"git","directory":"packages/browser/javascript"},"_npmVersion":"11.18.0","description":"ABTO Browser SDK — typed custom events, identity, sessions, AI trace correlation, and opt-in autocapture.","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","vitest":"^4.1.10","typescript":"^5.4.0"},"_npmOperationalInternal":{"tmp":"tmp/event_0.1.6_1788009878142_0.39063904546185024","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@abto-app/event","version":"0.1.7","keywords":["abto","analytics","autocapture","browser","llm","observability"],"license":"MIT","_id":"@abto-app/event@0.1.7","maintainers":[{"name":"turtlehwan","email":"turtlehwan@gmail.com"},{"name":"wejust.greedy","email":"wejust.greedy@gmail.com"}],"homepage":"https://docs.abto.app/sdk/javascript/browser/","bugs":{"url":"https://github.com/greedy-co/abto-sdk/issues"},"dist":{"shasum":"1dc9e4dbc4cf8f1fe90b8b9097f4de0dd58897fb","tarball":"https://registry.npmjs.org/@abto-app/event/-/event-0.1.7.tgz","fileCount":67,"integrity":"sha512-liP1IRF6FxbfTfggCiV09w3mciuDCUzUd9g1j2WdcXAKRLUXwu3R/Ia5DFB7Bas3nrdfB97HH3z3NX9Zmi4J8A==","signatures":[{"sig":"MEQCIGpsr/fmTSV9GXQ7gq24AnMQ2L1VNDcqSXE1cW9VsHt+AiA4+UbCqF4dYqbwGz2TvlzuNaXSwwkVsYwtuup01fa2iA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@abto-app%2fevent@0.1.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":266629},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"b65c9ba67186e493e61398001288837115bf8ba8","scripts":{"test":"vitest run","build":"npm run clean && tsc","clean":"rm -rf dist","prepack":"npm run build","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run test && npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ab58c578-cda7-481a-b128-ba1b58d7ec71"}},"repository":{"url":"git+https://github.com/greedy-co/abto-sdk.git","type":"git","directory":"packages/browser/javascript"},"_npmVersion":"11.18.0","description":"ABTO Browser SDK — typed custom events, identity, sessions, AI trace correlation, and opt-in autocapture.","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","vitest":"^4.1.10","typescript":"^5.4.0"},"_npmOperationalInternal":{"tmp":"tmp/event_0.1.7_1788011259343_0.3386059849443248","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@abto-app/event","version":"0.2.0","keywords":["abto","analytics","autocapture","browser","llm","observability"],"license":"MIT","_id":"@abto-app/event@0.2.0","maintainers":[{"name":"turtlehwan","email":"turtlehwan@gmail.com"},{"name":"wejust.greedy","email":"wejust.greedy@gmail.com"}],"homepage":"https://docs.abto.app/sdk/javascript/browser/","bugs":{"url":"https://github.com/greedy-co/abto-sdk/issues"},"dist":{"shasum":"45b65d1f91d7281dc6d6adf04ebbcd0d78be69ce","tarball":"https://registry.npmjs.org/@abto-app/event/-/event-0.2.0.tgz","fileCount":67,"integrity":"sha512-O0foNstIOPfRRb5TPVTkj8d0JsaBMW/dbPDzCJ+LfUFN5RaJghM16PBUtv1tRCsawNiGymDYqDmYCV3+Ma4guQ==","signatures":[{"sig":"MEUCICVdyZztTT4AhqDpYONMdhMGJWxTr/OV7xTD3/lEOuQFAiEAsh6XocbXjJ9/3KzOYzY3iXDIyqXcT5iEjXLeoO4T+kQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@abto-app%2fevent@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":266629},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"d84fad00ab806141c5f6bf7d3a54e68ee332d1b2","scripts":{"test":"vitest run","build":"npm run clean && tsc","clean":"rm -rf dist","prepack":"npm run build","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run test && npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ab58c578-cda7-481a-b128-ba1b58d7ec71"}},"repository":{"url":"git+https://github.com/greedy-co/abto-sdk.git","type":"git","directory":"packages/browser/javascript"},"_npmVersion":"11.18.0","description":"ABTO Browser SDK — typed custom events, identity, sessions, AI trace correlation, and opt-in autocapture.","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","vitest":"^4.1.10","typescript":"^5.4.0"},"_npmOperationalInternal":{"tmp":"tmp/event_0.2.0_1788157756398_0.8957435884955556","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@abto-app/event","version":"0.3.0","keywords":["abto","analytics","autocapture","browser","llm","observability"],"license":"MIT","_id":"@abto-app/event@0.3.0","maintainers":[{"name":"turtlehwan","email":"turtlehwan@gmail.com"},{"name":"wejust.greedy","email":"wejust.greedy@gmail.com"}],"homepage":"https://docs.abto.app/sdk/javascript/browser/","bugs":{"url":"https://github.com/greedy-co/abto-sdk/issues"},"dist":{"shasum":"5cf2569c6619131c869d1897875ef5ec34bc8b47","tarball":"https://registry.npmjs.org/@abto-app/event/-/event-0.3.0.tgz","fileCount":67,"integrity":"sha512-Ef1UsvlF17Os07ENOmoOV5i5EwuyLxwqjgJJ3vFELLiccUQrfXBjX1Aa5yvG/QStTVlCnt8Csi6ndBNlMyMBSQ==","signatures":[{"sig":"MEQCIHmyA6gWdsXyRNys1UxbOdYku4FuvJulY81I8Yco5fpbAiAuBmp0NCttK5PSz/Ppi9quxlzMDy5jeJjUKHvhosBbXg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@abto-app%2fevent@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":238240},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"46c253457096a2f5145055d4e87955e9698fb239","scripts":{"test":"vitest run","build":"npm run clean && tsc","clean":"rm -rf dist","prepack":"npm run build","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run test && npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ab58c578-cda7-481a-b128-ba1b58d7ec71"}},"repository":{"url":"git+https://github.com/greedy-co/abto-sdk.git","type":"git","directory":"packages/browser/javascript"},"_npmVersion":"11.18.0","description":"ABTO Browser SDK — typed custom events, identity, sessions, AI trace correlation, and opt-in autocapture.","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","vitest":"^4.1.10","typescript":"^5.4.0"},"_npmOperationalInternal":{"tmp":"tmp/event_0.3.0_1788256435909_0.400103413880212","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@abto-app/event","version":"0.3.1","keywords":["abto","analytics","autocapture","browser","llm","observability"],"license":"MIT","_id":"@abto-app/event@0.3.1","maintainers":[{"name":"turtlehwan","email":"turtlehwan@gmail.com"},{"name":"wejust.greedy","email":"wejust.greedy@gmail.com"}],"homepage":"https://docs.abto.app/sdk/javascript/browser/","bugs":{"url":"https://github.com/greedy-co/abto-sdk/issues"},"dist":{"shasum":"281f1f438c917d5b1f5c7a913f7b0737855c38d2","tarball":"https://registry.npmjs.org/@abto-app/event/-/event-0.3.1.tgz","fileCount":67,"integrity":"sha512-/U8PHjciUdo/ty4fl2pa4woK1uELYOpC43fxFpL6WRH6WNiigh+WHr/OnAkID/xutqIJwqq2buIpwwq0THSv1w==","signatures":[{"sig":"MEUCIHVi8Oahf0x7OdpP9vIf5Vqnvol4u09ihrNyab9mjaSIAiEAlvIpWt0K5qIqiCRfeFXkHkx/pDuqa4HDiaV8n8Oj6PA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@abto-app%2fevent@0.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":238260},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"fbba598eef08bc7dbf9d8ab6f1748b0c2c029e50","scripts":{"test":"vitest run","build":"npm run clean && tsc","clean":"rm -rf dist","prepack":"npm run build","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run test && npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ab58c578-cda7-481a-b128-ba1b58d7ec71"}},"repository":{"url":"git+https://github.com/greedy-co/abto-sdk.git","type":"git","directory":"packages/browser/javascript"},"_npmVersion":"11.18.0","description":"ABTO Browser SDK — typed custom events, identity, sessions, AI trace correlation, and opt-in autocapture.","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","vitest":"^4.1.10","typescript":"^5.4.0"},"_npmOperationalInternal":{"tmp":"tmp/event_0.3.1_1788279016448_0.7267756449822378","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@abto-app/event","version":"0.4.0","keywords":["abto","analytics","autocapture","browser","llm","observability"],"license":"MIT","_id":"@abto-app/event@0.4.0","maintainers":[{"name":"turtlehwan","email":"turtlehwan@gmail.com"},{"name":"wejust.greedy","email":"wejust.greedy@gmail.com"}],"homepage":"https://docs.abto.app/sdk/javascript/browser/","bugs":{"url":"https://github.com/greedy-co/abto-sdk/issues"},"dist":{"shasum":"55465aa0a863564056b9ff07f777e8badab8f308","tarball":"https://registry.npmjs.org/@abto-app/event/-/event-0.4.0.tgz","fileCount":71,"integrity":"sha512-7fB1xgBxY6LbgGKpuZycrP/KH5K939bsIQvB+GTBDPaow97pT8XB9Clc7o5sl5QbBVDplmwA3Bn5GhweTAOYlA==","signatures":[{"sig":"MEUCIEYvBJwHbZ1bNp/nMNXb0ZY4Qb87ZeQ66Xep+nIPfZ4TAiEAh0S61HpSMgSqXd1WmbAhAxl35GPSJIsUhHhakKquPxg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@abto-app%2fevent@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":240406},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"4e4dd7d236258a675acafce899faf2d2b96abde7","scripts":{"test":"vitest run","build":"npm run clean && tsc","clean":"rm -rf dist","prepack":"npm run build","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run test && npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ab58c578-cda7-481a-b128-ba1b58d7ec71"}},"repository":{"url":"git+https://github.com/greedy-co/abto-sdk.git","type":"git","directory":"packages/browser/javascript"},"_npmVersion":"11.18.0","description":"ABTO Browser SDK — typed custom events, identity, sessions, AI trace correlation, and opt-in autocapture.","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","vitest":"^4.1.10","typescript":"^5.4.0"},"_npmOperationalInternal":{"tmp":"tmp/event_0.4.0_1788537571538_0.801946334124978","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@abto-app/event","version":"0.4.1","keywords":["abto","analytics","autocapture","browser","llm","observability"],"license":"MIT","_id":"@abto-app/event@0.4.1","maintainers":[{"name":"turtlehwan","email":"turtlehwan@gmail.com"},{"name":"wejust.greedy","email":"wejust.greedy@gmail.com"}],"homepage":"https://docs.abto.app/sdk/javascript/browser/","bugs":{"url":"https://github.com/greedy-co/abto-sdk/issues"},"dist":{"shasum":"8b3de32303e4aac6cae2a9cd022fc6bcde806273","tarball":"https://registry.npmjs.org/@abto-app/event/-/event-0.4.1.tgz","fileCount":71,"integrity":"sha512-IQjBuHlprMJE7Ov+zmiw+MYNQ/gLqSpn3XSF4HmxnGUejCPzO72BxnpKVf7zRMOiuYnesEYhraBiLkeEDAo7ag==","signatures":[{"sig":"MEUCIQD+mYLn2x+VAQcGpRBR4wCjK0TaPyvYf211KVFA6NXXWAIgCdN0dJntISIhHTIX20xmB6yOS9IPvk2fVONYvalje6o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@abto-app%2fevent@0.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":242355},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"e1604f846d9e7fa7bea3605fd065afed37602b80","scripts":{"test":"vitest run","build":"npm run clean && tsc","clean":"rm -rf dist","prepack":"npm run build","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run test && npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ab58c578-cda7-481a-b128-ba1b58d7ec71"}},"repository":{"url":"git+https://github.com/greedy-co/abto-sdk.git","type":"git","directory":"packages/browser/javascript"},"_npmVersion":"11.18.0","description":"ABTO Browser SDK — typed custom events, identity, sessions, AI trace correlation, and opt-in autocapture.","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","vitest":"^4.1.10","typescript":"^5.4.0"},"_npmOperationalInternal":{"tmp":"tmp/event_0.4.1_1788747570560_0.2831421557824043","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@abto-app/event","version":"0.5.0","keywords":["abto","analytics","autocapture","browser","llm","observability"],"license":"MIT","_id":"@abto-app/event@0.5.0","maintainers":[{"name":"turtlehwan","email":"turtlehwan@gmail.com"},{"name":"wejust.greedy","email":"wejust.greedy@gmail.com"}],"homepage":"https://docs.abto.app/sdk/javascript/browser/","bugs":{"url":"https://github.com/greedy-co/abto-sdk/issues"},"dist":{"shasum":"f4810dc8f39860d395e5b32a5c6774a6dcbcc692","tarball":"https://registry.npmjs.org/@abto-app/event/-/event-0.5.0.tgz","fileCount":71,"integrity":"sha512-fvT9Vh7JeAwhIubjY5bijQWw99Xdv4c2InVt54Be53oDkszHN4vv6WSNZ3ctKrUBb83iTkdHAQtcQgZ3LHZegg==","signatures":[{"sig":"MEUCIEkA89rvndyU9nRIiPXuaJOF03iEhLFjUcckH09O1XL7AiEAu2lOVxULIGi1uPit/X6BkfxoMwl461MAQd3kdaCEJO0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@abto-app%2fevent@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":242355},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"5da77e2befde599260c792f704080a7bc3a53c0d","scripts":{"test":"vitest run","build":"npm run clean && tsc","clean":"rm -rf dist","prepack":"npm run build","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run test && npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ab58c578-cda7-481a-b128-ba1b58d7ec71"}},"repository":{"url":"git+https://github.com/greedy-co/abto-sdk.git","type":"git","directory":"packages/browser/javascript"},"_npmVersion":"11.18.0","description":"ABTO Browser SDK — typed custom events, identity, sessions, AI trace correlation, and opt-in autocapture.","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","vitest":"^4.1.10","typescript":"^5.4.0"},"_npmOperationalInternal":{"tmp":"tmp/event_0.5.0_1788756536307_0.34597919210395967","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@abto-app/event","version":"0.5.1","keywords":["abto","analytics","autocapture","browser","llm","observability"],"license":"MIT","_id":"@abto-app/event@0.5.1","maintainers":[{"name":"turtlehwan","email":"turtlehwan@gmail.com"},{"name":"wejust.greedy","email":"wejust.greedy@gmail.com"}],"homepage":"https://docs.abto.app/sdk/javascript/browser/","bugs":{"url":"https://github.com/greedy-co/abto-sdk/issues"},"dist":{"shasum":"bcf6f0cd1234a31de79ed4bab02ad2fd088761cd","tarball":"https://registry.npmjs.org/@abto-app/event/-/event-0.5.1.tgz","fileCount":71,"integrity":"sha512-8FC+/OD1QhYrDdCSVNeuZmRTebtc1mlKXPxtcELmocc1+VF8ZYzsPhrcBDvc33g1Z9cti4PVRA4P3q3Ba3O1jg==","signatures":[{"sig":"MEQCIB0iCaEu34DFwBhVV/bAqiCHWV/VFsmw174IWI0eXNGcAiBjnJgr2YQQ4QSShTJUeAoAMO/jBXFxcnCL8rP7GalAEQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@abto-app%2fevent@0.5.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":244495},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"b825feccb9c1120ff6e1987132d50f0c9085876e","scripts":{"test":"vitest run","build":"npm run clean && tsc","clean":"rm -rf dist","prepack":"npm run build","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run test && npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ab58c578-cda7-481a-b128-ba1b58d7ec71"}},"repository":{"url":"git+https://github.com/greedy-co/abto-sdk.git","type":"git","directory":"packages/browser/javascript"},"_npmVersion":"11.18.0","description":"ABTO Browser SDK — typed custom events, identity, sessions, AI trace correlation, and opt-in autocapture.","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","vitest":"^4.1.10","typescript":"^5.4.0"},"_npmOperationalInternal":{"tmp":"tmp/event_0.5.1_1788763762938_0.5071422651902759","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"@abto-app/event","version":"0.5.2","keywords":["abto","analytics","autocapture","browser","llm","observability"],"license":"MIT","_id":"@abto-app/event@0.5.2","maintainers":[{"name":"turtlehwan","email":"turtlehwan@gmail.com"},{"name":"wejust.greedy","email":"wejust.greedy@gmail.com"}],"homepage":"https://docs.abto.app/sdk/javascript/browser/","bugs":{"url":"https://github.com/greedy-co/abto-sdk/issues"},"dist":{"shasum":"7d466789e352f99f608101db2d82dbeaad93e753","tarball":"https://registry.npmjs.org/@abto-app/event/-/event-0.5.2.tgz","fileCount":75,"integrity":"sha512-jvSQ3VqeU24rTl75fsqJs60Xbqwj32boZoJq6fubICQ+2eB83DEdy6q1SVtzuWR2ITPmrQhKSWYdhBysC+Viww==","signatures":[{"sig":"MEQCIFMvZPSc8kXsDKqWt8ms+14mfoOIRMWxYz1rtKfUkNoHAiAXibFXbybw1652/5dJQFlD5SK4p9svA1ecduQ6G4WjEw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@abto-app%2fevent@0.5.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":259938},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"cba971c5820d1153a0d63eea494d33bc500f0c74","scripts":{"test":"vitest run","build":"npm run clean && tsc","clean":"rm -rf dist","prepack":"npm run build","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run test && npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ab58c578-cda7-481a-b128-ba1b58d7ec71"}},"repository":{"url":"git+https://github.com/greedy-co/abto-sdk.git","type":"git","directory":"packages/browser/javascript"},"_npmVersion":"11.18.0","description":"ABTO Browser SDK — typed custom events, identity, sessions, AI trace correlation, and opt-in autocapture.","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","vitest":"^4.1.10","typescript":"^5.4.0"},"_npmOperationalInternal":{"tmp":"tmp/event_0.5.2_1788854203278_0.32922521061449617","host":"s3://npm-registry-packages-npm-production"}},"0.5.3":{"name":"@abto-app/event","version":"0.5.3","keywords":["abto","analytics","autocapture","browser","llm","observability"],"license":"MIT","_id":"@abto-app/event@0.5.3","maintainers":[{"name":"turtlehwan","email":"turtlehwan@gmail.com"},{"name":"wejust.greedy","email":"wejust.greedy@gmail.com"}],"homepage":"https://docs.abto.app/sdk/javascript/browser/","bugs":{"url":"https://github.com/greedy-co/abto-sdk/issues"},"dist":{"shasum":"56a7058015a2b6fbb90cf90794e8a22628a5a5bc","tarball":"https://registry.npmjs.org/@abto-app/event/-/event-0.5.3.tgz","fileCount":75,"integrity":"sha512-DeXHRfGCJOPa2h2XusQEwrHqaLVEWq+G7GVvkUMZYwKDGK0d1b7Fhcjt7yO+e467Dol9/uVKEqiLZOrVpYA+eg==","signatures":[{"sig":"MEYCIQC2y9SudTSkcPjnUCyTNnquJhxCp+1CRcEjdNOmHbpE0wIhANOPUk9g1bmdSJRAPW4dbCvqNAZ7QoUiSA/0bjejitiu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@abto-app%2fevent@0.5.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":259861},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"83d31422fde8cdbf7e87546b8c3ffe67565119b4","scripts":{"test":"vitest run","build":"npm run clean && tsc","clean":"rm -rf dist","prepack":"npm run build","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run test && npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ab58c578-cda7-481a-b128-ba1b58d7ec71"}},"repository":{"url":"git+https://github.com/greedy-co/abto-sdk.git","type":"git","directory":"packages/browser/javascript"},"_npmVersion":"11.18.0","description":"ABTO Browser SDK — typed custom events, identity, sessions, AI trace correlation, and opt-in autocapture.","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","vitest":"^4.1.10","typescript":"^5.4.0"},"_npmOperationalInternal":{"tmp":"tmp/event_0.5.3_1789029206565_0.0832418701365405","host":"s3://npm-registry-packages-npm-production"}},"0.5.4":{"name":"@abto-app/event","version":"0.5.4","keywords":["abto","analytics","autocapture","browser","llm","observability"],"license":"MIT","_id":"@abto-app/event@0.5.4","maintainers":[{"name":"turtlehwan","email":"turtlehwan@gmail.com"},{"name":"wejust.greedy","email":"wejust.greedy@gmail.com"}],"homepage":"https://docs.abto.app/sdk/javascript/browser/","bugs":{"url":"https://github.com/greedy-co/abto-sdk/issues"},"dist":{"shasum":"98f4f9db8f92bead534be9bf50e92d905f453d45","tarball":"https://registry.npmjs.org/@abto-app/event/-/event-0.5.4.tgz","fileCount":79,"integrity":"sha512-Ow19b8hgLzTkQy9FlT5l6V7uQnydureCPTj8ACC7ZyckU7qQj+Zyux1V24X/YuAi8zFntjPtFLScmR/77ccwEw==","signatures":[{"sig":"MEUCIQCYvudaakBw+/MSsuxgAKEyZgfeAJOeeokiDucGevj3IwIgGzIAhkBnMJI0x1/UQERyKvfipmaUeDvEeQC3aRVfSkE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@abto-app%2fevent@0.5.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":255707},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"d2551986744d3d1784814821b9cdf0c3b7a3cb79","scripts":{"test":"vitest run","build":"npm run clean && tsc","clean":"rm -rf dist","prepack":"npm run build","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run test && npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ab58c578-cda7-481a-b128-ba1b58d7ec71"}},"repository":{"url":"git+https://github.com/greedy-co/abto-sdk.git","type":"git","directory":"packages/browser/javascript"},"_npmVersion":"11.18.0","description":"ABTO Browser SDK — typed custom events, identity, sessions, AI trace correlation, and opt-in autocapture.","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","vitest":"^4.1.10","typescript":"^5.4.0"},"_npmOperationalInternal":{"tmp":"tmp/event_0.5.4_1789040386219_0.23310064487296067","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@abto-app/event","version":"1.0.0","keywords":["abto","analytics","autocapture","browser","llm","observability"],"license":"MIT","_id":"@abto-app/event@1.0.0","maintainers":[{"name":"turtlehwan","email":"turtlehwan@gmail.com"},{"name":"wejust.greedy","email":"wejust.greedy@gmail.com"}],"homepage":"https://docs.abto.app/sdk/javascript/browser/","bugs":{"url":"https://github.com/greedy-co/abto-sdk/issues"},"dist":{"shasum":"0ff1cb0ebabbf4bc7cc66f913ac69c5d5ff66e3d","tarball":"https://registry.npmjs.org/@abto-app/event/-/event-1.0.0.tgz","fileCount":79,"integrity":"sha512-z8IQUv7MZ4V3uUoVkXO87g36mW15BTa9jkol1mGRIYrYNcLvCA/M/f3XVWJJ8O0lmLdZR+ozJcmlAJxzZ15qDA==","signatures":[{"sig":"MEQCIGRaiYBF0NepWvRfRVQE0rzrlwMN90aA5sgVefqwloXgAiBJvrMKnp2rhLo4F4MFtWjS75xWf/fOR4Fpv9wGhWydfg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@abto-app%2fevent@1.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":255707},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"969878fa858f16aba56fba4eae85961fa7d43a29","scripts":{"test":"vitest run","build":"npm run clean && tsc","clean":"rm -rf dist","prepack":"npm run build","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run typecheck && npm run test && npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ab58c578-cda7-481a-b128-ba1b58d7ec71"}},"repository":{"url":"git+https://github.com/greedy-co/abto-sdk.git","type":"git","directory":"packages/browser/javascript"},"_npmVersion":"11.18.0","description":"ABTO Browser SDK — typed custom events, identity, sessions, AI trace correlation, and opt-in autocapture.","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","vitest":"^4.1.10","typescript":"^5.4.0"},"_npmOperationalInternal":{"tmp":"tmp/event_1.0.0_1789040458182_0.42942953132608075","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@abto-app/event","version":"1.1.0","description":"ABTO Browser SDK — typed custom events, identity, sessions, AI trace correlation, and opt-in autocapture.","type":"module","license":"MIT","sideEffects":false,"homepage":"https://docs.abto.app/sdk/javascript/browser/","bugs":{"url":"https://github.com/greedy-co/abto-sdk/issues"},"repository":{"type":"git","url":"git+https://github.com/greedy-co/abto-sdk.git","directory":"packages/browser/javascript"},"main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"clean":"rm -rf dist","build":"npm run clean && tsc","typecheck":"tsc --noEmit && tsc -p tsconfig.type-tests.json","test":"vitest run","test:watch":"vitest","prepack":"npm run build","prepublishOnly":"npm run typecheck && npm run test && npm run build"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"engines":{"node":">=18"},"keywords":["abto","analytics","autocapture","browser","llm","observability"],"devDependencies":{"jsdom":"^25.0.1","typescript":"^5.4.0","vitest":"^4.1.10"},"gitHead":"71882bca56e282c9d090e987ee65e71c7669cfb4","_id":"@abto-app/event@1.1.0","_nodeVersion":"24.20.0","_npmVersion":"11.18.0","dist":{"integrity":"sha512-lhF6+dMjuimBambEE+AZfoyhJ+PJfmImODuhLukB/jp2TtBs8yyOBEoLVo9kS55PeERmxgOJW4cQ/CmC0gC4KA==","shasum":"51259495e5e416f7d8f6314ebd5a483f40305aa4","tarball":"https://registry.npmjs.org/@abto-app/event/-/event-1.1.0.tgz","fileCount":79,"unpackedSize":262479,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@abto-app%2fevent@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCsnpG53ZNtE+tMrX9DShK1Fzlx/sy8tesCbMPlqPA8JgIhAIsyynMo76KZBUq3qRxy4zuw2f26F3tbvAlEbC95+RA1"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ab58c578-cda7-481a-b128-ba1b58d7ec71"}},"directories":{},"maintainers":[{"name":"turtlehwan","email":"turtlehwan@gmail.com"},{"name":"wejust.greedy","email":"wejust.greedy@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/event_1.1.0_1789065289015_0.16403063410092766"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-28T05:57:05.684Z","modified":"2026-09-10T18:34:49.502Z","0.1.0":"2026-07-28T05:57:06.010Z","0.1.1":"2026-08-03T11:39:29.233Z","0.1.2":"2026-08-04T04:13:06.925Z","0.1.3":"2026-08-04T07:54:38.077Z","0.1.4":"2026-08-05T08:02:50.286Z","0.1.5":"2026-08-27T08:10:24.555Z","0.1.6":"2026-08-29T13:24:38.320Z","0.1.7":"2026-08-29T13:47:39.473Z","0.2.0":"2026-08-31T06:29:16.538Z","0.3.0":"2026-09-01T09:53:56.031Z","0.3.1":"2026-09-01T16:10:16.594Z","0.4.0":"2026-09-04T15:59:31.679Z","0.4.1":"2026-09-07T02:19:30.679Z","0.5.0":"2026-09-07T04:48:56.437Z","0.5.1":"2026-09-07T06:49:23.074Z","0.5.2":"2026-09-08T07:56:43.399Z","0.5.3":"2026-09-10T08:33:26.712Z","0.5.4":"2026-09-10T11:39:46.369Z","1.0.0":"2026-09-10T11:40:58.308Z","1.1.0":"2026-09-10T18:34:49.154Z"},"bugs":{"url":"https://github.com/greedy-co/abto-sdk/issues"},"license":"MIT","homepage":"https://docs.abto.app/sdk/javascript/browser/","keywords":["abto","analytics","autocapture","browser","llm","observability"],"repository":{"type":"git","url":"git+https://github.com/greedy-co/abto-sdk.git","directory":"packages/browser/javascript"},"description":"ABTO Browser SDK — typed custom events, identity, sessions, AI trace correlation, and opt-in autocapture.","maintainers":[{"name":"turtlehwan","email":"turtlehwan@gmail.com"},{"name":"wejust.greedy","email":"wejust.greedy@gmail.com"}],"readme":"# @abto-app/event\n\nABTO SDK는 고객사가 선택해 직접 기록한 사용자 행동을 수집하고, Gateway가 반환한 `request_id`를 통해 서버의 LLM 비용·지연 데이터와 연결한다.\n\n`@abto-app/event`는 공개키를 사용하는 Browser 전용 패키지다.\n비밀키와 provider credential을 사용하는 Node 환경에는 별도 `@abto-app/calling` 패키지를 설치한다.\n\nPostHog의 autocapture, ingestion, session, schema/discovery는 ABTO 이벤트 설계의 참고 모델이다. ABTO 이벤트를 PostHog로 보내는 연동이 아니라, 검증된 수집 철학을 ABTO 독립 수집 구조에 적용한다.\n\n## 설치\n\n```bash\npnpm add @abto-app/event\n```\n\n## 이벤트 경계\n\nBrowser SDK가 보내는 이벤트는 두 종류다.\n\n| 종류 | SDK 이름 | Analytics wire 이름 | 정의 주체 | 발생 방식 |\n|---|---|---|---|---|\n| 시스템 이벤트 | `$`로 시작 | ABTO canonical 이름 | ABTO | 명시적으로 켠 autocapture 또는 전용 API |\n| 커스텀 이벤트 | `$` 없이 제품 도메인 이름 사용 | 같은 이름 | 고객 저장소 | `client.capture()` |\n\n사용자는 `$` 이벤트나 `$` 속성을 등록할 수 없다. 아래 canonical wire 이름도 ABTO가 소유하므로 커스텀 이벤트로 등록할 수 없다. ABTO 시스템 이벤트는 일반 `capture()`로 보낼 수 없으며 SDK 내부 경로와 AI trace 전용 메서드만 발생시킨다.\n\n### Browser SDK 시스템 이벤트\n\n| SDK 이벤트 | Analytics `event_name` | 의미 | 발생 조건 |\n|---|---|---|---|\n| `$pageview` | `pageview` | 페이지/SPA route 진입 | autocapture opt-in 시 초기 로드, history 변경, bfcache 복원 |\n| `$pageleave` | `pageleave` | 페이지/route 이탈 | autocapture opt-in 시 SPA 이동, `pagehide` |\n| `$autocapture` | `interaction_autocaptured` | DOM 상호작용 원시 사실 | autocapture opt-in 시 click, change, submit, copy |\n| `$rageclick` | `interaction_rageclick` | 짧은 시간의 반복 클릭 | autocapture opt-in 시 SDK 휴리스틱 |\n| `$dead_click` | `interaction_deadclick` | 반응이 관측되지 않은 클릭 | autocapture opt-in 시 SDK 휴리스틱 |\n| `$ai_prompt_submitted` | `llm_prompt_submitted` | 프롬프트 제출을 앱이 확인 | `trace.submitPrompt()` |\n| `$ai_response_rendered` | `llm_response_rendered` | 응답이 UI에 렌더됨을 앱이 확인 | `trace.markResponseRendered()` |\n| `$ai_response_interacted` | `llm_response_interacted` | 응답에 대한 명시적 행동 | `trace.captureResponseInteraction()` |\n\n`$session_start`와 `$session_end`는 보내지 않는다. 모든 이벤트의 `session_id`와 timestamp의 최솟값·최댓값을 분석 계층에서 사용해 세션 시작, 종료, duration을 파생한다. 브라우저 종료 신호는 유실될 수 있으므로 `$session_end`를 확정 사실로 기록하지 않는다.\n\n## 커스텀 이벤트 정본: `abto.events.ts`\n\n제품 이벤트는 고객 애플리케이션 저장소의 `abto.events.ts`에 사전 등록한다. 이 파일을 코드 리뷰와 향후 CLI/CI schema push의 정본으로 사용한다.\n\n```ts\n// abto.events.ts\nimport { defineEvents } from '@abto-app/event';\n\nexport const events = defineEvents({\n  checkout_completed: { description: '결제가 완료됨' },\n});\n```\n\n```ts\nimport { initAbto } from '@abto-app/event';\nimport { events } from './abto.events';\n\nconst abto = initAbto({\n  projectKey: 'public_project_key',\n  environment: 'development',\n  events,\n});\n\nabto.capture('checkout_completed', {\n  value: 49000,\n  scale: 'KRW',\n});\n```\n\n`value`와 `scale`은 모두 선택이다. 이름만 보내거나 추가 속성만 보낼 수 있다. 생략한 `value`와 `scale`은 전송하지 않고, 빈 문자열 `scale`은 그대로 전송한다.\n단순 행동 건수는 `{ value: 1, scale: 'count' }`로 기록한다.\nSuccess Metric은 이벤트 이름과 metric을 집계하며, 같은 객체에 추가한 나머지 속성은 자동으로 `extra_json`에 들어간다.\n\n`defineEvents()`에서 이름을 추론하므로 잘못된 이벤트 이름을 개발 시점에 확인할 수 있다. 런타임 정책은 환경별로 다르다.\n\n| 환경 | 미등록 이벤트 |\n|---|---|\n| `development` | 전송하고 `Discovered` 경고 |\n| `production` | drop |\n\n필수 metric이 없거나 계약을 벗어나면 경고 후 해당 커스텀 이벤트를 보내지 않는다.\n\n추가 속성은 같은 객체에 넣는다. `value`·`scale`은 최상위 metric으로, `tier`는 `extra_json.tier`로 전송된다.\n\n```ts\nabto.capture('checkout_completed', { value: 49000, scale: 'KRW', tier: 'pro' });\n```\n\n## 초기화와 autocapture\n\n앱 루트에서 한 번 초기화한다. 설정을 생략한 기본 초기화는 identity와 trace context만 준비하며 이벤트를 만들지 않는다. 고객사가 필요하다고 정한 Custom Event와 LLM trace event만 해당 제품 동작에서 직접 호출한다.\n\n```ts\nconst abto = initAbto({\n  projectKey: 'public_project_key',\n  apiHost: 'https://api.abto.app',\n  environment: 'production',\n  events,\n});\n```\n\n| 설정 | 기본값 | 역할 |\n|---|---|---|\n| `projectKey` | 필수 | 브라우저에 둘 수 있는 공개 Event Key |\n| `apiHost` | `https://api.abto.app` | Event API host. SDK가 `/v1/collect/events`를 붙인다 |\n| `environment` | `production` | `development`에서는 미등록 event와 schema drift를 경고 후 전송한다 |\n| `appVersion` | 미설정 | 지정하면 event context의 `$app_version`으로 전송한다 |\n| `events` | `{}` | `defineEvents()`로 만든 Custom Event registry |\n| `capture.prompt` | `metadata_only` | `off`, `hash`, `metadata_only`, `full` 중 prompt 수집 정책 |\n| `capture.response` | `metadata_only` | `off`, `metadata_only`, `full` 중 response 수집 정책 |\n| `capture.mask` | `all` | `off`, `sensitive`, `all` 중 autocapture DOM text/value 마스킹 정책 |\n| `autocapture.enabled` | `false` | 페이지와 DOM 자동 수집의 명시적 opt-in |\n\n페이지와 DOM 상호작용을 넓게 수집해야 하고 데이터 정책 검토를 마친 경우에만 autocapture를 명시적으로 켠다.\n\n```ts\nconst abto = initAbto({\n  projectKey: 'public_project_key',\n  autocapture: { enabled: true },\n});\n```\n\n### 이전 기본값에서 마이그레이션\n\n`0.1.4` 이하에서 `autocapture`를 생략하면 자동 수집이 켜졌다. 그 동작에 의존한 애플리케이션은 업그레이드할 때 `autocapture: { enabled: true }`를 추가해야 한다. 자동 수집이 필요하지 않은 애플리케이션은 설정을 생략하고 선택한 `capture()`와 `LlmTrace` 호출만 유지한다.\n\n기본 endpoint는 `${apiHost}/v1/collect/events`다. SDK 내부의 Browser 이벤트는 전송 직전에\n현재 Analytics 수신 계약으로 변환된다.\n\n```json\n{\n  \"batch\": [\n    {\n      \"event_id\": \"019b...\",\n      \"device_id\": \"019b...\",\n      \"session_id\": \"019b...\",\n      \"event_name\": \"checkout_started\",\n      \"value\": 3000,\n      \"scale\": \"KRW\",\n      \"occurred_at\": \"2026-07-15T04:10:00.000Z\",\n      \"extra_json\": {\n        \"value\": 3000,\n        \"scale\": \"KRW\",\n        \"$lib\": \"web\",\n        \"$lib_version\": \"1.1.0\"\n      }\n    }\n  ]\n}\n```\n\n서버의 이벤트별 응답은 event UUID를 key로 사용한다.\n\n```json\n{\n  \"results\": {\n    \"019b5b74-11d0-7000-8000-000000000001\": {\n      \"result\": \"drop\",\n      \"code\": \"schema_type_mismatch\"\n    }\n  }\n}\n```\n\n모든 collector 요청은 public project key를 Bearer header에 싣는다. 페이지 이탈도 응답을 읽을 수 있는 `fetch(..., { keepalive: true })`를 사용하며, 서버가 이 key에서 `project_id`와 `organization_id`를 결정한다. `$tenant_id`를 포함한 client property는 분석 문맥이며 인증·project 귀속 값이 아니다.\n\n수신 계약의 상한은 요청당 100 events다. SDK 기본값은 20이며 약 60 KiB 이하 payload만 keepalive로 전송한다. malformed request와 인증 실패는 요청 단위 4xx, 개별 validation/storage 실패는 2xx 응답의 UUID별 `warning`, `drop`, `retry`로 처리한다.\n커스텀 `event_name`은 Backend와 같은 UTF-16 기준 최대 200자이며, `defineEvents()`와 runtime capture가 enqueue 전에 검증한다.\nmetric `scale`은 최대 16자이며, 빈 값이나 초과한 값은 해당 커스텀 이벤트를 경고 후 보내지 않는다.\n\n### SDK 자체 전송 진단\n\nBrowser SDK는 `send_failed`, `outbox_write_failed`, `identity_persist_failed`, `storage_unavailable` 네 실패를\n메모리 counter로만 모은다. 다음 event batch가 있을 때 고정 스키마의 선택적 `diagnostics` 필드로 같은 요청에\n동승시키며, 이를 위한 별도 네트워크 요청이나 제품 event를 만들지 않는다. 성공 응답을 받은 counter만 차감하고\n전송 실패 시 보존한다.\n\n```json\n{\n  \"batch\": [{ \"event_id\": \"019b...\", \"event_name\": \"checkout_started\" }],\n  \"diagnostics\": {\n    \"sdk_name\": \"browser-javascript\",\n    \"counters\": { \"send_failed\": 1 }\n  }\n}\n```\n\ndiagnostics는 위 고정 SDK 이름과 counter만 포함하고 사용자 ID, event property, URL, 오류 원문을 복사하지\n않는다. 고정된 네 counter만 직렬화하므로 별도 크기 제한이나 첨부 복구 경로가 필요하지 않다. event가 전혀\n없으면 진단만 보내는 요청도 생기지 않는다.\n\nSDK 내부 queue와 API에서는 `$` 이름을 유지하지만, Analytics의 고정 Event 계약은 `$` 접두\n`event_name`을 거절한다. Transport가 위 표의 canonical 이름으로만 변환해 전송한다.\n`device_id`·`session_id`·`trace_id`는 wire의 1급 필드로 실리고, 담을 필드가 없는\n`$lib`·`$user_id`·`$feature_id` 같은 SDK 소유 context만 `extra_json`에 남는다.\nDashboard 이벤트 카탈로그와 Success Metric에서는 canonical wire 이름을 사용한다.\n\nautocapture를 명시적으로 켠 경우 annotation은 원시 `$autocapture`를 다른 이벤트로 바꾸지 않는다. 원시 상호작용을 보존하면서 분석 차원만 보강한다.\n\n```html\n<button\n  data-abto-action=\"accept\"\n  data-abto-surface=\"generator\"\n  data-abto-feature-id=\"resume.make\"\n  data-abto-response-id=\"resp_123\"\n  data-abto-request-id=\"req_123\">\n  적용\n</button>\n```\n\nautocapture를 켰다면 위 클릭은 `$autocapture`로 수집되며 `$ai_action`, `$surface`, `$feature_id`, `$response_id`, `$request_id`가 함께 실린다. 업무 의미가 확정된 행동은 앱 코드에서 커스텀 이벤트 또는 AI 전용 메서드로 별도 기록한다.\n\n## 개인정보 기본값\n\nprompt, response, DOM text/value는 기본적으로 원문을 수집하지 않는다.\n\n위 설정 표의 `capture.prompt`, `capture.response`, `capture.mask`를 생략해도\n각각 `metadata_only`, `metadata_only`, `all`의 안전한 기본값이 적용된다.\n\n| annotation | 동작 |\n|---|---|\n| `data-abto-no-capture` | 자신과 하위 트리를 수집하지 않음 |\n| `data-abto-sensitive` | 자신과 하위 text/value를 항상 전체 마스킹 |\n| `data-abto-include` | 해당 요소의 text/value 수집을 명시적으로 허용 |\n\n`password`, `hidden` input과 카드·비밀번호·SSN 계열 필드는 annotation과 무관하게 보호한다. `full` 원문 수집은 명시적 opt-in이며 고객의 동의·보존·삭제 정책과 함께 사용해야 한다.\n\n## 브라우저에서 관측 가능한 AI 이벤트\n\n브라우저가 확실히 아는 세 가지 사실만 전용 API로 제공한다.\n\n```ts\nconst trace = abto.startLlmTrace();\n\nawait trace.submitPrompt({\n  prompt: promptText,\n  language: 'ko',\n});\n\nconst response = await fetch('/api/generate', {\n  method: 'POST',\n  headers: { 'content-type': 'application/json', ...trace.getHeaders() },\n  body: JSON.stringify({ prompt: promptText }),\n});\ntrace.attachRequestId(response);\n\nawait trace.markResponseRendered({\n  responseId: 'resp_123',\n  timeToRenderMs: 1380,\n});\n\nawait trace.captureResponseInteraction('copied', {\n  responseId: 'resp_123',\n  source: 'copy_button',\n});\n```\n\n`captureResponseInteraction()`은 계약에 정의된 12개 interaction type만 enqueue한다.\nplain JavaScript에서 다른 값이 들어와도 경고 후 제외하며, 제품 고유 행동은 커스텀 이벤트로 기록한다.\n\nprovider/model/token/cost/retry/fallback, 실제 첫 토큰 시점과 request 성공·실패는 Server SDK/Gateway가 소유한다. AI task 완료·이탈은 제품마다 의미가 다르므로 커스텀 이벤트 또는 분석 파생 지표로 둔다.\n\n`trace.getHeaders()`는 브라우저가 소유하는 `x-abto-device-id`만 반환한다.\n실제 모델 호출의 `featureId`는 브라우저 입력을 신뢰하지 않고 백엔드가 Calling SDK context에 설정한다.\n\n## 식별자와 세션\n\n`$` 접두가 붙은 것은 `extra_json`이 유일한 자리인 context이고, 나머지는 wire의 1급 필드다.\n\n| 속성 | 수명과 역할 |\n|---|---|\n| `device_id` | 프로젝트별 브라우저 설치, localStorage 유지 |\n| `session_id` | 탭 사이에서 공유하는 논리 세션, 30분 idle 또는 24시간 max age에 회전 |\n| `trace_id` | 한 사용자 행동에서 발생한 브라우저 이벤트를 묶는 값 |\n| `$user_id` | `identify()`로 연결한 제품 사용자 |\n| `$window_id` | 탭/window별 ID, sessionStorage 유지 |\n| `$pageview_id` | 페이지/SPA route 구간, pageview마다 회전 |\n| `$request_id` | Gateway의 실제 provider 호출 PK |\n\n```ts\nabto.identify('user_123', 'tenant_123');\nabto.reset();        // user/tenant 제거, device 유지\nabto.forgetDevice(); // outbox와 device identity 제거\n```\n\nidentity 저장이 실패해도 새 session/device ID는 현재 인스턴스의 메모리에 유지된다. 저장이 복구되면 현재 값을 다시 보관한다.\n활동 시각만 저장하다 실패한 경우에는 다른 탭의 session/device ID 변경을 계속 반영한다.\n\n## 전송과 재시도\n\n- 이벤트는 프로젝트별 localStorage outbox에 이벤트별 항목으로 먼저 저장한다. 여러 탭의 enqueue·ack가 다른 이벤트를 덮어쓰지 않는다.\n- 이벤트별 순번으로 보관 순서를 유지한다. 같은 시각의 이벤트도 UUID 정렬에 의존하지 않고 오래된 항목부터 버퍼 상한을 적용한다.\n- 기존 배열 형식 outbox는 읽을 때 이벤트별 항목으로 옮긴다. 저장 실패 시 메모리 큐를 유지하고 다음 flush에서 저장을 재시도한다.\n- 여러 인스턴스가 같은 이벤트를 재시도할 수 있으며 UUID 기반 서버 중복 처리를 따른다.\n- 기본적으로 최대 20개씩 `POST /v1/collect/events`로 보낸다.\n- 일반 flush와 페이지 이탈 모두 응답 가능한 `fetch`를 사용하며, 안전 크기의 이탈 payload에만 `keepalive`를 켠다.\n- keepalive payload는 약 60 KiB 이내로 제한한다. 응답 전에 페이지가 종료되면 localStorage outbox가 다음 SDK 인스턴스에서 재전송한다.\n- 408, 429, 5xx와 이벤트별 `retry`만 지수 backoff로 재시도한다.\n- 영구 4xx와 이벤트별 `drop`은 outbox에서 제거한다.\n- 이벤트별 `ok`, `warning`, `drop`, `retry` 응답을 UUID 기준으로 처리한다.\n\n## Public API (browser)\n\n`initAbto` · `defineEvents` · `client.identify` · `client.getIdentity` · `client.reset` · `client.forgetDevice` · `client.startLlmTrace` · `client.capture` · `client.flush` · `client.shutdown` · `trace.getHeaders` · `trace.submitPrompt` · `trace.markResponseRendered` · `trace.captureResponseInteraction`.\n\n## 개발 검증\n\n```bash\npnpm test\npnpm typecheck\npnpm build\nnode ../../examples/browser-smoke/collector.mjs\n```\n\n실브라우저 검증 절차는 [`examples/browser-smoke/README.md`](../../examples/browser-smoke/README.md)를 따른다.\n\n추가 속성 값은 JSON 스칼라(문자열·유한한 수·불리언·null), 스칼라 배열, 스칼라 값으로 구성된 객체를 받습니다.\n더 깊은 중첩, U+0000, 최상위 `$` 접두 키는 해당 커스텀 이벤트와 함께 거절합니다.\n이벤트 ID·시각·기기/세션 ID·`$` 문맥은 SDK가 자동으로 추가합니다.\n\n이 capture API는 1.0.0의 위치 인자 API를 대체합니다. 업그레이드 시 호출부를 바꿔야 하며, 기존 저장 이벤트의 해석은 유지됩니다.\n","readmeFilename":"README.md"}