@abto-app/event 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +273 -0
  3. package/dist/autocapture.d.ts +68 -0
  4. package/dist/autocapture.d.ts.map +1 -0
  5. package/dist/autocapture.js +269 -0
  6. package/dist/autocapture.js.map +1 -0
  7. package/dist/click-signals.d.ts +18 -0
  8. package/dist/click-signals.d.ts.map +1 -0
  9. package/dist/click-signals.js +66 -0
  10. package/dist/click-signals.js.map +1 -0
  11. package/dist/client.d.ts +37 -0
  12. package/dist/client.d.ts.map +1 -0
  13. package/dist/client.js +439 -0
  14. package/dist/client.js.map +1 -0
  15. package/dist/context.d.ts +52 -0
  16. package/dist/context.d.ts.map +1 -0
  17. package/dist/context.js +146 -0
  18. package/dist/context.js.map +1 -0
  19. package/dist/elements-chain.d.ts +8 -0
  20. package/dist/elements-chain.d.ts.map +1 -0
  21. package/dist/elements-chain.js +84 -0
  22. package/dist/elements-chain.js.map +1 -0
  23. package/dist/event-registry.d.ts +37 -0
  24. package/dist/event-registry.d.ts.map +1 -0
  25. package/dist/event-registry.js +59 -0
  26. package/dist/event-registry.js.map +1 -0
  27. package/dist/events.generated.d.ts +769 -0
  28. package/dist/events.generated.d.ts.map +1 -0
  29. package/dist/events.generated.js +3 -0
  30. package/dist/events.generated.js.map +1 -0
  31. package/dist/identity.d.ts +44 -0
  32. package/dist/identity.d.ts.map +1 -0
  33. package/dist/identity.js +148 -0
  34. package/dist/identity.js.map +1 -0
  35. package/dist/index.d.ts +16 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +23 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/privacy.d.ts +46 -0
  40. package/dist/privacy.d.ts.map +1 -0
  41. package/dist/privacy.js +140 -0
  42. package/dist/privacy.js.map +1 -0
  43. package/dist/scroll-depth.d.ts +24 -0
  44. package/dist/scroll-depth.d.ts.map +1 -0
  45. package/dist/scroll-depth.js +74 -0
  46. package/dist/scroll-depth.js.map +1 -0
  47. package/dist/system-events.generated.d.ts +17 -0
  48. package/dist/system-events.generated.d.ts.map +1 -0
  49. package/dist/system-events.generated.js +29 -0
  50. package/dist/system-events.generated.js.map +1 -0
  51. package/dist/transport.d.ts +27 -0
  52. package/dist/transport.d.ts.map +1 -0
  53. package/dist/transport.js +264 -0
  54. package/dist/transport.js.map +1 -0
  55. package/dist/types.d.ts +156 -0
  56. package/dist/types.d.ts.map +1 -0
  57. package/dist/types.js +3 -0
  58. package/dist/types.js.map +1 -0
  59. package/dist/uuid.d.ts +12 -0
  60. package/dist/uuid.d.ts.map +1 -0
  61. package/dist/uuid.js +39 -0
  62. package/dist/uuid.js.map +1 -0
  63. package/package.json +59 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.generated.d.ts","sourceRoot":"","sources":["../src/events.generated.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ // GENERATED FILE — DO NOT EDIT.
