@pristine-ts/observability 2.0.16 → 2.0.17

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 (68) hide show
  1. package/dist/lib/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  2. package/dist/lib/esm/tsconfig.tsbuildinfo +1 -1
  3. package/package.json +6 -6
  4. package/dist/lib/cjs/models/run-metadata.model.js +0 -18
  5. package/dist/lib/cjs/models/run-metadata.model.js.map +0 -1
  6. package/dist/lib/cjs/observability-configuration.js +0 -49
  7. package/dist/lib/cjs/observability-configuration.js.map +0 -1
  8. package/dist/lib/cjs/serializers/serialized-span.interface.js +0 -3
  9. package/dist/lib/cjs/serializers/serialized-span.interface.js.map +0 -1
  10. package/dist/lib/cjs/serializers/serialized-trace.interface.js +0 -3
  11. package/dist/lib/cjs/serializers/serialized-trace.interface.js.map +0 -1
  12. package/dist/lib/cjs/store/log-tailer.js +0 -110
  13. package/dist/lib/cjs/store/log-tailer.js.map +0 -1
  14. package/dist/lib/cjs/store/observability-paths.js +0 -78
  15. package/dist/lib/cjs/store/observability-paths.js.map +0 -1
  16. package/dist/lib/cjs/store/observability-run-manager.js +0 -346
  17. package/dist/lib/cjs/store/observability-run-manager.js.map +0 -1
  18. package/dist/lib/cjs/store/observability-store-reader.js +0 -174
  19. package/dist/lib/cjs/store/observability-store-reader.js.map +0 -1
  20. package/dist/lib/cjs/store/serializers/serialized-span.interface.js +0 -3
  21. package/dist/lib/cjs/store/serializers/serialized-span.interface.js.map +0 -1
  22. package/dist/lib/cjs/store/serializers/serialized-trace.interface.js +0 -3
  23. package/dist/lib/cjs/store/serializers/serialized-trace.interface.js.map +0 -1
  24. package/dist/lib/cjs/store/serializers/span-deserializer.js +0 -26
  25. package/dist/lib/cjs/store/serializers/span-deserializer.js.map +0 -1
  26. package/dist/lib/cjs/store/serializers/trace-deserializer.js +0 -24
  27. package/dist/lib/cjs/store/serializers/trace-deserializer.js.map +0 -1
  28. package/dist/lib/cjs/store/trace-deserializer.js +0 -41
  29. package/dist/lib/cjs/store/trace-deserializer.js.map +0 -1
  30. package/dist/lib/esm/models/run-metadata.model.js +0 -14
  31. package/dist/lib/esm/models/run-metadata.model.js.map +0 -1
  32. package/dist/lib/esm/observability-configuration.js +0 -46
  33. package/dist/lib/esm/observability-configuration.js.map +0 -1
  34. package/dist/lib/esm/serializers/serialized-span.interface.js +0 -2
  35. package/dist/lib/esm/serializers/serialized-span.interface.js.map +0 -1
  36. package/dist/lib/esm/serializers/serialized-trace.interface.js +0 -2
  37. package/dist/lib/esm/serializers/serialized-trace.interface.js.map +0 -1
  38. package/dist/lib/esm/store/log-tailer.js +0 -73
  39. package/dist/lib/esm/store/log-tailer.js.map +0 -1
  40. package/dist/lib/esm/store/observability-paths.js +0 -41
  41. package/dist/lib/esm/store/observability-paths.js.map +0 -1
  42. package/dist/lib/esm/store/observability-run-manager.js +0 -310
  43. package/dist/lib/esm/store/observability-run-manager.js.map +0 -1
  44. package/dist/lib/esm/store/observability-store-reader.js +0 -138
  45. package/dist/lib/esm/store/observability-store-reader.js.map +0 -1
  46. package/dist/lib/esm/store/serializers/serialized-span.interface.js +0 -2
  47. package/dist/lib/esm/store/serializers/serialized-span.interface.js.map +0 -1
  48. package/dist/lib/esm/store/serializers/serialized-trace.interface.js +0 -2
  49. package/dist/lib/esm/store/serializers/serialized-trace.interface.js.map +0 -1
  50. package/dist/lib/esm/store/serializers/span-deserializer.js +0 -22
  51. package/dist/lib/esm/store/serializers/span-deserializer.js.map +0 -1
  52. package/dist/lib/esm/store/serializers/trace-deserializer.js +0 -20
  53. package/dist/lib/esm/store/serializers/trace-deserializer.js.map +0 -1
  54. package/dist/lib/esm/store/trace-deserializer.js +0 -37
  55. package/dist/lib/esm/store/trace-deserializer.js.map +0 -1
  56. package/dist/types/models/run-metadata.model.d.ts +0 -28
  57. package/dist/types/observability-configuration.d.ts +0 -32
  58. package/dist/types/serializers/serialized-span.interface.d.ts +0 -14
  59. package/dist/types/serializers/serialized-trace.interface.d.ts +0 -14
  60. package/dist/types/store/log-tailer.d.ts +0 -27
  61. package/dist/types/store/observability-paths.d.ts +0 -30
  62. package/dist/types/store/observability-run-manager.d.ts +0 -96
  63. package/dist/types/store/observability-store-reader.d.ts +0 -55
  64. package/dist/types/store/serializers/serialized-span.interface.d.ts +0 -14
  65. package/dist/types/store/serializers/serialized-trace.interface.d.ts +0 -14
  66. package/dist/types/store/serializers/span-deserializer.d.ts +0 -11
  67. package/dist/types/store/serializers/trace-deserializer.d.ts +0 -9
  68. package/dist/types/store/trace-deserializer.d.ts +0 -41
