@mmnto/totem 1.114.0 → 1.115.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/dist/errors.d.ts +5 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js.map +1 -1
- package/dist/fs-atomic.d.ts +63 -0
- package/dist/fs-atomic.d.ts.map +1 -0
- package/dist/fs-atomic.js +114 -0
- package/dist/fs-atomic.js.map +1 -0
- package/dist/fs-atomic.test.d.ts +2 -0
- package/dist/fs-atomic.test.d.ts.map +1 -0
- package/dist/fs-atomic.test.js +162 -0
- package/dist/fs-atomic.test.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/ingest/pipeline.d.ts.map +1 -1
- package/dist/ingest/pipeline.js +5 -5
- package/dist/ingest/pipeline.js.map +1 -1
- package/dist/orchestration-resolver.d.ts +19 -0
- package/dist/orchestration-resolver.d.ts.map +1 -1
- package/dist/orchestration-resolver.js +5 -1
- package/dist/orchestration-resolver.js.map +1 -1
- package/dist/seat-lifecycle.d.ts +118 -0
- package/dist/seat-lifecycle.d.ts.map +1 -0
- package/dist/seat-lifecycle.js +197 -0
- package/dist/seat-lifecycle.js.map +1 -0
- package/dist/seat-lifecycle.test.d.ts +11 -0
- package/dist/seat-lifecycle.test.d.ts.map +1 -0
- package/dist/seat-lifecycle.test.js +210 -0
- package/dist/seat-lifecycle.test.js.map +1 -0
- package/dist/selection-manifest.d.ts +416 -0
- package/dist/selection-manifest.d.ts.map +1 -0
- package/dist/selection-manifest.js +444 -0
- package/dist/selection-manifest.js.map +1 -0
- package/dist/selection-manifest.test.d.ts +26 -0
- package/dist/selection-manifest.test.d.ts.map +1 -0
- package/dist/selection-manifest.test.js +331 -0
- package/dist/selection-manifest.test.js.map +1 -0
- package/dist/spine/ledgers.d.ts +12 -12
- package/dist/verification-outcomes.d.ts.map +1 -1
- package/dist/verification-outcomes.js +6 -12
- package/dist/verification-outcomes.js.map +1 -1
- package/dist/worktree-registry.d.ts.map +1 -1
- package/dist/worktree-registry.js +4 -4
- package/dist/worktree-registry.js.map +1 -1
- package/package.json +15 -11
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Writer + schema tests for the selection-manifest instrument
|
|
3
|
+
* (mmnto-ai/totem#2468 — the Prop 308 / strategy#467 M1 emitter substrate).
|
|
4
|
+
*
|
|
5
|
+
* The invariants under test come verbatim from the design doc
|
|
6
|
+
* (.totem/specs/2468-selection-manifests.md):
|
|
7
|
+
*
|
|
8
|
+
* - the schema is strict at BOTH levels — the structural refute-condition
|
|
9
|
+
* guard (Prop 308 F1: no shared score field can appear silently);
|
|
10
|
+
* - a fingerprint covers exactly the considered bytes: stable on identical
|
|
11
|
+
* content, changed on changed content, ABSENT (with a named warning) on
|
|
12
|
+
* hash failure — never fabricated;
|
|
13
|
+
* - attribution is stamped absence: no env/seat/session → fields absent,
|
|
14
|
+
* never guessed;
|
|
15
|
+
* - emission is a pure sensor: a failed append leaves the caller unbroken
|
|
16
|
+
* and the failure named on the accounting channel; a schema-invalid row
|
|
17
|
+
* THROWS from the writer (emitter programming error) and is converted to
|
|
18
|
+
* a warning by the sense wrapper;
|
|
19
|
+
* - a `.totem`-less cwd is a silent normal-state skip that materialises no
|
|
20
|
+
* directory.
|
|
21
|
+
*
|
|
22
|
+
* The EACCES induced-failure uses vi.spyOn on `node:fs` (accounting-branch
|
|
23
|
+
* coverage, same scoping rationale as qbd/record.test.ts documents).
|
|
24
|
+
*/
|
|
25
|
+
import * as os from 'node:os';
|
|
26
|
+
import * as path from 'node:path';
|
|
27
|
+
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
|
|
28
|
+
// Mock node:fs so spyOn works in ESM — same pattern as qbd/record.test.ts.
|
|
29
|
+
vi.mock('node:fs', async () => {
|
|
30
|
+
const actual = await vi.importActual('node:fs');
|
|
31
|
+
return { ...actual, default: actual };
|
|
32
|
+
});
|
|
33
|
+
import * as fs from 'node:fs';
|
|
34
|
+
import { TotemError } from './errors.js';
|
|
35
|
+
import { appendSelectionManifest, buildMeasuredCandidate, buildSelectionManifestRow, fingerprintContent, measureCandidateCost, readSelectionManifests, SELECTION_COST_BASIS, SELECTION_MANIFESTS_FILE, SelectionCandidateSchema, SelectionManifestRowSchema, senseSelectionManifest, } from './selection-manifest.js';
|
|
36
|
+
import { cleanTmpDir } from './test-utils.js';
|
|
37
|
+
const T0 = Date.parse('2026-08-10T03:00:00.000Z');
|
|
38
|
+
const SESSION_A = '550e8400-e29b-41d4-a716-446655440000';
|
|
39
|
+
let tmpDir;
|
|
40
|
+
let totemDir;
|
|
41
|
+
function baseCandidate(over = {}) {
|
|
42
|
+
return {
|
|
43
|
+
id: 'docs/example.md',
|
|
44
|
+
disposition: 'selected',
|
|
45
|
+
reason: 'test-policy: selected',
|
|
46
|
+
...over,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
function baseInput(over = {}) {
|
|
50
|
+
return {
|
|
51
|
+
totemDir,
|
|
52
|
+
emitter: 'search_knowledge',
|
|
53
|
+
context: { query: 'q' },
|
|
54
|
+
universe: 'test-pool',
|
|
55
|
+
candidates: [baseCandidate()],
|
|
56
|
+
nowMs: T0,
|
|
57
|
+
env: {},
|
|
58
|
+
...over,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
function manifestPath() {
|
|
62
|
+
return path.join(totemDir, 'ledger', SELECTION_MANIFESTS_FILE);
|
|
63
|
+
}
|
|
64
|
+
beforeEach(() => {
|
|
65
|
+
tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'sel-manifest-'));
|
|
66
|
+
totemDir = path.join(tmpDir, '.totem');
|
|
67
|
+
fs.mkdirSync(totemDir, { recursive: true });
|
|
68
|
+
});
|
|
69
|
+
afterEach(() => {
|
|
70
|
+
vi.restoreAllMocks();
|
|
71
|
+
cleanTmpDir(tmpDir);
|
|
72
|
+
});
|
|
73
|
+
// ─── Measurement helpers ────────────────────────────────
|
|
74
|
+
describe('fingerprintContent / measureCandidateCost', () => {
|
|
75
|
+
it('is stable across identical content and changes when content changes', () => {
|
|
76
|
+
expect(fingerprintContent('same bytes')).toBe(fingerprintContent('same bytes'));
|
|
77
|
+
expect(fingerprintContent('same bytes')).not.toBe(fingerprintContent('same bytes!'));
|
|
78
|
+
expect(fingerprintContent('same bytes')).toMatch(/^[0-9a-f]{16}$/);
|
|
79
|
+
});
|
|
80
|
+
it('string and Buffer forms of the same bytes fingerprint identically', () => {
|
|
81
|
+
const s = 'café content';
|
|
82
|
+
expect(fingerprintContent(s)).toBe(fingerprintContent(Buffer.from(s, 'utf-8')));
|
|
83
|
+
});
|
|
84
|
+
it('measures UTF-8 bytes (not chars) and declares tokens as ceil(bytes/4)', () => {
|
|
85
|
+
const s = 'éé'; // 2 chars, 4 UTF-8 bytes
|
|
86
|
+
expect(measureCandidateCost(s)).toEqual({ bytes: 4, approxTokens: 1 });
|
|
87
|
+
expect(measureCandidateCost('12345')).toEqual({ bytes: 5, approxTokens: 2 });
|
|
88
|
+
expect(measureCandidateCost('')).toEqual({ bytes: 0, approxTokens: 0 });
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
describe('buildMeasuredCandidate', () => {
|
|
92
|
+
it('measures and fingerprints content the policy actually read', () => {
|
|
93
|
+
const { candidate, warning } = buildMeasuredCandidate({
|
|
94
|
+
id: 'a.md',
|
|
95
|
+
content: 'hello',
|
|
96
|
+
disposition: 'selected',
|
|
97
|
+
reason: 'r',
|
|
98
|
+
});
|
|
99
|
+
expect(warning).toBeUndefined();
|
|
100
|
+
expect(candidate).toMatchObject({
|
|
101
|
+
id: 'a.md',
|
|
102
|
+
bytes: 5,
|
|
103
|
+
approxTokens: 2,
|
|
104
|
+
fingerprint: fingerprintContent('hello'),
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
it('is TOTAL over bad content: non-string/non-Buffer degrades to an id-only row + warning, never a throw or a NaN (leg round 1, H-7)', () => {
|
|
108
|
+
for (const bad of [undefined, null, 42, {}]) {
|
|
109
|
+
const { candidate, warning } = buildMeasuredCandidate({
|
|
110
|
+
id: 'bad.md',
|
|
111
|
+
content: bad,
|
|
112
|
+
disposition: 'selected',
|
|
113
|
+
reason: 'r',
|
|
114
|
+
});
|
|
115
|
+
expect(warning).toContain('bad.md');
|
|
116
|
+
expect(candidate.bytes).toBeUndefined();
|
|
117
|
+
expect(candidate.approxTokens).toBeUndefined();
|
|
118
|
+
expect(candidate.fingerprint).toBeUndefined();
|
|
119
|
+
// The degraded row is still schema-valid inside a manifest — the whole
|
|
120
|
+
// point: one malformed hit must not cost the row (H-7's failure shape).
|
|
121
|
+
expect(SelectionCandidateSchema.safeParse(candidate).success).toBe(true);
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
});
|
|
125
|
+
// ─── Schema strictness (the refute-condition guard) ─────
|
|
126
|
+
describe('schema strictness', () => {
|
|
127
|
+
it('rejects an unknown top-level field (e.g. a shared score)', () => {
|
|
128
|
+
const row = buildSelectionManifestRow(baseInput());
|
|
129
|
+
const poisoned = { ...row, sharedRelevanceScore: 0.9 };
|
|
130
|
+
expect(SelectionManifestRowSchema.safeParse(poisoned).success).toBe(false);
|
|
131
|
+
});
|
|
132
|
+
it('rejects an unknown per-candidate field', () => {
|
|
133
|
+
const row = buildSelectionManifestRow(baseInput());
|
|
134
|
+
const poisoned = {
|
|
135
|
+
...row,
|
|
136
|
+
candidates: [{ ...row.candidates[0], commonWeight: 1 }],
|
|
137
|
+
};
|
|
138
|
+
expect(SelectionManifestRowSchema.safeParse(poisoned).success).toBe(false);
|
|
139
|
+
});
|
|
140
|
+
it('rejects a row whose costBasis does not name the ruled aggregation', () => {
|
|
141
|
+
const row = buildSelectionManifestRow(baseInput());
|
|
142
|
+
const poisoned = { ...row, costBasis: { bytes: 'utf8-length', approxTokens: 'measured' } };
|
|
143
|
+
expect(SelectionManifestRowSchema.safeParse(poisoned).success).toBe(false);
|
|
144
|
+
});
|
|
145
|
+
it('rejects a shared score smuggled through CONTEXT — the key space is closed (PR #2625 CR round)', () => {
|
|
146
|
+
const row = buildSelectionManifestRow(baseInput());
|
|
147
|
+
const poisoned = { ...row, context: { ...row.context, sharedRelevanceScore: 0.9 } };
|
|
148
|
+
expect(SelectionManifestRowSchema.safeParse(poisoned).success).toBe(false);
|
|
149
|
+
const weighted = { ...row, context: { ...row.context, commonWeight: 1 } };
|
|
150
|
+
expect(SelectionManifestRowSchema.safeParse(weighted).success).toBe(false);
|
|
151
|
+
});
|
|
152
|
+
it('rejects partial measurement states — the trio travels together (PR #2625 CR round)', () => {
|
|
153
|
+
// bytes without fingerprint
|
|
154
|
+
expect(SelectionCandidateSchema.safeParse(baseCandidate({ bytes: 5, approxTokens: 2 })).success).toBe(false);
|
|
155
|
+
// fingerprint without cost
|
|
156
|
+
expect(SelectionCandidateSchema.safeParse(baseCandidate({ fingerprint: 'c'.repeat(16) })).success).toBe(false);
|
|
157
|
+
});
|
|
158
|
+
it('rejects deliveredBytes outside a truncated row, and a delivery larger than the measurement', () => {
|
|
159
|
+
expect(SelectionCandidateSchema.safeParse(baseCandidate({ disposition: 'excluded', deliveredBytes: 4 })).success).toBe(false);
|
|
160
|
+
expect(SelectionCandidateSchema.safeParse(baseCandidate({
|
|
161
|
+
disposition: 'truncated',
|
|
162
|
+
bytes: 10,
|
|
163
|
+
approxTokens: 3,
|
|
164
|
+
fingerprint: 'd'.repeat(16),
|
|
165
|
+
deliveredBytes: 11,
|
|
166
|
+
})).success).toBe(false);
|
|
167
|
+
});
|
|
168
|
+
it('accepts a fully-populated row round-trip', () => {
|
|
169
|
+
const row = buildSelectionManifestRow(baseInput({
|
|
170
|
+
finalTruncation: { cap: 10_000, totalChars: 12_345, applied: true },
|
|
171
|
+
candidates: [
|
|
172
|
+
baseCandidate({ bytes: 5, approxTokens: 2, fingerprint: 'a'.repeat(16) }),
|
|
173
|
+
baseCandidate({
|
|
174
|
+
id: 'b.md',
|
|
175
|
+
disposition: 'truncated',
|
|
176
|
+
reason: 'display-cap 250 lines',
|
|
177
|
+
bytes: 100,
|
|
178
|
+
approxTokens: 25,
|
|
179
|
+
fingerprint: 'b'.repeat(16),
|
|
180
|
+
deliveredBytes: 40,
|
|
181
|
+
}),
|
|
182
|
+
baseCandidate({ id: 'c.md', disposition: 'excluded', reason: 'recency-policy' }),
|
|
183
|
+
],
|
|
184
|
+
}));
|
|
185
|
+
const parsed = SelectionManifestRowSchema.safeParse(JSON.parse(JSON.stringify(row)));
|
|
186
|
+
expect(parsed.success).toBe(true);
|
|
187
|
+
});
|
|
188
|
+
});
|
|
189
|
+
// ─── Attribution ────────────────────────────────────────
|
|
190
|
+
describe('attribution', () => {
|
|
191
|
+
it('stamps absence when env and session pointer are absent — never guesses', () => {
|
|
192
|
+
const row = buildSelectionManifestRow(baseInput());
|
|
193
|
+
expect(row.session_id).toBeUndefined();
|
|
194
|
+
expect(row.agent_source).toBeUndefined();
|
|
195
|
+
expect(row.costBasis).toEqual(SELECTION_COST_BASIS);
|
|
196
|
+
expect(row.timestamp).toBe(new Date(T0).toISOString());
|
|
197
|
+
});
|
|
198
|
+
it('stamps seat and session when both are present', () => {
|
|
199
|
+
fs.mkdirSync(path.join(totemDir, 'ledger'), { recursive: true });
|
|
200
|
+
fs.writeFileSync(path.join(totemDir, 'ledger', '.session-id'), SESSION_A, 'utf-8');
|
|
201
|
+
const row = buildSelectionManifestRow(baseInput({ env: { TOTEM_SELF_AGENT: 'totem-claude' } }));
|
|
202
|
+
expect(row.session_id).toBe(SESSION_A);
|
|
203
|
+
expect(row.agent_source).toBe('totem-claude');
|
|
204
|
+
});
|
|
205
|
+
});
|
|
206
|
+
// ─── Writer ─────────────────────────────────────────────
|
|
207
|
+
describe('appendSelectionManifest', () => {
|
|
208
|
+
it('writes a schema-valid NDJSON row that readSelectionManifests round-trips', () => {
|
|
209
|
+
const result = appendSelectionManifest(baseInput());
|
|
210
|
+
expect(result.written).toBe(true);
|
|
211
|
+
expect(result.warnings).toEqual([]);
|
|
212
|
+
const rows = readSelectionManifests(totemDir);
|
|
213
|
+
expect(rows).toHaveLength(1);
|
|
214
|
+
expect(rows[0]).toMatchObject({
|
|
215
|
+
schemaVersion: 1,
|
|
216
|
+
emitter: 'search_knowledge',
|
|
217
|
+
universe: 'test-pool',
|
|
218
|
+
});
|
|
219
|
+
});
|
|
220
|
+
it('skips silently (no directory materialised) outside an instrumented project', () => {
|
|
221
|
+
const bare = path.join(tmpDir, 'not-a-project', '.totem');
|
|
222
|
+
const result = appendSelectionManifest(baseInput({ totemDir: bare }));
|
|
223
|
+
expect(result).toMatchObject({ written: false, skipped: true, warnings: [] });
|
|
224
|
+
expect(fs.existsSync(bare)).toBe(false);
|
|
225
|
+
});
|
|
226
|
+
it('THROWS the contract error on a schema-invalid row instead of persisting it', () => {
|
|
227
|
+
const input = baseInput({
|
|
228
|
+
candidates: [baseCandidate({ reason: '' })], // violates min(1)
|
|
229
|
+
});
|
|
230
|
+
expect(() => appendSelectionManifest(input)).toThrowError(TotemError);
|
|
231
|
+
try {
|
|
232
|
+
appendSelectionManifest(input);
|
|
233
|
+
}
|
|
234
|
+
catch (err) {
|
|
235
|
+
expect(err.code).toBe('SELECTION_MANIFEST_CONTRACT');
|
|
236
|
+
}
|
|
237
|
+
expect(fs.existsSync(manifestPath())).toBe(false);
|
|
238
|
+
});
|
|
239
|
+
it('degrades to a NAMED warning when the append itself fails (EACCES)', () => {
|
|
240
|
+
const spy = vi.spyOn(fs, 'appendFileSync').mockImplementation(() => {
|
|
241
|
+
const err = new Error('EACCES: permission denied');
|
|
242
|
+
err.code = 'EACCES';
|
|
243
|
+
throw err;
|
|
244
|
+
});
|
|
245
|
+
const result = appendSelectionManifest(baseInput());
|
|
246
|
+
spy.mockRestore();
|
|
247
|
+
expect(result.written).toBe(false);
|
|
248
|
+
expect(result.warnings.some((w) => w.includes('append failed') && w.includes('EACCES'))).toBe(true);
|
|
249
|
+
});
|
|
250
|
+
});
|
|
251
|
+
// ─── Sensor wrapper (Tenet 13) ──────────────────────────
|
|
252
|
+
describe('senseSelectionManifest', () => {
|
|
253
|
+
it('converts the contract throw into a warning and never propagates', () => {
|
|
254
|
+
const warnings = [];
|
|
255
|
+
const result = senseSelectionManifest(baseInput({ candidates: [baseCandidate({ reason: '' })] }), (w) => warnings.push(w));
|
|
256
|
+
expect(result.written).toBe(false);
|
|
257
|
+
expect(warnings.some((w) => w.includes('selection-manifest sensor failed'))).toBe(true);
|
|
258
|
+
});
|
|
259
|
+
it('surfaces writer warnings through onWarn on the degraded path', () => {
|
|
260
|
+
const spy = vi.spyOn(fs, 'appendFileSync').mockImplementation(() => {
|
|
261
|
+
throw new Error('disk full');
|
|
262
|
+
});
|
|
263
|
+
const warnings = [];
|
|
264
|
+
const result = senseSelectionManifest(baseInput(), (w) => warnings.push(w));
|
|
265
|
+
spy.mockRestore();
|
|
266
|
+
expect(result.written).toBe(false);
|
|
267
|
+
expect(warnings.some((w) => w.includes('append failed'))).toBe(true);
|
|
268
|
+
});
|
|
269
|
+
it('healthy control: writes clean, no warnings surfaced', () => {
|
|
270
|
+
const warnings = [];
|
|
271
|
+
const result = senseSelectionManifest(baseInput(), (w) => warnings.push(w));
|
|
272
|
+
expect(result.written).toBe(true);
|
|
273
|
+
expect(warnings).toEqual([]);
|
|
274
|
+
});
|
|
275
|
+
it('contains a THROWING onWarn sink — the accounting channel can never fail the command (PR #2625 CR round)', () => {
|
|
276
|
+
const spy = vi.spyOn(fs, 'appendFileSync').mockImplementation(() => {
|
|
277
|
+
throw new Error('disk full');
|
|
278
|
+
});
|
|
279
|
+
const result = senseSelectionManifest(baseInput(), () => {
|
|
280
|
+
throw new Error('sink exploded');
|
|
281
|
+
});
|
|
282
|
+
spy.mockRestore();
|
|
283
|
+
// No throw escaped, and the warning survives in the returned array.
|
|
284
|
+
expect(result.written).toBe(false);
|
|
285
|
+
expect(result.warnings.some((w) => w.includes('append failed'))).toBe(true);
|
|
286
|
+
});
|
|
287
|
+
});
|
|
288
|
+
// ─── Probe failures (PR #2625 CR round) ─────────────────
|
|
289
|
+
describe('instrumented-project probe', () => {
|
|
290
|
+
it('a non-ENOENT probe failure (EACCES) is a NAMED skip, never a silent not-a-project', () => {
|
|
291
|
+
const spy = vi.spyOn(fs, 'statSync').mockImplementation(() => {
|
|
292
|
+
const err = new Error('EACCES: permission denied');
|
|
293
|
+
err.code = 'EACCES';
|
|
294
|
+
throw err;
|
|
295
|
+
});
|
|
296
|
+
const warnings = [];
|
|
297
|
+
const result = senseSelectionManifest(baseInput(), (w) => warnings.push(w));
|
|
298
|
+
spy.mockRestore();
|
|
299
|
+
expect(result).toMatchObject({ written: false, skipped: true });
|
|
300
|
+
expect(warnings.some((w) => w.includes('.totem probe failed'))).toBe(true);
|
|
301
|
+
});
|
|
302
|
+
});
|
|
303
|
+
// ─── Session override (PR #2625 CR round, partial) ──────
|
|
304
|
+
describe('sessionId override', () => {
|
|
305
|
+
it('a minting emitter stamps its own UUID instead of the shared pointer', () => {
|
|
306
|
+
fs.mkdirSync(path.join(totemDir, 'ledger'), { recursive: true });
|
|
307
|
+
fs.writeFileSync(path.join(totemDir, 'ledger', '.session-id'), SESSION_A, 'utf-8');
|
|
308
|
+
const other = '550e8400-e29b-41d4-a716-446655440009';
|
|
309
|
+
const row = buildSelectionManifestRow(baseInput({ sessionId: other }));
|
|
310
|
+
expect(row.session_id).toBe(other);
|
|
311
|
+
// Without the override the pointer still governs.
|
|
312
|
+
expect(buildSelectionManifestRow(baseInput()).session_id).toBe(SESSION_A);
|
|
313
|
+
});
|
|
314
|
+
});
|
|
315
|
+
// ─── Reader ─────────────────────────────────────────────
|
|
316
|
+
describe('readSelectionManifests', () => {
|
|
317
|
+
it('returns [] on ENOENT and skips malformed / schema-invalid lines, reporting the malformed count', () => {
|
|
318
|
+
expect(readSelectionManifests(totemDir)).toEqual([]);
|
|
319
|
+
appendSelectionManifest(baseInput());
|
|
320
|
+
fs.appendFileSync(manifestPath(), 'not json\n{"schemaVersion":99}\n', 'utf-8');
|
|
321
|
+
const warnings = [];
|
|
322
|
+
const rows = readSelectionManifests(totemDir, (w) => warnings.push(w));
|
|
323
|
+
expect(rows).toHaveLength(1);
|
|
324
|
+
// One AGGREGATE warning for the malformed-JSON line — never a firehose
|
|
325
|
+
// (PR #2625 CR round); the schema-invalid-but-parseable line stays under
|
|
326
|
+
// the generic-consumer skip contract.
|
|
327
|
+
expect(warnings.filter((w) => w.includes('malformed'))).toHaveLength(1);
|
|
328
|
+
expect(warnings[0]).toContain('1 malformed line(s)');
|
|
329
|
+
});
|
|
330
|
+
});
|
|
331
|
+
//# sourceMappingURL=selection-manifest.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selection-manifest.test.js","sourceRoot":"","sources":["../src/selection-manifest.test.ts"],"names":[],"mappings":"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"}
|
package/dist/spine/ledgers.d.ts
CHANGED
|
@@ -370,14 +370,14 @@ export declare const ClassifierLedgerEntrySchema: z.ZodObject<{
|
|
|
370
370
|
*/
|
|
371
371
|
stage4Outcome: z.ZodOptional<z.ZodEnum<["confirmed", "untested-no-matches", "archived-out-of-scope", "compile-rejected"]>>;
|
|
372
372
|
}, "strip", z.ZodTypeAny, {
|
|
373
|
-
candidateRef: string;
|
|
374
373
|
disposition: "structural" | "behavioral";
|
|
374
|
+
candidateRef: string;
|
|
375
375
|
stage4Confirmed: boolean;
|
|
376
376
|
dispositionSource: "classified" | "error-default" | "authored-whitelist";
|
|
377
377
|
stage4Outcome?: "confirmed" | "untested-no-matches" | "archived-out-of-scope" | "compile-rejected" | undefined;
|
|
378
378
|
}, {
|
|
379
|
-
candidateRef: string;
|
|
380
379
|
disposition: "structural" | "behavioral";
|
|
380
|
+
candidateRef: string;
|
|
381
381
|
stage4Confirmed: boolean;
|
|
382
382
|
dispositionSource: "classified" | "error-default" | "authored-whitelist";
|
|
383
383
|
stage4Outcome?: "confirmed" | "untested-no-matches" | "archived-out-of-scope" | "compile-rejected" | undefined;
|
|
@@ -420,30 +420,30 @@ export declare const ClassifierLedgerSchema: z.ZodObject<{
|
|
|
420
420
|
*/
|
|
421
421
|
stage4Outcome: z.ZodOptional<z.ZodEnum<["confirmed", "untested-no-matches", "archived-out-of-scope", "compile-rejected"]>>;
|
|
422
422
|
}, "strip", z.ZodTypeAny, {
|
|
423
|
-
candidateRef: string;
|
|
424
423
|
disposition: "structural" | "behavioral";
|
|
424
|
+
candidateRef: string;
|
|
425
425
|
stage4Confirmed: boolean;
|
|
426
426
|
dispositionSource: "classified" | "error-default" | "authored-whitelist";
|
|
427
427
|
stage4Outcome?: "confirmed" | "untested-no-matches" | "archived-out-of-scope" | "compile-rejected" | undefined;
|
|
428
428
|
}, {
|
|
429
|
-
candidateRef: string;
|
|
430
429
|
disposition: "structural" | "behavioral";
|
|
430
|
+
candidateRef: string;
|
|
431
431
|
stage4Confirmed: boolean;
|
|
432
432
|
dispositionSource: "classified" | "error-default" | "authored-whitelist";
|
|
433
433
|
stage4Outcome?: "confirmed" | "untested-no-matches" | "archived-out-of-scope" | "compile-rejected" | undefined;
|
|
434
434
|
}>, "many">;
|
|
435
435
|
}, "strip", z.ZodTypeAny, {
|
|
436
436
|
entries: {
|
|
437
|
-
candidateRef: string;
|
|
438
437
|
disposition: "structural" | "behavioral";
|
|
438
|
+
candidateRef: string;
|
|
439
439
|
stage4Confirmed: boolean;
|
|
440
440
|
dispositionSource: "classified" | "error-default" | "authored-whitelist";
|
|
441
441
|
stage4Outcome?: "confirmed" | "untested-no-matches" | "archived-out-of-scope" | "compile-rejected" | undefined;
|
|
442
442
|
}[];
|
|
443
443
|
}, {
|
|
444
444
|
entries: {
|
|
445
|
-
candidateRef: string;
|
|
446
445
|
disposition: "structural" | "behavioral";
|
|
446
|
+
candidateRef: string;
|
|
447
447
|
stage4Confirmed: boolean;
|
|
448
448
|
dispositionSource: "classified" | "error-default" | "authored-whitelist";
|
|
449
449
|
stage4Outcome?: "confirmed" | "untested-no-matches" | "archived-out-of-scope" | "compile-rejected" | undefined;
|
|
@@ -894,30 +894,30 @@ export declare const MinerLedgersSchema: z.ZodObject<{
|
|
|
894
894
|
*/
|
|
895
895
|
stage4Outcome: z.ZodOptional<z.ZodEnum<["confirmed", "untested-no-matches", "archived-out-of-scope", "compile-rejected"]>>;
|
|
896
896
|
}, "strip", z.ZodTypeAny, {
|
|
897
|
-
candidateRef: string;
|
|
898
897
|
disposition: "structural" | "behavioral";
|
|
898
|
+
candidateRef: string;
|
|
899
899
|
stage4Confirmed: boolean;
|
|
900
900
|
dispositionSource: "classified" | "error-default" | "authored-whitelist";
|
|
901
901
|
stage4Outcome?: "confirmed" | "untested-no-matches" | "archived-out-of-scope" | "compile-rejected" | undefined;
|
|
902
902
|
}, {
|
|
903
|
-
candidateRef: string;
|
|
904
903
|
disposition: "structural" | "behavioral";
|
|
904
|
+
candidateRef: string;
|
|
905
905
|
stage4Confirmed: boolean;
|
|
906
906
|
dispositionSource: "classified" | "error-default" | "authored-whitelist";
|
|
907
907
|
stage4Outcome?: "confirmed" | "untested-no-matches" | "archived-out-of-scope" | "compile-rejected" | undefined;
|
|
908
908
|
}>, "many">;
|
|
909
909
|
}, "strip", z.ZodTypeAny, {
|
|
910
910
|
entries: {
|
|
911
|
-
candidateRef: string;
|
|
912
911
|
disposition: "structural" | "behavioral";
|
|
912
|
+
candidateRef: string;
|
|
913
913
|
stage4Confirmed: boolean;
|
|
914
914
|
dispositionSource: "classified" | "error-default" | "authored-whitelist";
|
|
915
915
|
stage4Outcome?: "confirmed" | "untested-no-matches" | "archived-out-of-scope" | "compile-rejected" | undefined;
|
|
916
916
|
}[];
|
|
917
917
|
}, {
|
|
918
918
|
entries: {
|
|
919
|
-
candidateRef: string;
|
|
920
919
|
disposition: "structural" | "behavioral";
|
|
920
|
+
candidateRef: string;
|
|
921
921
|
stage4Confirmed: boolean;
|
|
922
922
|
dispositionSource: "classified" | "error-default" | "authored-whitelist";
|
|
923
923
|
stage4Outcome?: "confirmed" | "untested-no-matches" | "archived-out-of-scope" | "compile-rejected" | undefined;
|
|
@@ -1201,8 +1201,8 @@ export declare const MinerLedgersSchema: z.ZodObject<{
|
|
|
1201
1201
|
};
|
|
1202
1202
|
classifier: {
|
|
1203
1203
|
entries: {
|
|
1204
|
-
candidateRef: string;
|
|
1205
1204
|
disposition: "structural" | "behavioral";
|
|
1205
|
+
candidateRef: string;
|
|
1206
1206
|
stage4Confirmed: boolean;
|
|
1207
1207
|
dispositionSource: "classified" | "error-default" | "authored-whitelist";
|
|
1208
1208
|
stage4Outcome?: "confirmed" | "untested-no-matches" | "archived-out-of-scope" | "compile-rejected" | undefined;
|
|
@@ -1267,8 +1267,8 @@ export declare const MinerLedgersSchema: z.ZodObject<{
|
|
|
1267
1267
|
};
|
|
1268
1268
|
classifier: {
|
|
1269
1269
|
entries: {
|
|
1270
|
-
candidateRef: string;
|
|
1271
1270
|
disposition: "structural" | "behavioral";
|
|
1271
|
+
candidateRef: string;
|
|
1272
1272
|
stage4Confirmed: boolean;
|
|
1273
1273
|
dispositionSource: "classified" | "error-default" | "authored-whitelist";
|
|
1274
1274
|
stage4Outcome?: "confirmed" | "untested-no-matches" | "archived-out-of-scope" | "compile-rejected" | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verification-outcomes.d.ts","sourceRoot":"","sources":["../src/verification-outcomes.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"verification-outcomes.d.ts","sourceRoot":"","sources":["../src/verification-outcomes.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB;;;;;;;;;;GAUG;AACH,eAAO,MAAM,mBAAmB,qFAK9B,CAAC;AAYH;;;;;GAKG;AACH,eAAO,MAAM,8BAA8B;IACzC;;;;OAIG;;IAEH,oEAAoE;;IAEpE,sDAAsD;;IAEtD,yEAAyE;;IAEzE,kEAAkE;;IAElE;;;;OAIG;;;;;;;;;;;;;;;;EAEH,CAAC;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,8BAA8B;;;QA7BzC;;;;WAIG;;QAEH,oEAAoE;;QAEpE,sDAAsD;;QAEtD,yEAAyE;;QAEzE,kEAAkE;;QAElE;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAcH,CAAC;AAEH,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAC3E,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAC;AACtF,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAC;AAEtF;;;;;;;;GAQG;AACH,MAAM,MAAM,yBAAyB,GAAG,wBAAwB,CAAC,UAAU,CAAC,CAAC;AAI7E;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAC7B,yBAAyB,CA8C3B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,yBAAyB,GAClC,IAAI,CAYN"}
|
|
@@ -2,6 +2,7 @@ import * as fs from 'node:fs';
|
|
|
2
2
|
import * as path from 'node:path';
|
|
3
3
|
import { z } from 'zod';
|
|
4
4
|
import { canonicalStringify } from './compile-manifest.js';
|
|
5
|
+
import { writeFileAtomicSync } from './fs-atomic.js';
|
|
5
6
|
/**
|
|
6
7
|
* Stage 4 outcome literals serialized into `.totem/verification-outcomes.json`
|
|
7
8
|
* (mmnto-ai/totem#1684, ADR-091 § Bootstrap CI-first). Mirrors the
|
|
@@ -133,17 +134,10 @@ export function writeVerificationOutcomes(filePath, outcomes) {
|
|
|
133
134
|
fs.mkdirSync(dir, { recursive: true });
|
|
134
135
|
const file = { version: 1, outcomes };
|
|
135
136
|
const json = `${canonicalStringify(file, 2)}\n`;
|
|
136
|
-
//
|
|
137
|
-
//
|
|
138
|
-
//
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
fs.writeFileSync(tmpPath, json, 'utf-8');
|
|
142
|
-
fs.renameSync(tmpPath, filePath);
|
|
143
|
-
}
|
|
144
|
-
finally {
|
|
145
|
-
if (fs.existsSync(tmpPath))
|
|
146
|
-
fs.rmSync(tmpPath, { force: true });
|
|
147
|
-
}
|
|
137
|
+
// Per-write unique temp naming (two concurrent lint processes must not
|
|
138
|
+
// clobber each other's in-flight write — CR mmnto-ai/totem#1787 R1) and
|
|
139
|
+
// failure-path temp cleanup are the shared corollary helper's contract
|
|
140
|
+
// (mmnto-ai/totem#2620).
|
|
141
|
+
writeFileAtomicSync(filePath, json);
|
|
148
142
|
}
|
|
149
143
|
//# sourceMappingURL=verification-outcomes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verification-outcomes.js","sourceRoot":"","sources":["../src/verification-outcomes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"verification-outcomes.js","sourceRoot":"","sources":["../src/verification-outcomes.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worktree-registry.d.ts","sourceRoot":"","sources":["../src/worktree-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAMH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"worktree-registry.d.ts","sourceRoot":"","sources":["../src/worktree-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAMH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,wEAAwE;AACxE,eAAO,MAAM,gCAAgC,IAAI,CAAC;AAElD,eAAO,MAAM,mBAAmB;IAE5B,+DAA+D;;IAE/D,uEAAuE;;;IAGvE,iEAAiE;;IAEjE,8CAA8C;;;IAP9C,+DAA+D;;IAE/D,uEAAuE;;;IAGvE,iEAAiE;;IAEjE,8CAA8C;;;IAP9C,+DAA+D;;IAE/D,uEAAuE;;;IAGvE,iEAAiE;;IAEjE,8CAA8C;;gCAGlC,CAAC;AAEjB,eAAO,MAAM,kBAAkB;;IAE7B,6EAA6E;;IAE7E,sCAAsC;;QAhBpC,+DAA+D;;QAE/D,uEAAuE;;;QAGvE,iEAAiE;;QAEjE,8CAA8C;;;QAP9C,+DAA+D;;QAE/D,uEAAuE;;;QAGvE,iEAAiE;;QAEjE,8CAA8C;;;QAP9C,+DAA+D;;QAE/D,uEAAuE;;;QAGvE,iEAAiE;;QAEjE,8CAA8C;;;;;;QAP9C,+DAA+D;;QAE/D,uEAAuE;;;QAGvE,iEAAiE;;QAEjE,8CAA8C;;;;;;;QAP9C,+DAA+D;;QAE/D,uEAAuE;;;QAGvE,iEAAiE;;QAEjE,8CAA8C;;;;EAWhD,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAO9D,4EAA4E;AAC5E,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED,uFAAuF;AACvF,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED,8EAA8E;AAC9E,wBAAgB,iBAAiB,IAAI,YAAY,CAEhD;AAWD,+EAA+E;AAC/E,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAgBrD;AAaD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,YAAY,CAejF;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,YAAY,EAClB,YAAY,EAAE,MAAM,GACnB;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,aAAa,CAAA;CAAE,GAAG,SAAS,CAMnD;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,EAAE,CAWlE;AAED;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG;IACvD,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,CAQA;AA6BD;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE;IAC3C,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,aAAa,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;CACd,GAAG,OAAO,CAAC,IAAI,CAAC,CAyBhB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,mBAAmB,CACvC,YAAY,EAAE,MAAM,EACpB,IAAI,CAAC,EAAE;IAAE,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,GAClC,OAAO,CAAC,OAAO,CAAC,CAoBlB"}
|
|
@@ -29,6 +29,7 @@ import os from 'node:os';
|
|
|
29
29
|
import path from 'node:path';
|
|
30
30
|
import { z } from 'zod';
|
|
31
31
|
import { TotemParseError } from './errors.js';
|
|
32
|
+
import { writeFileAtomicSync } from './fs-atomic.js';
|
|
32
33
|
import { acquireLock } from './lock.js';
|
|
33
34
|
import { readJsonSafe } from './sys/fs.js';
|
|
34
35
|
/** The on-disk compatibility contract for `~/.totem/worktrees.json`. */
|
|
@@ -206,11 +207,10 @@ function loadForMutation(filePath) {
|
|
|
206
207
|
throw err;
|
|
207
208
|
}
|
|
208
209
|
}
|
|
209
|
-
/**
|
|
210
|
+
/** Unique temp + rename via the shared corollary helper (mmnto-ai/totem#2620):
|
|
211
|
+
* a concurrent reader never sees partial JSON. */
|
|
210
212
|
function writeAtomic(filePath, file) {
|
|
211
|
-
|
|
212
|
-
fs.writeFileSync(tmpPath, JSON.stringify(file, null, 2) + '\n');
|
|
213
|
-
fs.renameSync(tmpPath, filePath);
|
|
213
|
+
writeFileAtomicSync(filePath, JSON.stringify(file, null, 2) + '\n');
|
|
214
214
|
}
|
|
215
215
|
/**
|
|
216
216
|
* Record a worktree and the root it lives under, under the `~/.totem` lock.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worktree-registry.js","sourceRoot":"","sources":["../src/worktree-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,wEAAwE;AACxE,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,CAAC;AAElD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC;KACjC,MAAM,CAAC;IACN,+DAA+D;IAC/D,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,uEAAuE;IACvE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,iEAAiE;IACjE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,8CAA8C;IAC9C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;CACtB,CAAC;KACD,WAAW,EAAE,CAAC,CAAC,kDAAkD;AAEpE,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,gCAAgC,CAAC;IAC1D,6EAA6E;IAC7E,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC1B,sCAAsC;IACtC,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,mBAAmB,CAAC;CACrD,CAAC,CAAC;AAKH,4EAA4E;AAC5E,SAAS,mBAAmB;IAC1B,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;AAC3C,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,oBAAoB;IAClC,OAAO,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,gBAAgB,CAAC,CAAC;AAC5D,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,mBAAmB;IACjC,OAAO,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,WAAW,CAAC,CAAC;AACvD,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,iBAAiB;IAC/B,OAAO,EAAE,aAAa,EAAE,gCAAgC,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;AACvF,CAAC;AAED;;;;GAIG;AACH,SAAS,QAAQ,CAAC,CAAS;IACzB,OAAO,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,eAAe,CAAC,CAAS;IACvC,OAAO,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAAC,CAAS;IAC1C,yQAAyQ;IACzQ,IAAI,CAAC;QACH,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAChB,OAAO,IAAI,CAAC;QACZ,8JAA8J;IAChK,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,0EAA0E;QAC1E,sEAAsE;QACtE,sCAAsC;QACtC,MAAM,IAAI,GACR,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,MAAM,IAAI,GAAG;YACtD,CAAC,CAAE,GAA6B,CAAC,IAAI;YACrC,CAAC,CAAC,SAAS,CAAC;QAChB,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,CAAC;IACjD,CAAC;AACH,CAAC;AAED,kFAAkF;AAClF,SAAS,eAAe,CAAC,CAAS;IAChC,iNAAiN;IACjN,IAAI,CAAC;QACH,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QACrC,8JAA8J;IAChK,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAA8B;IACjE,yQAAyQ;IACzQ,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,oBAAoB,EAAE,EAAE,kBAAkB,CAAC,CAAC;QAChE,8JAA8J;IAChK,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,eAAe,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAC7E,+DAA+D;YAC/D,OAAO,iBAAiB,EAAE,CAAC;QAC7B,CAAC;QACD,MAAM,EAAE,CACN,kCAAkC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,yBAAyB,CAC5G,CAAC;QACF,OAAO,iBAAiB,EAAE,CAAC;IAC7B,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAAkB,EAClB,YAAoB;IAEpB,MAAM,MAAM,GAAG,eAAe,CAAC,YAAY,CAAC,CAAC;IAC7C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1D,IAAI,eAAe,CAAC,GAAG,CAAC,KAAK,MAAM;YAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;IAC7D,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAkB;IACtD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,GAAG,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC/B,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS;QAC5B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACd,IAAI,eAAe,CAAC,QAAQ,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAe;IAIpD,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC;IACjE,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClF,CAAC;IACD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;AACjC,CAAC;AAED;;;;GAIG;AACH,SAAS,eAAe,CAAC,QAAgB;IACvC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,iBAAiB,EAAE,CAAC;IACzD,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;IACpD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,eAAe,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAAC,EAAE,CAAC;YACvF,MAAM,IAAI,eAAe,CACvB,oEAAoE,EACpE,UAAU,QAAQ,kDAAkD,EACpE,GAAG,CAAC,KAAK,CACV,CAAC;QACJ,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"worktree-registry.js","sourceRoot":"","sources":["../src/worktree-registry.ts"],"names":[],"mappings":"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"}
|