2
+ export {};
3
+ //# sourceMappingURL=events.generated.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.generated.js","sourceRoot":"","sources":["../src/events.generated.ts"],"names":[],"mappings":"AAAA,gCAAgC"}
@@ -0,0 +1,44 @@
1
+ export interface BrowserIdentity {
2
+ deviceId: string;
3
+ anonymousId: string;
4
+ sessionId: string;
5
+ windowId: string;
6
+ }
7
+ export interface IdentityStoreOptions {
8
+ projectKey: string;
9
+ sessionIdleMs?: number;
10
+ sessionMaxAgeMs?: number;
11
+ writeThrottleMs?: number;
12
+ storage?: StorageLike;
13
+ windowStorage?: StorageLike;
14
+ now?: () => number;
15
+ }
16
+ export interface StorageLike {
17
+ getItem(key: string): string | null;
18
+ setItem(key: string, value: string): void;
19
+ }
20
+ export declare class BrowserIdentityStore {
21
+ private readonly storage;
22
+ private readonly windowStorage;
23
+ private readonly storageKey;
24
+ private readonly windowStorageKey;
25
+ private readonly sessionIdleMs;
26
+ private readonly sessionMaxAgeMs;
27
+ private readonly writeThrottleMs;
28
+ private readonly now;
29
+ private state;
30
+ private windowId;
31
+ private lastPersistedAt;
32
+ constructor(options: IdentityStoreOptions);
33
+ current(): BrowserIdentity;
34
+ resetSession(): BrowserIdentity;
35
+ forgetDevice(): BrowserIdentity;
36
+ private touch;
37
+ private rotateSession;
38
+ private create;
39
+ private createWindowId;
40
+ private read;
41
+ private readWindowId;
42
+ private persist;
43
+ }
44
+ //# sourceMappingURL=identity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../src/identity.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,aAAa,CAAC,EAAE,WAAW,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACpC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3C;AA0CD,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0B;IAClD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA0B;IACxD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IACnC,OAAO,CAAC,KAAK,CAAoB;IACjC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,eAAe,CAA4B;gBAEvC,OAAO,EAAE,oBAAoB;IAczC,OAAO,IAAI,eAAe;IAU1B,YAAY,IAAI,eAAe;IAM/B,YAAY,IAAI,eAAe;IAO/B,OAAO,CAAC,KAAK;IAYb,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,MAAM;IAWd,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,IAAI;IAYZ,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,OAAO;CAUhB"}
@@ -0,0 +1,148 @@
1
+ import { newUuidV7 } from './uuid.js';
2
+ const IDENTITY_STORAGE_VERSION = 2;
3
+ const WINDOW_STORAGE_VERSION = 1;
4
+ const DEFAULT_SESSION_IDLE_MS = 30 * 60 * 1000;
5
+ const DEFAULT_SESSION_MAX_AGE_MS = 24 * 60 * 60 * 1000;
6
+ const DEFAULT_WRITE_THROTTLE_MS = 1000;
7
+ function resolveLocalStorage() {
8
+ try {
9
+ return globalThis.localStorage;
10
+ }
11
+ catch {
12
+ return undefined;
13
+ }
14
+ }
15
+ function resolveWindowStorage() {
16
+ try {
17
+ return globalThis.sessionStorage;
18
+ }
19
+ catch {
20
+ return undefined;
21
+ }
22
+ }
23
+ function isPersistedIdentity(value) {
24
+ if (value === null || typeof value !== 'object')
25
+ return false;
26
+ const candidate = value;
27
+ return (candidate.version === IDENTITY_STORAGE_VERSION &&
28
+ typeof candidate.deviceId === 'string' &&
29
+ candidate.deviceId !== '' &&
30
+ typeof candidate.sessionId === 'string' &&
31
+ candidate.sessionId !== '' &&
32
+ typeof candidate.sessionStartedAt === 'number' &&
33
+ Number.isFinite(candidate.sessionStartedAt) &&
34
+ typeof candidate.lastSeenAt === 'number' &&
35
+ Number.isFinite(candidate.lastSeenAt));
36
+ }
37
+ export class BrowserIdentityStore {
38
+ constructor(options) {
39
+ this.lastPersistedAt = Number.NEGATIVE_INFINITY;
40
+ this.storage = options.storage ?? resolveLocalStorage();
41
+ this.windowStorage = options.windowStorage ?? resolveWindowStorage();
42
+ this.storageKey = `abto:identity:v${IDENTITY_STORAGE_VERSION}:${encodeURIComponent(options.projectKey)}`;
43
+ this.windowStorageKey = `abto:window:v${WINDOW_STORAGE_VERSION}:${encodeURIComponent(options.projectKey)}`;
44
+ this.sessionIdleMs = positiveOr(options.sessionIdleMs, DEFAULT_SESSION_IDLE_MS);
45
+ this.sessionMaxAgeMs = positiveOr(options.sessionMaxAgeMs, DEFAULT_SESSION_MAX_AGE_MS);
46
+ this.writeThrottleMs = positiveOr(options.writeThrottleMs, DEFAULT_WRITE_THROTTLE_MS);
47
+ this.now = options.now ?? Date.now;
48
+ this.state = this.read() ?? this.create();
49
+ this.windowId = this.readWindowId() ?? this.createWindowId();
50
+ this.touch(true);
51
+ }
52
+ current() {
53
+ this.touch();
54
+ return {
55
+ deviceId: this.state.deviceId,
56
+ anonymousId: this.state.deviceId,
57
+ sessionId: this.state.sessionId,
58
+ windowId: this.windowId,
59
+ };
60
+ }
61
+ resetSession() {
62
+ this.rotateSession(this.now());
63
+ this.persist(true);
64
+ return this.current();
65
+ }
66
+ forgetDevice() {
67
+ this.state = this.create();
68
+ this.windowId = this.createWindowId();
69
+ this.persist(true);
70
+ return this.current();
71
+ }
72
+ touch(force = false) {
73
+ const now = this.now();
74
+ const persisted = this.read();
75
+ if (persisted !== undefined)
76
+ this.state = persisted;
77
+ const idleExpired = now - this.state.lastSeenAt > this.sessionIdleMs;
78
+ const maxAgeExpired = now - this.state.sessionStartedAt >= this.sessionMaxAgeMs;
79
+ if (idleExpired || maxAgeExpired)
80
+ this.rotateSession(now);
81
+ this.state.lastSeenAt = now;
82
+ this.persist(force || idleExpired || maxAgeExpired);
83
+ }
84
+ rotateSession(now) {
85
+ this.state.sessionId = newUuidV7(now);
86
+ this.state.sessionStartedAt = now;
87
+ this.state.lastSeenAt = now;
88
+ }
89
+ create() {
90
+ const now = this.now();
91
+ return {
92
+ version: IDENTITY_STORAGE_VERSION,
93
+ deviceId: newUuidV7(now),
94
+ sessionId: newUuidV7(now),
95
+ sessionStartedAt: now,
96
+ lastSeenAt: now,
97
+ };
98
+ }
99
+ createWindowId() {
100
+ const windowId = newUuidV7(this.now());
101
+ try {
102
+ this.windowStorage?.setItem(this.windowStorageKey, windowId);
103
+ }
104
+ catch {
105
+ // The in-memory window id still provides tab scoping.
106
+ }
107
+ return windowId;
108
+ }
109
+ read() {
110
+ if (this.storage === undefined)
111
+ return undefined;
112
+ try {
113
+ const raw = this.storage.getItem(this.storageKey);
114
+ if (raw === null)
115
+ return undefined;
116
+ const value = JSON.parse(raw);
117
+ return isPersistedIdentity(value) ? value : undefined;
118
+ }
119
+ catch {
120
+ return undefined;
121
+ }
122
+ }
123
+ readWindowId() {
124
+ try {
125
+ const value = this.windowStorage?.getItem(this.windowStorageKey);
126
+ return value === undefined || value === null || value === '' ? undefined : value;
127
+ }
128
+ catch {
129
+ return undefined;
130
+ }
131
+ }
132
+ persist(force = false) {
133
+ const now = this.now();
134
+ if (!force && now - this.lastPersistedAt < this.writeThrottleMs)
135
+ return;
136
+ try {
137
+ this.storage?.setItem(this.storageKey, JSON.stringify(this.state));
138
+ this.lastPersistedAt = now;
139
+ }
140
+ catch {
141
+ // Storage failures degrade to in-memory identity.
142
+ }
143
+ }
144
+ }
145
+ function positiveOr(value, fallback) {
146
+ return typeof value === 'number' && value > 0 ? value : fallback;
147
+ }
148
+ //# sourceMappingURL=identity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity.js","sourceRoot":"","sources":["../src/identity.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @abto-app/event — public entry point.
3
+ *
4
+ * Browser SDK for LLM semantic event capture.
5
+ * Broad capture by default; hosts opt into masking modes when needed.
6
+ */
7
+ export { AbtoBrowserClient, initAbto, startLlmTrace, identify, reset, forgetDevice, getIdentity, setNode, getTraceHeaders, flush, } from './client.js';
8
+ export { defineEvents, validateEventProperties, type CustomEventDefinition, type CustomEventPayloadMap, type CustomPropertyDefinition, type EventRegistry, type InferCustomEventProperties, } from './event-registry.js';
9
+ export { ContextStore, newTraceId, newSpanId, newEventId, toTraceparent, type TraceHeaders, } from './context.js';
10
+ export { type BrowserIdentity } from './identity.js';
11
+ export { deriveTextMeta, saltedHash, tokenBucket, estimateTokens, resolveDomPolicy, NO_CAPTURE_ATTR, SENSITIVE_ATTR, INCLUDE_ATTR, type DeriveOptions, type DomCapturePolicy, } from './privacy.js';
12
+ export { installAutocapture, actionToInteraction, ATTR, type AutocaptureHit, type AutocaptureSink, type InteractionHit, type PageviewHit, type CapturedElement, type SemanticTarget, } from './autocapture.js';
13
+ export { serializeElementsChain, elementText } from './elements-chain.js';
14
+ export { Transport } from './transport.js';
15
+ export * from './types.js';
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACL,iBAAiB,EACjB,QAAQ,EACR,aAAa,EACb,QAAQ,EACR,KAAK,EACL,YAAY,EACZ,WAAW,EACX,OAAO,EACP,eAAe,EACf,KAAK,GACN,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,YAAY,EACZ,uBAAuB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,wBAAwB,EAC7B,KAAK,aAAa,EAClB,KAAK,0BAA0B,GAChC,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,YAAY,EACZ,UAAU,EACV,SAAS,EACT,UAAU,EACV,aAAa,EACb,KAAK,YAAY,GAClB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AAGrD,OAAO,EACL,cAAc,EACd,UAAU,EACV,WAAW,EACX,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,YAAY,EACZ,KAAK,aAAa,EAClB,KAAK,gBAAgB,GACtB,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,IAAI,EACJ,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,cAAc,GACpB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAG1E,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,cAAc,YAAY,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @abto-app/event — public entry point.
3
+ *
4
+ * Browser SDK for LLM semantic event capture.
5
+ * Broad capture by default; hosts opt into masking modes when needed.
6
+ */
7
+ // Primary API.
8
+ export { AbtoBrowserClient, initAbto, startLlmTrace, identify, reset, forgetDevice, getIdentity, setNode, getTraceHeaders, flush, } from './client.js';
9
+ export { defineEvents, validateEventProperties, } from './event-registry.js';
10
+ // Context helpers (trace id generation, header building).
11
+ export { ContextStore, newTraceId, newSpanId, newEventId, toTraceparent, } from './context.js';
12
+ export {} from './identity.js';
13
+ // Privacy primitives (so hosts can derive metadata themselves before capture).
14
+ export { deriveTextMeta, saltedHash, tokenBucket, estimateTokens, resolveDomPolicy, NO_CAPTURE_ATTR, SENSITIVE_ATTR, INCLUDE_ATTR, } from './privacy.js';
15
+ // Autocapture (for advanced hosts wiring their own sink).
16
+ export { installAutocapture, actionToInteraction, ATTR, } from './autocapture.js';
17
+ // elements_chain serialization (backbone for broad autocapture).
18
+ export { serializeElementsChain, elementText } from './elements-chain.js';
19
+ // Transport (exported mainly for typing / advanced use).
20
+ export { Transport } from './transport.js';
21
+ // Types.
22
+ export * from './types.js';
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAe;AACf,OAAO,EACL,iBAAiB,EACjB,QAAQ,EACR,aAAa,EACb,QAAQ,EACR,KAAK,EACL,YAAY,EACZ,WAAW,EACX,OAAO,EACP,eAAe,EACf,KAAK,GACN,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,YAAY,EACZ,uBAAuB,GAMxB,MAAM,qBAAqB,CAAC;AAE7B,0DAA0D;AAC1D,OAAO,EACL,YAAY,EACZ,UAAU,EACV,SAAS,EACT,UAAU,EACV,aAAa,GAEd,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAwB,MAAM,eAAe,CAAC;AAErD,+EAA+E;AAC/E,OAAO,EACL,cAAc,EACd,UAAU,EACV,WAAW,EACX,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,YAAY,GAGb,MAAM,cAAc,CAAC;AAEtB,0DAA0D;AAC1D,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,IAAI,GAOL,MAAM,kBAAkB,CAAC;AAE1B,iEAAiE;AACjE,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAE1E,yDAAyD;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,SAAS;AACT,cAAc,YAAY,CAAC"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Privacy layer — raw prompt/response 텍스트를 capture mode 에 맞는 파생 메타로 변환한다.
3
+ *
4
+ * Raw content is opt-in. Default capture modes retain derived metadata only,
5
+ * and DOM text/value stays masked unless data-abto-include explicitly allows it.
6
+ */
7
+ import type { CaptureMode, DerivedTextMeta, MaskMode, TokenBucket } from './types.js';
8
+ export declare const NO_CAPTURE_ATTR = "data-abto-no-capture";
9
+ export declare const SENSITIVE_ATTR = "data-abto-sensitive";
10
+ export declare const INCLUDE_ATTR = "data-abto-include";
11
+ /**
12
+ * Walk from `el` up to the document root looking for a capture marker.
13
+ * `no-capture` and `sensitive` are security boundaries and always win over an
14
+ * inner `include`. This prevents a deeply nested element from weakening a
15
+ * parent container's policy.
16
+ *
17
+ * - `no-capture` : drop the event entirely.
18
+ * - `sensitive` : capture the event but never the text payload.
19
+ * - `include` : explicit allow when no sensitive/no-capture ancestor exists.
20
+ * - `default` : follow the configured capture mode.
21
+ */
22
+ export type DomCapturePolicy = 'no-capture' | 'sensitive' | 'include' | 'default';
23
+ export declare function resolveDomPolicy(el: Element | null): DomCapturePolicy;
24
+ /** Map an exact token estimate into a coarse bucket so we don't leak length. */
25
+ export declare function tokenBucket(tokens: number): TokenBucket;
26
+ /** Very rough token estimate (~4 chars/token). Replace with a real tokenizer if needed. */
27
+ export declare function estimateTokens(text: string): number;
28
+ /**
29
+ * Salted SHA-256 hash, returned as `sha256:<hex>`.
30
+ * Async because SubtleCrypto is async. TODO: sync fallback for non-secure
31
+ * contexts (currently returns a marker so we never accidentally ship raw text).
32
+ */
33
+ export declare function saltedHash(text: string, salt?: string): Promise<string>;
34
+ export interface DeriveOptions {
35
+ salt?: string;
36
+ }
37
+ /** Sync DOM text/value masking. 'sensitive' redacts PII/secret runs; 'all' replaces content with a length marker. */
38
+ export declare function maskText(text: string, mode: MaskMode): string;
39
+ /**
40
+ * Convert raw text into the metadata permitted by `mode`.
41
+ *
42
+ * The host app passes the raw text; this function guarantees the raw text never
43
+ * appears in the returned object unless an explicit opt-in mode was chosen.
44
+ */
45
+ export declare function deriveTextMeta(text: string, mode: CaptureMode, opts?: DeriveOptions): Promise<DerivedTextMeta>;
46
+ //# sourceMappingURL=privacy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"privacy.d.ts","sourceRoot":"","sources":["../src/privacy.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,eAAe,EACf,QAAQ,EAER,WAAW,EACZ,MAAM,YAAY,CAAC;AASpB,eAAO,MAAM,eAAe,yBAAyB,CAAC;AACtD,eAAO,MAAM,cAAc,wBAAwB,CAAC;AACpD,eAAO,MAAM,YAAY,sBAAsB,CAAC;AAEhD;;;;;;;;;;GAUG;AACH,MAAM,MAAM,gBAAgB,GAAG,YAAY,GAAG,WAAW,GAAG,SAAS,GAAG,SAAS,CAAC;AAElF,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI,GAAG,gBAAgB,CAarE;AAMD,gFAAgF;AAChF,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAQvD;AAED,2FAA2F;AAC3F,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,SAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CASzE;AAoCD,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAUD,qHAAqH;AACrH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,MAAM,CAI7D;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,WAAW,EACjB,IAAI,GAAE,aAAkB,GACvB,OAAO,CAAC,eAAe,CAAC,CAoB1B"}
@@ -0,0 +1,140 @@
1
+ /**
2
+ * Privacy layer — raw prompt/response 텍스트를 capture mode 에 맞는 파생 메타로 변환한다.
3
+ *
4
+ * Raw content is opt-in. Default capture modes retain derived metadata only,
5
+ * and DOM text/value stays masked unless data-abto-include explicitly allows it.
6
+ */
7
+ /* ────────────────────────────────────────────────────────────────────────
8
+ * DOM markers (Part 3 §9, §33)
9
+ *
10
+ * Mirrors PostHog's ph-no-capture / ph-sensitive / ph-include with ABTO-owned
11
+ * attributes so it can coexist with PostHog.
12
+ * ──────────────────────────────────────────────────────────────────────── */
13
+ export const NO_CAPTURE_ATTR = 'data-abto-no-capture';
14
+ export const SENSITIVE_ATTR = 'data-abto-sensitive';
15
+ export const INCLUDE_ATTR = 'data-abto-include';
16
+ export function resolveDomPolicy(el) {
17
+ let sensitive = false;
18
+ let include = false;
19
+ let node = el;
20
+ while (node) {
21
+ if (node.hasAttribute(NO_CAPTURE_ATTR))
22
+ return 'no-capture';
23
+ if (node.hasAttribute(SENSITIVE_ATTR))
24
+ sensitive = true;
25
+ if (node.hasAttribute(INCLUDE_ATTR))
26
+ include = true;
27
+ node = node.parentElement;
28
+ }
29
+ if (sensitive)
30
+ return 'sensitive';
31
+ if (include)
32
+ return 'include';
33
+ return 'default';
34
+ }
35
+ /* ────────────────────────────────────────────────────────────────────────
36
+ * Derived value helpers (Part 4 §15)
37
+ * ──────────────────────────────────────────────────────────────────────── */
38
+ /** Map an exact token estimate into a coarse bucket so we don't leak length. */
39
+ export function tokenBucket(tokens) {
40
+ if (tokens <= 0)
41
+ return '0';
42
+ if (tokens <= 50)
43
+ return '1-50';
44
+ if (tokens <= 200)
45
+ return '51-200';
46
+ if (tokens <= 500)
47
+ return '201-500';
48
+ if (tokens <= 1000)
49
+ return '501-1000';
50
+ if (tokens <= 2000)
51
+ return '1001-2000';
52
+ return '2000+';
53
+ }
54
+ /** Very rough token estimate (~4 chars/token). Replace with a real tokenizer if needed. */
55
+ export function estimateTokens(text) {
56
+ return Math.ceil(text.length / 4);
57
+ }
58
+ /**
59
+ * Salted SHA-256 hash, returned as `sha256:<hex>`.
60
+ * Async because SubtleCrypto is async. TODO: sync fallback for non-secure
61
+ * contexts (currently returns a marker so we never accidentally ship raw text).
62
+ */
63
+ export async function saltedHash(text, salt = '') {
64
+ const subtle = globalThis.crypto?.subtle;
65
+ if (!subtle)
66
+ return 'sha256:unavailable';
67
+ const bytes = new TextEncoder().encode(`${salt}\u0000${text}`);
68
+ const digest = await subtle.digest('SHA-256', bytes);
69
+ const hex = Array.from(new Uint8Array(digest))
70
+ .map((b) => b.toString(16).padStart(2, '0'))
71
+ .join('');
72
+ return `sha256:${hex}`;
73
+ }
74
+ /* ── lightweight content heuristics (Part 4 §15) ───────────────────────────
75
+ * These are intentionally cheap and conservative. The semantic task/PII
76
+ * classifier is a P2 item (Part 6 §29). TODO: pluggable classifier hook.
77
+ */
78
+ const CODE_HINT = /(function\s|=>|;\n|\{\n|import\s|class\s|def\s|<\/?[a-z]+>)/;
79
+ const PII_PATTERN = String.raw `(\b\d{3}-\d{2}-\d{4}\b|\b\d{16}\b|[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,})`;
80
+ const SECRET_PATTERN = String.raw `(sk-[A-Za-z0-9]{16,}|AKIA[0-9A-Z]{16}|-----BEGIN [A-Z ]+KEY-----)`;
81
+ const PII_HINT = new RegExp(PII_PATTERN);
82
+ const SECRET_HINT = new RegExp(SECRET_PATTERN);
83
+ const PII_REDACTION = new RegExp(PII_PATTERN, 'g');
84
+ const SECRET_REDACTION = new RegExp(SECRET_PATTERN, 'g');
85
+ function containsCode(text) {
86
+ return CODE_HINT.test(text);
87
+ }
88
+ function detectPII(text) {
89
+ return PII_HINT.test(text);
90
+ }
91
+ function detectSensitiveCategory(text) {
92
+ if (SECRET_HINT.test(text))
93
+ return 'credential';
94
+ if (PII_HINT.test(text))
95
+ return 'pii';
96
+ // TODO: healthcare/legal/finance classification (P2).
97
+ return null;
98
+ }
99
+ /** Mask runs that look like PII / secrets before producing an excerpt. */
100
+ function redact(text) {
101
+ let out = text;
102
+ out = out.replace(SECRET_REDACTION, '«redacted-secret»');
103
+ out = out.replace(PII_REDACTION, '«redacted-pii»');
104
+ return out;
105
+ }
106
+ /** Sync DOM text/value masking. 'sensitive' redacts PII/secret runs; 'all' replaces content with a length marker. */
107
+ export function maskText(text, mode) {
108
+ if (mode === 'off' || text === '')
109
+ return text;
110
+ if (mode === 'all')
111
+ return `«masked:${text.length}»`;
112
+ return redact(text);
113
+ }
114
+ /**
115
+ * Convert raw text into the metadata permitted by `mode`.
116
+ *
117
+ * The host app passes the raw text; this function guarantees the raw text never
118
+ * appears in the returned object unless an explicit opt-in mode was chosen.
119
+ */
120
+ export async function deriveTextMeta(text, mode, opts = {}) {
121
+ const meta = { capture_mode: mode };
122
+ if (mode === 'off')
123
+ return meta;
124
+ // hash is included for every non-off mode (cheap join key without content).
125
+ meta.hash = await saltedHash(text, opts.salt ?? '');
126
+ if (mode === 'hash')
127
+ return meta;
128
+ // metadata_only and full: length + bucket + heuristic flags.
129
+ meta.length_chars = text.length;
130
+ meta.token_bucket = tokenBucket(estimateTokens(text));
131
+ meta.contains_code = containsCode(text);
132
+ meta.pii_detected = detectPII(text);
133
+ meta.sensitive_category = detectSensitiveCategory(text);
134
+ if (mode === 'metadata_only')
135
+ return meta;
136
+ // mode === 'full' — strong opt-in. Callers must enforce consent/retention.
137
+ meta.excerpt = text;
138
+ return meta;
139
+ }
140
+ //# sourceMappingURL=privacy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"privacy.js","sourceRoot":"","sources":["../src/privacy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Scroll depth tracking (PostHog ScrollManager 모델).
3
+ * scroll 은 사용자가 내린 스크롤 깊이, content 는 화면에 보인 콘텐츠의 하한이다
4
+ * (예: 문서 1000px·뷰포트 500px 에서 스크롤 0 이면 scroll 0, content 500).
5
+ */
6
+ export interface ScrollDepthSnapshot {
7
+ last_scroll_y?: number;
8
+ last_scroll_percentage?: number;
9
+ max_scroll_y?: number;
10
+ max_scroll_percentage?: number;
11
+ last_content_y?: number;
12
+ last_content_percentage?: number;
13
+ max_content_y?: number;
14
+ max_content_percentage?: number;
15
+ }
16
+ export interface ScrollDepthTracker {
17
+ /** pageleave 에 실을 현재 페이지의 스크롤 깊이. 아직 측정 전이면 undefined. */
18
+ snapshot(): ScrollDepthSnapshot | undefined;
19
+ /** 새 pageview 에서 호출. 새 페이지 DOM 이 그려진 다음 tick 에 초기값을 심는다. */
20
+ reset(): void;
21
+ dispose(): void;
22
+ }
23
+ export declare function createScrollDepthTracker(): ScrollDepthTracker;
24
+ //# sourceMappingURL=scroll-depth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scroll-depth.d.ts","sourceRoot":"","sources":["../src/scroll-depth.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,mBAAmB;IAClC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAWD,MAAM,WAAW,kBAAkB;IACjC,0DAA0D;IAC1D,QAAQ,IAAI,mBAAmB,GAAG,SAAS,CAAC;IAC5C,4DAA4D;IAC5D,KAAK,IAAI,IAAI,CAAC;IACd,OAAO,IAAI,IAAI,CAAC;CACjB;AAUD,wBAAgB,wBAAwB,IAAI,kBAAkB,CAiE7D"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Scroll depth tracking (PostHog ScrollManager 모델).
3
+ * scroll 은 사용자가 내린 스크롤 깊이, content 는 화면에 보인 콘텐츠의 하한이다
4
+ * (예: 문서 1000px·뷰포트 500px 에서 스크롤 0 이면 scroll 0, content 500).
5
+ */
6
+ const clamp01 = (value) => Math.min(1, Math.max(0, value));
7
+ // 스크롤 가능 높이가 0 에 가까우면(내릴 것이 없으면) 전부 본 것으로 친다.
8
+ const percentage = (y, height) => (height <= 1 ? 1 : clamp01(y / height));
9
+ // window 밖 스크롤러(내부 스크롤 영역)의 scroll 이벤트도 받으려면 capture 가 필요하다.
10
+ const USE_CAPTURE = true;
11
+ export function createScrollDepthTracker() {
12
+ if (typeof window === 'undefined' || typeof document === 'undefined') {
13
+ return { snapshot: () => undefined, reset: () => { }, dispose: () => { } };
14
+ }
15
+ let context;
16
+ let disposed = false;
17
+ const update = () => {
18
+ if (disposed)
19
+ return;
20
+ const root = document.documentElement;
21
+ const scrollY = window.scrollY || window.pageYOffset || root.scrollTop || 0;
22
+ const scrollHeight = Math.max(0, root.scrollHeight - root.clientHeight);
23
+ const contentY = scrollY + root.clientHeight;
24
+ const contentHeight = root.scrollHeight;
25
+ context = {
26
+ lastScrollY: scrollY,
27
+ maxScrollY: Math.max(scrollY, context?.maxScrollY ?? 0),
28
+ maxScrollHeight: Math.max(scrollHeight, context?.maxScrollHeight ?? 0),
29
+ lastContentY: contentY,
30
+ maxContentY: Math.max(contentY, context?.maxContentY ?? 0),
31
+ maxContentHeight: Math.max(contentHeight, context?.maxContentHeight ?? 0),
32
+ };
33
+ };
34
+ const reset = () => {
35
+ context = undefined;
36
+ // SPA 라우팅 직후에는 새 페이지 DOM 이 아직 없을 수 있어 다음 tick 에 측정한다.
37
+ setTimeout(update, 0);
38
+ };
39
+ window.addEventListener('scroll', update, USE_CAPTURE);
40
+ window.addEventListener('scrollend', update, USE_CAPTURE);
41
+ window.addEventListener('resize', update);
42
+ reset();
43
+ return {
44
+ snapshot: () => {
45
+ if (!context)
46
+ return undefined;
47
+ // 999.5px/1000px 스크롤도 100% 로 치도록 px 는 ceil 후 비율을 구한다.
48
+ const lastScrollY = Math.ceil(context.lastScrollY);
49
+ const maxScrollY = Math.ceil(context.maxScrollY);
50
+ const maxScrollHeight = Math.ceil(context.maxScrollHeight);
51
+ const lastContentY = Math.ceil(context.lastContentY);
52
+ const maxContentY = Math.ceil(context.maxContentY);
53
+ const maxContentHeight = Math.ceil(context.maxContentHeight);
54
+ return {
55
+ last_scroll_y: lastScrollY,
56
+ last_scroll_percentage: percentage(lastScrollY, maxScrollHeight),
57
+ max_scroll_y: maxScrollY,
58
+ max_scroll_percentage: percentage(maxScrollY, maxScrollHeight),
59
+ last_content_y: lastContentY,
60
+ last_content_percentage: percentage(lastContentY, maxContentHeight),
61
+ max_content_y: maxContentY,
62
+ max_content_percentage: percentage(maxContentY, maxContentHeight),
63
+ };
64
+ },
65
+ reset,
66
+ dispose: () => {
67
+ disposed = true;
68
+ window.removeEventListener('scroll', update, USE_CAPTURE);
69
+ window.removeEventListener('scrollend', update, USE_CAPTURE);
70
+ window.removeEventListener('resize', update);
71
+ },
72
+ };
73
+ }
74
+ //# sourceMappingURL=scroll-depth.js.map