pm-context 2026.10.21 → 2026.10.24
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 +24 -0
- package/README.md +83 -1
- package/dist/context-receipts.d.ts +9 -2
- package/dist/context-receipts.d.ts.map +1 -1
- package/dist/context-receipts.js +14 -9
- package/dist/context-receipts.js.map +1 -1
- package/dist/evidence-packing.d.ts +68 -0
- package/dist/evidence-packing.d.ts.map +1 -0
- package/dist/evidence-packing.js +146 -0
- package/dist/evidence-packing.js.map +1 -0
- package/dist/file-focus.d.ts +1 -1
- package/dist/file-focus.d.ts.map +1 -1
- package/dist/file-focus.js +7 -2
- package/dist/file-focus.js.map +1 -1
- package/dist/freshness.d.ts +82 -0
- package/dist/freshness.d.ts.map +1 -0
- package/dist/freshness.js +299 -0
- package/dist/freshness.js.map +1 -0
- package/dist/index.d.ts +18 -72
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +125 -100
- package/dist/index.js.map +1 -1
- package/dist/since.d.ts +105 -0
- package/dist/since.d.ts.map +1 -0
- package/dist/since.js +593 -0
- package/dist/since.js.map +1 -0
- package/dist/witnesses.d.ts +56 -0
- package/dist/witnesses.d.ts.map +1 -0
- package/dist/witnesses.js +121 -0
- package/dist/witnesses.js.map +1 -0
- package/manifest.json +2 -2
- package/package.json +5 -5
package/dist/file-focus.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-focus.js","sourceRoot":"","sources":["../file-focus.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"file-focus.js","sourceRoot":"","sources":["../file-focus.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { PmCliError } from "@unbrained/pm-cli/sdk";
|
|
2
|
+
/** Hard ceilings for untrusted packet inputs and agent-sized resume output. */
|
|
3
|
+
export declare const FRESHNESS_LIMITS: {
|
|
4
|
+
readonly input_bytes: 262144;
|
|
5
|
+
readonly sections: 256;
|
|
6
|
+
readonly sources: 1024;
|
|
7
|
+
readonly evidence_bytes: 8388608;
|
|
8
|
+
};
|
|
9
|
+
/** A source projection; omitted fields mean the complete authoritative item/settings. */
|
|
10
|
+
export type FreshnessSource = {
|
|
11
|
+
kind: "item";
|
|
12
|
+
id: string;
|
|
13
|
+
fields?: string[];
|
|
14
|
+
} | {
|
|
15
|
+
kind: "settings";
|
|
16
|
+
fields?: string[];
|
|
17
|
+
} | {
|
|
18
|
+
kind: "evidence";
|
|
19
|
+
path: string;
|
|
20
|
+
};
|
|
21
|
+
/** One assumption unit, with explicit source and transitive section dependencies. */
|
|
22
|
+
export interface FreshnessSection {
|
|
23
|
+
id: string;
|
|
24
|
+
content: string;
|
|
25
|
+
sources: FreshnessSource[];
|
|
26
|
+
depends_on: string[];
|
|
27
|
+
}
|
|
28
|
+
/** Producer-owned packet; content and dependency declarations are bound together. */
|
|
29
|
+
export interface FreshnessPacket {
|
|
30
|
+
sections: FreshnessSection[];
|
|
31
|
+
}
|
|
32
|
+
/** Backend adapter: return authoritative JSON-compatible values or reject unavailable reads. */
|
|
33
|
+
export type FreshnessReader = (source: FreshnessSource) => Promise<unknown>;
|
|
34
|
+
/** Source coordinates and canonical SHA-256 digests, with no item/evidence contents. */
|
|
35
|
+
export interface FreshnessManifest {
|
|
36
|
+
protocol: "pm-context-freshness/v1";
|
|
37
|
+
packet_digest: string;
|
|
38
|
+
sources: Array<{
|
|
39
|
+
source: FreshnessSource;
|
|
40
|
+
digest: string;
|
|
41
|
+
}>;
|
|
42
|
+
}
|
|
43
|
+
/** Invalidated assumptions only; unchanged sections are represented by their count. */
|
|
44
|
+
export interface FreshnessResult {
|
|
45
|
+
protocol: "pm-context-freshness/v1";
|
|
46
|
+
packet_digest: string;
|
|
47
|
+
code: "FRESH" | "STALE" | "SOURCE_UNAVAILABLE";
|
|
48
|
+
reusable: boolean;
|
|
49
|
+
checked_sources: number;
|
|
50
|
+
unchanged_sections: number;
|
|
51
|
+
invalidated_sections: number;
|
|
52
|
+
unavailable_sources: number;
|
|
53
|
+
invalidated: Array<{
|
|
54
|
+
section: string;
|
|
55
|
+
causes: string[];
|
|
56
|
+
}>;
|
|
57
|
+
omitted_sections: number;
|
|
58
|
+
remedy: string;
|
|
59
|
+
}
|
|
60
|
+
/** Expected refusals never include underlying paths, source values or exception messages. */
|
|
61
|
+
export declare class FreshnessError extends PmCliError {
|
|
62
|
+
/** Stable SDK and CLI refusal category. */
|
|
63
|
+
readonly code: "INVALID_PACKET" | "INVALID_MANIFEST" | "INVALID_ARGUMENT" | "INPUT_UNAVAILABLE" | "SOURCE_UNAVAILABLE" | "BUDGET_TOO_SMALL";
|
|
64
|
+
/** Concrete recovery action safe to expose in a public receipt. */
|
|
65
|
+
readonly remedy: string;
|
|
66
|
+
constructor(code: FreshnessError["code"], remedy: string);
|
|
67
|
+
}
|
|
68
|
+
/** Reject oversized, cyclic, duplicate or disconnected declarations before reading sources. */
|
|
69
|
+
export declare function parseFreshnessPacket(value: unknown): FreshnessPacket;
|
|
70
|
+
/** Capture digests at packet production time; a partial baseline is never accepted. */
|
|
71
|
+
export declare function recordFreshness(packet: FreshnessPacket, read: FreshnessReader): Promise<FreshnessManifest>;
|
|
72
|
+
/** Validate only declared assumptions; missing reads fail closed and propagate like changes. */
|
|
73
|
+
export declare function resumeFreshness(packet: FreshnessPacket, manifest: FreshnessManifest, read: FreshnessReader): Promise<FreshnessResult>;
|
|
74
|
+
/** Bound a complete JSON or compact TOON response; omission never implies safe reuse. */
|
|
75
|
+
export declare function encodeFreshness(result: FreshnessResult | FreshnessManifest, format: "json" | "toon", budget: number): string;
|
|
76
|
+
/** Read finite regular files only; reject links, devices, permissions and concurrent edits. */
|
|
77
|
+
export declare function readFreshnessFile(path: string, limit?: number): Buffer;
|
|
78
|
+
/** Decode a bounded input without exposing parser excerpts or local paths. */
|
|
79
|
+
export declare function readFreshnessJson(path: string): unknown;
|
|
80
|
+
/** Stateless authoritative SDK reads; reusing an adapter never reuses an earlier source value. */
|
|
81
|
+
export declare function createFreshnessReader(pmRoot: string, evidenceRoot: string): FreshnessReader;
|
|
82
|
+
//# sourceMappingURL=freshness.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"freshness.d.ts","sourceRoot":"","sources":["../freshness.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
/** Portable assumption validation; manifests contain digests, never source snapshots. */
|
|
2
|
+
import { isUtf8 } from "node:buffer";
|
|
3
|
+
import { createHash } from "node:crypto";
|
|
4
|
+
import { constants, closeSync, fstatSync, openSync, readSync, realpathSync } from "node:fs";
|
|
5
|
+
import { dirname, isAbsolute, relative, resolve, sep } from "node:path";
|
|
6
|
+
import { PmCliError, readSettingsWithMetadata, locateItem, readLocatedItem, resolveItemTypeRegistry } from "@unbrained/pm-cli/sdk";
|
|
7
|
+
/** Hard ceilings for untrusted packet inputs and agent-sized resume output. */
|
|
8
|
+
export const FRESHNESS_LIMITS = { input_bytes: 262144, sections: 256, sources: 1024, evidence_bytes: 8388608 };
|
|
9
|
+
/** Expected refusals never include underlying paths, source values or exception messages. */
|
|
10
|
+
export class FreshnessError extends PmCliError {
|
|
11
|
+
/** Concrete recovery action safe to expose in a public receipt. */
|
|
12
|
+
remedy;
|
|
13
|
+
constructor(code, remedy) {
|
|
14
|
+
super(`${code}: ${remedy}`, 2, { code, nextSteps: [remedy] });
|
|
15
|
+
this.remedy = remedy;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
/** Canonicalize object keys recursively; array order remains semantically significant. */
|
|
19
|
+
function canonical(value) {
|
|
20
|
+
if (Array.isArray(value))
|
|
21
|
+
return `[${value.map(canonical).join(",")}]`;
|
|
22
|
+
if (value !== null && typeof value === "object")
|
|
23
|
+
return `{${Object.keys(value).filter((key) => value[key] !== undefined).sort().map((key) => `${JSON.stringify(key)}:${canonical(value[key])}`).join(",")}}`;
|
|
24
|
+
const encoded = JSON.stringify(value);
|
|
25
|
+
if (encoded === undefined)
|
|
26
|
+
throw new FreshnessError("SOURCE_UNAVAILABLE", "Read a complete JSON-compatible source and record a new manifest.");
|
|
27
|
+
return encoded;
|
|
28
|
+
}
|
|
29
|
+
/** Hash values independent of property insertion order and process locale. */
|
|
30
|
+
function digest(value) { return createHash("sha256").update(canonical(value)).digest("hex"); }
|
|
31
|
+
/** Require plain JSON objects at untrusted protocol boundaries. */
|
|
32
|
+
function object(value) { return value !== null && typeof value === "object" && !Array.isArray(value); }
|
|
33
|
+
/** Restrict public coordinates to bounded, printable identifiers. */
|
|
34
|
+
function identifier(value) { return typeof value === "string" && /^[a-zA-Z0-9][a-zA-Z0-9_.:-]{0,127}$/.test(value); }
|
|
35
|
+
/** Evidence paths are portable relative coordinates, never URLs or parent traversal. */
|
|
36
|
+
function evidencePath(value) {
|
|
37
|
+
return typeof value === "string" && value.length > 0 && value.length <= 512 && !isAbsolute(value) && !/[\\:\x00-\x1f\x7f]/.test(value) && value.split("/").every((part) => part !== "" && part !== "." && part !== "..");
|
|
38
|
+
}
|
|
39
|
+
/** Reject unknown fields so producers cannot silently rely on unvalidated semantics. */
|
|
40
|
+
function keys(value, allowed) { return Object.keys(value).every((key) => allowed.includes(key)); }
|
|
41
|
+
/** Validate every source coordinate before any adapter or filesystem access. */
|
|
42
|
+
function sourceValid(value) {
|
|
43
|
+
if (!object(value))
|
|
44
|
+
return false;
|
|
45
|
+
if (value.kind === "evidence")
|
|
46
|
+
return keys(value, ["kind", "path"]) && evidencePath(value.path);
|
|
47
|
+
if (value.kind !== "item" && value.kind !== "settings")
|
|
48
|
+
return false;
|
|
49
|
+
if (!keys(value, ["kind", ...(value.kind === "item" ? ["id"] : []), "fields"]) || (value.kind === "item" && !identifier(value.id)))
|
|
50
|
+
return false;
|
|
51
|
+
return value.fields === undefined || (Array.isArray(value.fields) && value.fields.length > 0 && value.fields.length <= 64 && value.fields.every(identifier) && new Set(value.fields).size === value.fields.length);
|
|
52
|
+
}
|
|
53
|
+
/** Canonical source key includes the exact field projection; no delimiter ambiguity. */
|
|
54
|
+
function sourceKey(source) { return canonical(source); }
|
|
55
|
+
/** Reject oversized, cyclic, duplicate or disconnected declarations before reading sources. */
|
|
56
|
+
export function parseFreshnessPacket(value) {
|
|
57
|
+
const fail = () => new FreshnessError("INVALID_PACKET", "Supply 1-256 uniquely named sections with content, sources and acyclic depends_on; use item/settings fields or relative evidence paths.");
|
|
58
|
+
let size;
|
|
59
|
+
try {
|
|
60
|
+
size = Buffer.byteLength(JSON.stringify(value) ?? "");
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
throw fail();
|
|
64
|
+
}
|
|
65
|
+
if (size > FRESHNESS_LIMITS.input_bytes || !object(value) || !keys(value, ["sections"]) || !Array.isArray(value.sections) || value.sections.length === 0 || value.sections.length > FRESHNESS_LIMITS.sections)
|
|
66
|
+
throw fail();
|
|
67
|
+
const sections = value.sections;
|
|
68
|
+
const ids = new Set();
|
|
69
|
+
for (const section of sections) {
|
|
70
|
+
if (!object(section) || !keys(section, ["id", "content", "sources", "depends_on"]) || !identifier(section.id) || ids.has(section.id) || typeof section.content !== "string" || !Array.isArray(section.sources) || !section.sources.every(sourceValid) || !Array.isArray(section.depends_on) || !section.depends_on.every(identifier) || new Set(section.depends_on).size !== section.depends_on.length || section.sources.length + section.depends_on.length === 0)
|
|
71
|
+
throw fail();
|
|
72
|
+
ids.add(section.id);
|
|
73
|
+
}
|
|
74
|
+
const packet = value;
|
|
75
|
+
const sectionsById = new Map(packet.sections.map((section) => [section.id, section]));
|
|
76
|
+
const done = new Set();
|
|
77
|
+
const visiting = new Set();
|
|
78
|
+
/** A depth-first check bounds dependency traversal by the declared section ceiling. */
|
|
79
|
+
function visit(id) {
|
|
80
|
+
if (done.has(id))
|
|
81
|
+
return;
|
|
82
|
+
if (visiting.has(id) || !ids.has(id))
|
|
83
|
+
throw fail();
|
|
84
|
+
visiting.add(id);
|
|
85
|
+
for (const dep of sectionsById.get(id).depends_on)
|
|
86
|
+
visit(dep);
|
|
87
|
+
visiting.delete(id);
|
|
88
|
+
done.add(id);
|
|
89
|
+
}
|
|
90
|
+
for (const id of ids)
|
|
91
|
+
visit(id);
|
|
92
|
+
if (uniqueSources(packet).length > FRESHNESS_LIMITS.sources)
|
|
93
|
+
throw fail();
|
|
94
|
+
return packet;
|
|
95
|
+
}
|
|
96
|
+
/** Share identical source reads between sections without introducing persistent caches. */
|
|
97
|
+
function uniqueSources(packet) { return [...new Map(packet.sections.flatMap((section) => section.sources).map((source) => [sourceKey(source), source])).values()]; }
|
|
98
|
+
/** Capture digests at packet production time; a partial baseline is never accepted. */
|
|
99
|
+
export async function recordFreshness(packet, read) {
|
|
100
|
+
parseFreshnessPacket(packet);
|
|
101
|
+
const sources = [];
|
|
102
|
+
for (const source of uniqueSources(packet)) {
|
|
103
|
+
try {
|
|
104
|
+
sources.push({ source, digest: digest(await read(source)) });
|
|
105
|
+
}
|
|
106
|
+
catch {
|
|
107
|
+
throw new FreshnessError("SOURCE_UNAVAILABLE", "Restore source access and regenerate the packet and manifest together; no reusable baseline was recorded.");
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return { protocol: "pm-context-freshness/v1", packet_digest: digest(packet), sources };
|
|
111
|
+
}
|
|
112
|
+
/** Validate both manifest shape and complete correspondence with the supplied packet. */
|
|
113
|
+
function manifestFor(value, packet) {
|
|
114
|
+
const fail = () => new FreshnessError("INVALID_MANIFEST", "Use the original packet with its complete manifest, or regenerate both; a manifest is an integrity receipt, not an authentication signature.");
|
|
115
|
+
if (!object(value) || !keys(value, ["protocol", "packet_digest", "sources"]) || value.protocol !== "pm-context-freshness/v1" || value.packet_digest !== digest(packet) || !Array.isArray(value.sources) || value.sources.length > FRESHNESS_LIMITS.sources)
|
|
116
|
+
throw fail();
|
|
117
|
+
const expected = uniqueSources(packet).map(sourceKey).sort();
|
|
118
|
+
const actual = [];
|
|
119
|
+
for (const entry of value.sources) {
|
|
120
|
+
if (!object(entry) || !keys(entry, ["source", "digest"]) || !sourceValid(entry.source) || typeof entry.digest !== "string" || !/^[a-f0-9]{64}$/.test(entry.digest))
|
|
121
|
+
throw fail();
|
|
122
|
+
actual.push(sourceKey(entry.source));
|
|
123
|
+
}
|
|
124
|
+
if (JSON.stringify(expected) !== JSON.stringify(actual.sort()))
|
|
125
|
+
throw fail();
|
|
126
|
+
return value;
|
|
127
|
+
}
|
|
128
|
+
/** Validate only declared assumptions; missing reads fail closed and propagate like changes. */
|
|
129
|
+
export async function resumeFreshness(packet, manifest, read) {
|
|
130
|
+
parseFreshnessPacket(packet);
|
|
131
|
+
const baseline = manifestFor(manifest, packet);
|
|
132
|
+
const changed = new Map();
|
|
133
|
+
let unavailable = 0;
|
|
134
|
+
for (const entry of baseline.sources) {
|
|
135
|
+
const key = sourceKey(entry.source);
|
|
136
|
+
try {
|
|
137
|
+
if (digest(await read(entry.source)) !== entry.digest)
|
|
138
|
+
changed.set(key, `changed:${key}`);
|
|
139
|
+
}
|
|
140
|
+
catch {
|
|
141
|
+
unavailable++;
|
|
142
|
+
changed.set(key, `unavailable:${key}`);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
const sectionsById = new Map(packet.sections.map((section) => [section.id, section]));
|
|
146
|
+
const causes = new Map();
|
|
147
|
+
/** Memoize transitive causes once so shared and diamond dependencies stay deterministic. */
|
|
148
|
+
function reasons(id) {
|
|
149
|
+
const existing = causes.get(id);
|
|
150
|
+
if (existing)
|
|
151
|
+
return existing;
|
|
152
|
+
const section = sectionsById.get(id);
|
|
153
|
+
const result = new Set(section.sources.map((source) => changed.get(sourceKey(source))).filter((cause) => cause !== undefined));
|
|
154
|
+
for (const dep of section.depends_on)
|
|
155
|
+
for (const cause of reasons(dep))
|
|
156
|
+
result.add(cause);
|
|
157
|
+
causes.set(id, result);
|
|
158
|
+
return result;
|
|
159
|
+
}
|
|
160
|
+
const invalidated = packet.sections.map((section) => ({ section: section.id, causes: [...reasons(section.id)].sort() })).filter((row) => row.causes.length > 0);
|
|
161
|
+
return {
|
|
162
|
+
protocol: "pm-context-freshness/v1", packet_digest: baseline.packet_digest,
|
|
163
|
+
code: unavailable > 0 ? "SOURCE_UNAVAILABLE" : invalidated.length > 0 ? "STALE" : "FRESH",
|
|
164
|
+
reusable: invalidated.length === 0, checked_sources: baseline.sources.length,
|
|
165
|
+
unchanged_sections: packet.sections.length - invalidated.length, invalidated_sections: invalidated.length,
|
|
166
|
+
unavailable_sources: unavailable, invalidated, omitted_sections: 0,
|
|
167
|
+
remedy: unavailable > 0 ? "Restore missing, unreadable or corrupt sources, regenerate invalidated sections and record a new manifest. Do not reuse the packet." : invalidated.length > 0 ? "Regenerate invalidated sections and record a new manifest; retain unchanged sections." : "Reuse this packet for the declared sources at this read boundary; revalidate after later changes.",
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
/** Bound a complete JSON or compact TOON response; omission never implies safe reuse. */
|
|
171
|
+
export function encodeFreshness(result, format, budget) {
|
|
172
|
+
if (!Number.isSafeInteger(budget) || budget < 512)
|
|
173
|
+
throw new FreshnessError("INVALID_ARGUMENT", "Use an integer --byte-budget of at least 512 and --format json or toon.");
|
|
174
|
+
const value = structuredClone(result);
|
|
175
|
+
/** TOON's quoted scalars permit lossless identifiers and Unicode without bespoke escaping. */
|
|
176
|
+
function encode() {
|
|
177
|
+
if (format === "json")
|
|
178
|
+
return `${JSON.stringify(value)}\n`;
|
|
179
|
+
// A small schema-specific TOON projection; nested protocol data remains proper TOON lists.
|
|
180
|
+
const { invalidated, ...summary } = value;
|
|
181
|
+
const lines = Object.entries(summary).map(([key, field]) => `${key}: ${JSON.stringify(field)}`);
|
|
182
|
+
lines.push(`invalidated[${invalidated.length}]:`);
|
|
183
|
+
for (const row of invalidated) {
|
|
184
|
+
lines.push(` - section: ${JSON.stringify(row.section)}`);
|
|
185
|
+
lines.push(` causes[${row.causes.length}]: ${row.causes.map((cause) => JSON.stringify(cause)).join(",")}`);
|
|
186
|
+
}
|
|
187
|
+
return `${lines.join("\n")}\n`;
|
|
188
|
+
}
|
|
189
|
+
// Manifests are always JSON artifacts: object-valued source declarations have no compact TOON projection.
|
|
190
|
+
if (!("invalidated" in value) && format === "toon")
|
|
191
|
+
throw new FreshnessError("INVALID_ARGUMENT", "Record manifests with --format json; resume supports both json and toon.");
|
|
192
|
+
if ("invalidated" in value) {
|
|
193
|
+
const rows = value.invalidated;
|
|
194
|
+
value.invalidated = [];
|
|
195
|
+
const fixed = Buffer.byteLength(encode()) - String(value.omitted_sections).length - Number(format === "toon");
|
|
196
|
+
let included = 0;
|
|
197
|
+
let bytes = 0;
|
|
198
|
+
for (const row of rows) {
|
|
199
|
+
const encoded = format === "json" ? JSON.stringify(row) : ` - section: ${JSON.stringify(row.section)}\n causes[${row.causes.length}]: ${row.causes.map((cause) => JSON.stringify(cause)).join(",")}\n`;
|
|
200
|
+
const next = bytes + Buffer.byteLength(encoded) + Number(format === "json" && included > 0);
|
|
201
|
+
const omitted = value.omitted_sections + rows.length - included - 1;
|
|
202
|
+
const size = fixed + next + String(omitted).length + (format === "toon" ? String(included + 1).length : 0);
|
|
203
|
+
if (size > budget)
|
|
204
|
+
break;
|
|
205
|
+
included++;
|
|
206
|
+
bytes = next;
|
|
207
|
+
}
|
|
208
|
+
value.invalidated = rows.slice(0, included);
|
|
209
|
+
value.omitted_sections += rows.length - included;
|
|
210
|
+
}
|
|
211
|
+
const output = encode();
|
|
212
|
+
if (Buffer.byteLength(output) > budget || ("invalidated" in value && value.invalidated_sections > 0 && value.invalidated.length === 0))
|
|
213
|
+
throw new FreshnessError("BUDGET_TOO_SMALL", "Increase --byte-budget to fit the complete manifest or at least one invalidated section; no state was changed.");
|
|
214
|
+
return output;
|
|
215
|
+
}
|
|
216
|
+
/** Read finite regular files only; reject links, devices, permissions and concurrent edits. */
|
|
217
|
+
export function readFreshnessFile(path, limit = FRESHNESS_LIMITS.input_bytes) {
|
|
218
|
+
try {
|
|
219
|
+
const fd = openSync(path, constants.O_RDONLY | constants.O_NOFOLLOW | constants.O_NONBLOCK);
|
|
220
|
+
try {
|
|
221
|
+
const before = fstatSync(fd, { bigint: true });
|
|
222
|
+
if (!before.isFile() || before.size > BigInt(limit) || (before.mode & 292n) === 0n)
|
|
223
|
+
throw new Error();
|
|
224
|
+
const bytes = Buffer.alloc(Number(before.size) + 1);
|
|
225
|
+
let length = 0;
|
|
226
|
+
for (;;) {
|
|
227
|
+
const count = readSync(fd, bytes, length, bytes.length - length, null);
|
|
228
|
+
if (count === 0)
|
|
229
|
+
break;
|
|
230
|
+
length += count;
|
|
231
|
+
if (length === bytes.length)
|
|
232
|
+
throw new Error();
|
|
233
|
+
}
|
|
234
|
+
const after = fstatSync(fd, { bigint: true });
|
|
235
|
+
if (length !== Number(before.size) || before.size !== after.size || before.mtimeNs !== after.mtimeNs || before.ctimeNs !== after.ctimeNs)
|
|
236
|
+
throw new Error();
|
|
237
|
+
return bytes.subarray(0, length);
|
|
238
|
+
}
|
|
239
|
+
finally {
|
|
240
|
+
closeSync(fd);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
catch {
|
|
244
|
+
throw new FreshnessError("INPUT_UNAVAILABLE", "Use a stable, readable regular file within the input size limit.");
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
/** Decode a bounded input without exposing parser excerpts or local paths. */
|
|
248
|
+
export function readFreshnessJson(path) {
|
|
249
|
+
const bytes = readFreshnessFile(path);
|
|
250
|
+
try {
|
|
251
|
+
if (!isUtf8(bytes))
|
|
252
|
+
throw new Error();
|
|
253
|
+
return JSON.parse(bytes.toString("utf8"));
|
|
254
|
+
}
|
|
255
|
+
catch {
|
|
256
|
+
throw new FreshnessError("INPUT_UNAVAILABLE", "Supply a valid UTF-8 JSON packet or manifest file.");
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
/** Stateless authoritative SDK reads; reusing an adapter never reuses an earlier source value. */
|
|
260
|
+
export function createFreshnessReader(pmRoot, evidenceRoot) {
|
|
261
|
+
return async (source) => {
|
|
262
|
+
if (!sourceValid(source))
|
|
263
|
+
throw new FreshnessError("INVALID_ARGUMENT", "Use a valid item/settings projection or relative evidence path.");
|
|
264
|
+
if (source.kind === "evidence") {
|
|
265
|
+
const root = realpathSync(evidenceRoot);
|
|
266
|
+
const path = resolve(root, source.path);
|
|
267
|
+
const parent = relative(root, realpathSync(dirname(path)));
|
|
268
|
+
if (parent === ".." || parent.startsWith(`..${sep}`) || isAbsolute(parent))
|
|
269
|
+
throw new Error("Outside evidence root");
|
|
270
|
+
return readFreshnessFile(path, FRESHNESS_LIMITS.evidence_bytes).toString("base64");
|
|
271
|
+
}
|
|
272
|
+
const settingsPath = resolve(pmRoot, "settings.json");
|
|
273
|
+
const settingsBytes = readFreshnessFile(settingsPath);
|
|
274
|
+
const { settings, warnings: settingsWarnings } = await readSettingsWithMetadata(pmRoot);
|
|
275
|
+
// SDK defaults are usable only after a complete, stable, warning-free source read.
|
|
276
|
+
if (!isUtf8(settingsBytes) || settingsWarnings.length > 0 || !settingsBytes.equals(readFreshnessFile(settingsPath))) {
|
|
277
|
+
throw new FreshnessError("SOURCE_UNAVAILABLE", "Repair settings.json and its schema sources, then record a new manifest. Do not reuse the packet.");
|
|
278
|
+
}
|
|
279
|
+
let value;
|
|
280
|
+
if (source.kind === "item") {
|
|
281
|
+
const located = await locateItem(pmRoot, source.id, settings.id_prefix, settings.item_format, resolveItemTypeRegistry(settings).type_to_folder);
|
|
282
|
+
if (!located)
|
|
283
|
+
throw new Error("Missing source");
|
|
284
|
+
const bytes = readFreshnessFile(located.itemPath);
|
|
285
|
+
const warnings = [];
|
|
286
|
+
const { raw, document } = await readLocatedItem(located, { schema: settings.schema, warnings });
|
|
287
|
+
if (raw !== bytes.toString("utf8") || warnings.length > 0)
|
|
288
|
+
throw new Error("Unstable or incomplete source");
|
|
289
|
+
value = { ...document.metadata, body: document.body };
|
|
290
|
+
}
|
|
291
|
+
else {
|
|
292
|
+
value = settings;
|
|
293
|
+
}
|
|
294
|
+
if (!source.fields)
|
|
295
|
+
return value;
|
|
296
|
+
return Object.fromEntries(source.fields.map((field) => [field, Object.hasOwn(value, field) ? { present: true, value: value[field] } : { present: false }]));
|
|
297
|
+
};
|
|
298
|
+
}
|
|
299
|
+
//# sourceMappingURL=freshness.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"freshness.js","sourceRoot":"","sources":["../freshness.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,13 @@
|
|
|
1
|
+
export { packCriterionEvidence, encodeEvidencePack, parseEvidencePacket, readEvidencePacket, EvidencePackingError } from "./evidence-packing.ts";
|
|
2
|
+
export type { EvidenceBinding, EvidenceCriterion, EvidencePacket, EvidencePack, EvidencePackOptions, CriterionCoverage, PackedEvidence } from "./evidence-packing.ts";
|
|
3
|
+
export { checkContextWitnesses, encodeWitnessReport, parseWitnessPacket, readWitnessPacket, WitnessError } from "./witnesses.ts";
|
|
4
|
+
export type { ClaimCitation, ContextClaim, ContextWitness, WitnessPacket, WitnessReport } from "./witnesses.ts";
|
|
5
|
+
export { createFreshnessReader, encodeFreshness, FRESHNESS_LIMITS, FreshnessError, parseFreshnessPacket, readFreshnessFile, readFreshnessJson, recordFreshness, resumeFreshness } from "./freshness.ts";
|
|
6
|
+
export type { FreshnessManifest, FreshnessPacket, FreshnessReader, FreshnessResult, FreshnessSection, FreshnessSource } from "./freshness.ts";
|
|
1
7
|
import type { FileFocus } from "./file-focus.ts";
|
|
2
8
|
import type { ExtensionApi, RuntimeStatusRegistry, RelationshipKindRegistry } from "@unbrained/pm-cli/sdk";
|
|
3
|
-
import {
|
|
4
|
-
import type {
|
|
9
|
+
import { listAllComplete } from "@unbrained/pm-cli/sdk/core";
|
|
10
|
+
import type { PmCompleteListResult } from "@unbrained/pm-cli/sdk";
|
|
5
11
|
import type { ContextRelevanceReport } from "@unbrained/pm-cli/sdk/query";
|
|
6
12
|
/** Stable failure categories reported by context command handlers. */
|
|
7
13
|
export declare const EXIT_CODE: {
|
|
@@ -284,76 +290,14 @@ export declare function renderAgentHandoff(pack: ContextPack, options?: {
|
|
|
284
290
|
relationshipRegistry?: RelationshipKindRegistry;
|
|
285
291
|
}): string;
|
|
286
292
|
/**
|
|
287
|
-
*
|
|
288
|
-
*
|
|
289
|
-
*
|
|
290
|
-
* envelope the CLI serializes for `list-all --json`), but the declared
|
|
291
|
-
* `ListResult` type does not carry it — this local view reads it without
|
|
292
|
-
* weakening the SDK type.
|
|
293
|
-
*/
|
|
294
|
-
interface ListOmissionReceipt {
|
|
295
|
-
/** True when field groups were dropped from the projection. */
|
|
296
|
-
has_omissions?: boolean;
|
|
297
|
-
/** Count of dropped groups. */
|
|
298
|
-
omitted_field_group_count?: number;
|
|
299
|
-
/** Names of the dropped groups. */
|
|
300
|
-
omitted_field_groups?: string[];
|
|
301
|
-
}
|
|
302
|
-
/** A list result widened only by the runtime-present omission receipt. */
|
|
303
|
-
type ListResultWithReceipt = ListResult & {
|
|
304
|
-
omission_receipt?: ListOmissionReceipt;
|
|
305
|
-
};
|
|
306
|
-
/**
|
|
307
|
-
* Refuse an incomplete SDK `list-all` result instead of consuming it.
|
|
308
|
-
*
|
|
309
|
-
* Reading `.items` without consulting the result's completeness receipt is how
|
|
310
|
-
* this package once built a context pack from 10 of 682 workspace items and
|
|
311
|
-
* reported success: pm 2026.8.14 defaulted the list to a truncated answer and
|
|
312
|
-
* nothing here checked. Any one of four independent signals means the rows in
|
|
313
|
-
* `items` are NOT the whole workspace, so this throws (never returns a partial
|
|
314
|
-
* list, never logs and continues) naming the signal that tripped plus the
|
|
315
|
-
* `count`/`total` figures:
|
|
316
|
-
*
|
|
317
|
-
* - `truncated === true` — the row list was cut short (output budget, limit);
|
|
318
|
-
* - `has_more === true` — rows exist past the returned cursor boundary;
|
|
319
|
-
* - `completeness.status !== "complete"` — items/directories were unreadable
|
|
320
|
-
* ("partial") or the corpus was never scanned ("unchecked"); either way the
|
|
321
|
-
* answer is not attested complete;
|
|
322
|
-
* - `omission_receipt.has_omissions === true` — field groups were dropped from
|
|
323
|
-
* the projection, so rows are present but degraded.
|
|
324
|
-
*
|
|
325
|
-
* Thrown errors are {@link CommandError} so the command runtime turns them into
|
|
326
|
-
* a clean nonzero exit. Paging is deliberately NOT attempted: a context pack
|
|
327
|
-
* silently built from a partial page is the failure mode this guard exists to
|
|
328
|
-
* prevent, so refusing loudly is simpler and safer.
|
|
329
|
-
*
|
|
330
|
-
* @param result - SDK list result (a result missing its receipt trips the
|
|
331
|
-
* completeness signal: an unverifiable answer is not complete).
|
|
332
|
-
* @throws {@link CommandError} naming the first tripped signal and the counts.
|
|
333
|
-
*/
|
|
334
|
-
export declare function assertListResultComplete(result: ListResultWithReceipt): void;
|
|
335
|
-
/** Injectable seam over the SDK list action {@link readPmItems} uses. */
|
|
336
|
-
export type PmListAction = typeof pmList;
|
|
337
|
-
/**
|
|
338
|
-
* Read every pm item (full metadata + body) in-process through the SDK.
|
|
339
|
-
*
|
|
340
|
-
* Replaces the previous `spawnSync("pm", ["list-all", "--json", "--include-body"])`
|
|
341
|
-
* shell-out with the typed {@link list} action from `@unbrained/pm-cli/sdk/core`.
|
|
342
|
-
* `list-all` is the SDK alias for `list` with `excludeTerminal: false`; passing
|
|
343
|
-
* `full: true` + `includeBody: true` reproduces the full-metadata-with-body
|
|
344
|
-
* projection the shell-out parsed. `noTruncate: true` deliberately overrides any
|
|
345
|
-
* truncating limit and `strictRead: true` makes unreadable corpus entries a hard
|
|
346
|
-
* SDK error, and the returned receipt is STILL verified by
|
|
347
|
-
* {@link assertListResultComplete} — the 2026.8.14 truncated-default regression
|
|
348
|
-
* is exactly the silently-partial read this package refuses to reintroduce, so
|
|
349
|
-
* the guard does not trust the request options alone. Being an in-process SDK
|
|
350
|
-
* action (no child process), there is no spawn stdout buffer to size here; the
|
|
351
|
-
* completeness receipt is the over-run guard.
|
|
352
|
-
*
|
|
353
|
-
* @param pmRoot - Tracker storage root to read.
|
|
354
|
-
* @param list - Injectable SDK list action (tests substitute a canned real
|
|
355
|
-
* result); defaults to the real {@link pmList}.
|
|
293
|
+
* Re-certify the full SDK envelope and require its producer's certificate.
|
|
294
|
+
* The SDK owns corpus and output invariants; this consumer also refuses a
|
|
295
|
+
* missing or inconsistent producer certificate before constructing a pack.
|
|
356
296
|
*/
|
|
297
|
+
export declare function assertListResultComplete(result: unknown): asserts result is PmCompleteListResult;
|
|
298
|
+
/** Injectable complete-read boundary; receipt tests derive inputs from real trackers. */
|
|
299
|
+
export type PmListAction = typeof listAllComplete;
|
|
300
|
+
/** Read all types and lifecycle states without extension side effects, preserving SDK refusals. */
|
|
357
301
|
export declare function readPmItems(pmRoot: string, list?: PmListAction): Promise<PmItem[]>;
|
|
358
302
|
/** Rank options forwarded to the SDK relevance engine. */
|
|
359
303
|
export interface SdkRankOptions {
|
|
@@ -399,7 +343,9 @@ export declare function createSdkRanker(allItems: readonly PmItem[], options: Sd
|
|
|
399
343
|
* focus items are required anchors, neighbors compete by relevance rank for the
|
|
400
344
|
* remaining budget. The packer first selects under that token budget with pm's
|
|
401
345
|
* projection-degradation optimizer, then enforces the command's explicit item
|
|
402
|
-
* ceiling
|
|
346
|
+
* ceiling. The incoming focus order is authoritative (including file-overlap
|
|
347
|
+
* ranking); corpus ranks apply only to neighbors, so equal-cost focus ties keep
|
|
348
|
+
* the selection order established by buildContextPack.
|
|
403
349
|
*/
|
|
404
350
|
export declare function createSdkPacker(rankedFocus: readonly PmItem[], rankedNeighbors: readonly PmItem[]): (focus: PmItem[], neighbors: PmItem[], maxItems: number) => {
|
|
405
351
|
focus: PmItem[];
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|