@inerrata-corporation/errata 2.0.17-dev.3489 → 2.0.17-dev.3497

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 +48 -5
  2. package/package.json +1 -1
package/errata.mjs CHANGED
@@ -15758,7 +15758,7 @@ function checkHistoryCandidate(atom, blocks) {
15758
15758
  if (atom.anchorTokens.some((token) => !blocks.some((b) => b.kind === "diff" && b.pathToken === token)) || atom.label !== "Claim" && atom.anchorTokens.length === 0) return { reason: "invalid-anchor", evidence: [] };
15759
15759
  return { reason: "accepted", evidence: refs };
15760
15760
  }
15761
- var HISTORY_EVIDENCE_SCHEMA_VERSION, HistoryAnchorSourceSchema, HistorySymbolAnchorSchema, HistoryEvidenceSelectionSchema, HistoryCandidateSchema, HistoryRelationCandidateSchema, HistoryCandidateBatchSchema, HistoryEvidenceRefSchema;
15761
+ var HISTORY_EVIDENCE_SCHEMA_VERSION, HistoryAnchorSourceSchema, HistorySymbolAnchorSchema, HistoryEvidenceSelectionSchema, HistoryCandidateSchema, HISTORY_MAX_TEXT_CHARS, HistoryRelationCandidateSchema, HistoryCandidateBatchSchema, HistoryEvidenceRefSchema;
15762
15762
  var init_history_evidence = __esm({
15763
15763
  "../../packages/shared/src/history-evidence.ts"() {
15764
15764
  "use strict";
@@ -15800,6 +15800,7 @@ var init_history_evidence = __esm({
15800
15800
  evidence: external_exports.array(HistoryEvidenceSelectionSchema).min(1).max(12),
15801
15801
  anchorTokens: external_exports.array(external_exports.string().regex(/^p[0-9]+$/)).max(8)
15802
15802
  });
15803
+ HISTORY_MAX_TEXT_CHARS = 2e4;
15803
15804
  HistoryRelationCandidateSchema = external_exports.strictObject({
15804
15805
  tempId: external_exports.string().regex(/^r[0-9]{1,3}$/),
15805
15806
  fromTempId: external_exports.string().regex(/^a[0-9]{1,3}$/),
@@ -17348,6 +17349,7 @@ __export(src_exports, {
17348
17349
  GRAPH_EVENT_VOCABULARIES: () => GRAPH_EVENT_VOCABULARIES,
17349
17350
  HISTORY_EVIDENCE_SCHEMA_VERSION: () => HISTORY_EVIDENCE_SCHEMA_VERSION,
17350
17351
  HISTORY_MAX_SPINE_DEPS: () => HISTORY_MAX_SPINE_DEPS,
17352
+ HISTORY_MAX_TEXT_CHARS: () => HISTORY_MAX_TEXT_CHARS,
17351
17353
  HISTORY_SCRUBBER_VERSION: () => HISTORY_SCRUBBER_VERSION,
17352
17354
  HistoryAnchorSourceSchema: () => HistoryAnchorSourceSchema,
17353
17355
  HistoryCandidateBatchSchema: () => HistoryCandidateBatchSchema,
@@ -80744,6 +80746,10 @@ function trimToTokens(text, maxTokens, marker = TRUNCATION_MARKER) {
80744
80746
  if (nl > keep * 0.8) cut = cut.slice(0, nl);
80745
80747
  return { text: cut.replace(/\s+$/, "") + marker, truncated: true };
80746
80748
  }
80749
+ function capWireText(text) {
80750
+ if (text.length <= HISTORY_MAX_TEXT_CHARS) return { text, truncated: false };
80751
+ return trimToTokens(text, Math.floor(HISTORY_MAX_TEXT_CHARS / CHARS_PER_TOKEN));
80752
+ }
80747
80753
  var DENY_PATH_PREFIXES = ["keys/", "secrets/", "deploy/web-config", "deploy/ionos-upload", "hosting/", ".env"];
80748
80754
  var DENY_PATH_PARTS = ["/.env", "secrets", "credential"];
80749
80755
  var DENY_PATH_SUFFIXES = [".pem", ".key", ".p12", ".pfx", ".jks", ".keystore", ".ppk", "/id_rsa", "/id_dsa", "/id_ecdsa", "/id_ed25519", ".npmrc", ".netrc", ".htpasswd", ".pypirc"];
@@ -81020,6 +81026,12 @@ async function buildUnitBundle(root, unit, opts = {}) {
81020
81026
  diff = t.text;
81021
81027
  truncated = truncated || t.truncated;
81022
81028
  }
81029
+ {
81030
+ const n2 = capWireText(narrative2), f = capWireText(fileList);
81031
+ narrative2 = n2.text;
81032
+ fileList = f.text;
81033
+ truncated = truncated || n2.truncated || f.truncated;
81034
+ }
81023
81035
  return {
81024
81036
  sha: unit.sha,
81025
81037
  narrative: narrative2,
@@ -82234,7 +82246,7 @@ function createWatchBreaker(deps) {
82234
82246
  }
82235
82247
 
82236
82248
  // src/engine.ts
82237
- var DAEMON_VERSION = true ? "2.0.17-dev.3489" : "2.0.0-alpha.0";
82249
+ var DAEMON_VERSION = true ? "2.0.17-dev.3497" : "2.0.0-alpha.0";
82238
82250
  var IGNORED_PATH = /[\\/](?:\.git|node_modules|\.errata|\.claude|\.codex|\.cursor|\.turbo|\.next|dist|coverage|test-results|playwright-report|__pycache__)(?:[\\/]|$)/;
82239
82251
  var IGNORED_NOISE = /castalia\.db|eventlog\.sqlite|turn-cursors/;
82240
82252
  var GIT_OP_MUTE_MS = 4e3;
@@ -91437,6 +91449,27 @@ function buildCodexHooksToml(port, options) {
91437
91449
  );
91438
91450
  return CODEX_HOOKS_BEGIN + "\n" + handlers.join("\n") + CODEX_HOOKS_END + "\n";
91439
91451
  }
91452
+ function installedHookPort(settingsText) {
91453
+ let settings;
91454
+ try {
91455
+ settings = JSON.parse(settingsText);
91456
+ } catch {
91457
+ return null;
91458
+ }
91459
+ const hooks = settings?.hooks;
91460
+ if (!hooks || typeof hooks !== "object") return null;
91461
+ for (const groups of Object.values(hooks)) {
91462
+ for (const group of Array.isArray(groups) ? groups : []) {
91463
+ for (const h of group?.hooks ?? []) {
91464
+ if (typeof h?.command !== "string" || !h.command.includes("errata-managed")) continue;
91465
+ const m = /http:\/\/127\.0\.0\.1:(\d+)\//.exec(h.command);
91466
+ const port = m ? Number(m[1]) : NaN;
91467
+ if (Number.isInteger(port) && port > 0 && port < 65536) return port;
91468
+ }
91469
+ }
91470
+ }
91471
+ return null;
91472
+ }
91440
91473
 
91441
91474
  // src/codex-hook-relay.ts
91442
91475
  var CODEX_RELAY_SOURCE = String.raw`// errata-managed: regenerated by errata install-hooks codex
@@ -91879,6 +91912,10 @@ function removeProjectStatusLine(settings) {
91879
91912
  }
91880
91913
  return removed;
91881
91914
  }
91915
+ function isSameInstall(value, relay) {
91916
+ const command = value["command"].replace(/\\/g, "/").toLowerCase();
91917
+ return command.includes(relay.replace(/\\/g, "/").toLowerCase());
91918
+ }
91882
91919
  function userClaudeSettingsPath() {
91883
91920
  const base = process.env["CLAUDE_CONFIG_DIR"] ?? join46(homedir8(), ".claude");
91884
91921
  return join46(base, "settings.json");
@@ -91898,10 +91935,11 @@ function ensureUserStatusLine(opts) {
91898
91935
  return "unreadable";
91899
91936
  }
91900
91937
  }
91901
- const ownMain = settings["statusLine"] !== void 0 && !isErrataStatusLine(settings["statusLine"]);
91902
- const ownRows = settings["subagentStatusLine"] !== void 0 && !isErrataStatusLine(settings["subagentStatusLine"]);
91903
- if (ownMain && ownRows) return "kept-own";
91904
91938
  const relay = join46(opts.relayDir, STATUSLINE_RELAY_FILE);
91939
+ const keep = (value) => value !== void 0 && (!isErrataStatusLine(value) || !isSameInstall(value, relay));
91940
+ const ownMain = keep(settings["statusLine"]);
91941
+ const ownRows = keep(settings["subagentStatusLine"]);
91942
+ if (ownMain && ownRows) return "kept-own";
91905
91943
  mkdirSync10(opts.relayDir, { recursive: true });
91906
91944
  if (!existsSync37(relay) || readFileSync40(relay, "utf8") !== STATUSLINE_RELAY_SOURCE) {
91907
91945
  writeFileSync28(relay, STATUSLINE_RELAY_SOURCE, "utf8");
@@ -92317,6 +92355,11 @@ function resolveHookPort(explicit) {
92317
92355
  }
92318
92356
  }
92319
92357
  }
92358
+ const settingsPath = join47(ROOT, ".claude", "settings.json");
92359
+ try {
92360
+ if (existsSync38(settingsPath)) return installedHookPort(readFileSync41(settingsPath, "utf8")) ?? 7891;
92361
+ } catch {
92362
+ }
92320
92363
  return 7891;
92321
92364
  }
92322
92365
  async function cmdInit() {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inerrata-corporation/errata",
3
- "version": "2.0.17-dev.3489",
3
+ "version": "2.0.17-dev.3497",
4
4
  "description": "errata - local-first observation engine for AI coding agents",
5
5
  "type": "module",
6
6
  "bin": {