@inerrata-corporation/errata 2.0.13-dev.3043 → 2.0.13-dev.3054

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
@@ -33231,6 +33231,7 @@ var init_nightly = __esm({
33231
33231
  });
33232
33232
 
33233
33233
  // ../../packages/generalizer/src/embed-code.ts
33234
+ import { createHash as createHash5 } from "node:crypto";
33234
33235
  function embedCodeNodes(store, opts = {}) {
33235
33236
  return embedNodesByLabels(store, CODE_LABELS, opts);
33236
33237
  }
@@ -33239,9 +33240,15 @@ function embedSemanticNodes(store, opts = {}) {
33239
33240
  }
33240
33241
  async function ensureNodeEmbedded(store, nodeId, opts = {}) {
33241
33242
  const node2 = store.getNode(nodeId);
33242
- if (!node2 || node2.embedding.length > 0) return false;
33243
+ if (!node2) return false;
33244
+ if (!eligibleForEmbedding(store, node2)) {
33245
+ clearWithdrawnVector(store, node2.id);
33246
+ return false;
33247
+ }
33248
+ if (node2.embedding.length > 0) return false;
33243
33249
  const text = buildText(store, node2);
33244
33250
  if (!text) return false;
33251
+ const before = embeddingSnapshot(node2, text);
33245
33252
  let result;
33246
33253
  try {
33247
33254
  if (opts.mode === "hash") {
@@ -33255,12 +33262,41 @@ async function ensureNodeEmbedded(store, nodeId, opts = {}) {
33255
33262
  } catch {
33256
33263
  return false;
33257
33264
  }
33258
- store.updateNode(nodeId, {
33265
+ return store.transaction(() => writeIfUnchanged(store, before, result));
33266
+ }
33267
+ function embeddingState(node2) {
33268
+ return createHash5("sha256").update(JSON.stringify([node2.attrs["embeddingVersion"] ?? null, node2.embedding])).digest("hex");
33269
+ }
33270
+ function embeddingSnapshot(node2, text) {
33271
+ return { id: node2.id, text, validTo: node2.validTo, vectorState: embeddingState(node2) };
33272
+ }
33273
+ function writeIfUnchanged(store, before, result) {
33274
+ const current = store.getNode(before.id);
33275
+ if (!current || !eligibleForEmbedding(store, current) || buildText(store, current) !== before.text || current.validTo !== before.validTo || embeddingState(current) !== before.vectorState)
33276
+ return false;
33277
+ store.updateNode(current.id, {
33259
33278
  embedding: result.vector,
33260
- attrs: { ...node2.attrs, embeddingVersion: result.version }
33279
+ attrs: { ...current.attrs, embeddingVersion: result.version }
33261
33280
  });
33262
33281
  return true;
33263
33282
  }
33283
+ function eligibleForEmbedding(store, node2) {
33284
+ const cloudId = node2.attrs["cloudNodeId"];
33285
+ const raw2 = node2.attrs["source"] === "cloud" ? store.getMeta?.(`history-correction:${typeof cloudId === "string" ? cloudId : node2.id}`) : null;
33286
+ const correction = raw2 ? JSON.parse(raw2) : null;
33287
+ const withdrawn = correction && Number(correction.seq) >= Number(node2.attrs["historyCorrectionSeq"] ?? 0) && (correction.action === "quarantine" || correction.sourceSupport === "contradicted");
33288
+ return !withdrawn && historyReadPolicy(node2).allow && !node2.attrs["mergedInto"] && !node2.attrs["fusedInto"];
33289
+ }
33290
+ function clearWithdrawnVector(store, nodeId) {
33291
+ store.transaction(() => {
33292
+ const node2 = store.getNode(nodeId);
33293
+ if (!node2 || eligibleForEmbedding(store, node2)) return;
33294
+ if (node2.embedding.length || node2.attrs["embeddingVersion"] !== void 0) {
33295
+ const { embeddingVersion: _version, ...attrs } = node2.attrs;
33296
+ store.mergeNode({ ...node2, embedding: [], attrs });
33297
+ }
33298
+ });
33299
+ }
33264
33300
  async function embedNodesByLabels(store, labels, opts = {}) {
33265
33301
  const started2 = Date.now();
33266
33302
  const report = {
@@ -33275,8 +33311,14 @@ async function embedNodesByLabels(store, labels, opts = {}) {
33275
33311
  const currentVersion = hashOnly ? EMBEDDING_VERSION : (await embedBatchWithModelOrHash(["probe"]))[0]?.version ?? "unknown";
33276
33312
  const todo = [];
33277
33313
  for (const label of labels) {
33278
- for (const node2 of store.findNodesByLabel(label)) {
33314
+ for (const node2 of store.findNodesByLabel(
33315
+ label
33316
+ )) {
33279
33317
  report.scanned++;
33318
+ if (!eligibleForEmbedding(store, node2)) {
33319
+ clearWithdrawnVector(store, node2.id);
33320
+ continue;
33321
+ }
33280
33322
  const existingVersion = node2.attrs["embeddingVersion"] ?? null;
33281
33323
  if (existingVersion) {
33282
33324
  report.versionsSeen[existingVersion] = (report.versionsSeen[existingVersion] ?? 0) + 1;
@@ -33291,7 +33333,7 @@ async function embedNodesByLabels(store, labels, opts = {}) {
33291
33333
  }
33292
33334
  const text = buildText(store, node2);
33293
33335
  if (!text) continue;
33294
- todo.push({ id: node2.id, text });
33336
+ todo.push(embeddingSnapshot(node2, text));
33295
33337
  }
33296
33338
  }
33297
33339
  for (let i2 = 0; i2 < todo.length; i2 += BATCH_SIZE) {
@@ -33308,17 +33350,12 @@ async function embedNodesByLabels(store, labels, opts = {}) {
33308
33350
  }
33309
33351
  store.transaction(() => {
33310
33352
  for (let j = 0; j < batch.length; j++) {
33311
- const node2 = store.getNode(batch[j].id);
33312
- if (!node2) continue;
33313
- const newAttrs = {
33314
- ...node2.attrs,
33315
- embeddingVersion: results[j].version
33316
- };
33317
- store.updateNode(batch[j].id, {
33318
- embedding: results[j].vector,
33319
- attrs: newAttrs
33320
- });
33321
- report.embedded++;
33353
+ const result = results[j];
33354
+ if (!result) {
33355
+ report.failed++;
33356
+ continue;
33357
+ }
33358
+ if (writeIfUnchanged(store, batch[j], result)) report.embedded++;
33322
33359
  }
33323
33360
  });
33324
33361
  if (opts.progress) opts.progress(report.embedded, todo.length);
@@ -33347,6 +33384,7 @@ var CODE_LABELS, SEMANTIC_LABELS, BATCH_SIZE;
33347
33384
  var init_embed_code = __esm({
33348
33385
  "../../packages/generalizer/src/embed-code.ts"() {
33349
33386
  "use strict";
33387
+ init_src();
33350
33388
  init_src3();
33351
33389
  CODE_LABELS = ["Function", "Method", "Class", "Const"];
33352
33390
  SEMANTIC_LABELS = ["Problem", "RootCause", "Solution", "Pattern", "Claim"];
@@ -33510,7 +33548,7 @@ var init_src10 = __esm({
33510
33548
  });
33511
33549
 
33512
33550
  // ../../packages/indexer/src/parse-cache.ts
33513
- import { createHash as createHash5 } from "node:crypto";
33551
+ import { createHash as createHash6 } from "node:crypto";
33514
33552
  import { existsSync as existsSync12, mkdirSync as mkdirSync6, readFileSync as readFileSync10, readdirSync as readdirSync2, rmSync as rmSync2, statSync as statSync2, writeFileSync as writeFileSync9 } from "node:fs";
33515
33553
  import { homedir as homedir3 } from "node:os";
33516
33554
  import { join as join11 } from "node:path";
@@ -33518,7 +33556,7 @@ function parseCacheDir() {
33518
33556
  return process.env["ERRATA_PARSE_CACHE"] ?? join11(homedir3(), ".errata", "parse-cache");
33519
33557
  }
33520
33558
  function parseCacheKey(source, providerId) {
33521
- return createHash5("sha256").update(`${PARSE_CACHE_VERSION}:${providerId}:${source}`).digest("hex");
33559
+ return createHash6("sha256").update(`${PARSE_CACHE_VERSION}:${providerId}:${source}`).digest("hex");
33522
33560
  }
33523
33561
  function entryPath(dir, key) {
33524
33562
  return join11(dir, key.slice(0, 2), `${key.slice(2)}.json`);
@@ -33816,7 +33854,7 @@ var init_identity3 = __esm({
33816
33854
  import { appendFileSync, readFileSync as readFileSync11, statSync as statSync3 } from "node:fs";
33817
33855
  import { readdir } from "node:fs/promises";
33818
33856
  import { extname, join as join12, relative as relative2, sep } from "node:path";
33819
- import { createHash as createHash6 } from "node:crypto";
33857
+ import { createHash as createHash7 } from "node:crypto";
33820
33858
  import { execFileSync } from "node:child_process";
33821
33859
  function nowTs() {
33822
33860
  return indexNow ?? Date.now();
@@ -33825,7 +33863,7 @@ function fingerprintOf(signature, bodyHash) {
33825
33863
  return `${signature ?? ""}|${bodyHash ?? ""}`;
33826
33864
  }
33827
33865
  function sha(s) {
33828
- return createHash6("sha256").update(s).digest("hex").slice(0, 16);
33866
+ return createHash7("sha256").update(s).digest("hex").slice(0, 16);
33829
33867
  }
33830
33868
  function fileNodeId(workspaceId2, relPath) {
33831
33869
  return `file_${sha(workspaceId2 + ":" + relPath.replace(/\\/g, "/"))}`;
@@ -33953,7 +33991,7 @@ async function incrementalReindex(store, rootPath, workspaceId2, changedAbsPaths
33953
33991
  for (const rel of [...changedRelPaths]) {
33954
33992
  let h;
33955
33993
  try {
33956
- h = createHash6("sha256").update(readFileSync11(join12(rootPath, rel))).digest("hex");
33994
+ h = createHash7("sha256").update(readFileSync11(join12(rootPath, rel))).digest("hex");
33957
33995
  } catch {
33958
33996
  continue;
33959
33997
  }
@@ -34876,7 +34914,7 @@ function upsertFile(store, id, f, workspaceId2, skip) {
34876
34914
  if (existing && fileUnchanged(existing.attrs, f, skip)) return;
34877
34915
  let contentHash;
34878
34916
  try {
34879
- contentHash = createHash6("sha256").update(readFileSync11(f.absPath)).digest("hex");
34917
+ contentHash = createHash7("sha256").update(readFileSync11(f.absPath)).digest("hex");
34880
34918
  } catch {
34881
34919
  }
34882
34920
  const carried = { ...existing?.attrs ?? {} };
@@ -39405,7 +39443,7 @@ var init_tree_sitter_loader = __esm({
39405
39443
  });
39406
39444
 
39407
39445
  // ../../packages/indexer/src/languages/typescript-treesitter.ts
39408
- import { createHash as createHash7 } from "node:crypto";
39446
+ import { createHash as createHash8 } from "node:crypto";
39409
39447
  function extractNode(node2, source, containerQname, containerKind) {
39410
39448
  switch (node2.type) {
39411
39449
  case "function_declaration":
@@ -39618,7 +39656,7 @@ function scopeRecord(kind, name2, qname, node2, body2, source) {
39618
39656
  const sig = header.replace(/\s+/g, " ").trim();
39619
39657
  if (sig) rec.signature = sig;
39620
39658
  const bodyText = source.slice(body2.startIndex, body2.endIndex);
39621
- rec.bodyHash = createHash7("sha256").update(bodyText).digest("hex").slice(0, 16);
39659
+ rec.bodyHash = createHash8("sha256").update(bodyText).digest("hex").slice(0, 16);
39622
39660
  rec.bodySimhash = toHex(simhash(bodyText));
39623
39661
  }
39624
39662
  }
@@ -40060,14 +40098,14 @@ var init_typescript_treesitter = __esm({
40060
40098
  });
40061
40099
 
40062
40100
  // ../../packages/indexer/src/languages/python-treesitter.ts
40063
- import { createHash as createHash8 } from "node:crypto";
40101
+ import { createHash as createHash9 } from "node:crypto";
40064
40102
  function sigAndHash(node2, body2, source) {
40065
40103
  if (!body2) return {};
40066
40104
  const out2 = {};
40067
40105
  const sig = source.slice(node2.startIndex, body2.startIndex).replace(/\s+/g, " ").trim();
40068
40106
  if (sig) out2.signature = sig;
40069
40107
  const bodyText = source.slice(body2.startIndex, body2.endIndex);
40070
- out2.bodyHash = createHash8("sha256").update(bodyText).digest("hex").slice(0, 16);
40108
+ out2.bodyHash = createHash9("sha256").update(bodyText).digest("hex").slice(0, 16);
40071
40109
  out2.bodySimhash = toHex(simhash(bodyText));
40072
40110
  return out2;
40073
40111
  }
@@ -40480,7 +40518,7 @@ var init_python_treesitter = __esm({
40480
40518
  });
40481
40519
 
40482
40520
  // ../../packages/indexer/src/languages/cpp-treesitter.ts
40483
- import { createHash as createHash9 } from "node:crypto";
40521
+ import { createHash as createHash10 } from "node:crypto";
40484
40522
  function extractNode3(node2, containerQname, containerIsClass, source) {
40485
40523
  switch (node2.type) {
40486
40524
  case "function_definition":
@@ -40664,7 +40702,7 @@ function sigAndHash2(node2, body2, source) {
40664
40702
  const sig = source.slice(node2.startIndex, body2.startIndex).replace(/\s+/g, " ").trim();
40665
40703
  if (sig) out2.signature = sig;
40666
40704
  const bodyText = source.slice(body2.startIndex, body2.endIndex);
40667
- out2.bodyHash = createHash9("sha256").update(bodyText).digest("hex").slice(0, 16);
40705
+ out2.bodyHash = createHash10("sha256").update(bodyText).digest("hex").slice(0, 16);
40668
40706
  out2.bodySimhash = toHex(simhash(bodyText));
40669
40707
  return out2;
40670
40708
  }
@@ -40825,7 +40863,7 @@ var init_cpp_treesitter = __esm({
40825
40863
  });
40826
40864
 
40827
40865
  // ../../packages/indexer/src/languages/go-treesitter.ts
40828
- import { createHash as createHash10 } from "node:crypto";
40866
+ import { createHash as createHash11 } from "node:crypto";
40829
40867
  function extractNode4(node2, containerQname, source) {
40830
40868
  switch (node2.type) {
40831
40869
  case "function_declaration": {
@@ -40987,7 +41025,7 @@ function sigAndHash3(node2, body2, source) {
40987
41025
  const sig = source.slice(node2.startIndex, body2.startIndex).replace(/\s+/g, " ").trim();
40988
41026
  if (sig) out2.signature = sig;
40989
41027
  const bodyText = source.slice(body2.startIndex, body2.endIndex);
40990
- out2.bodyHash = createHash10("sha256").update(bodyText).digest("hex").slice(0, 16);
41028
+ out2.bodyHash = createHash11("sha256").update(bodyText).digest("hex").slice(0, 16);
40991
41029
  out2.bodySimhash = toHex(simhash(bodyText));
40992
41030
  return out2;
40993
41031
  }
@@ -41131,7 +41169,7 @@ var init_go_treesitter = __esm({
41131
41169
  });
41132
41170
 
41133
41171
  // ../../packages/indexer/src/languages/rust-treesitter.ts
41134
- import { createHash as createHash11 } from "node:crypto";
41172
+ import { createHash as createHash12 } from "node:crypto";
41135
41173
  function extractNode5(node2, containerQname, containerIsClass, source) {
41136
41174
  switch (node2.type) {
41137
41175
  case "function_item":
@@ -41346,7 +41384,7 @@ function sigAndHash4(node2, body2, source) {
41346
41384
  const sig = source.slice(node2.startIndex, body2.startIndex).replace(/\s+/g, " ").trim();
41347
41385
  if (sig) out2.signature = sig;
41348
41386
  const bodyText = source.slice(body2.startIndex, body2.endIndex);
41349
- out2.bodyHash = createHash11("sha256").update(bodyText).digest("hex").slice(0, 16);
41387
+ out2.bodyHash = createHash12("sha256").update(bodyText).digest("hex").slice(0, 16);
41350
41388
  out2.bodySimhash = toHex(simhash(bodyText));
41351
41389
  return out2;
41352
41390
  }
@@ -41497,7 +41535,7 @@ var init_rust_treesitter = __esm({
41497
41535
  });
41498
41536
 
41499
41537
  // ../../packages/indexer/src/languages/ruby-treesitter.ts
41500
- import { createHash as createHash12 } from "node:crypto";
41538
+ import { createHash as createHash13 } from "node:crypto";
41501
41539
  function sigAndHash5(node2, body2, source) {
41502
41540
  if (!body2) {
41503
41541
  const sig2 = source.slice(node2.startIndex, node2.endIndex).replace(/\s+/g, " ").trim();
@@ -41507,7 +41545,7 @@ function sigAndHash5(node2, body2, source) {
41507
41545
  const sig = source.slice(node2.startIndex, body2.startIndex).replace(/\s+/g, " ").trim();
41508
41546
  if (sig) out2.signature = sig;
41509
41547
  const bodyText = source.slice(body2.startIndex, body2.endIndex);
41510
- out2.bodyHash = createHash12("sha256").update(bodyText).digest("hex").slice(0, 16);
41548
+ out2.bodyHash = createHash13("sha256").update(bodyText).digest("hex").slice(0, 16);
41511
41549
  out2.bodySimhash = toHex(simhash(bodyText));
41512
41550
  return out2;
41513
41551
  }
@@ -41853,7 +41891,7 @@ var init_ruby_treesitter = __esm({
41853
41891
  });
41854
41892
 
41855
41893
  // ../../packages/indexer/src/languages/csharp-treesitter.ts
41856
- import { createHash as createHash13 } from "node:crypto";
41894
+ import { createHash as createHash14 } from "node:crypto";
41857
41895
  function extractNode7(node2, containerQname, containerIsType, source, eof) {
41858
41896
  switch (node2.type) {
41859
41897
  case "method_declaration":
@@ -42055,7 +42093,7 @@ function sigAndHash6(node2, body2, source) {
42055
42093
  const sig = source.slice(node2.startIndex, body2.startIndex).replace(/\s+/g, " ").trim();
42056
42094
  if (sig) out2.signature = sig;
42057
42095
  const bodyText = source.slice(body2.startIndex, body2.endIndex);
42058
- out2.bodyHash = createHash13("sha256").update(bodyText).digest("hex").slice(0, 16);
42096
+ out2.bodyHash = createHash14("sha256").update(bodyText).digest("hex").slice(0, 16);
42059
42097
  out2.bodySimhash = toHex(simhash(bodyText));
42060
42098
  return out2;
42061
42099
  }
@@ -51971,10 +52009,10 @@ import {
51971
52009
  writeFileSync as writeFileSync11
51972
52010
  } from "node:fs";
51973
52011
  import { join as join16 } from "node:path";
51974
- import { createHash as createHash14 } from "node:crypto";
52012
+ import { createHash as createHash15 } from "node:crypto";
51975
52013
  function enqueueOutbox(paths, payload) {
51976
52014
  ensureDir(paths.outbox);
51977
- const id = createHash14("sha256").update(JSON.stringify(payload)).digest("hex").slice(0, 16);
52015
+ const id = createHash15("sha256").update(JSON.stringify(payload)).digest("hex").slice(0, 16);
51978
52016
  const file2 = join16(paths.outbox, `${Date.now()}-${id}.json`);
51979
52017
  writeFileSync11(file2, JSON.stringify(payload, null, 2), "utf8");
51980
52018
  return file2;
@@ -74713,7 +74751,7 @@ init_checkout_root();
74713
74751
  import { closeSync, existsSync as existsSync16, fstatSync, openSync, readdirSync as readdirSync6, readSync, realpathSync, statSync as statSync6 } from "node:fs";
74714
74752
  import { basename as basename5, delimiter, dirname as dirname10, join as join20, normalize as normalize3 } from "node:path";
74715
74753
  import { homedir as homedir4 } from "node:os";
74716
- import { createHash as createHash15 } from "node:crypto";
74754
+ import { createHash as createHash16 } from "node:crypto";
74717
74755
  function readFrom(path2, fromByte, maxBytes) {
74718
74756
  let fd;
74719
74757
  try {
@@ -75022,7 +75060,7 @@ function parseCodexAssistantTurns(raw2, skipFirstLineParseFailure = false, start
75022
75060
  turns.push({
75023
75061
  // Slice-local line numbers repeat on every Stop. Position distinguishes
75024
75062
  // identical messages; the digest distinguishes a replaced row at that position.
75025
- uuid: typeof payload["id"] === "string" && payload["id"].length > 0 ? payload["id"] : `codex-${lineByte}-${createHash15("sha256").update(line.trimEnd()).digest("hex")}`,
75063
+ uuid: typeof payload["id"] === "string" && payload["id"].length > 0 ? payload["id"] : `codex-${lineByte}-${createHash16("sha256").update(line.trimEnd()).digest("hex")}`,
75026
75064
  text: parts2.join("\n\n"),
75027
75065
  hostHarness: "codex"
75028
75066
  });
@@ -75271,7 +75309,7 @@ function geminiSessionRoots(env2 = process.env, home = homedir4()) {
75271
75309
  return [...roots];
75272
75310
  }
75273
75311
  function geminiProjectHash(cwd) {
75274
- return createHash15("sha256").update(cwd).digest("hex");
75312
+ return createHash16("sha256").update(cwd).digest("hex");
75275
75313
  }
75276
75314
  function geminiHashesFor(cwd) {
75277
75315
  const variants = /* @__PURE__ */ new Set([cwd, cwd.replace(/\/+$/, "")]);
@@ -78592,7 +78630,7 @@ var TelemetryRecorder = class {
78592
78630
  // src/file-activity.ts
78593
78631
  import { readFileSync as readFileSync22 } from "node:fs";
78594
78632
  import { join as join28 } from "node:path";
78595
- import { createHash as createHash16 } from "node:crypto";
78633
+ import { createHash as createHash17 } from "node:crypto";
78596
78634
 
78597
78635
  // ../../packages/privacy/src/patterns/credentials.ts
78598
78636
  var CREDENTIAL_PATTERNS = [
@@ -79764,7 +79802,7 @@ var FileActivityReporter = class {
79764
79802
  const current = this.options.binding();
79765
79803
  if (!identity || this.stopped || !current.enabled || current.projectId !== binding.projectId)
79766
79804
  return false;
79767
- const hash2 = createHash16("sha256").update(JSON.stringify([identity, source, at, clean, operation, branch, previousBranch])).digest("hex");
79805
+ const hash2 = createHash17("sha256").update(JSON.stringify([identity, source, at, clean, operation, branch, previousBranch])).digest("hex");
79768
79806
  const id = `${hash2.slice(0, 8)}-${hash2.slice(8, 12)}-5${hash2.slice(13, 16)}-8${hash2.slice(17, 20)}-${hash2.slice(20, 32)}`;
79769
79807
  if (!this.pending.some((item) => item.event.id === id))
79770
79808
  this.pending.push({
@@ -80821,7 +80859,7 @@ function createWatchBreaker(deps) {
80821
80859
  }
80822
80860
 
80823
80861
  // src/engine.ts
80824
- var DAEMON_VERSION = true ? "2.0.13-dev.3043" : "2.0.0-alpha.0";
80862
+ var DAEMON_VERSION = true ? "2.0.13-dev.3054" : "2.0.0-alpha.0";
80825
80863
  var IGNORED_PATH = /[\\/](?:\.git|node_modules|\.errata|\.claude|\.codex|\.cursor|\.turbo|\.next|dist|coverage|test-results|playwright-report|__pycache__)(?:[\\/]|$)/;
80826
80864
  var IGNORED_NOISE = /castalia\.db|eventlog\.sqlite|turn-cursors/;
80827
80865
  var GIT_OP_MUTE_MS = 4e3;
@@ -83280,10 +83318,10 @@ init_registry();
83280
83318
  init_identity2();
83281
83319
 
83282
83320
  // src/instance-receipts.ts
83283
- import { createHash as createHash17 } from "node:crypto";
83321
+ import { createHash as createHash18 } from "node:crypto";
83284
83322
  var FIELDS = ["contributedAtSeq", "cloudNodeId", "anchorsContributedDigest", "projectAnchorsContributedDigest", "semanticEdgesContributedDigest", "shipRefusedSinceSeq", "shipRefusedCount", "shipRefusedReason", "shipRefusedFingerprint"];
83285
83323
  function instanceDestinationKey(input) {
83286
- return createHash17("sha256").update(JSON.stringify([
83324
+ return createHash18("sha256").update(JSON.stringify([
83287
83325
  input.workspace,
83288
83326
  input.cloudUrl.replace(/\/+$/, ""),
83289
83327
  input.installationId ?? input.profileName ?? "default",
@@ -86234,7 +86272,7 @@ async function startHistoryStage(root, input, client, walk11 = {}) {
86234
86272
 
86235
86273
  // src/link-flow.ts
86236
86274
  init_cloud_auth();
86237
- import { createHash as createHash18 } from "node:crypto";
86275
+ import { createHash as createHash19 } from "node:crypto";
86238
86276
  import { execFileSync as execFileSync5 } from "node:child_process";
86239
86277
  import { existsSync as existsSync30, writeFileSync as writeFileSync23 } from "node:fs";
86240
86278
  import { join as join38 } from "node:path";
@@ -86528,7 +86566,7 @@ async function loginOAuthLoopback(opts) {
86528
86566
 
86529
86567
  // src/link-flow.ts
86530
86568
  function remoteFingerprint(locator) {
86531
- return createHash18("sha256").update(locator).digest("hex");
86569
+ return createHash19("sha256").update(locator).digest("hex");
86532
86570
  }
86533
86571
  function isDecision(value) {
86534
86572
  if (!value || typeof value !== "object") return false;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inerrata-corporation/errata",
3
- "version": "2.0.13-dev.3043",
3
+ "version": "2.0.13-dev.3054",
4
4
  "description": "errata - local-first observation engine for AI coding agents",
5
5
  "type": "module",
6
6
  "bin": {
package/pass-worker.mjs CHANGED
@@ -27465,6 +27465,9 @@ function codeAnchorProjection(store2, semanticIds, opts = {}) {
27465
27465
  return out2;
27466
27466
  }
27467
27467
 
27468
+ // ../../packages/generalizer/src/embed-code.ts
27469
+ init_src();
27470
+
27468
27471
  // ../../packages/context-writer/src/agents-md.ts
27469
27472
  init_src();
27470
27473