stitchkit 0.101.3 → 0.103.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/CHANGELOG.md +64 -0
- package/dist/application/diagnostic-journal-contract.d.ts +46 -7
- package/dist/application/diagnostic-journal-contract.d.ts.map +1 -1
- package/dist/application/diagnostic-journal-frame.d.ts +9 -0
- package/dist/application/diagnostic-journal-frame.d.ts.map +1 -0
- package/dist/application/diagnostic-journal-manager.d.ts.map +1 -1
- package/dist/application/diagnostic-journal-read-contract.d.ts +110 -0
- package/dist/application/diagnostic-journal-read-contract.d.ts.map +1 -0
- package/dist/application/diagnostic-journal-reader.d.ts +13 -0
- package/dist/application/diagnostic-journal-reader.d.ts.map +1 -0
- package/dist/application/diagnostic-journal-recovery.d.ts +4 -0
- package/dist/application/diagnostic-journal-recovery.d.ts.map +1 -0
- package/dist/application/diagnostic-journal-storage.d.ts +2 -0
- package/dist/application/diagnostic-journal-storage.d.ts.map +1 -1
- package/dist/entrypoints/application/diagnostic-journal.d.ts +1 -0
- package/dist/entrypoints/application/diagnostic-journal.d.ts.map +1 -1
- package/dist/entrypoints/application/diagnostic-journal.js +213 -19
- package/dist/entrypoints/application.d.ts +1 -0
- package/dist/entrypoints/application.d.ts.map +1 -1
- package/dist/entrypoints/application.js +10 -2
- package/dist/entrypoints/tools/contract.js +1 -1
- package/dist/entrypoints/tools.js +4 -3
- package/dist/index-z94wht4y.js +156 -0
- package/dist/{index-5107q189.js → index-zax7resm.js} +13 -1
- package/dist/tools/transfer/view-file-contract.d.ts.map +1 -1
- package/dist/tools/transfer/view-file.d.ts.map +1 -1
- package/llms/application-diagnostic-journal.txt +2 -0
- package/llms/application.2.txt +157 -267
- package/llms/application.3.txt +278 -0
- package/llms/application.txt +43 -158
- package/llms/stitchkit.txt +4 -4
- package/llms/tools.2.txt +9 -0
- package/llms/tools.3.txt +1 -1
- package/llms/{upgrading-0.61.0-0.73.0.txt → upgrading-0.61.0-0.74.0.txt} +64 -3
- package/llms/{upgrading-0.74.0-0.101.0.txt → upgrading-0.75.0-0.103.0.txt} +56 -64
- package/llms/upgrading.txt +2 -2
- package/llms-full.txt +115 -9
- package/llms.txt +6 -6
- package/package.json +1 -1
- package/dist/index-h124epcf.js +0 -103
package/CHANGELOG.md
CHANGED
|
@@ -15,6 +15,70 @@ additive**; the first breaking change landed in 0.10.0. Grep the file for
|
|
|
15
15
|
|
|
16
16
|
## [Unreleased]
|
|
17
17
|
|
|
18
|
+
## [0.103.0] — 2026-09-30
|
|
19
|
+
|
|
20
|
+
### ⚠️ Breaking changes
|
|
21
|
+
|
|
22
|
+
- `stitchkit/application/diagnostic-journal` — **torn startup with `maxFiles: 1`
|
|
23
|
+
now throws `DiagnosticJournalRecoveryError` before deleting any evidence**.
|
|
24
|
+
Previously startup discarded the active file and continued. To preserve it,
|
|
25
|
+
`limits: { ...limits, maxFiles: 1 }` → `limits: { ...limits, maxFiles: 2 }`.
|
|
26
|
+
The acquired lock is released on refusal. → ADR 0219.
|
|
27
|
+
- `stitchkit/application/diagnostic-journal` — **startup inspects retained files
|
|
28
|
+
and throws on inspection I/O failures**, instead of accepting unreadable
|
|
29
|
+
archives unchecked. Unreadable archive + successful startup → explicit
|
|
30
|
+
startup failure; restore the writer's read access before opening the journal.
|
|
31
|
+
Corrupt rows themselves are reported through recovery status. → ADR 0219.
|
|
32
|
+
|
|
33
|
+
**Who must act:** operators using single-file retention with a potentially torn
|
|
34
|
+
active file, or retaining archives the writer cannot read. Configure at least two
|
|
35
|
+
slots for tail recovery and ensure read access to retained generations.
|
|
36
|
+
|
|
37
|
+
### Added
|
|
38
|
+
|
|
39
|
+
- `stitchkit/application/diagnostic-journal` — `readDiagnosticJournal` streams
|
|
40
|
+
finite file snapshots through an owner `eventSchema`, retaining at most
|
|
41
|
+
`maxLineBytes` of a row plus a fixed read chunk. It yields valid frames and
|
|
42
|
+
explicit anomalies with file, byte offset, line, reason and skipped-byte count;
|
|
43
|
+
filesystem errors throw separately. Complete frames without a final LF remain
|
|
44
|
+
readable with a tail warning. Symlinks and non-regular paths are refused.
|
|
45
|
+
- `stitchkit/application` — schema-backed anomaly/read-result/recovery contracts
|
|
46
|
+
and `DiagnosticJournalRecoveryError`. Reviewed surface budgets increase by
|
|
47
|
+
seven pure exports here and two reader exports in the filesystem leaf. → ADR 0219.
|
|
48
|
+
|
|
49
|
+
### Fixed
|
|
50
|
+
|
|
51
|
+
- Diagnostic journal startup inspects active and retained generations under the
|
|
52
|
+
exclusive lock. `getStatus().recovery` reports bounded startup observations of
|
|
53
|
+
damaged rows; another start reconstructs them from the preserved files. A torn
|
|
54
|
+
active file still rotates intact under the configured retention policy.
|
|
55
|
+
With `maxFiles: 1`, startup throws `DiagnosticJournalRecoveryError` before
|
|
56
|
+
deleting active or archived evidence and releases the lock. Configure at least
|
|
57
|
+
two files to retain the torn file during recovery.
|
|
58
|
+
- Diagnostic journal integer schemas use Zod's `.int()` without deprecated
|
|
59
|
+
`.safe()`; values outside the safe integer range remain rejected.
|
|
60
|
+
|
|
61
|
+
## [0.102.0] — 2026-09-30
|
|
62
|
+
|
|
63
|
+
### ⚠️ Breaking changes
|
|
64
|
+
|
|
65
|
+
- `stitchkit/tools`, `stitchkit/tools/contract`, `stitchkit/cli` — **`view_file`
|
|
66
|
+
rejects JSON arrays encoded inside a `paths` string during input validation**,
|
|
67
|
+
before file or network access, with a hint to pass an array or one path.
|
|
68
|
+
Previously the text was accepted as one filename and failed with a misleading
|
|
69
|
+
media-extension refusal. `paths: '["image.png"]'` → `paths: ['image.png']`.
|
|
70
|
+
An encoded array inside an array element is refused too. Managed surfaces
|
|
71
|
+
return `VALIDATION_ERROR`; raw MCP reports an input-validation error. → ADR 0218.
|
|
72
|
+
|
|
73
|
+
**Who must act:** callers that serialize the `paths` array into a string, or
|
|
74
|
+
branch on the former media-extension error for that input. Pass a real array
|
|
75
|
+
(or a single path string) and handle the validation error.
|
|
76
|
+
|
|
77
|
+
### Fixed
|
|
78
|
+
|
|
79
|
+
- `stitchkit/tools` — a local non-media extension refusal identifies the
|
|
80
|
+
caller's path and the extension it saw, without reading the file.
|
|
81
|
+
|
|
18
82
|
## [0.101.3] — 2026-09-29
|
|
19
83
|
|
|
20
84
|
### Fixed
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import type { ExclusiveLockDiagnosis, ExclusiveLockOwner } from '../internal/exclusive-lock.js';
|
|
3
|
+
export { type DiagnosticJournalFrame, DiagnosticJournalFrameSchema, } from './diagnostic-journal-frame.js';
|
|
3
4
|
export declare const DiagnosticJournalLimitsSchema: z.ZodReadonly<z.ZodObject<{
|
|
4
5
|
maxEventBytes: z.ZodNumber;
|
|
5
6
|
maxPendingItems: z.ZodNumber;
|
|
@@ -78,6 +79,51 @@ export declare const DiagnosticJournalStatusSchema: z.ZodReadonly<z.ZodObject<{
|
|
|
78
79
|
partialTails: z.ZodNumber;
|
|
79
80
|
currentFileBytes: z.ZodNumber;
|
|
80
81
|
retainedFiles: z.ZodNumber;
|
|
82
|
+
recovery: z.ZodOptional<z.ZodReadonly<z.ZodObject<{
|
|
83
|
+
filesChecked: z.ZodNumber;
|
|
84
|
+
anomalies: z.ZodNumber;
|
|
85
|
+
skippedBytes: z.ZodNumber;
|
|
86
|
+
firstAnomaly: z.ZodOptional<z.ZodReadonly<z.ZodObject<{
|
|
87
|
+
file: z.ZodString;
|
|
88
|
+
offset: z.ZodNumber;
|
|
89
|
+
line: z.ZodNumber;
|
|
90
|
+
reason: z.ZodEnum<{
|
|
91
|
+
"invalid-event": "invalid-event";
|
|
92
|
+
"invalid-frame": "invalid-frame";
|
|
93
|
+
"invalid-json": "invalid-json";
|
|
94
|
+
"invalid-utf8": "invalid-utf8";
|
|
95
|
+
"nul-byte": "nul-byte";
|
|
96
|
+
"oversized-line": "oversized-line";
|
|
97
|
+
"unterminated-line": "unterminated-line";
|
|
98
|
+
}>;
|
|
99
|
+
position: z.ZodEnum<{
|
|
100
|
+
interior: "interior";
|
|
101
|
+
tail: "tail";
|
|
102
|
+
}>;
|
|
103
|
+
terminated: z.ZodBoolean;
|
|
104
|
+
skippedBytes: z.ZodNumber;
|
|
105
|
+
}, z.core.$strict>>>;
|
|
106
|
+
lastAnomaly: z.ZodOptional<z.ZodReadonly<z.ZodObject<{
|
|
107
|
+
file: z.ZodString;
|
|
108
|
+
offset: z.ZodNumber;
|
|
109
|
+
line: z.ZodNumber;
|
|
110
|
+
reason: z.ZodEnum<{
|
|
111
|
+
"invalid-event": "invalid-event";
|
|
112
|
+
"invalid-frame": "invalid-frame";
|
|
113
|
+
"invalid-json": "invalid-json";
|
|
114
|
+
"invalid-utf8": "invalid-utf8";
|
|
115
|
+
"nul-byte": "nul-byte";
|
|
116
|
+
"oversized-line": "oversized-line";
|
|
117
|
+
"unterminated-line": "unterminated-line";
|
|
118
|
+
}>;
|
|
119
|
+
position: z.ZodEnum<{
|
|
120
|
+
interior: "interior";
|
|
121
|
+
tail: "tail";
|
|
122
|
+
}>;
|
|
123
|
+
terminated: z.ZodBoolean;
|
|
124
|
+
skippedBytes: z.ZodNumber;
|
|
125
|
+
}, z.core.$strict>>>;
|
|
126
|
+
}, z.core.$strict>>>;
|
|
81
127
|
lastAcceptedSequence: z.ZodOptional<z.ZodNumber>;
|
|
82
128
|
lastWrittenSequence: z.ZodOptional<z.ZodNumber>;
|
|
83
129
|
lastSettledSequence: z.ZodOptional<z.ZodNumber>;
|
|
@@ -138,13 +184,6 @@ export declare const DiagnosticJournalCloseResultSchema: z.ZodReadonly<z.ZodObje
|
|
|
138
184
|
pendingItems: z.ZodNumber;
|
|
139
185
|
}, z.core.$strict>>;
|
|
140
186
|
export type DiagnosticJournalCloseResult = z.infer<typeof DiagnosticJournalCloseResultSchema>;
|
|
141
|
-
export declare const DiagnosticJournalFrameSchema: z.ZodReadonly<z.ZodObject<{
|
|
142
|
-
schemaVersion: z.ZodLiteral<1>;
|
|
143
|
-
epoch: z.ZodUUID;
|
|
144
|
-
sequence: z.ZodNumber;
|
|
145
|
-
event: z.ZodJSONSchema;
|
|
146
|
-
}, z.core.$strict>>;
|
|
147
|
-
export type DiagnosticJournalFrame = z.infer<typeof DiagnosticJournalFrameSchema>;
|
|
148
187
|
export interface DiagnosticJournalWaitOptions {
|
|
149
188
|
readonly signal?: AbortSignal;
|
|
150
189
|
readonly timeoutMs?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnostic-journal-contract.d.ts","sourceRoot":"","sources":["../../src/application/diagnostic-journal-contract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"diagnostic-journal-contract.d.ts","sourceRoot":"","sources":["../../src/application/diagnostic-journal-contract.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const DiagnosticJournalFrameSchema: z.ZodReadonly<z.ZodObject<{
|
|
3
|
+
schemaVersion: z.ZodLiteral<1>;
|
|
4
|
+
epoch: z.ZodUUID;
|
|
5
|
+
sequence: z.ZodNumber;
|
|
6
|
+
event: z.ZodJSONSchema;
|
|
7
|
+
}, z.core.$strict>>;
|
|
8
|
+
export type DiagnosticJournalFrame = z.infer<typeof DiagnosticJournalFrameSchema>;
|
|
9
|
+
//# sourceMappingURL=diagnostic-journal-frame.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnostic-journal-frame.d.ts","sourceRoot":"","sources":["../../src/application/diagnostic-journal-frame.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,4BAA4B;;;;;mBAQ5B,CAAC;AACd,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnostic-journal-manager.d.ts","sourceRoot":"","sources":["../../src/application/diagnostic-journal-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,KAAK,iBAAiB,EAEtB,KAAK,wBAAwB,EAG7B,KAAK,uBAAuB,EAI5B,KAAK,uBAAuB,EAK7B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,KAAK,wBAAwB,EAE9B,MAAM,8BAA8B,CAAC;AAEtC,UAAU,8BAA8B,CAAC,MAAM,SAAS,CAAC,CAAC,OAAO;IAC/D,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,uBAAuB,CAAC;IACzC,QAAQ,CAAC,IAAI,EAAE,uBAAuB,CAAC,MAAM,CAAC,CAAC;IAC/C,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,wBAAwB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAClF;AAyDD,wBAAgB,8BAA8B,CAAC,MAAM,SAAS,CAAC,CAAC,OAAO,EACrE,MAAM,EAAE,8BAA8B,CAAC,MAAM,CAAC,EAC9C,OAAO,EAAE,wBAAwB,GAChC,iBAAiB,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"diagnostic-journal-manager.d.ts","sourceRoot":"","sources":["../../src/application/diagnostic-journal-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,KAAK,iBAAiB,EAEtB,KAAK,wBAAwB,EAG7B,KAAK,uBAAuB,EAI5B,KAAK,uBAAuB,EAK7B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,KAAK,wBAAwB,EAE9B,MAAM,8BAA8B,CAAC;AAEtC,UAAU,8BAA8B,CAAC,MAAM,SAAS,CAAC,CAAC,OAAO;IAC/D,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,uBAAuB,CAAC;IACzC,QAAQ,CAAC,IAAI,EAAE,uBAAuB,CAAC,MAAM,CAAC,CAAC;IAC/C,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,wBAAwB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAClF;AAyDD,wBAAgB,8BAA8B,CAAC,MAAM,SAAS,CAAC,CAAC,OAAO,EACrE,MAAM,EAAE,8BAA8B,CAAC,MAAM,CAAC,EAC9C,OAAO,EAAE,wBAAwB,GAChC,iBAAiB,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAkMpC"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const DiagnosticJournalAnomalySchema: z.ZodReadonly<z.ZodObject<{
|
|
3
|
+
file: z.ZodString;
|
|
4
|
+
offset: z.ZodNumber;
|
|
5
|
+
line: z.ZodNumber;
|
|
6
|
+
reason: z.ZodEnum<{
|
|
7
|
+
"invalid-event": "invalid-event";
|
|
8
|
+
"invalid-frame": "invalid-frame";
|
|
9
|
+
"invalid-json": "invalid-json";
|
|
10
|
+
"invalid-utf8": "invalid-utf8";
|
|
11
|
+
"nul-byte": "nul-byte";
|
|
12
|
+
"oversized-line": "oversized-line";
|
|
13
|
+
"unterminated-line": "unterminated-line";
|
|
14
|
+
}>;
|
|
15
|
+
position: z.ZodEnum<{
|
|
16
|
+
interior: "interior";
|
|
17
|
+
tail: "tail";
|
|
18
|
+
}>;
|
|
19
|
+
terminated: z.ZodBoolean;
|
|
20
|
+
skippedBytes: z.ZodNumber;
|
|
21
|
+
}, z.core.$strict>>;
|
|
22
|
+
export type DiagnosticJournalAnomaly = z.infer<typeof DiagnosticJournalAnomalySchema>;
|
|
23
|
+
export declare function createDiagnosticJournalReadResultSchema<SCHEMA extends z.ZodType>(eventSchema: SCHEMA): z.ZodDiscriminatedUnion<[z.ZodReadonly<z.ZodObject<{
|
|
24
|
+
file: z.ZodString;
|
|
25
|
+
offset: z.ZodNumber;
|
|
26
|
+
line: z.ZodNumber;
|
|
27
|
+
type: z.ZodLiteral<"frame">;
|
|
28
|
+
bytes: z.ZodNumber;
|
|
29
|
+
frame: z.ZodReadonly<z.ZodObject<{
|
|
30
|
+
schemaVersion: z.ZodLiteral<1>;
|
|
31
|
+
epoch: z.ZodUUID;
|
|
32
|
+
sequence: z.ZodNumber;
|
|
33
|
+
event: SCHEMA;
|
|
34
|
+
}, z.core.$strict>>;
|
|
35
|
+
}, z.core.$strict>>, z.ZodReadonly<z.ZodObject<{
|
|
36
|
+
type: z.ZodLiteral<"anomaly">;
|
|
37
|
+
anomaly: z.ZodReadonly<z.ZodObject<{
|
|
38
|
+
file: z.ZodString;
|
|
39
|
+
offset: z.ZodNumber;
|
|
40
|
+
line: z.ZodNumber;
|
|
41
|
+
reason: z.ZodEnum<{
|
|
42
|
+
"invalid-event": "invalid-event";
|
|
43
|
+
"invalid-frame": "invalid-frame";
|
|
44
|
+
"invalid-json": "invalid-json";
|
|
45
|
+
"invalid-utf8": "invalid-utf8";
|
|
46
|
+
"nul-byte": "nul-byte";
|
|
47
|
+
"oversized-line": "oversized-line";
|
|
48
|
+
"unterminated-line": "unterminated-line";
|
|
49
|
+
}>;
|
|
50
|
+
position: z.ZodEnum<{
|
|
51
|
+
interior: "interior";
|
|
52
|
+
tail: "tail";
|
|
53
|
+
}>;
|
|
54
|
+
terminated: z.ZodBoolean;
|
|
55
|
+
skippedBytes: z.ZodNumber;
|
|
56
|
+
}, z.core.$strict>>;
|
|
57
|
+
}, z.core.$strict>>], "type">;
|
|
58
|
+
export type DiagnosticJournalReadResult<SCHEMA extends z.ZodType> = z.output<ReturnType<typeof createDiagnosticJournalReadResultSchema<SCHEMA>>>;
|
|
59
|
+
export declare const DiagnosticJournalRecoveryStatusSchema: z.ZodReadonly<z.ZodObject<{
|
|
60
|
+
filesChecked: z.ZodNumber;
|
|
61
|
+
anomalies: z.ZodNumber;
|
|
62
|
+
skippedBytes: z.ZodNumber;
|
|
63
|
+
firstAnomaly: z.ZodOptional<z.ZodReadonly<z.ZodObject<{
|
|
64
|
+
file: z.ZodString;
|
|
65
|
+
offset: z.ZodNumber;
|
|
66
|
+
line: z.ZodNumber;
|
|
67
|
+
reason: z.ZodEnum<{
|
|
68
|
+
"invalid-event": "invalid-event";
|
|
69
|
+
"invalid-frame": "invalid-frame";
|
|
70
|
+
"invalid-json": "invalid-json";
|
|
71
|
+
"invalid-utf8": "invalid-utf8";
|
|
72
|
+
"nul-byte": "nul-byte";
|
|
73
|
+
"oversized-line": "oversized-line";
|
|
74
|
+
"unterminated-line": "unterminated-line";
|
|
75
|
+
}>;
|
|
76
|
+
position: z.ZodEnum<{
|
|
77
|
+
interior: "interior";
|
|
78
|
+
tail: "tail";
|
|
79
|
+
}>;
|
|
80
|
+
terminated: z.ZodBoolean;
|
|
81
|
+
skippedBytes: z.ZodNumber;
|
|
82
|
+
}, z.core.$strict>>>;
|
|
83
|
+
lastAnomaly: z.ZodOptional<z.ZodReadonly<z.ZodObject<{
|
|
84
|
+
file: z.ZodString;
|
|
85
|
+
offset: z.ZodNumber;
|
|
86
|
+
line: z.ZodNumber;
|
|
87
|
+
reason: z.ZodEnum<{
|
|
88
|
+
"invalid-event": "invalid-event";
|
|
89
|
+
"invalid-frame": "invalid-frame";
|
|
90
|
+
"invalid-json": "invalid-json";
|
|
91
|
+
"invalid-utf8": "invalid-utf8";
|
|
92
|
+
"nul-byte": "nul-byte";
|
|
93
|
+
"oversized-line": "oversized-line";
|
|
94
|
+
"unterminated-line": "unterminated-line";
|
|
95
|
+
}>;
|
|
96
|
+
position: z.ZodEnum<{
|
|
97
|
+
interior: "interior";
|
|
98
|
+
tail: "tail";
|
|
99
|
+
}>;
|
|
100
|
+
terminated: z.ZodBoolean;
|
|
101
|
+
skippedBytes: z.ZodNumber;
|
|
102
|
+
}, z.core.$strict>>>;
|
|
103
|
+
}, z.core.$strict>>;
|
|
104
|
+
export type DiagnosticJournalRecoveryStatus = z.infer<typeof DiagnosticJournalRecoveryStatusSchema>;
|
|
105
|
+
/** A single-file retention policy cannot preserve the torn file during startup rotation. */
|
|
106
|
+
export declare class DiagnosticJournalRecoveryError extends Error {
|
|
107
|
+
readonly recovery: DiagnosticJournalRecoveryStatus;
|
|
108
|
+
constructor(recovery: DiagnosticJournalRecoveryStatus);
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=diagnostic-journal-read-contract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnostic-journal-read-contract.d.ts","sourceRoot":"","sources":["../../src/application/diagnostic-journal-read-contract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAUxB,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;mBAgB9B,CAAC;AACd,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAC;AAEtF,wBAAgB,uCAAuC,CAAC,MAAM,SAAS,CAAC,CAAC,OAAO,EAC9E,WAAW,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8BAepB;AACD,MAAM,MAAM,2BAA2B,CAAC,MAAM,SAAS,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,MAAM,CAC1E,UAAU,CAAC,OAAO,uCAAuC,CAAC,MAAM,CAAC,CAAC,CACnE,CAAC;AAEF,eAAO,MAAM,qCAAqC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBASrC,CAAC;AACd,MAAM,MAAM,+BAA+B,GAAG,CAAC,CAAC,KAAK,CACnD,OAAO,qCAAqC,CAC7C,CAAC;AAEF,4FAA4F;AAC5F,qBAAa,8BAA+B,SAAQ,KAAK;aAC3B,QAAQ,EAAE,+BAA+B;IAArE,YAA4B,QAAQ,EAAE,+BAA+B,EAGpE;CACF"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { type DiagnosticJournalReadResult } from './diagnostic-journal-read-contract.js';
|
|
3
|
+
export interface DiagnosticJournalReaderConfig<SCHEMA extends z.ZodType> {
|
|
4
|
+
/** Explicit operator-owned files, read in this order; missing files are I/O errors. */
|
|
5
|
+
readonly paths: readonly string[];
|
|
6
|
+
readonly eventSchema: SCHEMA;
|
|
7
|
+
/** Maximum JSONL body bytes retained in memory, excluding its LF. */
|
|
8
|
+
readonly maxLineBytes: number;
|
|
9
|
+
readonly signal?: AbortSignal;
|
|
10
|
+
}
|
|
11
|
+
/** One finite file snapshot at a time. Corrupt rows are data; filesystem failures throw. */
|
|
12
|
+
export declare function readDiagnosticJournal<SCHEMA extends z.ZodType>(config: DiagnosticJournalReaderConfig<SCHEMA>): AsyncGenerator<DiagnosticJournalReadResult<SCHEMA>, void, unknown>;
|
|
13
|
+
//# sourceMappingURL=diagnostic-journal-reader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnostic-journal-reader.d.ts","sourceRoot":"","sources":["../../src/application/diagnostic-journal-reader.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAGL,KAAK,2BAA2B,EACjC,MAAM,oCAAoC,CAAC;AAE5C,MAAM,WAAW,6BAA6B,CAAC,MAAM,SAAS,CAAC,CAAC,OAAO;IACrE,uFAAuF;IACvF,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,qEAAqE;IACrE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC/B;AAoFD,4FAA4F;AAC5F,wBAAuB,qBAAqB,CAAC,MAAM,SAAS,CAAC,CAAC,OAAO,EACnE,MAAM,EAAE,6BAA6B,CAAC,MAAM,CAAC,GAC5C,cAAc,CAAC,2BAA2B,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAsFpE"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type DiagnosticJournalRecoveryStatus } from './diagnostic-journal-read-contract.js';
|
|
2
|
+
/** Disk evidence is the persistent source; only counters and two locations are retained. */
|
|
3
|
+
export declare function inspectDiagnosticJournalRecovery(paths: readonly string[], maxLineBytes: number): Promise<DiagnosticJournalRecoveryStatus>;
|
|
4
|
+
//# sourceMappingURL=diagnostic-journal-recovery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnostic-journal-recovery.d.ts","sourceRoot":"","sources":["../../src/application/diagnostic-journal-recovery.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,+BAA+B,EAErC,MAAM,oCAAoC,CAAC;AAG5C,4FAA4F;AAC5F,wBAAsB,gCAAgC,CACpD,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,+BAA+B,CAAC,CAuB1C"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import type { DiagnosticJournalFailurePhase, DiagnosticJournalLockPolicy } from './diagnostic-journal-contract.js';
|
|
2
|
+
import { type DiagnosticJournalRecoveryStatus } from './diagnostic-journal-read-contract.js';
|
|
2
3
|
export interface DiagnosticJournalStorageSnapshot {
|
|
3
4
|
readonly currentFileBytes: number;
|
|
4
5
|
readonly retainedFiles: number;
|
|
5
6
|
readonly rotations: number;
|
|
6
7
|
readonly partialTails: number;
|
|
8
|
+
readonly recovery?: DiagnosticJournalRecoveryStatus;
|
|
7
9
|
}
|
|
8
10
|
export interface DiagnosticJournalStorageAppendResult extends DiagnosticJournalStorageSnapshot {
|
|
9
11
|
readonly rotated: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnostic-journal-storage.d.ts","sourceRoot":"","sources":["../../src/application/diagnostic-journal-storage.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,6BAA6B,EAC7B,2BAA2B,EAC5B,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"diagnostic-journal-storage.d.ts","sourceRoot":"","sources":["../../src/application/diagnostic-journal-storage.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,6BAA6B,EAC7B,2BAA2B,EAC5B,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAEL,KAAK,+BAA+B,EACrC,MAAM,oCAAoC,CAAC;AAG5C,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,+BAA+B,CAAC;CACrD;AAED,MAAM,WAAW,oCACf,SAAQ,gCAAgC;IACxC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,wBAAwB;IACvC,kFAAkF;IAClF,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,oCAAoC,CAAC,CAAC;IACzE,QAAQ,IAAI,gCAAgC,CAAC;IAC7C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,qBAAa,6BAA8B,SAAQ,KAAK;aAEpC,KAAK,EAAE,6BAA6B;IADtD,YACkB,KAAK,EAAE,6BAA6B,EACpD,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,YAAY,EAIvB;CACF;AAED,UAAU,qBAAqB;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,2BAA2B,CAAC;IAC3C,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;CACnC;AA4CD,oFAAoF;AACpF,wBAAsB,sCAAsC,CAC1D,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,wBAAwB,CAAC,CA8KnC"}
|
|
@@ -18,4 +18,5 @@
|
|
|
18
18
|
* → ADR 0156.
|
|
19
19
|
*/
|
|
20
20
|
export { createDiagnosticJournal } from '../../application/diagnostic-journal.js';
|
|
21
|
+
export { type DiagnosticJournalReaderConfig, readDiagnosticJournal, } from '../../application/diagnostic-journal-reader.js';
|
|
21
22
|
//# sourceMappingURL=diagnostic-journal.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnostic-journal.d.ts","sourceRoot":"","sources":["../../../src/entrypoints/application/diagnostic-journal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC"}
|
|
1
|
+
{"version":3,"file":"diagnostic-journal.d.ts","sourceRoot":"","sources":["../../../src/entrypoints/application/diagnostic-journal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,OAAO,EACL,KAAK,6BAA6B,EAClC,qBAAqB,GACtB,MAAM,6CAA6C,CAAC"}
|