@x12i/memorix-service 3.12.4 → 3.14.0

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 (171) hide show
  1. package/README.md +1 -1
  2. package/dist/analytics/host.d.ts +2 -2
  3. package/dist/analytics/host.d.ts.map +1 -1
  4. package/dist/analytics/host.js.map +1 -1
  5. package/dist/analytics/read-row.d.ts +33 -0
  6. package/dist/analytics/read-row.d.ts.map +1 -0
  7. package/dist/analytics/read-row.js +76 -0
  8. package/dist/analytics/read-row.js.map +1 -0
  9. package/dist/analytics/tracker.d.ts +14 -0
  10. package/dist/analytics/tracker.d.ts.map +1 -1
  11. package/dist/analytics/tracker.js +55 -17
  12. package/dist/analytics/tracker.js.map +1 -1
  13. package/dist/anomaly/catalog.d.ts +4 -0
  14. package/dist/anomaly/catalog.d.ts.map +1 -0
  15. package/dist/anomaly/catalog.js +315 -0
  16. package/dist/anomaly/catalog.js.map +1 -0
  17. package/dist/anomaly/descriptors.d.ts +11 -0
  18. package/dist/anomaly/descriptors.d.ts.map +1 -0
  19. package/dist/anomaly/descriptors.js +113 -0
  20. package/dist/anomaly/descriptors.js.map +1 -0
  21. package/dist/anomaly/index.d.ts +6 -0
  22. package/dist/anomaly/index.d.ts.map +1 -0
  23. package/dist/anomaly/index.js +5 -0
  24. package/dist/anomaly/index.js.map +1 -0
  25. package/dist/anomaly/records.d.ts +28 -0
  26. package/dist/anomaly/records.d.ts.map +1 -0
  27. package/dist/anomaly/records.js +384 -0
  28. package/dist/anomaly/records.js.map +1 -0
  29. package/dist/anomaly/types.d.ts +116 -0
  30. package/dist/anomaly/types.d.ts.map +1 -0
  31. package/dist/anomaly/types.js +24 -0
  32. package/dist/anomaly/types.js.map +1 -0
  33. package/dist/anomaly/values.d.ts +31 -0
  34. package/dist/anomaly/values.d.ts.map +1 -0
  35. package/dist/anomaly/values.js +171 -0
  36. package/dist/anomaly/values.js.map +1 -0
  37. package/dist/app.d.ts.map +1 -1
  38. package/dist/app.js +12 -0
  39. package/dist/app.js.map +1 -1
  40. package/dist/catalog-bridge.d.ts +21 -3
  41. package/dist/catalog-bridge.d.ts.map +1 -1
  42. package/dist/catalog-bridge.js +148 -34
  43. package/dist/catalog-bridge.js.map +1 -1
  44. package/dist/errors.d.ts +5 -0
  45. package/dist/errors.d.ts.map +1 -1
  46. package/dist/errors.js +18 -0
  47. package/dist/errors.js.map +1 -1
  48. package/dist/knowledge-upstream.d.ts +32 -0
  49. package/dist/knowledge-upstream.d.ts.map +1 -1
  50. package/dist/knowledge-upstream.js +86 -2
  51. package/dist/knowledge-upstream.js.map +1 -1
  52. package/dist/mcp/nexum-tools.d.ts +1 -1
  53. package/dist/mcp/nexum-tools.d.ts.map +1 -1
  54. package/dist/mcp/nexum-tools.js +39 -22
  55. package/dist/mcp/nexum-tools.js.map +1 -1
  56. package/dist/metadata-view.d.ts +30 -0
  57. package/dist/metadata-view.d.ts.map +1 -0
  58. package/dist/metadata-view.js +67 -0
  59. package/dist/metadata-view.js.map +1 -0
  60. package/dist/nexum-analysis/enqueue.d.ts +1 -1
  61. package/dist/nexum-analysis/enqueue.d.ts.map +1 -1
  62. package/dist/nexum-analysis/enqueue.js +4 -2
  63. package/dist/nexum-analysis/enqueue.js.map +1 -1
  64. package/dist/nexum-analysis/knowledge-read.d.ts +45 -0
  65. package/dist/nexum-analysis/knowledge-read.d.ts.map +1 -0
  66. package/dist/nexum-analysis/knowledge-read.js +26 -0
  67. package/dist/nexum-analysis/knowledge-read.js.map +1 -0
  68. package/dist/openapi/openapi.json +18458 -17718
  69. package/dist/patches/access.d.ts +15 -0
  70. package/dist/patches/access.d.ts.map +1 -0
  71. package/dist/patches/access.js +27 -0
  72. package/dist/patches/access.js.map +1 -0
  73. package/dist/patches/engine.d.ts +67 -0
  74. package/dist/patches/engine.d.ts.map +1 -0
  75. package/dist/patches/engine.js +966 -0
  76. package/dist/patches/engine.js.map +1 -0
  77. package/dist/patches/guards.d.ts +23 -0
  78. package/dist/patches/guards.d.ts.map +1 -0
  79. package/dist/patches/guards.js +77 -0
  80. package/dist/patches/guards.js.map +1 -0
  81. package/dist/patches/legacy-rows.d.ts +56 -0
  82. package/dist/patches/legacy-rows.d.ts.map +1 -0
  83. package/dist/patches/legacy-rows.js +162 -0
  84. package/dist/patches/legacy-rows.js.map +1 -0
  85. package/dist/patches/ops.d.ts +24 -0
  86. package/dist/patches/ops.d.ts.map +1 -0
  87. package/dist/patches/ops.js +204 -0
  88. package/dist/patches/ops.js.map +1 -0
  89. package/dist/patches/parse.d.ts +5 -0
  90. package/dist/patches/parse.d.ts.map +1 -0
  91. package/dist/patches/parse.js +323 -0
  92. package/dist/patches/parse.js.map +1 -0
  93. package/dist/patches/paths.d.ts +38 -0
  94. package/dist/patches/paths.d.ts.map +1 -0
  95. package/dist/patches/paths.js +204 -0
  96. package/dist/patches/paths.js.map +1 -0
  97. package/dist/patches/service.d.ts +16 -0
  98. package/dist/patches/service.d.ts.map +1 -0
  99. package/dist/patches/service.js +128 -0
  100. package/dist/patches/service.js.map +1 -0
  101. package/dist/patches/store.d.ts +87 -0
  102. package/dist/patches/store.d.ts.map +1 -0
  103. package/dist/patches/store.js +27 -0
  104. package/dist/patches/store.js.map +1 -0
  105. package/dist/patches/types.d.ts +112 -0
  106. package/dist/patches/types.d.ts.map +1 -0
  107. package/dist/patches/types.js +5 -0
  108. package/dist/patches/types.js.map +1 -0
  109. package/dist/platform.d.ts +15 -0
  110. package/dist/platform.d.ts.map +1 -1
  111. package/dist/platform.js +141 -8
  112. package/dist/platform.js.map +1 -1
  113. package/dist/routes/anomaly.d.ts +5 -0
  114. package/dist/routes/anomaly.d.ts.map +1 -0
  115. package/dist/routes/anomaly.js +308 -0
  116. package/dist/routes/anomaly.js.map +1 -0
  117. package/dist/routes/data.d.ts.map +1 -1
  118. package/dist/routes/data.js +297 -198
  119. package/dist/routes/data.js.map +1 -1
  120. package/dist/routes/knowledge.d.ts.map +1 -1
  121. package/dist/routes/knowledge.js +6 -22
  122. package/dist/routes/knowledge.js.map +1 -1
  123. package/dist/routes/metadata.d.ts.map +1 -1
  124. package/dist/routes/metadata.js +28 -1
  125. package/dist/routes/metadata.js.map +1 -1
  126. package/dist/routes/patches.d.ts +7 -0
  127. package/dist/routes/patches.d.ts.map +1 -0
  128. package/dist/routes/patches.js +111 -0
  129. package/dist/routes/patches.js.map +1 -0
  130. package/dist/routes/subject-roots-backfill.d.ts +4 -0
  131. package/dist/routes/subject-roots-backfill.d.ts.map +1 -0
  132. package/dist/routes/subject-roots-backfill.js +15 -0
  133. package/dist/routes/subject-roots-backfill.js.map +1 -0
  134. package/dist/single-read-discriminator.d.ts +17 -0
  135. package/dist/single-read-discriminator.d.ts.map +1 -0
  136. package/dist/single-read-discriminator.js +67 -0
  137. package/dist/single-read-discriminator.js.map +1 -0
  138. package/dist/subject-roots-backfill.d.ts +24 -0
  139. package/dist/subject-roots-backfill.d.ts.map +1 -0
  140. package/dist/subject-roots-backfill.js +133 -0
  141. package/dist/subject-roots-backfill.js.map +1 -0
  142. package/dist/write-precondition.d.ts +5 -1
  143. package/dist/write-precondition.d.ts.map +1 -1
  144. package/dist/write-precondition.js +11 -3
  145. package/dist/write-precondition.js.map +1 -1
  146. package/dist/writes/content-write.d.ts +207 -0
  147. package/dist/writes/content-write.d.ts.map +1 -0
  148. package/dist/writes/content-write.js +629 -0
  149. package/dist/writes/content-write.js.map +1 -0
  150. package/dist/writes/effects.d.ts +13 -0
  151. package/dist/writes/effects.d.ts.map +1 -0
  152. package/dist/writes/effects.js +28 -0
  153. package/dist/writes/effects.js.map +1 -0
  154. package/dist/writes/error-shape.d.ts +11 -0
  155. package/dist/writes/error-shape.d.ts.map +1 -0
  156. package/dist/writes/error-shape.js +107 -0
  157. package/dist/writes/error-shape.js.map +1 -0
  158. package/dist/writes/queued-write.d.ts +38 -0
  159. package/dist/writes/queued-write.d.ts.map +1 -0
  160. package/dist/writes/queued-write.js +288 -0
  161. package/dist/writes/queued-write.js.map +1 -0
  162. package/dist/writes/receipt-store.d.ts +131 -0
  163. package/dist/writes/receipt-store.d.ts.map +1 -0
  164. package/dist/writes/receipt-store.js +360 -0
  165. package/dist/writes/receipt-store.js.map +1 -0
  166. package/dist/writes/worker.d.ts +30 -0
  167. package/dist/writes/worker.d.ts.map +1 -0
  168. package/dist/writes/worker.js +100 -0
  169. package/dist/writes/worker.js.map +1 -0
  170. package/openapi/openapi.json +18458 -17718
  171. package/package.json +4 -4
