openplanr 1.16.2 → 1.17.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/cli/commands/operate.d.ts.map +1 -1
- package/dist/cli/commands/operate.js +185 -6
- package/dist/cli/commands/operate.js.map +1 -1
- package/dist/services/operate/advisors.d.ts +46 -1
- package/dist/services/operate/advisors.d.ts.map +1 -1
- package/dist/services/operate/advisors.js +124 -13
- package/dist/services/operate/advisors.js.map +1 -1
- package/dist/services/operate/artifacts.d.ts +27 -1
- package/dist/services/operate/artifacts.d.ts.map +1 -1
- package/dist/services/operate/artifacts.js +103 -1
- package/dist/services/operate/artifacts.js.map +1 -1
- package/dist/services/operate/cadence.d.ts +50 -0
- package/dist/services/operate/cadence.d.ts.map +1 -0
- package/dist/services/operate/cadence.js +56 -0
- package/dist/services/operate/cadence.js.map +1 -0
- package/dist/services/operate/citation-resolution.d.ts +101 -0
- package/dist/services/operate/citation-resolution.d.ts.map +1 -0
- package/dist/services/operate/citation-resolution.js +308 -0
- package/dist/services/operate/citation-resolution.js.map +1 -0
- package/dist/services/operate/config.d.ts +67 -1
- package/dist/services/operate/config.d.ts.map +1 -1
- package/dist/services/operate/config.js +158 -9
- package/dist/services/operate/config.js.map +1 -1
- package/dist/services/operate/decision-brief.d.ts +148 -0
- package/dist/services/operate/decision-brief.d.ts.map +1 -0
- package/dist/services/operate/decision-brief.js +194 -0
- package/dist/services/operate/decision-brief.js.map +1 -0
- package/dist/services/operate/doctor.d.ts.map +1 -1
- package/dist/services/operate/doctor.js +151 -3
- package/dist/services/operate/doctor.js.map +1 -1
- package/dist/services/operate/engine.d.ts +66 -2
- package/dist/services/operate/engine.d.ts.map +1 -1
- package/dist/services/operate/engine.js +219 -7
- package/dist/services/operate/engine.js.map +1 -1
- package/dist/services/operate/event-store.d.ts +35 -1
- package/dist/services/operate/event-store.d.ts.map +1 -1
- package/dist/services/operate/event-store.js +142 -29
- package/dist/services/operate/event-store.js.map +1 -1
- package/dist/services/operate/evidence-cache.d.ts +25 -1
- package/dist/services/operate/evidence-cache.d.ts.map +1 -1
- package/dist/services/operate/evidence-cache.js +62 -1
- package/dist/services/operate/evidence-cache.js.map +1 -1
- package/dist/services/operate/evidence.d.ts +20 -1
- package/dist/services/operate/evidence.d.ts.map +1 -1
- package/dist/services/operate/evidence.js +119 -0
- package/dist/services/operate/evidence.js.map +1 -1
- package/dist/services/operate/index.d.ts.map +1 -1
- package/dist/services/operate/index.js +72 -5
- package/dist/services/operate/index.js.map +1 -1
- package/dist/services/operate/interaction/action-service.d.ts +17 -0
- package/dist/services/operate/interaction/action-service.d.ts.map +1 -1
- package/dist/services/operate/interaction/action-service.js +19 -0
- package/dist/services/operate/interaction/action-service.js.map +1 -1
- package/dist/services/operate/journal.d.ts.map +1 -1
- package/dist/services/operate/journal.js +11 -5
- package/dist/services/operate/journal.js.map +1 -1
- package/dist/services/operate/maintenance.d.ts.map +1 -1
- package/dist/services/operate/maintenance.js +9 -2
- package/dist/services/operate/maintenance.js.map +1 -1
- package/dist/services/operate/migration.d.ts +68 -0
- package/dist/services/operate/migration.d.ts.map +1 -0
- package/dist/services/operate/migration.js +235 -0
- package/dist/services/operate/migration.js.map +1 -0
- package/dist/services/operate/mission-dispatch.d.ts +193 -0
- package/dist/services/operate/mission-dispatch.d.ts.map +1 -0
- package/dist/services/operate/mission-dispatch.js +444 -0
- package/dist/services/operate/mission-dispatch.js.map +1 -0
- package/dist/services/operate/projection-persistence.d.ts +6 -0
- package/dist/services/operate/projection-persistence.d.ts.map +1 -1
- package/dist/services/operate/projection-persistence.js +87 -11
- package/dist/services/operate/projection-persistence.js.map +1 -1
- package/dist/services/operate/projection.d.ts +26 -1
- package/dist/services/operate/projection.d.ts.map +1 -1
- package/dist/services/operate/projection.js +62 -0
- package/dist/services/operate/projection.js.map +1 -1
- package/dist/services/operate/protocol.d.ts +46 -2
- package/dist/services/operate/protocol.d.ts.map +1 -1
- package/dist/services/operate/protocol.js +57 -5
- package/dist/services/operate/protocol.js.map +1 -1
- package/dist/services/operate/read-only-providers.d.ts +37 -0
- package/dist/services/operate/read-only-providers.d.ts.map +1 -1
- package/dist/services/operate/read-only-providers.js +130 -0
- package/dist/services/operate/read-only-providers.js.map +1 -1
- package/dist/services/operate/reports.d.ts +13 -0
- package/dist/services/operate/reports.d.ts.map +1 -1
- package/dist/services/operate/reports.js +217 -1
- package/dist/services/operate/reports.js.map +1 -1
- package/dist/services/operate/routes.d.ts.map +1 -1
- package/dist/services/operate/routes.js +79 -5
- package/dist/services/operate/routes.js.map +1 -1
- package/dist/services/operate/types.d.ts +120 -4
- package/dist/services/operate/types.d.ts.map +1 -1
- package/dist/services/operate/types.js +13 -0
- package/dist/services/operate/types.js.map +1 -1
- package/dist/services/operate/workspace.d.ts +7 -0
- package/dist/services/operate/workspace.d.ts.map +1 -1
- package/dist/services/operate/workspace.js +14 -5
- package/dist/services/operate/workspace.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,11 +1,61 @@
|
|
|
1
1
|
import { randomUUID } from 'node:crypto';
|
|
2
|
-
import { appendFile, mkdir, open, readFile, rename } from 'node:fs/promises';
|
|
2
|
+
import { access, appendFile, mkdir, open, readdir, readFile, rename } from 'node:fs/promises';
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import { canonicalDigest, canonicalize } from './canonical.js';
|
|
5
5
|
import { assertOperatingArtifact, loadOperatingProtocol } from './protocol.js';
|
|
6
6
|
import { projectOperatingStalledItems } from './stalled-item-service.js';
|
|
7
|
-
import { OPERATE_PROTOCOL_VERSION, OPERATE_SCHEMA_VERSION, OperateError, } from './types.js';
|
|
7
|
+
import { OPERATE_MISSION_PROTOCOL_VERSION, OPERATE_PROTOCOL_VERSION, OPERATE_SCHEMA_VERSION, OperateError, } from './types.js';
|
|
8
8
|
import { ensureOperatingDirectories, resolveOperatingPaths } from './workspace.js';
|
|
9
|
+
/**
|
|
10
|
+
* The protocol version an `operating-record` envelope carries. It is a pure
|
|
11
|
+
* function of the record content: a route record whose embedded route plan is a
|
|
12
|
+
* v1.3 (`create-quick-task`) plan is stamped v1.3 so it validates against the
|
|
13
|
+
* additive v1.3 operating-record schema (the only record schema whose route
|
|
14
|
+
* content accepts a v1.3 route plan). Every other record — including a v1.2
|
|
15
|
+
* route record — stays frozen at v1.2, so every existing write and the
|
|
16
|
+
* `records.jsonl` read-back are byte-identical. Because it is derived, the write
|
|
17
|
+
* path (`putRecord`) and the read-back (`logEntryToOperatingRecord`) agree.
|
|
18
|
+
*/
|
|
19
|
+
function recordEnvelopeProtocolVersion(recordType, content) {
|
|
20
|
+
return recordType === 'route' && content.protocolVersion === OPERATE_MISSION_PROTOCOL_VERSION
|
|
21
|
+
? OPERATE_MISSION_PROTOCOL_VERSION
|
|
22
|
+
: OPERATE_PROTOCOL_VERSION;
|
|
23
|
+
}
|
|
24
|
+
/** Map a v1.2 `operating-record` envelope to its v1.3 records-log entry. */
|
|
25
|
+
export function operatingRecordToLogEntry(record) {
|
|
26
|
+
return {
|
|
27
|
+
kind: 'operating-records-log-entry',
|
|
28
|
+
schemaVersion: record.schemaVersion,
|
|
29
|
+
protocolVersion: '1.3.0',
|
|
30
|
+
digest: record.digest,
|
|
31
|
+
recordType: record.recordType,
|
|
32
|
+
createdAt: record.createdAt,
|
|
33
|
+
correlationId: record.correlationId,
|
|
34
|
+
contentDigest: record.contentDigest,
|
|
35
|
+
content: record.content,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
/** Exact inverse of {@link operatingRecordToLogEntry}. */
|
|
39
|
+
export function logEntryToOperatingRecord(entry) {
|
|
40
|
+
return {
|
|
41
|
+
kind: 'operating-record',
|
|
42
|
+
schemaVersion: entry.schemaVersion,
|
|
43
|
+
protocolVersion: recordEnvelopeProtocolVersion(entry.recordType, entry.content),
|
|
44
|
+
digest: entry.digest,
|
|
45
|
+
recordType: entry.recordType,
|
|
46
|
+
createdAt: entry.createdAt,
|
|
47
|
+
correlationId: entry.correlationId,
|
|
48
|
+
contentDigest: entry.contentDigest,
|
|
49
|
+
content: entry.content,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
/** One canonical `.state/records.jsonl` line (no trailing newline) for a record. */
|
|
53
|
+
export function operatingRecordsLogLine(record) {
|
|
54
|
+
return canonicalize(operatingRecordToLogEntry(record));
|
|
55
|
+
}
|
|
56
|
+
async function fileExists(target) {
|
|
57
|
+
return access(target).then(() => true, () => false);
|
|
58
|
+
}
|
|
9
59
|
async function durableAppend(target, line) {
|
|
10
60
|
const handle = await open(target, 'a', 0o600);
|
|
11
61
|
try {
|
|
@@ -29,9 +79,42 @@ async function atomicCanonicalWrite(target, value) {
|
|
|
29
79
|
}
|
|
30
80
|
await rename(temporary, target);
|
|
31
81
|
}
|
|
32
|
-
|
|
82
|
+
// SPEC-002 (v1.2) directory-per-digest-prefix record file, kept only so readers
|
|
83
|
+
// can still resolve records on a project that has not yet migrated to the v1.3
|
|
84
|
+
// `.state/records.jsonl` append log. Live writes always target v1.3.
|
|
85
|
+
function legacyRecordPath(recordsDir, digest) {
|
|
33
86
|
const hex = digest.slice('sha256:'.length);
|
|
34
|
-
return path.join(
|
|
87
|
+
return path.join(recordsDir, hex.slice(0, 2), `${hex.slice(2)}.json`);
|
|
88
|
+
}
|
|
89
|
+
function legacyRecordsDir(operateRoot) {
|
|
90
|
+
return path.join(operateRoot, 'records', 'sha256');
|
|
91
|
+
}
|
|
92
|
+
function legacyEventsPath(operateRoot) {
|
|
93
|
+
return path.join(operateRoot, 'events.jsonl');
|
|
94
|
+
}
|
|
95
|
+
function legacyCheckpointPath(operateRoot) {
|
|
96
|
+
return path.join(operateRoot, 'checkpoints', 'current.json');
|
|
97
|
+
}
|
|
98
|
+
async function readRecordsLog(recordsFile) {
|
|
99
|
+
const raw = await readFile(recordsFile, 'utf8').catch((error) => {
|
|
100
|
+
if (error.code === 'ENOENT')
|
|
101
|
+
return '';
|
|
102
|
+
throw error;
|
|
103
|
+
});
|
|
104
|
+
const records = [];
|
|
105
|
+
for (const [index, line] of raw.split('\n').entries()) {
|
|
106
|
+
if (!line.trim())
|
|
107
|
+
continue;
|
|
108
|
+
let entry;
|
|
109
|
+
try {
|
|
110
|
+
entry = JSON.parse(line);
|
|
111
|
+
}
|
|
112
|
+
catch {
|
|
113
|
+
throw new OperateError('E_OPERATE_STATE_INVALID', `Operating records.jsonl line ${index + 1} is not valid JSON.`);
|
|
114
|
+
}
|
|
115
|
+
records.push(logEntryToOperatingRecord(entry));
|
|
116
|
+
}
|
|
117
|
+
return records;
|
|
35
118
|
}
|
|
36
119
|
export class OperatingEventStore {
|
|
37
120
|
projectRoot;
|
|
@@ -48,8 +131,23 @@ export class OperatingEventStore {
|
|
|
48
131
|
});
|
|
49
132
|
await appendFile(this.paths.events, '', { encoding: 'utf8', mode: 0o600 });
|
|
50
133
|
}
|
|
134
|
+
// Readers resolve the effective on-disk location so a project that has not yet
|
|
135
|
+
// migrated to the v1.3 `.state/` layout stays readable. Writers always target
|
|
136
|
+
// v1.3, because every mutating action migrates the layout before it proceeds.
|
|
137
|
+
async effectiveEventsPath() {
|
|
138
|
+
if (await fileExists(this.paths.events))
|
|
139
|
+
return this.paths.events;
|
|
140
|
+
const legacy = legacyEventsPath(this.paths.root);
|
|
141
|
+
return (await fileExists(legacy)) ? legacy : this.paths.events;
|
|
142
|
+
}
|
|
143
|
+
async effectiveCheckpointPath() {
|
|
144
|
+
if (await fileExists(this.paths.checkpoint))
|
|
145
|
+
return this.paths.checkpoint;
|
|
146
|
+
const legacy = legacyCheckpointPath(this.paths.root);
|
|
147
|
+
return (await fileExists(legacy)) ? legacy : this.paths.checkpoint;
|
|
148
|
+
}
|
|
51
149
|
async replay() {
|
|
52
|
-
const raw = await readFile(this.
|
|
150
|
+
const raw = await readFile(await this.effectiveEventsPath(), 'utf8').catch((error) => {
|
|
53
151
|
if (error.code === 'ENOENT')
|
|
54
152
|
return '';
|
|
55
153
|
throw error;
|
|
@@ -93,7 +191,7 @@ export class OperatingEventStore {
|
|
|
93
191
|
const record = {
|
|
94
192
|
kind: 'operating-record',
|
|
95
193
|
schemaVersion: OPERATE_SCHEMA_VERSION,
|
|
96
|
-
protocolVersion:
|
|
194
|
+
protocolVersion: recordEnvelopeProtocolVersion(recordType, content),
|
|
97
195
|
digest,
|
|
98
196
|
recordType,
|
|
99
197
|
createdAt,
|
|
@@ -102,30 +200,37 @@ export class OperatingEventStore {
|
|
|
102
200
|
content: structuredClone(content),
|
|
103
201
|
};
|
|
104
202
|
await assertOperatingArtifact('operating-record', record);
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
catch (error) {
|
|
118
|
-
if (error.code !== 'EEXIST')
|
|
119
|
-
throw error;
|
|
120
|
-
const existing = await readFile(target, 'utf8');
|
|
121
|
-
if (canonicalDigest(JSON.parse(existing)) !== canonicalDigest(record)) {
|
|
122
|
-
throw new OperateError('E_OPERATE_STATE_INVALID', `Content-addressed operating record ${digest} does not match its path.`);
|
|
203
|
+
// Persist as a single canonical `operating-records-log-entry@1.3.0` line in
|
|
204
|
+
// the append-only `.state/records.jsonl`. The append is content-addressed:
|
|
205
|
+
// an identical prior entry is a no-op; a colliding digest with different
|
|
206
|
+
// bytes is rejected exactly as the per-file layout rejected it.
|
|
207
|
+
const logEntry = operatingRecordToLogEntry(record);
|
|
208
|
+
await assertOperatingArtifact('operating-records-log-entry', logEntry);
|
|
209
|
+
const line = canonicalize(logEntry);
|
|
210
|
+
for (const existing of await readRecordsLog(this.paths.records)) {
|
|
211
|
+
if (existing.digest !== digest)
|
|
212
|
+
continue;
|
|
213
|
+
if (canonicalDigest(existing) !== canonicalDigest(record)) {
|
|
214
|
+
throw new OperateError('E_OPERATE_STATE_INVALID', `Content-addressed operating record ${digest} does not match its stored line.`);
|
|
123
215
|
}
|
|
216
|
+
return record;
|
|
124
217
|
}
|
|
218
|
+
await durableAppend(this.paths.records, `${line}\n`);
|
|
125
219
|
return record;
|
|
126
220
|
}
|
|
127
221
|
async readRecord(digest) {
|
|
128
|
-
|
|
222
|
+
let record = (await readRecordsLog(this.paths.records)).find((entry) => entry.digest === digest);
|
|
223
|
+
if (!record) {
|
|
224
|
+
// A project that has not yet migrated still stores this record as a
|
|
225
|
+
// per-digest-prefix file under the SPEC-002 layout.
|
|
226
|
+
const legacy = legacyRecordPath(legacyRecordsDir(this.paths.root), digest);
|
|
227
|
+
if (await fileExists(legacy)) {
|
|
228
|
+
record = JSON.parse(await readFile(legacy, 'utf8'));
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
if (!record) {
|
|
232
|
+
throw new OperateError('E_OPERATE_STATE_INVALID', `Content-addressed operating record ${digest} is not present in records.jsonl.`);
|
|
233
|
+
}
|
|
129
234
|
await assertOperatingArtifact('operating-record', record);
|
|
130
235
|
if (record.digest !== digest ||
|
|
131
236
|
record.contentDigest !== canonicalDigest(record.content) ||
|
|
@@ -164,6 +269,9 @@ export class OperatingEventStore {
|
|
|
164
269
|
correlationId,
|
|
165
270
|
evidenceRefs: [...new Set(input.evidenceRefs ?? [])].sort(),
|
|
166
271
|
payload: structuredClone(input.payload ?? {}),
|
|
272
|
+
// Omitted for every v1.2 caller so the pipeline's `createOperatingEvent`
|
|
273
|
+
// default keeps the frozen v1.2 stamp and byte-identical event hash.
|
|
274
|
+
...(input.protocolVersion ? { protocolVersion: input.protocolVersion } : {}),
|
|
167
275
|
}, {
|
|
168
276
|
previousEvent: replay.events.at(-1) ?? null,
|
|
169
277
|
sequence: replay.eventHead.sequence + 1,
|
|
@@ -200,7 +308,7 @@ export class OperatingEventStore {
|
|
|
200
308
|
async readCheckpoint(options = {}) {
|
|
201
309
|
let checkpoint;
|
|
202
310
|
try {
|
|
203
|
-
checkpoint = JSON.parse(await readFile(this.
|
|
311
|
+
checkpoint = JSON.parse(await readFile(await this.effectiveCheckpointPath(), 'utf8'));
|
|
204
312
|
}
|
|
205
313
|
catch (error) {
|
|
206
314
|
if (error.code === 'ENOENT')
|
|
@@ -215,11 +323,16 @@ export class OperatingEventStore {
|
|
|
215
323
|
}
|
|
216
324
|
}
|
|
217
325
|
async listRecordDigests() {
|
|
218
|
-
const
|
|
219
|
-
|
|
326
|
+
const fromLog = (await readRecordsLog(this.paths.records)).map((record) => record.digest);
|
|
327
|
+
if (fromLog.length > 0 || (await fileExists(this.paths.records))) {
|
|
328
|
+
return [...new Set(fromLog)].sort();
|
|
329
|
+
}
|
|
330
|
+
// SPEC-002 fallback: enumerate the per-digest-prefix directory tree.
|
|
331
|
+
const recordsDir = legacyRecordsDir(this.paths.root);
|
|
332
|
+
const prefixes = await readdir(recordsDir).catch(() => []);
|
|
220
333
|
const digests = [];
|
|
221
334
|
for (const prefix of prefixes) {
|
|
222
|
-
const names = await readdir(path.join(
|
|
335
|
+
const names = await readdir(path.join(recordsDir, prefix)).catch(() => []);
|
|
223
336
|
for (const name of names) {
|
|
224
337
|
if (/^[a-f0-9]{62}\.json$/.test(name) && /^[a-f0-9]{2}$/.test(prefix)) {
|
|
225
338
|
digests.push(`sha256:${prefix}${name.slice(0, -5)}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-store.js","sourceRoot":"","sources":["../../../src/services/operate/event-store.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"event-store.js","sourceRoot":"","sources":["../../../src/services/operate/event-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,33 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type OperatingEvidence, type OperatingSensitivity } from './types.js';
|
|
2
|
+
export interface CitationSnapshotInput {
|
|
3
|
+
evidenceId: string;
|
|
4
|
+
citationKey?: string | null;
|
|
5
|
+
snapshotDigest: `sha256:${string}`;
|
|
6
|
+
sourceLocation: string;
|
|
7
|
+
sensitivity: OperatingSensitivity;
|
|
8
|
+
/** Already redacted through the standard evidence redaction path before it is handed in. */
|
|
9
|
+
content: string;
|
|
10
|
+
}
|
|
2
11
|
export declare class OperatingEvidenceCache {
|
|
3
12
|
private readonly cacheRoot;
|
|
4
13
|
private readonly sensitivityCeiling;
|
|
5
14
|
constructor(cacheRoot: string, sensitivityCeiling: OperatingSensitivity);
|
|
6
15
|
put(cacheKey: string, evidence: OperatingEvidence, ttlMs: number, now?: Date): Promise<string>;
|
|
16
|
+
private citationSnapshotTarget;
|
|
17
|
+
/**
|
|
18
|
+
* Persist a resolved-citation snapshot as machine-local evidence, addressed by
|
|
19
|
+
* its resolver-minted `evidenceId`. Enforces the same sensitivity ceiling as
|
|
20
|
+
* collected evidence and refuses to persist any content that still matches a
|
|
21
|
+
* secret pattern — the snapshot is redacted upstream, and this is the
|
|
22
|
+
* fail-closed guard that keeps a raw secret off disk. Returns the `evidenceId`.
|
|
23
|
+
*/
|
|
24
|
+
putCitationSnapshot(input: CitationSnapshotInput, ttlMs: number, now?: Date): Promise<string>;
|
|
25
|
+
/** Read back a resolved-citation snapshot by its `evidenceId`, honouring TTL and the sensitivity ceiling. */
|
|
26
|
+
getCitationSnapshot(evidenceId: string, now?: Date): Promise<{
|
|
27
|
+
content: string;
|
|
28
|
+
sensitivity: OperatingSensitivity;
|
|
29
|
+
sourceLocation: string;
|
|
30
|
+
} | undefined>;
|
|
7
31
|
get(digest: string, now?: Date): Promise<OperatingEvidence | undefined>;
|
|
8
32
|
status(now?: Date): Promise<{
|
|
9
33
|
entries: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evidence-cache.d.ts","sourceRoot":"","sources":["../../../src/services/operate/evidence-cache.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"evidence-cache.d.ts","sourceRoot":"","sources":["../../../src/services/operate/evidence-cache.ts"],"names":[],"mappings":"AAIA,OAAO,EAAgB,KAAK,iBAAiB,EAAE,KAAK,oBAAoB,EAAE,MAAM,YAAY,CAAC;AA+B7F,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,cAAc,EAAE,UAAU,MAAM,EAAE,CAAC;IACnC,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,oBAAoB,CAAC;IAClC,4FAA4F;IAC5F,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,sBAAsB;IAE/B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,kBAAkB;gBADlB,SAAS,EAAE,MAAM,EACjB,kBAAkB,EAAE,oBAAoB;IAGrD,GAAG,CACP,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,iBAAiB,EAC3B,KAAK,EAAE,MAAM,EACb,GAAG,OAAa,GACf,OAAO,CAAC,MAAM,CAAC;IAqBlB,OAAO,CAAC,sBAAsB;IAO9B;;;;;;OAMG;IACG,mBAAmB,CACvB,KAAK,EAAE,qBAAqB,EAC5B,KAAK,EAAE,MAAM,EACb,GAAG,OAAa,GACf,OAAO,CAAC,MAAM,CAAC;IA2BlB,6GAA6G;IACvG,mBAAmB,CACvB,UAAU,EAAE,MAAM,EAClB,GAAG,OAAa,GACf,OAAO,CACR;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,oBAAoB,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAC3F;IA2BK,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAa,GAAG,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC;IAuB7E,MAAM,CAAC,GAAG,OAAa,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAmBtF,YAAY,CAAC,GAAG,OAAa,EAAE,OAAO,GAAE;QAAE,GAAG,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;CAkBzF"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { mkdir, readdir, readFile, rename, unlink, writeFile } from 'node:fs/promises';
|
|
2
2
|
import path from 'node:path';
|
|
3
3
|
import { canonicalDigest, canonicalize } from './canonical.js';
|
|
4
|
-
import { assertSensitivityAllowed, maximumSensitivity } from './redaction.js';
|
|
4
|
+
import { assertSensitivityAllowed, containsSecret, maximumSensitivity } from './redaction.js';
|
|
5
|
+
import { OperateError } from './types.js';
|
|
5
6
|
export class OperatingEvidenceCache {
|
|
6
7
|
cacheRoot;
|
|
7
8
|
sensitivityCeiling;
|
|
@@ -29,6 +30,66 @@ export class OperatingEvidenceCache {
|
|
|
29
30
|
await rename(temporary, target);
|
|
30
31
|
return digest;
|
|
31
32
|
}
|
|
33
|
+
citationSnapshotTarget(evidenceId) {
|
|
34
|
+
return path.join(this.cacheRoot, `citation-${canonicalDigest(evidenceId).slice('sha256:'.length)}.json`);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Persist a resolved-citation snapshot as machine-local evidence, addressed by
|
|
38
|
+
* its resolver-minted `evidenceId`. Enforces the same sensitivity ceiling as
|
|
39
|
+
* collected evidence and refuses to persist any content that still matches a
|
|
40
|
+
* secret pattern — the snapshot is redacted upstream, and this is the
|
|
41
|
+
* fail-closed guard that keeps a raw secret off disk. Returns the `evidenceId`.
|
|
42
|
+
*/
|
|
43
|
+
async putCitationSnapshot(input, ttlMs, now = new Date()) {
|
|
44
|
+
assertSensitivityAllowed(input.sensitivity, this.sensitivityCeiling);
|
|
45
|
+
if (containsSecret(input.content)) {
|
|
46
|
+
throw new OperateError('E_OPERATE_SECRET_DETECTED', 'A citation snapshot must be redacted before it is persisted to machine-local evidence.');
|
|
47
|
+
}
|
|
48
|
+
const record = {
|
|
49
|
+
implementation: 'openplanr-operate-citation-snapshot',
|
|
50
|
+
evidenceId: input.evidenceId,
|
|
51
|
+
citationKey: input.citationKey ?? null,
|
|
52
|
+
snapshotDigest: input.snapshotDigest,
|
|
53
|
+
sourceLocation: input.sourceLocation,
|
|
54
|
+
createdAt: now.toISOString(),
|
|
55
|
+
expiresAt: new Date(now.getTime() + ttlMs).toISOString(),
|
|
56
|
+
sensitivity: input.sensitivity,
|
|
57
|
+
content: input.content,
|
|
58
|
+
};
|
|
59
|
+
await mkdir(this.cacheRoot, { recursive: true, mode: 0o700 });
|
|
60
|
+
const target = this.citationSnapshotTarget(input.evidenceId);
|
|
61
|
+
const temporary = `${target}.${process.pid}.tmp`;
|
|
62
|
+
await writeFile(temporary, `${canonicalize(record)}\n`, { mode: 0o600 });
|
|
63
|
+
await rename(temporary, target);
|
|
64
|
+
return input.evidenceId;
|
|
65
|
+
}
|
|
66
|
+
/** Read back a resolved-citation snapshot by its `evidenceId`, honouring TTL and the sensitivity ceiling. */
|
|
67
|
+
async getCitationSnapshot(evidenceId, now = new Date()) {
|
|
68
|
+
const target = this.citationSnapshotTarget(evidenceId);
|
|
69
|
+
let record;
|
|
70
|
+
try {
|
|
71
|
+
record = JSON.parse(await readFile(target, 'utf8'));
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
if (error.code === 'ENOENT')
|
|
75
|
+
return undefined;
|
|
76
|
+
throw error;
|
|
77
|
+
}
|
|
78
|
+
if (record.implementation !== 'openplanr-operate-citation-snapshot' ||
|
|
79
|
+
record.evidenceId !== evidenceId) {
|
|
80
|
+
return undefined;
|
|
81
|
+
}
|
|
82
|
+
if (Date.parse(record.expiresAt) <= now.getTime()) {
|
|
83
|
+
await unlink(target).catch(() => undefined);
|
|
84
|
+
return undefined;
|
|
85
|
+
}
|
|
86
|
+
assertSensitivityAllowed(record.sensitivity, this.sensitivityCeiling);
|
|
87
|
+
return {
|
|
88
|
+
content: record.content,
|
|
89
|
+
sensitivity: record.sensitivity,
|
|
90
|
+
sourceLocation: record.sourceLocation,
|
|
91
|
+
};
|
|
92
|
+
}
|
|
32
93
|
async get(digest, now = new Date()) {
|
|
33
94
|
const target = path.join(this.cacheRoot, `${digest}.json`);
|
|
34
95
|
let record;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evidence-cache.js","sourceRoot":"","sources":["../../../src/services/operate/evidence-cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvF,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"evidence-cache.js","sourceRoot":"","sources":["../../../src/services/operate/evidence-cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type ReadOnlyFetch } from './read-only-providers.js';
|
|
2
|
-
import { type CollectedEvidenceItem, type EvidenceBudget, type OperatingDataGap, type OperatingEvidence, type OperatingEvidenceItem, type OperatingSensitivity, type OperatingWorkspaceManifest } from './types.js';
|
|
2
|
+
import { type CollectedEvidenceItem, type EvidenceBudget, type OperatingDataGap, type OperatingEvidence, type OperatingEvidenceIndexItem, type OperatingEvidenceItem, type OperatingSensitivity, type OperatingWorkspaceManifest } from './types.js';
|
|
3
3
|
export interface EvidenceCollectionInput {
|
|
4
4
|
projectRoot: string;
|
|
5
5
|
cycleId: string;
|
|
@@ -68,4 +68,23 @@ export declare function evidenceProjectionSources(evidence: OperatingEvidence):
|
|
|
68
68
|
status: string;
|
|
69
69
|
itemCount: number;
|
|
70
70
|
}>;
|
|
71
|
+
/**
|
|
72
|
+
* Build Protocol v1.3 evidence index items (`operating-evidence-index-item@1.3.0`)
|
|
73
|
+
* from a collected evidence snapshot for mission-mode dispatch. Each item is a
|
|
74
|
+
* pointer only — path OR revision, content hash, source, classification,
|
|
75
|
+
* freshness, sensitivity, and detected signals — and carries NO file body. Git
|
|
76
|
+
* evidence is referenced by its pinned revision; repository/planr/file-import
|
|
77
|
+
* evidence by its repository-relative path. Items that cannot be represented as
|
|
78
|
+
* a schema-valid path or revision pointer (github/linear records, dot-prefixed
|
|
79
|
+
* planr paths) are omitted from the index rather than emitted malformed.
|
|
80
|
+
*/
|
|
81
|
+
export declare function buildOperatingEvidenceIndex(evidence: OperatingEvidence, options?: {
|
|
82
|
+
sensitivityCeiling?: OperatingSensitivity;
|
|
83
|
+
}): OperatingEvidenceIndexItem[];
|
|
84
|
+
/**
|
|
85
|
+
* The read roots a mission agent may traverse, derived from the top-level
|
|
86
|
+
* directory segment of every path-referenced index item. Schema-valid and
|
|
87
|
+
* deduplicated; empty when the index carries only revision pointers.
|
|
88
|
+
*/
|
|
89
|
+
export declare function deriveOperatingDeclaredRoots(index: readonly OperatingEvidenceIndexItem[]): string[];
|
|
71
90
|
//# sourceMappingURL=evidence.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evidence.d.ts","sourceRoot":"","sources":["../../../src/services/operate/evidence.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"evidence.d.ts","sourceRoot":"","sources":["../../../src/services/operate/evidence.ts"],"names":[],"mappings":"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"}
|
|
@@ -1063,4 +1063,123 @@ export function evidenceProjectionSources(evidence) {
|
|
|
1063
1063
|
itemCount: source.itemCount,
|
|
1064
1064
|
}));
|
|
1065
1065
|
}
|
|
1066
|
+
// The Protocol v1.3 index-item schema pins these patterns; every index item we
|
|
1067
|
+
// emit must satisfy them or the pipeline's mission-packet validator fails
|
|
1068
|
+
// closed. Building here — rather than trusting the caller — keeps a malformed
|
|
1069
|
+
// path or revision out of a dispatched packet.
|
|
1070
|
+
const INDEX_PATH_PATTERN = /^(?!.*\.\.)[A-Za-z0-9][A-Za-z0-9._/-]*$/;
|
|
1071
|
+
const INDEX_REVISION_PATTERN = /^[a-f0-9]{7,64}$/;
|
|
1072
|
+
const INDEX_SOURCE_CLASSIFICATION = {
|
|
1073
|
+
repository: 'source-code',
|
|
1074
|
+
planr: 'planning-artifact',
|
|
1075
|
+
git: 'change-history',
|
|
1076
|
+
'file-import': 'imported-record',
|
|
1077
|
+
github: 'integration-record',
|
|
1078
|
+
linear: 'integration-record',
|
|
1079
|
+
};
|
|
1080
|
+
/**
|
|
1081
|
+
* Derive a stable, schema-conformant index-item id (`EVX-…`) from the source
|
|
1082
|
+
* evidence id. The evidence ids are unique, so the derived ids are too.
|
|
1083
|
+
*/
|
|
1084
|
+
function evidenceIndexItemId(evidenceId) {
|
|
1085
|
+
return `EVX-${canonicalDigest(evidenceId).slice('sha256:'.length, 27)}`;
|
|
1086
|
+
}
|
|
1087
|
+
/**
|
|
1088
|
+
* Strip the leading component id from an evidence `location`
|
|
1089
|
+
* (`<componentId>/<relativePath>`) to recover the repository-relative path, or
|
|
1090
|
+
* return null when the result cannot be a schema-valid index path (for example
|
|
1091
|
+
* dot-prefixed `.planr/…` paths, which the pattern forbids).
|
|
1092
|
+
*/
|
|
1093
|
+
function evidenceIndexPath(location) {
|
|
1094
|
+
const relative = location.split('/').slice(1).join('/');
|
|
1095
|
+
return relative && INDEX_PATH_PATTERN.test(relative) ? relative : null;
|
|
1096
|
+
}
|
|
1097
|
+
function evidenceIndexSignals(item) {
|
|
1098
|
+
const signals = new Set();
|
|
1099
|
+
for (const claim of item.claimTypes) {
|
|
1100
|
+
const trimmed = claim.trim();
|
|
1101
|
+
if (trimmed)
|
|
1102
|
+
signals.add(trimmed.slice(0, 256));
|
|
1103
|
+
}
|
|
1104
|
+
if (item.freshness === 'stale')
|
|
1105
|
+
signals.add('stale-evidence');
|
|
1106
|
+
if (item.repository?.dirtyFingerprint)
|
|
1107
|
+
signals.add('uncommitted-working-tree');
|
|
1108
|
+
return [...signals].sort();
|
|
1109
|
+
}
|
|
1110
|
+
/**
|
|
1111
|
+
* Build Protocol v1.3 evidence index items (`operating-evidence-index-item@1.3.0`)
|
|
1112
|
+
* from a collected evidence snapshot for mission-mode dispatch. Each item is a
|
|
1113
|
+
* pointer only — path OR revision, content hash, source, classification,
|
|
1114
|
+
* freshness, sensitivity, and detected signals — and carries NO file body. Git
|
|
1115
|
+
* evidence is referenced by its pinned revision; repository/planr/file-import
|
|
1116
|
+
* evidence by its repository-relative path. Items that cannot be represented as
|
|
1117
|
+
* a schema-valid path or revision pointer (github/linear records, dot-prefixed
|
|
1118
|
+
* planr paths) are omitted from the index rather than emitted malformed.
|
|
1119
|
+
*/
|
|
1120
|
+
export function buildOperatingEvidenceIndex(evidence, options = {}) {
|
|
1121
|
+
const seen = new Set();
|
|
1122
|
+
const items = [];
|
|
1123
|
+
for (const item of evidence.items) {
|
|
1124
|
+
if (options.sensitivityCeiling &&
|
|
1125
|
+
compareSensitivity(item.sensitivity, options.sensitivityCeiling) > 0) {
|
|
1126
|
+
continue;
|
|
1127
|
+
}
|
|
1128
|
+
const source = item.source;
|
|
1129
|
+
const classification = INDEX_SOURCE_CLASSIFICATION[source];
|
|
1130
|
+
if (!classification)
|
|
1131
|
+
continue;
|
|
1132
|
+
const base = {
|
|
1133
|
+
id: evidenceIndexItemId(item.id),
|
|
1134
|
+
contentHash: item.digest,
|
|
1135
|
+
source,
|
|
1136
|
+
classification,
|
|
1137
|
+
freshness: item.freshness,
|
|
1138
|
+
sensitivity: item.sensitivity,
|
|
1139
|
+
signals: evidenceIndexSignals(item),
|
|
1140
|
+
};
|
|
1141
|
+
if (seen.has(base.id))
|
|
1142
|
+
continue;
|
|
1143
|
+
if (source === 'git') {
|
|
1144
|
+
const revision = item.repository?.revision;
|
|
1145
|
+
if (revision && INDEX_REVISION_PATTERN.test(revision)) {
|
|
1146
|
+
seen.add(base.id);
|
|
1147
|
+
items.push({ ...base, revision });
|
|
1148
|
+
}
|
|
1149
|
+
continue;
|
|
1150
|
+
}
|
|
1151
|
+
if (source === 'repository' || source === 'planr' || source === 'file-import') {
|
|
1152
|
+
const relativePath = evidenceIndexPath(item.location);
|
|
1153
|
+
if (relativePath) {
|
|
1154
|
+
seen.add(base.id);
|
|
1155
|
+
items.push({ ...base, path: relativePath });
|
|
1156
|
+
}
|
|
1157
|
+
}
|
|
1158
|
+
}
|
|
1159
|
+
return items.sort((left, right) => {
|
|
1160
|
+
if (left.source !== right.source)
|
|
1161
|
+
return left.source < right.source ? -1 : 1;
|
|
1162
|
+
const leftRef = left.path ?? left.revision ?? '';
|
|
1163
|
+
const rightRef = right.path ?? right.revision ?? '';
|
|
1164
|
+
if (leftRef !== rightRef)
|
|
1165
|
+
return leftRef < rightRef ? -1 : 1;
|
|
1166
|
+
return left.id < right.id ? -1 : left.id > right.id ? 1 : 0;
|
|
1167
|
+
});
|
|
1168
|
+
}
|
|
1169
|
+
/**
|
|
1170
|
+
* The read roots a mission agent may traverse, derived from the top-level
|
|
1171
|
+
* directory segment of every path-referenced index item. Schema-valid and
|
|
1172
|
+
* deduplicated; empty when the index carries only revision pointers.
|
|
1173
|
+
*/
|
|
1174
|
+
export function deriveOperatingDeclaredRoots(index) {
|
|
1175
|
+
const roots = new Set();
|
|
1176
|
+
for (const item of index) {
|
|
1177
|
+
if (!item.path)
|
|
1178
|
+
continue;
|
|
1179
|
+
const top = item.path.split('/')[0];
|
|
1180
|
+
if (top && INDEX_PATH_PATTERN.test(top))
|
|
1181
|
+
roots.add(top);
|
|
1182
|
+
}
|
|
1183
|
+
return [...roots].sort();
|
|
1184
|
+
}
|
|
1066
1185
|
//# sourceMappingURL=evidence.js.map
|