@x12i/memorix-service 3.6.2 → 3.6.4

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 (78) hide show
  1. package/README.md +8 -0
  2. package/dist/access-gate.d.ts +10 -0
  3. package/dist/access-gate.d.ts.map +1 -1
  4. package/dist/access-gate.js +38 -1
  5. package/dist/access-gate.js.map +1 -1
  6. package/dist/app.d.ts.map +1 -1
  7. package/dist/app.js +2 -0
  8. package/dist/app.js.map +1 -1
  9. package/dist/blob-store/types.js +1 -1
  10. package/dist/blob-store/types.js.map +1 -1
  11. package/dist/callback-grant.d.ts.map +1 -1
  12. package/dist/callback-grant.js +10 -6
  13. package/dist/callback-grant.js.map +1 -1
  14. package/dist/catalog/catalog-service.js +1 -1
  15. package/dist/catalog/catalog-service.js.map +1 -1
  16. package/dist/catalog-bridge.d.ts.map +1 -1
  17. package/dist/catalog-bridge.js +74 -61
  18. package/dist/catalog-bridge.js.map +1 -1
  19. package/dist/cli.d.ts.map +1 -1
  20. package/dist/cli.js +6 -2
  21. package/dist/cli.js.map +1 -1
  22. package/dist/connector-catalog.d.ts +8 -3
  23. package/dist/connector-catalog.d.ts.map +1 -1
  24. package/dist/connector-catalog.js +66 -93
  25. package/dist/connector-catalog.js.map +1 -1
  26. package/dist/generic-connectors.d.ts +39 -1
  27. package/dist/generic-connectors.d.ts.map +1 -1
  28. package/dist/generic-connectors.js +142 -3
  29. package/dist/generic-connectors.js.map +1 -1
  30. package/dist/index.d.ts +1 -1
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.js +1 -1
  33. package/dist/index.js.map +1 -1
  34. package/dist/jobs-scope.d.ts +1 -0
  35. package/dist/jobs-scope.d.ts.map +1 -1
  36. package/dist/jobs-scope.js +5 -4
  37. package/dist/jobs-scope.js.map +1 -1
  38. package/dist/mgc-landing-stores.d.ts +94 -0
  39. package/dist/mgc-landing-stores.d.ts.map +1 -0
  40. package/dist/mgc-landing-stores.js +174 -0
  41. package/dist/mgc-landing-stores.js.map +1 -0
  42. package/dist/optional-companion-url.d.ts +1 -1
  43. package/dist/optional-companion-url.js +1 -1
  44. package/dist/pipeline-compile.d.ts +1 -1
  45. package/dist/pipeline-compile.js +1 -1
  46. package/dist/platform.d.ts +17 -1
  47. package/dist/platform.d.ts.map +1 -1
  48. package/dist/platform.js +56 -8
  49. package/dist/platform.js.map +1 -1
  50. package/dist/routes/connector-invocations.d.ts.map +1 -1
  51. package/dist/routes/connector-invocations.js +6 -1
  52. package/dist/routes/connector-invocations.js.map +1 -1
  53. package/dist/routes/connector-ops.d.ts +2 -1
  54. package/dist/routes/connector-ops.d.ts.map +1 -1
  55. package/dist/routes/connector-ops.js +8 -5
  56. package/dist/routes/connector-ops.js.map +1 -1
  57. package/dist/routes/data.d.ts.map +1 -1
  58. package/dist/routes/data.js +11 -12
  59. package/dist/routes/data.js.map +1 -1
  60. package/dist/routes/jobs.d.ts.map +1 -1
  61. package/dist/routes/jobs.js +46 -21
  62. package/dist/routes/jobs.js.map +1 -1
  63. package/dist/routes/memory.d.ts.map +1 -1
  64. package/dist/routes/memory.js +187 -90
  65. package/dist/routes/memory.js.map +1 -1
  66. package/dist/routes/mgc-landing.d.ts +7 -0
  67. package/dist/routes/mgc-landing.d.ts.map +1 -0
  68. package/dist/routes/mgc-landing.js +177 -0
  69. package/dist/routes/mgc-landing.js.map +1 -0
  70. package/dist/scope.d.ts +23 -0
  71. package/dist/scope.d.ts.map +1 -1
  72. package/dist/scope.js +13 -1
  73. package/dist/scope.js.map +1 -1
  74. package/dist/write-precondition.d.ts +14 -0
  75. package/dist/write-precondition.d.ts.map +1 -0
  76. package/dist/write-precondition.js +41 -0
  77. package/dist/write-precondition.js.map +1 -0
  78. package/package.json +1 -2
@@ -1,4 +1,5 @@
1
1
  import { ServiceError } from "./errors.js";
