@claudexor/context 1.0.1 → 2.1.3

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/atlas.d.ts CHANGED
@@ -21,4 +21,6 @@ export interface AtlasResult {
21
21
  * are recorded as omitted with a reason, plus an explicit OMISSIONS list.
22
22
  */
23
23
  export declare function buildScopeAtlas(repoRoot: string, opts?: AtlasOptions): Promise<AtlasResult>;
24
+ /** Filesystem adapter for the shared pure symlink policy. */
25
+ export declare function contextSymlinkDenyReason(repoRoot: string, canonicalRepoRoot: string, rel: string): string | null;
24
26
  //# sourceMappingURL=atlas.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"atlas.d.ts","sourceRoot":"","sources":["../src/atlas.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AA4CxF,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AA+ED;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,GAAE,YAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,CAmHrG"}
1
+ {"version":3,"file":"atlas.d.ts","sourceRoot":"","sources":["../src/atlas.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AA2DxF,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AA4FD;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,YAAiB,GACtB,OAAO,CAAC,WAAW,CAAC,CAyItB;AAQD,6DAA6D;AAC7D,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,MAAM,EAChB,iBAAiB,EAAE,MAAM,EACzB,GAAG,EAAE,MAAM,GACV,MAAM,GAAG,IAAI,CAqBf"}
package/dist/atlas.js CHANGED
@@ -1,20 +1,8 @@
1
- import { lstatSync, readFileSync, readdirSync, realpathSync, statSync } from "node:fs";
2
- import { extname, join, relative, sep } from "node:path";
1
+ import { lstatSync, readFileSync, readlinkSync, readdirSync, realpathSync, statSync, } from "node:fs";
2
+ import { extname, join, relative } from "node:path";
3
3
  import { runCapture } from "@claudexor/core";
4
- import { sha256 } from "@claudexor/util";
4
+ import { sensitiveResourcePolicy, sha256 } from "@claudexor/util";
5
5
  import { matchAny } from "./glob.js";
6
- const SENSITIVE = [
7
- "**/.env",
8
- "**/.env.*",
9
- ".env",
10
- ".env.*",
11
- "**/secrets/**",
12
- "**/*.pem",
13
- "**/*.key",
14
- "**/id_rsa*",
15
- "**/*.p12",
16
- "**/credentials*.json",
17
- ];
18
6
  const MANIFEST_ONLY = [
19
7
  "**/pnpm-lock.yaml",
20
8
  "pnpm-lock.yaml",
@@ -37,15 +25,45 @@ const VENDORED = [
37
25
  "**/*.map",
38
26
  ];
39
27
  const BINARY_EXT = new Set([
40
- ".png", ".jpg", ".jpeg", ".gif", ".webp", ".ico", ".pdf", ".zip", ".gz", ".tar",
41
- ".tgz", ".zst", ".woff", ".woff2", ".ttf", ".eot", ".mp4", ".mov", ".mp3", ".wav",
42
- ".bin", ".so", ".dylib", ".dll", ".node", ".class", ".jar", ".wasm", ".o", ".a",
28
+ ".png",
29
+ ".jpg",
30
+ ".jpeg",
31
+ ".gif",
32
+ ".webp",
33
+ ".ico",
34
+ ".pdf",
35
+ ".zip",
36
+ ".gz",
37
+ ".tar",
38
+ ".tgz",
39
+ ".zst",
40
+ ".woff",
41
+ ".woff2",
42
+ ".ttf",
43
+ ".eot",
44
+ ".mp4",
45
+ ".mov",
46
+ ".mp3",
47
+ ".wav",
48
+ ".bin",
49
+ ".so",
50
+ ".dylib",
51
+ ".dll",
52
+ ".node",
53
+ ".class",
54
+ ".jar",
55
+ ".wasm",
56
+ ".o",
57
+ ".a",
43
58
  ]);
44
59
  async function listFiles(repoRoot) {
45
60
  try {
46
61
  const r = await runCapture("git", ["-C", repoRoot, "ls-files", "--cached", "--others", "--exclude-standard"], { timeoutMs: 30_000 });
47
62
  if (r.code === 0) {
48
- const files = r.stdout.split("\n").map((s) => s.trim()).filter(Boolean);
63
+ const files = r.stdout
64
+ .split("\n")
65
+ .map((s) => s.trim())
66
+ .filter(Boolean);
49
67
  if (files.length > 0)
50
68
  return files;
51
69
  }
@@ -90,9 +108,11 @@ function walk(root, dir, seenDirs = new Set()) {
90
108
  // ContextPack (context collection is scoped to the target tree).
91
109
  let resolved;
92
110
  let rootReal;
111
+ let linkTarget;
93
112
  try {
94
113
  rootReal = realpathSync(root);
95
114
  resolved = realpathSync(full);
115
+ linkTarget = readlinkSync(full);
96
116
  }
97
117
  catch {
98
118
  continue;
@@ -104,10 +124,17 @@ function walk(root, dir, seenDirs = new Set()) {
104
124
  catch {
105
125
  continue;
106
126
  }
107
- if (s.isDirectory())
108
- continue;
109
- const insideTree = resolved === rootReal || resolved.startsWith(rootReal + sep);
110
- if (!insideTree)
127
+ const targetKind = statKind(s);
128
+ const decision = sensitiveResourcePolicy.assessSymlink({
129
+ sourceRoot: root,
130
+ canonicalSourceRoot: rootReal,
131
+ sourcePath: full,
132
+ linkTarget,
133
+ resolvedTargetPath: resolved,
134
+ targetKind,
135
+ allowedTargetKinds: ["file"],
136
+ });
137
+ if (!decision.allowed)
111
138
  continue;
112
139
  out.push(relative(root, full));
113
140
  continue;
@@ -137,6 +164,7 @@ export async function buildScopeAtlas(repoRoot, opts = {}) {
137
164
  const files = new Set(await listFiles(repoRoot));
138
165
  const atlas = [];
139
166
  const candidates = [];
167
+ const missingMandatory = [];
140
168
  // Symlink containment at the READ point (not just the fallback walker):
141
169
  // `git ls-files` happily lists a TRACKED symlink like `leak.txt ->
142
170
  // ~/.ssh/id_rsa`, and stat/readFile would follow it OUT of the tree.
@@ -149,20 +177,10 @@ export async function buildScopeAtlas(repoRoot, opts = {}) {
149
177
  catch {
150
178
  repoRootReal = repoRoot;
151
179
  }
152
- const escapesTree = (rel) => {
153
- try {
154
- if (!lstatSync(join(repoRoot, rel)).isSymbolicLink())
155
- return false;
156
- const resolved = realpathSync(join(repoRoot, rel));
157
- return resolved !== repoRootReal && !resolved.startsWith(repoRootReal + sep);
158
- }
159
- catch {
160
- return true; // unresolvable symlink: never read through it
161
- }
162
- };
163
180
  for (const rel of files) {
164
- if (escapesTree(rel)) {
165
- atlas.push({ path: rel, disposition: "excluded", reason: "symlink resolves outside the tree" });
181
+ const symlinkReason = contextSymlinkDenyReason(repoRoot, repoRootReal, rel);
182
+ if (symlinkReason) {
183
+ atlas.push({ path: rel, disposition: "excluded", reason: symlinkReason });
166
184
  continue;
167
185
  }
168
186
  let bytes = 0;
@@ -174,11 +192,19 @@ export async function buildScopeAtlas(repoRoot, opts = {}) {
174
192
  continue;
175
193
  }
176
194
  const mandatory = mandatorySet.has(rel);
195
+ const sensitive = sensitiveResourcePolicy.classifyPath(rel);
196
+ if (sensitive.sensitive) {
197
+ atlas.push({
198
+ path: rel,
199
+ disposition: "sensitive",
200
+ bytes,
201
+ reason: sensitive.reason ?? undefined,
202
+ });
203
+ if (mandatory)
204
+ missingMandatory.push(rel);
205
+ continue;
206
+ }
177
207
  if (!mandatory) {
178
- if (matchAny(rel, SENSITIVE)) {
179
- atlas.push({ path: rel, disposition: "sensitive", bytes });
180
- continue;
181
- }
182
208
  if (BINARY_EXT.has(extname(rel).toLowerCase())) {
183
209
  atlas.push({ path: rel, disposition: "binary", bytes });
184
210
  continue;
@@ -200,7 +226,12 @@ export async function buildScopeAtlas(repoRoot, opts = {}) {
200
226
  continue;
201
227
  }
202
228
  if (bytes > maxFileBytes) {
203
- atlas.push({ path: rel, disposition: "oversized", bytes, reason: `> ${maxFileBytes} bytes` });
229
+ atlas.push({
230
+ path: rel,
231
+ disposition: "oversized",
232
+ bytes,
233
+ reason: `> ${maxFileBytes} bytes`,
234
+ });
204
235
  continue;
205
236
  }
206
237
  }
@@ -211,7 +242,6 @@ export async function buildScopeAtlas(repoRoot, opts = {}) {
211
242
  const mandatory = [];
212
243
  const included = [];
213
244
  const omitted = [];
214
- const missingMandatory = [];
215
245
  for (const c of candidates) {
216
246
  if (!c.mandatory && used + estTokens(c.bytes) > tokenLimit) {
217
247
  atlas.push({ path: c.rel, disposition: "omitted", bytes: c.bytes, reason: "token_budget" });
@@ -228,6 +258,18 @@ export async function buildScopeAtlas(repoRoot, opts = {}) {
228
258
  missingMandatory.push(c.rel);
229
259
  continue;
230
260
  }
261
+ const contentDecision = sensitiveResourcePolicy.inspectContent(content, "reject");
262
+ if (contentDecision.containsSensitiveContent) {
263
+ atlas.push({
264
+ path: c.rel,
265
+ disposition: "sensitive",
266
+ bytes: c.bytes,
267
+ reason: `content signatures: ${contentDecision.signatures.join(", ")}`,
268
+ });
269
+ if (c.mandatory)
270
+ missingMandatory.push(c.rel);
271
+ continue;
272
+ }
231
273
  const hash = sha256(content);
232
274
  used += estTokens(content.length);
233
275
  atlas.push({ path: c.rel, disposition: "full", bytes: c.bytes, hash });
@@ -239,6 +281,46 @@ export async function buildScopeAtlas(repoRoot, opts = {}) {
239
281
  missingMandatory.push(m);
240
282
  }
241
283
  atlas.sort((a, b) => a.path.localeCompare(b.path));
242
- return { atlas, mandatory, included, omitted, estimatedTokens: used, tokenLimit, missingMandatory };
284
+ return {
285
+ atlas,
286
+ mandatory,
287
+ included,
288
+ omitted,
289
+ estimatedTokens: used,
290
+ tokenLimit,
291
+ missingMandatory,
292
+ };
293
+ }
294
+ function statKind(stat) {
295
+ if (stat.isFile())
296
+ return "file";
297
+ if (stat.isDirectory())
298
+ return "directory";
299
+ return "other";
300
+ }
301
+ /** Filesystem adapter for the shared pure symlink policy. */
302
+ export function contextSymlinkDenyReason(repoRoot, canonicalRepoRoot, rel) {
303
+ const full = join(repoRoot, rel);
304
+ try {
305
+ if (!lstatSync(full).isSymbolicLink())
306
+ return null;
307
+ const resolved = realpathSync(full);
308
+ const stat = statSync(full);
309
+ const decision = sensitiveResourcePolicy.assessSymlink({
310
+ sourceRoot: repoRoot,
311
+ canonicalSourceRoot: canonicalRepoRoot,
312
+ sourcePath: full,
313
+ linkTarget: readlinkSync(full),
314
+ resolvedTargetPath: resolved,
315
+ targetKind: statKind(stat),
316
+ allowedTargetKinds: ["file"],
317
+ });
318
+ return decision.allowed
319
+ ? null
320
+ : (decision.detail ?? "symlink target denied by sensitive-resource policy");
321
+ }
322
+ catch {
323
+ return "symlink target cannot be resolved";
324
+ }
243
325
  }
244
326
  //# sourceMappingURL=atlas.js.map
package/dist/atlas.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"atlas.js","sourceRoot":"","sources":["../src/atlas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"atlas.js","sourceRoot":"","sources":["../src/atlas.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,QAAQ,GAET,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAEpD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,EAA0B,MAAM,iBAAiB,CAAC;AAC1F,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,MAAM,aAAa,GAAG;IACpB,mBAAmB;IACnB,gBAAgB;IAChB,sBAAsB;IACtB,cAAc;IACd,eAAe;IACf,gBAAgB;IAChB,WAAW;CACZ,CAAC;AACF,MAAM,QAAQ,GAAG;IACf,oBAAoB;IACpB,YAAY;IACZ,aAAa;IACb,aAAa;IACb,cAAc;IACd,cAAc;IACd,gBAAgB;IAChB,aAAa;IACb,cAAc;IACd,UAAU;CACX,CAAC;AACF,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC;IACzB,MAAM;IACN,MAAM;IACN,OAAO;IACP,MAAM;IACN,OAAO;IACP,MAAM;IACN,MAAM;IACN,MAAM;IACN,KAAK;IACL,MAAM;IACN,MAAM;IACN,MAAM;IACN,OAAO;IACP,QAAQ;IACR,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,KAAK;IACL,QAAQ;IACR,MAAM;IACN,OAAO;IACP,QAAQ;IACR,MAAM;IACN,OAAO;IACP,IAAI;IACJ,IAAI;CACL,CAAC,CAAC;AAoBH,KAAK,UAAU,SAAS,CAAC,QAAgB;IACvC,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,MAAM,UAAU,CACxB,KAAK,EACL,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,oBAAoB,CAAC,EAC1E,EAAE,SAAS,EAAE,MAAM,EAAE,CACtB,CAAC;QACF,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YACjB,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM;iBACnB,KAAK,CAAC,IAAI,CAAC;iBACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;iBACpB,MAAM,CAAC,OAAO,CAAC,CAAC;YACnB,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,KAAK,CAAC;QACrC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,uDAAuD;IACzD,CAAC;IACD,OAAO,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAClC,CAAC;AAED,SAAS,IAAI,CAAC,IAAY,EAAE,GAAW,EAAE,WAAwB,IAAI,GAAG,EAAE;IACxE,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC;IAC3F,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,kEAAkE;IAClE,2EAA2E;IAC3E,yEAAyE;IACzE,oEAAoE;IACpE,IAAI,OAAe,CAAC;IACpB,IAAI,CAAC;QACH,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,CAAC;IACb,CAAC;IACD,IAAI,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;QAAE,OAAO,GAAG,CAAC;IACtC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACtB,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;QACpC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,SAAS;QAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,CAAC;QACN,IAAI,CAAC;YACH,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QACD,IAAI,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC;YACvB,sEAAsE;YACtE,oEAAoE;YACpE,qEAAqE;YACrE,iEAAiE;YACjE,IAAI,QAAgB,CAAC;YACrB,IAAI,QAAgB,CAAC;YACrB,IAAI,UAAkB,CAAC;YACvB,IAAI,CAAC;gBACH,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;gBAC9B,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;gBAC9B,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;YAClC,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;YACD,IAAI,CAA8B,CAAC;YACnC,IAAI,CAAC;gBACH,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;YACrB,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;YACD,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,QAAQ,GAAG,uBAAuB,CAAC,aAAa,CAAC;gBACrD,UAAU,EAAE,IAAI;gBAChB,mBAAmB,EAAE,QAAQ;gBAC7B,UAAU,EAAE,IAAI;gBAChB,UAAU;gBACV,kBAAkB,EAAE,QAAQ;gBAC5B,UAAU;gBACV,kBAAkB,EAAE,CAAC,MAAM,CAAC;aAC7B,CAAC,CAAC;YACH,IAAI,CAAC,QAAQ,CAAC,OAAO;gBAAE,SAAS;YAChC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;YAC/B,SAAS;QACX,CAAC;QACD,IAAI,CAAC,CAAC,WAAW,EAAE;YAAE,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;;YACxD,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,8DAA8D;AAC9D,SAAS,SAAS,CAAC,CAAS;IAC1B,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1B,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,QAAgB,EAChB,OAAqB,EAAE;IAEvB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;IACnC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;IACnC,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;IACnD,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,GAAG,GAAG,IAAI,CAAC;IACrD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,OAAO,CAAC;IAE9C,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;IACjD,MAAM,KAAK,GAAsB,EAAE,CAAC;IACpC,MAAM,UAAU,GAAyD,EAAE,CAAC;IAC5E,MAAM,gBAAgB,GAAa,EAAE,CAAC;IAEtC,wEAAwE;IACxE,mEAAmE;IACnE,qEAAqE;IACrE,mEAAmE;IACnE,yDAAyD;IACzD,IAAI,YAAoB,CAAC;IACzB,IAAI,CAAC;QACH,YAAY,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,YAAY,GAAG,QAAQ,CAAC;IAC1B,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,MAAM,aAAa,GAAG,wBAAwB,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,CAAC,CAAC;QAC5E,IAAI,aAAa,EAAE,CAAC;YAClB,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;YAC1E,SAAS;QACX,CAAC;QACD,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,CAAC;YACH,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;QAC7C,CAAC;QAAC,MAAM,CAAC;YACP,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;YAC5E,SAAS;QACX,CAAC;QACD,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACxC,MAAM,SAAS,GAAG,uBAAuB,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAC5D,IAAI,SAAS,CAAC,SAAS,EAAE,CAAC;YACxB,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,GAAG;gBACT,WAAW,EAAE,WAAW;gBACxB,KAAK;gBACL,MAAM,EAAE,SAAS,CAAC,MAAM,IAAI,SAAS;aACtC,CAAC,CAAC;YACH,IAAI,SAAS;gBAAE,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC1C,SAAS;QACX,CAAC;QACD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,IAAI,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;gBAC/C,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;gBACxD,SAAS;YACX,CAAC;YACD,IAAI,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAC,EAAE,CAAC;gBACjC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC/D,SAAS;YACX,CAAC;YACD,IAAI,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC;gBAC5B,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC1D,SAAS;YACX,CAAC;YACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC;gBACjD,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC1D,SAAS;YACX,CAAC;YACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC;gBAClD,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAC,CAAC;gBACxF,SAAS;YACX,CAAC;YACD,IAAI,KAAK,GAAG,YAAY,EAAE,CAAC;gBACzB,KAAK,CAAC,IAAI,CAAC;oBACT,IAAI,EAAE,GAAG;oBACT,WAAW,EAAE,WAAW;oBACxB,KAAK;oBACL,MAAM,EAAE,KAAK,YAAY,QAAQ;iBAClC,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;QACH,CAAC;QACD,UAAU,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACvB,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAChF,CAAC;IAEF,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,MAAM,SAAS,GAAqB,EAAE,CAAC;IACvC,MAAM,QAAQ,GAAqB,EAAE,CAAC;IACtC,MAAM,OAAO,GAAoB,EAAE,CAAC;IAEpC,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,IAAI,CAAC,CAAC,CAAC,SAAS,IAAI,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,UAAU,EAAE,CAAC;YAC3D,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC;YAC5F,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,uBAAuB,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC;YACrF,SAAS;QACX,CAAC;QACD,IAAI,OAAe,CAAC;QACpB,IAAI,CAAC;YACH,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;QACxD,CAAC;QAAC,MAAM,CAAC;YACP,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,WAAW,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;YAC9F,IAAI,CAAC,CAAC,SAAS;gBAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAC9C,SAAS;QACX,CAAC;QACD,MAAM,eAAe,GAAG,uBAAuB,CAAC,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAClF,IAAI,eAAe,CAAC,wBAAwB,EAAE,CAAC;YAC7C,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,CAAC,CAAC,GAAG;gBACX,WAAW,EAAE,WAAW;gBACxB,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,MAAM,EAAE,uBAAuB,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;aACvE,CAAC,CAAC;YACH,IAAI,CAAC,CAAC,SAAS;gBAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAC9C,SAAS;QACX,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QAC7B,IAAI,IAAI,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,6CAA6C;IAC7C,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;QAC7B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACnD,OAAO;QACL,KAAK;QACL,SAAS;QACT,QAAQ;QACR,OAAO;QACP,eAAe,EAAE,IAAI;QACrB,UAAU;QACV,gBAAgB;KACjB,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,IAAW;IAC3B,IAAI,IAAI,CAAC,MAAM,EAAE;QAAE,OAAO,MAAM,CAAC;IACjC,IAAI,IAAI,CAAC,WAAW,EAAE;QAAE,OAAO,WAAW,CAAC;IAC3C,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,6DAA6D;AAC7D,MAAM,UAAU,wBAAwB,CACtC,QAAgB,EAChB,iBAAyB,EACzB,GAAW;IAEX,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IACjC,IAAI,CAAC;QACH,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE;YAAE,OAAO,IAAI,CAAC;QACnD,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC5B,MAAM,QAAQ,GAAG,uBAAuB,CAAC,aAAa,CAAC;YACrD,UAAU,EAAE,QAAQ;YACpB,mBAAmB,EAAE,iBAAiB;YACtC,UAAU,EAAE,IAAI;YAChB,UAAU,EAAE,YAAY,CAAC,IAAI,CAAC;YAC9B,kBAAkB,EAAE,QAAQ;YAC5B,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC;YAC1B,kBAAkB,EAAE,CAAC,MAAM,CAAC;SAC7B,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC,OAAO;YACrB,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,IAAI,oDAAoD,CAAC,CAAC;IAChF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,mCAAmC,CAAC;IAC7C,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"contextpack.d.ts","sourceRoot":"","sources":["../src/contextpack.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAKnE,OAAO,EAAE,KAAK,YAAY,EAAmB,MAAM,YAAY,CAAC;AAEhE,MAAM,WAAW,kBAAmB,SAAQ,YAAY;IACtD,gGAAgG;IAChG,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED,eAAO,MAAM,yBAAyB,UAAwC,CAAC;AAE/E;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAiBhG;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,YAAY,EACtB,IAAI,GAAE,kBAAuB,GAC5B,OAAO,CAAC,WAAW,CAAC,CAqBtB"}
1
+ {"version":3,"file":"contextpack.d.ts","sourceRoot":"","sources":["../src/contextpack.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAKnE,OAAO,EAAE,KAAK,YAAY,EAA6C,MAAM,YAAY,CAAC;AAE1F,MAAM,WAAW,kBAAmB,SAAQ,YAAY;IACtD,gGAAgG;IAChG,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED,eAAO,MAAM,yBAAyB,UAAwC,CAAC;AAE/E;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAgDhG;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,YAAY,EACtB,IAAI,GAAE,kBAAuB,GAC5B,OAAO,CAAC,WAAW,CAAC,CAyBtB"}
@@ -1,9 +1,10 @@
1
+ import { lstatSync, realpathSync } from "node:fs";
1
2
  import { isAbsolute, resolve, sep } from "node:path";
2
3
  import { ContextPack as ContextPackSchema } from "@claudexor/schema";
3
4
  import { ContextOverflowError } from "@claudexor/core";
4
- import { hashJson, readTextSafe } from "@claudexor/util";
5
+ import { hashJson, readTextSafe, sensitiveResourcePolicy } from "@claudexor/util";
5
6
  import { loadAgentsInstructions } from "./agents.js";
6
- import { buildScopeAtlas } from "./atlas.js";
7
+ import { buildScopeAtlas, contextSymlinkDenyReason } from "./atlas.js";
7
8
  export const DEFAULT_MANDATORY_CONTEXT = ["README.md", "docs/ARCHITECTURE.md"];
8
9
  /**
9
10
  * Uniform fail-closed preflight for EXPLICITLY-configured mandatory context.
@@ -19,6 +20,14 @@ export function assertMandatoryContext(repoRoot, mandatoryFiles) {
19
20
  return;
20
21
  const base = resolve(repoRoot);
21
22
  const missing = [];
23
+ const refused = [];
24
+ let canonicalBase = base;
25
+ try {
26
+ canonicalBase = realpathSync(base);
27
+ }
28
+ catch {
29
+ // Missing roots are accounted below as missing mandatory paths.
30
+ }
22
31
  for (const rel of mandatoryFiles) {
23
32
  // Versioned project config must not point mandatory context OUTSIDE the repo
24
33
  // (absolute paths or `..` traversal): fail closed rather than read host files
@@ -27,9 +36,31 @@ export function assertMandatoryContext(repoRoot, mandatoryFiles) {
27
36
  if (isAbsolute(rel) || (abs !== base && !abs.startsWith(base + sep))) {
28
37
  throw new ContextOverflowError(`mandatory context path escapes the repo: ${rel}`);
29
38
  }
30
- if (readTextSafe(abs) === null)
39
+ try {
40
+ lstatSync(abs);
41
+ }
42
+ catch {
43
+ missing.push(rel);
44
+ continue;
45
+ }
46
+ const pathDecision = sensitiveResourcePolicy.classifyPath(rel);
47
+ const symlinkReason = contextSymlinkDenyReason(base, canonicalBase, rel);
48
+ if (pathDecision.sensitive || symlinkReason) {
49
+ refused.push(rel);
50
+ continue;
51
+ }
52
+ const text = readTextSafe(abs);
53
+ const contentDecision = text === null ? null : sensitiveResourcePolicy.inspectContent(text, "reject");
54
+ if (contentDecision?.containsSensitiveContent) {
55
+ refused.push(rel);
56
+ continue;
57
+ }
58
+ if (text === null)
31
59
  missing.push(rel);
32
60
  }
61
+ if (refused.length > 0) {
62
+ throw new ContextOverflowError(`mandatory context is sensitive or escapes its trust boundary: ${refused.join(", ")}`);
63
+ }
33
64
  if (missing.length > 0) {
34
65
  throw new ContextOverflowError(`mandatory context missing/unreadable: ${missing.join(", ")}`);
35
66
  }
@@ -43,7 +74,9 @@ export async function buildContextPack(repoRoot, contract, opts = {}) {
43
74
  const usingExplicitMandatory = opts.mandatory !== undefined;
44
75
  const mandatory = opts.mandatory ?? DEFAULT_MANDATORY_CONTEXT;
45
76
  const atlas = await buildScopeAtlas(repoRoot, { ...opts, mandatory });
46
- if (usingExplicitMandatory && (opts.failOnMissingMandatory ?? true) && atlas.missingMandatory.length > 0) {
77
+ if (usingExplicitMandatory &&
78
+ (opts.failOnMissingMandatory ?? true) &&
79
+ atlas.missingMandatory.length > 0) {
47
80
  throw new ContextOverflowError(`mandatory context missing/unreadable: ${atlas.missingMandatory.join(", ")}`);
48
81
  }
49
82
  const agents = loadAgentsInstructions(repoRoot);
@@ -1 +1 @@
1
- {"version":3,"file":"contextpack.js","sourceRoot":"","sources":["../src/contextpack.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"contextpack.js","sourceRoot":"","sources":["../src/contextpack.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,32 @@ export interface EvidencePacket {
15
15
  runtime?: string;
16
16
  }
17
17
  export declare const MANDATORY_EVIDENCE_FILES: string[];
18
+ /** One sealed packet contract shared by the cumulative Tier-1 and Tier-2 reviewers. */
19
+ export declare const FROZEN_REVIEW_EVIDENCE_FILES: readonly ["USER_INTENT.md", "FORBIDDEN_FINDINGS.md", "PLAN_ACCEPTED.md", "DECIDED_TRADEOFFS.md", "AUTHORIZATION.json", "FREEZE.json", "DIFF.patch", "DIFF_SUMMARY.md", "PHASE_DELTA.md", "COMMITS.tsv", "TRACEABILITY.md", "TESTS.txt", "TEST_RESULTS.json", "FINGERPRINTS.json", "RUNTIME.md", "FILES_TO_READ_WHOLE.txt", "RELEASE_PREFLIGHT.md"];
20
+ export interface PacketManifestFile {
21
+ path: string;
22
+ sha256: string;
23
+ }
24
+ export interface PacketManifestValidation {
25
+ ok: boolean;
26
+ reasons: string[];
27
+ files: string[];
28
+ }
29
+ export interface SealedEvidencePacketInput {
30
+ evidenceDir: string;
31
+ candidateSha: string;
32
+ candidateTree: string;
33
+ expectedManifestSha256?: string;
34
+ }
35
+ export interface SealedEvidencePacket {
36
+ evidenceDir: string;
37
+ baseSha: string;
38
+ candidateSha: string;
39
+ candidateTree: string;
40
+ diff: string;
41
+ manifestSha256: string;
42
+ files: string[];
43
+ }
18
44
  export interface DiffEvidence {
19
45
  diffPath: string;
20
46
  summaryPath: string;
@@ -30,4 +56,12 @@ export interface PreflightResult {
30
56
  }
31
57
  /** Fail-closed pre-flight: all mandatory evidence files must exist and be non-empty. */
32
58
  export declare function preflightEvidence(dir: string): PreflightResult;
59
+ /** Validate the relative-path SHA-256 manifest against the exact packet file set. */
60
+ export declare function validatePacketManifest(manifestText: string, actualFiles: readonly PacketManifestFile[]): PacketManifestValidation;
61
+ /**
62
+ * Verify an immutable cumulative-review packet before any reviewer sees it.
63
+ * Live git SHA/tree/cleanliness and base..candidate diff checks remain caller
64
+ * responsibilities because this module owns evidence bytes, not repositories.
65
+ */
66
+ export declare function verifySealedEvidencePacket(input: SealedEvidencePacketInput): SealedEvidencePacket;
33
67
  //# sourceMappingURL=evidence.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"evidence.d.ts","sourceRoot":"","sources":["../src/evidence.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,wBAAwB,UAQpC,CAAC;AAEF,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAmB7E;AAWD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,YAAY,CAgBzE;AA8CD,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,wFAAwF;AACxF,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,CAS9D"}
1
+ {"version":3,"file":"evidence.d.ts","sourceRoot":"","sources":["../src/evidence.ts"],"names":[],"mappings":"AAYA;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,wBAAwB,UAQpC,CAAC;AAEF,uFAAuF;AACvF,eAAO,MAAM,4BAA4B,oVAkB/B,CAAC;AAEX,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,wBAAwB;IACvC,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,yBAAyB;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CA8B7E;AAaD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,YAAY,CAgBzE;AA8CD,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,wFAAwF;AACxF,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,CAS9D;AAED,qFAAqF;AACrF,wBAAgB,sBAAsB,CACpC,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,SAAS,kBAAkB,EAAE,GACzC,wBAAwB,CA+B1B;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,yBAAyB,GAAG,oBAAoB,CAyEjG"}
package/dist/evidence.js CHANGED
@@ -1,6 +1,8 @@
1
- import { join } from "node:path";
1
+ import { createHash } from "node:crypto";
2
+ import { lstatSync, readFileSync, readdirSync, realpathSync } from "node:fs";
3
+ import { isAbsolute, join, relative, sep } from "node:path";
2
4
  import { parseUnifiedDiff } from "@claudexor/core";
3
- import { containsSecretLikeToken, readTextSafe, redactSecrets, sha256, writeText } from "@claudexor/util";
5
+ import { containsSecretLikeToken, readTextSafe, redactSecrets, sha256, writeText, } from "@claudexor/util";
4
6
  export const MANDATORY_EVIDENCE_FILES = [
5
7
  "USER_INTENT.md",
6
8
  "FORBIDDEN_FINDINGS.md",
@@ -10,6 +12,26 @@ export const MANDATORY_EVIDENCE_FILES = [
10
12
  "TESTS.txt",
11
13
  "DECIDED_TRADEOFFS.md",
12
14
  ];
15
+ /** One sealed packet contract shared by the cumulative Tier-1 and Tier-2 reviewers. */
16
+ export const FROZEN_REVIEW_EVIDENCE_FILES = [
17
+ "USER_INTENT.md",
18
+ "FORBIDDEN_FINDINGS.md",
19
+ "PLAN_ACCEPTED.md",
20
+ "DECIDED_TRADEOFFS.md",
21
+ "AUTHORIZATION.json",
22
+ "FREEZE.json",
23
+ "DIFF.patch",
24
+ "DIFF_SUMMARY.md",
25
+ "PHASE_DELTA.md",
26
+ "COMMITS.tsv",
27
+ "TRACEABILITY.md",
28
+ "TESTS.txt",
29
+ "TEST_RESULTS.json",
30
+ "FINGERPRINTS.json",
31
+ "RUNTIME.md",
32
+ "FILES_TO_READ_WHOLE.txt",
33
+ "RELEASE_PREFLIGHT.md",
34
+ ];
13
35
  export function writeEvidencePacket(dir, packet) {
14
36
  writeText(join(dir, "USER_INTENT.md"), evidenceProse("USER_INTENT.md", packet.userIntent));
15
37
  writeText(join(dir, "FORBIDDEN_FINDINGS.md"), evidenceProse("FORBIDDEN_FINDINGS.md", packet.forbiddenFindings, "(none — no approaches explicitly rejected)"));
@@ -95,4 +117,149 @@ export function preflightEvidence(dir) {
95
117
  }
96
118
  return { ok: missing.length === 0 && empty.length === 0, missing, empty };
97
119
  }
120
+ /** Validate the relative-path SHA-256 manifest against the exact packet file set. */
121
+ export function validatePacketManifest(manifestText, actualFiles) {
122
+ const reasons = [];
123
+ const expected = new Map();
124
+ const lines = String(manifestText).split(/\r?\n/).filter(Boolean);
125
+ for (const [index, line] of lines.entries()) {
126
+ const match = /^([0-9a-f]{64}) [ *](.+)$/.exec(line);
127
+ if (!match) {
128
+ reasons.push(`invalid manifest line ${index + 1}`);
129
+ continue;
130
+ }
131
+ const path = match[2].replace(/^\.\//, "");
132
+ if (!path || path === "MANIFEST.sha256" || isAbsolute(path) || path.split("/").includes("..")) {
133
+ reasons.push(`invalid manifest path '${path}'`);
134
+ continue;
135
+ }
136
+ if (expected.has(path)) {
137
+ reasons.push(`duplicate manifest path '${path}'`);
138
+ continue;
139
+ }
140
+ expected.set(path, match[1]);
141
+ }
142
+ const actual = new Map(actualFiles.map((file) => [file.path, file.sha256]));
143
+ for (const [path, digest] of expected) {
144
+ if (!actual.has(path))
145
+ reasons.push(`manifest file missing: ${path}`);
146
+ else if (actual.get(path) !== digest)
147
+ reasons.push(`manifest digest mismatch: ${path}`);
148
+ }
149
+ for (const path of actual.keys()) {
150
+ if (!expected.has(path))
151
+ reasons.push(`unsealed packet file: ${path}`);
152
+ }
153
+ if (expected.size === 0)
154
+ reasons.push("packet manifest is empty");
155
+ return { ok: reasons.length === 0, reasons, files: [...expected.keys()] };
156
+ }
157
+ /**
158
+ * Verify an immutable cumulative-review packet before any reviewer sees it.
159
+ * Live git SHA/tree/cleanliness and base..candidate diff checks remain caller
160
+ * responsibilities because this module owns evidence bytes, not repositories.
161
+ */
162
+ export function verifySealedEvidencePacket(input) {
163
+ assertLowerHex(input.candidateSha, 40, "candidate SHA");
164
+ assertLowerHex(input.candidateTree, 40, "candidate tree");
165
+ const evidenceDir = realpathSync(input.evidenceDir);
166
+ const manifestPath = join(evidenceDir, "MANIFEST.sha256");
167
+ const manifestStat = lstatSync(manifestPath);
168
+ if (!manifestStat.isFile() || manifestStat.isSymbolicLink()) {
169
+ throw new Error("MANIFEST.sha256 must be a regular file");
170
+ }
171
+ const manifestBytes = readFileSync(manifestPath);
172
+ const manifestSha256 = hashBytes(manifestBytes);
173
+ if (input.expectedManifestSha256 !== undefined) {
174
+ const expected = normalizeSha256(input.expectedManifestSha256);
175
+ if (manifestSha256 !== expected) {
176
+ throw new Error(`packet manifest identity mismatch (expected ${expected}, got ${manifestSha256})`);
177
+ }
178
+ }
179
+ const actualFiles = collectPacketFiles(evidenceDir);
180
+ const manifest = validatePacketManifest(manifestBytes.toString("utf8"), actualFiles);
181
+ if (!manifest.ok)
182
+ throw new Error(`packet manifest failed: ${manifest.reasons.join("; ")}`);
183
+ for (const file of actualFiles) {
184
+ const text = readFileSync(join(evidenceDir, file.path), "utf8");
185
+ if (containsSecretLikeToken(file.path) || containsSecretLikeToken(text)) {
186
+ throw new Error(`sealed packet contains a secret-like token: ${file.path}`);
187
+ }
188
+ }
189
+ const missing = FROZEN_REVIEW_EVIDENCE_FILES.filter((file) => !manifest.files.includes(file));
190
+ if (missing.length > 0)
191
+ throw new Error(`sealed packet is missing: ${missing.join(", ")}`);
192
+ const empty = FROZEN_REVIEW_EVIDENCE_FILES.filter((file) => readFileSync(join(evidenceDir, file)).length === 0);
193
+ if (empty.length > 0)
194
+ throw new Error(`sealed packet contains empty files: ${empty.join(", ")}`);
195
+ let freeze;
196
+ try {
197
+ freeze = JSON.parse(readFileSync(join(evidenceDir, "FREEZE.json"), "utf8"));
198
+ }
199
+ catch (error) {
200
+ throw new Error(`invalid FREEZE.json: ${error instanceof Error ? error.message : String(error)}`);
201
+ }
202
+ if (!freeze || typeof freeze !== "object" || Array.isArray(freeze)) {
203
+ throw new Error("invalid FREEZE.json: expected an object");
204
+ }
205
+ const fields = freeze;
206
+ if (fields["candidateSha"] !== input.candidateSha) {
207
+ throw new Error("FREEZE.json candidate SHA does not match the requested candidate");
208
+ }
209
+ if (fields["candidateTree"] !== input.candidateTree) {
210
+ throw new Error("FREEZE.json candidate tree does not match the requested candidate");
211
+ }
212
+ const baseSha = fields["baseSha"];
213
+ if (typeof baseSha !== "string")
214
+ throw new Error("FREEZE.json must contain baseSha");
215
+ assertLowerHex(baseSha, 40, "FREEZE.json base SHA");
216
+ const preflight = preflightEvidence(evidenceDir);
217
+ if (!preflight.ok) {
218
+ throw new Error(`sealed packet evidence preflight failed (missing: ${preflight.missing.join(", ")}; empty: ${preflight.empty.join(", ")})`);
219
+ }
220
+ return {
221
+ evidenceDir,
222
+ baseSha,
223
+ candidateSha: input.candidateSha,
224
+ candidateTree: input.candidateTree,
225
+ diff: readFileSync(join(evidenceDir, "DIFF.patch"), "utf8"),
226
+ manifestSha256,
227
+ files: manifest.files,
228
+ };
229
+ }
230
+ function collectPacketFiles(root, current = root) {
231
+ const files = [];
232
+ for (const entry of readdirSync(current, { withFileTypes: true })) {
233
+ const absolute = join(current, entry.name);
234
+ if (entry.isSymbolicLink()) {
235
+ throw new Error(`sealed packet must not contain symlinks: ${relative(root, absolute)}`);
236
+ }
237
+ if (entry.isDirectory()) {
238
+ files.push(...collectPacketFiles(root, absolute));
239
+ }
240
+ else if (entry.isFile() && entry.name !== "MANIFEST.sha256") {
241
+ files.push({
242
+ path: relative(root, absolute).split(sep).join("/"),
243
+ sha256: hashBytes(readFileSync(absolute)),
244
+ });
245
+ }
246
+ else if (!entry.isFile()) {
247
+ throw new Error(`sealed packet contains a non-regular file: ${relative(root, absolute)}`);
248
+ }
249
+ }
250
+ return files;
251
+ }
252
+ function normalizeSha256(value) {
253
+ const normalized = value.startsWith("sha256:") ? value.slice(7) : value;
254
+ assertLowerHex(normalized, 64, "packet manifest SHA-256");
255
+ return normalized;
256
+ }
257
+ function assertLowerHex(value, length, label) {
258
+ if (!new RegExp(`^[0-9a-f]{${length}}$`).test(value)) {
259
+ throw new Error(`${label} must be exactly ${length} lowercase hex characters`);
260
+ }
261
+ }
262
+ function hashBytes(bytes) {
263
+ return createHash("sha256").update(bytes).digest("hex");
264
+ }
98
265
  //# sourceMappingURL=evidence.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"evidence.js","sourceRoot":"","sources":["../src/evidence.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"evidence.js","sourceRoot":"","sources":["../src/evidence.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -2,5 +2,6 @@ export * from "./glob.js";
2
2
  export * from "./agents.js";
3
3
  export * from "./atlas.js";
4
4
  export * from "./contextpack.js";
5
+ export * from "./raw-context.js";
5
6
  export * from "./evidence.js";
6
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC"}
package/dist/index.js CHANGED
@@ -2,5 +2,6 @@ export * from "./glob.js";
2
2
  export * from "./agents.js";
3
3
  export * from "./atlas.js";
4
4
  export * from "./contextpack.js";
5
+ export * from "./raw-context.js";
5
6
  export * from "./evidence.js";
6
7
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { RawContextPacket, type ImplementationTransport, type WorkspaceEnvelope } from "@claudexor/schema";
2
+ import { type AtlasOptions } from "./atlas.js";
3
+ export declare function rawContextForEnvelope(transport: ImplementationTransport, envelope: WorkspaceEnvelope): Promise<RawContextPacket | null>;
4
+ /** Build the complete, bounded text packet consumed by raw patch producers. */
5
+ export declare function buildRawContextPacket(repoRoot: string, baseCommitSha: string, options?: AtlasOptions): Promise<RawContextPacket>;
6
+ //# sourceMappingURL=raw-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"raw-context.d.ts","sourceRoot":"","sources":["../src/raw-context.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,gBAAgB,EAChB,KAAK,uBAAuB,EAG5B,KAAK,iBAAiB,EACvB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAOhE,wBAAsB,qBAAqB,CACzC,SAAS,EAAE,uBAAuB,EAClC,QAAQ,EAAE,iBAAiB,GAC1B,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAOlC;AAsBD,+EAA+E;AAC/E,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,gBAAgB,CAAC,CAuD3B"}
@@ -0,0 +1,91 @@
1
+ import { readFileSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { runCapture } from "@claudexor/core";
4
+ import { RawContextPacket, } from "@claudexor/schema";
5
+ import { hashJson, sha256 } from "@claudexor/util";
6
+ import { buildScopeAtlas } from "./atlas.js";
7
+ export async function rawContextForEnvelope(transport, envelope) {
8
+ if (transport !== "git_patch_envelope")
9
+ return null;
10
+ if (envelope.worktree_path === envelope.repo_root)
11
+ throw new Error("raw_patch_requires_isolation: raw patch producers require an isolated envelope");
12
+ return buildRawContextPacket(envelope.worktree_path, envelope.base_sha ?? "HEAD");
13
+ }
14
+ async function gitOutput(repo, args) {
15
+ const result = await runCapture("git", ["-C", repo, ...args], { timeoutMs: 30_000 });
16
+ if (result.code !== 0)
17
+ throw new Error(`git ${args[0]} failed: ${result.stderr.trim()}`);
18
+ return result.stdout;
19
+ }
20
+ async function baseEntries(repo, baseCommitSha) {
21
+ const output = await gitOutput(repo, ["ls-tree", "-r", "-z", baseCommitSha]);
22
+ const entries = new Map();
23
+ for (const record of output.split("\0")) {
24
+ if (!record)
25
+ continue;
26
+ const tab = record.indexOf("\t");
27
+ if (tab < 0)
28
+ continue;
29
+ const [mode, type, oid] = record.slice(0, tab).split(" ");
30
+ const path = record.slice(tab + 1);
31
+ if (mode && type === "blob" && oid && path)
32
+ entries.set(path, { mode, oid });
33
+ }
34
+ return entries;
35
+ }
36
+ /** Build the complete, bounded text packet consumed by raw patch producers. */
37
+ export async function buildRawContextPacket(repoRoot, baseCommitSha, options = {}) {
38
+ const [atlas, treeSha, entries] = await Promise.all([
39
+ buildScopeAtlas(repoRoot, options),
40
+ gitOutput(repoRoot, ["rev-parse", `${baseCommitSha}^{tree}`]).then((value) => value.trim()),
41
+ baseEntries(repoRoot, baseCommitSha),
42
+ ]);
43
+ const readableFiles = [];
44
+ const omissions = [...atlas.omitted];
45
+ const omittedPaths = new Set(omissions.map((item) => item.path));
46
+ for (const entry of atlas.atlas) {
47
+ if (entry.disposition !== "full") {
48
+ if (!omittedPaths.has(entry.path)) {
49
+ omissions.push({
50
+ path: entry.path,
51
+ reason: entry.reason ?? entry.disposition,
52
+ replacement: "index",
53
+ ...(entry.hash ? { hash: entry.hash } : {}),
54
+ });
55
+ }
56
+ continue;
57
+ }
58
+ const gitEntry = entries.get(entry.path);
59
+ if (!gitEntry || (gitEntry.mode !== "100644" && gitEntry.mode !== "100755")) {
60
+ omissions.push({
61
+ path: entry.path,
62
+ reason: gitEntry ? `unsupported git mode ${gitEntry.mode}` : "missing base-tree evidence",
63
+ replacement: "index",
64
+ });
65
+ continue;
66
+ }
67
+ const content = readFileSync(join(repoRoot, entry.path), "utf8");
68
+ readableFiles.push({
69
+ path: entry.path,
70
+ mode: gitEntry.mode,
71
+ blob_oid: gitEntry.oid,
72
+ content_hash: sha256(content),
73
+ content,
74
+ });
75
+ }
76
+ readableFiles.sort((a, b) => a.path.localeCompare(b.path));
77
+ omissions.sort((a, b) => a.path.localeCompare(b.path));
78
+ const body = {
79
+ schema_version: 1,
80
+ base_commit_sha: baseCommitSha,
81
+ base_tree_sha: treeSha,
82
+ readable_files: readableFiles,
83
+ editable_paths: readableFiles.map((file) => file.path),
84
+ creatable_roots: ["."],
85
+ file_manifest: atlas.atlas,
86
+ omissions,
87
+ evidence_refs: readableFiles.map((file) => `git:${treeSha}:${file.path}:${file.blob_oid}`),
88
+ };
89
+ return RawContextPacket.parse({ ...body, packet_hash: hashJson(body) });
90
+ }
91
+ //# sourceMappingURL=raw-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"raw-context.js","sourceRoot":"","sources":["../src/raw-context.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@claudexor/context",
3
- "version": "1.0.1",
3
+ "version": "2.1.3",
4
4
  "license": "MIT",
5
5
  "description": "AGENTS.md-first context: Scope Atlas (no silent truncation), hashable ContextPack, evidence packet.",
6
6
  "type": "module",
@@ -16,9 +16,9 @@
16
16
  "dist"
17
17
  ],
18
18
  "dependencies": {
19
- "@claudexor/core": "1.0.1",
20
- "@claudexor/util": "1.0.1",
21
- "@claudexor/schema": "1.0.1"
19
+ "@claudexor/core": "2.1.3",
20
+ "@claudexor/schema": "2.1.3",
21
+ "@claudexor/util": "2.1.3"
22
22
  },
23
23
  "repository": {
24
24
  "type": "git",