@uptimizr/collector-server 2.0.1 → 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.
Files changed (139) hide show
  1. package/AGENTS.md +187 -11
  2. package/README.md +91 -7
  3. package/dist/__tests__/support/registryRequests.d.ts +2 -1
  4. package/dist/__tests__/support/registryRequests.d.ts.map +1 -1
  5. package/dist/__tests__/support/registryRequests.js +17 -1
  6. package/dist/__tests__/support/registryRequests.js.map +1 -1
  7. package/dist/__tests__/support/subscriptionFixtures.d.ts +63 -0
  8. package/dist/__tests__/support/subscriptionFixtures.d.ts.map +1 -0
  9. package/dist/__tests__/support/subscriptionFixtures.js +17 -0
  10. package/dist/__tests__/support/subscriptionFixtures.js.map +1 -0
  11. package/dist/agentReport.d.ts +256 -0
  12. package/dist/agentReport.d.ts.map +1 -0
  13. package/dist/agentReport.js +861 -0
  14. package/dist/agentReport.js.map +1 -0
  15. package/dist/app.d.ts +13 -0
  16. package/dist/app.d.ts.map +1 -1
  17. package/dist/app.js +112 -5
  18. package/dist/app.js.map +1 -1
  19. package/dist/audit.d.ts +5 -1
  20. package/dist/audit.d.ts.map +1 -1
  21. package/dist/audit.js +24 -4
  22. package/dist/audit.js.map +1 -1
  23. package/dist/auth.d.ts +41 -1
  24. package/dist/auth.d.ts.map +1 -1
  25. package/dist/auth.js +47 -0
  26. package/dist/auth.js.map +1 -1
  27. package/dist/cli.js +133 -13
  28. package/dist/cli.js.map +1 -1
  29. package/dist/cliStore.d.ts +31 -2
  30. package/dist/cliStore.d.ts.map +1 -1
  31. package/dist/cliStore.js +34 -0
  32. package/dist/cliStore.js.map +1 -1
  33. package/dist/clickhouseStore.d.ts.map +1 -1
  34. package/dist/clickhouseStore.js +44 -2
  35. package/dist/clickhouseStore.js.map +1 -1
  36. package/dist/config.d.ts +49 -0
  37. package/dist/config.d.ts.map +1 -1
  38. package/dist/config.js +21 -0
  39. package/dist/config.js.map +1 -1
  40. package/dist/connectionLimiter.d.ts +23 -0
  41. package/dist/connectionLimiter.d.ts.map +1 -0
  42. package/dist/connectionLimiter.js +24 -0
  43. package/dist/connectionLimiter.js.map +1 -0
  44. package/dist/duckdbStore.d.ts.map +1 -1
  45. package/dist/duckdbStore.js +44 -1
  46. package/dist/duckdbStore.js.map +1 -1
  47. package/dist/internalDispatch.d.ts +36 -0
  48. package/dist/internalDispatch.d.ts.map +1 -0
  49. package/dist/internalDispatch.js +50 -0
  50. package/dist/internalDispatch.js.map +1 -0
  51. package/dist/memoryStore.d.ts.map +1 -1
  52. package/dist/memoryStore.js +314 -1
  53. package/dist/memoryStore.js.map +1 -1
  54. package/dist/mssqlStore.d.ts.map +1 -1
  55. package/dist/mssqlStore.js +44 -2
  56. package/dist/mssqlStore.js.map +1 -1
  57. package/dist/postgresStore.d.ts.map +1 -1
  58. package/dist/postgresStore.js +44 -2
  59. package/dist/postgresStore.js.map +1 -1
  60. package/dist/projectMetadata.d.ts +82 -0
  61. package/dist/projectMetadata.d.ts.map +1 -0
  62. package/dist/projectMetadata.js +50 -0
  63. package/dist/projectMetadata.js.map +1 -0
  64. package/dist/routes/context.d.ts +135 -0
  65. package/dist/routes/context.d.ts.map +1 -0
  66. package/dist/routes/context.js +306 -0
  67. package/dist/routes/context.js.map +1 -0
  68. package/dist/routes/insights.d.ts +36 -0
  69. package/dist/routes/insights.d.ts.map +1 -0
  70. package/dist/routes/insights.js +810 -0
  71. package/dist/routes/insights.js.map +1 -0
  72. package/dist/routes/live.d.ts +8 -0
  73. package/dist/routes/live.d.ts.map +1 -1
  74. package/dist/routes/live.js +8 -7
  75. package/dist/routes/live.js.map +1 -1
  76. package/dist/routes/mcp.d.ts +36 -0
  77. package/dist/routes/mcp.d.ts.map +1 -0
  78. package/dist/routes/mcp.js +262 -0
  79. package/dist/routes/mcp.js.map +1 -0
  80. package/dist/routes/meta.d.ts +16 -2
  81. package/dist/routes/meta.d.ts.map +1 -1
  82. package/dist/routes/meta.js +699 -10
  83. package/dist/routes/meta.js.map +1 -1
  84. package/dist/routes/metadata.d.ts +31 -0
  85. package/dist/routes/metadata.d.ts.map +1 -0
  86. package/dist/routes/metadata.js +163 -0
  87. package/dist/routes/metadata.js.map +1 -0
  88. package/dist/routes/narrative.d.ts +36 -0
  89. package/dist/routes/narrative.d.ts.map +1 -0
  90. package/dist/routes/narrative.js +95 -0
  91. package/dist/routes/narrative.js.map +1 -0
  92. package/dist/routes/panels.d.ts +44 -0
  93. package/dist/routes/panels.d.ts.map +1 -0
  94. package/dist/routes/panels.js +108 -0
  95. package/dist/routes/panels.js.map +1 -0
  96. package/dist/routes/query-dsl.d.ts +50 -0
  97. package/dist/routes/query-dsl.d.ts.map +1 -0
  98. package/dist/routes/query-dsl.js +359 -0
  99. package/dist/routes/query-dsl.js.map +1 -0
  100. package/dist/routes/query.d.ts +36 -0
  101. package/dist/routes/query.d.ts.map +1 -1
  102. package/dist/routes/query.js +101 -13
  103. package/dist/routes/query.js.map +1 -1
  104. package/dist/routes/subscriptions.d.ts +52 -0
  105. package/dist/routes/subscriptions.d.ts.map +1 -0
  106. package/dist/routes/subscriptions.js +290 -0
  107. package/dist/routes/subscriptions.js.map +1 -0
  108. package/dist/store.d.ts +113 -2
  109. package/dist/store.d.ts.map +1 -1
  110. package/dist/subscriptions/cli.d.ts +36 -0
  111. package/dist/subscriptions/cli.d.ts.map +1 -0
  112. package/dist/subscriptions/cli.js +143 -0
  113. package/dist/subscriptions/cli.js.map +1 -0
  114. package/dist/subscriptions/delivery.d.ts +101 -0
  115. package/dist/subscriptions/delivery.d.ts.map +1 -0
  116. package/dist/subscriptions/delivery.js +165 -0
  117. package/dist/subscriptions/delivery.js.map +1 -0
  118. package/dist/subscriptions/evaluate.d.ts +119 -0
  119. package/dist/subscriptions/evaluate.d.ts.map +1 -0
  120. package/dist/subscriptions/evaluate.js +326 -0
  121. package/dist/subscriptions/evaluate.js.map +1 -0
  122. package/dist/subscriptions/scheduler.d.ts +97 -0
  123. package/dist/subscriptions/scheduler.d.ts.map +1 -0
  124. package/dist/subscriptions/scheduler.js +332 -0
  125. package/dist/subscriptions/scheduler.js.map +1 -0
  126. package/dist/subscriptions/stream.d.ts +40 -0
  127. package/dist/subscriptions/stream.d.ts.map +1 -0
  128. package/dist/subscriptions/stream.js +38 -0
  129. package/dist/subscriptions/stream.js.map +1 -0
  130. package/dist/version.d.ts +3 -0
  131. package/dist/version.d.ts.map +1 -0
  132. package/dist/version.js +25 -0
  133. package/dist/version.js.map +1 -0
  134. package/dist/webhookSignature.d.ts +64 -0
  135. package/dist/webhookSignature.d.ts.map +1 -0
  136. package/dist/webhookSignature.js +91 -0
  137. package/dist/webhookSignature.js.map +1 -0
  138. package/llms.txt +39 -2
  139. package/package.json +17 -14