package/dist/errors.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { classifyFailure } from "./writes/error-shape.js";
1
2
  /** Actionable next step for undeclared OT/CT or a rejected metadata ensure handshake. */
2
3
  export const METADATA_ENSURE_NEXT = "On startup, POST /api/metadata/ensure with your metadata pack and confirm:true. Each content type reports id and profile.allowSnapshotBuckets. pack.agentId must be one of x-memorix-agent-ids. Ensure replaces that agent's catalog: if another writer shares the agent, GET /api/metadata/raw, merge, then ensure. Then retry this write. A 404 on /api/metadata/ensure means this host is older than @x12i/memorix-service@3.7.6.";
3
4
  export const METADATA_ENSURE_BODY_NEXT = "Call POST /api/metadata/ensure with body { pack: <MetadataPack>, confirm: true }. pack.agentId must be one of x-memorix-agent-ids. Do not invent objectType/contentType on POST /api/data/content.";
@@ -37,6 +38,7 @@ const DATA_PLANE_STATUS = {
37
38
  PUBLICATION_PINNED: 409,
38
39
  PUBLICATION_EXISTS: 409,
39
40
  WRITE_DIRECTORY_INCONSISTENT: 409,
41
+ WRITE_ID_REUSED: 409,
40
42
  WRITE_IDENTITY_ADOPTION: 400,
41
43
  WRITE_IDENTITY_MISMATCH: 400,
42
44
  WRITE_INTERFACE_BINDING: 400,
@@ -48,6 +50,7 @@ const DATA_PLANE_STATUS = {
48
50
  MARKDOWN_INVALID: 400,
49
51
  MARKDOWN_TOO_LARGE: 400,
50
52
  AUDIT_INVALID: 400,
53
+ HISTORY_INVALID: 400,
51
54
  METADATA_DESCRIPTOR_MISSING: 400,
52
55
  BACKFILL_UNAVAILABLE: 503,
53
56
  };
@@ -102,6 +105,7 @@ export function mapErrorToHttp(err, correlationId) {
102
105
  /pack(\.agentId)? required|must be one of x-memorix-agent-ids/i.test(e.message))
103
106
  ? mergeDetails(e.details, { next: METADATA_ENSURE_BODY_NEXT })
104
107
  : e.details;
108
+ const failure = classifyFailure(err, e.statusCode);
105
109
  return {
106
110
  status: e.statusCode,
107
111
  body: {
@@ -109,12 +113,16 @@ export function mapErrorToHttp(err, correlationId) {
109
113
  code: e.code,
110
114
  message: e.message,
111
115
  correlationId,
116
+ field: failure.field,
117
+ retryable: failure.retryable,
118
+ ...(failure.retryAfterMs !== undefined ? { retryAfterMs: failure.retryAfterMs } : {}),
112
119
  details,
113
120
  },
114
121
  },
115
122
  };
116
123
  }
