@inerrata-corporation/errata 2.0.8 → 2.0.10
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/consolidate-worker.mjs +84 -13
- package/errata.mjs +380 -125
- package/package.json +1 -1
- package/pass-worker.mjs +46 -1
package/package.json
CHANGED
package/pass-worker.mjs
CHANGED
|
@@ -15140,7 +15140,7 @@ var init_symbol_intent = __esm({
|
|
|
15140
15140
|
});
|
|
15141
15141
|
|
|
15142
15142
|
// ../../packages/shared/src/wire.ts
|
|
15143
|
-
var CLOUD_NODE_LABELS, CLOUD_WRITABLE_NODE_LABELS, PROJECT_ONLY_NODE_LABELS, PROJECT_ONLY_NODE_LABEL_SET, PROJECT_ONLY_EDGE_TYPES, PROJECT_ONLY_EDGE_TYPE_SET, CLOUD_WRITABLE_NODE_LABEL_SET, CLOUD_EDGE_TYPES, INGEST_SOURCES, INGEST_EXTRACTION_SOURCES, CastaliaIngestNodeSchema, RouteContextCountWireSchema, ANCHOR_COMMIT_SHA_RE, ANCHOR_BODY_HASH_RE, ANCHOR_SYMBOL_KINDS, ANCHOR_LABEL_KINDS, ANCHOR_LABEL_PATH_RE, ANCHOR_LABEL_QNAME_RE, CastaliaIngestEdgeSchema, SymbolSummarySidecarSchema, CastaliaIngestPayloadSchema;
|
|
15143
|
+
var CLOUD_NODE_LABELS, CLOUD_WRITABLE_NODE_LABELS, PROJECT_ONLY_NODE_LABELS, PROJECT_ONLY_NODE_LABEL_SET, PROJECT_ONLY_EDGE_TYPES, PROJECT_ONLY_EDGE_TYPE_SET, CLOUD_WRITABLE_NODE_LABEL_SET, CLOUD_EDGE_TYPES, INGEST_SOURCES, INGEST_EXTRACTION_SOURCES, CastaliaIngestNodeSchema, RouteContextCountWireSchema, ANCHOR_COMMIT_SHA_RE, ANCHOR_BODY_HASH_RE, ANCHOR_SYMBOL_KINDS, ANCHOR_LABEL_KINDS, ANCHOR_LABEL_PATH_RE, ANCHOR_LABEL_QNAME_RE, TRIAGE_DISCRIMINATOR_MAX_LENGTH, CastaliaIngestEdgeSchema, SymbolSummarySidecarSchema, CastaliaIngestPayloadSchema;
|
|
15144
15144
|
var init_wire = __esm({
|
|
15145
15145
|
"../../packages/shared/src/wire.ts"() {
|
|
15146
15146
|
"use strict";
|
|
@@ -15258,6 +15258,7 @@ var init_wire = __esm({
|
|
|
15258
15258
|
ANCHOR_LABEL_KINDS = [...ANCHOR_SYMBOL_KINDS, "File"];
|
|
15259
15259
|
ANCHOR_LABEL_PATH_RE = /^(?![/])(?![A-Za-z]:)(?!(?:.*\/)?\.\.(?:\/|$))[^\x00-\x1f\x7f\\`]{1,512}$/;
|
|
15260
15260
|
ANCHOR_LABEL_QNAME_RE = /^[^\x00-\x1f\x7f`]{1,256}$/;
|
|
15261
|
+
TRIAGE_DISCRIMINATOR_MAX_LENGTH = 2e3;
|
|
15261
15262
|
CastaliaIngestEdgeSchema = external_exports.object({
|
|
15262
15263
|
fromCanonicalId: external_exports.string().min(6).max(160),
|
|
15263
15264
|
toCanonicalId: external_exports.string().min(6).max(160),
|
|
@@ -15268,6 +15269,8 @@ var init_wire = __esm({
|
|
|
15268
15269
|
/** Triage route per-context counts (T3 induction). Carried as structured data
|
|
15269
15270
|
* here; stored JSON-encoded on the Neo4j rel (`perContextJson`). */
|
|
15270
15271
|
perContext: external_exports.record(external_exports.string(), RouteContextCountWireSchema).optional(),
|
|
15272
|
+
/** Scrubbed diagnostic check for a triage route, re-scanned at the cloud door. */
|
|
15273
|
+
discriminator: external_exports.string().trim().min(1).max(TRIAGE_DISCRIMINATOR_MAX_LENGTH).optional(),
|
|
15271
15274
|
/** PJ-anchor-version: WHICH version of a symbol an `ANCHORED_AT` was
|
|
15272
15275
|
* witnessed against. Both opaque — the observing checkout's HEAD sha and
|
|
15273
15276
|
* the indexer's 16-hex sha256 of the symbol body. Neither is reversible
|
|
@@ -24519,6 +24522,12 @@ CREATE UNIQUE INDEX IF NOT EXISTS edges_triple ON edges(from_id, type, to_id);
|
|
|
24519
24522
|
`;
|
|
24520
24523
|
var TEMPORAL_INDEX_SQL = `
|
|
24521
24524
|
CREATE INDEX IF NOT EXISTS nodes_live ON nodes(label, valid_to);
|
|
24525
|
+
-- Covering + partial index for labelFingerprint over the instance labels: the
|
|
24526
|
+
-- live-push probe runs it per workspace on a timer, and each hit used to read
|
|
24527
|
+
-- its table row. Partial, so it maintains a few thousand rows instead of adding
|
|
24528
|
+
-- a write to every node write. Its label list is FINGERPRINT_INDEXED_LABELS.
|
|
24529
|
+
DROP INDEX IF EXISTS nodes_live_fingerprint;
|
|
24530
|
+
CREATE INDEX IF NOT EXISTS nodes_instance_fingerprint ON nodes(label, last_updated_at, last_reinforced_at_seq, created_at_seq) WHERE valid_to IS NULL AND label IN ('Problem','Solution','RootCause');
|
|
24522
24531
|
CREATE INDEX IF NOT EXISTS nodes_logical ON nodes(logical_id, version);
|
|
24523
24532
|
CREATE INDEX IF NOT EXISTS edges_live ON edges(valid_to);
|
|
24524
24533
|
-- Expression index on the per-node relPath (stored in attrs_json) so the
|
|
@@ -24589,6 +24598,7 @@ function rowToEdge(r) {
|
|
|
24589
24598
|
attrs: JSON.parse(r.attrs_json)
|
|
24590
24599
|
};
|
|
24591
24600
|
}
|
|
24601
|
+
var FINGERPRINT_INDEXED_LABELS = ["Problem", "Solution", "RootCause"];
|
|
24592
24602
|
var SqliteGraphStore = class {
|
|
24593
24603
|
db;
|
|
24594
24604
|
// Typed edge lookups build their SQL from the number of types asked for, and
|
|
@@ -25065,6 +25075,32 @@ var SqliteGraphStore = class {
|
|
|
25065
25075
|
attrs: JSON.parse(r.attrs_json)
|
|
25066
25076
|
}));
|
|
25067
25077
|
}
|
|
25078
|
+
*iterateNodeIdentitiesByLabel(label, pageSize = 2e3) {
|
|
25079
|
+
const page = this.db.prepare(
|
|
25080
|
+
"SELECT rowid AS rid, id, json_extract(attrs_json, '$.relPath') AS relPath, json_extract(attrs_json, '$.qname') AS qname FROM nodes WHERE rowid > ? AND label = ? AND valid_to IS NULL ORDER BY rowid LIMIT ?"
|
|
25081
|
+
);
|
|
25082
|
+
let after = 0;
|
|
25083
|
+
for (; ; ) {
|
|
25084
|
+
const rows = page.all(after, label, pageSize);
|
|
25085
|
+
for (const r of rows) {
|
|
25086
|
+
yield {
|
|
25087
|
+
id: r.id,
|
|
25088
|
+
relPath: typeof r.relPath === "string" ? r.relPath : null,
|
|
25089
|
+
qname: typeof r.qname === "string" ? r.qname : null
|
|
25090
|
+
};
|
|
25091
|
+
}
|
|
25092
|
+
if (rows.length < pageSize) return;
|
|
25093
|
+
after = rows[rows.length - 1].rid;
|
|
25094
|
+
}
|
|
25095
|
+
}
|
|
25096
|
+
recentNodeIds(label, limit) {
|
|
25097
|
+
const rows = this.db.prepare("SELECT id FROM nodes WHERE label = ? AND valid_to IS NULL ORDER BY last_updated_at DESC LIMIT ?").all(label, Math.max(0, limit));
|
|
25098
|
+
return rows.map((r) => r.id);
|
|
25099
|
+
}
|
|
25100
|
+
hasLiveNodes() {
|
|
25101
|
+
const r = this.db.prepare("SELECT EXISTS(SELECT 1 FROM nodes WHERE valid_to IS NULL) AS e").get();
|
|
25102
|
+
return r.e === 1;
|
|
25103
|
+
}
|
|
25068
25104
|
findNodeIdentitiesByLabel(label) {
|
|
25069
25105
|
const rows = this.stmts.identitiesByLabel.all(label);
|
|
25070
25106
|
return rows.map((r) => ({
|
|
@@ -25212,6 +25248,15 @@ var SqliteGraphStore = class {
|
|
|
25212
25248
|
}
|
|
25213
25249
|
labelFingerprint(labels) {
|
|
25214
25250
|
if (labels.length === 0) return "0";
|
|
25251
|
+
if (labels.length === FINGERPRINT_INDEXED_LABELS.length && FINGERPRINT_INDEXED_LABELS.every((l) => labels.includes(l))) {
|
|
25252
|
+
const r2 = this.db.prepare(
|
|
25253
|
+
`SELECT COUNT(*) AS n, MAX(last_updated_at) AS t,
|
|
25254
|
+
MAX(COALESCE(last_reinforced_at_seq, created_at_seq, 0)) AS s
|
|
25255
|
+
FROM nodes INDEXED BY nodes_instance_fingerprint
|
|
25256
|
+
WHERE valid_to IS NULL AND label IN ('Problem','Solution','RootCause')`
|
|
25257
|
+
).get();
|
|
25258
|
+
return `${r2.n}:${r2.t ?? 0}:${r2.s ?? 0}`;
|
|
25259
|
+
}
|
|
25215
25260
|
const r = this.db.prepare(
|
|
25216
25261
|
`SELECT COUNT(*) AS n, MAX(last_updated_at) AS t,
|
|
25217
25262
|
MAX(COALESCE(last_reinforced_at_seq, created_at_seq, 0)) AS s
|