@inerrata-corporation/errata 2.0.22-dev.4530 → 2.0.22-dev.4540

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/errata.mjs CHANGED
@@ -86676,7 +86676,7 @@ function createWatchBreaker(deps) {
86676
86676
  }
86677
86677
 
86678
86678
  // src/engine.ts
86679
- var DAEMON_VERSION = true ? "2.0.22-dev.4530" : "2.0.0-alpha.0";
86679
+ var DAEMON_VERSION = true ? "2.0.22-dev.4540" : "2.0.0-alpha.0";
86680
86680
  var IGNORED_PATH = /[\\/](?:\.git|node_modules|\.errata|\.claude|\.codex|\.cursor|\.turbo|\.next|dist|coverage|test-results|playwright-report|__pycache__)(?:[\\/]|$)/;
86681
86681
  var IGNORED_NOISE = /castalia\.db|eventlog\.sqlite|turn-cursors/;
86682
86682
  var GIT_OP_MUTE_MS = 4e3;
@@ -92299,7 +92299,15 @@ var revisionCaches = /* @__PURE__ */ new WeakMap();
92299
92299
  function cachesFor(git3) {
92300
92300
  let caches = revisionCaches.get(git3);
92301
92301
  if (!caches) {
92302
- caches = { parents: new Bounded(4), dependencies: new Bounded(8), trees: new Bounded(4), symbols: new Bounded(4e3), diffs: new Bounded(2e3) };
92302
+ caches = {
92303
+ parents: new Bounded(4),
92304
+ dependencies: new Bounded(8),
92305
+ trees: new Bounded(4),
92306
+ symbols: new Bounded(4e3),
92307
+ diffs: new Bounded(2e3),
92308
+ listings: new Bounded(4),
92309
+ blobs: new Bounded(256)
92310
+ };
92303
92311
  revisionCaches.set(git3, caches);
92304
92312
  }
92305
92313
  return caches;
@@ -92407,12 +92415,34 @@ async function syncHistoryRevisionPage(opts, resolve10) {
92407
92415
  const key = `${root}|${atCommit}|${ignoreKey}|${[...manifestIds].sort().join(",")}`;
92408
92416
  let snapshot = caches.dependencies.get(key);
92409
92417
  if (!snapshot) {
92418
+ const listed = (args2) => {
92419
+ if (args2[0] !== "ls-tree") return git3(args2);
92420
+ const k = `${root}|${args2.join(" ")}`;
92421
+ let out2 = caches.listings.get(k);
92422
+ if (!out2) {
92423
+ out2 = git3(args2);
92424
+ caches.listings.set(k, out2);
92425
+ out2.catch(() => caches.listings.delete(k));
92426
+ }
92427
+ return out2;
92428
+ };
92429
+ const blob = (oid) => {
92430
+ const k = `${root}|${oid}`;
92431
+ let out2 = caches.blobs.get(k);
92432
+ if (!out2) {
92433
+ out2 = git3(["show", oid]);
92434
+ caches.blobs.set(k, out2);
92435
+ out2.catch(() => caches.blobs.delete(k));
92436
+ }
92437
+ return out2;
92438
+ };
92410
92439
  snapshot = readHistoryDependencySnapshot({
92411
92440
  root,
92412
92441
  commit: atCommit,
92413
92442
  side: "after",
92414
92443
  manifestIds,
92415
- git: git3,
92444
+ git: listed,
92445
+ readBlob: blob,
92416
92446
  allowPath: (p) => pathAllowedByFloor(p) && !isPathBlocked(ignore2, p)
92417
92447
  });
92418
92448
  caches.dependencies.set(key, snapshot);
@@ -92441,9 +92471,9 @@ async function syncHistoryRevisionPage(opts, resolve10) {
92441
92471
  const path3 = local?.attrs["relPath"];
92442
92472
  if (typeof path3 !== "string" || !pathAllowedByFloor(path3) || isPathBlocked(ignore2, path3) || /[\r\n]/.test(path3)) continue;
92443
92473
  paths.add(path3);
92444
- const hashes = await fileSymbols({ caches, providers, root, salt, projectId }, path3, fileId(path3), () => git3(["show", `${atCommit}:${path3}`]));
92445
- if (!hashes) partial2 = true;
92446
- const bodyHash = hashes?.get(anchor.symbolId);
92474
+ const file2 = await fileSymbols({ caches, providers, root, salt, projectId }, path3, fileId(path3), () => git3(["show", `${atCommit}:${path3}`]));
92475
+ if (!file2) partial2 = true;
92476
+ const bodyHash = file2?.hashes.get(anchor.symbolId);
92447
92477
  if (bodyHash) symbols.push({ symbolId: anchor.symbolId, bodyHash });
92448
92478
  }
92449
92479
  const source = occurrenceSourceCommit(occurrence);
@@ -92546,22 +92576,28 @@ async function fileSymbols(ctx, path3, fileId, read2) {
92546
92576
  const fileKey = `${ctx.root}|${ctx.salt}|${ctx.projectId}|${fileId}|${path3}`;
92547
92577
  const cached2 = ctx.caches.symbols.get(fileKey);
92548
92578
  if (cached2) return cached2;
92549
- const hashes = /* @__PURE__ */ new Map();
92579
+ const out2 = { ids: /* @__PURE__ */ new Set(), hashes: /* @__PURE__ */ new Map(), parsed: true };
92550
92580
  const provider = ctx.providers.find((p) => p.fileExtensions.includes(extname3(path3).toLowerCase()));
92551
92581
  if (!provider) {
92552
- ctx.caches.symbols.set(fileKey, hashes);
92553
- return hashes;
92582
+ ctx.caches.symbols.set(fileKey, out2);
92583
+ return out2;
92554
92584
  }
92555
92585
  const source = await read2().catch(() => null);
92556
92586
  if (source === null) return void 0;
92557
- ctx.caches.symbols.set(fileKey, hashes);
92558
- if (Buffer.byteLength(source) > 1e6 || source.includes("\0")) return hashes;
92587
+ ctx.caches.symbols.set(fileKey, out2);
92588
+ if (Buffer.byteLength(source) > 1e6 || source.includes("\0")) {
92589
+ out2.parsed = false;
92590
+ return out2;
92591
+ }
92559
92592
  await provider.preload?.();
92560
92593
  for (const symbol2 of provider.extractSymbols(source, path3)) {
92561
92594
  const kind = KINDS[symbol2.kind];
92562
- if (kind && symbol2.bodyHash) hashes.set(projectSymbolId(ctx.salt, ctx.projectId, path3, symbol2.qname ?? symbol2.name, kind), symbol2.bodyHash);
92595
+ if (!kind) continue;
92596
+ const id = projectSymbolId(ctx.salt, ctx.projectId, path3, symbol2.qname ?? symbol2.name, kind);
92597
+ out2.ids.add(id);
92598
+ if (symbol2.bodyHash) out2.hashes.set(id, symbol2.bodyHash);
92563
92599
  }
92564
- return hashes;
92600
+ return out2;
92565
92601
  }
92566
92602
  var CARRY_MAX_CODE_FILES = 400;
92567
92603
  var CARRY_MAX_SYMBOLS = 5e3;
@@ -92596,12 +92632,12 @@ ${await git3(["rev-list", "--parents", "-1", from])}`.split("\n").map((row) => r
92596
92632
  }
92597
92633
  for (const change of allSymbols ? [] : code) {
92598
92634
  for (const blob of change.blobs) {
92599
- const hashes = await fileSymbols(o, change.path, blob, () => git3(["show", blob]));
92600
- if (!hashes) {
92635
+ const file2 = await fileSymbols(o, change.path, blob, () => git3(["show", blob]));
92636
+ if (!file2 || !file2.parsed) {
92601
92637
  allSymbols = true;
92602
92638
  break;
92603
92639
  }
92604
- for (const id of hashes.keys()) symbols.add(id);
92640
+ for (const id of file2.ids) symbols.add(id);
92605
92641
  }
92606
92642
  if (allSymbols) break;
92607
92643
  }
@@ -95284,10 +95320,13 @@ async function startMultiDaemon(opts = {}) {
95284
95320
  };
95285
95321
  app.all("/ws/:id", dispatchHot);
95286
95322
  app.all("/ws/:id/*", dispatchHot);
95323
+ const anchorPullInFlight = /* @__PURE__ */ new Map();
95287
95324
  const retireWorkspace = async (rec, reason) => {
95288
95325
  const idx = records.indexOf(rec);
95289
95326
  if (idx === -1) return;
95290
95327
  records.splice(idx, 1);
95328
+ await anchorPullInFlight.get(rec.root)?.catch(() => {
95329
+ });
95291
95330
  try {
95292
95331
  await rec.engine.stop();
95293
95332
  } catch (err2) {
@@ -95427,7 +95466,6 @@ async function startMultiDaemon(opts = {}) {
95427
95466
  });
95428
95467
  const revisionBacklog = /* @__PURE__ */ new Set();
95429
95468
  const lastAnchorPull = /* @__PURE__ */ new Map();
95430
- const anchorPullInFlight = /* @__PURE__ */ new Map();
95431
95469
  const pullProjectAnchors = (r, client, salt) => {
95432
95470
  const running = anchorPullInFlight.get(r.root);
95433
95471
  if (running) return running;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inerrata-corporation/errata",
3
- "version": "2.0.22-dev.4530",
3
+ "version": "2.0.22-dev.4540",
4
4
  "description": "errata - local-first observation engine for AI coding agents",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "errata-context",
3
- "version": "2.0.22-dev.4530",
3
+ "version": "2.0.22-dev.4540",
4
4
  "description": "A minimal 3D view of loaded Errata priors and recent graph bursts.",
5
5
  "author": {
6
6
  "name": "inErrata"
@@ -1,4 +1,4 @@
1
- 070354c29f752597560a79b2f85cda3b3988bc46099b17b49f95e8ce37fdad47 .codex-plugin/plugin.json
1
+ 49972879e17f1037397b0fe434c6c78f4d41ae4458de157acb01a2e5a7208033 .codex-plugin/plugin.json
2
2
  a7bebae9fb01c838d6c75fc784129e28be571233fa66ff5ee8039b574f35ccf7 assets/icon.png
3
3
  fc38b64e4df1e0b72c35764bef6c4c05430d97c9009ad0ecc8a9e75b4deab232 configure-local.mjs
4
4
  73dc6028b3b070257c7c31f252d11e55a9e096f4aed0f187f10cb21716e1e6d7 dist/client.js