117
124
  if (err instanceof Error && err.name === "ScopeValidationError") {
125
+ const failure = classifyFailure(err, 400);
118
126
  return {
119
127
  status: 400,
120
128
  body: {
@@ -122,6 +130,8 @@ export function mapErrorToHttp(err, correlationId) {
122
130
  code: "SCOPE_INVALID",
123
131
  message: err.message,
124
132
  correlationId,
133
+ field: failure.field,
134
+ retryable: failure.retryable,
125
135
  },
126
136
  },
127
137
  };
@@ -133,6 +143,7 @@ export function mapErrorToHttp(err, correlationId) {
133
143
  err.code === "METADATA_DESCRIPTOR_MISSING"
134
144
  ? mergeDetails(err.details, { next: METADATA_ENSURE_NEXT })
135
145
  : err.details;
146
+ const failure = classifyFailure(err, status);
136
147
  return {
137
148
  status,
138
149
  body: {
@@ -140,12 +151,16 @@ export function mapErrorToHttp(err, correlationId) {
140
151
  code: err.code,
141
152
  message: err.message,
142
153
  correlationId,
154
+ field: failure.field,
155
+ retryable: failure.retryable,
156
+ ...(failure.retryAfterMs !== undefined ? { retryAfterMs: failure.retryAfterMs } : {}),
143
157
  details,
144
158
  },
145
159
  },
146
160
  };
147
161
  }
148
162
  const message = err instanceof Error ? err.message : String(err);
163
+ const failure = classifyFailure(err, 500);
149
164
  return {
150
165
  status: 500,
151
166
  body: {
@@ -153,6 +168,9 @@ export function mapErrorToHttp(err, correlationId) {
153
168
  code: "INTERNAL_ERROR",
154
169
  message,
155
170
  correlationId,
171
+ field: failure.field,
172
+ retryable: failure.retryable,
173
+ ...(failure.retryAfterMs !== undefined ? { retryAfterMs: failure.retryAfterMs } : {}),
156
174
  },
157
175
  },
158
176
  };
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,43 @@
1
+ export declare const KNOWLEDGE_DEFAULT_URL = "http://127.0.0.1:8080";
2
+ /** Health probe budget. A host that drops packets must not hold status for the full proxy timeout. */
3
+ export declare const KNOWLEDGE_HEALTH_TIMEOUT_MS = 3000;
4
+ export type KnowledgeUpstreamSource = "MEMORIX_NEXUM_EXPLORE_URL" | "NEXUM_API_URL" | "default";
5
+ export declare function knowledgeUpstreamSource(env?: NodeJS.ProcessEnv): KnowledgeUpstreamSource;
1
6
  export declare function knowledgeUpstreamUrl(env?: NodeJS.ProcessEnv): string;
7
+ /** URL safe to return to callers: user info is dropped. */
8
+ export declare function displayUpstreamUrl(url: string): string;
2
9
  export declare function proxyJson(method: string, url: string, opts?: {
3
10
  body?: unknown;
4
11
  headers?: Record<string, string>;
12
+ timeoutMs?: number;
5
13
  }): Promise<{
6
14
  status: number;
7
15
  body: unknown;
8
16
  }>;
17
+ /** Connection-level failure text, e.g. `ECONNREFUSED` instead of undici's bare `fetch failed`. */
18
+ export declare function upstreamFailureReason(err: unknown): string;
19
+ /**
20
+ * proxyJson for explore REST reads. A request that never gets an HTTP answer
21
+ * (refused, dropped, DNS, timeout) is 502 KNOWLEDGE_UPSTREAM_UNREACHABLE.
22
+ */
23
+ export declare function proxyKnowledgeJson(method: string, url: string, opts?: {
24
+ body?: unknown;
25
+ headers?: Record<string, string>;
26
+ timeoutMs?: number;
27
+ }): Promise<{
28
+ status: number;
29
+ body: unknown;
30
+ }>;
31
+ export type KnowledgeUpstreamHealth = {
32
+ ok: boolean;
33
+ url: string;
34
+ source: KnowledgeUpstreamSource;
35
+ timeoutMs: number;
36
+ status?: number;
37
+ error?: string;
38
+ reason?: string;
39
+ };
40
+ export declare function probeKnowledgeUpstream(): Promise<KnowledgeUpstreamHealth>;
9
41
  export declare function throwIfKnowledgeUpstreamError(upstream: {
10
42
  status: number;
11
43
  body: unknown;
@@ -1 +1 @@
1
- {"version":3,"file":"knowledge-upstream.d.ts","sourceRoot":"","sources":["../src/knowledge-upstream.ts"],"names":[],"mappings":"AAMA,wBAAgB,oBAAoB,CAClC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,CAMR;AAED,wBAAsB,SAAS,CAC7B,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,GAC1D,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC,CAoB5C;AAED,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAC1C,IAAI,CASN"}
1
+ {"version":3,"file":"knowledge-upstream.d.ts","sourceRoot":"","sources":["../src/knowledge-upstream.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,qBAAqB,0BAA0B,CAAC;AAE7D,sGAAsG;AACtG,eAAO,MAAM,2BAA2B,OAAQ,CAAC;AAIjD,MAAM,MAAM,uBAAuB,GAC/B,2BAA2B,GAC3B,eAAe,GACf,SAAS,CAAC;AAEd,wBAAgB,uBAAuB,CACrC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,uBAAuB,CAIzB;AAED,wBAAgB,oBAAoB,CAClC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,CAMR;AAED,2DAA2D;AAC3D,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAStD;AAED,wBAAsB,SAAS,CAC7B,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9E,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC,CAoB5C;AAED,kGAAkG;AAClG,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAa1D;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9E,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC,CAgB5C;AAED,MAAM,MAAM,uBAAuB,GAAG;IACpC,EAAE,EAAE,OAAO,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,uBAAuB,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,uBAAuB,CAAC,CAwB/E;AAED,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAC1C,IAAI,CASN"}
@@ -3,10 +3,33 @@
3
3
  * Subjects stay on /api/data/content — this is the Mongo graphified-* store.
4
4
  */
5
5
  import { ServiceError } from "./errors.js";
6
+ export const KNOWLEDGE_DEFAULT_URL = "http://127.0.0.1:8080";
7
+ /** Health probe budget. A host that drops packets must not hold status for the full proxy timeout. */
8
+ export const KNOWLEDGE_HEALTH_TIMEOUT_MS = 3_000;
9
+ const KNOWLEDGE_PROXY_TIMEOUT_MS = 30_000;
10
+ export function knowledgeUpstreamSource(env = process.env) {
11
+ if (env.MEMORIX_NEXUM_EXPLORE_URL?.trim())
12
+ return "MEMORIX_NEXUM_EXPLORE_URL";
13
+ if (env.NEXUM_API_URL?.trim())
14
+ return "NEXUM_API_URL";
15
+ return "default";
16
+ }
6
17
  export function knowledgeUpstreamUrl(env = process.env) {
7
18
  return (env.MEMORIX_NEXUM_EXPLORE_URL?.trim() ||
8
19
  env.NEXUM_API_URL?.trim() ||
9
- "http://127.0.0.1:8080").replace(/\/+$/, "");
20
+ KNOWLEDGE_DEFAULT_URL).replace(/\/+$/, "");
21
+ }
22
+ /** URL safe to return to callers: user info is dropped. */
23
+ export function displayUpstreamUrl(url) {
24
+ try {
25
+ const u = new URL(url);
26
+ u.username = "";
27
+ u.password = "";
28
+ return u.toString().replace(/\/+$/, "");
29
+ }
30
+ catch {
31
+ return url;
32
+ }
10
33
  }
11
34
  export async function proxyJson(method, url, opts) {
12
35
  const res = await fetch(url, {
@@ -18,7 +41,7 @@ export async function proxyJson(method, url, opts) {
18
41
  ...(opts?.headers ?? {}),
19
42
  },
20
43
  ...(opts?.body !== undefined ? { body: JSON.stringify(opts.body) } : {}),
21
- signal: AbortSignal.timeout(30_000),
44
+ signal: AbortSignal.timeout(opts?.timeoutMs ?? KNOWLEDGE_PROXY_TIMEOUT_MS),
22
45
  });
23
46
  const text = await res.text();
24
47
  let parsed = text;
@@ -30,6 +53,67 @@ export async function proxyJson(method, url, opts) {
30
53
  }
31
54
  return { status: res.status, body: parsed };
32
55
  }
56
+ /** Connection-level failure text, e.g. `ECONNREFUSED` instead of undici's bare `fetch failed`. */
57
+ export function upstreamFailureReason(err) {
58
+ if (err && typeof err === "object") {
59
+ const cause = err.cause;
60
+ if (cause && typeof cause === "object") {
61
+ const code = cause.code;
62
+ if (typeof code === "string" && code)
63
+ return code;
64
+ const message = cause.message;
65
+ if (typeof message === "string" && message)
66
+ return message;
67
+ }
68
+ const name = err.name;
69
+ if (name === "TimeoutError")
70
+ return "timeout";
71
+ }
72
+ return err instanceof Error ? err.message : String(err);
73
+ }
74
+ /**
75
+ * proxyJson for explore REST reads. A request that never gets an HTTP answer
76
+ * (refused, dropped, DNS, timeout) is 502 KNOWLEDGE_UPSTREAM_UNREACHABLE.
77
+ */
78
+ export async function proxyKnowledgeJson(method, url, opts) {
79
+ try {
80
+ return await proxyJson(method, url, opts);
81
+ }
82
+ catch (err) {
83
+ const reason = upstreamFailureReason(err);
84
+ throw new ServiceError("KNOWLEDGE_UPSTREAM_UNREACHABLE", `knowledge upstream unreachable (${reason}). Check GET /api/knowledge/status for the explore URL and the env var that set it.`, 502, {
85
+ url: displayUpstreamUrl(url),
86
+ source: knowledgeUpstreamSource(),
87
+ reason,
88
+ });
89
+ }
90
+ }
91
+ export async function probeKnowledgeUpstream() {
92
+ const baseUrl = knowledgeUpstreamUrl();
93
+ const base = {
94
+ url: displayUpstreamUrl(baseUrl),
95
+ source: knowledgeUpstreamSource(),
96
+ timeoutMs: KNOWLEDGE_HEALTH_TIMEOUT_MS,
97
+ };
98
+ try {
99
+ const health = await proxyJson("GET", `${baseUrl}/health`, {
100
+ timeoutMs: KNOWLEDGE_HEALTH_TIMEOUT_MS,
101
+ });
102
+ return {
103
+ ok: health.status >= 200 && health.status < 300,
104
+ ...base,
105
+ status: health.status,
106
+ };
107
+ }
108
+ catch (err) {
109
+ return {
110
+ ok: false,
111
+ ...base,
112
+ error: err instanceof Error ? err.message : String(err),
113
+ reason: upstreamFailureReason(err),
114
+ };
115
+ }
116
+ }
33
117
  export function throwIfKnowledgeUpstreamError(upstream) {
34
118
  if (upstream.status >= 400) {
35
119
  throw new ServiceError("KNOWLEDGE_UPSTREAM_ERROR", `knowledge upstream HTTP ${upstream.status}`, upstream.status >= 500 ? 502 : upstream.status, { upstream: upstream.body });
@@ -1 +1 @@
1
- {"version":3,"file":"knowledge-upstream.js","sourceRoot":"","sources":["../src/knowledge-upstream.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,UAAU,oBAAoB,CAClC,MAAyB,OAAO,CAAC,GAAG;IAEpC,OAAO,CACL,GAAG,CAAC,yBAAyB,EAAE,IAAI,EAAE;QACrC,GAAG,CAAC,aAAa,EAAE,IAAI,EAAE;QACzB,uBAAuB,CACxB,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACxB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,MAAc,EACd,GAAW,EACX,IAA2D;IAE3D,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAC3B,MAAM;QACN,OAAO,EAAE;YACP,GAAG,CAAC,IAAI,EAAE,IAAI,KAAK,SAAS;gBAC1B,CAAC,CAAC,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBACxC,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,IAAI,EAAE,OAAO,IAAI,EAAE,CAAC;SACzB;QACD,GAAG,CAAC,IAAI,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;KACpC,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAC9B,IAAI,MAAM,GAAY,IAAI,CAAC;IAC3B,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,eAAe;IACjB,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,QAA2C;IAE3C,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;QAC3B,MAAM,IAAI,YAAY,CACpB,0BAA0B,EAC1B,2BAA2B,QAAQ,CAAC,MAAM,EAAE,EAC5C,QAAQ,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAC9C,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,CAC5B,CAAC;IACJ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"knowledge-upstream.js","sourceRoot":"","sources":["../src/knowledge-upstream.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  */
4
4
  import type { MemorixPlatform } from "../platform.js";
5
5
  import type { MemorixScope } from "../scope.js";
6
- export declare const NEXUM_MCP_TOOL_NAMES: readonly ["nexum_list_snapshots", "nexum_get_snapshot", "nexum_get_connected_content", "nexum_knowledge_status", "nexum_list_entities", "nexum_get_entity", "nexum_query"];
6
+ export declare const NEXUM_MCP_TOOL_NAMES: readonly ["nexum_list_snapshots", "nexum_get_snapshot", "nexum_snapshots_for_source", "nexum_get_connected_content", "nexum_knowledge_status", "nexum_list_entities", "nexum_get_entity", "nexum_query"];
7
7
  export type NexumMcpToolName = (typeof NEXUM_MCP_TOOL_NAMES)[number];
8
8
  type JsonSchema = Record<string, unknown>;
9
9
  type ToolDef = {
@@ -1 +1 @@
1
- {"version":3,"file":"nexum-tools.d.ts","sourceRoot":"","sources":["../../src/mcp/nexum-tools.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAShD,eAAO,MAAM,oBAAoB,4KAQvB,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AAErE,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE1C,KAAK,OAAO,GAAG;IACb,IAAI,EAAE,gBAAgB,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,UAAU,CAAC;CACzB,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,OAAO,EA+FpC,CAAC;AAyEF,wBAAsB,gBAAgB,CAAC,IAAI,EAAE;IAC3C,QAAQ,EAAE,eAAe,CAAC;IAC1B,KAAK,EAAE,YAAY,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;CACf,GAAG,OAAO,CAAC;IACV,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC,CA4KD"}
1
+ {"version":3,"file":"nexum-tools.d.ts","sourceRoot":"","sources":["../../src/mcp/nexum-tools.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAWhD,eAAO,MAAM,oBAAoB,0MASvB,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AAErE,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE1C,KAAK,OAAO,GAAG;IACb,IAAI,EAAE,gBAAgB,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,UAAU,CAAC;CACzB,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,OAAO,EAgHpC,CAAC;AAyEF,wBAAsB,gBAAgB,CAAC,IAAI,EAAE;IAC3C,QAAQ,EAAE,eAAe,CAAC;IAC1B,KAAK,EAAE,YAAY,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;CACf,GAAG,OAAO,CAAC;IACV,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC,CA4KD"}
@@ -1,9 +1,11 @@
1
1
  import { ServiceError } from "../errors.js";
2
- import { knowledgeUpstreamUrl, proxyJson, throwIfKnowledgeUpstreamError, } from "../knowledge-upstream.js";
2
+ import { knowledgeUpstreamUrl, probeKnowledgeUpstream, proxyKnowledgeJson, throwIfKnowledgeUpstreamError, } from "../knowledge-upstream.js";
3
3
  import { recordLooksLikeKnowledgeGraph } from "../activity-ring.js";
4
+ import { listKnowledgeGraphsForSource } from "../nexum-analysis/knowledge-read.js";
4
5
  export const NEXUM_MCP_TOOL_NAMES = [
5
6
  "nexum_list_snapshots",
6
7
  "nexum_get_snapshot",
8
+ "nexum_snapshots_for_source",
7
9
  "nexum_get_connected_content",
8
10
  "nexum_knowledge_status",
9
11
  "nexum_list_entities",
@@ -37,6 +39,22 @@ export const NEXUM_MCP_TOOLS = [
37
39
  required: ["recordId"],
38
40
  },
39
41
  },
42
+ {
43
+ name: "nexum_snapshots_for_source",
44
+ description: "Find knowledge-graph snapshots (content/snapshots) whose data.sourceRefs include a landed record id. The caller agent does not need to declare object type content.",
45
+ inputSchema: {
46
+ type: "object",
47
+ properties: {
48
+ sourceRecordId: {
49
+ type: "string",
50
+ description: "Record id of the landed subject (not the snapshot id)",
51
+ },
52
+ limit: { type: "number", description: "Max snapshots (default 50, max 200)" },
53
+ cursor: { type: "string" },
54
+ },
55
+ required: ["sourceRecordId"],
56
+ },
57
+ },
40
58
  {
41
59
  name: "nexum_get_connected_content",
42
60
  description: "Given a knowledge-graph snapshot recordId (content/snapshots), read data.sourceRefs and return each connected subject's content-type .data. Omit contentTypes to use the subject's registered content types.",
@@ -202,6 +220,21 @@ export async function callNexumMcpTool(opts) {
202
220
  knowledgeGraph: recordLooksLikeKnowledgeGraph(record),
203
221
  });
204
222
  }
223
+ case "nexum_snapshots_for_source": {
224
+ const sourceRecordId = String(args.sourceRecordId ?? "").trim();
225
+ if (!sourceRecordId) {
226
+ throw new ServiceError("VALIDATION", "sourceRecordId required", 400);
227
+ }
228
+ const ports = platform.portsFor(scope);
229
+ const listed = await listKnowledgeGraphsForSource({
230
+ reader: ports.reader,
231
+ scope,
232
+ sourceRecordId,
233
+ limit: Number(args.limit ?? 50) || 50,
234
+ cursor: typeof args.cursor === "string" ? args.cursor : undefined,
235
+ });
236
+ return textResult({ scope, ...listed });
237
+ }
205
238
  case "nexum_get_connected_content": {
206
239
  const recordId = String(args.recordId ?? "").trim();
207
240
  if (!recordId) {
@@ -232,28 +265,12 @@ export async function callNexumMcpTool(opts) {
232
265
  });
233
266
  }
234
267
  case "nexum_knowledge_status": {
235
- const baseUrl = knowledgeUpstreamUrl();
236
- let upstream = {
237
- ok: false,
238
- };
239
- try {
240
- const health = await proxyJson("GET", `${baseUrl}/health`);
241
- upstream = {
242
- ok: health.status >= 200 && health.status < 300,
243
- status: health.status,
244
- };
245
- }
246
- catch (err) {
247
- upstream = {
248
- ok: false,
249
- error: err instanceof Error ? err.message : String(err),
250
- };
251
- }
268
+ const upstream = await probeKnowledgeUpstream();
252
269
  return textResult({
253
270
  scope,
254
271
  upstreamOk: upstream.ok,
255
272
  upstream,
256
- exploreBaseUrl: baseUrl,
273
+ exploreBaseUrl: upstream.url,
257
274
  note: "Canvas store (Nexum explore REST). Subjects use nexum_list_snapshots / nexum_get_snapshot.",
258
275
  });
259
276
  }
@@ -265,7 +282,7 @@ export async function callNexumMcpTool(opts) {
265
282
  const path = q
266
283
  ? `/v1/orgs/${encodeURIComponent(scope.orgId)}/graphs/${encodeURIComponent(graphId)}/search?q=${encodeURIComponent(q)}&limit=${encodeURIComponent(limit)}`
267
284
  : `/v1/orgs/${encodeURIComponent(scope.orgId)}/graphs/${encodeURIComponent(graphId)}/visualization?maximumNodes=${encodeURIComponent(limit)}`;
268
- const upstream = await proxyJson("GET", `${baseUrl}${path}`);
285
+ const upstream = await proxyKnowledgeJson("GET", `${baseUrl}${path}`);
269
286
  throwIfKnowledgeUpstreamError(upstream);
270
287
  return textResult({
271
288
  scope,
@@ -281,7 +298,7 @@ export async function callNexumMcpTool(opts) {
281
298
  const graphId = String(args.graphId ?? "default").trim() || "default";
282
299
  const baseUrl = knowledgeUpstreamUrl();
283
300
  const path = `/v1/orgs/${encodeURIComponent(scope.orgId)}/graphs/${encodeURIComponent(graphId)}/nodes/${encodeURIComponent(entityId)}`;
284
- const upstream = await proxyJson("GET", `${baseUrl}${path}`);
301
+ const upstream = await proxyKnowledgeJson("GET", `${baseUrl}${path}`);
285
302
  throwIfKnowledgeUpstreamError(upstream);
286
303
  return textResult({
287
304
  scope,
@@ -299,7 +316,7 @@ export async function callNexumMcpTool(opts) {
299
316
  const depth = Number(args.depth ?? 1);
300
317
  const baseUrl = knowledgeUpstreamUrl();
301
318
  const path = `/v1/orgs/${encodeURIComponent(scope.orgId)}/graphs/${encodeURIComponent(graphId)}/nodes/${encodeURIComponent(nodeId)}/neighbors?depth=${encodeURIComponent(String(depth))}`;
302
- const upstream = await proxyJson("GET", `${baseUrl}${path}`);
319
+ const upstream = await proxyKnowledgeJson("GET", `${baseUrl}${path}`);
303
320
  throwIfKnowledgeUpstreamError(upstream);
304
321
  return textResult({
305
322
  scope,
@@ -1 +1 @@
1
- {"version":3,"file":"nexum-tools.js","sourceRoot":"","sources":["../../src/mcp/nexum-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nexum-tools.js","sourceRoot":"","sources":["../../src/mcp/nexum-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Read-through cache for resolved metadata.
3
+ *
4
+ * `resolveEffective`, `resolveAbstracts` and `getDefinition` rebuild the whole
5
+ * catalog on every call: they clone every installed agent pack, fingerprint it,
6
+ * and validate it. A single content write asks for the catalog several times, so
7
+ * under load that work saturated a CPU core and made one call take seconds.
8
+ *
9
+ * The store is the only place metadata changes in this process, and it changes
10
+ * through three methods. `trackMetadataGeneration` counts those changes, and
11
+ * `createMetadataView` keeps each answer until the count moves. A pack install
12
+ * is visible to the next call, as before.
13
+ *
14
+ * Cached answers are shared between callers. Treat them as read-only.
15
+ */
16
+ import type { MetadataStore, UnifiedMetadataClient } from "@x12i/memorix-metadata-runtime";
17
+ export type MetadataGeneration = {
18
+ generation(): number;
19
+ };
20
+ /** The read calls a view answers from its cache. */
21
+ export type MetadataView = Pick<UnifiedMetadataClient, "resolveEffective" | "resolveAbstracts" | "getDefinition">;
22
+ type Hydratable = {
23
+ hydrate?: () => Promise<void>;
24
+ };
25
+ /** Wrap a store so every change to its contents moves `generation()`. */
26
+ export declare function trackMetadataGeneration<S extends MetadataStore & Hydratable>(store: S): S & MetadataGeneration;
27
+ /** Answer metadata reads from a cache that is dropped when the store changes. */
28
+ export declare function createMetadataView(client: UnifiedMetadataClient, generation: () => number): MetadataView;
29
+ export {};
30
+ //# sourceMappingURL=metadata-view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata-view.d.ts","sourceRoot":"","sources":["../src/metadata-view.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAE3F,MAAM,MAAM,kBAAkB,GAAG;IAAE,UAAU,IAAI,MAAM,CAAA;CAAE,CAAC;AAE1D,oDAAoD;AACpD,MAAM,MAAM,YAAY,GAAG,IAAI,CAAC,qBAAqB,EAAE,kBAAkB,GAAG,kBAAkB,GAAG,eAAe,CAAC,CAAC;AAElH,KAAK,UAAU,GAAG;IAAE,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAAC;AAEpD,yEAAyE;AACzE,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,aAAa,GAAG,UAAU,EAC1E,KAAK,EAAE,CAAC,GACP,CAAC,GAAG,kBAAkB,CA+BxB;AAED,iFAAiF;AACjF,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,qBAAqB,EAAE,UAAU,EAAE,MAAM,MAAM,GAAG,YAAY,CAoCxG"}
@@ -0,0 +1,67 @@
1
+ /** Wrap a store so every change to its contents moves `generation()`. */
2
+ export function trackMetadataGeneration(store) {
3
+ let generation = 0;
4
+ const tracked = {
5
+ ...store,
6
+ generation: () => generation,
7
+ replaceAgentPack(...args) {
8
+ store.replaceAgentPack(...args);
9
+ generation++;
10
+ },
11
+ appendLedger(...args) {
12
+ store.appendLedger(...args);
13
+ generation++;
14
+ },
15
+ commitFrom(...args) {
16
+ store.commitFrom(...args);
17
+ generation++;
18
+ },
19
+ };
20
+ if (typeof store.hydrate === "function") {
21
+ // Hydrate swaps the whole snapshot. Move the count before and after so no
22
+ // reader keeps an answer built from the previous snapshot.
23
+ tracked.hydrate = async () => {
24
+ generation++;
25
+ try {
26
+ await store.hydrate();
27
+ }
28
+ finally {
29
+ generation++;
30
+ }
31
+ };
32
+ }
33
+ return tracked;
34
+ }
35
+ /** Answer metadata reads from a cache that is dropped when the store changes. */
36
+ export function createMetadataView(client, generation) {
37
+ let seen = generation();
38
+ const effective = new Map();
39
+ const abstracts = new Map();
40
+ const definitions = new Map();
41
+ const fresh = () => {
42
+ const now = generation();
43
+ if (now === seen)
44
+ return;
45
+ seen = now;
46
+ effective.clear();
47
+ abstracts.clear();
48
+ definitions.clear();
49
+ };
50
+ const agentsKey = (agentIds) => agentIds.join("\u0000");
51
+ function memo(cache, key, build) {
52
+ fresh();
53
+ if (cache.has(key))
54
+ return cache.get(key);
55
+ const value = build();
56
+ // A build that itself changed the store (it should not) must not be kept.
57
+ if (generation() === seen)
58
+ cache.set(key, value);
59
+ return value;
60
+ }
61
+ return {
62
+ resolveEffective: (agentIds) => memo(effective, agentsKey(agentIds), () => client.resolveEffective(agentIds)),
63
+ resolveAbstracts: (agentIds) => memo(abstracts, agentsKey(agentIds), () => client.resolveAbstracts(agentIds)),
64
+ getDefinition: (agentIds, kind, id) => memo(definitions, `${agentsKey(agentIds)}\u0001${kind}\u0001${id}`, () => client.getDefinition(agentIds, kind, id)),
65
+ };
66
+ }
67
+ //# sourceMappingURL=metadata-view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata-view.js","sourceRoot":"","sources":["../src/metadata-view.ts"],"names":[],"mappings":"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"}
@@ -18,7 +18,7 @@ export type AnalysisEnqueueResult = {
18
18
  */
19
19
  export declare function resolveAnalyzeAgentIds(scopeAgentIds: string[], hasPipeline: (agentIds: string[]) => boolean): string[];
20
20
  export declare function maybeEnqueueNexumAnalysis(input: {
21
- platform: Pick<MemorixPlatform, "metadata" | "operationalDbFor" | "portsFor">;
21
+ platform: Pick<MemorixPlatform, "metadata" | "operationalDbFor" | "portsFor"> & Partial<Pick<MemorixPlatform, "metadataView">>;
22
22
  scope: MemorixScope;
23
23
  objectType: string;
24
24
  contentType: string;
@@ -1 +1 @@
1
- {"version":3,"file":"enqueue.d.ts","sourceRoot":"","sources":["../../src/nexum-analysis/enqueue.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAYhD,MAAM,MAAM,qBAAqB,GAC7B;IACE,MAAM,EAAE,QAAQ,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;CACnB,GACD;IACE,MAAM,EAAE,SAAS,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAKN;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,aAAa,EAAE,MAAM,EAAE,EACvB,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,OAAO,GAC3C,MAAM,EAAE,CASV;AA6BD,wBAAsB,yBAAyB,CAAC,KAAK,EAAE;IACrD,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,UAAU,GAAG,kBAAkB,GAAG,UAAU,CAAC,CAAC;IAC9E,KAAK,EAAE,YAAY,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC,GAAG,OAAO,CAAC,qBAAqB,CAAC,CA0KjC"}
1
+ {"version":3,"file":"enqueue.d.ts","sourceRoot":"","sources":["../../src/nexum-analysis/enqueue.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAahD,MAAM,MAAM,qBAAqB,GAC7B;IACE,MAAM,EAAE,QAAQ,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;CACnB,GACD;IACE,MAAM,EAAE,SAAS,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAKN;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,aAAa,EAAE,MAAM,EAAE,EACvB,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,OAAO,GAC3C,MAAM,EAAE,CASV;AA6BD,wBAAsB,yBAAyB,CAAC,KAAK,EAAE;IACrD,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,UAAU,GAAG,kBAAkB,GAAG,UAAU,CAAC,GAC3E,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC,CAAC;IACjD,KAAK,EAAE,YAAY,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC,GAAG,OAAO,CAAC,qBAAqB,CAAC,CA2KjC"}
@@ -6,8 +6,9 @@ import { isNexumAutoAnalyzeEnabled, matchNexumIndexingPolicy, recordToNexumItems
6
6
  import { enqueueAnalysisOutbox, markAnalysisOutbox } from "./outbox.js";
7
7
  import { invokePipeline } from "../pipeline-invoke.js";
8
8
  import { memorixActivityRing } from "../activity-ring.js";
9
+ import { HOST_KNOWLEDGE_AGENT_ID } from "../catalog-bridge.js";
9
10
  const HOST_ANALYZE_PIPELINE = "opx-nexum-analyze";
10
- const HOST_ANALYZE_AGENT = "opx";
11
+ const HOST_ANALYZE_AGENT = HOST_KNOWLEDGE_AGENT_ID;
11
12
  /**
12
13
  * The analyze pipeline and its `content`/`snapshots` persist target live on
13
14
  * the host agent that installed them. Writer agents (for example
@@ -42,7 +43,8 @@ export async function maybeEnqueueNexumAnalysis(input) {
42
43
  if (!process.env.MEMORIX_NEXUM_URL?.trim() && !process.env.NEXUM_URL?.trim()) {
43
44
  return { status: "skipped", reason: "indexing worker unset" };
44
45
  }
45
- const effective = input.platform.metadata.resolveEffective(input.scope.agentIds);
46
+ // Per-write path: read the catalog from the view so a write does not rebuild it.
47
+ const effective = (input.platform.metadataView ?? input.platform.metadata).resolveEffective(input.scope.agentIds);
46
48
  const extensionBag = {};
47
49
  for (const e of effective.effective ?? []) {
48
50
  if (!e.kind?.includes("."))