@uptimizr/collector-server 2.1.0 → 2.2.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.md +179 -6
- package/README.md +69 -0
- package/dist/__tests__/support/registryRequests.d.ts +2 -1
- package/dist/__tests__/support/registryRequests.d.ts.map +1 -1
- package/dist/__tests__/support/registryRequests.js +17 -1
- package/dist/__tests__/support/registryRequests.js.map +1 -1
- package/dist/__tests__/support/subscriptionFixtures.d.ts +63 -0
- package/dist/__tests__/support/subscriptionFixtures.d.ts.map +1 -0
- package/dist/__tests__/support/subscriptionFixtures.js +17 -0
- package/dist/__tests__/support/subscriptionFixtures.js.map +1 -0
- package/dist/agentReport.d.ts +256 -0
- package/dist/agentReport.d.ts.map +1 -0
- package/dist/agentReport.js +861 -0
- package/dist/agentReport.js.map +1 -0
- package/dist/app.d.ts +13 -0
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +112 -5
- package/dist/app.js.map +1 -1
- package/dist/audit.d.ts +5 -1
- package/dist/audit.d.ts.map +1 -1
- package/dist/audit.js +24 -4
- package/dist/audit.js.map +1 -1
- package/dist/auth.d.ts +41 -1
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +47 -0
- package/dist/auth.js.map +1 -1
- package/dist/cli.js +99 -2
- package/dist/cli.js.map +1 -1
- package/dist/clickhouseStore.d.ts.map +1 -1
- package/dist/clickhouseStore.js +44 -2
- package/dist/clickhouseStore.js.map +1 -1
- package/dist/config.d.ts +49 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +21 -0
- package/dist/config.js.map +1 -1
- package/dist/connectionLimiter.d.ts +23 -0
- package/dist/connectionLimiter.d.ts.map +1 -0
- package/dist/connectionLimiter.js +24 -0
- package/dist/connectionLimiter.js.map +1 -0
- package/dist/duckdbStore.d.ts.map +1 -1
- package/dist/duckdbStore.js +44 -1
- package/dist/duckdbStore.js.map +1 -1
- package/dist/internalDispatch.d.ts +36 -0
- package/dist/internalDispatch.d.ts.map +1 -0
- package/dist/internalDispatch.js +50 -0
- package/dist/internalDispatch.js.map +1 -0
- package/dist/memoryStore.d.ts.map +1 -1
- package/dist/memoryStore.js +314 -1
- package/dist/memoryStore.js.map +1 -1
- package/dist/mssqlStore.d.ts.map +1 -1
- package/dist/mssqlStore.js +44 -2
- package/dist/mssqlStore.js.map +1 -1
- package/dist/postgresStore.d.ts.map +1 -1
- package/dist/postgresStore.js +44 -2
- package/dist/postgresStore.js.map +1 -1
- package/dist/projectMetadata.d.ts +82 -0
- package/dist/projectMetadata.d.ts.map +1 -0
- package/dist/projectMetadata.js +50 -0
- package/dist/projectMetadata.js.map +1 -0
- package/dist/routes/context.d.ts +135 -0
- package/dist/routes/context.d.ts.map +1 -0
- package/dist/routes/context.js +306 -0
- package/dist/routes/context.js.map +1 -0
- package/dist/routes/insights.d.ts +36 -0
- package/dist/routes/insights.d.ts.map +1 -0
- package/dist/routes/insights.js +810 -0
- package/dist/routes/insights.js.map +1 -0
- package/dist/routes/live.d.ts +8 -0
- package/dist/routes/live.d.ts.map +1 -1
- package/dist/routes/live.js +8 -7
- package/dist/routes/live.js.map +1 -1
- package/dist/routes/mcp.d.ts +36 -0
- package/dist/routes/mcp.d.ts.map +1 -0
- package/dist/routes/mcp.js +262 -0
- package/dist/routes/mcp.js.map +1 -0
- package/dist/routes/meta.d.ts +16 -2
- package/dist/routes/meta.d.ts.map +1 -1
- package/dist/routes/meta.js +699 -10
- package/dist/routes/meta.js.map +1 -1
- package/dist/routes/metadata.d.ts +31 -0
- package/dist/routes/metadata.d.ts.map +1 -0
- package/dist/routes/metadata.js +163 -0
- package/dist/routes/metadata.js.map +1 -0
- package/dist/routes/narrative.d.ts +36 -0
- package/dist/routes/narrative.d.ts.map +1 -0
- package/dist/routes/narrative.js +95 -0
- package/dist/routes/narrative.js.map +1 -0
- package/dist/routes/panels.d.ts +44 -0
- package/dist/routes/panels.d.ts.map +1 -0
- package/dist/routes/panels.js +108 -0
- package/dist/routes/panels.js.map +1 -0
- package/dist/routes/query-dsl.d.ts +50 -0
- package/dist/routes/query-dsl.d.ts.map +1 -0
- package/dist/routes/query-dsl.js +359 -0
- package/dist/routes/query-dsl.js.map +1 -0
- package/dist/routes/query.d.ts +36 -0
- package/dist/routes/query.d.ts.map +1 -1
- package/dist/routes/query.js +101 -13
- package/dist/routes/query.js.map +1 -1
- package/dist/routes/subscriptions.d.ts +52 -0
- package/dist/routes/subscriptions.d.ts.map +1 -0
- package/dist/routes/subscriptions.js +290 -0
- package/dist/routes/subscriptions.js.map +1 -0
- package/dist/store.d.ts +113 -2
- package/dist/store.d.ts.map +1 -1
- package/dist/subscriptions/cli.d.ts +36 -0
- package/dist/subscriptions/cli.d.ts.map +1 -0
- package/dist/subscriptions/cli.js +143 -0
- package/dist/subscriptions/cli.js.map +1 -0
- package/dist/subscriptions/delivery.d.ts +101 -0
- package/dist/subscriptions/delivery.d.ts.map +1 -0
- package/dist/subscriptions/delivery.js +165 -0
- package/dist/subscriptions/delivery.js.map +1 -0
- package/dist/subscriptions/evaluate.d.ts +119 -0
- package/dist/subscriptions/evaluate.d.ts.map +1 -0
- package/dist/subscriptions/evaluate.js +326 -0
- package/dist/subscriptions/evaluate.js.map +1 -0
- package/dist/subscriptions/scheduler.d.ts +97 -0
- package/dist/subscriptions/scheduler.d.ts.map +1 -0
- package/dist/subscriptions/scheduler.js +332 -0
- package/dist/subscriptions/scheduler.js.map +1 -0
- package/dist/subscriptions/stream.d.ts +40 -0
- package/dist/subscriptions/stream.d.ts.map +1 -0
- package/dist/subscriptions/stream.js +38 -0
- package/dist/subscriptions/stream.js.map +1 -0
- package/dist/version.d.ts +3 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +25 -0
- package/dist/version.js.map +1 -0
- package/dist/webhookSignature.d.ts +64 -0
- package/dist/webhookSignature.d.ts.map +1 -0
- package/dist/webhookSignature.js +91 -0
- package/dist/webhookSignature.js.map +1 -0
- package/llms.txt +38 -1
- package/package.json +17 -14
package/dist/routes/meta.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meta.js","sourceRoot":"","sources":["../../src/routes/meta.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"meta.js","sourceRoot":"","sources":["../../src/routes/meta.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { FastifyPluginAsync } from "fastify";
|
|
2
|
+
import type { CollectorStore } from "../store.js";
|
|
3
|
+
/**
|
|
4
|
+
* **Project metadata** endpoints (#310, ADR 0051 §5, design sketch §E.2):
|
|
5
|
+
* annotations, the glossary, and saved analyses.
|
|
6
|
+
*
|
|
7
|
+
* This is the collector's only writable surface besides ingestion, and it is
|
|
8
|
+
* deliberately a separate plugin from `routes/query.ts` so the read API stays
|
|
9
|
+
* exactly what it was: aggregate, read-only, and describable as such. Nothing
|
|
10
|
+
* here touches the `events` tables.
|
|
11
|
+
*
|
|
12
|
+
* The rules, uniformly:
|
|
13
|
+
*
|
|
14
|
+
* - **Writes require `annotate`; reads require `query`.** A read-only key handed
|
|
15
|
+
* to an agent can read the project's notes but cannot leave any (#309).
|
|
16
|
+
* - **Everything is project-scoped.** The project comes from the key, never from
|
|
17
|
+
* the request, so one project's notes are invisible to another's key.
|
|
18
|
+
* - **Zod at the edge.** Every payload is one of the `@uptimizr/schema` metadata
|
|
19
|
+
* contracts, which bound each field's length; the store bounds the row *count*
|
|
20
|
+
* per project and answers `409` when a table is full.
|
|
21
|
+
* - **Every write is audited.** The app-level audit hook records each one
|
|
22
|
+
* (ADR 0051 §7); nothing extra is needed here, and `__tests__/metadata.test.ts`
|
|
23
|
+
* pins that it happens.
|
|
24
|
+
* - **Authorship is derived, not declared** — see `metadataAuthorKind`.
|
|
25
|
+
*/
|
|
26
|
+
interface Options {
|
|
27
|
+
store: CollectorStore;
|
|
28
|
+
}
|
|
29
|
+
export declare const metadataRoutes: FastifyPluginAsync<Options>;
|
|
30
|
+
export {};
|
|
31
|
+
//# sourceMappingURL=metadata.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/routes/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAgB,MAAM,SAAS,CAAC;AAWhE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGlD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,UAAU,OAAO;IACf,KAAK,EAAE,cAAc,CAAC;CACvB;AAuED,eAAO,MAAM,cAAc,EAAE,kBAAkB,CAAC,OAAO,CA8GtD,CAAC"}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { LIMITS, annotationSchema, annotationTargetKindSchema, glossaryTermSchema, savedAnalysisSchema, } from "@uptimizr/schema";
|
|
3
|
+
import { MetadataLimitError } from "@uptimizr/db";
|
|
4
|
+
import { metadataAuthorKind, requireCapability } from "../auth.js";
|
|
5
|
+
/** Generated row id in a path (`/annotations/:id`, `/analyses/:id`). */
|
|
6
|
+
const idParams = z.object({ id: z.string().min(1).max(128) });
|
|
7
|
+
/** `/glossary/:term` — the term itself is the key, bounded by the schema. */
|
|
8
|
+
const termParams = z.object({ term: glossaryTermSchema });
|
|
9
|
+
/** Filters for the annotation listing. */
|
|
10
|
+
const listAnnotationsQuery = z.object({
|
|
11
|
+
targetKind: annotationTargetKindSchema.optional(),
|
|
12
|
+
targetId: z.string().min(1).max(LIMITS.maxAnnotationTargetIdLength).optional(),
|
|
13
|
+
since: z.coerce.number().int().nonnegative().optional(),
|
|
14
|
+
until: z.coerce.number().int().nonnegative().optional(),
|
|
15
|
+
limit: z.coerce.number().int().positive().max(500).optional(),
|
|
16
|
+
});
|
|
17
|
+
/** Row cap shared by the glossary and saved-analysis listings. */
|
|
18
|
+
const listQuery = z.object({
|
|
19
|
+
limit: z.coerce.number().int().positive().max(500).optional(),
|
|
20
|
+
});
|
|
21
|
+
/** The body of a glossary write: the term is in the path, the meaning here. */
|
|
22
|
+
const putGlossaryBody = z.object({
|
|
23
|
+
meaning: z.string().min(1).max(LIMITS.maxGlossaryMeaningLength),
|
|
24
|
+
});
|
|
25
|
+
/** A `Date` as an ISO string, or null — how every timestamp leaves this API. */
|
|
26
|
+
function iso(value) {
|
|
27
|
+
return value == null ? null : value.toISOString();
|
|
28
|
+
}
|
|
29
|
+
/** Wire shape of one annotation row. */
|
|
30
|
+
function toAnnotationBody(row) {
|
|
31
|
+
return {
|
|
32
|
+
...row,
|
|
33
|
+
since: iso(row.since),
|
|
34
|
+
until: iso(row.until),
|
|
35
|
+
createdAt: row.createdAt.toISOString(),
|
|
36
|
+
updatedAt: row.updatedAt.toISOString(),
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
/** Wire shape of one saved-analysis row. */
|
|
40
|
+
function toAnalysisBody(row) {
|
|
41
|
+
return { ...row, createdAt: row.createdAt.toISOString() };
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Run a metadata write and turn a full project into a `409`.
|
|
45
|
+
*
|
|
46
|
+
* A cap breach is not a bad request — the payload was fine — and not a server
|
|
47
|
+
* fault; it is a conflict with the project's current state that the caller
|
|
48
|
+
* fixes by deleting something. Everything else propagates to Fastify's error
|
|
49
|
+
* handler unchanged.
|
|
50
|
+
*/
|
|
51
|
+
async function withLimitGuard(reply, run) {
|
|
52
|
+
try {
|
|
53
|
+
return await run();
|
|
54
|
+
}
|
|
55
|
+
catch (err) {
|
|
56
|
+
if (err instanceof MetadataLimitError) {
|
|
57
|
+
await reply.code(409).send({ error: err.message });
|
|
58
|
+
return undefined;
|
|
59
|
+
}
|
|
60
|
+
throw err;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
export const metadataRoutes = async (app, { store }) => {
|
|
64
|
+
const r = app.withTypeProvider();
|
|
65
|
+
// --- Annotations ---------------------------------------------------------
|
|
66
|
+
// A project's notes, newest first. `since`/`until` select the annotations
|
|
67
|
+
// whose period *overlaps* the window (a standing note always matches), which
|
|
68
|
+
// is what a dashboard time axis needs for the range it is showing.
|
|
69
|
+
r.get("/api/v1/annotations", { schema: { querystring: listAnnotationsQuery } }, async (req, reply) => {
|
|
70
|
+
const resolved = await requireCapability(req, reply, store, "query");
|
|
71
|
+
if (!resolved)
|
|
72
|
+
return reply;
|
|
73
|
+
const rows = await store.listAnnotations(resolved.projectId, req.query);
|
|
74
|
+
return rows.map(toAnnotationBody);
|
|
75
|
+
});
|
|
76
|
+
r.post("/api/v1/annotations", { schema: { body: annotationSchema } }, async (req, reply) => {
|
|
77
|
+
const resolved = await requireCapability(req, reply, store, "annotate");
|
|
78
|
+
if (!resolved)
|
|
79
|
+
return reply;
|
|
80
|
+
const created = await withLimitGuard(reply, () => store.createAnnotation(resolved.projectId, {
|
|
81
|
+
annotation: req.body,
|
|
82
|
+
authorKind: metadataAuthorKind(req),
|
|
83
|
+
authorKeyId: resolved.keyId,
|
|
84
|
+
}));
|
|
85
|
+
if (!created)
|
|
86
|
+
return reply;
|
|
87
|
+
return reply.code(201).send(toAnnotationBody(created));
|
|
88
|
+
});
|
|
89
|
+
// 404 for an unknown id *and* for one that belongs to another project — the
|
|
90
|
+
// two are deliberately indistinguishable, so an id cannot be probed across
|
|
91
|
+
// projects.
|
|
92
|
+
r.delete("/api/v1/annotations/:id", { schema: { params: idParams } }, async (req, reply) => {
|
|
93
|
+
const resolved = await requireCapability(req, reply, store, "annotate");
|
|
94
|
+
if (!resolved)
|
|
95
|
+
return reply;
|
|
96
|
+
const deleted = await store.deleteAnnotation(resolved.projectId, req.params.id);
|
|
97
|
+
if (!deleted)
|
|
98
|
+
return reply.code(404).send({ error: "annotation not found" });
|
|
99
|
+
return reply.code(204).send();
|
|
100
|
+
});
|
|
101
|
+
// --- Glossary ------------------------------------------------------------
|
|
102
|
+
r.get("/api/v1/glossary", { schema: { querystring: listQuery } }, async (req, reply) => {
|
|
103
|
+
const resolved = await requireCapability(req, reply, store, "query");
|
|
104
|
+
if (!resolved)
|
|
105
|
+
return reply;
|
|
106
|
+
const rows = await store.listGlossary(resolved.projectId, req.query);
|
|
107
|
+
return rows.map((row) => ({ ...row, updatedAt: row.updatedAt.toISOString() }));
|
|
108
|
+
});
|
|
109
|
+
// Defining a term is an idempotent upsert: the term is the identity, so the
|
|
110
|
+
// same PUT twice leaves one row with the newer meaning. That is why this is a
|
|
111
|
+
// PUT on `/:term` and not a POST to a collection.
|
|
112
|
+
r.put("/api/v1/glossary/:term", { schema: { params: termParams, body: putGlossaryBody } }, async (req, reply) => {
|
|
113
|
+
const resolved = await requireCapability(req, reply, store, "annotate");
|
|
114
|
+
if (!resolved)
|
|
115
|
+
return reply;
|
|
116
|
+
const saved = await withLimitGuard(reply, () => store.putGlossaryEntry(resolved.projectId, {
|
|
117
|
+
entry: { term: req.params.term, meaning: req.body.meaning },
|
|
118
|
+
}));
|
|
119
|
+
if (!saved)
|
|
120
|
+
return reply;
|
|
121
|
+
return { ...saved, updatedAt: saved.updatedAt.toISOString() };
|
|
122
|
+
});
|
|
123
|
+
r.delete("/api/v1/glossary/:term", { schema: { params: termParams } }, async (req, reply) => {
|
|
124
|
+
const resolved = await requireCapability(req, reply, store, "annotate");
|
|
125
|
+
if (!resolved)
|
|
126
|
+
return reply;
|
|
127
|
+
const deleted = await store.deleteGlossaryEntry(resolved.projectId, req.params.term);
|
|
128
|
+
if (!deleted)
|
|
129
|
+
return reply.code(404).send({ error: "term not defined" });
|
|
130
|
+
return reply.code(204).send();
|
|
131
|
+
});
|
|
132
|
+
// --- Saved analyses ------------------------------------------------------
|
|
133
|
+
r.get("/api/v1/analyses", { schema: { querystring: listQuery } }, async (req, reply) => {
|
|
134
|
+
const resolved = await requireCapability(req, reply, store, "query");
|
|
135
|
+
if (!resolved)
|
|
136
|
+
return reply;
|
|
137
|
+
const rows = await store.listSavedAnalyses(resolved.projectId, req.query);
|
|
138
|
+
return rows.map(toAnalysisBody);
|
|
139
|
+
});
|
|
140
|
+
r.post("/api/v1/analyses", { schema: { body: savedAnalysisSchema } }, async (req, reply) => {
|
|
141
|
+
const resolved = await requireCapability(req, reply, store, "annotate");
|
|
142
|
+
if (!resolved)
|
|
143
|
+
return reply;
|
|
144
|
+
const created = await withLimitGuard(reply, () => store.createSavedAnalysis(resolved.projectId, {
|
|
145
|
+
analysis: req.body,
|
|
146
|
+
authorKind: metadataAuthorKind(req),
|
|
147
|
+
authorKeyId: resolved.keyId,
|
|
148
|
+
}));
|
|
149
|
+
if (!created)
|
|
150
|
+
return reply;
|
|
151
|
+
return reply.code(201).send(toAnalysisBody(created));
|
|
152
|
+
});
|
|
153
|
+
r.delete("/api/v1/analyses/:id", { schema: { params: idParams } }, async (req, reply) => {
|
|
154
|
+
const resolved = await requireCapability(req, reply, store, "annotate");
|
|
155
|
+
if (!resolved)
|
|
156
|
+
return reply;
|
|
157
|
+
const deleted = await store.deleteSavedAnalysis(resolved.projectId, req.params.id);
|
|
158
|
+
if (!deleted)
|
|
159
|
+
return reply.code(404).send({ error: "analysis not found" });
|
|
160
|
+
return reply.code(204).send();
|
|
161
|
+
});
|
|
162
|
+
};
|
|
163
|
+
//# sourceMappingURL=metadata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/routes/metadata.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `GET /api/v1/sessions/:id/narrative` — the session narrative
|
|
3
|
+
* (issue #314, ADR 0051 §7, design sketch §G.2).
|
|
4
|
+
*
|
|
5
|
+
* An agent that may legitimately inspect one session has, until now, had two
|
|
6
|
+
* options and no good one: the aggregate metrics say nothing about a single
|
|
7
|
+
* session, and `/sessions/:id/events` returns the whole raw stream — tens of
|
|
8
|
+
* thousands of sampled telemetry lines that no model can read. This route serves
|
|
9
|
+
* the middle ground: an ordered, compacted account of what the session did, with
|
|
10
|
+
* timestamps relative to its first event and a hard cap on entries.
|
|
11
|
+
*
|
|
12
|
+
* **The gate is the same double gate as the raw stream (ADR 0003 / ADR 0051 §9):**
|
|
13
|
+
* `ENABLE_RAW_SESSION_RETENTION` must be on *and* the key must hold `query:raw`.
|
|
14
|
+
* A plain `query` key is authenticated — an unknown key still gets a 401 — and
|
|
15
|
+
* then refused with the same 403 body as the events route, so the two surfaces
|
|
16
|
+
* are indistinguishable to a caller probing for a way in.
|
|
17
|
+
*
|
|
18
|
+
* It lives in its own plugin rather than in `routes/query.ts` for two reasons:
|
|
19
|
+
* the file is already 2 400 lines and under concurrent change, and this route
|
|
20
|
+
* deliberately does **not** want `queryRoutes`' `format` hook (see `format`
|
|
21
|
+
* below). Registered in `app.ts`, so the app-level audit hook records every call
|
|
22
|
+
* — including the refusals, which is exactly what a project owner wants to see.
|
|
23
|
+
*/
|
|
24
|
+
import type { FastifyPluginAsync } from "fastify";
|
|
25
|
+
import type { CollectorConfig } from "../config.js";
|
|
26
|
+
import type { CollectorStore } from "../store.js";
|
|
27
|
+
interface Options {
|
|
28
|
+
store: CollectorStore;
|
|
29
|
+
config: CollectorConfig;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Session-narrative route. Separate plugin, one registration line in `app.ts`.
|
|
33
|
+
*/
|
|
34
|
+
export declare const narrativeRoutes: FastifyPluginAsync<Options>;
|
|
35
|
+
export {};
|
|
36
|
+
//# sourceMappingURL=narrative.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"narrative.d.ts","sourceRoot":"","sources":["../../src/routes/narrative.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAWlD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGlD,UAAU,OAAO;IACf,KAAK,EAAE,cAAc,CAAC;IACtB,MAAM,EAAE,eAAe,CAAC;CACzB;AAsBD;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,kBAAkB,CAAC,OAAO,CAmDvD,CAAC"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `GET /api/v1/sessions/:id/narrative` — the session narrative
|
|
3
|
+
* (issue #314, ADR 0051 §7, design sketch §G.2).
|
|
4
|
+
*
|
|
5
|
+
* An agent that may legitimately inspect one session has, until now, had two
|
|
6
|
+
* options and no good one: the aggregate metrics say nothing about a single
|
|
7
|
+
* session, and `/sessions/:id/events` returns the whole raw stream — tens of
|
|
8
|
+
* thousands of sampled telemetry lines that no model can read. This route serves
|
|
9
|
+
* the middle ground: an ordered, compacted account of what the session did, with
|
|
10
|
+
* timestamps relative to its first event and a hard cap on entries.
|
|
11
|
+
*
|
|
12
|
+
* **The gate is the same double gate as the raw stream (ADR 0003 / ADR 0051 §9):**
|
|
13
|
+
* `ENABLE_RAW_SESSION_RETENTION` must be on *and* the key must hold `query:raw`.
|
|
14
|
+
* A plain `query` key is authenticated — an unknown key still gets a 401 — and
|
|
15
|
+
* then refused with the same 403 body as the events route, so the two surfaces
|
|
16
|
+
* are indistinguishable to a caller probing for a way in.
|
|
17
|
+
*
|
|
18
|
+
* It lives in its own plugin rather than in `routes/query.ts` for two reasons:
|
|
19
|
+
* the file is already 2 400 lines and under concurrent change, and this route
|
|
20
|
+
* deliberately does **not** want `queryRoutes`' `format` hook (see `format`
|
|
21
|
+
* below). Registered in `app.ts`, so the app-level audit hook records every call
|
|
22
|
+
* — including the refusals, which is exactly what a project owner wants to see.
|
|
23
|
+
*/
|
|
24
|
+
import { z } from "zod";
|
|
25
|
+
import { buildSessionNarrative, renderSessionNarrativeText, tableResult, } from "@uptimizr/db";
|
|
26
|
+
import { NARRATIVE_LIMITS } from "@uptimizr/metrics";
|
|
27
|
+
import { requireCapability } from "../auth.js";
|
|
28
|
+
/**
|
|
29
|
+
* Querystring for the narrative. The bounds are the registry's
|
|
30
|
+
* {@link NARRATIVE_LIMITS}, not numbers retyped here, so the tool schema, the
|
|
31
|
+
* OpenAPI parameters and this validator cannot drift apart.
|
|
32
|
+
*
|
|
33
|
+
* `format` is the one place this route departs from the shared result envelope
|
|
34
|
+
* (design sketch §B.1). `full` and `table` mean exactly what they mean
|
|
35
|
+
* everywhere else; `text` is new and exists **only here**: the narrative's one
|
|
36
|
+
* consumer is a model reading a session back, and a line-per-entry rendering
|
|
37
|
+
* costs roughly a third of the tokens of the equivalent JSON. `summary` is not
|
|
38
|
+
* offered — a narrative *is* a summary, and summarising it again would be a
|
|
39
|
+
* digest of a digest.
|
|
40
|
+
*/
|
|
41
|
+
const narrativeQueryParams = z.object({
|
|
42
|
+
minDwellMs: z.coerce.number().int().nonnegative().max(NARRATIVE_LIMITS.maxMinDwellMs).optional(),
|
|
43
|
+
fpsThreshold: z.coerce.number().positive().max(NARRATIVE_LIMITS.maxFpsThreshold).optional(),
|
|
44
|
+
maxEntries: z.coerce.number().int().positive().max(NARRATIVE_LIMITS.maxMaxEntries).optional(),
|
|
45
|
+
format: z.enum(["full", "table", "text"]).optional(),
|
|
46
|
+
});
|
|
47
|
+
/**
|
|
48
|
+
* Session-narrative route. Separate plugin, one registration line in `app.ts`.
|
|
49
|
+
*/
|
|
50
|
+
export const narrativeRoutes = async (app, { store, config }) => {
|
|
51
|
+
const r = app.withTypeProvider();
|
|
52
|
+
r.get("/api/v1/sessions/:id/narrative", {
|
|
53
|
+
schema: {
|
|
54
|
+
params: z.object({ id: z.string().min(1) }),
|
|
55
|
+
querystring: narrativeQueryParams,
|
|
56
|
+
},
|
|
57
|
+
}, async (req, reply) => {
|
|
58
|
+
// Both halves of the gate, in the same order and with the same bodies as
|
|
59
|
+
// `/sessions/:id/events`.
|
|
60
|
+
const resolved = await requireCapability(req, reply, store, "query");
|
|
61
|
+
if (!resolved)
|
|
62
|
+
return reply;
|
|
63
|
+
if (!config.enableRawSessionRetention) {
|
|
64
|
+
return reply.code(403).send({ error: "raw session retention is disabled" });
|
|
65
|
+
}
|
|
66
|
+
if (!resolved.capabilities.includes("query:raw")) {
|
|
67
|
+
return reply.code(403).send({ error: "api key not permitted to read raw session data" });
|
|
68
|
+
}
|
|
69
|
+
// Stream the session out of the store rather than buffering it in the
|
|
70
|
+
// driver (ADR 0015), then compact it. The compaction is pure and lives in
|
|
71
|
+
// `@uptimizr/db`, so this handler stays a gate plus a format switch.
|
|
72
|
+
const events = [];
|
|
73
|
+
for await (const event of store.streamSessionEvents(resolved.projectId, req.params.id)) {
|
|
74
|
+
events.push(event);
|
|
75
|
+
}
|
|
76
|
+
if (events.length === 0) {
|
|
77
|
+
// Unknown to this project, or recorded before retention was switched on.
|
|
78
|
+
return reply.code(404).send({ error: "session not found" });
|
|
79
|
+
}
|
|
80
|
+
const { minDwellMs, fpsThreshold, maxEntries, format } = req.query;
|
|
81
|
+
const narrative = buildSessionNarrative(events, { minDwellMs, fpsThreshold, maxEntries });
|
|
82
|
+
if (format === "text") {
|
|
83
|
+
return reply.type("text/plain; charset=utf-8").send(renderSessionNarrativeText(narrative));
|
|
84
|
+
}
|
|
85
|
+
if (format === "table") {
|
|
86
|
+
const context = {
|
|
87
|
+
filters: { session: req.params.id, minDwellMs, fpsThreshold, maxEntries },
|
|
88
|
+
limit: maxEntries ?? NARRATIVE_LIMITS.defaultMaxEntries,
|
|
89
|
+
};
|
|
90
|
+
return tableResult("session_narrative", narrative.entries, context);
|
|
91
|
+
}
|
|
92
|
+
return narrative.entries;
|
|
93
|
+
});
|
|
94
|
+
};
|
|
95
|
+
//# sourceMappingURL=narrative.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"narrative.js","sourceRoot":"","sources":["../../src/routes/narrative.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { FastifyPluginAsync } from "fastify";
|
|
2
|
+
import type { CollectorStore } from "../store.js";
|
|
3
|
+
/**
|
|
4
|
+
* **Declarative panel specs** (#315, ADR 0051 §7, design sketch §G.3): the
|
|
5
|
+
* panels an agent pins to the dashboard when an answer is worth keeping.
|
|
6
|
+
*
|
|
7
|
+
* A fourth metadata surface beside `routes/metadata.ts`, with the same rules —
|
|
8
|
+
* writes need `annotate`, reads need `query`, the project comes from the key,
|
|
9
|
+
* every write is audited by the app-level hook, and the store bounds the row
|
|
10
|
+
* count per project and answers `409` when it is full.
|
|
11
|
+
*
|
|
12
|
+
* ## Why a spec rather than a panel module
|
|
13
|
+
*
|
|
14
|
+
* ADR 0041 can load a *remote panel module* at runtime, and is explicit about
|
|
15
|
+
* the cost: such a module runs with the dashboard's full privileges, which is
|
|
16
|
+
* why it is off by default and guarded by an origin allowlist. A panel an LLM
|
|
17
|
+
* wrote would be exactly that. So what is stored here is **data** — a metric
|
|
18
|
+
* id, a chart name, some column names — and the dashboard renders it with the
|
|
19
|
+
* panel components it already ships. Pinning a panel widens the dashboard's
|
|
20
|
+
* trust boundary by nothing, and ADR 0041's decision is left where it is.
|
|
21
|
+
*
|
|
22
|
+
* ## Validated twice, for two different questions
|
|
23
|
+
*
|
|
24
|
+
* 1. `panelSpecV1Schema` (`@uptimizr/schema`) — is this a well-formed spec? A
|
|
25
|
+
* known chart name, bounded strings, a closed query grammar, no unknown keys.
|
|
26
|
+
* 2. `validatePanelSpec` (`@uptimizr/metrics`) — will it *draw anything*? Does
|
|
27
|
+
* the metric exist and accept these filters, does the chart suit its grain,
|
|
28
|
+
* do the encoding columns exist in its result.
|
|
29
|
+
*
|
|
30
|
+
* The second is the one that matters here, and the reason it runs at pin time
|
|
31
|
+
* rather than at render time: a pinned panel is read weeks after it is written,
|
|
32
|
+
* and a line chart with no axis to walk along does not fail — it draws
|
|
33
|
+
* *something*, which somebody then reads as a trend. The moment anybody is
|
|
34
|
+
* paying attention is the moment the panel is pinned, so that is where the
|
|
35
|
+
* refusal belongs. The rejection is `400 { error, issues }` — the same body
|
|
36
|
+
* `POST /api/v1/query` answers with, carrying the validator's issue codes — so
|
|
37
|
+
* a client can fix the spec from the response instead of guessing.
|
|
38
|
+
*/
|
|
39
|
+
interface Options {
|
|
40
|
+
store: CollectorStore;
|
|
41
|
+
}
|
|
42
|
+
export declare const panelRoutes: FastifyPluginAsync<Options>;
|
|
43
|
+
export {};
|
|
44
|
+
//# sourceMappingURL=panels.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"panels.d.ts","sourceRoot":"","sources":["../../src/routes/panels.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAgB,MAAM,SAAS,CAAC;AAMhE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGlD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,UAAU,OAAO;IACf,KAAK,EAAE,cAAc,CAAC;CACvB;AAuDD,eAAO,MAAM,WAAW,EAAE,kBAAkB,CAAC,OAAO,CAuDnD,CAAC"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { panelSpecV1Schema } from "@uptimizr/schema";
|
|
3
|
+
import { validatePanelSpec } from "@uptimizr/metrics";
|
|
4
|
+
import { MetadataLimitError } from "@uptimizr/db";
|
|
5
|
+
import { metadataAuthorKind, requireCapability } from "../auth.js";
|
|
6
|
+
/** Generated row id in a path (`/panels/:id`). */
|
|
7
|
+
const idParams = z.object({ id: z.string().min(1).max(128) });
|
|
8
|
+
/** Row cap for the listing; the store's own cap is the real bound. */
|
|
9
|
+
const listQuery = z.object({
|
|
10
|
+
limit: z.coerce.number().int().positive().max(500).optional(),
|
|
11
|
+
});
|
|
12
|
+
/** Wire shape of one stored panel row. */
|
|
13
|
+
function toPanelBody(row) {
|
|
14
|
+
return {
|
|
15
|
+
...row,
|
|
16
|
+
createdAt: row.createdAt.toISOString(),
|
|
17
|
+
updatedAt: row.updatedAt.toISOString(),
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Run a metadata write and turn a full project into a `409` — the same guard
|
|
22
|
+
* `routes/metadata.ts` uses, for the same reason: a cap breach is not a bad
|
|
23
|
+
* request (the payload was fine) and not a server fault; it is a conflict with
|
|
24
|
+
* the project's state that the caller fixes by unpinning something.
|
|
25
|
+
*/
|
|
26
|
+
async function withLimitGuard(reply, run) {
|
|
27
|
+
try {
|
|
28
|
+
return await run();
|
|
29
|
+
}
|
|
30
|
+
catch (err) {
|
|
31
|
+
if (err instanceof MetadataLimitError) {
|
|
32
|
+
await reply.code(409).send({ error: err.message });
|
|
33
|
+
return undefined;
|
|
34
|
+
}
|
|
35
|
+
throw err;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Check a parsed spec against the metric registry, replying `400` with the
|
|
40
|
+
* validator's issues when it cannot be drawn. Returns whether the spec passed,
|
|
41
|
+
* so both the create and the replace path refuse identically.
|
|
42
|
+
*/
|
|
43
|
+
async function checkAgainstRegistry(reply, spec) {
|
|
44
|
+
const { issues } = validatePanelSpec(spec);
|
|
45
|
+
if (issues.length === 0)
|
|
46
|
+
return true;
|
|
47
|
+
await reply.code(400).send({
|
|
48
|
+
error: `the panel cannot be pinned: ${issues[0].message}`,
|
|
49
|
+
issues: issues.map((issue) => ({ ...issue })),
|
|
50
|
+
});
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
export const panelRoutes = async (app, { store }) => {
|
|
54
|
+
const r = app.withTypeProvider();
|
|
55
|
+
// The project's pinned panels, oldest first — these are grid positions, and
|
|
56
|
+
// listing them newest-first would reshuffle the dashboard on every pin.
|
|
57
|
+
r.get("/api/v1/panels", { schema: { querystring: listQuery } }, async (req, reply) => {
|
|
58
|
+
const resolved = await requireCapability(req, reply, store, "query");
|
|
59
|
+
if (!resolved)
|
|
60
|
+
return reply;
|
|
61
|
+
const rows = await store.listPanelSpecs(resolved.projectId, req.query);
|
|
62
|
+
return rows.map(toPanelBody);
|
|
63
|
+
});
|
|
64
|
+
r.post("/api/v1/panels", { schema: { body: panelSpecV1Schema } }, async (req, reply) => {
|
|
65
|
+
const resolved = await requireCapability(req, reply, store, "annotate");
|
|
66
|
+
if (!resolved)
|
|
67
|
+
return reply;
|
|
68
|
+
if (!(await checkAgainstRegistry(reply, req.body)))
|
|
69
|
+
return reply;
|
|
70
|
+
const created = await withLimitGuard(reply, () => store.createPanelSpec(resolved.projectId, {
|
|
71
|
+
spec: req.body,
|
|
72
|
+
authorKind: metadataAuthorKind(req),
|
|
73
|
+
authorKeyId: resolved.keyId,
|
|
74
|
+
}));
|
|
75
|
+
if (!created)
|
|
76
|
+
return reply;
|
|
77
|
+
return reply.code(201).send(toPanelBody(created));
|
|
78
|
+
});
|
|
79
|
+
// A full replacement rather than a patch: the spec is one closed document and
|
|
80
|
+
// half of one is not a panel. The row keeps its id, its place in the grid and
|
|
81
|
+
// its original authorship — an edit is not a new pin.
|
|
82
|
+
r.put("/api/v1/panels/:id", { schema: { params: idParams, body: panelSpecV1Schema } }, async (req, reply) => {
|
|
83
|
+
const resolved = await requireCapability(req, reply, store, "annotate");
|
|
84
|
+
if (!resolved)
|
|
85
|
+
return reply;
|
|
86
|
+
if (!(await checkAgainstRegistry(reply, req.body)))
|
|
87
|
+
return reply;
|
|
88
|
+
const updated = await store.updatePanelSpec(resolved.projectId, req.params.id, {
|
|
89
|
+
spec: req.body,
|
|
90
|
+
});
|
|
91
|
+
if (!updated)
|
|
92
|
+
return reply.code(404).send({ error: "panel not found" });
|
|
93
|
+
return toPanelBody(updated);
|
|
94
|
+
});
|
|
95
|
+
// 404 for an unknown id *and* for one that belongs to another project — the
|
|
96
|
+
// two are deliberately indistinguishable, so an id cannot be probed across
|
|
97
|
+
// projects.
|
|
98
|
+
r.delete("/api/v1/panels/:id", { schema: { params: idParams } }, async (req, reply) => {
|
|
99
|
+
const resolved = await requireCapability(req, reply, store, "annotate");
|
|
100
|
+
if (!resolved)
|
|
101
|
+
return reply;
|
|
102
|
+
const deleted = await store.deletePanelSpec(resolved.projectId, req.params.id);
|
|
103
|
+
if (!deleted)
|
|
104
|
+
return reply.code(404).send({ error: "panel not found" });
|
|
105
|
+
return reply.code(204).send();
|
|
106
|
+
});
|
|
107
|
+
};
|
|
108
|
+
//# sourceMappingURL=panels.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"panels.js","sourceRoot":"","sources":["../../src/routes/panels.ts"],"names":[],"mappings":"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"}
|