@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,188 @@
1
+ /**
2
+ * The local SQLite store: the primary sink and the source of truth.
3
+ *
4
+ * REMOTE EXPORT NEVER OWNS THE DATA. Every record lands here first; OTLP batches
5
+ * are derived from these rows and tracked in `otlp_batches` so a failed export
6
+ * can be retried idempotently. Remote failures never delete or mutate rows.
7
+ *
8
+ * FULL-TEXT SEARCH IS CONTENT-ONLY AND OPT-IN. The `content_fts` shadow tables
9
+ * can retain fragments after rows are deleted. Deletion therefore also clears
10
+ * the FTS index, runs `optimize`, and vacuums; the README states plainly that
11
+ * forensic traces in a copied file cannot be guaranteed gone.
12
+ */
13
+ import type { SqlDatabase } from "./database.js";
14
+ import type { TelemetryRecord } from "./events.js";
15
+ export interface TimeRange {
16
+ /** Inclusive ISO timestamp lower bound. */
17
+ from: string;
18
+ /** Inclusive ISO timestamp upper bound. */
19
+ to: string;
20
+ }
21
+ export interface StoreSummary {
22
+ sessions: number;
23
+ runs: number;
24
+ turns: number;
25
+ toolCalls: number;
26
+ toolErrors: number;
27
+ inputTokens: number;
28
+ outputTokens: number;
29
+ cachedInputTokens: number;
30
+ totalTokens: number;
31
+ avgToolDurationMs: number | null;
32
+ maxToolDurationMs: number | null;
33
+ firstAt: string | null;
34
+ lastAt: string | null;
35
+ }
36
+ export interface ModelAggregate {
37
+ model: string;
38
+ turns: number;
39
+ inputTokens: number;
40
+ outputTokens: number;
41
+ cachedInputTokens: number;
42
+ calls: number;
43
+ avgTurnDurationMs: number | null;
44
+ }
45
+ export interface ToolAggregate {
46
+ name: string;
47
+ calls: number;
48
+ errors: number;
49
+ errorRate: number;
50
+ avgDurationMs: number | null;
51
+ maxDurationMs: number | null;
52
+ effects: string[];
53
+ }
54
+ export interface SessionAggregate {
55
+ sessionId: string;
56
+ runs: number;
57
+ turns: number;
58
+ inputTokens: number;
59
+ outputTokens: number;
60
+ lastAt: string | null;
61
+ models: string[];
62
+ }
63
+ export interface SeriesBucket {
64
+ bucketStart: string;
65
+ runs: number;
66
+ turns: number;
67
+ toolCalls: number;
68
+ inputTokens: number;
69
+ outputTokens: number;
70
+ }
71
+ export interface ContentHit {
72
+ id: number;
73
+ kind: string;
74
+ ref: string | null;
75
+ snippet: string;
76
+ createdAt: string;
77
+ }
78
+ export interface BatchRow {
79
+ id: number;
80
+ batchKey: string;
81
+ signal: string;
82
+ payload: string;
83
+ attempts: number;
84
+ createdAt: string;
85
+ }
86
+ export interface RunSnapshot {
87
+ runId: string;
88
+ sessionId: string;
89
+ model: string | null;
90
+ startedAt: string;
91
+ endedAt: string | null;
92
+ status: string;
93
+ inputTokens: number;
94
+ outputTokens: number;
95
+ cachedInputTokens: number;
96
+ totalTokens: number | null;
97
+ truncated: boolean;
98
+ turns: number;
99
+ toolCalls: number;
100
+ toolErrors: number;
101
+ }
102
+ export interface TurnSnapshot {
103
+ runId: string;
104
+ sessionId: string;
105
+ turn: number;
106
+ model: string | null;
107
+ inputTokens: number;
108
+ outputTokens: number;
109
+ cachedInputTokens: number;
110
+ durationMs: number | null;
111
+ createdAt: string;
112
+ }
113
+ export interface ToolSnapshot {
114
+ runId: string;
115
+ callId: string;
116
+ sessionId: string;
117
+ name: string;
118
+ effect: string | null;
119
+ startedAt: string | null;
120
+ finishedAt: string | null;
121
+ durationMs: number | null;
122
+ isError: boolean;
123
+ }
124
+ export interface TelemetrySnapshot {
125
+ runs: RunSnapshot[];
126
+ turns: TurnSnapshot[];
127
+ tools: ToolSnapshot[];
128
+ }
129
+ export interface StoreCounts {
130
+ runs: number;
131
+ turns: number;
132
+ toolCalls: number;
133
+ content: number;
134
+ pendingBatches: number;
135
+ deadBatches: number;
136
+ }
137
+ export interface WindowTotals {
138
+ models: number;
139
+ tools: number;
140
+ sessions: number;
141
+ }
142
+ export interface TranscriptContent {
143
+ runId: string | null;
144
+ sessionId: string;
145
+ kind: string;
146
+ ref: string | null;
147
+ text: string;
148
+ createdAt: string;
149
+ }
150
+ export interface Store {
151
+ migrate(): void;
152
+ writeRecords(records: TelemetryRecord[]): {
153
+ written: number;
154
+ content: number;
155
+ };
156
+ summary(range: TimeRange): StoreSummary;
157
+ models(range: TimeRange, limit: number): ModelAggregate[];
158
+ tools(range: TimeRange, limit: number): ToolAggregate[];
159
+ sessions(range: TimeRange, limit: number): SessionAggregate[];
160
+ series(range: TimeRange, bucketSeconds: number): SeriesBucket[];
161
+ search(query: string, range: TimeRange, limit: number): {
162
+ hits: ContentHit[];
163
+ total: number;
164
+ };
165
+ snapshot(range: TimeRange, limit: number): TelemetrySnapshot;
166
+ totals(range: TimeRange): WindowTotals;
167
+ recordContent(records: TranscriptContent[]): number;
168
+ counts(): StoreCounts;
169
+ pruneBefore(iso: string): {
170
+ runs: number;
171
+ turns: number;
172
+ toolCalls: number;
173
+ content: number;
174
+ };
175
+ optimize(): void;
176
+ enqueueBatch(key: string, signal: string, payload: string, createdAt: string): boolean;
177
+ pendingBatches(limit: number): BatchRow[];
178
+ markBatchSent(id: number, at: string): void;
179
+ markBatchRetry(id: number, error: string, at: string): void;
180
+ markBatchDead(id: number, error: string, at: string): void;
181
+ }
182
+ export declare function createStore(database: SqlDatabase): Store;
183
+ /**
184
+ * Turn free text into a safe FTS5 MATCH expression: each whitespace token is
185
+ * quoted as a phrase, so FTS operators in the query cannot cause a syntax error.
186
+ */
187
+ export declare function toMatchQuery(query: string): string;
188
+ //# sourceMappingURL=store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAoB,MAAM,eAAe,CAAC;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,MAAM,WAAW,SAAS;IACxB,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,2CAA2C;IAC3C,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,WAAW,EAAE,CAAC;IACpB,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,KAAK,EAAE,YAAY,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,KAAK;IACpB,OAAO,IAAI,IAAI,CAAC;IAChB,YAAY,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/E,OAAO,CAAC,KAAK,EAAE,SAAS,GAAG,YAAY,CAAC;IACxC,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,cAAc,EAAE,CAAC;IAC1D,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,aAAa,EAAE,CAAC;IACxD,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAAC;IAC9D,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,GAAG,YAAY,EAAE,CAAC;IAChE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE,UAAU,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9F,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,iBAAiB,CAAC;IAC7D,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,YAAY,CAAC;IACvC,aAAa,CAAC,OAAO,EAAE,iBAAiB,EAAE,GAAG,MAAM,CAAC;IACpD,MAAM,IAAI,WAAW,CAAC;IACtB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9F,QAAQ,IAAI,IAAI,CAAC;IACjB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IACvF,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,EAAE,CAAC;IAC1C,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5C,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5D,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5D;AA0GD,wBAAgB,WAAW,CAAC,QAAQ,EAAE,WAAW,GAAG,KAAK,CAijBxD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CASlD"}