nexus-canon 1.1.0 → 1.3.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.
@@ -1 +1 @@
1
- {"version":3,"file":"canonGraph.d.ts","sourceRoot":"","sources":["../src/canonGraph.ts"],"names":[],"mappings":"AAgCA,OAAO,EAAyB,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAK1E,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,0GAA0G;IAC1G,IAAI,EAAE,MAAM,CAAC;IACb,6DAA6D;IAC7D,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACvC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC;AAwCD;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAkDnF;AAED,yEAAyE;AACzE,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,CAAC,EAAE,YAAY,GAAG,MAAM,GAAG,SAAS,CAO1G;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8DAA8D;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2FAA2F;IAC3F,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iGAAiG;IACjG,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,mGAAmG;AACnG,wBAAsB,UAAU,CAAC,CAAC,GAAE,iBAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAuOrF"}
1
+ {"version":3,"file":"canonGraph.d.ts","sourceRoot":"","sources":["../src/canonGraph.ts"],"names":[],"mappings":"AAgCA,OAAO,EAAyB,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAK1E,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,0GAA0G;IAC1G,IAAI,EAAE,MAAM,CAAC;IACb,6DAA6D;IAC7D,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACvC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC;AAwCD;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAkDnF;AAED,yEAAyE;AACzE,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,CAAC,EAAE,YAAY,GAAG,MAAM,GAAG,SAAS,CAO1G;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8DAA8D;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2FAA2F;IAC3F,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iGAAiG;IACjG,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,mGAAmG;AACnG,wBAAsB,UAAU,CAAC,CAAC,GAAE,iBAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA6OrF"}
@@ -289,12 +289,13 @@ export async function canonGraph(o = {}) {
289
289
  fileNodeByPath.set(n.source_file, n.id);
290
290
  }
291
291
  }
292
- touchedStats = { edges: 0, inferredEdges: 0, toCodeNodes: 0, toFileNodes: 0, foreignSessions: 0, unownedPaths: 0 };
292
+ touchedStats = { edges: 0, inferredEdges: 0, ambiguousEdges: 0, toCodeNodes: 0, toFileNodes: 0, foreignSessions: 0, unownedPaths: 0 };
293
293
  const madeFileNodes = new Map();
294
294
  const presentSessionNodes = new Set(nodes.filter((n) => n.id.startsWith('sess:')).map((n) => n.id));
295
295
  // Edges dedupe by (session node, target): dual-lineage copies of one
296
296
  // session share a uuid — overlapping touches keep the MAX weight
297
297
  // (lineages are copies; summing would double-count).
298
+ const RANK = { EXTRACTED: 3, INFERRED: 2, AMBIGUOUS: 1 };
298
299
  const touchedEdges = new Map();