@@ -1,310 +0,0 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- var __metadata = (this && this.__metadata) || function (k, v) {
8
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
- };
10
- var __param = (this && this.__param) || function (paramIndex, decorator) {
11
- return function (target, key) { decorator(target, key, paramIndex); }
12
- };
13
- var ObservabilityRunManager_1;
14
- import * as fs from "fs";
15
- import * as path from "path";
16
- import { inject, injectable, singleton } from "tsyringe";
17
- import { InternalContainerParameterEnum, moduleScoped } from "@pristine-ts/common";
18
- import { ObservabilityModuleKeyname } from "../observability.module.keyname";
19
- import { ObservabilityConfiguration } from "../observability-configuration";
20
- import { ObservabilityPaths } from "./observability-paths";
21
- import { RunMetadata } from "../models/run-metadata.model";
22
- /**
23
- * Owns the lifecycle of an observability run. A "run" is one `pristine start` lifetime;
24
- * the run directory is keyed by the kernel instantiation id.
25
- *
26
- * The observability writers (`ObservabilityLogger`, `ObservabilityTracer`) stay dormant
27
- * until `beginRun()` is called — so one-shot CLI commands (`build`, `logs`, `trace`) and
28
- * the REPL never pollute the store. `StartCommand` is the only caller of `beginRun()`.
29
- *
30
- * A singleton so the logger, the tracer, and `StartCommand` all share the same run state.
31
- */
32
- let ObservabilityRunManager = ObservabilityRunManager_1 = class ObservabilityRunManager {
33
- constructor(configuration, runId) {
34
- this.configuration = configuration;
35
- this.runId = runId;
36
- /**
37
- * Approximate running total of bytes written to the active run. Incremented cheaply by
38
- * the writers via `recordBytesWritten`; resynced to the real on-disk total after each
39
- * reclaim. Used to decide when to enforce the per-run size budget without stat-ing the
40
- * whole run directory on every write.
41
- */
42
- this.runBytes = 0;
43
- this.paths = new ObservabilityPaths(configuration.directory);
44
- }
45
- /**
46
- * Begins a run: creates the run directory, writes `run.json`, repoints `latest.json`,
47
- * and prunes old runs. No-op when observability is disabled. Safe to call once per
48
- * process.
49
- */
50
- beginRun(command) {
51
- if (this.configuration.enabled === false || this.activeRunDirectory !== undefined) {
52
- return;
53
- }
54
- const runDirectory = this.paths.runDirectory(this.runId);
55
- fs.mkdirSync(this.paths.tracesDirectory(this.runId), { recursive: true });
56
- const metadata = new RunMetadata(this.runId, new Date().toISOString(), process.pid, command);
57
- fs.writeFileSync(this.paths.runMetadataFile(this.runId), JSON.stringify(metadata, null, 2));
58
- fs.writeFileSync(this.paths.latestPointerFile(), JSON.stringify({ runId: this.runId }, null, 2));
59
- this.activeRunDirectory = runDirectory;
60
- this.runBytes = 0;
61
- this.pruneOldRuns();
62
- }
63
- /**
64
- * Reports bytes just written to the run by a writer. Cheap — an add and a compare. When
65
- * the running total crosses the configured `maxRunSizeBytes`, triggers a reclaim that
66
- * drops the run's oldest data. No-op when no run is active or the cap is disabled.
67
- */
68
- recordBytesWritten(bytes) {
69
- if (this.activeRunDirectory === undefined || this.configuration.maxRunSizeBytes <= 0) {
70
- return;
71
- }
72
- this.runBytes += bytes;
73
- if (this.runBytes > this.configuration.maxRunSizeBytes) {
74
- this.reclaim();
75
- }
76
- }
77
- /**
78
- * Ends the active run by stamping `endedAt` into `run.json`. No-op when no run is active.
79
- */
80
- endRun() {
81
- if (this.activeRunDirectory === undefined) {
82
- return;
83
- }
84
- try {
85
- const file = this.paths.runMetadataFile(this.runId);
86
- const metadata = JSON.parse(fs.readFileSync(file, "utf8"));
87
- metadata.endedAt = new Date().toISOString();
88
- fs.writeFileSync(file, JSON.stringify(metadata, null, 2));
89
- }
90
- catch (_a) {
91
- // The run directory may have been pruned/removed out from under us — nothing to do.
92
- }
93
- this.activeRunDirectory = undefined;
94
- }
95
- /**
96
- * Whether a run is currently active. The writers consult this on every write.
97
- */
98
- isRunActive() {
99
- return this.configuration.enabled && this.activeRunDirectory !== undefined;
100
- }
101
- /**
102
- * The absolute logs file for the active run, or undefined when no run is active.
103
- */
104
- logsFile() {
105
- this.ensureAutoBegun();
106
- return this.activeRunDirectory === undefined ? undefined : this.paths.logsFile(this.runId);
107
- }
108
- /**
109
- * The absolute requests-index file for the active run, or undefined when no run is active.
110
- */
111
- requestsFile() {
112
- this.ensureAutoBegun();
113
- return this.activeRunDirectory === undefined ? undefined : this.paths.requestsFile(this.runId);
114
- }
115
- /**
116
- * The absolute path of the trace file for a given trace id in the active run, or
117
- * undefined when no run is active.
118
- */
119
- traceFile(traceId) {
120
- this.ensureAutoBegun();
121
- return this.activeRunDirectory === undefined ? undefined : this.paths.traceFile(this.runId, traceId);
122
- }
123
- /**
124
- * Lazily begins a run when `autoBegin` is configured and none is active yet — so a
125
- * server started outside the `pristine` CLI captures its logs/traces on the first
126
- * write, with nothing calling `beginRun()` explicitly.
127
- */
128
- ensureAutoBegun() {
129
- if (this.activeRunDirectory === undefined && this.configuration.autoBegin) {
130
- this.beginRun("auto");
131
- }
132
- }
133
- /**
134
- * Drops the run's oldest data until it is back under the budget's low-water mark:
135
- * oldest trace files first, then the head of `logs.jsonl` (keeping the newest tail).
136
- * The `requests.jsonl` index is rewritten to drop entries for deleted traces.
137
- *
138
- * Best-effort and fully guarded — budget enforcement must never break or lose a write.
139
- */
140
- reclaim() {
141
- if (this.activeRunDirectory === undefined) {
142
- return;
143
- }
144
- try {
145
- const lowWater = Math.floor(this.configuration.maxRunSizeBytes * ObservabilityRunManager_1.LOW_WATER_FRACTION);
146
- const logsFile = this.paths.logsFile(this.runId);
147
- const requestsFile = this.paths.requestsFile(this.runId);
148
- const tracesDirectory = this.paths.tracesDirectory(this.runId);
149
- const sizeOf = (file) => {
150
- try {
151
- return fs.statSync(file).size;
152
- }
153
- catch (_a) {
154
- return 0;
155
- }
156
- };
157
- let traceFiles = [];
158
- try {
159
- traceFiles = fs.readdirSync(tracesDirectory).map(name => {
160
- const filePath = path.join(tracesDirectory, name);
161
- const stats = fs.statSync(filePath);
162
- return { path: filePath, size: stats.size, mtime: stats.mtimeMs };
163
- }).sort((a, b) => a.mtime - b.mtime);
164
- }
165
- catch (_a) {
166
- // No traces directory yet — nothing to drop on that side.
167
- }
168
- let total = sizeOf(logsFile) + sizeOf(requestsFile) + traceFiles.reduce((sum, file) => sum + file.size, 0);
169
- // Drop oldest trace files until under the low-water mark (or none remain).
170
- let tracesDeleted = false;
171
- while (total > lowWater && traceFiles.length > 0) {
172
- const oldest = traceFiles.shift();
173
- try {
174
- fs.rmSync(oldest.path, { force: true });
175
- total -= oldest.size;
176
- tracesDeleted = true;
177
- }
178
- catch (_b) {
179
- break;
180
- }
181
- }
182
- // Still over — trim the head of logs.jsonl, keeping the newest tail.
183
- if (total > lowWater) {
184
- const logsSize = sizeOf(logsFile);
185
- const keep = Math.max(0, lowWater - (total - logsSize));
186
- if (logsSize > keep) {
187
- this.trimFileHead(logsFile, keep);
188
- total = total - logsSize + sizeOf(logsFile);
189
- }
190
- }
191
- if (tracesDeleted) {
192
- this.pruneRequestsIndex();
193
- total = sizeOf(logsFile) + sizeOf(requestsFile)
194
- + this.directoryTotalSize(tracesDirectory);
195
- }
196
- this.runBytes = total;
197
- }
198
- catch (_c) {
199
- // Best-effort — never let budget enforcement break a write.
200
- }
201
- }
202
- /**
203
- * Rewrites a file in place keeping only its last `keepBytes` bytes, aligned forward to
204
- * the next newline so no partial line survives.
205
- */
206
- trimFileHead(file, keepBytes) {
207
- const size = fs.statSync(file).size;
208
- if (size <= keepBytes) {
209
- return;
210
- }
211
- const buffer = Buffer.alloc(keepBytes);
212
- const fd = fs.openSync(file, "r");
213
- try {
214
- fs.readSync(fd, buffer, 0, keepBytes, size - keepBytes);
215
- }
216
- finally {
217
- fs.closeSync(fd);
218
- }
219
- const newlineIndex = buffer.indexOf(0x0a);
220
- const content = newlineIndex === -1 ? Buffer.alloc(0) : buffer.subarray(newlineIndex + 1);
221
- fs.writeFileSync(file, content);
222
- }
223
- /**
224
- * Rewrites `requests.jsonl` keeping only entries whose trace file still exists — so the
225
- * request index stays consistent after trace files are reclaimed.
226
- */
227
- pruneRequestsIndex() {
228
- const requestsFile = this.paths.requestsFile(this.runId);
229
- try {
230
- const kept = fs.readFileSync(requestsFile, "utf8")
231
- .split("\n")
232
- .filter(line => line.trim().length > 0)
233
- .filter(line => {
234
- try {
235
- const traceId = JSON.parse(line).traceId;
236
- return typeof traceId === "string" && fs.existsSync(this.paths.traceFile(this.runId, traceId));
237
- }
238
- catch (_a) {
239
- return false;
240
- }
241
- });
242
- fs.writeFileSync(requestsFile, kept.length > 0 ? kept.join("\n") + "\n" : "");
243
- }
244
- catch (_a) {
245
- // Best-effort.
246
- }
247
- }
248
- /**
249
- * Sum of the sizes of every file directly inside `directory`.
250
- */
251
- directoryTotalSize(directory) {
252
- try {
253
- return fs.readdirSync(directory).reduce((sum, name) => {
254
- try {
255
- return sum + fs.statSync(path.join(directory, name)).size;
256
- }
257
- catch (_a) {
258
- return sum;
259
- }
260
- }, 0);
261
- }
262
- catch (_a) {
263
- return 0;
264
- }
265
- }
266
- /**
267
- * Removes run directories beyond the retained limit, ordered by their
268
- * `run.json:startedAt`. Best-effort — a failure to prune never blocks a run.
269
- */
270
- pruneOldRuns() {
271
- try {
272
- const runsDirectory = this.paths.runsDirectory();
273
- const entries = fs.readdirSync(runsDirectory, { withFileTypes: true })
274
- .filter(entry => entry.isDirectory())
275
- .map(entry => {
276
- let startedAt = 0;
277
- try {
278
- const metadataPath = this.paths.runMetadataFile(entry.name);
279
- const metadata = JSON.parse(fs.readFileSync(metadataPath, "utf8"));
280
- startedAt = Date.parse(metadata.startedAt);
281
- }
282
- catch (_a) {
283
- // Missing/corrupt run.json — treat as oldest so it's pruned first.
284
- }
285
- return { name: entry.name, startedAt };
286
- })
287
- .sort((a, b) => b.startedAt - a.startedAt);
288
- for (const stale of entries.slice(Math.max(this.configuration.retainedRuns, 1))) {
289
- fs.rmSync(this.paths.runDirectory(stale.name), { recursive: true, force: true });
290
- }
291
- }
292
- catch (_a) {
293
- // Best-effort retention; never block the run on a cleanup failure.
294
- }
295
- }
296
- };
297
- /**
298
- * Once the reclaimed run exceeds the budget we trim back to this fraction of it, so the
299
- * (relatively expensive) reclaim isn't re-triggered on the very next write.
300
- */
301
- ObservabilityRunManager.LOW_WATER_FRACTION = 0.8;
302
- ObservabilityRunManager = ObservabilityRunManager_1 = __decorate([
303
- moduleScoped(ObservabilityModuleKeyname),
304
- singleton(),
305
- injectable(),
306
- __param(1, inject(InternalContainerParameterEnum.KernelInstantiationId)),
307
- __metadata("design:paramtypes", [ObservabilityConfiguration, String])
308
- ], ObservabilityRunManager);
309
- export { ObservabilityRunManager };
310
- //# sourceMappingURL=observability-run-manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"observability-run-manager.js","sourceRoot":"","sources":["../../../../src/store/observability-run-manager.ts"],"names":[],"mappings":"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"}
@@ -1,138 +0,0 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- var __metadata = (this && this.__metadata) || function (k, v) {
8
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
- };
10
- import * as fs from "fs";
11
- import { injectable } from "tsyringe";
12
- import { moduleScoped } from "@pristine-ts/common";
13
- import { ObservabilityModuleKeyname } from "../observability.module.keyname";
14
- import { ObservabilityConfiguration } from "../observability-configuration";
15
- import { ObservabilityPaths } from "./observability-paths";
16
- /**
17
- * Read-only access to the observability store. Used by the `logs`, `trace` and `requests`
18
- * CLI commands. Pure filesystem reads — no kernel, no running app required; it reads what
19
- * a separate `pristine start` process wrote.
20
- */
21
- let ObservabilityStoreReader = class ObservabilityStoreReader {
22
- constructor(configuration) {
23
- this.paths = new ObservabilityPaths(configuration.directory);
24
- }
25
- /**
26
- * The run id the `latest.json` pointer references, or undefined when the store is empty.
27
- */
28
- latestRunId() {
29
- try {
30
- const pointer = JSON.parse(fs.readFileSync(this.paths.latestPointerFile(), "utf8"));
31
- return typeof (pointer === null || pointer === void 0 ? void 0 : pointer.runId) === "string" ? pointer.runId : undefined;
32
- }
33
- catch (_a) {
34
- return undefined;
35
- }
36
- }
37
- /**
38
- * Resolves an explicit run id, or falls back to the latest run.
39
- */
40
- resolveRunId(explicit) {
41
- return explicit !== null && explicit !== void 0 ? explicit : this.latestRunId();
42
- }
43
- /**
44
- * Every run's metadata, most-recent first.
45
- */
46
- listRuns() {
47
- try {
48
- return fs.readdirSync(this.paths.runsDirectory(), { withFileTypes: true })
49
- .filter(entry => entry.isDirectory())
50
- .map(entry => this.readRunMetadata(entry.name))
51
- .filter((metadata) => metadata !== undefined)
52
- .sort((a, b) => Date.parse(b.startedAt) - Date.parse(a.startedAt));
53
- }
54
- catch (_a) {
55
- return [];
56
- }
57
- }
58
- /**
59
- * Reads a run's `run.json`, or undefined when absent/corrupt.
60
- */
61
- readRunMetadata(runId) {
62
- try {
63
- return JSON.parse(fs.readFileSync(this.paths.runMetadataFile(runId), "utf8"));
64
- }
65
- catch (_a) {
66
- return undefined;
67
- }
68
- }
69
- /**
70
- * The request summaries for a run, most-recent first, optionally capped to `limit`.
71
- */
72
- readRequests(runId, limit) {
73
- const summaries = this.readJsonl(this.paths.requestsFile(runId))
74
- .sort((a, b) => b.startedAt - a.startedAt);
75
- return limit === undefined ? summaries : summaries.slice(0, limit);
76
- }
77
- /**
78
- * The raw log entries for a run, in write order. Each is a parsed `logs.jsonl` line.
79
- */
80
- readLogs(runId) {
81
- return this.readJsonl(this.paths.logsFile(runId));
82
- }
83
- /**
84
- * The absolute `logs.jsonl` path for a run — handed to `LogTailer` for `--follow`.
85
- */
86
- logsFilePath(runId) {
87
- return this.paths.logsFile(runId);
88
- }
89
- /**
90
- * Finds and reads a trace by id. Searches the preferred run first (when given), then
91
- * every other run most-recent first. Returns the parsed trace and the run it was found
92
- * in, or undefined when no run contains it.
93
- */
94
- findTrace(traceId, preferredRunId) {
95
- const runIds = this.listRuns().map(run => run.runId);
96
- const ordered = preferredRunId === undefined
97
- ? runIds
98
- : [preferredRunId, ...runIds.filter(id => id !== preferredRunId)];
99
- for (const runId of ordered) {
100
- try {
101
- const trace = JSON.parse(fs.readFileSync(this.paths.traceFile(runId, traceId), "utf8"));
102
- return { trace, runId };
103
- }
104
- catch (_a) {
105
- // Not in this run — keep looking.
106
- }
107
- }
108
- return undefined;
109
- }
110
- /**
111
- * The most recently seen trace ids across the latest run — used by the REPL completer.
112
- */
113
- recentTraceIds(limit) {
114
- const runId = this.latestRunId();
115
- if (runId === undefined) {
116
- return [];
117
- }
118
- return this.readRequests(runId, limit).map(summary => summary.traceId);
119
- }
120
- readJsonl(filePath) {
121
- try {
122
- return fs.readFileSync(filePath, "utf8")
123
- .split("\n")
124
- .filter(line => line.trim().length > 0)
125
- .map(line => JSON.parse(line));
126
- }
127
- catch (_a) {
128
- return [];
129
- }
130
- }
131
- };
132
- ObservabilityStoreReader = __decorate([
133
- moduleScoped(ObservabilityModuleKeyname),
134
- injectable(),
135
- __metadata("design:paramtypes", [ObservabilityConfiguration])
136
- ], ObservabilityStoreReader);
137
- export { ObservabilityStoreReader };
138
- //# sourceMappingURL=observability-store-reader.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"observability-store-reader.js","sourceRoot":"","sources":["../../../../src/store/observability-store-reader.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=serialized-span.interface.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"serialized-span.interface.js","sourceRoot":"","sources":["../../../../../src/store/serializers/serialized-span.interface.ts"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=serialized-trace.interface.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"serialized-trace.interface.js","sourceRoot":"","sources":["../../../../../src/store/serializers/serialized-trace.interface.ts"],"names":[],"mappings":""}
@@ -1,22 +0,0 @@
1
- import { Span } from "@pristine-ts/common";
2
- /**
3
- * Rebuilds a `Span` (with its full child tree) from the stored plain object. Used by
4
- * `TraceDeserializer` for the trace's root span and recursively for every descendant —
5
- * so `traceRenderer.renderTree`/`renderFlat`, which call instance methods like
6
- * `getDuration()`, work unchanged on stored traces.
7
- */
8
- export class SpanDeserializer {
9
- static deserialize(serialized, trace) {
10
- var _a, _b;
11
- const span = new Span(serialized.keyname, serialized.id, (_a = serialized.context) !== null && _a !== void 0 ? _a : {});
12
- span.trace = trace;
13
- span.startDate = serialized.startDate;
14
- span.endDate = serialized.endDate;
15
- span.inProgress = serialized.endDate === undefined;
16
- for (const child of (_b = serialized.children) !== null && _b !== void 0 ? _b : []) {
17
- span.addChild(SpanDeserializer.deserialize(child, trace));
18
- }
19
- return span;
20
- }
21
- }
22
- //# sourceMappingURL=span-deserializer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"span-deserializer.js","sourceRoot":"","sources":["../../../../../src/store/serializers/span-deserializer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAQ,MAAM,qBAAqB,CAAC;AAGhD;;;;;GAKG;AACH,MAAM,OAAO,gBAAgB;IAC3B,MAAM,CAAC,WAAW,CAAC,UAA0B,EAAE,KAAY;;QACzD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,EAAE,MAAA,UAAU,CAAC,OAAO,mCAAI,EAAE,CAAC,CAAC;QACnF,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;QACtC,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;QAClC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,OAAO,KAAK,SAAS,CAAC;QAEnD,KAAK,MAAM,KAAK,IAAI,MAAA,UAAU,CAAC,QAAQ,mCAAI,EAAE,EAAE,CAAC;YAC9C,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;QAC5D,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
@@ -1,20 +0,0 @@
1
- import { Trace } from "@pristine-ts/common";
2
- import { SpanDeserializer } from "./span-deserializer";
3
- /**
4
- * Rehydrates a stored trace JSON (the shape written by `ObservabilityTracer`) back into
5
- * a `Trace` instance, with its full span tree rebuilt via `SpanDeserializer`.
6
- */
7
- export class TraceDeserializer {
8
- static deserialize(serialized) {
9
- var _a;
10
- const trace = new Trace(serialized.id, (_a = serialized.context) !== null && _a !== void 0 ? _a : {});
11
- trace.startDate = serialized.startDate;
12
- trace.endDate = serialized.endDate;
13
- trace.hasEnded = serialized.endDate !== undefined;
14
- if (serialized.rootSpan !== undefined) {
15
- trace.rootSpan = SpanDeserializer.deserialize(serialized.rootSpan, trace);
16
- }
17
- return trace;
18
- }
19
- }
20
- //# sourceMappingURL=trace-deserializer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"trace-deserializer.js","sourceRoot":"","sources":["../../../../../src/store/serializers/trace-deserializer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,qBAAqB,CAAC;AAE1C,OAAO,EAAC,gBAAgB,EAAC,MAAM,qBAAqB,CAAC;AAErD;;;GAGG;AACH,MAAM,OAAO,iBAAiB;IAC5B,MAAM,CAAC,WAAW,CAAC,UAA2B;;QAC5C,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,UAAU,CAAC,EAAE,EAAE,MAAA,UAAU,CAAC,OAAO,mCAAI,EAAE,CAAC,CAAC;QACjE,KAAK,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;QACvC,KAAK,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;QACnC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC,OAAO,KAAK,SAAS,CAAC;QAElD,IAAI,UAAU,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACtC,KAAK,CAAC,QAAQ,GAAG,gBAAgB,CAAC,WAAW,CAAC,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC5E,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
@@ -1,37 +0,0 @@
1
- import { Span, Trace } from "@pristine-ts/common";
2
- /**
3
- * Rehydrates a stored trace JSON (the shape written by `ObservabilityTracer`) back into
4
- * `Trace`/`Span` instances, so `traceRenderer.renderTree`/`renderFlat` — which call
5
- * instance methods like `getDuration()` — work unchanged on stored traces.
6
- *
7
- * Stateless; instantiate once and reuse, or use the static `deserialize`.
8
- */
9
- export class TraceDeserializer {
10
- /**
11
- * Rebuilds a `Trace` (with its full span tree) from the stored plain object.
12
- */
13
- static deserialize(serialized) {
14
- var _a;
15
- const trace = new Trace(serialized.id, (_a = serialized.context) !== null && _a !== void 0 ? _a : {});
16
- trace.startDate = serialized.startDate;
17
- trace.endDate = serialized.endDate;
18
- trace.hasEnded = serialized.endDate !== undefined;
19
- if (serialized.rootSpan !== undefined) {
20
- trace.rootSpan = TraceDeserializer.deserializeSpan(serialized.rootSpan, trace);
21
- }
22
- return trace;
23
- }
24
- static deserializeSpan(serialized, trace) {
25
- var _a, _b;
26
- const span = new Span(serialized.keyname, serialized.id, (_a = serialized.context) !== null && _a !== void 0 ? _a : {});
27
- span.trace = trace;
28
- span.startDate = serialized.startDate;
29
- span.endDate = serialized.endDate;
30
- span.inProgress = serialized.endDate === undefined;
31
- for (const child of (_b = serialized.children) !== null && _b !== void 0 ? _b : []) {
32
- span.addChild(TraceDeserializer.deserializeSpan(child, trace));
33
- }
34
- return span;
35
- }
36
- }
37
- //# sourceMappingURL=trace-deserializer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"trace-deserializer.js","sourceRoot":"","sources":["../../../../src/store/trace-deserializer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAE,KAAK,EAAC,MAAM,qBAAqB,CAAC;AAyBhD;;;;;;GAMG;AACH,MAAM,OAAO,iBAAiB;IAC5B;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,UAA2B;;QAC5C,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,UAAU,CAAC,EAAE,EAAE,MAAA,UAAU,CAAC,OAAO,mCAAI,EAAE,CAAC,CAAC;QACjE,KAAK,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;QACvC,KAAK,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;QACnC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC,OAAO,KAAK,SAAS,CAAC;QAElD,IAAI,UAAU,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACtC,KAAK,CAAC,QAAQ,GAAG,iBAAiB,CAAC,eAAe,CAAC,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACjF,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,MAAM,CAAC,eAAe,CAAC,UAA0B,EAAE,KAAY;;QACrE,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,EAAE,MAAA,UAAU,CAAC,OAAO,mCAAI,EAAE,CAAC,CAAC;QACnF,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;QACtC,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;QAClC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,OAAO,KAAK,SAAS,CAAC;QAEnD,KAAK,MAAM,KAAK,IAAI,MAAA,UAAU,CAAC,QAAQ,mCAAI,EAAE,EAAE,CAAC;YAC9C,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;QACjE,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
@@ -1,28 +0,0 @@
1
- /**
2
- * Metadata for one observability run — persisted as `run.json` at the root of a run
3
- * directory. A "run" is one `pristine start` lifetime, keyed by the kernel's
4
- * instantiation id.
5
- */
6
- export declare class RunMetadata {
7
- /**
8
- * The run id — equal to the kernel instantiation id of the process that produced it.
9
- */
10
- runId: string;
11
- /**
12
- * ISO-8601 timestamp at which the run began.
13
- */
14
- startedAt: string;
15
- /**
16
- * ISO-8601 timestamp at which the run ended. Undefined while the run is still active.
17
- */
18
- endedAt?: string;
19
- /**
20
- * The process id that produced the run.
21
- */
22
- pid: number;
23
- /**
24
- * The CLI command that began the run (e.g. `start`).
25
- */
26
- command: string;
27
- constructor(runId: string, startedAt: string, pid: number, command: string);
28
- }
@@ -1,32 +0,0 @@
1
- /**
2
- * Resolved settings for the observability store. Populated through the framework
3
- * configuration system (`@injectConfig`) — the keys are declared by
4
- * `ObservabilityModule.configurationDefinitions`, each with an `EnvironmentVariableResolver`
5
- * so they can also be overridden by env var or `pristine.config.ts`.
6
- *
7
- * The writers and the query commands all depend on this single typed object rather than
8
- * injecting individual config keys, so there is exactly one place that knows the keys.
9
- */
10
- export declare class ObservabilityConfiguration {
11
- /** Master switch for the observability writers. */
12
- readonly enabled: boolean;
13
- /** Root directory of the store, resolved relative to `process.cwd()` when not absolute. */
14
- readonly directory: string;
15
- /** How many of the most recent runs to keep; older runs are pruned when a new run begins. */
16
- readonly retainedRuns: number;
17
- /** When true, the store begins a run on the first log/trace instead of waiting for `beginRun()`. */
18
- readonly autoBegin: boolean;
19
- /** Per-run disk budget in bytes; the store drops oldest data past it. `0` disables the cap. */
20
- readonly maxRunSizeBytes: number;
21
- constructor(
22
- /** Master switch for the observability writers. */
23
- enabled: boolean,
24
- /** Root directory of the store, resolved relative to `process.cwd()` when not absolute. */
25
- directory: string,
26
- /** How many of the most recent runs to keep; older runs are pruned when a new run begins. */
27
- retainedRuns: number,
28
- /** When true, the store begins a run on the first log/trace instead of waiting for `beginRun()`. */
29
- autoBegin: boolean,
30
- /** Per-run disk budget in bytes; the store drops oldest data past it. `0` disables the cap. */
31
- maxRunSizeBytes: number);
32
- }