@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.
- package/.agents/skills/telemetry/SKILL.md +52 -0
- package/LICENSE +21 -0
- package/README.md +188 -0
- package/cover.svg +54 -0
- package/dist/commands.d.ts +19 -0
- package/dist/commands.d.ts.map +1 -0
- package/dist/commands.js +298 -0
- package/dist/commands.js.map +1 -0
- package/dist/config.d.ts +145 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +524 -0
- package/dist/config.js.map +1 -0
- package/dist/database.d.ts +16 -0
- package/dist/database.d.ts.map +1 -0
- package/dist/database.js +67 -0
- package/dist/database.js.map +1 -0
- package/dist/events.d.ts +135 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +255 -0
- package/dist/events.js.map +1 -0
- package/dist/format.d.ts +36 -0
- package/dist/format.d.ts.map +1 -0
- package/dist/format.js +49 -0
- package/dist/format.js.map +1 -0
- package/dist/index.d.ts +38 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +78 -0
- package/dist/index.js.map +1 -0
- package/dist/otlp.d.ts +69 -0
- package/dist/otlp.d.ts.map +1 -0
- package/dist/otlp.js +616 -0
- package/dist/otlp.js.map +1 -0
- package/dist/redact.d.ts +36 -0
- package/dist/redact.d.ts.map +1 -0
- package/dist/redact.js +163 -0
- package/dist/redact.js.map +1 -0
- package/dist/runtime.d.ts +80 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +290 -0
- package/dist/runtime.js.map +1 -0
- package/dist/store.d.ts +188 -0
- package/dist/store.d.ts.map +1 -0
- package/dist/store.js +539 -0
- package/dist/store.js.map +1 -0
- package/dist/tools.d.ts +21 -0
- package/dist/tools.d.ts.map +1 -0
- package/dist/tools.js +292 -0
- package/dist/tools.js.map +1 -0
- package/dist/version.d.ts +3 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +3 -0
- package/dist/version.js.map +1 -0
- package/package.json +54 -0
package/dist/tools.js
ADDED
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Read-only, bounded, privacy-preserving agent tools.
|
|
3
|
+
*
|
|
4
|
+
* Every tool queries the LOCAL database only and returns an aggregate or a
|
|
5
|
+
* bounded slice, never a raw event dump. All five tools declare `read`: they
|
|
6
|
+
* have no local side effects. Writing, pruning and remote export are separate
|
|
7
|
+
* `write`/`external` operations exposed as commands, not tools.
|
|
8
|
+
*/
|
|
9
|
+
import { textResult } from "@alisio/sdk";
|
|
10
|
+
import { boundsEnvelope, sanitizeField, stableError, toolJson } from "./format.js";
|
|
11
|
+
export const TOOL_NAMES = [
|
|
12
|
+
"telemetry_summary",
|
|
13
|
+
"telemetry_models",
|
|
14
|
+
"telemetry_tools",
|
|
15
|
+
"telemetry_sessions",
|
|
16
|
+
"telemetry_search",
|
|
17
|
+
];
|
|
18
|
+
const WINDOW_PROPERTY = {
|
|
19
|
+
type: "integer",
|
|
20
|
+
minimum: 1,
|
|
21
|
+
maximum: 525_600,
|
|
22
|
+
description: "Look-back window in minutes (1 minute to 365 days). Defaults to 1440.",
|
|
23
|
+
};
|
|
24
|
+
const LIMIT_PROPERTY = {
|
|
25
|
+
type: "integer",
|
|
26
|
+
minimum: 1,
|
|
27
|
+
maximum: 100,
|
|
28
|
+
description: "Maximum number of rows to return (1 to 100). Defaults to 20.",
|
|
29
|
+
};
|
|
30
|
+
const MAX_WINDOW_MINUTES = 525_600;
|
|
31
|
+
const MAX_LIMIT = 100;
|
|
32
|
+
const DEFAULT_WINDOW_MINUTES = 1_440;
|
|
33
|
+
const DEFAULT_LIMIT = 20;
|
|
34
|
+
class ArgumentError extends Error {
|
|
35
|
+
}
|
|
36
|
+
function readInteger(input, name, fallback, minimum, maximum) {
|
|
37
|
+
const value = input[name];
|
|
38
|
+
if (value === undefined)
|
|
39
|
+
return fallback;
|
|
40
|
+
if (typeof value !== "number" || !Number.isInteger(value) || value < minimum || value > maximum)
|
|
41
|
+
throw new ArgumentError(`${name} must be an integer between ${minimum} and ${maximum}`);
|
|
42
|
+
return value;
|
|
43
|
+
}
|
|
44
|
+
function readQuery(input) {
|
|
45
|
+
const value = input.query;
|
|
46
|
+
if (typeof value !== "string")
|
|
47
|
+
throw new ArgumentError("query is required and must be a string");
|
|
48
|
+
const trimmed = value.trim();
|
|
49
|
+
if (trimmed === "" || trimmed.length > 200)
|
|
50
|
+
throw new ArgumentError("query must be between 1 and 200 characters");
|
|
51
|
+
return trimmed;
|
|
52
|
+
}
|
|
53
|
+
function windowFor(runtime, windowMinutes) {
|
|
54
|
+
const to = new Date(runtime.now()).toISOString();
|
|
55
|
+
const from = new Date(runtime.now() - windowMinutes * 60_000).toISOString();
|
|
56
|
+
return { from, to };
|
|
57
|
+
}
|
|
58
|
+
function unavailable(runtime) {
|
|
59
|
+
return textResult(toolJson(stableError("telemetry_unavailable", "The telemetry store is unavailable; no local database is open.", runtime.configError ??
|
|
60
|
+
"Check the telemetry configuration and database path, then retry. Use the telemetry-status command for details.")), true);
|
|
61
|
+
}
|
|
62
|
+
function failure(error) {
|
|
63
|
+
if (error instanceof ArgumentError)
|
|
64
|
+
return textResult(toolJson(stableError("invalid_arguments", error.message)), true);
|
|
65
|
+
return textResult(toolJson(stableError("telemetry_query_failed", "The telemetry query failed.", "The local store may be locked or corrupt. Retry, or run telemetry-status for details.")), true);
|
|
66
|
+
}
|
|
67
|
+
/** Run a tool body with uniform argument validation, availability and error handling. */
|
|
68
|
+
function handler(runtime, body) {
|
|
69
|
+
return async (input) => {
|
|
70
|
+
if (runtime.store === null || runtime.config === null)
|
|
71
|
+
return unavailable(runtime);
|
|
72
|
+
try {
|
|
73
|
+
return body(runtime.store, input);
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
return failure(error);
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
function contentCaptureEnabled(config) {
|
|
81
|
+
const { capture } = config;
|
|
82
|
+
return capture.prompts || capture.completions || capture.toolArguments || capture.toolResults;
|
|
83
|
+
}
|
|
84
|
+
export function createTelemetryTools(runtime) {
|
|
85
|
+
const summary = {
|
|
86
|
+
name: "telemetry_summary",
|
|
87
|
+
description: "Summarize recent local agent activity: sessions, runs, turns, token totals, tool errors, and tool latency, plus a time series. Metadata only; never returns content.",
|
|
88
|
+
effect: "read",
|
|
89
|
+
inputSchema: {
|
|
90
|
+
type: "object",
|
|
91
|
+
additionalProperties: false,
|
|
92
|
+
properties: {
|
|
93
|
+
windowMinutes: WINDOW_PROPERTY,
|
|
94
|
+
limit: LIMIT_PROPERTY,
|
|
95
|
+
},
|
|
96
|
+
},
|
|
97
|
+
execute: handler(runtime, (store, input) => {
|
|
98
|
+
const windowMinutes = readInteger(input, "windowMinutes", DEFAULT_WINDOW_MINUTES, 1, MAX_WINDOW_MINUTES);
|
|
99
|
+
const limit = readInteger(input, "limit", DEFAULT_LIMIT, 1, MAX_LIMIT);
|
|
100
|
+
const range = windowFor(runtime, windowMinutes);
|
|
101
|
+
const summaryValue = store.summary(range);
|
|
102
|
+
const bucketSeconds = Math.max(60, Math.floor((windowMinutes * 60) / limit));
|
|
103
|
+
const buckets = store.series(range, bucketSeconds).map((bucket) => ({
|
|
104
|
+
bucketStart: bucket.bucketStart,
|
|
105
|
+
turns: bucket.turns,
|
|
106
|
+
inputTokens: bucket.inputTokens,
|
|
107
|
+
outputTokens: bucket.outputTokens,
|
|
108
|
+
}));
|
|
109
|
+
const window = { from: range.from, to: range.to, windowMinutes };
|
|
110
|
+
return textResult(toolJson(boundsEnvelope({
|
|
111
|
+
window,
|
|
112
|
+
limit,
|
|
113
|
+
returned: buckets.length,
|
|
114
|
+
total: buckets.length,
|
|
115
|
+
hint: summaryValue.runs === 0
|
|
116
|
+
? "No runs recorded in this window; run an agent session or widen windowMinutes."
|
|
117
|
+
: `Aggregated over the whole window in ${buckets.length} bucket(s).`,
|
|
118
|
+
data: {
|
|
119
|
+
sessions: summaryValue.sessions,
|
|
120
|
+
runs: summaryValue.runs,
|
|
121
|
+
turns: summaryValue.turns,
|
|
122
|
+
toolCalls: summaryValue.toolCalls,
|
|
123
|
+
toolErrors: summaryValue.toolErrors,
|
|
124
|
+
inputTokens: summaryValue.inputTokens,
|
|
125
|
+
outputTokens: summaryValue.outputTokens,
|
|
126
|
+
cachedInputTokens: summaryValue.cachedInputTokens,
|
|
127
|
+
totalTokens: summaryValue.totalTokens,
|
|
128
|
+
avgToolDurationMs: summaryValue.avgToolDurationMs,
|
|
129
|
+
maxToolDurationMs: summaryValue.maxToolDurationMs,
|
|
130
|
+
firstAt: summaryValue.firstAt,
|
|
131
|
+
lastAt: summaryValue.lastAt,
|
|
132
|
+
buckets,
|
|
133
|
+
},
|
|
134
|
+
})));
|
|
135
|
+
}),
|
|
136
|
+
};
|
|
137
|
+
const models = {
|
|
138
|
+
name: "telemetry_models",
|
|
139
|
+
description: "Model mix for a bounded window: turns, input/output/cached tokens, tool calls and average turn duration per model.",
|
|
140
|
+
effect: "read",
|
|
141
|
+
inputSchema: {
|
|
142
|
+
type: "object",
|
|
143
|
+
additionalProperties: false,
|
|
144
|
+
properties: { windowMinutes: WINDOW_PROPERTY, limit: LIMIT_PROPERTY },
|
|
145
|
+
},
|
|
146
|
+
execute: handler(runtime, (store, input) => {
|
|
147
|
+
const windowMinutes = readInteger(input, "windowMinutes", DEFAULT_WINDOW_MINUTES, 1, MAX_WINDOW_MINUTES);
|
|
148
|
+
const limit = readInteger(input, "limit", DEFAULT_LIMIT, 1, MAX_LIMIT);
|
|
149
|
+
const range = windowFor(runtime, windowMinutes);
|
|
150
|
+
const rows = store.models(range, limit);
|
|
151
|
+
const totals = store.totals(range);
|
|
152
|
+
const window = { from: range.from, to: range.to, windowMinutes };
|
|
153
|
+
return textResult(toolJson(boundsEnvelope({
|
|
154
|
+
window,
|
|
155
|
+
limit,
|
|
156
|
+
returned: rows.length,
|
|
157
|
+
total: totals.models,
|
|
158
|
+
data: rows.map((row) => ({
|
|
159
|
+
model: sanitizeField(row.model, 200),
|
|
160
|
+
turns: row.turns,
|
|
161
|
+
inputTokens: row.inputTokens,
|
|
162
|
+
outputTokens: row.outputTokens,
|
|
163
|
+
cachedInputTokens: row.cachedInputTokens,
|
|
164
|
+
calls: row.calls,
|
|
165
|
+
avgTurnDurationMs: row.avgTurnDurationMs,
|
|
166
|
+
})),
|
|
167
|
+
})));
|
|
168
|
+
}),
|
|
169
|
+
};
|
|
170
|
+
const tools = {
|
|
171
|
+
name: "telemetry_tools",
|
|
172
|
+
description: "Tool usage for a bounded window: call counts, error rate, average/max duration and observed effects per tool name.",
|
|
173
|
+
effect: "read",
|
|
174
|
+
inputSchema: {
|
|
175
|
+
type: "object",
|
|
176
|
+
additionalProperties: false,
|
|
177
|
+
properties: { windowMinutes: WINDOW_PROPERTY, limit: LIMIT_PROPERTY },
|
|
178
|
+
},
|
|
179
|
+
execute: handler(runtime, (store, input) => {
|
|
180
|
+
const windowMinutes = readInteger(input, "windowMinutes", DEFAULT_WINDOW_MINUTES, 1, MAX_WINDOW_MINUTES);
|
|
181
|
+
const limit = readInteger(input, "limit", DEFAULT_LIMIT, 1, MAX_LIMIT);
|
|
182
|
+
const range = windowFor(runtime, windowMinutes);
|
|
183
|
+
const rows = store.tools(range, limit);
|
|
184
|
+
const totals = store.totals(range);
|
|
185
|
+
const window = { from: range.from, to: range.to, windowMinutes };
|
|
186
|
+
return textResult(toolJson(boundsEnvelope({
|
|
187
|
+
window,
|
|
188
|
+
limit,
|
|
189
|
+
returned: rows.length,
|
|
190
|
+
total: totals.tools,
|
|
191
|
+
data: rows.map((row) => ({
|
|
192
|
+
name: sanitizeField(row.name, 200),
|
|
193
|
+
calls: row.calls,
|
|
194
|
+
errors: row.errors,
|
|
195
|
+
errorRate: Math.round(row.errorRate * 1000) / 1000,
|
|
196
|
+
avgDurationMs: row.avgDurationMs,
|
|
197
|
+
maxDurationMs: row.maxDurationMs,
|
|
198
|
+
effects: row.effects.map((effect) => sanitizeField(effect, 40)),
|
|
199
|
+
})),
|
|
200
|
+
})));
|
|
201
|
+
}),
|
|
202
|
+
};
|
|
203
|
+
const sessions = {
|
|
204
|
+
name: "telemetry_sessions",
|
|
205
|
+
description: "Recent sessions/runs for a bounded window with bounded metadata: run and turn counts, tokens, last activity and models.",
|
|
206
|
+
effect: "read",
|
|
207
|
+
inputSchema: {
|
|
208
|
+
type: "object",
|
|
209
|
+
additionalProperties: false,
|
|
210
|
+
properties: { windowMinutes: WINDOW_PROPERTY, limit: LIMIT_PROPERTY },
|
|
211
|
+
},
|
|
212
|
+
execute: handler(runtime, (store, input) => {
|
|
213
|
+
const windowMinutes = readInteger(input, "windowMinutes", DEFAULT_WINDOW_MINUTES, 1, MAX_WINDOW_MINUTES);
|
|
214
|
+
const limit = readInteger(input, "limit", DEFAULT_LIMIT, 1, MAX_LIMIT);
|
|
215
|
+
const range = windowFor(runtime, windowMinutes);
|
|
216
|
+
const rows = store.sessions(range, limit);
|
|
217
|
+
const totals = store.totals(range);
|
|
218
|
+
const window = { from: range.from, to: range.to, windowMinutes };
|
|
219
|
+
return textResult(toolJson(boundsEnvelope({
|
|
220
|
+
window,
|
|
221
|
+
limit,
|
|
222
|
+
returned: rows.length,
|
|
223
|
+
total: totals.sessions,
|
|
224
|
+
data: rows.map((row) => ({
|
|
225
|
+
sessionId: sanitizeField(row.sessionId, 120),
|
|
226
|
+
runs: row.runs,
|
|
227
|
+
turns: row.turns,
|
|
228
|
+
inputTokens: row.inputTokens,
|
|
229
|
+
outputTokens: row.outputTokens,
|
|
230
|
+
lastAt: row.lastAt,
|
|
231
|
+
models: row.models.map((model) => sanitizeField(model, 200)),
|
|
232
|
+
})),
|
|
233
|
+
})));
|
|
234
|
+
}),
|
|
235
|
+
};
|
|
236
|
+
const search = {
|
|
237
|
+
name: "telemetry_search",
|
|
238
|
+
description: "Search captured telemetry content. Returns content only when content capture is explicitly enabled; otherwise explains that capture is off. Metadata-only by default.",
|
|
239
|
+
effect: "read",
|
|
240
|
+
inputSchema: {
|
|
241
|
+
type: "object",
|
|
242
|
+
additionalProperties: false,
|
|
243
|
+
properties: {
|
|
244
|
+
query: {
|
|
245
|
+
type: "string",
|
|
246
|
+
minLength: 1,
|
|
247
|
+
maxLength: 200,
|
|
248
|
+
description: "Full-text query over captured prompts, completions, tool arguments and results.",
|
|
249
|
+
},
|
|
250
|
+
windowMinutes: WINDOW_PROPERTY,
|
|
251
|
+
limit: LIMIT_PROPERTY,
|
|
252
|
+
},
|
|
253
|
+
required: ["query"],
|
|
254
|
+
},
|
|
255
|
+
execute: handler(runtime, (store, input) => {
|
|
256
|
+
const captureOn = runtime.config !== null && contentCaptureEnabled(runtime.config);
|
|
257
|
+
const windowMinutes = readInteger(input, "windowMinutes", DEFAULT_WINDOW_MINUTES, 1, MAX_WINDOW_MINUTES);
|
|
258
|
+
const limit = readInteger(input, "limit", DEFAULT_LIMIT, 1, MAX_LIMIT);
|
|
259
|
+
const range = windowFor(runtime, windowMinutes);
|
|
260
|
+
const window = { from: range.from, to: range.to, windowMinutes };
|
|
261
|
+
if (!captureOn) {
|
|
262
|
+
return textResult(toolJson(boundsEnvelope({
|
|
263
|
+
window,
|
|
264
|
+
limit,
|
|
265
|
+
returned: 0,
|
|
266
|
+
total: 0,
|
|
267
|
+
hint: "Content capture is disabled, so no content is searchable. Enable capture in the telemetry config to index prompts, completions, tool arguments or results; metadata tools still work.",
|
|
268
|
+
data: { contentCapture: false, hits: [] },
|
|
269
|
+
})));
|
|
270
|
+
}
|
|
271
|
+
const query = readQuery(input);
|
|
272
|
+
const result = store.search(query, range, limit);
|
|
273
|
+
return textResult(toolJson(boundsEnvelope({
|
|
274
|
+
window,
|
|
275
|
+
limit,
|
|
276
|
+
returned: result.hits.length,
|
|
277
|
+
total: result.total,
|
|
278
|
+
data: {
|
|
279
|
+
contentCapture: true,
|
|
280
|
+
hits: result.hits.map((hit) => ({
|
|
281
|
+
kind: sanitizeField(hit.kind, 40),
|
|
282
|
+
ref: hit.ref === null ? null : sanitizeField(hit.ref, 120),
|
|
283
|
+
createdAt: hit.createdAt,
|
|
284
|
+
snippet: sanitizeField(hit.snippet, 280),
|
|
285
|
+
})),
|
|
286
|
+
},
|
|
287
|
+
})));
|
|
288
|
+
}),
|
|
289
|
+
};
|
|
290
|
+
return [summary, models, tools, sessions, search];
|
|
291
|
+
}
|
|
292
|
+
//# sourceMappingURL=tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,eAAO,MAAM,OAAO,UAAU,CAAC"}
|
package/dist/version.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@alisio/plugin-telemetry",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Privacy-first local agent observability for Alisio: a SQLite source of truth, bounded agent-facing query tools, and opt-in OpenTelemetry-aligned OTLP export.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"alisio-plugin",
|
|
7
|
+
"telemetry",
|
|
8
|
+
"observability",
|
|
9
|
+
"analytics",
|
|
10
|
+
"opentelemetry",
|
|
11
|
+
"sqlite",
|
|
12
|
+
"tools"
|
|
13
|
+
],
|
|
14
|
+
"license": "MIT",
|
|
15
|
+
"repository": {
|
|
16
|
+
"type": "git",
|
|
17
|
+
"url": "git+https://github.com/GustavoGutierrez/alisio-plugins.git",
|
|
18
|
+
"directory": "packages/plugin-telemetry"
|
|
19
|
+
},
|
|
20
|
+
"homepage": "https://github.com/GustavoGutierrez/alisio-plugins/tree/main/packages/plugin-telemetry#readme",
|
|
21
|
+
"bugs": {
|
|
22
|
+
"url": "https://github.com/GustavoGutierrez/alisio-plugins/issues"
|
|
23
|
+
},
|
|
24
|
+
"type": "module",
|
|
25
|
+
"engines": {
|
|
26
|
+
"node": ">=22.16"
|
|
27
|
+
},
|
|
28
|
+
"exports": {
|
|
29
|
+
".": {
|
|
30
|
+
"types": "./dist/index.d.ts",
|
|
31
|
+
"import": "./dist/index.js"
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
"files": [
|
|
35
|
+
"dist",
|
|
36
|
+
".agents",
|
|
37
|
+
"README.md",
|
|
38
|
+
"LICENSE",
|
|
39
|
+
"cover.svg"
|
|
40
|
+
],
|
|
41
|
+
"peerDependencies": {
|
|
42
|
+
"@alisio/sdk": ">=0.1.0-alpha.10 <0.2.0"
|
|
43
|
+
},
|
|
44
|
+
"devDependencies": {
|
|
45
|
+
"@alisio/sdk": "0.1.0-alpha.11",
|
|
46
|
+
"typescript": "7.0.2",
|
|
47
|
+
"vitest": "5.0.1"
|
|
48
|
+
},
|
|
49
|
+
"scripts": {
|
|
50
|
+
"build": "tsc -p tsconfig.json",
|
|
51
|
+
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
52
|
+
"test": "vitest run"
|
|
53
|
+
}
|
|
54
|
+
}
|