299
300
  for (const s of sessions) {
300
301
  const home = sessionProject(projects, s);
@@ -304,12 +305,14 @@ export async function canonGraph(o = {}) {
304
305
  const sessSource = path.join('canon', s.rel);
305
306
  // Pass 1 = tier 1/2 structured evidence (EXTRACTED); pass 2 = tier 3
306
307
  // Bash-parsed paths (INFERRED). Structured evidence wins per edge.
307
- for (const [files, inferred] of [
308
- [touchedIdx.byRel.get(s.rel), false],
309
- [touchedIdx.inferredByRel.get(s.rel), true],
308
+ for (const [files, conf] of [
309
+ [touchedIdx.byRel.get(s.rel), 'EXTRACTED'],
310
+ [touchedIdx.inferredByRel.get(s.rel), 'INFERRED'],
311
+ [touchedIdx.ambiguousByRel.get(s.rel), 'AMBIGUOUS'],
310
312
  ]) {
311
313
  if (!files || files.size === 0)
312
314
  continue;
315
+ const inferred = conf !== 'EXTRACTED';
313
316
  for (const [abs, count] of files) {
314
317
  const owner = ownerOf(abs);
315
318
  if (!owner) {
@@ -344,23 +347,26 @@ export async function canonGraph(o = {}) {
344
347
  const ek = sessNodeId + '|' + target;
345
348
  const prev = touchedEdges.get(ek);
346
349
  if (prev) {
347
- if (!inferred) {
348
- prev.weight = Math.max(prev.weight, count);
349
- prev.inferred = false;
350
+ if (RANK[conf] > RANK[prev.conf]) {
351
+ prev.conf = conf;
352
+ prev.weight = count;
350
353
  }
354
+ else if (RANK[conf] === RANK[prev.conf])
355
+ prev.weight = Math.max(prev.weight, count);
351
356
  }
352
357
  else
353
- touchedEdges.set(ek, { source: sessNodeId, target, weight: count, source_file: sessSource, inferred });
358
+ touchedEdges.set(ek, { source: sessNodeId, target, weight: count, source_file: sessSource, conf });
354
359
  }
355
360
  }
356
361
  }
357
362
  for (const e of touchedEdges.values()) {
358
- const conf = e.inferred ? 'INFERRED' : 'EXTRACTED';
359
- links.push({ source: e.source, target: e.target, relation: 'touched', confidence: conf, confidence_score: CONFIDENCE_SCORE[conf], source_file: e.source_file, source_location: '', weight: e.weight });
360
- if (e.inferred)
363
+ links.push({ source: e.source, target: e.target, relation: 'touched', confidence: e.conf, confidence_score: CONFIDENCE_SCORE[e.conf], source_file: e.source_file, source_location: '', weight: e.weight });
364
+ if (e.conf === 'EXTRACTED')
365
+ touchedStats.edges++;
366
+ else if (e.conf === 'INFERRED')
361
367
  touchedStats.inferredEdges++;
362
368
  else
363
- touchedStats.edges++;
369
+ touchedStats.ambiguousEdges++;
364
370
  }
365
371
  }
366
372
  const meta = {};
@@ -1 +1 @@
1
- {"version":3,"file":"canonGraph.js","sourceRoot":"","sources":["../src/canonGraph.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAqB,MAAM,gBAAgB,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,MAAM,gBAAgB,GAA2B,EAAE,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;AAWnG,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AAc9D;;;;;;GAMG;AACH,SAAS,gBAAgB,CAAC,IAAY,EAAE,SAAiB;IACvD,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,IAAwB,CAAC;IAC7B,MAAM,IAAI,GAAG,CAAC,GAAW,EAAE,CAAS,EAAE,MAAqB,EAAQ,EAAE;QACnE,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC;YAAE,OAAO;QACpC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,IAAI,GAAG,GAAG,CAAC;YAAC,OAAO;QAAC,CAAC;QACrE,gEAAgE;QAChE,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YAC5C,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBAAC,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;gBAAC,IAAI,IAAI;oBAAE,OAAO;YAAC,CAAC;QACjF,CAAC;IACH,CAAC,CAAC;IACF,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IAC1B,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AACvG,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,KAAa;IACnD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;IAC/D,IAAI,GAAG,GAAgB,EAAE,CAAC;IAC1B,IAAI,CAAC;QAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,YAAY,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC;IAEvH,MAAM,QAAQ,GAAiC,EAAE,CAAC;IAClD,MAAM,KAAK,GAAG,CAAC,EAAU,EAAE,IAAY,EAAE,EAAE,CACzC,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,CAAC;IACvE,MAAM,GAAG,GAAG,CAAC,EAAU,EAAE,IAAY,EAAE,OAAe,EAAE,GAAW,EAAE,EAAE;QACrE,MAAM,CAAC,GAAG,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAC1B,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI;YAAE,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;QACnC,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3C,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,oCAAoC;IACtG,CAAC,CAAC;IACF,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAE3C,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;IACxD,IAAI,MAAM,GAAa,EAAE,CAAC;IAC1B,IAAI,CAAC;QAAC,MAAM,GAAG,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC;IAC5H,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;QAC1C,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,UAAU,EAAE,CAAC;YAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,GAAG,CAAC,CAAC;YAAC,SAAS;QAAC,CAAC;QACjG,IAAI,OAAO,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;YAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,CAAC,CAAC;YAAC,SAAS;QAAC,CAAC;QACjG,IAAI,OAAO,IAAI,GAAG,CAAC,UAAU,CAAC,OAAO,GAAG,GAAG,CAAC,EAAE,CAAC;YAC7C,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAChD,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,gBAAgB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YAC7D,sEAAsE;YACtE,mEAAmE;YACnE,IAAI,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACpD,IAAI,QAAQ,CAAC,EAAE,CAAC,IAAI,QAAQ,CAAC,EAAE,CAAE,CAAC,IAAI,IAAI,QAAQ,CAAC,EAAE,CAAE,CAAC,IAAI,KAAK,IAAI;gBAAE,EAAE,GAAG,SAAS,CAAC;YACtF,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,aAAa,EAAE,GAAG,CAAC,CAAC;YACrD,SAAS;QACX,CAAC;QACD,2EAA2E;QAC3E,yEAAyE;QACzE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,GAAG,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;IACzD,IAAI,MAAM,GAAa,EAAE,CAAC;IAC1B,IAAI,CAAC;QAAC,MAAM,GAAG,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC;IAC5H,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;QAClC,MAAM,EAAE,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;QAC9C,MAAM,QAAQ,GAAG,QAAQ,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC;QACpC,MAAM,KAAK,GAAG,IAAI,IAAI,KAAK,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;YACxD,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAChF,GAAG,CAAC,EAAE,EAAE,QAAQ,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,EAAE,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC;IAClG,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,cAAc,CAAC,QAAsC,EAAE,CAAe;IACpF,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QACxC,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC;YACrD,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;gBAAE,OAAO,CAAC,CAAC,EAAE,CAAC;QAC5E,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAoBD,mGAAmG;AACnG,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAuB,EAAE;IACxD,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,kBAAkB,CAAC;IAC5C,MAAM,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,mBAAmB,EAAE,GAAG,EAAE,CAAC;IACzD,2EAA2E;IAC3E,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,wDAAwD,CAAC;QAChG,OAAO,CAAC,GAAG,CAAC,6BAA6B,KAAK,cAAc,IAAI,EAAE,CAAC,CAAC;QACpE,YAAY,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IAC/E,CAAC;IACD,MAAM,QAAQ,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;IAChD,MAAM,QAAQ,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAC9C,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QACxC,IAAI,GAAG;YAAE,QAAQ,CAAC,GAAG,CAAE,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAE,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACxG,CAAC;IAED,oDAAoD;IACpD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IACvD,MAAM,SAAS,GAAU,EAAE,CAAC;IAC5B,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAE,EAAE;QAC7B,IAAI,EAAE,GAAgB,EAAE,CAAC;QACzB,IAAI,CAAC;YAAC,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO;QAAC,CAAC;QAC1E,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;YACnB,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;YAC/B,IAAI,CAAC,CAAC,WAAW,EAAE;gBAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;iBAC5B,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBAClC,IAAI,CAAC;oBAAC,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,gBAAgB,CAAC,CAAC;YAC3I,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IACF,QAAQ,CAAC,OAAO,CAAC,CAAC;IAElB,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,IAAI,CAAC;QAAC,IAAI,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC;IAElI,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;IACtE,IAAI,UAAU,GAAG,CAAC,EAAE,UAAU,GAAG,CAAC,EAAE,eAAe,GAAG,CAAC,CAAC;IACxD,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,4EAA4E;IAC5E,0EAA0E;IAC1E,4EAA4E;IAC5E,wEAAwE;IACxE,IAAI,UAAqE,CAAC;IAC1E,IAAI,CAAC,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;QACjF,UAAU,GAAG,MAAM,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,+BAA+B,UAAU,CAAC,OAAO,wBAAwB,UAAU,CAAC,MAAM,aAAa,CAAC,CAAC;IACvH,CAAC;IAED,8EAA8E;IAC9E,8EAA8E;IAC9E,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;SAC1C,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,qEAAqE;SAC3F,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;SAC7F,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACrD,MAAM,OAAO,GAAG,CAAC,GAAW,EAA4C,EAAE;QACxE,KAAK,MAAM,CAAC,IAAI,aAAa;YAAE,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC;gBAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QACpH,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC3B,IAAI,CAAC,IAAI;YAAE,SAAS;QACpB,MAAM,KAAK,GAAU,EAAE,CAAC;QACxB,MAAM,KAAK,GAAU,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,CAAC,MAAc,EAAE,MAAc,EAAE,QAAgB,EAAE,UAAkD,EAAE,WAAmB,EAAE,EAAE,CACzI,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,UAAU,CAAC,EAAE,WAAW,EAAE,eAAe,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QAEtJ,MAAM,UAAU,GAAG,QAAQ,GAAG,EAAE,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,GAAG,OAAO,EAAE,eAAe,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;QAEzI,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzB,IAAI,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,GAAG;gBAAE,SAAS;YAClD,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,eAAe,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;YACtL,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5E,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;YAC1B,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC;YACpC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,EAAE,WAAW,EAAE,CAAC,CAAC,aAAa,EAAE,eAAe,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YACnN,yEAAyE;YACzE,qEAAqE;YACrE,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAAC,IAAI,CAAC,CAAC,EAAE,KAAK,GAAG;oBAAE,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC;YAAC,CAAC;;gBAC5G,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC;QAC1E,CAAC;QAED,6EAA6E;QAC7E,wEAAwE;QACxE,0EAA0E;QAC1E,0EAA0E;QAC1E,oEAAoE;QACpE,MAAM,aAAa,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,KAAK,GAAG,CAAC;YACrE,CAAC,CAAC,CAAC,CAAC,UAAU;YACd,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,EAAE,YAAY,CAAC,CAAC;QACvD,IAAI,QAAsE,CAAC;QAC3E,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC;gBACH,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC;gBAC7D,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBACzB,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBACpC,KAAK,MAAM,CAAC,IAAI,EAAE;oBAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,uEAAuE;gBAC1G,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;oBACnB,IAAI,CAAC,CAAC,gBAAgB,KAAK,SAAS;wBAAE,CAAC,CAAC,gBAAgB,GAAG,gBAAgB,CAAC,CAAC,CAAC,UAAU,IAAI,WAAW,CAAC,IAAI,GAAG,CAAC;oBAChH,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAChB,CAAC;gBACD,QAAQ,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC;YAC3E,CAAC;YAAC,MAAM,CAAC,CAAC,kEAAkE,CAAC,CAAC;QAChF,CAAC;QAED,yEAAyE;QACzE,0EAA0E;QAC1E,yEAAyE;QACzE,kEAAkE;QAClE,yEAAyE;QACzE,yEAAyE;QACzE,wEAAwE;QACxE,wEAAwE;QACxE,0EAA0E;QAC1E,IAAI,YAES,CAAC;QACd,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,cAAc,GAAG,IAAI,GAAG,EAAkB,CAAC;YACjD,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;gBACtB,IAAI,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;oBAAE,SAAS,CAAC,uBAAuB;gBAC1E,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,eAAe,KAAK,IAAI,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC;oBAC5F,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC;wBAAE,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;gBAClF,CAAC;YACH,CAAC;YACD,YAAY,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC;YACnH,MAAM,aAAa,GAAG,IAAI,GAAG,EAAkB,CAAC;YAChD,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACpG,qEAAqE;YACrE,iEAAiE;YACjE,qDAAqD;YACrD,MAAM,YAAY,GAAG,IAAI,GAAG,EAAuG,CAAC;YACpI,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;gBACzB,MAAM,IAAI,GAAG,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;gBACzC,IAAI,IAAI,KAAK,SAAS;oBAAE,SAAS;gBACjC,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;gBACpC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;gBAC7C,qEAAqE;gBACrE,mEAAmE;gBACnE,KAAK,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI;oBAC9B,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC;oBACpC,CAAC,UAAU,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC;iBACI,EAAE,CAAC;oBAClD,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC;wBAAE,SAAS;oBACzC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,KAAK,EAAE,CAAC;wBACjC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;wBAC3B,IAAI,CAAC,KAAK,EAAE,CAAC;4BAAC,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ;gCAAE,YAAY,CAAC,YAAY,EAAE,CAAC;4BAAC,SAAS;wBAAC,CAAC;wBACrF,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG;4BAAE,SAAS,CAAC,uCAAuC;wBACxE,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;wBACtB,IAAI,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;wBACrC,IAAI,MAAM,EAAE,CAAC;4BAAC,IAAI,CAAC,QAAQ;gCAAE,YAAY,CAAC,WAAW,EAAE,CAAC;wBAAC,CAAC;6BACrD,CAAC;4BACJ,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;4BAChC,IAAI,CAAC,MAAM,EAAE,CAAC;gCACZ,MAAM,GAAG,QAAQ,GAAG,EAAE,CAAC;gCACvB,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;gCAC/B,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,EAAE,eAAe,EAAE,EAAE,EAAE,CAAC,CAAC;4BACtH,CAAC;4BACD,IAAI,CAAC,QAAQ;gCAAE,YAAY,CAAC,WAAW,EAAE,CAAC;wBAC5C,CAAC;wBACD,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;4BACzC,uEAAuE;4BACvE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,eAAe,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;4BACjM,mBAAmB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;4BACpC,YAAY,CAAC,eAAe,EAAE,CAAC;wBACjC,CAAC;wBACD,MAAM,EAAE,GAAG,UAAU,GAAG,GAAG,GAAG,MAAM,CAAC;wBACrC,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;wBAClC,IAAI,IAAI,EAAE,CAAC;4BAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gCAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gCAAC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;4BAAC,CAAC;wBAAC,CAAC;;4BAC9F,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC;oBAC9G,CAAC;gBACH,CAAC;YACH,CAAC;YACD,KAAK,MAAM,CAAC,IAAI,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC;gBACtC,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC;gBACnD,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,eAAe,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;gBACvM,IAAI,CAAC,CAAC,QAAQ;oBAAE,YAAY,CAAC,aAAa,EAAE,CAAC;;oBAAM,YAAY,CAAC,KAAK,EAAE,CAAC;YAC1E,CAAC;QACH,CAAC;QAED,MAAM,IAAI,GAAQ,EAAE,CAAC;QACrB,IAAI,QAAQ;YAAE,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QACxC,IAAI,YAAY;YAAE,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;QACpD,4EAA4E;QAC5E,wEAAwE;QACxE,wEAAwE;QACxE,wEAAwE;QACxE,sCAAsC;QACtC,MAAM,IAAI,GAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QACnF,UAAU,IAAI,KAAK,CAAC,MAAM,CAAC;QAAC,UAAU,IAAI,KAAK,CAAC,MAAM,CAAC;QACvD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;YACd,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC;YACvD,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACpD,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YAC3D,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,YAAY,CAAC,CAAC;YAC3D,IAAI,cAAc,GAAG,KAAK,CAAC;YAC3B,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC;gBACtB,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;oBACrD,OAAO,IAAI,CAAC,eAAe,CAAC;oBAC5B,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBACjE,CAAC;gBAAC,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC;YAC3B,CAAC;YACD,IAAI,cAAc;gBAAE,eAAe,EAAE,CAAC;iBACjC,CAAC;gBACJ,IAAI,IAAI;oBAAE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;gBACtC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBACpD,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,MAAM,OAAO,GAAG,GAAG,KAAK,CAAC,MAAM,sBAAsB,UAAU,WAAW,UAAU,QAAQ,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,eAAe,yBAAyB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACtK,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QACd,MAAM,GAAG,GAAG,CAAC,CAAW,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QAC3F,GAAG,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;QACnB,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;YAC1C,GAAG,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,gBAAgB,OAAO,EAAE,CAAC,CAAC,CAAC;YACvD,GAAG,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;YACtC,OAAO,CAAC,GAAG,CAAC,yBAAyB,OAAO,EAAE,CAAC,CAAC;YAChD,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC;;YAAM,OAAO,CAAC,GAAG,CAAC,6BAA6B,OAAO,GAAG,CAAC,CAAC;IAC9D,CAAC;;QAAM,OAAO,CAAC,GAAG,CAAC,qBAAqB,OAAO,EAAE,CAAC,CAAC;IACnD,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;AAC3E,CAAC"}
1
+ {"version":3,"file":"canonGraph.js","sourceRoot":"","sources":["../src/canonGraph.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { type HarnessName } from './canonTools.js';
1
2
  export interface CanonStoreOptions {
2
3
  /** Canon store working clone (default /tmp/canon-store — off-quota; auto-cloned). */
3
4
  store?: string;
@@ -15,6 +16,8 @@ export interface CanonSession {
15
16
  export interface CanonPullOptions extends CanonStoreOptions {
16
17
  /** Session uuid (or unique prefix) to materialize. */
17
18
  session: string;
19
+ /** Target harness for the tool-compatibility report (default nexus-cortex — where pull lands). */
20
+ target?: HarnessName;
18
21
  /** Destination directory (default {home}/omniclaude-v4/.cortex/sessions). */
19
22
  to?: string;
20
23
  /** Overwrite an existing local session file (default false — pull is a branch, never a clobber). */
@@ -1 +1 @@
1
- {"version":3,"file":"canonPull.d.ts","sourceRoot":"","sources":["../src/canonPull.ts"],"names":[],"mappings":"AAoBA,MAAM,WAAW,iBAAiB;IAChC,qFAAqF;IACrF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sFAAsF;IACtF,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,gBAAiB,SAAQ,iBAAiB;IACzD,sDAAsD;IACtD,OAAO,EAAE,MAAM,CAAC;IAChB,6EAA6E;IAC7E,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,oGAAoG;IACpG,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,0EAA0E;IAC1E,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,YAAY,CAAC;CACxB;AAcD,kFAAkF;AAClF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,EAAE,CA2CnE;AAED,qFAAqF;AACrF,wBAAsB,SAAS,CAAC,CAAC,GAAE,iBAAiB,GAAG;IAAE,GAAG,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAWtG;AAED,qEAAqE;AACrE,wBAAsB,SAAS,CAAC,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,CA8B7E"}
1
+ {"version":3,"file":"canonPull.d.ts","sourceRoot":"","sources":["../src/canonPull.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAqD,KAAK,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEtG,MAAM,WAAW,iBAAiB;IAChC,qFAAqF;IACrF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sFAAsF;IACtF,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,gBAAiB,SAAQ,iBAAiB;IACzD,sDAAsD;IACtD,OAAO,EAAE,MAAM,CAAC;IAChB,kGAAkG;IAClG,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,6EAA6E;IAC7E,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,oGAAoG;IACpG,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,0EAA0E;IAC1E,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,YAAY,CAAC;CACxB;AAcD,kFAAkF;AAClF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,EAAE,CA2CnE;AAED,qFAAqF;AACrF,wBAAsB,SAAS,CAAC,CAAC,GAAE,iBAAiB,GAAG;IAAE,GAAG,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAWtG;AAED,qEAAqE;AACrE,wBAAsB,SAAS,CAAC,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,CAqC7E"}
package/dist/canonPull.js CHANGED
@@ -17,6 +17,7 @@
17
17
  import * as fs from 'node:fs';
18
18
  import * as path from 'node:path';
19
19
  import { execFileSync } from 'node:child_process';
20
+ import { renderCompat, sessionToolNames, toolCompatibility } from './canonTools.js';
20
21
  /** Clone the store if absent, else pull — rehydrate freshness on arrival. */
21
22
  function ensureFreshStore(store, repoUrl, label = 'canon-pull') {
22
23
  const repo = repoUrl ?? process.env.CANON_REPO ?? 'https://github.com/Spitfire-Products/nexus-canon-store';
@@ -137,6 +138,15 @@ export async function canonPull(o) {
137
138
  console.log(`[canon-pull] materialized ${s.uuid} (${s.harness}${s.title ? ` — "${s.title}"` : ''})`);
138
139
  console.log(`[canon-pull] ${lines} canonical message(s), ${(s.bytes / 1024).toFixed(0)}KB → ${dest}`);
139
140
  console.log(`[canon-pull] resume with: cortex --resume ${s.uuid} "..."`);
141
+ // Phase E rung 1: the pull-time tool-ontology compatibility report — the
142
+ // receiving side learns up front which referenced tools are native, which
143
+ // map by name, and which need relay/re-expression (P4 ladder).
144
+ try {
145
+ const names = await sessionToolNames(dest);
146
+ if (names.length)
147
+ console.log(renderCompat(toolCompatibility(names, o.target ?? 'nexus-cortex')));
148
+ }
149
+ catch { /* report is best-effort — never block a pull */ }
140
150
  return { code: 0, dest, session: s };
141
151
  }
142
152
  //# sourceMappingURL=canonPull.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"canonPull.js","sourceRoot":"","sources":["../src/canonPull.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"canonPull.js","sourceRoot":"","sources":["../src/canonPull.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ export type HarnessName = 'claude-code' | 'nexus-cortex' | 'grok-build' | 'gemini-cli';
2
+ export declare const HARNESSES: HarnessName[];
3
+ /**
4
+ * Canonical concept → per-harness tool names. Seeded from the observed
5
+ * four-harness corpus plus each CLI's documented surface; extend as the
6
+ * §27n roster lands. A name may map to several concepts' worth of behavior —
7
+ * rung 1 keeps it 1:1 on the dominant sense.
8
+ */
9
+ export declare const TOOL_CONCEPTS: Record<string, Partial<Record<HarnessName, string[]>>>;
10
+ /**
11
+ * Rung 2 — arg-schema morphisms. Canonical field dialect = claude-code's
12
+ * (canon IS the Anthropic wire shape; cortex is field-identical, verified).
13
+ * Seeded EMPIRICALLY from the observed local four-harness corpus (2026-08-03
14
+ * scan: claude-code 34 tools/6.4k calls; cortex 12; grok-build 4; gemini 11).
15
+ * evidence grades: 'observed' = field names seen in real calls;
16
+ * 'spec' = read from the harness's published tool schema, not yet observed;
17
+ * 'unverified' = name-mapped at rung 1 but arg shape unconfirmed either way.
18
+ */
19
+ export interface ArgMorph {
20
+ /** Target tool name this morphism renders into. */
21
+ tool: string;
22
+ /** canonical field → target field (identity fields omitted). */
23
+ rename?: Record<string, string>;
24
+ /** Canonical fields with no target equivalent — reported, never silently lost. */
25
+ drop?: string[];
26
+ /** Target-required fields canon can't supply — value is a note/default hint. */
27
+ require?: Record<string, string>;
28
+ evidence: 'observed' | 'spec' | 'unverified';
29
+ }
30
+ export declare const ARG_MORPHISMS: Record<string, {
31
+ canonical: string[];
32
+ byHarness: Partial<Record<HarnessName, ArgMorph>>;
33
+ }>;
34
+ export interface MorphResult {
35
+ status: 'ok' | 'partial' | 'unverified' | 'unmapped';
36
+ concept?: string;
37
+ targetTool?: string;
38
+ input?: Record<string, unknown>;
39
+ /** Canonical fields that had no target equivalent (with their values' presence). */
40
+ dropped: string[];
41
+ notes: string[];
42
+ }
43
+ /**
44
+ * Re-express one tool call in a target harness's arg dialect.
45
+ * Never silent (D8): drops and unverified grades are surfaced in the result.
46
+ */
47
+ export declare function morphToolCall(call: {
48
+ name: string;
49
+ input: Record<string, unknown>;
50
+ }, source: HarnessName, target: HarnessName): MorphResult;
51
+ export interface ToolInventory {
52
+ [harness: string]: Record<string, number>;
53
+ }
54
+ /** Scan the canonical line for observed tool_use names per harness. */
55
+ export declare function deriveToolInventory(store: string): Promise<ToolInventory>;
56
+ export interface ToolCompatReport {
57
+ target: HarnessName;
58
+ referenced: string[];
59
+ mapped: {
60
+ name: string;
61
+ concept: string;
62
+ targetNames: string[];
63
+ argEvidence?: ArgMorph['evidence'];
64
+ argDrops?: string[];
65
+ }[];
66
+ native: string[];
67
+ mcp: string[];
68
+ unmapped: string[];
69
+ }
70
+ /** Classify one session's tool references against a target harness. */
71
+ export declare function toolCompatibility(referenced: string[], target: HarnessName): ToolCompatReport;
72
+ /** Extract the tool_use names referenced in one canonical session file. */
73
+ export declare function sessionToolNames(file: string): Promise<string[]>;
74
+ /** Render the compatibility report for terminal output. */
75
+ export declare function renderCompat(r: ToolCompatReport): string;
76
+ //# sourceMappingURL=canonTools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canonTools.d.ts","sourceRoot":"","sources":["../src/canonTools.ts"],"names":[],"mappings":"AAqBA,MAAM,MAAM,WAAW,GAAG,aAAa,GAAG,cAAc,GAAG,YAAY,GAAG,YAAY,CAAC;AACvF,eAAO,MAAM,SAAS,EAAE,WAAW,EAAgE,CAAC;AAEpG;;;;;GAKG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC,CAehF,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,WAAW,QAAQ;IACvB,mDAAmD;IACnD,IAAI,EAAE,MAAM,CAAC;IACb,gEAAgE;IAChE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,kFAAkF;IAClF,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,gFAAgF;IAChF,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,YAAY,CAAC;CAC9C;AAED,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAA;CAAE,CAiGpH,CAAC;AAEF,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,IAAI,GAAG,SAAS,GAAG,YAAY,GAAG,UAAU,CAAC;IACrD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,oFAAoF;IACpF,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,EACtD,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,WAAW,GAClB,WAAW,CA2Bb;AAWD,MAAM,WAAW,aAAa;IAAG,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE;AAE5E,uEAAuE;AACvE,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAwB/E;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,WAAW,CAAC;IACpB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,EAAE,CAAC;QAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,EAAE,CAAC;IAC5H,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,uEAAuE;AACvE,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,WAAW,GAAG,gBAAgB,CAiB7F;AAED,2EAA2E;AAC3E,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAWtE;AAED,2DAA2D;AAC3D,wBAAgB,YAAY,CAAC,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAexD"}
@@ -0,0 +1,298 @@
1
+ /**
2
+ * canonTools — Phase E rung 1 of the tool-ontology ladder (layer 2 of the
3
+ * cross-harness handoff problem; CANON_CROSS_HARNESS_PLAN.md P4/§27r).
4
+ *
5
+ * Three levers:
6
+ * - deriveToolInventory: the OBSERVED tool vocabulary per harness, scanned
7
+ * from the canonical line itself (empirical, not spec-read).
8
+ * - TOOL_CONCEPTS: the cross-harness name-mapping table, seeded from the
9
+ * real four-harness corpus (2026-08-02) — canonical concept → per-harness
10
+ * tool names. Rung 1 is the NAME map; arg-schema morphisms are rung 2.
11
+ * - toolCompatibility: classify a session's tool references against a
12
+ * target harness — the pull-time compatibility report. Key doctrine
13
+ * (§27b): canon stores RESULTS, so comprehension of a foreign session is
14
+ * never capability-bound; only future AGENCY needs mapping/relay.
15
+ *
16
+ * @module canonTools
17
+ */
18
+ import * as fs from 'node:fs';
19
+ import * as path from 'node:path';
20
+ import * as readline from 'node:readline';
21
+ export const HARNESSES = ['claude-code', 'nexus-cortex', 'grok-build', 'gemini-cli'];
22
+ /**
23
+ * Canonical concept → per-harness tool names. Seeded from the observed
24
+ * four-harness corpus plus each CLI's documented surface; extend as the
25
+ * §27n roster lands. A name may map to several concepts' worth of behavior —
26
+ * rung 1 keeps it 1:1 on the dominant sense.
27
+ */
28
+ export const TOOL_CONCEPTS = {
29
+ shell: { 'claude-code': ['Bash'], 'nexus-cortex': ['Bash'], 'grok-build': ['run_terminal_command'], 'gemini-cli': ['run_shell_command'] },
30
+ read_file: { 'claude-code': ['Read'], 'nexus-cortex': ['Read'], 'grok-build': ['read_file'], 'gemini-cli': ['read_file', 'read_many_files'] },
31
+ write_file: { 'claude-code': ['Write'], 'nexus-cortex': ['Write'], 'grok-build': ['write'], 'gemini-cli': ['write_file'] },
32
+ edit_file: { 'claude-code': ['Edit'], 'nexus-cortex': ['Edit'], 'grok-build': ['search_replace'], 'gemini-cli': ['replace'] },
33
+ list_dir: { 'nexus-cortex': ['ListDirectory'], 'grok-build': ['list_dir'], 'gemini-cli': ['list_directory'] },
34
+ glob: { 'claude-code': ['Glob'], 'nexus-cortex': ['Glob'], 'gemini-cli': ['glob'] },
35
+ grep: { 'claude-code': ['Grep'], 'nexus-cortex': ['Grep'], 'grok-build': ['grep'], 'gemini-cli': ['search_file_content'] },
36
+ web_search: { 'claude-code': ['WebSearch'], 'nexus-cortex': ['WebSearch'], 'grok-build': ['web_search'], 'gemini-cli': ['google_web_search'] },
37
+ web_fetch: { 'claude-code': ['WebFetch'], 'nexus-cortex': ['WebFetch'], 'gemini-cli': ['web_fetch'] },
38
+ spawn_agent: { 'claude-code': ['Agent'], 'nexus-cortex': ['Task'], 'gemini-cli': ['invoke_agent'] },
39
+ todo: { 'claude-code': ['TaskCreate', 'TaskUpdate'], 'nexus-cortex': ['TodoWrite', 'TodoCreate', 'TodoUpdate'] },
40
+ plan_mode: { 'claude-code': ['EnterPlanMode', 'ExitPlanMode'], 'gemini-cli': ['enter_plan_mode'] },
41
+ tool_search: { 'claude-code': ['ToolSearch'], 'nexus-cortex': ['SearchTools'] },
42
+ skill: { 'claude-code': ['Skill'], 'nexus-cortex': ['Skill'] },
43
+ };
44
+ export const ARG_MORPHISMS = {
45
+ shell: {
46
+ canonical: ['command', 'description', 'timeout', 'run_in_background'],
47
+ byHarness: {
48
+ 'claude-code': { tool: 'Bash', evidence: 'observed' },
49
+ 'nexus-cortex': { tool: 'Bash', evidence: 'observed' },
50
+ 'grok-build': { tool: 'run_terminal_command', drop: ['timeout', 'run_in_background'], evidence: 'observed' },
51
+ 'gemini-cli': { tool: 'run_shell_command', drop: ['timeout', 'run_in_background'], evidence: 'observed' },
52
+ },
53
+ },
54
+ read_file: {
55
+ canonical: ['file_path', 'offset', 'limit'],
56
+ byHarness: {
57
+ 'claude-code': { tool: 'Read', evidence: 'observed' },
58
+ 'nexus-cortex': { tool: 'Read', evidence: 'observed' },
59
+ 'grok-build': { tool: 'read_file', rename: { file_path: 'target_file' }, drop: ['offset', 'limit'], evidence: 'observed' },
60
+ 'gemini-cli': { tool: 'read_file', drop: ['offset', 'limit'], evidence: 'observed' },
61
+ },
62
+ },
63
+ write_file: {
64
+ canonical: ['file_path', 'content'],
65
+ byHarness: {
66
+ 'claude-code': { tool: 'Write', evidence: 'observed' },
67
+ 'nexus-cortex': { tool: 'Write', evidence: 'observed' },
68
+ 'grok-build': { tool: 'write', evidence: 'unverified' },
69
+ 'gemini-cli': { tool: 'write_file', evidence: 'observed' },
70
+ },
71
+ },
72
+ edit_file: {
73
+ canonical: ['file_path', 'old_string', 'new_string', 'replace_all'],
74
+ byHarness: {
75
+ 'claude-code': { tool: 'Edit', evidence: 'observed' },
76
+ 'nexus-cortex': { tool: 'Edit', evidence: 'observed' },
77
+ 'grok-build': { tool: 'search_replace', evidence: 'unverified' },
78
+ // gemini uses expected_replacements (count), not a boolean — different
79
+ // semantics, so replace_all is dropped rather than faked.
80
+ 'gemini-cli': { tool: 'replace', drop: ['replace_all'], evidence: 'observed' },
81
+ },
82
+ },
83
+ list_dir: {
84
+ canonical: ['path'],
85
+ byHarness: {
86
+ 'nexus-cortex': { tool: 'ListDirectory', evidence: 'spec' },
87
+ 'grok-build': { tool: 'list_dir', rename: { path: 'target_directory' }, evidence: 'observed' },
88
+ 'gemini-cli': { tool: 'list_directory', rename: { path: 'dir_path' }, evidence: 'observed' },
89
+ },
90
+ },
91
+ glob: {
92
+ canonical: ['pattern', 'path'],
93
+ byHarness: {
94
+ 'claude-code': { tool: 'Glob', evidence: 'observed' },
95
+ 'nexus-cortex': { tool: 'Glob', evidence: 'spec' },
96
+ 'gemini-cli': { tool: 'glob', rename: { path: 'dir_path' }, evidence: 'observed' },
97
+ },
98
+ },
99
+ grep: {
100
+ canonical: ['pattern', 'path', 'output_mode', 'glob', 'head_limit', '-i', '-A', '-B'],
101
+ byHarness: {
102
+ 'claude-code': { tool: 'Grep', evidence: 'observed' },
103
+ 'nexus-cortex': { tool: 'Grep', evidence: 'spec' },
104
+ // grok's grep clones the ripgrep-tool schema — field-identical, observed.
105
+ 'grok-build': { tool: 'grep', evidence: 'observed' },
106
+ 'gemini-cli': { tool: 'search_file_content', drop: ['output_mode', 'glob', 'head_limit', '-i', '-A', '-B'], evidence: 'spec' },
107
+ },
108
+ },
109
+ web_search: {
110
+ canonical: ['query'],
111
+ byHarness: {
112
+ 'claude-code': { tool: 'WebSearch', evidence: 'observed' },
113
+ 'nexus-cortex': { tool: 'WebSearch', evidence: 'spec' },
114
+ 'grok-build': { tool: 'web_search', evidence: 'unverified' },
115
+ 'gemini-cli': { tool: 'google_web_search', evidence: 'observed' },
116
+ },
117
+ },
118
+ web_fetch: {
119
+ canonical: ['url', 'prompt'],
120
+ byHarness: {
121
+ 'claude-code': { tool: 'WebFetch', evidence: 'observed' },
122
+ 'nexus-cortex': { tool: 'WebFetch', evidence: 'spec' },
123
+ 'gemini-cli': { tool: 'web_fetch', evidence: 'unverified' },
124
+ },
125
+ },
126
+ spawn_agent: {
127
+ canonical: ['description', 'prompt', 'subagent_type'],
128
+ byHarness: {
129
+ 'claude-code': { tool: 'Agent', evidence: 'observed' },
130
+ 'nexus-cortex': { tool: 'Task', evidence: 'spec' },
131
+ 'gemini-cli': { tool: 'invoke_agent', rename: { subagent_type: 'agent_name', prompt: 'task' }, drop: ['description'], evidence: 'observed' },
132
+ },
133
+ },
134
+ plan_mode: {
135
+ canonical: [],
136
+ byHarness: {
137
+ 'claude-code': { tool: 'EnterPlanMode', evidence: 'observed' },
138
+ 'gemini-cli': { tool: 'enter_plan_mode', require: { reason: 'derive from surrounding turn text' }, evidence: 'observed' },
139
+ },
140
+ },
141
+ };
142
+ /**
143
+ * Re-express one tool call in a target harness's arg dialect.
144
+ * Never silent (D8): drops and unverified grades are surfaced in the result.
145
+ */
146
+ export function morphToolCall(call, source, target) {
147
+ const concept = nameToConcept().get(call.name);
148
+ const spec = concept ? ARG_MORPHISMS[concept] : undefined;
149
+ if (!concept || !spec)
150
+ return { status: 'unmapped', dropped: [], notes: [`no rung-2 morphism for ${call.name}`] };
151
+ const src = spec.byHarness[source];
152
+ const dst = spec.byHarness[target];
153
+ if (!dst)
154
+ return { status: 'unmapped', concept, dropped: [], notes: [`concept ${concept} has no ${target} tool`] };
155
+ // 1. Normalize source input to canonical fields (invert the source rename).
156
+ const toCanonical = new Map();
157
+ for (const [canon, tgt] of Object.entries(src?.rename ?? {}))
158
+ toCanonical.set(tgt, canon);
159
+ const canonical = {};
160
+ for (const [k, v] of Object.entries(call.input ?? {}))
161
+ canonical[toCanonical.get(k) ?? k] = v;
162
+ // 2. Render into the target dialect.
163
+ const dropSet = new Set(dst.drop ?? []);
164
+ const input = {};
165
+ const dropped = [];
166
+ for (const [k, v] of Object.entries(canonical)) {
167
+ if (dropSet.has(k)) {
168
+ if (v !== undefined)
169
+ dropped.push(k);
170
+ continue;
171
+ }
172
+ input[dst.rename?.[k] ?? k] = v;
173
+ }
174
+ const notes = [];
175
+ for (const [f, hint] of Object.entries(dst.require ?? {}))
176
+ if (!(f in input))
177
+ notes.push(`target requires ${f}: ${hint}`);
178
+ if (dst.evidence === 'unverified')
179
+ notes.push(`arg shape for ${target}/${dst.tool} is name-mapped only (unverified)`);
180
+ const status = dst.evidence === 'unverified' ? 'unverified' : dropped.length || notes.length ? 'partial' : 'ok';
181
+ return { status, concept, targetTool: dst.tool, input, dropped, notes };
182
+ }
183
+ /** name (per harness) → concept, inverted from TOOL_CONCEPTS. */
184
+ function nameToConcept() {
185
+ const m = new Map();
186
+ for (const [concept, byHarness] of Object.entries(TOOL_CONCEPTS)) {
187
+ for (const names of Object.values(byHarness))
188
+ for (const n of names)
189
+ m.set(n, concept);
190
+ }
191
+ return m;
192
+ }
193
+ /** Scan the canonical line for observed tool_use names per harness. */
194
+ export async function deriveToolInventory(store) {
195
+ const inv = {};
196
+ const root = path.join(store, 'canon');
197
+ const walk = async (dir, harness) => {
198
+ let es = [];
199
+ try {
200
+ es = fs.readdirSync(dir, { withFileTypes: true });
201
+ }
202
+ catch {
203
+ return;
204
+ }
205
+ for (const e of es) {
206
+ const p = path.join(dir, e.name);
207
+ if (e.isDirectory()) {
208
+ await walk(p, harness ?? (HARNESSES.includes(e.name) ? e.name : undefined));
209
+ continue;
210
+ }
211
+ if (!harness || e.name.endsWith('.events.jsonl') || !/\.jsonl(\.part-\d{4})?$/.test(e.name))
212
+ continue;
213
+ const rl = readline.createInterface({ input: fs.createReadStream(p), crlfDelay: Infinity });
214
+ for await (const line of rl) {
215
+ if (!line.includes('"tool_use"'))
216
+ continue;
217
+ try {
218
+ const r = JSON.parse(line);
219
+ const c = r?.message?.content;
220
+ if (!Array.isArray(c))
221
+ continue;
222
+ for (const b of c)
223
+ if (b?.type === 'tool_use' && b.name)
224
+ ((inv[harness] ??= {})[b.name] = (inv[harness][b.name] ?? 0) + 1);
225
+ }
226
+ catch { /* lint's job */ }
227
+ }
228
+ }
229
+ };
230
+ await walk(root);
231
+ return inv;
232
+ }
233
+ /** Classify one session's tool references against a target harness. */
234
+ export function toolCompatibility(referenced, target) {
235
+ const n2c = nameToConcept();
236
+ const targetNames = new Set();
237
+ for (const byHarness of Object.values(TOOL_CONCEPTS))
238
+ for (const n of byHarness[target] ?? [])
239
+ targetNames.add(n);
240
+ const report = { target, referenced: [...referenced].sort(), mapped: [], native: [], mcp: [], unmapped: [] };
241
+ for (const name of report.referenced) {
242
+ if (name.startsWith('mcp__')) {
243
+ report.mcp.push(name);
244
+ continue;
245
+ }
246
+ if (targetNames.has(name)) {
247
+ report.native.push(name);
248
+ continue;
249
+ }
250
+ const concept = n2c.get(name);
251
+ const tn = concept ? TOOL_CONCEPTS[concept][target] : undefined;
252
+ if (concept && tn?.length) {
253
+ const m = ARG_MORPHISMS[concept]?.byHarness[target];
254
+ report.mapped.push({ name, concept, targetNames: tn, argEvidence: m?.evidence, argDrops: m?.drop });
255
+ }
256
+ else
257
+ report.unmapped.push(name);
258
+ }
259
+ return report;
260
+ }
261
+ /** Extract the tool_use names referenced in one canonical session file. */
262
+ export async function sessionToolNames(file) {
263
+ const names = new Set();
264
+ const rl = readline.createInterface({ input: fs.createReadStream(file), crlfDelay: Infinity });
265
+ for await (const line of rl) {
266
+ if (!line.includes('"tool_use"'))
267
+ continue;
268
+ try {
269
+ const c = JSON.parse(line)?.message?.content;
270
+ if (Array.isArray(c))
271
+ for (const b of c)
272
+ if (b?.type === 'tool_use' && b.name)
273
+ names.add(b.name);
274
+ }
275
+ catch { /* skip */ }
276
+ }
277
+ return [...names].sort();
278
+ }
279
+ /** Render the compatibility report for terminal output. */
280
+ export function renderCompat(r) {
281
+ const lines = [];
282
+ lines.push(`[canon] tool compatibility vs ${r.target}: ${r.referenced.length} referenced — ` +
283
+ `${r.native.length} native, ${r.mapped.length} mapped, ${r.mcp.length} mcp, ${r.unmapped.length} unmapped`);
284
+ for (const m of r.mapped) {
285
+ const arg = m.argEvidence
286
+ ? m.argEvidence === 'unverified' ? ' [args unverified]'
287
+ : m.argDrops?.length ? ` [args ${m.argEvidence}; drops: ${m.argDrops.join(',')}]` : ` [args ${m.argEvidence}]`
288
+ : '';
289
+ lines.push(` map ${m.name} → ${m.targetNames.join('|')} (${m.concept})${arg}`);
290
+ }
291
+ if (r.mcp.length)
292
+ lines.push(` mcp ${r.mcp.join(', ')} — attach the MCP server(s) or relay to origin`);
293
+ if (r.unmapped.length)
294
+ lines.push(` gap ${r.unmapped.join(', ')} — no rung-1 mapping: relay to origin harness or let the model re-express intent`);
295
+ lines.push(` note comprehension is unaffected either way — canon stores tool RESULTS verbatim; only future agency is capability-bound`);
296
+ return lines.join('\n');
297
+ }
298
+ //# sourceMappingURL=canonTools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canonTools.js","sourceRoot":"","sources":["../src/canonTools.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,8 @@ export interface TouchedIndex {
4
4
  byRel: Map<string, Map<string, number>>;
5
5
  /** tier-3 (Bash command-string parsing) — heuristic, INFERRED-grade; structured evidence wins */
6
6
  inferredByRel: Map<string, Map<string, number>>;
7
+ /** tier-3b (interpreter-body write idioms in heredocs/-e code) — AMBIGUOUS-grade */
8
+ ambiguousByRel: Map<string, Map<string, number>>;
7
9
  /** sessions actually re-scanned this run (rest served from cache) */
8
10
  scanned: number;
9
11
  cached: number;
@@ -17,6 +19,15 @@ export interface TouchedIndex {
17
19
  * touch targets, and direct cat/head/tail read args.
18
20
  */
19
21
  export declare function bashCommandPaths(cmd: string, cwd: string | undefined, out: Map<string, number>): void;
22
+ /**
23
+ * Tier 3b — parse INTERPRETER BODIES (heredoc scripts, quoted -e code) for
24
+ * WRITE idioms with string-literal paths. This is exactly the content tier 3
25
+ * deliberately excludes (heredoc truncation + quote stripping), so it is
26
+ * heuristic-on-heuristic => AMBIGUOUS-grade downstream. Write idioms only
27
+ * (reads inside scripts are unbounded noise): python open(p,'w'|'a'),
28
+ * Path(p).write_text, node writeFileSync/appendFileSync/writeFile.
29
+ */
30
+ export declare function interpreterBodyPaths(cmd: string, cwd: string | undefined, out: Map<string, number>): void;
20
31
  /**
21
32
  * Build (or refresh) the touched index for the given sessions.
22
33
  * Streams each changed session once; unchanged sessions come from cache.
@@ -1 +1 @@
1
- {"version":3,"file":"canonTouched.d.ts","sourceRoot":"","sources":["../src/canonTouched.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD,MAAM,WAAW,YAAY;IAC3B,wGAAwG;IACxG,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACxC,iGAAiG;IACjG,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAChD,qEAAqE;IACrE,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAyBD;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CA4BrG;AAsCD;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,YAAY,EAAE,EACxB,IAAI,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO,GAC3B,OAAO,CAAC,YAAY,CAAC,CAwCvB"}
1
+ {"version":3,"file":"canonTouched.d.ts","sourceRoot":"","sources":["../src/canonTouched.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD,MAAM,WAAW,YAAY;IAC3B,wGAAwG;IACxG,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACxC,iGAAiG;IACjG,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAChD,oFAAoF;IACpF,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACjD,qEAAqE;IACrE,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAyBD;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CA4BrG;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAQzG;AAgDD;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,YAAY,EAAE,EACxB,IAAI,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO,GAC3B,OAAO,CAAC,YAAY,CAAC,CAmEvB"}
@@ -87,13 +87,34 @@ export function bashCommandPaths(cmd, cwd, out) {
87
87
  for (const m of text.matchAll(new RegExp(String.raw `\b(?:cat|head|tail)\s+(?:-\S+\s+)*` + TOKEN, 'g')))
88
88
  add(m[1]);
89
89
  }
90
- /** Extract touched absolute paths from one canon record. Two tiers:
90
+ /**
91
+ * Tier 3b — parse INTERPRETER BODIES (heredoc scripts, quoted -e code) for
92
+ * WRITE idioms with string-literal paths. This is exactly the content tier 3
93
+ * deliberately excludes (heredoc truncation + quote stripping), so it is
94
+ * heuristic-on-heuristic => AMBIGUOUS-grade downstream. Write idioms only
95
+ * (reads inside scripts are unbounded noise): python open(p,'w'|'a'),
96
+ * Path(p).write_text, node writeFileSync/appendFileSync/writeFile.
97
+ */
98
+ export function interpreterBodyPaths(cmd, cwd, out) {
99
+ const add = (tok) => {
100
+ const p = resolveCandidate(tok, cwd);
101
+ if (p)
102
+ out.set(p, (out.get(p) ?? 0) + 1);
103
+ };
104
+ for (const m of cmd.matchAll(/\bopen\(\s*['"]([^'"\n]+)['"]\s*,\s*['"][wa]/g))
105
+ add(m[1]);
106
+ for (const m of cmd.matchAll(/\bPath\(\s*['"]([^'"\n]+)['"]\s*\)\.write_text/g))
107
+ add(m[1]);
108
+ for (const m of cmd.matchAll(/\b(?:writeFileSync|appendFileSync|writeFile)\(\s*['"]([^'"\n]+)['"]/g))
109
+ add(m[1]);
110
+ }
111
+ /** Extract touched absolute paths from one canon record. Tiers here:
91
112
  * tier 1 — structured tool_use inputs (Read/Edit/Write file_path etc.);
92
113
  * tier 2 — file-history-snapshot trackedFileBackups: the harness's own
93
114
  * checkpoint tracker, which records EVERY mutated file regardless of
94
115
  * mechanism (incl. Bash heredocs/redirections/sed -i that tier 1 cannot
95
116
  * see). Harness-recorded fact => EXTRACTED-grade; `version` = intensity. */
96
- function recordPaths(rec, out, inferred) {
117
+ function recordPaths(rec, out, inferred, ambiguous) {
97
118
  const tf = rec?.snapshot?.trackedFileBackups;
98
119
  if (tf && typeof tf === 'object') {
99
120
  for (const [key, v] of Object.entries(tf)) {
@@ -122,8 +143,18 @@ function recordPaths(rec, out, inferred) {
122
143
  candidates.push(b.input.notebook_path);
123
144
  if (typeof b.input.path === 'string' && looksLikeFile(b.input.path))
124
145
  candidates.push(b.input.path);
125
- if (typeof b.input.command === 'string')
126
- bashCommandPaths(b.input.command, typeof rec.cwd === 'string' ? rec.cwd : undefined, inferred);
146
+ if (typeof b.input.command === 'string') {
147
+ const cwd = typeof rec.cwd === 'string' ? rec.cwd : undefined;
148
+ bashCommandPaths(b.input.command, cwd, inferred);
149
+ // Interpreter bodies resolve against the EFFECTIVE cwd: the dominant
150
+ // agent pattern is `cd <dir> && python3 - <<EOF`, where the record's
151
+ // cwd is the session dir, not the interpreter's. Use the last absolute
152
+ // `cd` in the command when present.
153
+ let bodyCwd = cwd;
154
+ for (const m of b.input.command.matchAll(/(?:^|&&|;|\|\|)\s*cd\s+(\/[^\s;&|]+)/g))
155
+ bodyCwd = m[1];
156
+ interpreterBodyPaths(b.input.command, bodyCwd, ambiguous);
157
+ }
127
158
  for (const p of candidates) {
128
159
  if (!p.startsWith('/'))
129
160
  continue; // relative tool paths lack a reliable base — skip
@@ -145,40 +176,76 @@ export async function buildTouchedIndex(sessions, opts = {}) {
145
176
  catch { /* fresh */ }
146
177
  const byRel = new Map();
147
178
  const inferredByRel = new Map();
179
+ const ambiguousByRel = new Map();
148
180
  let scanned = 0, cached = 0;
149
181
  for (const s of sessions) {
150
- const sig = 'v3|' + s.parts
182
+ // Sidecar participates in the signature: tier 2b mines file-history-delta
183
+ // events from <session>.events.jsonl, so sidecar changes must invalidate.
184
+ const logicalAbs = s.parts[0].replace(/\.part-\d{4}$/, '');
185
+ const sidecar = logicalAbs.replace(/\.jsonl$/, '.events.jsonl');
186
+ let sidecarSig = '0:0';
187
+ try {
188
+ const st = fs.statSync(sidecar);
189
+ sidecarSig = `${st.size}:${Math.round(st.mtimeMs)}`;
190
+ }
191
+ catch { /* none */ }
192
+ const sig = 'v6|' + s.parts
151
193
  .map((p) => { const st = fs.statSync(p); return `${st.size}:${Math.round(st.mtimeMs)}`; })
152
- .join('|');
194
+ .join('|') + '|' + sidecarSig;
153
195
  const hit = cache[s.rel];
154
196
  if (hit && hit.sig === sig) {
155
197
  byRel.set(s.rel, new Map(Object.entries(hit.files)));
156
198
  inferredByRel.set(s.rel, new Map(Object.entries(hit.inferred ?? {})));
199
+ ambiguousByRel.set(s.rel, new Map(Object.entries(hit.ambiguous ?? {})));
157
200
  cached++;
158
201
  continue;
159
202
  }
160
203
  const files = new Map();
161
204
  const inferred = new Map();
205
+ const ambiguous = new Map();
162
206
  for (const part of s.parts) {
163
207
  const rl = readline.createInterface({ input: fs.createReadStream(part), crlfDelay: Infinity });
164
208
  for await (const line of rl) {
165
209
  if (!line.includes('tool_use') && !line.includes('trackedFileBackups'))
166
210
  continue; // cheap pre-filter
167
211
  try {
168
- recordPaths(JSON.parse(line), files, inferred);
212
+ recordPaths(JSON.parse(line), files, inferred, ambiguous);
213
+ }
214
+ catch { /* verify's job */ }
215
+ }
216
+ }
217
+ // Tier 2b — file-history-delta sidecar events: the harness's per-file
218
+ // change tracker fires for ANY mutation of a tracked file, including
219
+ // Bash/interpreter-body writes tier 3 cannot see. Harness-recorded fact
220
+ // => EXTRACTED-grade; one count per delta event.
221
+ if (fs.existsSync(sidecar)) {
222
+ const rl2 = readline.createInterface({ input: fs.createReadStream(sidecar), crlfDelay: Infinity });
223
+ for await (const line of rl2) {
224
+ if (!line.includes('file-history-delta'))
225
+ continue;
226
+ try {
227
+ const r = JSON.parse(line);
228
+ const p = r?.trackingPath;
229
+ if (typeof p === 'string' && p.startsWith('/'))
230
+ files.set(p, (files.get(p) ?? 0) + 1);
169
231
  }
170
232
  catch { /* verify's job */ }
171
233
  }
172
234
  }
173
235
  for (const k of files.keys())
174
236
  inferred.delete(k); // structured evidence wins
237
+ for (const k of files.keys())
238
+ ambiguous.delete(k);
239
+ for (const k of inferred.keys())
240
+ ambiguous.delete(k); // higher tier wins
175
241
  byRel.set(s.rel, files);
176
242
  inferredByRel.set(s.rel, inferred);
177
- cache[s.rel] = { sig, files: Object.fromEntries(files), inferred: Object.fromEntries(inferred) };
243
+ ambiguousByRel.set(s.rel, ambiguous);
244
+ cache[s.rel] = { sig, files: Object.fromEntries(files), inferred: Object.fromEntries(inferred), ambiguous: Object.fromEntries(ambiguous) };
178
245
  scanned++;
179
246
  }
180
247
  fs.mkdirSync(path.dirname(cachePath), { recursive: true });
181
248
  fs.writeFileSync(cachePath, JSON.stringify(cache));
182
- return { byRel, inferredByRel, scanned, cached };
249
+ return { byRel, inferredByRel, ambiguousByRel, scanned, cached };
183
250
  }
184
251
  //# sourceMappingURL=canonTouched.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"canonTouched.js","sourceRoot":"","sources":["../src/canonTouched.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAe1C,MAAM,aAAa,GAAG,CAAC,CAAS,EAAW,EAAE,CAC3C,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAEnE,wCAAwC;AACxC,MAAM,OAAO,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;AAErE,2EAA2E;AAC3E,SAAS,gBAAgB,CAAC,GAAW,EAAE,GAAuB;IAC5D,IAAI,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;IAChD,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC,CAAC,QAAQ;IACpE,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC,CAAC,aAAa;IAC7F,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC,CAAC,+CAA+C;IACzF,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC;YAAE,OAAO,SAAS,CAAC;QACrE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACxB,CAAC;IACD,IAAI,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,WAAW,IAAI,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,SAAS,CAAC;IAC3F,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC,CAAC,8CAA8C;IACvF,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC3B,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAW,EAAE,GAAuB,EAAE,GAAwB;IAC7F,MAAM,GAAG,GAAG,CAAC,GAAW,EAAE,EAAE;QAC1B,MAAM,CAAC,GAAG,gBAAgB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACrC,IAAI,CAAC;YAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3C,CAAC,CAAC;IACF,uEAAuE;IACvE,uEAAuE;IACvE,0EAA0E;IAC1E,4EAA4E;IAC5E,2EAA2E;IAC3E,iEAAiE;IACjE,IAAI,IAAI,GAAG,GAAG,CAAC;IACf,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAC1C,IAAI,EAAE,IAAI,CAAC;QAAE,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACtC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IAE9D,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAA,iBAAiB,CAAC;IAC1C,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAA,yBAAyB,GAAG,KAAK,EAAE,GAAG,CAAC,CAAC;QAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC;IACxG,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAA,sBAAsB,GAAG,KAAK,EAAE,GAAG,CAAC,CAAC;QAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC;IACrG,yEAAyE;IACzE,kEAAkE;IAClE,uDAAuD;IACvD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,mCAAmC,CAAC,EAAE,CAAC;QACnE,KAAK,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;YAAE,GAAG,CAAC,GAAG,CAAC,CAAC;IACxD,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAA,4BAA4B,GAAG,KAAK,GAAG,MAAM,CAAC,GAAG,CAAA,KAAK,GAAG,KAAK,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;QAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC;QAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC;IAAC,CAAC;IACrJ,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAA,YAAY,GAAG,KAAK,EAAE,GAAG,CAAC,CAAC;QAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC;IAC3F,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAA,oCAAoC,GAAG,KAAK,EAAE,GAAG,CAAC,CAAC;QAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC;AACrH,CAAC;AAED;;;;;6EAK6E;AAC7E,SAAS,WAAW,CAAC,GAAQ,EAAE,GAAwB,EAAE,QAA6B;IACpF,MAAM,EAAE,GAAG,GAAG,EAAE,QAAQ,EAAE,kBAAkB,CAAC;IAC7C,IAAI,EAAE,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;QACjC,KAAK,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAM,EAAE,CAAC,EAAE,CAAC;YAC/C,IAAI,GAAG,GAAG,GAAG,CAAC;YACd,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzB,MAAM,MAAM,GAAG,CAAC,EAAE,aAAa,CAAC;gBAChC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC;oBAAE,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;;oBACjG,SAAS,CAAC,qDAAqD;YACtE,CAAC;YACD,MAAM,CAAC,GAAG,OAAO,CAAC,EAAE,OAAO,KAAK,QAAQ,IAAI,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1E,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IACD,MAAM,CAAC,GAAG,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC;IAChC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAAE,OAAO;IAC9B,KAAK,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QAClB,IAAI,CAAC,EAAE,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ;YAAE,SAAS;QAChF,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,IAAI,OAAO,CAAC,CAAC,KAAK,CAAC,SAAS,KAAK,QAAQ;YAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC9E,IAAI,OAAO,CAAC,CAAC,KAAK,CAAC,aAAa,KAAK,QAAQ;YAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QACtF,IAAI,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;YAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACnG,IAAI,OAAO,CAAC,CAAC,KAAK,CAAC,OAAO,KAAK,QAAQ;YAAE,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QACxI,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;YAC3B,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,SAAS,CAAC,kDAAkD;YACpF,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,QAAwB,EACxB,OAA0B,EAAE;IAE5B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,wBAAwB,CAAC;IACvE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,oBAAoB,CAAC,CAAC;IAClE,IAAI,KAAK,GAA+B,EAAE,CAAC;IAC3C,IAAI,CAAC;QAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC;IAErF,MAAM,KAAK,GAAG,IAAI,GAAG,EAA+B,CAAC;IACrD,MAAM,aAAa,GAAG,IAAI,GAAG,EAA+B,CAAC;IAC7D,IAAI,OAAO,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC;IAE5B,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC,KAAK;aACxB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;aACzF,IAAI,CAAC,GAAG,CAAC,CAAC;QACb,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACzB,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;YAC3B,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACrD,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACtE,MAAM,EAAE,CAAC;YACT,SAAS;QACX,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;QACxC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC3C,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;YAC3B,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC/F,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,CAAC;gBAC5B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC;oBAAE,SAAS,CAAC,mBAAmB;gBACrG,IAAI,CAAC;oBAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;YACtF,CAAC;QACH,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,EAAE;YAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B;QAC7E,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACxB,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACnC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjG,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3D,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IACnD,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AACnD,CAAC"}
1
+ {"version":3,"file":"canonTouched.js","sourceRoot":"","sources":["../src/canonTouched.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AA4BA,wBAAsB,IAAI,CAAC,IAAI,GAAE,MAAM,EAA0B,GAAG,OAAO,CAAC,MAAM,CAAC,CAuClF"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AA8BA,wBAAsB,IAAI,CAAC,IAAI,GAAE,MAAM,EAA0B,GAAG,OAAO,CAAC,MAAM,CAAC,CAiDlF"}
package/dist/cli.js CHANGED
@@ -8,6 +8,7 @@ import { canonGraph } from './canonGraph.js';
8
8
  import { canonInit } from './canonInit.js';
9
9
  import { canonList, canonPull } from './canonPull.js';
10
10
  import { canonSync } from './canonSync.js';
11
+ import { deriveToolInventory, TOOL_CONCEPTS } from './canonTools.js';
11
12
  import { canonTranslate } from './canonTranslate.js';
12
13
  const USAGE = `nexus-canon — portable agent memory in a git repo you own
13
14
 
@@ -20,6 +21,7 @@ Verbs:
20
21
  list [--all] [--project N/A] [--store <dir>] list canon sessions
21
22
  pull <uuid> [--to <dir>] [--force] [--store <dir>] materialize a session
22
23
  artifacts [--dry-run] [--store <dir>] capture capability artifacts
24
+ tools [--store <dir>] [--json] observed tool inventory + cross-harness concept map
23
25
  graph [--project <id>] [--merge-graph <path>] [--dry-run] [--store <dir>]
24
26
 
25
27
  Default store: /tmp/canon-store (override with --store or CANON_REPO env for the remote).
@@ -57,6 +59,19 @@ export async function main(argv = process.argv.slice(2)) {
57
59
  const r = await canonPull({ session: positional, to: opt('--to'), force: flag('--force'), store: opt('--store') });
58
60
  return r.code;
59
61
  }
62
+ case 'tools': {
63
+ const inv = await deriveToolInventory(opt('--store') ?? '/tmp/canon-store');
64
+ if (flag('--json')) {
65
+ console.log(JSON.stringify({ inventory: inv, concepts: TOOL_CONCEPTS }, null, 2));
66
+ return 0;
67
+ }
68
+ for (const [h, tools] of Object.entries(inv)) {
69
+ const top = Object.entries(tools).sort((a, b) => b[1] - a[1]);
70
+ console.log(`${h} (${top.length} distinct): ${top.slice(0, 12).map(([n, c]) => `${n}:${c}`).join(', ')}`);
71
+ }
72
+ console.log(`concepts mapped: ${Object.keys(TOOL_CONCEPTS).length} (see TOOL_CONCEPTS via --json)`);
73
+ return 0;
74
+ }
60
75
  case 'artifacts':
61
76
  await canonArtifacts({ dryRun: flag('--dry-run'), store: opt('--store') });
62
77
  return 0;
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,MAAM,KAAK,GAAG;;;;;;;;;;;;;;;oDAesC,CAAC;AAErD,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,OAAiB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/D,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAC7B,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC7C,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACtF,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;IAEvL,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,CAAC,GAAG,MAAM,SAAS,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YACxE,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACzF,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO;gBAAE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACnD,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO;gBAAE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;YACvE,OAAO,CAAC,CAAC;QACX,CAAC;QACD,KAAK,MAAM;YACT,MAAM,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YACtE,OAAO,CAAC,CAAC;QACX,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,MAAM,CAAC,GAAG,MAAM,cAAc,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YACrF,OAAO,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC;QACD,KAAK,MAAM;YACT,MAAM,SAAS,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC/D,OAAO,CAAC,CAAC;QACX,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,IAAI,CAAC,UAAU,EAAE,CAAC;gBAAC,OAAO,CAAC,KAAK,CAAC,8DAA8D,CAAC,CAAC;gBAAC,OAAO,CAAC,CAAC;YAAC,CAAC;YAC7G,MAAM,CAAC,GAAG,MAAM,SAAS,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YACnH,OAAO,CAAC,CAAC,IAAI,CAAC;QAChB,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,GAAG,GAAG,MAAM,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,kBAAkB,CAAC,CAAC;YAC5E,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBAAC,OAAO,CAAC,CAAC;YAAC,CAAC;YACpH,KAAK,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC7C,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC9D,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,MAAM,eAAe,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC5G,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,iCAAiC,CAAC,CAAC;YACpG,OAAO,CAAC,CAAC;QACX,CAAC;QACD,KAAK,WAAW;YACd,MAAM,cAAc,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YAC3E,OAAO,CAAC,CAAC;QACX,KAAK,OAAO;YACV,MAAM,UAAU,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,WAAW,CAAC,EAAE,UAAU,EAAE,GAAG,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YACpI,OAAO,CAAC,CAAC;QACX;YACE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACnB,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC;AACH,CAAC"}
package/dist/index.d.ts CHANGED
@@ -27,4 +27,6 @@ export type { CanonGraphOptions, CanonGraphResult, ProjectEntry } from './canonG
27
27
  export { CANON_VERIFY_MJS, GITATTRIBUTES, STORE_DIRS, STORE_README, VERIFY_YML } from './scaffoldAssets.js';
28
28
  export { buildTouchedIndex } from './canonTouched.js';
29
29
  export type { TouchedIndex } from './canonTouched.js';
30
+ export { deriveToolInventory, toolCompatibility, sessionToolNames, renderCompat, morphToolCall, TOOL_CONCEPTS, ARG_MORPHISMS, HARNESSES } from './canonTools.js';
31
+ export type { ToolInventory, ToolCompatReport, HarnessName, ArgMorph, MorphResult } from './canonTools.js';
30
32
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,YAAY,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AACvF,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAC7E,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACzG,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,YAAY,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AACvF,OAAO,EAAE,UAAU,EAAE,uBAAuB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtF,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACzF,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC5G,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,YAAY,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AACvF,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAC7E,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACzG,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,YAAY,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AACvF,OAAO,EAAE,UAAU,EAAE,uBAAuB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtF,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACzF,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC5G,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjK,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC"}
package/dist/index.js CHANGED
@@ -20,4 +20,5 @@ export { canonArtifacts } from './canonArtifacts.js';
20
20
  export { canonGraph, deriveProjectSessionMap, sessionProject } from './canonGraph.js';
21
21
  export { CANON_VERIFY_MJS, GITATTRIBUTES, STORE_DIRS, STORE_README, VERIFY_YML } from './scaffoldAssets.js';
22
22
  export { buildTouchedIndex } from './canonTouched.js';
23
+ export { deriveToolInventory, toolCompatibility, sessionToolNames, renderCompat, morphToolCall, TOOL_CONCEPTS, ARG_MORPHISMS, HARNESSES } from './canonTools.js';
23
24
  //# 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;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAE7E,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,EAAE,UAAU,EAAE,uBAAuB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtF,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC5G,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAE7E,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,EAAE,UAAU,EAAE,uBAAuB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtF,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC5G,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC"}
@@ -14,7 +14,7 @@ export declare const VERIFY_YML = "# canon-verify \u2014 Phase A4 trust layer (C
14
14
  /** .github/scripts/canon-verify.mjs — dependency-free verification lint. */
15
15
  export declare const CANON_VERIFY_MJS = "/**\n * canon-verify \u2014 Phase A4 trust layer (CANON_CROSS_HARNESS_PLAN.md 27e).\n *\n * Verifies ONLY the files changed in a push/PR range. Four checks:\n * 1. JSONL integrity \u2014 every line of every changed *.jsonl / *.jsonl.part-NNNN\n * parses as JSON (parts are split at line boundaries by construction).\n * 2. Canon schema \u2014 records in /canon (excluding *.events.jsonl sidecars)\n * carry uuid, timestamp, type, provenance.\n * 3. Secret scan \u2014 the same pattern set the sync scrub applies (minus blanket\n * hex64); any hit here means content bypassed the scrub choke-point.\n * 4. Projection refs \u2014 every changed *.ref resolves to an existing canon file\n * (single form or .part-0000 chunked form).\n *\n * Failures are grouped, annotated (::error), and fatal \u2014 never silent (D8).\n * Staging form: graduates to the published library (`cortex canon verify`)\n * at Phase C; keep this dependency-free (bare node:*, no npm install).\n *\n * Usage: node canon-verify.mjs <baseRef> <headRef>\n */\nimport { execFileSync } from 'node:child_process';\nimport * as fs from 'node:fs';\nimport * as path from 'node:path';\n\nconst [base, head] = process.argv.slice(2);\nif (!base || !head) { console.error('usage: canon-verify.mjs <base> <head>'); process.exit(2); }\n\nconst git = (a) => execFileSync('git', a, { encoding: 'utf8', maxBuffer: 256 * 1024 * 1024 });\n\nconst SECRET_PATTERNS = [\n ['sk', /sk-[A-Za-z0-9_-]{16,}/],\n ['ghp', /ghp_[A-Za-z0-9]{20,}/],\n ['ghpat', /github_pat_[A-Za-z0-9_]{20,}/],\n ['ghu', /ghu_[A-Za-z0-9]{20,}/],\n ['ghs', /ghs_[A-Za-z0-9]{20,}/],\n ['hf', /hf_[A-Za-z0-9]{20,}/],\n ['aiza', /AIza[A-Za-z0-9_-]{20,}/],\n ['xai', /xai-[A-Za-z0-9]{20,}/],\n ['nar', /nar_[A-Za-z0-9]{16,}/],\n ['gsk', /gsk_[A-Za-z0-9]{20,}/],\n ['slack', /xox[bpars]-[A-Za-z0-9-]{10,}/],\n ['akia', /AKIA[A-Z0-9]{16}/],\n ['jwt', /eyJ[A-Za-z0-9_-]{20,}\\.eyJ[A-Za-z0-9_-]{20,}\\.[A-Za-z0-9_-]{10,}/],\n];\n\nconst changed = git(['diff', '--name-only', '--diff-filter=ACMR', base, head])\n .split('\\n').map((s) => s.trim()).filter(Boolean);\n\nconst isJsonl = (f) => /\\.jsonl(\\.part-\\d{4})?$/.test(f);\nconst isCanonRecordFile = (f) => f.startsWith('canon/') && isJsonl(f) && !/\\.events\\.jsonl$/.test(f);\nconst isRef = (f) => f.endsWith('.ref');\n\nconst failures = [];\nconst fail = (file, msg) => {\n failures.push(`${file} \u2014 ${msg}`);\n console.log(`::error file=${file}::${msg}`);\n};\n\nlet checkedFiles = 0, checkedLines = 0;\nfor (const f of changed) {\n if (!fs.existsSync(f)) continue; // renamed-away edge\n const isText = isJsonl(f) || isRef(f) || f.endsWith('.md') || f.endsWith('.json');\n if (!isText) continue;\n const content = fs.readFileSync(f, 'utf8');\n checkedFiles++;\n\n // 3. secret scan (report pattern label only \u2014 NEVER echo the match)\n for (const [label, re] of SECRET_PATTERNS) {\n if (re.test(content)) fail(f, `secret-pattern hit (${label}) \u2014 content bypassed the sync scrub`);\n }\n\n // 1 + 2. JSONL parse + canon schema + tool-pairing invariants.\n // Pairing (Phase B lesson \u2014 defects here surface as provider 400s at resume\n // time): every tool_result must follow a seen tool_use (orphans are the\n // translator's job to repair), and only TAIL tool_use may go unanswered\n // (live session snapshotted mid-call). Pairing is skipped on .part-NNNN\n // chunks \u2014 pairs legitimately span part boundaries.\n if (isJsonl(f)) {\n const schema = isCanonRecordFile(f);\n const checkPairs = schema && !/\\.part-\\d{4}$/.test(f);\n const uses = new Map(); // id -> line of tool_use\n const answered = new Set();\n const uuids = new Set();\n let lastRecordLine = 0;\n let n = 0;\n for (const line of content.split('\\n')) {\n n++;\n if (!line.trim()) continue;\n checkedLines++;\n let rec;\n try { rec = JSON.parse(line); }\n catch { fail(f, `line ${n}: unparseable JSON`); continue; }\n if (schema) {\n for (const field of ['uuid', 'timestamp', 'type', 'provenance']) {\n if (rec[field] === undefined) fail(f, `line ${n}: canon record missing '${field}'`);\n }\n }\n if (checkPairs) {\n lastRecordLine = n;\n // Chain integrity: parentUuid must resolve within the canonical line\n // (append-only \u21D2 parents precede children). A dangling parent means a\n // sidecarred/dropped record broke the chain \u2014 Claude Code's renderer\n // silently EXCLUDES everything upstream of a break (a3.10 lesson: a\n // 555KB doc vanished from rendered context).\n if (rec.uuid) uuids.add(rec.uuid);\n if (typeof rec.parentUuid === 'string' && !uuids.has(rec.parentUuid)) {\n fail(f, `line ${n}: parentUuid ${rec.parentUuid} not found earlier in file \u2014 chain break (renderer will drop upstream context)`);\n }\n const blocks = Array.isArray(rec.message?.content) ? rec.message.content : [];\n for (const b of blocks) {\n if (b?.type === 'tool_use' && b.id) uses.set(b.id, n);\n if (b?.type === 'tool_result' && b.tool_use_id) {\n if (!uses.has(b.tool_use_id)) fail(f, `line ${n}: orphan tool_result (${b.tool_use_id}) \u2014 no prior tool_use; translator repair missing`);\n answered.add(b.tool_use_id);\n }\n }\n }\n }\n if (checkPairs) {\n for (const [id, line] of uses) {\n if (!answered.has(id) && lastRecordLine - line > 3) {\n fail(f, `line ${line}: unanswered tool_use (${id}) mid-file \u2014 only tail in-flight calls may dangle`);\n }\n }\n }\n }\n\n // 5. artifact-manifest schema (canon/artifacts/**.json \u2014 \u00A727p second record kind)\n if (/^canon\\/artifacts\\/.+\\.json$/.test(f) && !f.endsWith('ARTIFACTS.md')) {\n try {\n const rec = JSON.parse(content);\n for (const field of ['recordKind', 'kind', 'id', 'version', 'timestamp', 'primary', 'content', 'provenance']) {\n if (rec[field] === undefined) fail(f, `artifact manifest missing '${field}'`);\n }\n if (rec.recordKind !== 'artifact-manifest') fail(f, `recordKind must be 'artifact-manifest'`);\n if (!Array.isArray(rec.content) || rec.content.some((c) => !c.path || !c.ref)) fail(f, 'content entries need path+ref');\n } catch { fail(f, 'artifact manifest: unparseable JSON'); }\n }\n\n // 4. projection refs resolve\n if (isRef(f)) {\n const target = content.trim();\n if (!target || target.includes('\\n')) fail(f, 'ref must be a single store-relative path');\n else if (!fs.existsSync(target) && !fs.existsSync(`${target}.part-0000`)) {\n fail(f, `ref target not found: ${target}`);\n }\n }\n}\n\nif (failures.length) {\n console.log(`[FAIL] canon-verify: ${failures.length} problem(s) in ${checkedFiles} changed file(s)`);\n process.exit(1);\n}\nconsole.log(`[OK] canon-verify: ${checkedFiles} changed file(s), ${checkedLines} record line(s), 0 problems`);\n";
16
16
  /** README.md — layout, CI, token-scoping, and privacy guidance. */
17
- export declare const STORE_README = "# Canon store\n\nYour agent memory, in a git repo you own. Scaffolded by `cortex canon init`.\n\nThis repository is a **canonical agent history & memory store** (canon): sessions,\nmemory, plans, and capability artifacts from any harness, stored once in a\nprovider-neutral format and translated per consumer at the edges. Spec:\n[docs/CANON.md](https://github.com/Spitfire-Products/nexus-cortex/blob/main/docs/CANON.md)\nin the nexus-cortex repository.\n\n## Layout\n\n| Path | Owner | Carries |\n|---|---|---|\n| `/native/<harness>/` | agents | each harness's own session dialect, verbatim (the only path an agent writes) |\n| `/canon/` | tooling | the canonical line \u2014 translated, append-only, provenance-anchored |\n| `/projections/<harness>/` | tooling | canon fanned back out into each harness's dialect |\n| `/memory/` | agents | distilled memory files (index + detail) |\n| `/plans/`, `/projects/` | agents | plan docs + task state, project manifests \u2014 the intent layer |\n| `/skills/`, `/agents/`, `/mcp/`, `/plugins/` | agents | capability artifacts (harness-contract layer) |\n\n`*.jsonl` files use `merge=union` (see `.gitattributes`) so append-only concurrent\nappends auto-merge.\n\n## CI\n\n`.github/workflows/canon-verify.yml` lints changed files on every push/PR:\nJSONL integrity, canon record schema, tool-pairing/chain invariants, secret-pattern\nscan, projection-ref resolution. It never writes to the repo. Failures are grouped\nand fatal \u2014 never silent.\n\n## Access tokens\n\nPrefer a **fine-grained personal access token scoped to this single repository**\n(Contents: read/write). Never a classic all-repo token. If a workflow file itself\nmust be pushed, the pushing credential needs the `workflow` scope \u2014 grant it\ntemporarily, then revoke.\n\n## Privacy\n\nThis store may contain your working history. Keep the repository **private** by\ndefault. Scrub secrets before push (the CI secret scan is a tripwire, not the\nscrubber). `git clone --mirror` exits with your full history at any time \u2014 no\ntool or vendor holds it hostage.\n";
17
+ export declare const STORE_README = "# Canon store\n\nYour agent memory, in a git repo you own. Scaffolded by `cortex canon init`.\n\nThis repository is a **canonical agent history & memory store** (canon): sessions,\nmemory, plans, and capability artifacts from any harness, stored once in a\nprovider-neutral format and translated per consumer at the edges. Spec:\n[docs/CANON.md](https://github.com/Spitfire-Products/nexus-cortex/blob/main/docs/CANON.md)\nin the nexus-cortex repository.\n\n## Layout\n\n| Path | Owner | Carries |\n|---|---|---|\n| `/native/<harness>/` | agents | each harness's own session dialect, verbatim (the only path an agent writes) |\n| `/canon/` | tooling | the canonical line \u2014 translated, append-only, provenance-anchored |\n| `/projections/<harness>/` | tooling | canon fanned back out into each harness's dialect |\n| `/memory/` | agents | distilled memory files (index + detail) |\n| `/plans/`, `/projects/` | agents | plan docs + task state, project manifests \u2014 the intent layer |\n| `/skills/`, `/agents/`, `/mcp/`, `/plugins/` | agents | capability artifacts (harness-contract layer) |\n\n`*.jsonl` files use `merge=union` (see `.gitattributes`) so append-only concurrent\nappends auto-merge.\n\n## CI\n\n`.github/workflows/canon-verify.yml` lints changed files on every push/PR:\nJSONL integrity, canon record schema, tool-pairing/chain invariants, secret-pattern\nscan, projection-ref resolution. It never writes to the repo. Failures are grouped\nand fatal \u2014 never silent.\n\n\n## Configuration (the levers)\n\n| File | Controls |\n|---|---|\n| `HARNESSES.json` (store root) | Which harnesses `canon sync` captures: `{ \"harnesses\": { \"<label>\": { \"exts\": [\".jsonl\"], \"roots\": [\"~/.tool/sessions\"] } } }` \u2014 adding a harness is config, not code |\n| `projects/ROOTS.json` | Project-map overrides for `canon list --project` / `canon graph`: `roots` (id \u2192 absolute path), `claudeDirs`, `cortexLabels`. Derivation from `$HOME` + the filesystem covers common cases; override dash-ambiguous paths, other machines' sessions, or sub-root labels |\n\n## Derived artifacts (regenerable, never source of truth)\n\n- `/projects/<id>.json` \u2014 derived project \u2194 session map\n- `/projects/<id>/graph.json` \u2014 project knowledge graph (NetworkX node-link;\n history half = sessions/artifacts/touched edges; code half auto-folded from\n `<project-root>/graphify-out/graph.json` when present; every edge\n confidence-tagged). Rebuild anytime: `cortex canon graph` / `nexus-canon graph`\n- `/canon/artifacts/` \u2014 ArtifactManifest records for skills/agents/mcp/plugins/plans/projects\n\nFull CLI reference: `cortex canon --help` (or `nexus-canon` standalone) and the\nCANON.md spec + HARNESS_ONBOARDING.md protocol in the nexus-cortex repository.\n\n## Access tokens\n\nPrefer a **fine-grained personal access token scoped to this single repository**\n(Contents: read/write). Never a classic all-repo token. If a workflow file itself\nmust be pushed, the pushing credential needs the `workflow` scope \u2014 grant it\ntemporarily, then revoke.\n\n## Privacy\n\nThis store may contain your working history. Keep the repository **private** by\ndefault. Scrub secrets before push (the CI secret scan is a tripwire, not the\nscrubber). `git clone --mirror` exits with your full history at any time \u2014 no\ntool or vendor holds it hostage.\n";
18
18
  /** Directory taxonomy: session dimension + intent layer + artifact dimension. */
19
19
  export declare const STORE_DIRS: readonly ["native", "canon", "projections", "memory", "plans", "projects", "skills", "agents", "mcp", "plugins"];
20
20
  //# sourceMappingURL=scaffoldAssets.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scaffoldAssets.d.ts","sourceRoot":"","sources":["../src/scaffoldAssets.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,wEAAwE;AACxE,eAAO,MAAM,aAAa,0BAA0B,CAAC;AAErD,6EAA6E;AAC7E,eAAO,MAAM,UAAU,4yEAAkyE,CAAC;AAE1zE,4EAA4E;AAC5E,eAAO,MAAM,gBAAgB,+3NAAqyN,CAAC;AAEn0N,mEAAmE;AACnE,eAAO,MAAM,YAAY,yiEAAghE,CAAC;AAE1iE,iFAAiF;AACjF,eAAO,MAAM,UAAU,kHAWb,CAAC"}
1
+ {"version":3,"file":"scaffoldAssets.d.ts","sourceRoot":"","sources":["../src/scaffoldAssets.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,wEAAwE;AACxE,eAAO,MAAM,aAAa,0BAA0B,CAAC;AAErD,6EAA6E;AAC7E,eAAO,MAAM,UAAU,4yEAAkyE,CAAC;AAE1zE,4EAA4E;AAC5E,eAAO,MAAM,gBAAgB,+3NAAqyN,CAAC;AAEn0N,mEAAmE;AACnE,eAAO,MAAM,YAAY,uzGAAuzG,CAAC;AAEj1G,iFAAiF;AACjF,eAAO,MAAM,UAAU,kHAWb,CAAC"}
@@ -14,7 +14,7 @@ export const VERIFY_YML = "# canon-verify — Phase A4 trust layer (CANON_CROSS_
14
14
  /** .github/scripts/canon-verify.mjs — dependency-free verification lint. */
15
15
  export const CANON_VERIFY_MJS = "/**\n * canon-verify — Phase A4 trust layer (CANON_CROSS_HARNESS_PLAN.md 27e).\n *\n * Verifies ONLY the files changed in a push/PR range. Four checks:\n * 1. JSONL integrity — every line of every changed *.jsonl / *.jsonl.part-NNNN\n * parses as JSON (parts are split at line boundaries by construction).\n * 2. Canon schema — records in /canon (excluding *.events.jsonl sidecars)\n * carry uuid, timestamp, type, provenance.\n * 3. Secret scan — the same pattern set the sync scrub applies (minus blanket\n * hex64); any hit here means content bypassed the scrub choke-point.\n * 4. Projection refs — every changed *.ref resolves to an existing canon file\n * (single form or .part-0000 chunked form).\n *\n * Failures are grouped, annotated (::error), and fatal — never silent (D8).\n * Staging form: graduates to the published library (`cortex canon verify`)\n * at Phase C; keep this dependency-free (bare node:*, no npm install).\n *\n * Usage: node canon-verify.mjs <baseRef> <headRef>\n */\nimport { execFileSync } from 'node:child_process';\nimport * as fs from 'node:fs';\nimport * as path from 'node:path';\n\nconst [base, head] = process.argv.slice(2);\nif (!base || !head) { console.error('usage: canon-verify.mjs <base> <head>'); process.exit(2); }\n\nconst git = (a) => execFileSync('git', a, { encoding: 'utf8', maxBuffer: 256 * 1024 * 1024 });\n\nconst SECRET_PATTERNS = [\n ['sk', /sk-[A-Za-z0-9_-]{16,}/],\n ['ghp', /ghp_[A-Za-z0-9]{20,}/],\n ['ghpat', /github_pat_[A-Za-z0-9_]{20,}/],\n ['ghu', /ghu_[A-Za-z0-9]{20,}/],\n ['ghs', /ghs_[A-Za-z0-9]{20,}/],\n ['hf', /hf_[A-Za-z0-9]{20,}/],\n ['aiza', /AIza[A-Za-z0-9_-]{20,}/],\n ['xai', /xai-[A-Za-z0-9]{20,}/],\n ['nar', /nar_[A-Za-z0-9]{16,}/],\n ['gsk', /gsk_[A-Za-z0-9]{20,}/],\n ['slack', /xox[bpars]-[A-Za-z0-9-]{10,}/],\n ['akia', /AKIA[A-Z0-9]{16}/],\n ['jwt', /eyJ[A-Za-z0-9_-]{20,}\\.eyJ[A-Za-z0-9_-]{20,}\\.[A-Za-z0-9_-]{10,}/],\n];\n\nconst changed = git(['diff', '--name-only', '--diff-filter=ACMR', base, head])\n .split('\\n').map((s) => s.trim()).filter(Boolean);\n\nconst isJsonl = (f) => /\\.jsonl(\\.part-\\d{4})?$/.test(f);\nconst isCanonRecordFile = (f) => f.startsWith('canon/') && isJsonl(f) && !/\\.events\\.jsonl$/.test(f);\nconst isRef = (f) => f.endsWith('.ref');\n\nconst failures = [];\nconst fail = (file, msg) => {\n failures.push(`${file} — ${msg}`);\n console.log(`::error file=${file}::${msg}`);\n};\n\nlet checkedFiles = 0, checkedLines = 0;\nfor (const f of changed) {\n if (!fs.existsSync(f)) continue; // renamed-away edge\n const isText = isJsonl(f) || isRef(f) || f.endsWith('.md') || f.endsWith('.json');\n if (!isText) continue;\n const content = fs.readFileSync(f, 'utf8');\n checkedFiles++;\n\n // 3. secret scan (report pattern label only — NEVER echo the match)\n for (const [label, re] of SECRET_PATTERNS) {\n if (re.test(content)) fail(f, `secret-pattern hit (${label}) — content bypassed the sync scrub`);\n }\n\n // 1 + 2. JSONL parse + canon schema + tool-pairing invariants.\n // Pairing (Phase B lesson — defects here surface as provider 400s at resume\n // time): every tool_result must follow a seen tool_use (orphans are the\n // translator's job to repair), and only TAIL tool_use may go unanswered\n // (live session snapshotted mid-call). Pairing is skipped on .part-NNNN\n // chunks — pairs legitimately span part boundaries.\n if (isJsonl(f)) {\n const schema = isCanonRecordFile(f);\n const checkPairs = schema && !/\\.part-\\d{4}$/.test(f);\n const uses = new Map(); // id -> line of tool_use\n const answered = new Set();\n const uuids = new Set();\n let lastRecordLine = 0;\n let n = 0;\n for (const line of content.split('\\n')) {\n n++;\n if (!line.trim()) continue;\n checkedLines++;\n let rec;\n try { rec = JSON.parse(line); }\n catch { fail(f, `line ${n}: unparseable JSON`); continue; }\n if (schema) {\n for (const field of ['uuid', 'timestamp', 'type', 'provenance']) {\n if (rec[field] === undefined) fail(f, `line ${n}: canon record missing '${field}'`);\n }\n }\n if (checkPairs) {\n lastRecordLine = n;\n // Chain integrity: parentUuid must resolve within the canonical line\n // (append-only ⇒ parents precede children). A dangling parent means a\n // sidecarred/dropped record broke the chain — Claude Code's renderer\n // silently EXCLUDES everything upstream of a break (a3.10 lesson: a\n // 555KB doc vanished from rendered context).\n if (rec.uuid) uuids.add(rec.uuid);\n if (typeof rec.parentUuid === 'string' && !uuids.has(rec.parentUuid)) {\n fail(f, `line ${n}: parentUuid ${rec.parentUuid} not found earlier in file — chain break (renderer will drop upstream context)`);\n }\n const blocks = Array.isArray(rec.message?.content) ? rec.message.content : [];\n for (const b of blocks) {\n if (b?.type === 'tool_use' && b.id) uses.set(b.id, n);\n if (b?.type === 'tool_result' && b.tool_use_id) {\n if (!uses.has(b.tool_use_id)) fail(f, `line ${n}: orphan tool_result (${b.tool_use_id}) — no prior tool_use; translator repair missing`);\n answered.add(b.tool_use_id);\n }\n }\n }\n }\n if (checkPairs) {\n for (const [id, line] of uses) {\n if (!answered.has(id) && lastRecordLine - line > 3) {\n fail(f, `line ${line}: unanswered tool_use (${id}) mid-file — only tail in-flight calls may dangle`);\n }\n }\n }\n }\n\n // 5. artifact-manifest schema (canon/artifacts/**.json — §27p second record kind)\n if (/^canon\\/artifacts\\/.+\\.json$/.test(f) && !f.endsWith('ARTIFACTS.md')) {\n try {\n const rec = JSON.parse(content);\n for (const field of ['recordKind', 'kind', 'id', 'version', 'timestamp', 'primary', 'content', 'provenance']) {\n if (rec[field] === undefined) fail(f, `artifact manifest missing '${field}'`);\n }\n if (rec.recordKind !== 'artifact-manifest') fail(f, `recordKind must be 'artifact-manifest'`);\n if (!Array.isArray(rec.content) || rec.content.some((c) => !c.path || !c.ref)) fail(f, 'content entries need path+ref');\n } catch { fail(f, 'artifact manifest: unparseable JSON'); }\n }\n\n // 4. projection refs resolve\n if (isRef(f)) {\n const target = content.trim();\n if (!target || target.includes('\\n')) fail(f, 'ref must be a single store-relative path');\n else if (!fs.existsSync(target) && !fs.existsSync(`${target}.part-0000`)) {\n fail(f, `ref target not found: ${target}`);\n }\n }\n}\n\nif (failures.length) {\n console.log(`[FAIL] canon-verify: ${failures.length} problem(s) in ${checkedFiles} changed file(s)`);\n process.exit(1);\n}\nconsole.log(`[OK] canon-verify: ${checkedFiles} changed file(s), ${checkedLines} record line(s), 0 problems`);\n";
16
16
  /** README.md — layout, CI, token-scoping, and privacy guidance. */
17
- export const STORE_README = "# Canon store\n\nYour agent memory, in a git repo you own. Scaffolded by `cortex canon init`.\n\nThis repository is a **canonical agent history & memory store** (canon): sessions,\nmemory, plans, and capability artifacts from any harness, stored once in a\nprovider-neutral format and translated per consumer at the edges. Spec:\n[docs/CANON.md](https://github.com/Spitfire-Products/nexus-cortex/blob/main/docs/CANON.md)\nin the nexus-cortex repository.\n\n## Layout\n\n| Path | Owner | Carries |\n|---|---|---|\n| `/native/<harness>/` | agents | each harness's own session dialect, verbatim (the only path an agent writes) |\n| `/canon/` | tooling | the canonical line translated, append-only, provenance-anchored |\n| `/projections/<harness>/` | tooling | canon fanned back out into each harness's dialect |\n| `/memory/` | agents | distilled memory files (index + detail) |\n| `/plans/`, `/projects/` | agents | plan docs + task state, project manifests the intent layer |\n| `/skills/`, `/agents/`, `/mcp/`, `/plugins/` | agents | capability artifacts (harness-contract layer) |\n\n`*.jsonl` files use `merge=union` (see `.gitattributes`) so append-only concurrent\nappends auto-merge.\n\n## CI\n\n`.github/workflows/canon-verify.yml` lints changed files on every push/PR:\nJSONL integrity, canon record schema, tool-pairing/chain invariants, secret-pattern\nscan, projection-ref resolution. It never writes to the repo. Failures are grouped\nand fatal never silent.\n\n## Access tokens\n\nPrefer a **fine-grained personal access token scoped to this single repository**\n(Contents: read/write). Never a classic all-repo token. If a workflow file itself\nmust be pushed, the pushing credential needs the `workflow` scope grant it\ntemporarily, then revoke.\n\n## Privacy\n\nThis store may contain your working history. Keep the repository **private** by\ndefault. Scrub secrets before push (the CI secret scan is a tripwire, not the\nscrubber). `git clone --mirror` exits with your full history at any time no\ntool or vendor holds it hostage.\n";
17
+ export const STORE_README = "# Canon store\n\nYour agent memory, in a git repo you own. Scaffolded by `cortex canon init`.\n\nThis repository is a **canonical agent history & memory store** (canon): sessions,\nmemory, plans, and capability artifacts from any harness, stored once in a\nprovider-neutral format and translated per consumer at the edges. Spec:\n[docs/CANON.md](https://github.com/Spitfire-Products/nexus-cortex/blob/main/docs/CANON.md)\nin the nexus-cortex repository.\n\n## Layout\n\n| Path | Owner | Carries |\n|---|---|---|\n| `/native/<harness>/` | agents | each harness's own session dialect, verbatim (the only path an agent writes) |\n| `/canon/` | tooling | the canonical line \u2014 translated, append-only, provenance-anchored |\n| `/projections/<harness>/` | tooling | canon fanned back out into each harness's dialect |\n| `/memory/` | agents | distilled memory files (index + detail) |\n| `/plans/`, `/projects/` | agents | plan docs + task state, project manifests \u2014 the intent layer |\n| `/skills/`, `/agents/`, `/mcp/`, `/plugins/` | agents | capability artifacts (harness-contract layer) |\n\n`*.jsonl` files use `merge=union` (see `.gitattributes`) so append-only concurrent\nappends auto-merge.\n\n## CI\n\n`.github/workflows/canon-verify.yml` lints changed files on every push/PR:\nJSONL integrity, canon record schema, tool-pairing/chain invariants, secret-pattern\nscan, projection-ref resolution. It never writes to the repo. Failures are grouped\nand fatal \u2014 never silent.\n\n\n## Configuration (the levers)\n\n| File | Controls |\n|---|---|\n| `HARNESSES.json` (store root) | Which harnesses `canon sync` captures: `{ \"harnesses\": { \"<label>\": { \"exts\": [\".jsonl\"], \"roots\": [\"~/.tool/sessions\"] } } }` \u2014 adding a harness is config, not code |\n| `projects/ROOTS.json` | Project-map overrides for `canon list --project` / `canon graph`: `roots` (id \u2192 absolute path), `claudeDirs`, `cortexLabels`. Derivation from `$HOME` + the filesystem covers common cases; override dash-ambiguous paths, other machines' sessions, or sub-root labels |\n\n## Derived artifacts (regenerable, never source of truth)\n\n- `/projects/<id>.json` \u2014 derived project \u2194 session map\n- `/projects/<id>/graph.json` \u2014 project knowledge graph (NetworkX node-link;\n history half = sessions/artifacts/touched edges; code half auto-folded from\n `<project-root>/graphify-out/graph.json` when present; every edge\n confidence-tagged). Rebuild anytime: `cortex canon graph` / `nexus-canon graph`\n- `/canon/artifacts/` \u2014 ArtifactManifest records for skills/agents/mcp/plugins/plans/projects\n\nFull CLI reference: `cortex canon --help` (or `nexus-canon` standalone) and the\nCANON.md spec + HARNESS_ONBOARDING.md protocol in the nexus-cortex repository.\n\n## Access tokens\n\nPrefer a **fine-grained personal access token scoped to this single repository**\n(Contents: read/write). Never a classic all-repo token. If a workflow file itself\nmust be pushed, the pushing credential needs the `workflow` scope \u2014 grant it\ntemporarily, then revoke.\n\n## Privacy\n\nThis store may contain your working history. Keep the repository **private** by\ndefault. Scrub secrets before push (the CI secret scan is a tripwire, not the\nscrubber). `git clone --mirror` exits with your full history at any time \u2014 no\ntool or vendor holds it hostage.\n";
18
18
  /** Directory taxonomy: session dimension + intent layer + artifact dimension. */
19
19
  export const STORE_DIRS = [
20
20
  'native',
@@ -1 +1 @@
1
- {"version":3,"file":"scaffoldAssets.js","sourceRoot":"","sources":["../src/scaffoldAssets.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,wEAAwE;AACxE,MAAM,CAAC,MAAM,aAAa,GAAG,uBAAuB,CAAC;AAErD,6EAA6E;AAC7E,MAAM,CAAC,MAAM,UAAU,GAAG,+xEAA+xE,CAAC;AAE1zE,4EAA4E;AAC5E,MAAM,CAAC,MAAM,gBAAgB,GAAG,kyNAAkyN,CAAC;AAEn0N,mEAAmE;AACnE,MAAM,CAAC,MAAM,YAAY,GAAG,6gEAA6gE,CAAC;AAE1iE,iFAAiF;AACjF,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,QAAQ;IACR,OAAO;IACP,aAAa;IACb,QAAQ;IACR,OAAO;IACP,UAAU;IACV,QAAQ;IACR,QAAQ;IACR,KAAK;IACL,SAAS;CACD,CAAC"}
1
+ {"version":3,"file":"scaffoldAssets.js","sourceRoot":"","sources":["../src/scaffoldAssets.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,wEAAwE;AACxE,MAAM,CAAC,MAAM,aAAa,GAAG,uBAAuB,CAAC;AAErD,6EAA6E;AAC7E,MAAM,CAAC,MAAM,UAAU,GAAG,+xEAA+xE,CAAC;AAE1zE,4EAA4E;AAC5E,MAAM,CAAC,MAAM,gBAAgB,GAAG,kyNAAkyN,CAAC;AAEn0N,mEAAmE;AACnE,MAAM,CAAC,MAAM,YAAY,GAAG,ozGAAozG,CAAC;AAEj1G,iFAAiF;AACjF,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,QAAQ;IACR,OAAO;IACP,aAAa;IACb,QAAQ;IACR,OAAO;IACP,UAAU;IACV,QAAQ;IACR,QAAQ;IACR,KAAK;IACL,SAAS;CACD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nexus-canon",
3
- "version": "1.1.0",
3
+ "version": "1.3.0",
4
4
  "description": "Portable agent memory in a git repo you own — the canonical agent history & memory store (canon): sync, translate, pull, capability artifacts, and project knowledge graphs across AI coding harnesses.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -19,7 +19,7 @@
19
19
  "test": "vitest run --passWithNoTests"
20
20
  },
21
21
  "dependencies": {
22
- "@nexus-cortex/types": "^4.55.0"
22
+ "@nexus-cortex/types": "^4.55.2"
23
23
  },
24
24
  "files": [
25
25
  "dist",