@alisio/plugin-telemetry 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 (53) hide show
  1. package/.agents/skills/telemetry/SKILL.md +52 -0
  2. package/LICENSE +21 -0
  3. package/README.md +188 -0
  4. package/cover.svg +54 -0
  5. package/dist/commands.d.ts +19 -0
  6. package/dist/commands.d.ts.map +1 -0
  7. package/dist/commands.js +298 -0
  8. package/dist/commands.js.map +1 -0
  9. package/dist/config.d.ts +145 -0
  10. package/dist/config.d.ts.map +1 -0
  11. package/dist/config.js +524 -0
  12. package/dist/config.js.map +1 -0
  13. package/dist/database.d.ts +16 -0
  14. package/dist/database.d.ts.map +1 -0
  15. package/dist/database.js +67 -0
  16. package/dist/database.js.map +1 -0
  17. package/dist/events.d.ts +135 -0
  18. package/dist/events.d.ts.map +1 -0
  19. package/dist/events.js +255 -0
  20. package/dist/events.js.map +1 -0
  21. package/dist/format.d.ts +36 -0
  22. package/dist/format.d.ts.map +1 -0
  23. package/dist/format.js +49 -0
  24. package/dist/format.js.map +1 -0
  25. package/dist/index.d.ts +38 -0
  26. package/dist/index.d.ts.map +1 -0
  27. package/dist/index.js +78 -0
  28. package/dist/index.js.map +1 -0
  29. package/dist/otlp.d.ts +69 -0
  30. package/dist/otlp.d.ts.map +1 -0
  31. package/dist/otlp.js +616 -0
  32. package/dist/otlp.js.map +1 -0
  33. package/dist/redact.d.ts +36 -0
  34. package/dist/redact.d.ts.map +1 -0
  35. package/dist/redact.js +163 -0
  36. package/dist/redact.js.map +1 -0
  37. package/dist/runtime.d.ts +80 -0
  38. package/dist/runtime.d.ts.map +1 -0
  39. package/dist/runtime.js +290 -0
  40. package/dist/runtime.js.map +1 -0
  41. package/dist/store.d.ts +188 -0
  42. package/dist/store.d.ts.map +1 -0
  43. package/dist/store.js +539 -0
  44. package/dist/store.js.map +1 -0
  45. package/dist/tools.d.ts +21 -0
  46. package/dist/tools.d.ts.map +1 -0
  47. package/dist/tools.js +292 -0
  48. package/dist/tools.js.map +1 -0
  49. package/dist/version.d.ts +3 -0
  50. package/dist/version.d.ts.map +1 -0
  51. package/dist/version.js +3 -0
  52. package/dist/version.js.map +1 -0
  53. package/package.json +54 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"otlp.js","sourceRoot":"","sources":["../src/otlp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Allowlist-first redaction for opt-in content capture.
3
+ *
4
+ * The default posture is metadata-only: no prompt, completion, tool argument or
5
+ * tool result text is ever captured unless the operator turns a specific capture
6
+ * flag on. When capture is enabled this module is the only door content passes
7
+ * through.
8
+ *
9
+ * WHY ALLOWLIST, NOT DENYLIST. A pure denylist fails the moment a new credential
10
+ * format appears. Here the safe character set is explicitly allowed and
11
+ * everything outside it is neutralized; on top of that, a stack of
12
+ * credential-shape rules removes bearer headers, tokens, private keys and
13
+ * absolute machine paths. Unknown secret-named object keys are dropped entirely
14
+ * rather than passed through. In `strict` mode long high-entropy runs are also
15
+ * removed. This is defense in depth, not a guarantee: never capture more than
16
+ * you are willing to leak.
17
+ */
18
+ export type RedactionMode = "strict" | "standard";
19
+ export interface RedactionOptions {
20
+ mode: RedactionMode;
21
+ /** Hard per-field cap after redaction. Defaults to 2000 characters. */
22
+ maxLength?: number;
23
+ }
24
+ /** True when an object key names a secret and its value must be dropped. */
25
+ export declare function isForbiddenKey(key: string): boolean;
26
+ /** Redact a single string. Always bounded; never throws. */
27
+ export declare function redactText(text: string, options: RedactionOptions): string;
28
+ /**
29
+ * Redact a structured value: strings are redacted, secret-named keys are
30
+ * dropped, depth and breadth are bounded. Cycles and exotic values collapse to
31
+ * a safe placeholder instead of throwing.
32
+ */
33
+ export declare function redactValue(value: unknown, options: RedactionOptions, depth?: number): unknown;
34
+ /** Redact a value and serialize it as a bounded JSON string. */
35
+ export declare function redactJson(value: unknown, options: RedactionOptions): string;
36
+ //# sourceMappingURL=redact.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redact.d.ts","sourceRoot":"","sources":["../src/redact.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,UAAU,CAAC;AAElD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,aAAa,CAAC;IACpB,uEAAuE;IACvE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAwFD,4EAA4E;AAC5E,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEnD;AASD,4DAA4D;AAC5D,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAU1E;AAKD;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,KAAK,SAAI,GAAG,OAAO,CAwBzF;AAED,gEAAgE;AAChE,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAS5E"}
package/dist/redact.js ADDED
@@ -0,0 +1,163 @@
1
+ /**
2
+ * Allowlist-first redaction for opt-in content capture.
3
+ *
4
+ * The default posture is metadata-only: no prompt, completion, tool argument or
5
+ * tool result text is ever captured unless the operator turns a specific capture
6
+ * flag on. When capture is enabled this module is the only door content passes
7
+ * through.
8
+ *
9
+ * WHY ALLOWLIST, NOT DENYLIST. A pure denylist fails the moment a new credential
10
+ * format appears. Here the safe character set is explicitly allowed and
11
+ * everything outside it is neutralized; on top of that, a stack of
12
+ * credential-shape rules removes bearer headers, tokens, private keys and
13
+ * absolute machine paths. Unknown secret-named object keys are dropped entirely
14
+ * rather than passed through. In `strict` mode long high-entropy runs are also
15
+ * removed. This is defense in depth, not a guarantee: never capture more than
16
+ * you are willing to leak.
17
+ */
18
+ const DEFAULT_MAX_LENGTH = 2_000;
19
+ const MARKER = "[redacted]";
20
+ /** Object keys whose values must never be captured, regardless of content. */
21
+ const FORBIDDEN_KEY = /^(?:authorization|proxy[-_]?authorization|token|access[-_]?token|refresh[-_]?token|secret|client[-_]?secret|password|passwd|pwd|api[-_]?key|apikey|access[-_]?key|private[-_]?key|credential|credentials|bearer|cookie|set[-_]?cookie|x[-_]?api[-_]?key)$/i;
22
+ /**
23
+ * Credential-shape rules. Order matters: whole PEM blocks and authorization
24
+ * headers are removed before the narrower token rules run.
25
+ */
26
+ const RULES = [
27
+ {
28
+ // A PEM block, including the body, so the key material never survives.
29
+ pattern: /-{5}BEGIN[^-]{0,40}PRIVATE KEY-{5}[\s\S]*?-{5}END[^-]{0,40}PRIVATE KEY-{5}/g,
30
+ replacement: MARKER,
31
+ },
32
+ {
33
+ pattern: /-{5}BEGIN[^-]{0,40}PRIVATE KEY-{5}/g,
34
+ replacement: MARKER,
35
+ },
36
+ {
37
+ // Authorization / proxy-authorization values, whatever scheme follows. The
38
+ // whole line remainder is removed so a scheme token can never survive.
39
+ pattern: /\b(?:authorization|proxy-authorization)\b\s*[:=][^"\n]*/gi,
40
+ replacement: `authorization: ${MARKER}`,
41
+ },
42
+ {
43
+ pattern: /\bbearer\s+[A-Za-z0-9._~+/=-]{12,}/gi,
44
+ replacement: `bearer ${MARKER}`,
45
+ },
46
+ {
47
+ // Common provider token prefixes.
48
+ pattern: /\b(?:sk|pk|rk|ghp|gho|ghu|ghs|github_pat|glpat|xox[abprs]|AKIA|ASIA|npm|dop_v1|pypi|hf)[_-][A-Za-z0-9_-]{12,}/g,
49
+ replacement: MARKER,
50
+ },
51
+ {
52
+ // JSON Web Tokens.
53
+ pattern: /\beyJ[A-Za-z0-9_-]{6,}\.[A-Za-z0-9_-]{6,}\.[A-Za-z0-9_-]{6,}/g,
54
+ replacement: MARKER,
55
+ },
56
+ {
57
+ // key=value / key: value secret assignments.
58
+ pattern: /(?:api[_-]?key|access[_-]?key|client[_-]?secret|private[_-]?key|token|secret|password|passwd|pwd)\s*[:=]\s*["']?[^\s"',;]{6,}/gi,
59
+ replacement: `${MARKER}`,
60
+ },
61
+ {
62
+ // Environment-style secret assignments, e.g. a token name set to a value.
63
+ pattern: /\b[A-Z][A-Z0-9_]*(?:TOKEN|SECRET|PASSWORD|PASSWD|API_KEY|PRIVATE_KEY)[A-Z0-9_]*\s*=\s*\S+/g,
64
+ replacement: `${MARKER}`,
65
+ },
66
+ {
67
+ // Absolute personal home paths.
68
+ pattern: /(?<![A-Za-z0-9._-])\/(?:home|Users)\/[^\s"'`,;:)\]}]+/g,
69
+ replacement: "<path>",
70
+ },
71
+ {
72
+ pattern: /(?<![A-Za-z0-9._-])\/root\/[^\s"'`,;:)\]}]*/g,
73
+ replacement: "<path>",
74
+ },
75
+ {
76
+ pattern: /(?<![A-Za-z0-9])[A-Za-z]:[\\/]{1,2}Users[\\/]{1,2}[^\s"'`,;:)\]}]+/g,
77
+ replacement: "<path>",
78
+ },
79
+ {
80
+ // strict: long base64-ish or hex runs that no human sentence contains.
81
+ pattern: /[A-Za-z0-9+/]{48,}={0,2}/g,
82
+ replacement: MARKER,
83
+ strictOnly: true,
84
+ },
85
+ {
86
+ pattern: /\b[a-f0-9]{48,}\b/gi,
87
+ replacement: MARKER,
88
+ strictOnly: true,
89
+ },
90
+ ];
91
+ /** True when an object key names a secret and its value must be dropped. */
92
+ export function isForbiddenKey(key) {
93
+ return FORBIDDEN_KEY.test(key);
94
+ }
95
+ /** Neutralize characters outside the allowlisted printable set, keeping \n and \t. */
96
+ function allowlistCharacters(text) {
97
+ return text.replace(/[\p{Cc}\p{Cf}]/gu, (character) => character === "\n" || character === "\t" || character === "\r" ? character : " ");
98
+ }
99
+ /** Redact a single string. Always bounded; never throws. */
100
+ export function redactText(text, options) {
101
+ const max = options.maxLength ?? DEFAULT_MAX_LENGTH;
102
+ if (typeof text !== "string")
103
+ return "";
104
+ let value = allowlistCharacters(text);
105
+ for (const rule of RULES) {
106
+ if (rule.strictOnly && options.mode !== "strict")
107
+ continue;
108
+ value = value.replace(rule.pattern, rule.replacement);
109
+ }
110
+ if (value.length > max)
111
+ value = value.slice(0, max);
112
+ return value;
113
+ }
114
+ const MAX_DEPTH = 6;
115
+ const MAX_ENTRIES = 200;
116
+ /**
117
+ * Redact a structured value: strings are redacted, secret-named keys are
118
+ * dropped, depth and breadth are bounded. Cycles and exotic values collapse to
119
+ * a safe placeholder instead of throwing.
120
+ */
121
+ export function redactValue(value, options, depth = 0) {
122
+ if (value === null || value === undefined)
123
+ return null;
124
+ if (typeof value === "string")
125
+ return redactText(value, options);
126
+ if (typeof value === "number" || typeof value === "boolean" || typeof value === "bigint")
127
+ return typeof value === "bigint" ? value.toString() : value;
128
+ if (depth >= MAX_DEPTH)
129
+ return MARKER;
130
+ if (Array.isArray(value)) {
131
+ return value.slice(0, MAX_ENTRIES).map((item) => redactValue(item, options, depth + 1));
132
+ }
133
+ if (typeof value === "object") {
134
+ const out = {};
135
+ let count = 0;
136
+ for (const [key, item] of Object.entries(value)) {
137
+ if (count >= MAX_ENTRIES)
138
+ break;
139
+ count += 1;
140
+ if (isForbiddenKey(key)) {
141
+ out[key] = MARKER;
142
+ continue;
143
+ }
144
+ out[key] = redactValue(item, options, depth + 1);
145
+ }
146
+ return out;
147
+ }
148
+ return String(value);
149
+ }
150
+ /** Redact a value and serialize it as a bounded JSON string. */
151
+ export function redactJson(value, options) {
152
+ let serialized;
153
+ try {
154
+ serialized = JSON.stringify(redactValue(value, options));
155
+ }
156
+ catch {
157
+ serialized = MARKER;
158
+ }
159
+ if (typeof serialized !== "string")
160
+ serialized = MARKER;
161
+ return redactText(serialized, options);
162
+ }
163
+ //# sourceMappingURL=redact.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redact.js","sourceRoot":"","sources":["../src/redact.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAUH,MAAM,kBAAkB,GAAG,KAAK,CAAC;AACjC,MAAM,MAAM,GAAG,YAAY,CAAC;AAE5B,8EAA8E;AAC9E,MAAM,aAAa,GACjB,4PAA4P,CAAC;AAQ/P;;;GAGG;AACH,MAAM,KAAK,GAAW;IACpB;QACE,uEAAuE;QACvE,OAAO,EAAE,6EAA6E;QACtF,WAAW,EAAE,MAAM;KACpB;IACD;QACE,OAAO,EAAE,qCAAqC;QAC9C,WAAW,EAAE,MAAM;KACpB;IACD;QACE,2EAA2E;QAC3E,uEAAuE;QACvE,OAAO,EAAE,2DAA2D;QACpE,WAAW,EAAE,kBAAkB,MAAM,EAAE;KACxC;IACD;QACE,OAAO,EAAE,sCAAsC;QAC/C,WAAW,EAAE,UAAU,MAAM,EAAE;KAChC;IACD;QACE,kCAAkC;QAClC,OAAO,EACL,gHAAgH;QAClH,WAAW,EAAE,MAAM;KACpB;IACD;QACE,mBAAmB;QACnB,OAAO,EAAE,+DAA+D;QACxE,WAAW,EAAE,MAAM;KACpB;IACD;QACE,6CAA6C;QAC7C,OAAO,EACL,iIAAiI;QACnI,WAAW,EAAE,GAAG,MAAM,EAAE;KACzB;IACD;QACE,0EAA0E;QAC1E,OAAO,EACL,4FAA4F;QAC9F,WAAW,EAAE,GAAG,MAAM,EAAE;KACzB;IACD;QACE,gCAAgC;QAChC,OAAO,EAAE,wDAAwD;QACjE,WAAW,EAAE,QAAQ;KACtB;IACD;QACE,OAAO,EAAE,8CAA8C;QACvD,WAAW,EAAE,QAAQ;KACtB;IACD;QACE,OAAO,EAAE,qEAAqE;QAC9E,WAAW,EAAE,QAAQ;KACtB;IACD;QACE,uEAAuE;QACvE,OAAO,EAAE,2BAA2B;QACpC,WAAW,EAAE,MAAM;QACnB,UAAU,EAAE,IAAI;KACjB;IACD;QACE,OAAO,EAAE,qBAAqB;QAC9B,WAAW,EAAE,MAAM;QACnB,UAAU,EAAE,IAAI;KACjB;CACF,CAAC;AAEF,4EAA4E;AAC5E,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,OAAO,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACjC,CAAC;AAED,sFAAsF;AACtF,SAAS,mBAAmB,CAAC,IAAY;IACvC,OAAO,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC,SAAS,EAAE,EAAE,CACpD,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CACjF,CAAC;AACJ,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,OAAyB;IAChE,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,IAAI,kBAAkB,CAAC;IACpD,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IACxC,IAAI,KAAK,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACtC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,UAAU,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ;YAAE,SAAS;QAC3D,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,GAAG,GAAG;QAAE,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACpD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,SAAS,GAAG,CAAC,CAAC;AACpB,MAAM,WAAW,GAAG,GAAG,CAAC;AAExB;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,KAAc,EAAE,OAAyB,EAAE,KAAK,GAAG,CAAC;IAC9E,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACvD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACjE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,QAAQ;QACtF,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;IAC9D,IAAI,KAAK,IAAI,SAAS;QAAE,OAAO,MAAM,CAAC;IACtC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;IAC1F,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,GAAG,GAA4B,EAAE,CAAC;QACxC,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,EAAE,CAAC;YAC3E,IAAI,KAAK,IAAI,WAAW;gBAAE,MAAM;YAChC,KAAK,IAAI,CAAC,CAAC;YACX,IAAI,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;gBACxB,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;gBAClB,SAAS;YACX,CAAC;YACD,GAAG,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QACnD,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,UAAU,CAAC,KAAc,EAAE,OAAyB;IAClE,IAAI,UAAkB,CAAC;IACvB,IAAI,CAAC;QACH,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;IAC3D,CAAC;IAAC,MAAM,CAAC;QACP,UAAU,GAAG,MAAM,CAAC;IACtB,CAAC;IACD,IAAI,OAAO,UAAU,KAAK,QAAQ;QAAE,UAAU,GAAG,MAAM,CAAC;IACxD,OAAO,UAAU,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AACzC,CAAC"}
@@ -0,0 +1,80 @@
1
+ /**
2
+ * The telemetry runtime: wires the synchronous event handler, the bounded
3
+ * buffer, the local store, the opt-in OTLP exporter and the flush scheduler.
4
+ *
5
+ * FAIL-SAFE CONSTRUCTION. If configuration is invalid or the database cannot be
6
+ * opened, the runtime reports an actionable error and disables telemetry rather
7
+ * than failing plugin setup. The event handler then does nothing.
8
+ *
9
+ * FLUSH. `flush()` drains the buffer, derives best-effort turn durations, writes
10
+ * records to SQLite in one transaction, periodically optimizes the database, and
11
+ * then asks the exporter to derive and send OTLP batches. Every failure is
12
+ * captured in the returned report; `flush()` itself never rejects.
13
+ */
14
+ import type { SessionInfo } from "@alisio/sdk";
15
+ import { type ConfigResult, type Environment, type TelemetryConfig, type TelemetryOverrides, type TelemetryPaths } from "./config.js";
16
+ import { type SqlDatabase } from "./database.js";
17
+ import { type EventBuffer, type EventEnvelope } from "./events.js";
18
+ import { type Exporter, type ExportResult, type Fetcher, type Sleeper } from "./otlp.js";
19
+ import { type Store } from "./store.js";
20
+ export type Clock = () => number;
21
+ export interface FlushReport {
22
+ records: number;
23
+ content: number;
24
+ dropped: number;
25
+ queueSize: number;
26
+ exports: ExportResult[];
27
+ optimized: boolean;
28
+ error: string | null;
29
+ }
30
+ export interface PruneReport {
31
+ cutoff: string;
32
+ retentionDays: number;
33
+ deleted: {
34
+ runs: number;
35
+ turns: number;
36
+ toolCalls: number;
37
+ content: number;
38
+ };
39
+ note: string;
40
+ }
41
+ export interface TelemetryRuntimeOptions {
42
+ env?: Environment;
43
+ paths?: TelemetryPaths;
44
+ overrides?: TelemetryOverrides;
45
+ /** Injected config file content (tests); skips disk reads for the file. */
46
+ configFile?: unknown;
47
+ skipConfigFile?: boolean;
48
+ fetcher?: Fetcher;
49
+ now?: Clock;
50
+ sleep?: Sleeper;
51
+ /**
52
+ * Database opener seam. Production wires the host storage port
53
+ * (`api.storage.sqlite`); tests inject an in-process `SqlDatabase`.
54
+ */
55
+ openDatabase?: (path: string) => SqlDatabase;
56
+ /** Scheduler period; `null` disables the background flush (tests, embedders). */
57
+ autoFlushMs?: number | null;
58
+ /** Export look-back window. Defaults to 24 hours. */
59
+ exportWindowMs?: number;
60
+ }
61
+ export interface TelemetryRuntime {
62
+ configResult: ConfigResult;
63
+ paths: TelemetryPaths;
64
+ env: Environment;
65
+ config: TelemetryConfig | null;
66
+ configError: string | null;
67
+ store: Store | null;
68
+ buffer: EventBuffer;
69
+ handler: (event: EventEnvelope) => void;
70
+ exporter: Exporter | null;
71
+ now: Clock;
72
+ start(): void;
73
+ stop(): void;
74
+ flush(): Promise<FlushReport>;
75
+ captureTranscript(info: Pick<SessionInfo, "sessionId" | "messages">): Promise<number>;
76
+ prune(days?: number): PruneReport;
77
+ dispose(): Promise<void>;
78
+ }
79
+ export declare function createTelemetryRuntime(options?: TelemetryRuntimeOptions): TelemetryRuntime;
80
+ //# sourceMappingURL=runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,290 @@
1
+ import { loadTelemetryConfig, resolveTelemetryPaths, } from "./config.js";
2
+ import { configureDatabase } from "./database.js";
3
+ import { createEventBuffer, createEventHandler, } from "./events.js";
4
+ import { createExporter, } from "./otlp.js";
5
+ import { redactText } from "./redact.js";
6
+ import { createStore } from "./store.js";
7
+ const OPTIMIZE_EVERY = 20;
8
+ const MAX_TRANSCRIPT_MESSAGES = 200;
9
+ const MAX_TRACKED_RUNS = 5_000;
10
+ const MAX_DRAIN_PER_FLUSH = 5_000;
11
+ function isoAt(now, offsetMs = 0) {
12
+ return new Date(now() + offsetMs).toISOString();
13
+ }
14
+ export function createTelemetryRuntime(options = {}) {
15
+ const env = options.env ?? process.env;
16
+ const paths = options.paths ?? resolveTelemetryPaths(env);
17
+ const now = options.now ?? (() => Date.now());
18
+ const fetcher = options.fetcher ?? fetch;
19
+ const sleep = options.sleep ??
20
+ ((milliseconds) => new Promise((resolve) => setTimeout(resolve, milliseconds)));
21
+ const configResult = loadTelemetryConfig({
22
+ env,
23
+ paths,
24
+ ...(options.overrides === undefined ? {} : { overrides: options.overrides }),
25
+ ...(options.configFile === undefined ? {} : { file: options.configFile }),
26
+ ...(options.skipConfigFile === true ? { skipFile: true } : {}),
27
+ });
28
+ const config = configResult.ok ? configResult.config : null;
29
+ let configError = configResult.ok ? null : configResult.error;
30
+ const capture = config?.capture ?? {
31
+ prompts: false,
32
+ completions: false,
33
+ toolArguments: false,
34
+ toolResults: false,
35
+ };
36
+ const redaction = config?.redaction ?? { mode: "strict" };
37
+ const buffer = createEventBuffer(config?.batch.maxQueue ?? 10_000);
38
+ const handler = createEventHandler({
39
+ buffer,
40
+ capture,
41
+ redaction,
42
+ onError: () => {
43
+ // A normalization failure is counted as a drop; it must never escape.
44
+ },
45
+ });
46
+ let store = null;
47
+ let database = null;
48
+ if (config !== null) {
49
+ try {
50
+ if (options.openDatabase === undefined)
51
+ throw new Error("the host did not provide a SQLite storage port");
52
+ // The host opens and owns the file; harden its port (WAL, busy_timeout,
53
+ // foreign_keys, synchronous) and permissions before touching any schema.
54
+ database = configureDatabase(options.openDatabase(paths.database), paths.database);
55
+ store = createStore(database);
56
+ store.migrate();
57
+ }
58
+ catch (error) {
59
+ store = null;
60
+ configError = `telemetry database unavailable at configured path: ${error instanceof Error ? error.message : String(error)}`;
61
+ try {
62
+ database?.close();
63
+ }
64
+ catch {
65
+ // Ignore.
66
+ }
67
+ database = null;
68
+ }
69
+ }
70
+ const tokenEnvName = config?.otlp.tokenEnv ?? "ALISIO_TELEMETRY_OTLP_TOKEN";
71
+ const exporter = config !== null && store !== null && config.otlp.enabled && config.otlp.endpoint !== null
72
+ ? createExporter({
73
+ store,
74
+ settings: config.otlp,
75
+ fetcher,
76
+ now,
77
+ sleep,
78
+ // Read at flush time; never stored, logged or returned.
79
+ token: env[tokenEnvName] ?? null,
80
+ buildSnapshot: (range) => store.snapshot(range, 5_000),
81
+ ...(options.exportWindowMs === undefined ? {} : { windowMs: options.exportWindowMs }),
82
+ })
83
+ : null;
84
+ // Best-effort per-turn latency: the gap between consecutive events of a run.
85
+ const lastSeenByRun = new Map();
86
+ const withTurnDurations = (records) => {
87
+ for (const record of records) {
88
+ const parsed = Date.parse(record.timestamp);
89
+ if (Number.isFinite(parsed)) {
90
+ if (record.kind === "turn" && record.durationMs === null) {
91
+ const previous = lastSeenByRun.get(record.runId);
92
+ if (previous !== undefined && parsed >= previous) {
93
+ record.durationMs = Math.min(parsed - previous, 60 * 60 * 1000);
94
+ }
95
+ }
96
+ lastSeenByRun.set(record.runId, parsed);
97
+ }
98
+ }
99
+ if (lastSeenByRun.size > MAX_TRACKED_RUNS)
100
+ lastSeenByRun.clear();
101
+ return records;
102
+ };
103
+ let flushes = 0;
104
+ let stopped = false;
105
+ let timer = null;
106
+ const runFlush = async () => {
107
+ const report = {
108
+ records: 0,
109
+ content: 0,
110
+ dropped: buffer.dropped(),
111
+ queueSize: buffer.size(),
112
+ exports: [],
113
+ optimized: false,
114
+ error: null,
115
+ };
116
+ if (store === null || config === null) {
117
+ report.error = configError ?? "telemetry is disabled";
118
+ return report;
119
+ }
120
+ try {
121
+ const records = [];
122
+ for (;;) {
123
+ const batch = buffer.drain(config.batch.batchSize);
124
+ if (batch.length === 0)
125
+ break;
126
+ records.push(...batch);
127
+ if (records.length >= MAX_DRAIN_PER_FLUSH)
128
+ break;
129
+ }
130
+ if (records.length > 0) {
131
+ const written = store.writeRecords(withTurnDurations(records));
132
+ report.records = written.written;
133
+ report.content = written.content;
134
+ }
135
+ flushes += 1;
136
+ if (flushes % OPTIMIZE_EVERY === 0) {
137
+ store.optimize();
138
+ report.optimized = true;
139
+ }
140
+ if (exporter !== null) {
141
+ report.exports = await exporter.flush();
142
+ }
143
+ }
144
+ catch (error) {
145
+ report.error = error instanceof Error ? error.message : String(error);
146
+ }
147
+ finally {
148
+ report.queueSize = buffer.size();
149
+ report.dropped = buffer.dropped();
150
+ }
151
+ return report;
152
+ };
153
+ // Serialize flushes so a background tick and a manual command can never
154
+ // write and export the same records concurrently.
155
+ let inFlightFlush = null;
156
+ const flush = () => {
157
+ if (inFlightFlush !== null)
158
+ return inFlightFlush;
159
+ inFlightFlush = runFlush().finally(() => {
160
+ inFlightFlush = null;
161
+ });
162
+ return inFlightFlush;
163
+ };
164
+ const runtime = {
165
+ configResult,
166
+ paths,
167
+ env,
168
+ config,
169
+ configError,
170
+ store,
171
+ buffer,
172
+ handler: (event) => {
173
+ if (store === null)
174
+ return;
175
+ handler(event);
176
+ },
177
+ exporter,
178
+ now,
179
+ start() {
180
+ if (timer !== null || stopped)
181
+ return;
182
+ if (store === null)
183
+ return;
184
+ const period = options.autoFlushMs === undefined
185
+ ? (config?.batch.flushIntervalMs ?? null)
186
+ : options.autoFlushMs;
187
+ if (period === null || period <= 0)
188
+ return;
189
+ timer = setInterval(() => {
190
+ void flush();
191
+ }, Math.max(250, period));
192
+ if (typeof timer.unref === "function")
193
+ timer.unref();
194
+ },
195
+ stop() {
196
+ if (timer !== null) {
197
+ clearInterval(timer);
198
+ timer = null;
199
+ }
200
+ },
201
+ flush,
202
+ async captureTranscript(info) {
203
+ if (store === null || config === null)
204
+ return 0;
205
+ if (!config.capture.prompts && !config.capture.completions)
206
+ return 0;
207
+ const redactionOptions = { mode: config.redaction.mode };
208
+ const createdAt = isoAt(now);
209
+ const messages = info.messages.slice(-MAX_TRANSCRIPT_MESSAGES);
210
+ const records = [];
211
+ for (const message of messages) {
212
+ if (message.role === "user" && config.capture.prompts) {
213
+ const text = redactText(message.text, redactionOptions);
214
+ if (text !== "")
215
+ records.push({
216
+ runId: null,
217
+ sessionId: info.sessionId,
218
+ kind: "prompt",
219
+ ref: null,
220
+ text,
221
+ createdAt,
222
+ });
223
+ }
224
+ else if (message.role === "assistant" && config.capture.completions) {
225
+ const text = redactText(message.text, redactionOptions);
226
+ if (text !== "")
227
+ records.push({
228
+ runId: null,
229
+ sessionId: info.sessionId,
230
+ kind: "completion",
231
+ ref: null,
232
+ text,
233
+ createdAt,
234
+ });
235
+ }
236
+ }
237
+ if (records.length === 0)
238
+ return 0;
239
+ try {
240
+ return store.recordContent(records);
241
+ }
242
+ catch {
243
+ return 0;
244
+ }
245
+ },
246
+ prune(days) {
247
+ const retentionDays = days ?? config?.retentionDays ?? 30;
248
+ const cutoff = isoAt(now, -retentionDays * 24 * 60 * 60 * 1000);
249
+ if (store === null) {
250
+ return {
251
+ cutoff,
252
+ retentionDays,
253
+ deleted: { runs: 0, turns: 0, toolCalls: 0, content: 0 },
254
+ note: configError ?? "telemetry is disabled; nothing to prune",
255
+ };
256
+ }
257
+ const deleted = store.pruneBefore(cutoff);
258
+ store.optimize();
259
+ return {
260
+ cutoff,
261
+ retentionDays,
262
+ deleted,
263
+ note: "Deleted rows and purged search index entries, then optimized and vacuumed. " +
264
+ "Note: SQLite FTS shadow tables can retain fragments after deletion; a copied database may keep forensic traces.",
265
+ };
266
+ },
267
+ async dispose() {
268
+ if (stopped)
269
+ return;
270
+ stopped = true;
271
+ runtime.stop();
272
+ try {
273
+ await flush();
274
+ }
275
+ catch {
276
+ // Best effort.
277
+ }
278
+ try {
279
+ database?.close();
280
+ }
281
+ catch {
282
+ // Ignore close errors.
283
+ }
284
+ database = null;
285
+ store = null;
286
+ },
287
+ };
288
+ return runtime;
289
+ }
290
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}