pilotswarm-horizon-store 0.2.2
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/README.md +154 -0
- package/dist/src/agent-tools.d.ts +32 -0
- package/dist/src/agent-tools.d.ts.map +1 -0
- package/dist/src/agent-tools.js +263 -0
- package/dist/src/agent-tools.js.map +1 -0
- package/dist/src/config.d.ts +93 -0
- package/dist/src/config.d.ts.map +1 -0
- package/dist/src/config.js +120 -0
- package/dist/src/config.js.map +1 -0
- package/dist/src/db-retry.d.ts +21 -0
- package/dist/src/db-retry.d.ts.map +1 -0
- package/dist/src/db-retry.js +94 -0
- package/dist/src/db-retry.js.map +1 -0
- package/dist/src/embedding-client.d.ts +13 -0
- package/dist/src/embedding-client.d.ts.map +1 -0
- package/dist/src/embedding-client.js +79 -0
- package/dist/src/embedding-client.js.map +1 -0
- package/dist/src/graph-model.d.ts +49 -0
- package/dist/src/graph-model.d.ts.map +1 -0
- package/dist/src/graph-model.js +112 -0
- package/dist/src/graph-model.js.map +1 -0
- package/dist/src/graph-queries.d.ts +83 -0
- package/dist/src/graph-queries.d.ts.map +1 -0
- package/dist/src/graph-queries.js +727 -0
- package/dist/src/graph-queries.js.map +1 -0
- package/dist/src/graph-store.d.ts +57 -0
- package/dist/src/graph-store.d.ts.map +1 -0
- package/dist/src/graph-store.js +327 -0
- package/dist/src/graph-store.js.map +1 -0
- package/dist/src/horizon-migrator.d.ts +49 -0
- package/dist/src/horizon-migrator.d.ts.map +1 -0
- package/dist/src/horizon-migrator.js +231 -0
- package/dist/src/horizon-migrator.js.map +1 -0
- package/dist/src/horizon-store.d.ts +116 -0
- package/dist/src/horizon-store.d.ts.map +1 -0
- package/dist/src/horizon-store.js +563 -0
- package/dist/src/horizon-store.js.map +1 -0
- package/dist/src/index.d.ts +13 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +21 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/preconditions.d.ts +16 -0
- package/dist/src/preconditions.d.ts.map +1 -0
- package/dist/src/preconditions.js +99 -0
- package/dist/src/preconditions.js.map +1 -0
- package/dist/src/query-builder.d.ts +37 -0
- package/dist/src/query-builder.d.ts.map +1 -0
- package/dist/src/query-builder.js +82 -0
- package/dist/src/query-builder.js.map +1 -0
- package/dist/src/sql-util.d.ts +20 -0
- package/dist/src/sql-util.d.ts.map +1 -0
- package/dist/src/sql-util.js +40 -0
- package/dist/src/sql-util.js.map +1 -0
- package/dist/src/types.d.ts +16 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +35 -0
- package/dist/src/types.js.map +1 -0
- package/migrations/0001_facts_table.sql +77 -0
- package/migrations/0002_indexes.sql +27 -0
- package/migrations/0003_age_bootstrap.sql +13 -0
- package/migrations/0004_facts_procs.sql +253 -0
- package/migrations/0005_embedder_workflow.sql +119 -0
- package/migrations/0006_facts_read_uncrawled_embedded_gate.sql +33 -0
- package/migrations/0007_embed_key_value_text.sql +122 -0
- package/migrations/0008_embedder_failure_recovery.sql +409 -0
- package/migrations/0009_search_text_full_value.sql +52 -0
- package/migrations/0010_minimal_two_loop_embedder.sql +392 -0
- package/migrations/0011_unified_api_embedder_workflow.sql +273 -0
- package/migrations/0012_facts_soft_delete.sql +587 -0
- package/migrations/0013_graph_namespaces.sql +60 -0
- package/package.json +69 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph-queries.js","sourceRoot":"","sources":["../../src/graph-queries.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type { AccessContext, GraphEdgeHit, GraphEdgeInput, GraphEdgeQuery, GraphNodeHit, GraphNamespaceQuery, GraphNodeInput, GraphNodeQuery, GraphNodeRef, GraphEdgeRef, GraphStore, SubGraph, GraphNamespaceInfo, GraphNamespaceInput, GraphNamespaceListQuery, GraphNamespaceDeleteResult } from "./types.js";
|
|
2
|
+
import type { HorizonFactsConfig } from "./config.js";
|
|
3
|
+
export declare class HorizonDBGraphStore implements GraphStore {
|
|
4
|
+
private readonly cfg;
|
|
5
|
+
private pool;
|
|
6
|
+
private initialized;
|
|
7
|
+
private readonly graphQueries;
|
|
8
|
+
private nsCache;
|
|
9
|
+
private nsClock;
|
|
10
|
+
private constructor();
|
|
11
|
+
static create(config?: Partial<HorizonFactsConfig>): Promise<HorizonDBGraphStore>;
|
|
12
|
+
/**
|
|
13
|
+
* Fail-fast on AGE only (07 D2) — a graph deployment needs `age`, nothing
|
|
14
|
+
* else — then run the idempotent AGE bootstrap (CREATE EXTENSION age +
|
|
15
|
+
* create_graph, both guarded). No vector / textsearch / pg_durable here;
|
|
16
|
+
* this provider can pair with a plain PgFactStore.
|
|
17
|
+
*/
|
|
18
|
+
initialize(): Promise<void>;
|
|
19
|
+
close(): Promise<void>;
|
|
20
|
+
searchGraphNodes(q: GraphNodeQuery, access?: AccessContext): Promise<GraphNodeHit[]>;
|
|
21
|
+
searchGraphEdges(q: GraphEdgeQuery, access?: AccessContext): Promise<GraphEdgeHit[]>;
|
|
22
|
+
normalizePredicateKey(predicate: string): string;
|
|
23
|
+
graphNeighbourhood(nodeKey: string, depth: number, access?: AccessContext, opts?: GraphNamespaceQuery): Promise<SubGraph>;
|
|
24
|
+
upsertGraphNode(n: GraphNodeInput): Promise<GraphNodeRef>;
|
|
25
|
+
upsertGraphEdge(e: GraphEdgeInput): Promise<GraphEdgeRef>;
|
|
26
|
+
mergeGraphNodes(fromKey: string, intoKey: string, reason: string, opts?: GraphNamespaceQuery): Promise<void>;
|
|
27
|
+
deleteGraphNode(nodeKey: string, opts?: GraphNamespaceQuery): Promise<boolean>;
|
|
28
|
+
deleteGraphEdge(fromKey: string, toKey: string, predicateKey: string, opts?: GraphNamespaceQuery): Promise<boolean>;
|
|
29
|
+
removeGraphEvidence(scopeKey: string, opts?: GraphNamespaceQuery): Promise<import("./types.js").GraphEvidenceRemovalResult>;
|
|
30
|
+
/** Cheap whole-graph counts for graph_stats (07 P5) — single count() Cypher
|
|
31
|
+
* per axis, no client-side fan-out. The SDK tool adds the crawl backlog. */
|
|
32
|
+
graphStats(opts?: GraphNamespaceQuery): Promise<{
|
|
33
|
+
nodeCount: number;
|
|
34
|
+
edgeCount: number;
|
|
35
|
+
}>;
|
|
36
|
+
private get registrySchema();
|
|
37
|
+
private nsTable;
|
|
38
|
+
private get nsCacheTtlMs();
|
|
39
|
+
/** Test seam: override the cache clock to exercise TTL expiry deterministically. */
|
|
40
|
+
setNamespaceCacheClock(clock: () => number): void;
|
|
41
|
+
private invalidateNamespaceCache;
|
|
42
|
+
/**
|
|
43
|
+
* Map any caller namespace to its REGISTRY key. The unscoped partition is
|
|
44
|
+
* keyed by the literal `default` row; `default`/empty/trailing-slash all
|
|
45
|
+
* resolve to it. Concrete corpora keep their trimmed key.
|
|
46
|
+
*/
|
|
47
|
+
private namespaceKey;
|
|
48
|
+
private validateFrontmatter;
|
|
49
|
+
private nsRowToInfo;
|
|
50
|
+
private loadNamespaceRows;
|
|
51
|
+
listGraphNamespaces(q?: GraphNamespaceListQuery): Promise<GraphNamespaceInfo[]>;
|
|
52
|
+
getGraphNamespace(namespace: string): Promise<GraphNamespaceInfo | null>;
|
|
53
|
+
upsertGraphNamespace(input: GraphNamespaceInput): Promise<GraphNamespaceInfo>;
|
|
54
|
+
archiveGraphNamespace(namespace: string): Promise<boolean>;
|
|
55
|
+
deleteGraphNamespace(namespace: string): Promise<GraphNamespaceDeleteResult>;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=graph-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph-store.d.ts","sourceRoot":"","sources":["../../src/graph-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,327 @@
|
|
|
1
|
+
// pilotswarm-horizon-store — HorizonDB-backed GraphStore provider.
|
|
2
|
+
//
|
|
3
|
+
// SEPARATE PROVIDER (07 D2): the open knowledge graph is its own injected
|
|
4
|
+
// interface, implemented by its own provider with its own pool and an AGE-only
|
|
5
|
+
// fail-fast. It is NOT bundled into the fact provider (HorizonDBFactStore) and
|
|
6
|
+
// it never reads the facts table — evidence scopeKeys are opaque ids; resolving
|
|
7
|
+
// them back to fact values is the caller's tool-layer composition
|
|
8
|
+
// (graphStore.searchGraphNodes(...) -> factStore.readFacts({ scopeKeys })).
|
|
9
|
+
//
|
|
10
|
+
// The bundled HorizonDB deployment is simply HorizonDBFactStore +
|
|
11
|
+
// HorizonDBGraphStore pointed at one database (two pools). The base-facts +
|
|
12
|
+
// graph tier is PgFactStore + HorizonDBGraphStore (this provider needs only AGE).
|
|
13
|
+
//
|
|
14
|
+
// All graph access goes through the typed Cypher layer (graph-queries.ts); this
|
|
15
|
+
// class is the lifecycle wrapper (create / initialize / close) plus the
|
|
16
|
+
// GraphStore method surface.
|
|
17
|
+
import { resolveConfig, buildPoolConfig, DEFAULT_NAMESPACE_CACHE_TTL_MS } from "./config.js";
|
|
18
|
+
import { loadMigrations, HORIZON_FACTS_LOCK_SEED, hashSchemaName } from "./horizon-migrator.js";
|
|
19
|
+
import { assertGraphExtensions } from "./preconditions.js";
|
|
20
|
+
import { ident } from "./sql-util.js";
|
|
21
|
+
import { GraphQueries } from "./graph-queries.js";
|
|
22
|
+
import { predicateKey } from "./graph-model.js";
|
|
23
|
+
/** The single graph-bootstrap migration (AGE extension + create_graph). */
|
|
24
|
+
const GRAPH_BOOTSTRAP_VERSION = "0003";
|
|
25
|
+
/** The graph namespace registry sidecar migration (graph-fact-search). */
|
|
26
|
+
const GRAPH_NAMESPACES_VERSION = "0013";
|
|
27
|
+
/** Registry key for the reserved unscoped/NULL partition. */
|
|
28
|
+
const DEFAULT_NS_KEY = "default";
|
|
29
|
+
/** Frontmatter caps so the compact list stays compact. */
|
|
30
|
+
const MAX_FRONTMATTER_NAME = 120;
|
|
31
|
+
const MAX_FRONTMATTER_DESC = 600;
|
|
32
|
+
export class HorizonDBGraphStore {
|
|
33
|
+
cfg;
|
|
34
|
+
pool;
|
|
35
|
+
initialized = false;
|
|
36
|
+
graphQueries;
|
|
37
|
+
// Single full snapshot of the (small) namespace table; compact/detail views
|
|
38
|
+
// and prefix/archived filters are projected in memory. Writes invalidate it
|
|
39
|
+
// in-process; other workers converge within the TTL. `nsClock` is an
|
|
40
|
+
// injectable seam so expiry can be tested without sleeping.
|
|
41
|
+
nsCache = null;
|
|
42
|
+
nsClock = () => Date.now();
|
|
43
|
+
constructor(pool, cfg) {
|
|
44
|
+
this.cfg = cfg;
|
|
45
|
+
this.pool = pool;
|
|
46
|
+
this.graphQueries = new GraphQueries(pool, cfg.graphName);
|
|
47
|
+
}
|
|
48
|
+
static async create(config = {}) {
|
|
49
|
+
const cfg = resolveConfig(config);
|
|
50
|
+
// Managed-identity / AAD token auth is not yet implemented in this
|
|
51
|
+
// provider (07 P5) — keep the runtime dep surface to `pg` only. Fail
|
|
52
|
+
// FAST rather than silently ignoring the request (mirrors the fact store).
|
|
53
|
+
if (cfg.useManagedIdentity) {
|
|
54
|
+
throw new Error("HorizonDBGraphStore does not support managed-identity (AAD token) auth yet. " +
|
|
55
|
+
"Provide a connection string with embedded credentials, or run without a graph store " +
|
|
56
|
+
"for managed-identity deployments. (enhancedfactstore 07 P5)");
|
|
57
|
+
}
|
|
58
|
+
const { default: pg } = await import("pg");
|
|
59
|
+
const pool = new pg.Pool(buildPoolConfig(cfg.connectionString, cfg.poolMax));
|
|
60
|
+
pool.on("error", (err) => console.error("[horizon-graph] pool error (non-fatal):", err.message));
|
|
61
|
+
return new HorizonDBGraphStore(pool, cfg);
|
|
62
|
+
}
|
|
63
|
+
// ─── lifecycle ────────────────────────────────────────────────────────────
|
|
64
|
+
/**
|
|
65
|
+
* Fail-fast on AGE only (07 D2) — a graph deployment needs `age`, nothing
|
|
66
|
+
* else — then run the idempotent AGE bootstrap (CREATE EXTENSION age +
|
|
67
|
+
* create_graph, both guarded). No vector / textsearch / pg_durable here;
|
|
68
|
+
* this provider can pair with a plain PgFactStore.
|
|
69
|
+
*/
|
|
70
|
+
async initialize() {
|
|
71
|
+
if (this.initialized)
|
|
72
|
+
return;
|
|
73
|
+
await assertGraphExtensions(this.pool);
|
|
74
|
+
const migrations = loadMigrations({
|
|
75
|
+
schema: this.cfg.schema,
|
|
76
|
+
graphName: this.cfg.graphName,
|
|
77
|
+
registrySchema: this.registrySchema,
|
|
78
|
+
embeddingDim: this.cfg.embeddingDim ?? 1,
|
|
79
|
+
});
|
|
80
|
+
const bootstrap = migrations.find((m) => m.version === GRAPH_BOOTSTRAP_VERSION);
|
|
81
|
+
if (!bootstrap) {
|
|
82
|
+
throw new Error(`horizon-graph: graph bootstrap migration ${GRAPH_BOOTSTRAP_VERSION} not found`);
|
|
83
|
+
}
|
|
84
|
+
const nsMigration = migrations.find((m) => m.version === GRAPH_NAMESPACES_VERSION);
|
|
85
|
+
if (!nsMigration) {
|
|
86
|
+
throw new Error(`horizon-graph: namespace registry migration ${GRAPH_NAMESPACES_VERSION} not found`);
|
|
87
|
+
}
|
|
88
|
+
// The registry schema MUST differ from the AGE graph name: create_graph()
|
|
89
|
+
// owns a Postgres schema of that name, so colocating the sidecar there
|
|
90
|
+
// would make it droppable by drop_graph and mix relational DDL into the
|
|
91
|
+
// AGE-managed schema. Fail fast rather than silently corrupt placement.
|
|
92
|
+
if (this.registrySchema === this.cfg.graphName) {
|
|
93
|
+
throw new Error(`horizon-graph: registrySchema "${this.registrySchema}" must differ from the AGE graph name ` +
|
|
94
|
+
`"${this.cfg.graphName}" (Apache AGE owns a schema of that name). Set a distinct registrySchema / ` +
|
|
95
|
+
`HORIZON_GRAPH_REGISTRY_SCHEMA.`);
|
|
96
|
+
}
|
|
97
|
+
const lockKey = hashSchemaName("horizon-graph-bootstrap", HORIZON_FACTS_LOCK_SEED);
|
|
98
|
+
const client = await this.pool.connect();
|
|
99
|
+
try {
|
|
100
|
+
for (let attempt = 1; attempt <= 10; attempt++) {
|
|
101
|
+
try {
|
|
102
|
+
await client.query("BEGIN");
|
|
103
|
+
await client.query("SELECT pg_advisory_xact_lock($1)", [lockKey]);
|
|
104
|
+
await client.query(bootstrap.sql);
|
|
105
|
+
await client.query("COMMIT");
|
|
106
|
+
break;
|
|
107
|
+
}
|
|
108
|
+
catch (err) {
|
|
109
|
+
await client.query("ROLLBACK").catch(() => { });
|
|
110
|
+
const transient = /tuple concurrently updated|already exists/i.test(String(err?.message ?? err));
|
|
111
|
+
if (!transient)
|
|
112
|
+
throw err;
|
|
113
|
+
const { rows } = await client.query("SELECT 1 FROM ag_catalog.ag_graph WHERE name = $1 LIMIT 1", [this.cfg.graphName]);
|
|
114
|
+
if (rows.length > 0)
|
|
115
|
+
break;
|
|
116
|
+
if (attempt === 10)
|
|
117
|
+
throw err;
|
|
118
|
+
await new Promise((resolve) => setTimeout(resolve, 250 * attempt));
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
finally {
|
|
123
|
+
client.release();
|
|
124
|
+
}
|
|
125
|
+
// Namespace registry sidecar (graph-fact-search): a SECOND idempotent
|
|
126
|
+
// bootstrap, isolated from the 0003 AGE-race retry so a transient here
|
|
127
|
+
// never short-circuits on ag_graph existence. Folded into the graph
|
|
128
|
+
// bootstrap (no second migration framework) per the design.
|
|
129
|
+
const nsLockKey = hashSchemaName("horizon-graph-namespaces", HORIZON_FACTS_LOCK_SEED);
|
|
130
|
+
const nsClient = await this.pool.connect();
|
|
131
|
+
try {
|
|
132
|
+
for (let attempt = 1; attempt <= 10; attempt++) {
|
|
133
|
+
try {
|
|
134
|
+
await nsClient.query("BEGIN");
|
|
135
|
+
await nsClient.query("SELECT pg_advisory_xact_lock($1)", [nsLockKey]);
|
|
136
|
+
await nsClient.query(nsMigration.sql);
|
|
137
|
+
await nsClient.query("COMMIT");
|
|
138
|
+
break;
|
|
139
|
+
}
|
|
140
|
+
catch (err) {
|
|
141
|
+
await nsClient.query("ROLLBACK").catch(() => { });
|
|
142
|
+
const transient = /tuple concurrently updated|already exists|deadlock detected/i.test(String(err?.message ?? err));
|
|
143
|
+
if (!transient || attempt === 10)
|
|
144
|
+
throw err;
|
|
145
|
+
await new Promise((resolve) => setTimeout(resolve, 250 * attempt));
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
finally {
|
|
150
|
+
nsClient.release();
|
|
151
|
+
}
|
|
152
|
+
this.initialized = true;
|
|
153
|
+
}
|
|
154
|
+
async close() {
|
|
155
|
+
await this.pool.end();
|
|
156
|
+
}
|
|
157
|
+
// ─── GraphStore (delegated to the typed Cypher layer) ────────────────────
|
|
158
|
+
searchGraphNodes(q, access) {
|
|
159
|
+
return this.graphQueries.searchGraphNodes(q, access);
|
|
160
|
+
}
|
|
161
|
+
searchGraphEdges(q, access) {
|
|
162
|
+
return this.graphQueries.searchGraphEdges(q, access);
|
|
163
|
+
}
|
|
164
|
+
normalizePredicateKey(predicate) {
|
|
165
|
+
return predicateKey(predicate);
|
|
166
|
+
}
|
|
167
|
+
graphNeighbourhood(nodeKey, depth, access, opts) {
|
|
168
|
+
return this.graphQueries.graphNeighbourhood(nodeKey, depth, access, opts);
|
|
169
|
+
}
|
|
170
|
+
upsertGraphNode(n) {
|
|
171
|
+
return this.graphQueries.upsertGraphNode(n);
|
|
172
|
+
}
|
|
173
|
+
upsertGraphEdge(e) {
|
|
174
|
+
return this.graphQueries.upsertGraphEdge(e);
|
|
175
|
+
}
|
|
176
|
+
mergeGraphNodes(fromKey, intoKey, reason, opts) {
|
|
177
|
+
return this.graphQueries.mergeGraphNodes(fromKey, intoKey, reason, opts);
|
|
178
|
+
}
|
|
179
|
+
deleteGraphNode(nodeKey, opts) {
|
|
180
|
+
return this.graphQueries.deleteGraphNode(nodeKey, opts);
|
|
181
|
+
}
|
|
182
|
+
deleteGraphEdge(fromKey, toKey, predicateKey, opts) {
|
|
183
|
+
return this.graphQueries.deleteGraphEdge(fromKey, toKey, predicateKey, opts);
|
|
184
|
+
}
|
|
185
|
+
removeGraphEvidence(scopeKey, opts) {
|
|
186
|
+
return this.graphQueries.removeGraphEvidence(scopeKey, opts);
|
|
187
|
+
}
|
|
188
|
+
/** Cheap whole-graph counts for graph_stats (07 P5) — single count() Cypher
|
|
189
|
+
* per axis, no client-side fan-out. The SDK tool adds the crawl backlog. */
|
|
190
|
+
graphStats(opts) {
|
|
191
|
+
return this.graphQueries.graphStats(opts);
|
|
192
|
+
}
|
|
193
|
+
// ─── namespace registry (graph-fact-search enhancements) ─────────────────
|
|
194
|
+
get registrySchema() {
|
|
195
|
+
return this.cfg.registrySchema ?? `${this.cfg.graphName}_registry`;
|
|
196
|
+
}
|
|
197
|
+
nsTable() {
|
|
198
|
+
return `${ident(this.registrySchema)}.graph_namespaces`;
|
|
199
|
+
}
|
|
200
|
+
get nsCacheTtlMs() {
|
|
201
|
+
return this.cfg.namespaceCacheTtlMs ?? DEFAULT_NAMESPACE_CACHE_TTL_MS;
|
|
202
|
+
}
|
|
203
|
+
/** Test seam: override the cache clock to exercise TTL expiry deterministically. */
|
|
204
|
+
setNamespaceCacheClock(clock) {
|
|
205
|
+
this.nsClock = clock;
|
|
206
|
+
}
|
|
207
|
+
invalidateNamespaceCache() {
|
|
208
|
+
this.nsCache = null;
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Map any caller namespace to its REGISTRY key. The unscoped partition is
|
|
212
|
+
* keyed by the literal `default` row; `default`/empty/trailing-slash all
|
|
213
|
+
* resolve to it. Concrete corpora keep their trimmed key.
|
|
214
|
+
*/
|
|
215
|
+
namespaceKey(namespace) {
|
|
216
|
+
const clean = (namespace ?? "").trim().replace(/\/+$/g, "");
|
|
217
|
+
if (clean.length === 0 || clean.toLowerCase() === DEFAULT_NS_KEY)
|
|
218
|
+
return DEFAULT_NS_KEY;
|
|
219
|
+
return clean;
|
|
220
|
+
}
|
|
221
|
+
validateFrontmatter(key, fm) {
|
|
222
|
+
const rawName = fm?.name != null ? String(fm.name).trim() : "";
|
|
223
|
+
const name = (rawName.length > 0 ? rawName : key).slice(0, MAX_FRONTMATTER_NAME);
|
|
224
|
+
const rawDescription = fm?.description != null ? String(fm.description).trim() : "";
|
|
225
|
+
if (rawDescription.length === 0) {
|
|
226
|
+
throw new Error(`upsertGraphNamespace(${JSON.stringify(key)}): frontmatter.description is required ` +
|
|
227
|
+
`(it is the discovery hint readers use to choose a corpus).`);
|
|
228
|
+
}
|
|
229
|
+
const description = rawDescription.slice(0, MAX_FRONTMATTER_DESC);
|
|
230
|
+
return { name, description };
|
|
231
|
+
}
|
|
232
|
+
nsRowToInfo(r, includeDetails) {
|
|
233
|
+
const fm = (r.frontmatter ?? {});
|
|
234
|
+
const info = {
|
|
235
|
+
namespace: r.namespace,
|
|
236
|
+
archived: !!r.archived,
|
|
237
|
+
frontmatter: { name: fm.name ?? r.namespace, description: fm.description ?? "" },
|
|
238
|
+
};
|
|
239
|
+
if (includeDetails) {
|
|
240
|
+
if (r.source != null)
|
|
241
|
+
info.source = r.source;
|
|
242
|
+
if (r.node_schema != null)
|
|
243
|
+
info.nodeSchema = r.node_schema;
|
|
244
|
+
if (r.edge_schema != null)
|
|
245
|
+
info.edgeSchema = r.edge_schema;
|
|
246
|
+
if (r.harvest_config != null)
|
|
247
|
+
info.harvestConfig = r.harvest_config;
|
|
248
|
+
info.createdAt = r.created_at instanceof Date ? r.created_at.toISOString() : String(r.created_at);
|
|
249
|
+
info.updatedAt = r.updated_at instanceof Date ? r.updated_at.toISOString() : String(r.updated_at);
|
|
250
|
+
}
|
|
251
|
+
return info;
|
|
252
|
+
}
|
|
253
|
+
async loadNamespaceRows() {
|
|
254
|
+
const ttl = this.nsCacheTtlMs;
|
|
255
|
+
const now = this.nsClock();
|
|
256
|
+
if (ttl > 0 && this.nsCache && now - this.nsCache.at < ttl)
|
|
257
|
+
return this.nsCache.rows;
|
|
258
|
+
const { rows } = await this.pool.query(`SELECT namespace, archived, frontmatter, source, node_schema, edge_schema, harvest_config, created_at, updated_at
|
|
259
|
+
FROM ${this.nsTable()} ORDER BY namespace`);
|
|
260
|
+
this.nsCache = ttl > 0 ? { rows, at: now } : null;
|
|
261
|
+
return rows;
|
|
262
|
+
}
|
|
263
|
+
async listGraphNamespaces(q = {}) {
|
|
264
|
+
const rows = await this.loadNamespaceRows();
|
|
265
|
+
const prefix = q.prefix?.trim() ?? "";
|
|
266
|
+
const includeArchived = q.includeArchived === true;
|
|
267
|
+
const includeDetails = q.includeDetails === true;
|
|
268
|
+
return rows
|
|
269
|
+
.filter((r) => includeArchived || !r.archived)
|
|
270
|
+
.filter((r) => prefix.length === 0 || r.namespace.startsWith(prefix))
|
|
271
|
+
.map((r) => this.nsRowToInfo(r, includeDetails));
|
|
272
|
+
}
|
|
273
|
+
async getGraphNamespace(namespace) {
|
|
274
|
+
const key = this.namespaceKey(namespace);
|
|
275
|
+
const { rows } = await this.pool.query(`SELECT namespace, archived, frontmatter, source, node_schema, edge_schema, harvest_config, created_at, updated_at
|
|
276
|
+
FROM ${this.nsTable()} WHERE namespace = $1`, [key]);
|
|
277
|
+
return rows.length > 0 ? this.nsRowToInfo(rows[0], true) : null;
|
|
278
|
+
}
|
|
279
|
+
async upsertGraphNamespace(input) {
|
|
280
|
+
const key = this.namespaceKey(input.namespace);
|
|
281
|
+
const frontmatter = this.validateFrontmatter(key, input.frontmatter);
|
|
282
|
+
// `default` is always active — it cannot be archived.
|
|
283
|
+
const archived = key === DEFAULT_NS_KEY ? false : input.archived === true;
|
|
284
|
+
const { rows } = await this.pool.query(`INSERT INTO ${this.nsTable()} AS gn
|
|
285
|
+
(namespace, archived, frontmatter, source, node_schema, edge_schema, harvest_config)
|
|
286
|
+
VALUES ($1, $2, $3::jsonb, $4, $5::jsonb, $6::jsonb, $7::jsonb)
|
|
287
|
+
ON CONFLICT (namespace) DO UPDATE SET
|
|
288
|
+
archived = EXCLUDED.archived,
|
|
289
|
+
frontmatter = EXCLUDED.frontmatter,
|
|
290
|
+
source = COALESCE(EXCLUDED.source, gn.source),
|
|
291
|
+
node_schema = COALESCE(EXCLUDED.node_schema, gn.node_schema),
|
|
292
|
+
edge_schema = COALESCE(EXCLUDED.edge_schema, gn.edge_schema),
|
|
293
|
+
harvest_config = COALESCE(EXCLUDED.harvest_config, gn.harvest_config)
|
|
294
|
+
RETURNING namespace, archived, frontmatter, source, node_schema, edge_schema, harvest_config, created_at, updated_at`, [
|
|
295
|
+
key,
|
|
296
|
+
archived,
|
|
297
|
+
JSON.stringify(frontmatter),
|
|
298
|
+
input.source ?? null,
|
|
299
|
+
input.nodeSchema != null ? JSON.stringify(input.nodeSchema) : null,
|
|
300
|
+
input.edgeSchema != null ? JSON.stringify(input.edgeSchema) : null,
|
|
301
|
+
input.harvestConfig != null ? JSON.stringify(input.harvestConfig) : null,
|
|
302
|
+
]);
|
|
303
|
+
this.invalidateNamespaceCache();
|
|
304
|
+
return this.nsRowToInfo(rows[0], true);
|
|
305
|
+
}
|
|
306
|
+
async archiveGraphNamespace(namespace) {
|
|
307
|
+
const key = this.namespaceKey(namespace);
|
|
308
|
+
if (key === DEFAULT_NS_KEY)
|
|
309
|
+
return false; // default is never archived
|
|
310
|
+
const res = await this.pool.query(`UPDATE ${this.nsTable()} SET archived = true WHERE namespace = $1`, [key]);
|
|
311
|
+
this.invalidateNamespaceCache();
|
|
312
|
+
return (res.rowCount ?? 0) > 0;
|
|
313
|
+
}
|
|
314
|
+
async deleteGraphNamespace(namespace) {
|
|
315
|
+
const key = this.namespaceKey(namespace);
|
|
316
|
+
if (key === DEFAULT_NS_KEY) {
|
|
317
|
+
throw new Error("the 'default' namespace cannot be deleted");
|
|
318
|
+
}
|
|
319
|
+
// Graph data FIRST (re-runnable), then the registry row, so a mid-delete
|
|
320
|
+
// crash recovers: a re-run drops any remaining data and the row.
|
|
321
|
+
const { nodesDeleted, edgesDeleted } = await this.graphQueries.deleteNamespaceData(key);
|
|
322
|
+
const res = await this.pool.query(`DELETE FROM ${this.nsTable()} WHERE namespace = $1`, [key]);
|
|
323
|
+
this.invalidateNamespaceCache();
|
|
324
|
+
return { deleted: (res.rowCount ?? 0) > 0, nodesDeleted, edgesDeleted };
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
//# sourceMappingURL=graph-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph-store.js","sourceRoot":"","sources":["../../src/graph-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
export interface MigrationEntry {
|
|
2
|
+
version: string;
|
|
3
|
+
name: string;
|
|
4
|
+
sql: string;
|
|
5
|
+
}
|
|
6
|
+
/** Seed for the advisory lock — distinct from the SDK CMS/facts seeds. */
|
|
7
|
+
export declare const HORIZON_FACTS_LOCK_SEED = 4741702;
|
|
8
|
+
/**
|
|
9
|
+
* Migration versions OWNED BY THE GRAPH PROVIDER (HorizonDBGraphStore), not the
|
|
10
|
+
* facts provider. The facts store filters these out of its run set; the graph
|
|
11
|
+
* store runs them inline as part of its idempotent bootstrap.
|
|
12
|
+
* 0003 — AGE extension + create_graph (the graph bootstrap).
|
|
13
|
+
* 0013 — graph_namespaces registry sidecar (graph-fact-search enhancements).
|
|
14
|
+
*/
|
|
15
|
+
export declare const GRAPH_OWNED_MIGRATIONS: readonly ["0003", "0013"];
|
|
16
|
+
export declare const HORIZON_GLOBAL_DDL_LOCK_LABEL = "__horizon_facts_global_ddl__";
|
|
17
|
+
export declare const DEFAULT_MIGRATION_LOCK_TIMEOUT_MS = 60000;
|
|
18
|
+
/** Whether a migration version is graph-owned (run by the graph store, not facts). */
|
|
19
|
+
export declare function isGraphOwnedMigration(version: string): boolean;
|
|
20
|
+
/** Whether a migration contains database-global DDL that needs global serialization. */
|
|
21
|
+
export declare function migrationRequiresGlobalDdlLock(migration: Pick<MigrationEntry, "sql">): boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Run all pending migrations against the given schema.
|
|
24
|
+
*
|
|
25
|
+
* Uses a PostgreSQL advisory lock keyed on `lockSeed` + schema name to
|
|
26
|
+
* serialize concurrent workers. Each migration runs in its own transaction.
|
|
27
|
+
* Throws (never "repairs") when the migrations table records a version the
|
|
28
|
+
* code does not know — a newer deployment owns this schema.
|
|
29
|
+
*/
|
|
30
|
+
export declare function runMigrations(pool: any, schema: string, migrations: MigrationEntry[], lockSeed: number): Promise<void>;
|
|
31
|
+
export declare function advisoryLockKeyParts(key: number): {
|
|
32
|
+
classid: string;
|
|
33
|
+
objid: string;
|
|
34
|
+
};
|
|
35
|
+
/** Stable 32-bit hash of a schema name combined with a per-system seed. */
|
|
36
|
+
export declare function hashSchemaName(schema: string, seed: number): number;
|
|
37
|
+
export interface MigrationTokens {
|
|
38
|
+
schema: string;
|
|
39
|
+
graphName: string;
|
|
40
|
+
embeddingDim: number;
|
|
41
|
+
/** Graph-owned schema for the namespace registry sidecar (0013).
|
|
42
|
+
* Defaults to `${graphName}_registry`. */
|
|
43
|
+
registrySchema?: string;
|
|
44
|
+
}
|
|
45
|
+
/** Resolve the packaged migrations/ directory (works from src/ and dist/src/). */
|
|
46
|
+
export declare function migrationsDir(): string;
|
|
47
|
+
/** Load the numbered migrations, token-substituted for this deployment. */
|
|
48
|
+
export declare function loadMigrations(tokens: MigrationTokens): MigrationEntry[];
|
|
49
|
+
//# sourceMappingURL=horizon-migrator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"horizon-migrator.d.ts","sourceRoot":"","sources":["../../src/horizon-migrator.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,cAAc;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACf;AAED,0EAA0E;AAC1E,eAAO,MAAM,uBAAuB,UAAa,CAAC;AAElD;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,2BAA4B,CAAC;AAChE,eAAO,MAAM,6BAA6B,iCAAiC,CAAC;AAC5E,eAAO,MAAM,iCAAiC,QAAS,CAAC;AAIxD,sFAAsF;AACtF,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE9D;AAED,wFAAwF;AACxF,wBAAgB,8BAA8B,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,GAAG,OAAO,CAE9F;AAED;;;;;;;GAOG;AACH,wBAAsB,aAAa,CAC/B,IAAI,EAAE,GAAG,EACT,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,cAAc,EAAE,EAC5B,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAmEf;AAmED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAMpF;AAWD,2EAA2E;AAC3E,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAMnE;AAID,MAAM,WAAW,eAAe;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB;8CAC0C;IAC1C,cAAc,CAAC,EAAE,MAAM,CAAC;CAC3B;AAID,kFAAkF;AAClF,wBAAgB,aAAa,IAAI,MAAM,CAWtC;AAED,2EAA2E;AAC3E,wBAAgB,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG,cAAc,EAAE,CAoCxE"}
|