2
+ import { normalizeOrgId } from "./scope.js";
2
3
  function header(headers, name) {
3
4
  const v = headers[name] ?? headers[name.toLowerCase()];
4
5
  if (Array.isArray(v))
@@ -31,8 +32,8 @@ export function resolveJobsScope(req) {
31
32
  orgId = null;
32
33
  }
33
34
  else {
34
- const fromQuery = typeof q.orgId === "string" ? q.orgId.trim() : "";
35
- const fromHeader = (orgHeader ?? "").trim();
35
+ const fromQuery = typeof q.orgId === "string" ? normalizeOrgId(q.orgId) : "";
36
+ const fromHeader = orgHeader ? normalizeOrgId(orgHeader) : "";
36
37
  orgId = fromQuery || fromHeader || null;
37
38
  if (!orgId) {
38
39
  throw new ServiceError("SCOPE_INVALID", "orgId required unless x-memorix-jobs-org-scope: all", 400);
@@ -61,7 +62,7 @@ export function resolveJobsScope(req) {
61
62
  export function resolveConcreteOrgId(scope, query) {
62
63
  if (scope.orgId)
63
64
  return scope.orgId;
64
- const fromQuery = typeof query?.orgId === "string" ? query.orgId.trim() : "";
65
+ const fromQuery = typeof query?.orgId === "string" ? normalizeOrgId(query.orgId) : "";
65
66
  if (!fromQuery) {
66
67
  throw new ServiceError("SCOPE_INVALID", "orgId query required when organization scope is all", 400);
67
68
  }
@@ -76,7 +77,7 @@ export function agentMatches(rowAgentIds, filter) {
76
77
  }
77
78
  export function toMemorixScope(orgId, agentIds) {
78
79
  return {
79
- orgId,
80
+ orgId: normalizeOrgId(orgId),
80
81
  agentIds: agentIds?.length ? agentIds : ["opx"],
81
82
  };
82
83
  }
@@ -1 +1 @@
1
- {"version":3,"file":"jobs-scope.js","sourceRoot":"","sources":["../src/jobs-scope.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"jobs-scope.js","sourceRoot":"","sources":["../src/jobs-scope.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,94 @@
1
+ export type RawRecordDoc = {
2
+ identity: string;
3
+ collection: string;
4
+ objectType: string;
5
+ payload: unknown;
6
+ fetchedAt: string;
7
+ ttlSeconds: number;
8
+ connectorId: string;
9
+ definitionHash?: string;
10
+ provenance: "cache" | "source";
11
+ orgId: string;
12
+ streamId?: string;
13
+ };
14
+ export type RawRecordStore = {
15
+ put(doc: RawRecordDoc): Promise<RawRecordDoc>;
16
+ get(orgId: string, collection: string, identity: string): Promise<RawRecordDoc | null>;
17
+ list(orgId: string, collection: string, limit?: number): Promise<RawRecordDoc[]>;
18
+ };
19
+ export type TargetEffectState = "not_applied" | "unknown" | "applied";
20
+ export type TargetItemReceiptStatus = "claimed" | "in_progress" | "completed" | "released";
21
+ export type TargetItemReceiptDoc = {
22
+ orgId: string;
23
+ destinationId: string;
24
+ idempotencyKey: string;
25
+ status: TargetItemReceiptStatus;
26
+ claimedAt?: string;
27
+ completedAt?: string;
28
+ releasedAt?: string;
29
+ workId?: string;
30
+ invocationId?: string;
31
+ providerResourceId?: string;
32
+ reused?: boolean;
33
+ reconciled?: boolean;
34
+ retryable?: boolean;
35
+ effectState?: TargetEffectState;
36
+ failure?: {
37
+ code: string;
38
+ message: string;
39
+ };
40
+ receipt?: Record<string, unknown>;
41
+ };
42
+ export type TargetItemReceiptStore = {
43
+ lookup(orgId: string, destinationId: string, idempotencyKey: string): Promise<TargetItemReceiptDoc | null>;
44
+ claim(input: {
45
+ orgId: string;
46
+ destinationId: string;
47
+ idempotencyKey: string;
48
+ workId?: string;
49
+ invocationId?: string;
50
+ }): Promise<TargetItemReceiptDoc>;
51
+ complete(input: {
52
+ orgId: string;
53
+ destinationId: string;
54
+ idempotencyKey: string;
55
+ providerResourceId?: string;
56
+ reused?: boolean;
57
+ reconciled?: boolean;
58
+ receipt?: Record<string, unknown>;
59
+ }): Promise<TargetItemReceiptDoc>;
60
+ release(input: {
61
+ orgId: string;
62
+ destinationId: string;
63
+ idempotencyKey: string;
64
+ retryable?: boolean;
65
+ effectState?: TargetEffectState;
66
+ failure?: {
67
+ code: string;
68
+ message: string;
69
+ };
70
+ }): Promise<TargetItemReceiptDoc>;
71
+ };
72
+ export type DeliveryArtifactDoc = {
73
+ ref: string;
74
+ orgId: string;
75
+ contentType: string;
76
+ bytes: Buffer;
77
+ createdAt: string;
78
+ };
79
+ export type DeliveryArtifactStore = {
80
+ put(doc: DeliveryArtifactDoc): Promise<void>;
81
+ get(orgId: string, ref: string): Promise<DeliveryArtifactDoc | null>;
82
+ };
83
+ export declare function createInMemoryRawRecordStore(): RawRecordStore;
84
+ export declare function createInMemoryTargetItemReceiptStore(): TargetItemReceiptStore;
85
+ export declare function createInMemoryDeliveryArtifactStore(): DeliveryArtifactStore;
86
+ /** Decode the opaque invocation grant MGC echoes on landing callbacks. */
87
+ export declare function decodeLandingGrantToken(token: string): {
88
+ grantId: string;
89
+ invocationId: string;
90
+ orgId: string;
91
+ expiresAt: string;
92
+ operations: string[];
93
+ } | null;
94
+ //# sourceMappingURL=mgc-landing-stores.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mgc-landing-stores.d.ts","sourceRoot":"","sources":["../src/mgc-landing-stores.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,174 @@
1
+ /**
2
+ * Grant-scoped MGC landing stores hosted by memorix-service.
3
+ * Canonical types also live in @x12i/memorix-memory (publish together).
4
+ */
5
+ import { normalizeOrgId } from "./scope.js";
6
+ function rawKey(orgId, collection, identity) {
7
+ return `${orgId}\0${collection}\0${identity}`;
8
+ }
9
+ export function createInMemoryRawRecordStore() {
10
+ const byKey = new Map();
11
+ return {
12
+ async put(doc) {
13
+ const stored = { ...doc };
14
+ byKey.set(rawKey(doc.orgId, doc.collection, doc.identity), stored);
15
+ return { ...stored };
16
+ },
17
+ async get(orgId, collection, identity) {
18
+ const found = byKey.get(rawKey(orgId, collection, identity));
19
+ return found ? { ...found } : null;
20
+ },
21
+ async list(orgId, collection, limit = 200) {
22
+ const out = [];
23
+ for (const doc of byKey.values()) {
24
+ if (doc.orgId === orgId && doc.collection === collection) {
25
+ out.push({ ...doc });
26
+ }
27
+ if (out.length >= limit)
28
+ break;
29
+ }
30
+ return out;
31
+ },
32
+ };
33
+ }
34
+ function receiptKey(orgId, destinationId, idempotencyKey) {
35
+ return `${orgId}\0${destinationId}\0${idempotencyKey}`;
36
+ }
37
+ function sanitizeFailure(failure) {
38
+ if (!failure)
39
+ return undefined;
40
+ return {
41
+ code: String(failure.code ?? "TARGET_ITEM_FAILED").slice(0, 120),
42
+ message: String(failure.message ?? "")
43
+ .replace(/(Bearer\s+)\S+/gi, "$1[REDACTED]")
44
+ .replace(/(api[_-]?key|token|password|secret)\s*[:=]\s*\S+/gi, "$1=[REDACTED]")
45
+ .slice(0, 500),
46
+ };
47
+ }
48
+ export function createInMemoryTargetItemReceiptStore() {
49
+ const byKey = new Map();
50
+ return {
51
+ async lookup(orgId, destinationId, idempotencyKey) {
52
+ const found = byKey.get(receiptKey(orgId, destinationId, idempotencyKey));
53
+ return found ? { ...found } : null;
54
+ },
55
+ async claim(input) {
56
+ const k = receiptKey(input.orgId, input.destinationId, input.idempotencyKey);
57
+ const existing = byKey.get(k);
58
+ if (existing?.status === "completed")
59
+ return { ...existing };
60
+ if (existing?.status === "claimed" || existing?.status === "in_progress") {
61
+ return { ...existing, status: "in_progress" };
62
+ }
63
+ const now = new Date().toISOString();
64
+ const doc = {
65
+ orgId: input.orgId,
66
+ destinationId: input.destinationId,
67
+ idempotencyKey: input.idempotencyKey,
68
+ status: "claimed",
69
+ claimedAt: now,
70
+ workId: input.workId,
71
+ invocationId: input.invocationId,
72
+ };
73
+ byKey.set(k, doc);
74
+ return { ...doc };
75
+ },
76
+ async complete(input) {
77
+ const k = receiptKey(input.orgId, input.destinationId, input.idempotencyKey);
78
+ const existing = byKey.get(k);
79
+ if (existing?.status === "completed")
80
+ return { ...existing };
81
+ const now = new Date().toISOString();
82
+ const doc = {
83
+ ...(existing ?? {
84
+ orgId: input.orgId,
85
+ destinationId: input.destinationId,
86
+ idempotencyKey: input.idempotencyKey,
87
+ }),
88
+ status: "completed",
89
+ completedAt: now,
90
+ providerResourceId: input.providerResourceId,
91
+ reused: input.reused,
92
+ reconciled: input.reconciled,
93
+ effectState: "applied",
94
+ retryable: false,
95
+ receipt: input.receipt ? { ...input.receipt } : existing?.receipt,
96
+ };
97
+ byKey.set(k, doc);
98
+ return { ...doc };
99
+ },
100
+ async release(input) {
101
+ const k = receiptKey(input.orgId, input.destinationId, input.idempotencyKey);
102
+ const existing = byKey.get(k);
103
+ if (existing?.status === "completed")
104
+ return { ...existing };
105
+ const now = new Date().toISOString();
106
+ const doc = {
107
+ ...(existing ?? {
108
+ orgId: input.orgId,
109
+ destinationId: input.destinationId,
110
+ idempotencyKey: input.idempotencyKey,
111
+ }),
112
+ status: "released",
113
+ releasedAt: now,
114
+ retryable: input.retryable ?? true,
115
+ effectState: input.effectState ?? "not_applied",
116
+ failure: sanitizeFailure(input.failure),
117
+ };
118
+ byKey.set(k, doc);
119
+ return { ...doc };
120
+ },
121
+ };
122
+ }
123
+ function artifactKey(orgId, ref) {
124
+ return `${orgId}\0${ref}`;
125
+ }
126
+ export function createInMemoryDeliveryArtifactStore() {
127
+ const byKey = new Map();
128
+ return {
129
+ async put(doc) {
130
+ byKey.set(artifactKey(doc.orgId, doc.ref), {
131
+ ...doc,
132
+ bytes: Buffer.from(doc.bytes),
133
+ });
134
+ },
135
+ async get(orgId, ref) {
136
+ const found = byKey.get(artifactKey(orgId, ref));
137
+ if (!found)
138
+ return null;
139
+ return { ...found, bytes: Buffer.from(found.bytes) };
140
+ },
141
+ };
142
+ }
143
+ /** Decode the opaque invocation grant MGC echoes on landing callbacks. */
144
+ export function decodeLandingGrantToken(token) {
145
+ const raw = token.trim();
146
+ if (!raw)
147
+ return null;
148
+ try {
149
+ const json = Buffer.from(raw, "base64url").toString("utf8");
150
+ const parsed = JSON.parse(json);
151
+ if (typeof parsed.grantId !== "string" ||
152
+ typeof parsed.invocationId !== "string" ||
153
+ typeof parsed.orgId !== "string" ||
154
+ typeof parsed.expiresAt !== "string") {
155
+ return null;
156
+ }
157
+ const orgId = normalizeOrgId(parsed.orgId);
158
+ if (!orgId)
159
+ return null;
160
+ return {
161
+ grantId: parsed.grantId,
162
+ invocationId: parsed.invocationId,
163
+ orgId,
164
+ expiresAt: parsed.expiresAt,
165
+ operations: Array.isArray(parsed.operations)
166
+ ? parsed.operations.filter((s) => typeof s === "string")
167
+ : [],
168
+ };
169
+ }
170
+ catch {
171
+ return null;
172
+ }
173
+ }
174
+ //# sourceMappingURL=mgc-landing-stores.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mgc-landing-stores.js","sourceRoot":"","sources":["../src/mgc-landing-stores.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Soft-skip / fail-closed policy for optional HTTP pipeline companions
3
- * (Exellix connectors, Neo vulnerability workers, Graphifier-style URLs).
3
+ * (Exellix connectors, Neo vulnerability workers, Nexum-style companion URLs).
4
4
  *
5
5
  * - URL unset → soft-skip unless required env/flag is set
6
6
  * - URL set → fail-closed on transport or failed envelope status
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Soft-skip / fail-closed policy for optional HTTP pipeline companions
3
- * (Exellix connectors, Neo vulnerability workers, Graphifier-style URLs).
3
+ * (Exellix connectors, Neo vulnerability workers, Nexum-style companion URLs).
4
4
  *
5
5
  * - URL unset → soft-skip unless required env/flag is set
6
6
  * - URL set → fail-closed on transport or failed envelope status
@@ -63,7 +63,7 @@ export declare function resolveNexumWorkerUrl(): string;
63
63
  /**
64
64
  * Resolve analyze-step worker endpoint.
65
65
  * knowx-extract → APS AI sim only when KNOWX_AI_SIM=1 (test-only);
66
- * nexum → MEMORIX_NEXUM_URL / :7500 (never KnowX; Nexum replaced Graphifier);
66
+ * nexum → MEMORIX_NEXUM_URL / :7500 (never KnowX);
67
67
  * otherwise KnowX control-plane worker (or per-service endpointEnv).
68
68
  */
69
69
  export declare function resolveKnowxServiceEndpoint(serviceId: string, opts?: {
@@ -82,7 +82,7 @@ export function resolveNexumWorkerUrl() {
82
82
  /**
83
83
  * Resolve analyze-step worker endpoint.
84
84
  * knowx-extract → APS AI sim only when KNOWX_AI_SIM=1 (test-only);
85
- * nexum → MEMORIX_NEXUM_URL / :7500 (never KnowX; Nexum replaced Graphifier);
85
+ * nexum → MEMORIX_NEXUM_URL / :7500 (never KnowX);
86
86
  * otherwise KnowX control-plane worker (or per-service endpointEnv).
87
87
  */
88
88
  export function resolveKnowxServiceEndpoint(serviceId, opts) {
@@ -12,8 +12,9 @@ import { type IntelligenceArtifactPersistence } from "@x12i/memorix-intelligence
12
12
  import { type RunLedger, type PipelineRuntime } from "@x12i/memorix-pipeline/v2";
13
13
  import { type OperationalStores } from "@x12i/memorix-pipeline-runtime";
14
14
  import { ServiceError } from "./errors.js";
15
+ import { type DeliveryArtifactStore, type RawRecordStore, type TargetItemReceiptStore } from "./mgc-landing-stores.js";
15
16
  import { type ServiceCatalog } from "./catalog-bridge.js";
16
- import type { MemorixScope } from "./scope.js";
17
+ import { type MemorixScope } from "./scope.js";
17
18
  import { type IsolationSession } from "./isolation.js";
18
19
  import { type MagitPackService } from "./magit/magit-pack-service.js";
19
20
  import { type GenericConnectorsConfig } from "./generic-connectors.js";
@@ -74,6 +75,12 @@ export type MemorixPlatform = {
74
75
  invocationLedger: InvocationLedger;
75
76
  /** Org destination definitions + deliver receipts. */
76
77
  destinationStore: DestinationStore;
78
+ /** Grant-scoped `{objectType}-raw` cache for MGC MCP. */
79
+ rawRecordStore: RawRecordStore;
80
+ /** Per-item claim/complete/release ledger during /v1/deliver. */
81
+ targetItemReceipts: TargetItemReceiptStore;
82
+ /** Binary artifacts for target `data-ref` resolution. */
83
+ deliveryArtifacts: DeliveryArtifactStore;
77
84
  /** Target deliverer (remote MGC target host). */
78
85
  deliverer: MemoryDeliverer;
79
86
  /** Generic connectors platform env (MGC zone). */
@@ -95,6 +102,10 @@ export type MemorixPlatform = {
95
102
  * Mongo when available; in-memory fallback in no-mongo dev.
96
103
  */
97
104
  operationalStoresFor(orgId: string): OperationalStores;
105
+ /**
106
+ * Canonical org id for storage keys (trim + toLocaleLowerCase("en-US")).
107
+ */
108
+ resolveOrgId(orgId: string): string;
98
109
  /**
99
110
  * Known operational org ids: in-memory caches union Mongo `*_operational` DBs when available.
100
111
  * Used by Jobs Manager unscoped (All orgs) list/overview fan-out.
@@ -103,6 +114,11 @@ export type MemorixPlatform = {
103
114
  intelligenceArtifactsFor(orgId: string): IntelligenceArtifactPersistence;
104
115
  /** Fail-closed: throws if ports cannot be constructed. */
105
116
  portsFor(scope: MemorixScope): OrgPorts;
117
+ /**
118
+ * Drop cached OrgPorts so the next portsFor rebuilds writers/readers/pipelines
119
+ * against current installed metadata (call after metadata install / rehydrate).
120
+ */
121
+ invalidateOrgPortsCache(): void;
106
122
  /**
107
123
  * Org runtime source registry (folder sources, etc.).
108
124
  * Works with Mongo when available; in-memory fallback in no-mongo dev.
@@ -1 +1 @@
1
- {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAGL,KAAK,qBAAqB,EAC3B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAKL,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC3B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAeL,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACrB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAEL,KAAK,0BAA0B,EAChC,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAGL,KAAK,+BAA+B,EACrC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAQL,KAAK,SAAS,EACd,KAAK,eAAe,EAGrB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAIL,KAAK,iBAAiB,EACvB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAY3C,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAGL,KAAK,gBAAgB,EACtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAUL,KAAK,gBAAgB,EACtB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAEL,KAAK,uBAAuB,EAC7B,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAaL,yBAAyB,EACzB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACzB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAGL,KAAK,wBAAwB,EAC9B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAGL,KAAK,qBAAqB,EAC3B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAGL,KAAK,qBAAqB,EAC3B,MAAM,8BAA8B,CAAC;AAEtC,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,MAAM,CAAC;AAEzC,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,6EAA6E;IAC7E,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,sEAAsE;IACtE,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,2EAA2E;IAC3E,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,OAAO,EAAE,cAAc,CAAC;IACxB,MAAM,EAAE,oBAAoB,CAAC;IAC7B,MAAM,EAAE,oBAAoB,CAAC;IAC7B,cAAc,EAAE,qBAAqB,CAAC;IACtC,aAAa,EAAE,kBAAkB,CAAC;IAClC,MAAM,EAAE,eAAe,CAAC;IACxB,cAAc,EAAE,cAAc,CAAC;IAC/B,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,iBAAiB,EAAE,qBAAqB,CAAC;IACzC,QAAQ,EAAE,eAAe,CAAC;IAC1B,YAAY,EAAE,gBAAgB,CAAC;IAC/B,SAAS,EAAE,eAAe,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,qBAAqB,CAAC;IAChC,SAAS,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACnC;;;OAGG;IACH,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC/B,mFAAmF;IACnF,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,oEAAoE;IACpE,iBAAiB,CACf,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GACrE,IAAI,CAAC;IACR,yDAAyD;IACzD,mBAAmB,CAAC,KAAK,EAAE,OAAO,gCAAgC,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAC9F,8DAA8D;IAC9D,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,+DAA+D;IAC/D,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,sDAAsD;IACtD,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,iDAAiD;IACjD,SAAS,EAAE,eAAe,CAAC;IAC3B,kDAAkD;IAClD,iBAAiB,EAAE,uBAAuB,CAAC;IAC3C,yFAAyF;IACzF,QAAQ,EAAE;QACR,QAAQ,EAAE,0BAA0B,CAAC;QACrC,aAAa,EAAE;YACb,UAAU,EAAE,MAAM,CAAC;YACnB,QAAQ,EAAE,MAAM,CAAC;YACjB,WAAW,CAAC,EAAE,MAAM,CAAC;SACtB,CAAC;KACH,GAAG,IAAI,CAAC;IACT,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,EAAE,CAAC;IACpC,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,EAAE,CAAC;IACjC,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C;;;OAGG;IACH,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB,CAAC;IACvD;;;OAGG;IACH,0BAA0B,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAChD,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,+BAA+B,CAAC;IACzE,0DAA0D;IAC1D,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,QAAQ,CAAC;IACxC;;;OAGG;IACH,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,qBAAqB,CAAC;IAC3D;;;OAGG;IACH,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAAC;IACzD;;;OAGG;IACH,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,CAAC;IACvD;;;OAGG;IACH,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,wBAAwB,CAAC;IACjE;;OAEG;IACH,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,qBAAqB,CAAC;IAC3D,iDAAiD;IACjD,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,qBAAqB,CAAC;IAC3D,mCAAmC;IACnC,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB,CAAC;IACvD,gCAAgC;IAChC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAAC;IACjD,yCAAyC;IACzC,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB,CAAC;IACvD,qDAAqD;IACrD,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,qBAAqB,CAAC;IAC1D,0EAA0E;IAC1E,SAAS,EAAE,eAAe,CAAC;IAC3B,4EAA4E;IAC5E,yBAAyB,CAAC,IAAI,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM,IAAI,CAAC;IACxF;;;OAGG;IACH,mBAAmB,CAAC,IAAI,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM,IAAI,CAAC;IAChE;;;OAGG;IACH,gCAAgC,CAAC,IAAI,CAAC,EAAE;QACtC,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,cAAc,CAAC,EAAE,UAAU,CAAC,OAAO,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;KACpF,GAAG,MAAM,IAAI,CAAC;IACf,+DAA+D;IAC/D,+BAA+B,CAC7B,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE;QACL,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,cAAc,CAAC,EAAE,UAAU,CAAC,OAAO,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;KACpF,GACA,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,yBAAyB,CAAC,CAAC,CAAC,CAAC;IAClE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,WAAW,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC3D,CAAC;AAEF,qBAAa,oBAAqB,SAAQ,YAAY;gBACxC,OAAO,EAAE,MAAM;CAI5B;AAED,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,eAAe,CAAC,CAilC1B"}
1
+ {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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"}
package/dist/platform.js CHANGED
@@ -14,11 +14,13 @@ import { createIntelligenceArtifactPersistence, createMongoRunLedger, } from "@x
14
14
  import { createMongoRunLedger as createPipelineLedger, createMemoryRunLedger, createPipelineRuntime, createLivePortRegistry, loadDataRef, tickWork, promoteHeldRuns, } from "@x12i/memorix-pipeline/v2";
15
15
  import { createMongoOperationalStores, createMemoryOperationalStores, ensureOperationalIndexes, } from "@x12i/memorix-pipeline-runtime";
16
16
  import { ServiceError } from "./errors.js";
17
+ import { createInMemoryDeliveryArtifactStore, createInMemoryRawRecordStore, createInMemoryTargetItemReceiptStore, } from "./mgc-landing-stores.js";
17
18
  import { memoryPullFetch, serviceInvokePorts, setStepProgressReporter } from "./live.js";
18
19
  import { resolveKnowxWorkerBaseUrl } from "./pipeline-compile.js";
19
20
  import { createRemoteOrLocalPort, createRunPipelinePort, createRunxPort, } from "./pipeline-ports.js";
20
21
  import { createMongoMetadataStore, } from "./mongo-metadata-store.js";
21
22
  import { catalogFromMetadataClient, relationshipMetadataResolver, } from "./catalog-bridge.js";
23
+ import { normalizeOrgId } from "./scope.js";
22
24
  import { assertSafeSandboxOrgId, recordCreatedDatabase, } from "./isolation.js";
23
25
  import { createMagitPackService, isMetadataMagitEnabled, magitPackageTypeIdConfigured, magitPackageTypeIdForDiagnostics, magitStoreSelectorConfigured, magitTypedStoreConfigured, resolveMagitCatalogTenant, resolveMagitRepoRootParent, resolveMagitStorageTokenEnv, } from "./magit/magit-pack-service.js";
24
26
  import { loadGenericConnectorsConfig, } from "./generic-connectors.js";
@@ -76,6 +78,9 @@ export async function createMemorixPlatform(deps) {
76
78
  });
77
79
  const invocationLedger = createInMemoryInvocationLedger();
78
80
  const destinationStore = createInMemoryDestinationStore();
81
+ const rawRecordStore = createInMemoryRawRecordStore();
82
+ const targetItemReceipts = createInMemoryTargetItemReceiptStore();
83
+ const deliveryArtifacts = createInMemoryDeliveryArtifactStore();
79
84
  const genericConnectors = loadGenericConnectorsConfig();
80
85
  const deliverer = createMemoryDeliverer({
81
86
  store: destinationStore,
@@ -149,7 +154,27 @@ export async function createMemorixPlatform(deps) {
149
154
  else {
150
155
  metadata = createMetadataClient(createInMemoryMetadataStore());
151
156
  }
157
+ function invalidateOrgPortsCache() {
158
+ portsCache.clear();
159
+ }
160
+ function resolveOrgId(orgId) {
161
+ const id = normalizeOrgId(orgId);
162
+ if (!id) {
163
+ throw new ServiceError("SCOPE_INVALID", "orgId is required and must be a non-empty string", 400);
164
+ }
165
+ return id;
166
+ }
167
+ // Metadata install mutates object-types/services used by OrgPorts. Clear the
168
+ // ports cache so agent-alone scopes do not keep a pre-install empty catalog.
169
+ const metadataInstall = metadata.install.bind(metadata);
170
+ metadata.install = ((pack, opts) => {
171
+ const result = metadataInstall(pack, opts);
172
+ if (result.ok)
173
+ invalidateOrgPortsCache();
174
+ return result;
175
+ });
152
176
  function operationalDbFor(orgId) {
177
+ orgId = resolveOrgId(orgId);
153
178
  if (!client) {
154
179
  throw new ServiceError("DURABLE_STORE_REQUIRED", "operational Mongo DB is required for this operation", 503);
155
180
  }
@@ -163,12 +188,14 @@ export async function createMemorixPlatform(deps) {
163
188
  return client.db(`${orgId}_operational`);
164
189
  }
165
190
  function metadataDbFor(orgId) {
191
+ orgId = resolveOrgId(orgId);
166
192
  if (!client) {
167
193
  throw new ServiceError("DURABLE_STORE_REQUIRED", "mongo required", 503);
168
194
  }
169
195
  return client.db(`${orgId}_metadata`);
170
196
  }
171
197
  function pipelineLedgerFor(orgId) {
198
+ orgId = resolveOrgId(orgId);
172
199
  const existing = ledgers.get(orgId);
173
200
  if (existing)
174
201
  return existing;
@@ -182,6 +209,7 @@ export async function createMemorixPlatform(deps) {
182
209
  return ledger;
183
210
  }
184
211
  function operationalStoresFor(orgId) {
212
+ orgId = resolveOrgId(orgId);
185
213
  const existing = operationalStoresByOrg.get(orgId);
186
214
  if (existing)
187
215
  return existing;
@@ -200,10 +228,7 @@ export async function createMemorixPlatform(deps) {
200
228
  return stores;
201
229
  }
202
230
  async function listKnownOperationalOrgIds() {
203
- const known = new Set([
204
- ...operationalStoresByOrg.keys(),
205
- ...ledgers.keys(),
206
- ]);
231
+ const ids = new Set();
207
232
  if (client) {
208
233
  try {
209
234
  const dbs = await client.db().admin().listDatabases();
@@ -212,15 +237,24 @@ export async function createMemorixPlatform(deps) {
212
237
  if (!name.endsWith("_operational"))
213
238
  continue;
214
239
  const orgId = name.slice(0, -"_operational".length);
215
- if (orgId)
216
- known.add(orgId);
240
+ const n = normalizeOrgId(orgId);
241
+ if (n)
242
+ ids.add(n);
217
243
  }
218
244
  }
219
245
  catch {
220
- // Discovery is best-effort; cached org keys still apply.
246
+ // Discovery is best-effort; in-memory keys still apply.
221
247
  }
222
248
  }
223
- return [...known].sort((a, b) => a.localeCompare(b));
249
+ for (const id of [
250
+ ...operationalStoresByOrg.keys(),
251
+ ...ledgers.keys(),
252
+ ]) {
253
+ const n = normalizeOrgId(id);
254
+ if (n)
255
+ ids.add(n);
256
+ }
257
+ return [...ids].sort((a, b) => a.localeCompare(b));
224
258
  }
225
259
  // KnowX chunked extract reports mid-step progress onto the running attempt.
226
260
  setStepProgressReporter(async (orgId, attemptId, progress) => {
@@ -233,6 +267,7 @@ export async function createMemorixPlatform(deps) {
233
267
  });
234
268
  });
235
269
  function intelligenceArtifactsFor(orgId) {
270
+ orgId = resolveOrgId(orgId);
236
271
  const existing = intelStores.get(orgId);
237
272
  if (existing)
238
273
  return existing;
@@ -248,6 +283,7 @@ export async function createMemorixPlatform(deps) {
248
283
  return store;
249
284
  }
250
285
  function orgRuntimeSourcesFor(orgId) {
286
+ orgId = resolveOrgId(orgId);
251
287
  const existing = orgRuntimeSourceStores.get(orgId);
252
288
  if (existing)
253
289
  return existing;
@@ -258,6 +294,7 @@ export async function createMemorixPlatform(deps) {
258
294
  return store;
259
295
  }
260
296
  function connectorOpOverridesFor(orgId) {
297
+ orgId = resolveOrgId(orgId);
261
298
  const existing = mcoOverrideStores.get(orgId);
262
299
  if (existing)
263
300
  return existing;
@@ -278,6 +315,7 @@ export async function createMemorixPlatform(deps) {
278
315
  return store;
279
316
  }
280
317
  function connectorOpAttemptsFor(orgId) {
318
+ orgId = resolveOrgId(orgId);
281
319
  const existing = mcoAttemptStores.get(orgId);
282
320
  if (existing)
283
321
  return existing;
@@ -298,6 +336,7 @@ export async function createMemorixPlatform(deps) {
298
336
  return store;
299
337
  }
300
338
  function integrationInstancesFor(orgId) {
339
+ orgId = resolveOrgId(orgId);
301
340
  const existing = integrationStores.get(orgId);
302
341
  if (existing)
303
342
  return existing;
@@ -318,6 +357,7 @@ export async function createMemorixPlatform(deps) {
318
357
  return store;
319
358
  }
320
359
  function restrictedObjectsFor(orgId) {
360
+ orgId = resolveOrgId(orgId);
321
361
  const existing = restrictedStores.get(orgId);
322
362
  if (existing)
323
363
  return existing;
@@ -343,6 +383,7 @@ export async function createMemorixPlatform(deps) {
343
383
  return store;
344
384
  }
345
385
  function storeOrMemory(map, orgId, label, mongo, memory) {
386
+ orgId = resolveOrgId(orgId);
346
387
  const existing = map.get(orgId);
347
388
  if (existing)
348
389
  return existing;
@@ -381,6 +422,7 @@ export async function createMemorixPlatform(deps) {
381
422
  if (!client) {
382
423
  throw new ServiceError("CANONICAL_PORT_MISSING", "Mongo client required for data/relationship/memory/pipeline ports", 503);
383
424
  }
425
+ scope = { ...scope, orgId: resolveOrgId(scope.orgId) };
384
426
  const cacheKey = `${scope.orgId}:${scope.agentIds.join(",")}`;
385
427
  const hit = portsCache.get(cacheKey);
386
428
  if (hit)
@@ -837,6 +879,7 @@ export async function createMemorixPlatform(deps) {
837
879
  async rehydrateMetadata() {
838
880
  if (durableMetadata)
839
881
  await durableMetadata.hydrate();
882
+ invalidateOrgPortsCache();
840
883
  },
841
884
  stampAgentLineage(agentId, lineage) {
842
885
  if (!durableMetadata)
@@ -857,6 +900,9 @@ export async function createMemorixPlatform(deps) {
857
900
  connectorRegistry,
858
901
  invocationLedger,
859
902
  destinationStore,
903
+ rawRecordStore,
904
+ targetItemReceipts,
905
+ deliveryArtifacts,
860
906
  deliverer,
861
907
  genericConnectors,
862
908
  credorix,
@@ -864,9 +910,11 @@ export async function createMemorixPlatform(deps) {
864
910
  metadataDbFor,
865
911
  pipelineLedgerFor,
866
912
  operationalStoresFor,
913
+ resolveOrgId,
867
914
  listKnownOperationalOrgIds,
868
915
  intelligenceArtifactsFor,
869
916
  portsFor,
917
+ invalidateOrgPortsCache,
870
918
  orgRuntimeSourcesFor,
871
919
  connectorOpOverridesFor,
872
920
  connectorOpAttemptsFor,