@@ -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":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,MAAM,EACN,gBAAgB,EAChB,0BAA0B,EAC1B,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,kBAAkB,EAAmD,MAAM,cAAc,CAAC;AAEnG,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AA8BnE,wEAAwE;AACxE,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAE9D,6EAA6E;AAC7E,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC;AAE1D,0CAA0C;AAC1C,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,UAAU,EAAE,0BAA0B,CAAC,QAAQ,EAAE;IACjD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC,QAAQ,EAAE;IAC9E,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;IACvD,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;IACvD,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;CAC9D,CAAC,CAAC;AAEH,kEAAkE;AAClE,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC;IACzB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;CAC9D,CAAC,CAAC;AAEH,+EAA+E;AAC/E,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,wBAAwB,CAAC;CAChE,CAAC,CAAC;AAEH,gFAAgF;AAChF,SAAS,GAAG,CAAC,KAAkB;IAC7B,OAAO,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;AACpD,CAAC;AAED,wCAAwC;AACxC,SAAS,gBAAgB,CAAC,GAAqB;IAC7C,OAAO;QACL,GAAG,GAAG;QACN,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC;QACrB,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC;QACrB,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE;QACtC,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE;KACvC,CAAC;AACJ,CAAC;AAED,4CAA4C;AAC5C,SAAS,cAAc,CAAC,GAAwB;IAC9C,OAAO,EAAE,GAAG,GAAG,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC;AAC5D,CAAC;AAED;;;;;;;GAOG;AACH,KAAK,UAAU,cAAc,CAC3B,KAAmB,EACnB,GAAqB;IAErB,IAAI,CAAC;QACH,OAAO,MAAM,GAAG,EAAE,CAAC;IACrB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,kBAAkB,EAAE,CAAC;YACtC,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YACnD,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GAAgC,KAAK,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;IAClF,MAAM,CAAC,GAAG,GAAG,CAAC,gBAAgB,EAAmB,CAAC;IAElD,4EAA4E;IAE5E,0EAA0E;IAC1E,6EAA6E;IAC7E,mEAAmE;IACnE,CAAC,CAAC,GAAG,CACH,qBAAqB,EACrB,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,oBAAoB,EAAE,EAAE,EACjD,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;QACnB,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QACrE,IAAI,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC;QAC5B,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,eAAe,CAAC,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;QACxE,OAAO,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IACpC,CAAC,CACF,CAAC;IAEF,CAAC,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;QACzF,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;QACxE,IAAI,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC;QAC5B,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE,CAC/C,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,SAAS,EAAE;YACzC,UAAU,EAAE,GAAG,CAAC,IAAI;YACpB,UAAU,EAAE,kBAAkB,CAAC,GAAG,CAAC;YACnC,WAAW,EAAE,QAAQ,CAAC,KAAK;SAC5B,CAAC,CACH,CAAC;QACF,IAAI,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QAC3B,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,4EAA4E;IAC5E,2EAA2E;IAC3E,YAAY;IACZ,CAAC,CAAC,MAAM,CAAC,yBAAyB,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;QACzF,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;QACxE,IAAI,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC;QAC5B,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAChF,IAAI,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC,CAAC;QAC7E,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,4EAA4E;IAE5E,CAAC,CAAC,GAAG,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;QACrF,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QACrE,IAAI,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC;QAC5B,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;QACrE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC;IACjF,CAAC,CAAC,CAAC;IAEH,4EAA4E;IAC5E,8EAA8E;IAC9E,kDAAkD;IAClD,CAAC,CAAC,GAAG,CACH,wBAAwB,EACxB,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE,EACzD,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;QACnB,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;QACxE,IAAI,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC;QAC5B,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE,CAC7C,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,SAAS,EAAE;YACzC,KAAK,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE;SAC5D,CAAC,CACH,CAAC;QACF,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC;QACzB,OAAO,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC;IAChE,CAAC,CACF,CAAC;IAEF,CAAC,CAAC,MAAM,CAAC,wBAAwB,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;QAC1F,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;QACxE,IAAI,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC;QAC5B,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,mBAAmB,CAAC,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACrF,IAAI,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC,CAAC;QACzE,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,4EAA4E;IAE5E,CAAC,CAAC,GAAG,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;QACrF,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QACrE,IAAI,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC;QAC5B,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,iBAAiB,CAAC,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;QAC1E,OAAO,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;QACzF,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;QACxE,IAAI,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC;QAC5B,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE,CAC/C,KAAK,CAAC,mBAAmB,CAAC,QAAQ,CAAC,SAAS,EAAE;YAC5C,QAAQ,EAAE,GAAG,CAAC,IAAI;YAClB,UAAU,EAAE,kBAAkB,CAAC,GAAG,CAAC;YACnC,WAAW,EAAE,QAAQ,CAAC,KAAK;SAC5B,CAAC,CACH,CAAC;QACF,IAAI,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QAC3B,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,CAAC,CAAC,MAAM,CAAC,sBAAsB,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;QACtF,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;QACxE,IAAI,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC;QAC5B,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,mBAAmB,CAAC,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACnF,IAAI,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC,CAAC;QAC3E,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAChC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
@@ -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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"}