@monoes/monomindcli 2.16.12 → 2.16.13

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 (217) hide show
  1. package/.claude/agents/core/coder.md +1 -1
  2. package/.claude/agents/engineering/engineering-devops-automator.md +1 -1
  3. package/.claude/agents/github/repo-architect.md +1 -1
  4. package/.claude/agents/testing/production-validator.md +1 -1
  5. package/.claude/agents/testing/testing-tool-evaluator.md +1 -1
  6. package/.claude/commands/github/pr-manager.md +1 -1
  7. package/.claude/helpers/pick-rank.cjs +34 -4
  8. package/.claude/skills/monolean-audit/SKILL.md +1 -1
  9. package/dist/src/commands/cleanup-data.d.ts +30 -0
  10. package/dist/src/commands/cleanup-data.d.ts.map +1 -0
  11. package/dist/src/commands/cleanup-data.js +138 -0
  12. package/dist/src/commands/cleanup-data.js.map +1 -0
  13. package/dist/src/commands/cleanup-scratch.d.ts +43 -0
  14. package/dist/src/commands/cleanup-scratch.d.ts.map +1 -0
  15. package/dist/src/commands/cleanup-scratch.js +125 -0
  16. package/dist/src/commands/cleanup-scratch.js.map +1 -0
  17. package/dist/src/commands/cleanup.d.ts +2 -39
  18. package/dist/src/commands/cleanup.d.ts.map +1 -1
  19. package/dist/src/commands/cleanup.js +5 -247
  20. package/dist/src/commands/cleanup.js.map +1 -1
  21. package/dist/src/commands/doctor-gitignore-checks.d.ts +10 -0
  22. package/dist/src/commands/doctor-gitignore-checks.d.ts.map +1 -0
  23. package/dist/src/commands/doctor-gitignore-checks.js +141 -0
  24. package/dist/src/commands/doctor-gitignore-checks.js.map +1 -0
  25. package/dist/src/commands/doctor-helpers-checks.d.ts +10 -0
  26. package/dist/src/commands/doctor-helpers-checks.d.ts.map +1 -0
  27. package/dist/src/commands/doctor-helpers-checks.js +292 -0
  28. package/dist/src/commands/doctor-helpers-checks.js.map +1 -0
  29. package/dist/src/commands/doctor-memory-checks.d.ts +47 -0
  30. package/dist/src/commands/doctor-memory-checks.d.ts.map +1 -0
  31. package/dist/src/commands/doctor-memory-checks.js +298 -0
  32. package/dist/src/commands/doctor-memory-checks.js.map +1 -0
  33. package/dist/src/commands/doctor-monograph-checks.d.ts +9 -0
  34. package/dist/src/commands/doctor-monograph-checks.d.ts.map +1 -0
  35. package/dist/src/commands/doctor-monograph-checks.js +331 -0
  36. package/dist/src/commands/doctor-monograph-checks.js.map +1 -0
  37. package/dist/src/commands/doctor-project-checks.d.ts +7 -66
  38. package/dist/src/commands/doctor-project-checks.d.ts.map +1 -1
  39. package/dist/src/commands/doctor-project-checks.js +10 -1331
  40. package/dist/src/commands/doctor-project-checks.js.map +1 -1
  41. package/dist/src/commands/doctor-routing-checks.d.ts +10 -0
  42. package/dist/src/commands/doctor-routing-checks.d.ts.map +1 -0
  43. package/dist/src/commands/doctor-routing-checks.js +194 -0
  44. package/dist/src/commands/doctor-routing-checks.js.map +1 -0
  45. package/dist/src/commands/doctor-worker-checks.d.ts +17 -0
  46. package/dist/src/commands/doctor-worker-checks.d.ts.map +1 -0
  47. package/dist/src/commands/doctor-worker-checks.js +122 -0
  48. package/dist/src/commands/doctor-worker-checks.js.map +1 -0
  49. package/dist/src/commands/hooks-routing-commands.js +1 -1
  50. package/dist/src/commands/hooks-routing-commands.js.map +1 -1
  51. package/dist/src/commands/init.d.ts.map +1 -1
  52. package/dist/src/commands/init.js +6 -15
  53. package/dist/src/commands/init.js.map +1 -1
  54. package/dist/src/index.js +2 -2
  55. package/dist/src/index.js.map +1 -1
  56. package/dist/src/init/never-commit.d.ts +3 -3
  57. package/dist/src/init/types.d.ts +1 -1
  58. package/dist/src/init/types.js +1 -1
  59. package/dist/src/knowledge/document-store.js +1 -1
  60. package/dist/src/knowledge/document-store.js.map +1 -1
  61. package/dist/src/mcp-tools/hooks-edit-command.d.ts +10 -0
  62. package/dist/src/mcp-tools/hooks-edit-command.d.ts.map +1 -0
  63. package/dist/src/mcp-tools/hooks-edit-command.js +247 -0
  64. package/dist/src/mcp-tools/hooks-edit-command.js.map +1 -0
  65. package/dist/src/mcp-tools/hooks-learning.d.ts +9 -0
  66. package/dist/src/mcp-tools/hooks-learning.d.ts.map +1 -0
  67. package/dist/src/mcp-tools/hooks-learning.js +408 -0
  68. package/dist/src/mcp-tools/hooks-learning.js.map +1 -0
  69. package/dist/src/mcp-tools/hooks-metrics-list.d.ts +8 -0
  70. package/dist/src/mcp-tools/hooks-metrics-list.d.ts.map +1 -0
  71. package/dist/src/mcp-tools/hooks-metrics-list.js +205 -0
  72. package/dist/src/mcp-tools/hooks-metrics-list.js.map +1 -0
  73. package/dist/src/mcp-tools/hooks-route.d.ts +12 -0
  74. package/dist/src/mcp-tools/hooks-route.d.ts.map +1 -0
  75. package/dist/src/mcp-tools/hooks-route.js +251 -0
  76. package/dist/src/mcp-tools/hooks-route.js.map +1 -0
  77. package/dist/src/mcp-tools/hooks-routing.d.ts +6 -27
  78. package/dist/src/mcp-tools/hooks-routing.d.ts.map +1 -1
  79. package/dist/src/mcp-tools/hooks-routing.js +6 -1727
  80. package/dist/src/mcp-tools/hooks-routing.js.map +1 -1
  81. package/dist/src/mcp-tools/hooks-session.d.ts +9 -0
  82. package/dist/src/mcp-tools/hooks-session.d.ts.map +1 -0
  83. package/dist/src/mcp-tools/hooks-session.js +243 -0
  84. package/dist/src/mcp-tools/hooks-session.js.map +1 -0
  85. package/dist/src/mcp-tools/hooks-task.d.ts +17 -0
  86. package/dist/src/mcp-tools/hooks-task.d.ts.map +1 -0
  87. package/dist/src/mcp-tools/hooks-task.js +427 -0
  88. package/dist/src/mcp-tools/hooks-task.js.map +1 -0
  89. package/dist/src/mcp-tools/hooks-tools.d.ts +2 -1
  90. package/dist/src/mcp-tools/hooks-tools.d.ts.map +1 -1
  91. package/dist/src/mcp-tools/hooks-tools.js +2 -1
  92. package/dist/src/mcp-tools/hooks-tools.js.map +1 -1
  93. package/dist/src/mcp-tools/memory-tools.js +1 -1
  94. package/dist/src/mcp-tools/memory-tools.js.map +1 -1
  95. package/dist/src/memory/bm25-index.d.ts +2 -2
  96. package/dist/src/memory/bm25-index.js +2 -2
  97. package/dist/src/memory/embedding-operations.js +2 -2
  98. package/dist/src/memory/embedding-operations.js.map +1 -1
  99. package/dist/src/memory/entity-name-key.d.ts +1 -1
  100. package/dist/src/memory/entity-name-key.js +1 -1
  101. package/dist/src/memory/hnsw-operations.d.ts +1 -1
  102. package/dist/src/memory/hnsw-operations.js +1 -1
  103. package/dist/src/memory/memory-bridge-backend.d.ts +43 -0
  104. package/dist/src/memory/memory-bridge-backend.d.ts.map +1 -0
  105. package/dist/src/memory/memory-bridge-backend.js +363 -0
  106. package/dist/src/memory/memory-bridge-backend.js.map +1 -0
  107. package/dist/src/memory/memory-bridge-core.d.ts +42 -0
  108. package/dist/src/memory/memory-bridge-core.d.ts.map +1 -0
  109. package/dist/src/memory/memory-bridge-core.js +126 -0
  110. package/dist/src/memory/memory-bridge-core.js.map +1 -0
  111. package/dist/src/memory/memory-bridge-entries.d.ts +131 -0
  112. package/dist/src/memory/memory-bridge-entries.d.ts.map +1 -0
  113. package/dist/src/memory/memory-bridge-entries.js +227 -0
  114. package/dist/src/memory/memory-bridge-entries.js.map +1 -0
  115. package/dist/src/memory/memory-bridge-feedback.d.ts +60 -0
  116. package/dist/src/memory/memory-bridge-feedback.d.ts.map +1 -0
  117. package/dist/src/memory/memory-bridge-feedback.js +118 -0
  118. package/dist/src/memory/memory-bridge-feedback.js.map +1 -0
  119. package/dist/src/memory/memory-bridge-paths.d.ts +123 -0
  120. package/dist/src/memory/memory-bridge-paths.d.ts.map +1 -0
  121. package/dist/src/memory/memory-bridge-paths.js +335 -0
  122. package/dist/src/memory/memory-bridge-paths.js.map +1 -0
  123. package/dist/src/memory/memory-bridge-search.d.ts +48 -0
  124. package/dist/src/memory/memory-bridge-search.d.ts.map +1 -0
  125. package/dist/src/memory/memory-bridge-search.js +383 -0
  126. package/dist/src/memory/memory-bridge-search.js.map +1 -0
  127. package/dist/src/memory/memory-bridge-sessions.d.ts +38 -0
  128. package/dist/src/memory/memory-bridge-sessions.d.ts.map +1 -0
  129. package/dist/src/memory/memory-bridge-sessions.js +109 -0
  130. package/dist/src/memory/memory-bridge-sessions.js.map +1 -0
  131. package/dist/src/memory/memory-bridge-store.d.ts +58 -0
  132. package/dist/src/memory/memory-bridge-store.d.ts.map +1 -0
  133. package/dist/src/memory/memory-bridge-store.js +201 -0
  134. package/dist/src/memory/memory-bridge-store.js.map +1 -0
  135. package/dist/src/memory/memory-bridge.d.ts +10 -438
  136. package/dist/src/memory/memory-bridge.d.ts.map +1 -1
  137. package/dist/src/memory/memory-bridge.js +14 -1787
  138. package/dist/src/memory/memory-bridge.js.map +1 -1
  139. package/dist/src/memory/memory-kg-claims.d.ts +52 -0
  140. package/dist/src/memory/memory-kg-claims.d.ts.map +1 -0
  141. package/dist/src/memory/memory-kg-claims.js +99 -0
  142. package/dist/src/memory/memory-kg-claims.js.map +1 -0
  143. package/dist/src/memory/memory-kg-index.d.ts +86 -0
  144. package/dist/src/memory/memory-kg-index.d.ts.map +1 -0
  145. package/dist/src/memory/memory-kg-index.js +256 -0
  146. package/dist/src/memory/memory-kg-index.js.map +1 -0
  147. package/dist/src/memory/memory-kg-ingest.d.ts +44 -0
  148. package/dist/src/memory/memory-kg-ingest.d.ts.map +1 -0
  149. package/dist/src/memory/memory-kg-ingest.js +361 -0
  150. package/dist/src/memory/memory-kg-ingest.js.map +1 -0
  151. package/dist/src/memory/memory-kg-model.d.ts +168 -0
  152. package/dist/src/memory/memory-kg-model.d.ts.map +1 -0
  153. package/dist/src/memory/memory-kg-model.js +158 -0
  154. package/dist/src/memory/memory-kg-model.js.map +1 -0
  155. package/dist/src/memory/memory-kg-names.d.ts +64 -0
  156. package/dist/src/memory/memory-kg-names.d.ts.map +1 -0
  157. package/dist/src/memory/memory-kg-names.js +187 -0
  158. package/dist/src/memory/memory-kg-names.js.map +1 -0
  159. package/dist/src/memory/memory-kg-promote.d.ts +79 -0
  160. package/dist/src/memory/memory-kg-promote.d.ts.map +1 -0
  161. package/dist/src/memory/memory-kg-promote.js +248 -0
  162. package/dist/src/memory/memory-kg-promote.js.map +1 -0
  163. package/dist/src/memory/memory-kg-rebuild.d.ts +77 -0
  164. package/dist/src/memory/memory-kg-rebuild.d.ts.map +1 -0
  165. package/dist/src/memory/memory-kg-rebuild.js +299 -0
  166. package/dist/src/memory/memory-kg-rebuild.js.map +1 -0
  167. package/dist/src/memory/memory-kg-rollback.d.ts +47 -0
  168. package/dist/src/memory/memory-kg-rollback.d.ts.map +1 -0
  169. package/dist/src/memory/memory-kg-rollback.js +193 -0
  170. package/dist/src/memory/memory-kg-rollback.js.map +1 -0
  171. package/dist/src/memory/memory-kg-rules.d.ts +64 -0
  172. package/dist/src/memory/memory-kg-rules.d.ts.map +1 -0
  173. package/dist/src/memory/memory-kg-rules.js +251 -0
  174. package/dist/src/memory/memory-kg-rules.js.map +1 -0
  175. package/dist/src/memory/memory-kg-scan.d.ts +118 -0
  176. package/dist/src/memory/memory-kg-scan.d.ts.map +1 -0
  177. package/dist/src/memory/memory-kg-scan.js +209 -0
  178. package/dist/src/memory/memory-kg-scan.js.map +1 -0
  179. package/dist/src/memory/memory-kg-search.d.ts +80 -0
  180. package/dist/src/memory/memory-kg-search.d.ts.map +1 -0
  181. package/dist/src/memory/memory-kg-search.js +239 -0
  182. package/dist/src/memory/memory-kg-search.js.map +1 -0
  183. package/dist/src/memory/memory-kg.d.ts +19 -547
  184. package/dist/src/memory/memory-kg.d.ts.map +1 -1
  185. package/dist/src/memory/memory-kg.js +10 -2389
  186. package/dist/src/memory/memory-kg.js.map +1 -1
  187. package/dist/src/ui/org-hil.mjs +1 -1
  188. package/dist/src/ui/routes-org-agents.mjs +318 -0
  189. package/dist/src/ui/routes-org-approvals.mjs +133 -0
  190. package/dist/src/ui/routes-org-config.mjs +459 -0
  191. package/dist/src/ui/routes-org-control.mjs +300 -0
  192. package/dist/src/ui/routes-org-files.mjs +172 -0
  193. package/dist/src/ui/routes-org-helpers.mjs +84 -0
  194. package/dist/src/ui/routes-org-knowledge.mjs +262 -0
  195. package/dist/src/ui/routes-org-lifecycle.mjs +224 -0
  196. package/dist/src/ui/routes-org-live.mjs +278 -0
  197. package/dist/src/ui/routes-org-mastermind.mjs +346 -0
  198. package/dist/src/ui/routes-org-planning.mjs +398 -0
  199. package/dist/src/ui/routes-org-runs.mjs +430 -0
  200. package/dist/src/ui/routes-org-status.mjs +342 -0
  201. package/dist/src/ui/routes-org-workflows.mjs +212 -0
  202. package/dist/src/ui/routes-org.mjs +26 -3847
  203. package/dist/src/ui/server.mjs +1 -1
  204. package/dist/src/utils/native-error.d.ts +1 -1
  205. package/dist/src/utils/native-error.js +1 -1
  206. package/dist/src/utils/paths.d.ts +2 -1
  207. package/dist/src/utils/paths.d.ts.map +1 -1
  208. package/dist/src/utils/paths.js +2 -1
  209. package/dist/src/utils/paths.js.map +1 -1
  210. package/dist/tsconfig.tsbuildinfo +1 -1
  211. package/org-skills/adversarial-reviewer/SKILL.md +1 -1
  212. package/org-skills/board-deck-builder/SKILL.md +1 -1
  213. package/org-skills/code-reviewer/SKILL.md +1 -1
  214. package/org-skills/debugging-wizard/SKILL.md +1 -1
  215. package/org-skills/scientific-thinking-literature-review/SKILL.md +1 -1
  216. package/org-skills/scientific-thinking-scholar-evaluation/SKILL.md +1 -1
  217. package/package.json +8 -8
