@inerrata-corporation/errata 2.0.6-dev.2278 → 2.0.6-dev.2330

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.
Files changed (2) hide show
  1. package/errata.mjs +36 -5
  2. package/package.json +1 -1
package/errata.mjs CHANGED
@@ -600,6 +600,15 @@ var init_graph_events = __esm({
600
600
  prefixes: ["mergegate."],
601
601
  consumer: "graph-health.mjs 'Graph merge gate' triggers (truncation + refused backlog, pending a live baseline) beside ingest.judge.*"
602
602
  },
603
+ "graph.causalroutes": {
604
+ // Causal-route induction + its membrane heal (PRIV-causal-route-membrane), up to two
605
+ // events per nightly run: causalroutes.heal.* (what the heal did to Triages minted
606
+ // before the public-only gate) and causalroutes.mint.* (incl. skippedNonPublicPairs —
607
+ // the cost of the gate). causalroutes.heal.stillExposed is the alertable number:
608
+ // private-sourced text still publicly readable. It must be 0.
609
+ prefixes: ["causalroutes."],
610
+ consumer: "scripts/probes/deep-health.ts \xA710b (pnpm probe:graph-health) reads the same counters off the day's MemoryReport (triageHeal*) and recomputes stillExposed live; a graph-health.mjs trigger on causalroutes.heal.stillExposed > 0 is owed once a live baseline exists"
611
+ },
603
612
  "graph.census": {
604
613
  prefixes: [
605
614
  "nodes.",
@@ -16353,6 +16362,9 @@ function parsePackageJson(path2, text) {
16353
16362
  }
16354
16363
  return deps;
16355
16364
  }
16365
+ function isPep508DirectRef(spec) {
16366
+ return /^[A-Za-z0-9][A-Za-z0-9._-]*(?:\[[^\]]*\])?\s*@\s*\S/.test(spec.trim());
16367
+ }
16356
16368
  function parseRequirements(path2, text) {
16357
16369
  const deps = [];
16358
16370
  for (const raw2 of text.split(/\r?\n/)) {
@@ -16360,7 +16372,14 @@ function parseRequirements(path2, text) {
16360
16372
  if (!line || line.startsWith("-") || line.startsWith("git+") || line.startsWith("http")) continue;
16361
16373
  const m = /^([A-Za-z0-9][A-Za-z0-9._-]*)(?:\[[^\]]*\])?\s*(?:([=<>!~]+)\s*([^\s;]+))?/.exec(line);
16362
16374
  if (m) {
16363
- deps.push({ ecosystem: "pypi", name: m[1] ?? "", version: m[2] ? m[3] ?? null : null, kind: "package", manifest: path2 });
16375
+ deps.push({
16376
+ ecosystem: "pypi",
16377
+ name: m[1] ?? "",
16378
+ version: m[2] ? m[3] ?? null : null,
16379
+ kind: "package",
16380
+ manifest: path2,
16381
+ ...isPep508DirectRef(line) ? { directRef: true } : {}
16382
+ });
16364
16383
  }
16365
16384
  }
16366
16385
  return deps;
@@ -16372,7 +16391,16 @@ function parsePyproject(path2, text) {
16372
16391
  for (const s of (m[1] ?? "").matchAll(/"([^"]+)"|'([^']+)'/g)) {
16373
16392
  const spec = s[1] || s[2] || "";
16374
16393
  const mm = /^([A-Za-z0-9][A-Za-z0-9._-]*)/.exec(spec);
16375
- if (mm) deps.push({ ecosystem: "pypi", name: mm[1] ?? "", version: null, kind: "package", manifest: path2 });
16394
+ if (mm) {
16395
+ deps.push({
16396
+ ecosystem: "pypi",
16397
+ name: mm[1] ?? "",
16398
+ version: null,
16399
+ kind: "package",
16400
+ manifest: path2,
16401
+ ...isPep508DirectRef(spec) ? { directRef: true } : {}
16402
+ });
16403
+ }
16376
16404
  }
16377
16405
  return deps;
16378
16406
  }
@@ -76512,10 +76540,13 @@ function isRuntimeToken(token) {
76512
76540
  function rankCandidates(cs) {
76513
76541
  return [...cs].sort((a, b) => b.weight - a.weight || a.name.localeCompare(b.name));
76514
76542
  }
76543
+ var VCS_HOST_SHORTHAND = /^(?:github|gitlab|bitbucket|gist):/;
76544
+ var SCP_STYLE_REMOTE = /^[\w.-]+@[\w.-]+:/;
76545
+ var BARE_REPO_SHORTHAND = /^[a-z0-9_.-]+\/[a-z0-9_.-]+(?:#.*)?$/;
76515
76546
  function isLocalSpec(version2) {
76516
76547
  if (!version2) return false;
76517
76548
  const v = version2.trim().toLowerCase();
76518
- return v.startsWith("workspace:") || v.startsWith("link:") || v.startsWith("file:") || v.startsWith("portal:") || v.startsWith("path:") || v.startsWith("git:") || v.startsWith("git+") || v.includes("://");
76549
+ return v.startsWith("workspace:") || v.startsWith("link:") || v.startsWith("file:") || v.startsWith("portal:") || v.startsWith("path:") || v.startsWith("git:") || v.startsWith("git+") || v.includes("://") || VCS_HOST_SHORTHAND.test(v) || SCP_STYLE_REMOTE.test(v) || BARE_REPO_SHORTHAND.test(v);
76519
76550
  }
76520
76551
  function retrievalStackTokens(input) {
76521
76552
  const cap = input.cap ?? RETRIEVAL_STACK_CAP;
@@ -76564,7 +76595,7 @@ function retrievalStackTokens(input) {
76564
76595
  if (RUNTIME_KINDS.has(d.kind)) continue;
76565
76596
  const ecosystem = d.ecosystem.toLowerCase();
76566
76597
  if (lockfileKeys.has(ecoKey(ecosystem, d.name))) continue;
76567
- if (isLocalSpec(d.version)) continue;
76598
+ if (d.directRef || isLocalSpec(d.version)) continue;
76568
76599
  if (!isPublicDep({ ecosystem, name: d.name }, registry2)) continue;
76569
76600
  const key = ecoKey(ecosystem, d.name);
76570
76601
  const prev = counted.get(key);
@@ -78093,7 +78124,7 @@ function createWatchBreaker(deps) {
78093
78124
  }
78094
78125
 
78095
78126
  // src/engine.ts
78096
- var DAEMON_VERSION = true ? "2.0.6-dev.2278" : "2.0.0-alpha.0";
78127
+ var DAEMON_VERSION = true ? "2.0.6-dev.2330" : "2.0.0-alpha.0";
78097
78128
  var IGNORED_PATH = /[\\/](?:\.git|node_modules|\.errata|\.claude|\.codex|\.cursor|\.turbo|\.next|dist|coverage|test-results|playwright-report|__pycache__)(?:[\\/]|$)/;
78098
78129
  var IGNORED_NOISE = /castalia\.db|eventlog\.sqlite|turn-cursors/;
78099
78130
  var GIT_OP_MUTE_MS = 4e3;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inerrata-corporation/errata",
3
- "version": "2.0.6-dev.2278",
3
+ "version": "2.0.6-dev.2330",
4
4
  "description": "errata - local-first observation engine for AI coding agents",
5
5
  "type": "module",
6
6
  "bin": {