@@ -0,0 +1,256 @@
1
+ /**
2
+ * Memory Knowledge Graph — the K7 derived index: status, adjacency entries,
3
+ * origin-support entries, the dual-write hooks that keep them in sync, and
4
+ * the indexed reads used once a scope is `ready`. Split out of
5
+ * memory-kg.ts, which re-exports the public symbols.
6
+ */
7
+ import { bridgeGetEntry, bridgeStoreEntry } from './memory-bridge.js';
8
+ import { kgNamespaces } from './memory-kg-model.js';
9
+ import { originsOf } from './memory-kg-scan.js';
10
+ export const KG_INDEX_SCHEMA_VERSION = 1;
11
+ const INDEX_STATUS_KEY = 'status';
12
+ /** Edge keys recorded per adjacency entry before the index refuses to grow it
13
+ * further and fails the SCOPE's index rather than risk an oversized or
14
+ * silently truncated row. A hub node past this reads via the exhaustive
15
+ * scan, exactly as before the index existed — this only gates the fast
16
+ * path, never correctness. */
17
+ const MAX_ADJ_EDGES_PER_NODE = 2000;
18
+ /** Refs recorded per origin-support entry before the same refusal applies. */
19
+ const MAX_ORIGIN_INDEX_REFS = 5000;
20
+ export async function readIndexStatus(ns, dbPath) {
21
+ const res = await bridgeGetEntry({ key: INDEX_STATUS_KEY, namespace: ns.indexStatus, dbPath });
22
+ if (!res?.found || !res.entry)
23
+ return { state: 'absent', schemaVersion: KG_INDEX_SCHEMA_VERSION };
24
+ const md = (res.entry.metadata ?? {});
25
+ // An older/foreign schema is not a resumable build — start over rather than
26
+ // trust rows shaped by a version this code no longer understands.
27
+ if (md.schemaVersion !== KG_INDEX_SCHEMA_VERSION) {
28
+ return { state: 'absent', schemaVersion: KG_INDEX_SCHEMA_VERSION };
29
+ }
30
+ return { ...md, schemaVersion: KG_INDEX_SCHEMA_VERSION };
31
+ }
32
+ export async function writeIndexStatus(ns, status, dbPath) {
33
+ const res = await bridgeStoreEntry({
34
+ key: INDEX_STATUS_KEY,
35
+ value: `kg index: ${status.state}`,
36
+ namespace: ns.indexStatus,
37
+ dbPath,
38
+ upsert: true,
39
+ generateEmbeddingFlag: false,
40
+ metadata: { ...status, updatedAt: Date.now() },
41
+ });
42
+ return Boolean(res?.success);
43
+ }
44
+ /** Downgrade a scope's index to `failed` after a dual-write hiccup, so reads
45
+ * fall back to the exhaustive scan instead of silently drifting. Never
46
+ * throws — this runs from inside a best-effort maintenance path. */
47
+ async function markIndexFailed(ns, dbPath, error) {
48
+ try {
49
+ const current = await readIndexStatus(ns, dbPath);
50
+ if (current.state === 'absent' || current.state === 'failed')
51
+ return; // nothing to protect
52
+ // Not resumable: the cursor here is stale (either a completed build's end
53
+ // position, or mid-build), and a dual-write hiccup means something is
54
+ // missing from an UNKNOWN part of the index — only a fresh rescan finds it.
55
+ await writeIndexStatus(ns, { ...current, state: 'failed', resumable: false, error }, dbPath);
56
+ }
57
+ catch {
58
+ /* best-effort: if even the downgrade write fails, the next rebuild's
59
+ validation step still catches an inconsistent index before it is
60
+ ever trusted for a read. */
61
+ }
62
+ }
63
+ /** This scope's derived-index build/readiness state. `absent` means no one
64
+ * has ever called `kgRebuildIndex` for it — every read behaves exactly as
65
+ * it did before this index existed. */
66
+ export async function kgIndexStatus(options) {
67
+ return readIndexStatus(kgNamespaces(options?.scope), options?.dbPath);
68
+ }
69
+ export async function readAdj(ns, entityId, dbPath) {
70
+ const res = await bridgeGetEntry({ key: entityId, namespace: ns.adj, dbPath });
71
+ if (!res)
72
+ return null; // backend unavailable, distinct from "no entry yet"
73
+ if (!res.found || !res.entry)
74
+ return { edgeKeys: [] };
75
+ const md = (res.entry.metadata ?? {});
76
+ return { edgeKeys: Array.isArray(md.edgeKeys) ? md.edgeKeys : [] };
77
+ }
78
+ export async function addToAdj(ns, entityId, edgeKey, dbPath) {
79
+ const current = await readAdj(ns, entityId, dbPath);
80
+ if (current === null)
81
+ return false;
82
+ if (current.edgeKeys.includes(edgeKey))
83
+ return true; // already present, idempotent
84
+ if (current.edgeKeys.length >= MAX_ADJ_EDGES_PER_NODE)
85
+ return false;
86
+ const res = await bridgeStoreEntry({
87
+ key: entityId,
88
+ value: `kg adjacency: ${entityId}`,
89
+ namespace: ns.adj,
90
+ dbPath,
91
+ upsert: true,
92
+ generateEmbeddingFlag: false,
93
+ metadata: { edgeKeys: [...current.edgeKeys, edgeKey] },
94
+ });
95
+ return Boolean(res?.success);
96
+ }
97
+ async function removeFromAdj(ns, entityId, edgeKey, dbPath) {
98
+ const current = await readAdj(ns, entityId, dbPath);
99
+ if (current === null)
100
+ return false;
101
+ if (!current.edgeKeys.includes(edgeKey))
102
+ return true; // already absent
103
+ const res = await bridgeStoreEntry({
104
+ key: entityId,
105
+ value: `kg adjacency: ${entityId}`,
106
+ namespace: ns.adj,
107
+ dbPath,
108
+ upsert: true,
109
+ generateEmbeddingFlag: false,
110
+ metadata: { edgeKeys: current.edgeKeys.filter((k) => k !== edgeKey) },
111
+ });
112
+ return Boolean(res?.success);
113
+ }
114
+ async function readOriginIndex(ns, originRef, dbPath) {
115
+ const res = await bridgeGetEntry({ key: originRef, namespace: ns.originIdx, dbPath });
116
+ if (!res)
117
+ return null;
118
+ if (!res.found || !res.entry)
119
+ return { refs: [] };
120
+ const md = (res.entry.metadata ?? {});
121
+ return { refs: Array.isArray(md.refs) ? md.refs : [] };
122
+ }
123
+ export async function addToOriginIndex(ns, originRef, ref, dbPath) {
124
+ const current = await readOriginIndex(ns, originRef, dbPath);
125
+ if (current === null)
126
+ return false;
127
+ if (current.refs.some((r) => r.ns === ref.ns && r.key === ref.key))
128
+ return true;
129
+ if (current.refs.length >= MAX_ORIGIN_INDEX_REFS)
130
+ return false;
131
+ const res = await bridgeStoreEntry({
132
+ key: originRef,
133
+ value: `kg origin index: ${originRef}`,
134
+ namespace: ns.originIdx,
135
+ dbPath,
136
+ upsert: true,
137
+ generateEmbeddingFlag: false,
138
+ metadata: { refs: [...current.refs, ref] },
139
+ });
140
+ return Boolean(res?.success);
141
+ }
142
+ async function removeFromOriginIndex(ns, originRef, ref, dbPath) {
143
+ const current = await readOriginIndex(ns, originRef, dbPath);
144
+ if (current === null)
145
+ return false;
146
+ const next = current.refs.filter((r) => !(r.ns === ref.ns && r.key === ref.key));
147
+ if (next.length === current.refs.length)
148
+ return true; // already absent
149
+ const res = await bridgeStoreEntry({
150
+ key: originRef,
151
+ value: `kg origin index: ${originRef}`,
152
+ namespace: ns.originIdx,
153
+ dbPath,
154
+ upsert: true,
155
+ generateEmbeddingFlag: false,
156
+ metadata: { refs: next },
157
+ });
158
+ return Boolean(res?.success);
159
+ }
160
+ // ── Dual-write hooks ──────────────────────────────────────────────────
161
+ //
162
+ // Best-effort and self-gating: a no-op (one status read) while the scope's
163
+ // index is `absent`, so ordinary ingest/rollback pay nothing extra until
164
+ // someone opts in by calling `kgRebuildIndex`. A failure here fails the
165
+ // INDEX (downgrades the scope to `failed`), never the canonical write or
166
+ // delete it accompanies — the index is a cache, not a second source of truth.
167
+ /** After a node/edge/rule write lands, record that `originRef` supports it. */
168
+ export async function onEntrySupported(ns, entryNs, entryKey, originRef, dbPath) {
169
+ const status = await readIndexStatus(ns, dbPath);
170
+ if (status.state === 'absent' || status.state === 'failed')
171
+ return;
172
+ const ok = await addToOriginIndex(ns, originRef, { ns: entryNs, key: entryKey }, dbPath);
173
+ if (!ok)
174
+ await markIndexFailed(ns, dbPath, `origin index write failed for ${originRef}`);
175
+ }
176
+ /** After an edge write lands, record it in both endpoints' adjacency. */
177
+ export async function onEdgeWritten(ns, edgeKey, src, dst, dbPath) {
178
+ const status = await readIndexStatus(ns, dbPath);
179
+ if (status.state === 'absent' || status.state === 'failed')
180
+ return;
181
+ const okSrc = await addToAdj(ns, src, edgeKey, dbPath);
182
+ const okDst = src === dst ? true : await addToAdj(ns, dst, edgeKey, dbPath);
183
+ if (!okSrc || !okDst)
184
+ await markIndexFailed(ns, dbPath, `adjacency write failed for ${edgeKey}`);
185
+ }
186
+ /** After `kgRollback` deletes an entry outright (no origin left to support
187
+ * it), remove it from every index it could appear in. */
188
+ export async function onEntryDeleted(ns, entryKey, dbPath, endpoints) {
189
+ const status = await readIndexStatus(ns, dbPath);
190
+ if (status.state === 'absent' || status.state === 'failed')
191
+ return;
192
+ let ok = true;
193
+ if (endpoints) {
194
+ ok = (await removeFromAdj(ns, endpoints.src, entryKey, dbPath)) && ok;
195
+ if (endpoints.dst !== endpoints.src)
196
+ ok = (await removeFromAdj(ns, endpoints.dst, entryKey, dbPath)) && ok;
197
+ }
198
+ if (!ok)
199
+ await markIndexFailed(ns, dbPath, `adjacency removal failed for ${entryKey}`);
200
+ }
201
+ /** After `kgRollback` withdraws one origin's support from an entry that
202
+ * survives (another origin still supports it), drop just that origin's ref. */
203
+ export async function onOriginWithdrawn(ns, entryNs, entryKey, originRef, dbPath) {
204
+ const status = await readIndexStatus(ns, dbPath);
205
+ if (status.state === 'absent' || status.state === 'failed')
206
+ return;
207
+ const ok = await removeFromOriginIndex(ns, originRef, { ns: entryNs, key: entryKey }, dbPath);
208
+ if (!ok)
209
+ await markIndexFailed(ns, dbPath, `origin index removal failed for ${originRef}`);
210
+ }
211
+ // ── Indexed reads (used by kgSearch/kgRollback only when state === 'ready') ─
212
+ /** The indexed equivalent of `kgReferenceEdges({ endpointId })`: edges
213
+ * touching one entity, read via its adjacency entry instead of a namespace
214
+ * scan. Returns `null` when any edge key it names cannot be resolved — a
215
+ * torn index must never be presented as a complete answer. */
216
+ export async function kgIndexedEdgesByEndpoint(ns, entityId, dbPath) {
217
+ const adj = await readAdj(ns, entityId, dbPath);
218
+ if (adj === null)
219
+ return null;
220
+ const edges = [];
221
+ for (const key of adj.edgeKeys) {
222
+ const res = await bridgeGetEntry({ key, namespace: ns.edges, dbPath });
223
+ if (!res?.found || !res.entry)
224
+ return null; // stale ref — do not half-answer
225
+ const md = (res.entry.metadata ?? {});
226
+ edges.push({
227
+ key,
228
+ src: String(md.src ?? ''),
229
+ dst: String(md.dst ?? ''),
230
+ relation: String(md.relation ?? 'related_to'),
231
+ originRefs: originsOf(res.entry),
232
+ });
233
+ }
234
+ return edges;
235
+ }
236
+ /** The indexed equivalent of `collectByOrigin`: every {namespace,key} entry
237
+ * one origin supports, read via its origin-index entry instead of scanning
238
+ * every namespace. Returns `null` on any unresolvable ref, same reasoning
239
+ * as `kgIndexedEdgesByEndpoint`. */
240
+ /** Returns each entry paired with the namespace it was read from (from the
241
+ * index's own ref, not trusted from the entry itself) so a caller can sort
242
+ * results back into per-namespace buckets without guessing. */
243
+ export async function kgIndexedByOrigin(ns, originRef, dbPath) {
244
+ const idx = await readOriginIndex(ns, originRef, dbPath);
245
+ if (idx === null)
246
+ return null;
247
+ const entries = [];
248
+ for (const ref of idx.refs) {
249
+ const res = await bridgeGetEntry({ key: ref.key, namespace: ref.ns, dbPath });
250
+ if (!res?.found || !res.entry)
251
+ return null;
252
+ entries.push({ ns: ref.ns, entry: res.entry });
253
+ }
254
+ return entries;
255
+ }
256
+ //# sourceMappingURL=memory-kg-index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-kg-index.js","sourceRoot":"","sources":["../../../src/memory/memory-kg-index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Memory Knowledge Graph — ingest: kgIngest (entity resolution, claim
3
+ * merge under compare-and-swap, placeholder endpoints) and its per-call
4
+ * report. Split out of memory-kg.ts, which re-exports kgIngest.
5
+ */
6
+ import type { KgExtractionMethod } from './memory-kg-claims.js';
7
+ import type { KgEdgeInput, KgIngestResult, KgNodeInput, KgScope } from './memory-kg-model.js';
8
+ /** Merge extracted nodes/edges into the KG.
9
+ *
10
+ * Identity is the (type, name) tuple resolved through the name index, so an
11
+ * entity is idempotent under re-extraction but two different things sharing a
12
+ * name stay two things. Each write adds this origin's CONTRIBUTION to the
13
+ * element's claim ledger, from which the description and `origin_refs` are
14
+ * derived — which is what lets a later ingest correct an earlier one and lets
15
+ * rollback put the earlier one back.
16
+ *
17
+ * The COMPLETE payload is validated before anything is written, and every edge
18
+ * endpoint is made to exist (as a placeholder entity when the caller named one
19
+ * that does not) before the edge lands. An edge whose endpoint could not be
20
+ * created is rejected rather than written: retrieval is seeded from nodes, so
21
+ * an edge with a missing endpoint is a fact that cannot be found through
22
+ * either of the things it is about.
23
+ *
24
+ * NOT ATOMIC — the memory bridge has no transaction primitive, so a failure
25
+ * part-way through leaves earlier writes persisted. The counters therefore
26
+ * report only what actually landed, `failures` lists what did not, and
27
+ * `success` is false whenever anything was refused. A partial ingest is safe
28
+ * to retry: every write is a keyed upsert. */
29
+ export declare function kgIngest(options: {
30
+ nodes: KgNodeInput[];
31
+ edges?: KgEdgeInput[];
32
+ /** Provenance: run id, session id, or doc hash this extraction came from.
33
+ * Stored qualified by `scope` — see `kgQualifyOrigin`. */
34
+ originRef: string;
35
+ /** Owner of these facts. Omit for project-shared knowledge. */
36
+ scope?: KgScope;
37
+ /** How this payload was produced. Defaults to `asserted`; `heuristicExtract`
38
+ * callers must pass `heuristic` so a co-occurrence guess is not stored as a
39
+ * stated fact. Recorded per origin, so the same element can hold a heuristic
40
+ * claim from one run and an asserted one from another. */
41
+ method?: KgExtractionMethod;
42
+ dbPath?: string;
43
+ }): Promise<KgIngestResult>;
44
+ //# sourceMappingURL=memory-kg-ingest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-kg-ingest.d.ts","sourceRoot":"","sources":["../../../src/memory/memory-kg-ingest.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAiB,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAG/E,OAAO,KAAK,EACV,WAAW,EACX,cAAc,EAEd,WAAW,EACX,OAAO,EACR,MAAM,sBAAsB,CAAC;AAoB9B;;;;;;;;;;;;;;;;;;;;+CAoB+C;AAC/C,wBAAsB,QAAQ,CAAC,OAAO,EAAE;IACtC,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC;IACtB;+DAC2D;IAC3D,SAAS,EAAE,MAAM,CAAC;IAClB,+DAA+D;IAC/D,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;+DAG2D;IAC3D,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC,cAAc,CAAC,CAsN1B"}