@x12i/memorix-service 3.2.1 → 3.3.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 (104) hide show
  1. package/README.md +43 -2
  2. package/dist/app.d.ts.map +1 -1
  3. package/dist/app.js +4 -0
  4. package/dist/app.js.map +1 -1
  5. package/dist/catalog/catalog-service.d.ts +48 -0
  6. package/dist/catalog/catalog-service.d.ts.map +1 -0
  7. package/dist/catalog/catalog-service.js +397 -0
  8. package/dist/catalog/catalog-service.js.map +1 -0
  9. package/dist/catalog/package-list-source.d.ts +35 -0
  10. package/dist/catalog/package-list-source.d.ts.map +1 -0
  11. package/dist/catalog/package-list-source.js +47 -0
  12. package/dist/catalog/package-list-source.js.map +1 -0
  13. package/dist/catalog/types.d.ts +65 -0
  14. package/dist/catalog/types.d.ts.map +1 -0
  15. package/dist/catalog/types.js +16 -0
  16. package/dist/catalog/types.js.map +1 -0
  17. package/dist/catalog-store-cli.d.ts +20 -0
  18. package/dist/catalog-store-cli.d.ts.map +1 -0
  19. package/dist/catalog-store-cli.js +206 -0
  20. package/dist/catalog-store-cli.js.map +1 -0
  21. package/dist/cli.d.ts +3 -1
  22. package/dist/cli.d.ts.map +1 -1
  23. package/dist/cli.js +48 -18
  24. package/dist/cli.js.map +1 -1
  25. package/dist/connector-ops/attempt-store.d.ts +5 -0
  26. package/dist/connector-ops/attempt-store.d.ts.map +1 -0
  27. package/dist/connector-ops/attempt-store.js +186 -0
  28. package/dist/connector-ops/attempt-store.js.map +1 -0
  29. package/dist/connector-ops/index.d.ts +5 -0
  30. package/dist/connector-ops/index.d.ts.map +1 -0
  31. package/dist/connector-ops/index.js +5 -0
  32. package/dist/connector-ops/index.js.map +1 -0
  33. package/dist/connector-ops/override-store.d.ts +7 -0
  34. package/dist/connector-ops/override-store.d.ts.map +1 -0
  35. package/dist/connector-ops/override-store.js +123 -0
  36. package/dist/connector-ops/override-store.js.map +1 -0
  37. package/dist/connector-ops/sanitize.d.ts +16 -0
  38. package/dist/connector-ops/sanitize.d.ts.map +1 -0
  39. package/dist/connector-ops/sanitize.js +48 -0
  40. package/dist/connector-ops/sanitize.js.map +1 -0
  41. package/dist/connector-ops/types.d.ts +76 -0
  42. package/dist/connector-ops/types.d.ts.map +1 -0
  43. package/dist/connector-ops/types.js +12 -0
  44. package/dist/connector-ops/types.js.map +1 -0
  45. package/dist/effective-listing.d.ts +11 -0
  46. package/dist/effective-listing.d.ts.map +1 -0
  47. package/dist/effective-listing.js +41 -0
  48. package/dist/effective-listing.js.map +1 -0
  49. package/dist/errors.d.ts +5 -1
  50. package/dist/errors.d.ts.map +1 -1
  51. package/dist/errors.js +10 -3
  52. package/dist/errors.js.map +1 -1
  53. package/dist/execution-target.d.ts +16 -0
  54. package/dist/execution-target.d.ts.map +1 -1
  55. package/dist/execution-target.js +54 -0
  56. package/dist/execution-target.js.map +1 -1
  57. package/dist/index.d.ts +3 -1
  58. package/dist/index.d.ts.map +1 -1
  59. package/dist/index.js +3 -1
  60. package/dist/index.js.map +1 -1
  61. package/dist/magit/magit-pack-service.d.ts +252 -70
  62. package/dist/magit/magit-pack-service.d.ts.map +1 -1
  63. package/dist/magit/magit-pack-service.js +556 -202
  64. package/dist/magit/magit-pack-service.js.map +1 -1
  65. package/dist/magit/pack-to-patchset.d.ts +21 -0
  66. package/dist/magit/pack-to-patchset.d.ts.map +1 -1
  67. package/dist/magit/pack-to-patchset.js +29 -0
  68. package/dist/magit/pack-to-patchset.js.map +1 -1
  69. package/dist/magit/package-catalog-bridge.d.ts +4 -14
  70. package/dist/magit/package-catalog-bridge.d.ts.map +1 -1
  71. package/dist/magit/package-catalog-bridge.js +2 -21
  72. package/dist/magit/package-catalog-bridge.js.map +1 -1
  73. package/dist/mgc-packages.d.ts +4 -3
  74. package/dist/mgc-packages.d.ts.map +1 -1
  75. package/dist/mgc-packages.js +4 -3
  76. package/dist/mgc-packages.js.map +1 -1
  77. package/dist/openapi/openapi.json +1716 -137
  78. package/dist/optional-companion-url.d.ts +72 -0
  79. package/dist/optional-companion-url.d.ts.map +1 -0
  80. package/dist/optional-companion-url.js +148 -0
  81. package/dist/optional-companion-url.js.map +1 -0
  82. package/dist/platform.d.ts +11 -0
  83. package/dist/platform.d.ts.map +1 -1
  84. package/dist/platform.js +77 -2
  85. package/dist/platform.js.map +1 -1
  86. package/dist/routes/catalog.d.ts +4 -0
  87. package/dist/routes/catalog.d.ts.map +1 -0
  88. package/dist/routes/catalog.js +103 -0
  89. package/dist/routes/catalog.js.map +1 -0
  90. package/dist/routes/connector-ops.d.ts +12 -0
  91. package/dist/routes/connector-ops.d.ts.map +1 -0
  92. package/dist/routes/connector-ops.js +160 -0
  93. package/dist/routes/connector-ops.js.map +1 -0
  94. package/dist/routes/memory.d.ts.map +1 -1
  95. package/dist/routes/memory.js +9 -2
  96. package/dist/routes/memory.js.map +1 -1
  97. package/dist/routes/metadata.d.ts.map +1 -1
  98. package/dist/routes/metadata.js +135 -186
  99. package/dist/routes/metadata.js.map +1 -1
  100. package/dist/routes/pipelines.d.ts.map +1 -1
  101. package/dist/routes/pipelines.js +3 -2
  102. package/dist/routes/pipelines.js.map +1 -1
  103. package/openapi/openapi.json +1716 -137
  104. package/package.json +30 -7
package/README.md CHANGED
@@ -33,6 +33,34 @@ MEMORIX_SERVICE_MODE=dev npm run dev # metadata in-memory; durable routes 503
33
33
 
34
34
  Compliance: this process uses **`@x12i/core-service`** (zone port, health, live view, correlation-id).
35
35
 
36
+ ## Magit package catalog
37
+
38
+ Default-on when durable Mongo is configured (`METADATA_MAGIT=0` disables).
39
+
40
+ | Mode | Config |
41
+ |------|--------|
42
+ | **A typed store** | `MAGIT_PACKAGE_STORE_SELECTOR` + `MAGIT_PACKAGE_TYPE_ID` |
43
+ | **B flat catalog** | both unset |
44
+
45
+ Requires `@x12i/magit@2.12.2` (2.12.1 APIs + packaging for `cross-env-smoke`).
46
+
47
+ Ops (provision / verify / recover / backfill / smoke): see
48
+ [documentation/magit-typed-store-runbook.md](../documentation/magit-typed-store-runbook.md).
49
+
50
+ ```bash
51
+ npm run catalog:provision -- --out /secure/magit-store.env
52
+ npm run catalog:verify
53
+ npm run catalog:recover -- --store-id st_… --out /secure/magit-store.env
54
+ npm run catalog:list
55
+ # Magit hosted Mode A proof (packaging in 2.12.2):
56
+ npm run magit:cross-env-smoke
57
+ npm run magit:cross-env-smoke -- --publish
58
+ ```
59
+
60
+ **Consumer token warning:** store grant with `repoIds: []` (empty), not a named repo. Mint on magit.x12i.com → Tokens → Package stores with Repositories unchecked.
61
+
62
+ Env examples: [memorix-service/.env.example](./.env.example). Selector never appears in Studio or `GET /api/diagnostics/scope`.
63
+
36
64
  ## Library exports
37
65
 
38
66
  When embedding the composition root in-process:
@@ -83,8 +111,21 @@ curl -s http://127.0.0.1:5100/api/diagnostics/scope \
83
111
  ### AI-services companions
84
112
 
85
113
  Point memorix-service at FR-compliant processes via env (`FUNCX_URL`, `AI_SKILLS_URL`, `AI_TASKS_URL`, `GRAPH_ENGINE_URL`).
86
- Stack: `AI_SERVICES=1 node scripts/dev-stack.mjs` or `--ai-services`.
87
- Ops: [`.operational/ai-services-get-started.md`](../.operational/ai-services-get-started.md).
114
+ Stack: AI companions are **on by default**; skip with `--no-ai-services` or `AI_SERVICES=0`.
115
+
116
+ ### Vendor pipeline workers (opt-in)
117
+
118
+ Archetype-A HTTP companions invoke via `POST {origin}/pipeline`. Inject **base origin only** (no `/pipeline` path). Soft-skip when URL unset; fail-closed when set (`src/optional-companion-url.ts`).
119
+
120
+ | Suite | Stack flag | Client env |
121
+ |-------|------------|------------|
122
+ | Exellix Apollo + M365 | `--exellix-connectors` / `EXELLIX_CONNECTORS=1` | `EXELLIX_APOLLO_READ_URL`, `EXELLIX_APOLLO_ACTIONS_URL`, `EXELLIX_M365_USER_READ_URL`, `EXELLIX_M365_USER_ACTION_URL` (ports 9711–9722, zone `exellix-connectors`) |
123
+ | Neo security workers | `--neo-connectors` / `NEO_CONNECTORS=1` | `NEO_FIREWALL_URL`, `NEO_XDR_URL`, `NEO_NESSUS_URL`, `NEO_ENTRA_URL`, `NEO_SPLUNK_URL`, `NEO_CROWDSTRIKE_URL` (frozen ports; no zone remap) |
124
+ | Neo status UI | `--neo-status-ui` / `NEO_STATUS_UI=1` | `NEO_STATUS_UI_URL` (:9001) |
125
+
126
+ Optional hard gates: `EXELLIX_CONNECTORS_REQUIRED=1`, `NEO_CONNECTORS_REQUIRED=1`.
127
+
128
+ **Neo packages** ship on GitHub Packages. Local install needs `.npmrc` scope + `NODE_AUTH_TOKEN` (see [`.npmrc.example`](../.npmrc.example)).
88
129
 
89
130
  ### Memory (operator + called-service)
90
131
 
package/dist/app.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAIA,OAAO,OAAO,EAAE,EAAE,KAAK,eAAe,EAAE,MAAM,SAAS,CAAC;AAIxD,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,YAAY,EAClB,MAAM,eAAe,CAAC;AAsBvB,MAAM,MAAM,8BAA8B,GAAG,YAAY,GAAG;IAC1D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B,CAAC;AAEF,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,8BAA8B,GACnC,OAAO,CAAC;IAAE,GAAG,EAAE,eAAe,CAAC;IAAC,QAAQ,EAAE,eAAe,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAuF5E;AAED,MAAM,MAAM,0BAA0B,GAAG,8BAA8B,GAAG;IACxE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,0BAA0B;;;;;GAM7E"}
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAIA,OAAO,OAAO,EAAE,EAAE,KAAK,eAAe,EAAE,MAAM,SAAS,CAAC;AAIxD,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,YAAY,EAClB,MAAM,eAAe,CAAC;AAwBvB,MAAM,MAAM,8BAA8B,GAAG,YAAY,GAAG;IAC1D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B,CAAC;AAEF,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,8BAA8B,GACnC,OAAO,CAAC;IAAE,GAAG,EAAE,eAAe,CAAC;IAAC,QAAQ,EAAE,eAAe,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAyF5E;AAED,MAAM,MAAM,0BAA0B,GAAG,8BAA8B,GAAG;IACxE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,0BAA0B;;;;;GAM7E"}
package/dist/app.js CHANGED
@@ -9,10 +9,12 @@ import { mapErrorToHttp, redactSecrets } from "./errors.js";
9
9
  import { createMemorixPlatform, } from "./platform.js";
10
10
  import { resolveScope } from "./request-scope.js";
11
11
  import { registerMetadataRoutes } from "./routes/metadata.js";
12
+ import { registerCatalogRoutes } from "./routes/catalog.js";
12
13
  import { registerDataRoutes } from "./routes/data.js";
13
14
  import { registerRelationshipRoutes } from "./routes/relationships.js";
14
15
  import { registerMemoryRoutes } from "./routes/memory.js";
15
16
  import { registerConnectorInvocationRoutes } from "./routes/connector-invocations.js";
17
+ import { registerConnectorOpsRoutes } from "./routes/connector-ops.js";
16
18
  import { registerPipelineRoutes } from "./routes/pipelines.js";
17
19
  import { registerJobsRoutes } from "./routes/jobs.js";
18
20
  import { registerOperationsRoutes } from "./routes/operations.js";
@@ -88,10 +90,12 @@ export async function createMemorixServiceApp(opts) {
88
90
  });
89
91
  registerSimulationRoutes(app, simulation);
90
92
  await registerMetadataRoutes(app, platform);
93
+ await registerCatalogRoutes(app, platform);
91
94
  await registerDataRoutes(app, platform);
92
95
  await registerRelationshipRoutes(app, platform);
93
96
  await registerMemoryRoutes(app, platform);
94
97
  await registerConnectorInvocationRoutes(app, platform);
98
+ await registerConnectorOpsRoutes(app, platform);
95
99
  await registerPipelineRoutes(app, platform);
96
100
  await registerJobsRoutes(app, platform);
97
101
  await registerOperationsRoutes(app, platform);
package/dist/app.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Product catalog (M2/M3) — Magit existence via MagitPackService; deployments from env runtime only.
3
+ */
4
+ import type { UnifiedMetadataClient } from "@x12i/memorix-metadata-runtime";
5
+ import { loadGenericConnectorsConfig } from "../generic-connectors.js";
6
+ import type { ConnectorRegistry } from "@x12i/memorix-memory";
7
+ import type { CatalogPackageListItem, MagitPackService } from "../magit/magit-pack-service.js";
8
+ import { type CatalogComponent, type CatalogComponentKind, type CatalogRelease, type MagitCatalogKind } from "./types.js";
9
+ export type CatalogServiceDeps = {
10
+ magit: MagitPackService;
11
+ metadata: UnifiedMetadataClient;
12
+ connectorRegistry: ConnectorRegistry;
13
+ genericConnectors?: ReturnType<typeof loadGenericConnectorsConfig>;
14
+ };
15
+ export type ListCatalogOpts = {
16
+ kind?: CatalogComponentKind | "all";
17
+ publisher?: string;
18
+ q?: string;
19
+ includeReleases?: boolean;
20
+ includeDeployments?: boolean;
21
+ orgId?: string | null;
22
+ agentIds?: string[];
23
+ maxReleasesPerComponent?: number;
24
+ };
25
+ export declare function createCatalogService(deps: CatalogServiceDeps): {
26
+ listComponents: (opts?: ListCatalogOpts) => Promise<{
27
+ packageTypeId: string | null;
28
+ typedStoreConfigured: boolean;
29
+ components: CatalogComponent[];
30
+ note: string;
31
+ }>;
32
+ getComponent: (kind: string, id: string, opts?: Omit<ListCatalogOpts, "kind">) => Promise<CatalogComponent>;
33
+ listReleases: (kind: string, id: string, opts?: {
34
+ publisher?: string;
35
+ maxCount?: number;
36
+ }) => Promise<{
37
+ packageTypeId: string | null;
38
+ kind: CatalogComponentKind;
39
+ id: string;
40
+ releases: CatalogRelease[];
41
+ }>;
42
+ listMagitVersionRows: (opts?: {
43
+ kind?: MagitCatalogKind;
44
+ publisher?: string;
45
+ }) => Promise<CatalogPackageListItem[]>;
46
+ };
47
+ export type CatalogService = ReturnType<typeof createCatalogService>;
48
+ //# sourceMappingURL=catalog-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog-service.d.ts","sourceRoot":"","sources":["../../src/catalog/catalog-service.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAM5E,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,KAAK,EACV,sBAAsB,EACtB,gBAAgB,EAEjB,MAAM,gCAAgC,CAAC;AAKxC,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EAGzB,KAAK,cAAc,EAKnB,KAAK,gBAAgB,EACtB,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,gBAAgB,CAAC;IACxB,QAAQ,EAAE,qBAAqB,CAAC;IAChC,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,iBAAiB,CAAC,EAAE,UAAU,CAAC,OAAO,2BAA2B,CAAC,CAAC;CACpE,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,CAAC,EAAE,oBAAoB,GAAG,KAAK,CAAC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAClC,CAAC;AAwHF,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,kBAAkB;4BAgNnD,eAAe,KACpB,OAAO,CAAC;QACT,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;QAC7B,oBAAoB,EAAE,OAAO,CAAC;QAC9B,UAAU,EAAE,gBAAgB,EAAE,CAAC;QAC/B,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;yBA+CM,MAAM,MACR,MAAM,SACJ,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,KAClC,OAAO,CAAC,gBAAgB,CAAC;yBAkDpB,MAAM,MACR,MAAM,SACH;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,KAC/C,OAAO,CAAC;QACT,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;QAC7B,IAAI,EAAE,oBAAoB,CAAC;QAC3B,EAAE,EAAE,MAAM,CAAC;QACX,QAAQ,EAAE,cAAc,EAAE,CAAC;KAC5B,CAAC;kCAoCyC;QACzC,IAAI,CAAC,EAAE,gBAAgB,CAAC;QACxB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,KAAG,OAAO,CAAC,sBAAsB,EAAE,CAAC;EAiBtC;AAED,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
@@ -0,0 +1,397 @@
1
+ import { resolveConfiguredAiServiceOrigins, resolveAiServiceOriginUrl, } from "../ai-services/config.js";
2
+ import { listUnifiedConnectors } from "../connector-catalog.js";
3
+ import { loadGenericConnectorsConfig } from "../generic-connectors.js";
4
+ import { resolveMagitTypedStoreConfig, } from "../magit/magit-pack-service.js";
5
+ import { ServiceError } from "../errors.js";
6
+ import { isCatalogComponentKind, isMagitCatalogKind, MAGIT_CATALOG_KINDS, } from "./types.js";
7
+ function packageTypeId() {
8
+ try {
9
+ return resolveMagitTypedStoreConfig()?.packageTypeId ?? null;
10
+ }
11
+ catch {
12
+ return process.env.MAGIT_PACKAGE_TYPE_ID?.trim() || null;
13
+ }
14
+ }
15
+ function storeConfigSafe() {
16
+ try {
17
+ return resolveMagitTypedStoreConfig();
18
+ }
19
+ catch {
20
+ return null;
21
+ }
22
+ }
23
+ function toPublisher(p) {
24
+ if (!p?.id)
25
+ return null;
26
+ return {
27
+ id: p.id,
28
+ appId: p.appId,
29
+ workspaceId: p.workspaceId,
30
+ displayName: p.displayName,
31
+ };
32
+ }
33
+ function latestByCreatedAt(rows) {
34
+ if (rows.length === 0)
35
+ return null;
36
+ return [...rows].sort((a, b) => (b.createdAt || "").localeCompare(a.createdAt || ""))[0];
37
+ }
38
+ function releaseSummary(row) {
39
+ return {
40
+ version: row.version,
41
+ checksum: row.checksum,
42
+ message: row.message,
43
+ createdAt: row.createdAt,
44
+ mode: row.mode,
45
+ };
46
+ }
47
+ function groupMagitRows(items, packageTypeIdValue) {
48
+ const byKey = new Map();
49
+ for (const item of items) {
50
+ if (!isMagitCatalogKind(item.kind))
51
+ continue;
52
+ const key = `${item.kind}::${item.id}`;
53
+ const list = byKey.get(key) ?? [];
54
+ list.push(item);
55
+ byKey.set(key, list);
56
+ }
57
+ const components = [];
58
+ for (const [, rows] of byKey) {
59
+ const latest = latestByCreatedAt(rows);
60
+ const kind = latest.kind;
61
+ const associations = [];
62
+ if (latest.associations?.connectorIds) {
63
+ for (const id of latest.associations.connectorIds) {
64
+ associations.push({ kind: "connector", id });
65
+ }
66
+ }
67
+ if (latest.associations?.serviceIds) {
68
+ for (const id of latest.associations.serviceIds) {
69
+ associations.push({ kind: "service", id });
70
+ }
71
+ }
72
+ components.push({
73
+ schema: "memorix-catalog/v1",
74
+ packageTypeId: packageTypeIdValue,
75
+ publisher: toPublisher(latest.publisher),
76
+ kind,
77
+ id: latest.id,
78
+ associations: associations.length ? associations : undefined,
79
+ latestRelease: releaseSummary(latest),
80
+ });
81
+ }
82
+ return components.sort((a, b) => `${a.kind}:${a.id}`.localeCompare(`${b.kind}:${b.id}`));
83
+ }
84
+ function matchQ(c, q) {
85
+ if (!q?.trim())
86
+ return true;
87
+ const needle = q.trim().toLowerCase();
88
+ return (c.id.toLowerCase().includes(needle) ||
89
+ (c.name?.toLowerCase().includes(needle) ?? false) ||
90
+ (c.publisher?.id.toLowerCase().includes(needle) ?? false));
91
+ }
92
+ async function mapPool(items, concurrency, fn) {
93
+ const out = new Array(items.length);
94
+ let next = 0;
95
+ async function worker() {
96
+ for (;;) {
97
+ const i = next++;
98
+ if (i >= items.length)
99
+ return;
100
+ out[i] = await fn(items[i]);
101
+ }
102
+ }
103
+ const n = Math.min(concurrency, Math.max(items.length, 1));
104
+ await Promise.all(Array.from({ length: n }, () => worker()));
105
+ return out;
106
+ }
107
+ export function createCatalogService(deps) {
108
+ async function listMagitKind(kind, opts) {
109
+ return deps.magit.listPackages({
110
+ kind,
111
+ id: opts.id,
112
+ publisher: opts.publisher,
113
+ maxCount: 500,
114
+ });
115
+ }
116
+ async function listMagitComponents(kinds, opts) {
117
+ const pt = packageTypeId();
118
+ const allItems = [];
119
+ for (const kind of kinds) {
120
+ const items = await listMagitKind(kind, opts);
121
+ allItems.push(...items);
122
+ }
123
+ return groupMagitRows(allItems, pt);
124
+ }
125
+ function listPipelineComponents(agentIds) {
126
+ const pt = packageTypeId();
127
+ const effective = deps.metadata.resolveEffective(agentIds);
128
+ const entries = (effective.effective ?? []).filter((e) => e.kind === "pipelines");
129
+ return entries.map((e) => {
130
+ const d = e.definition;
131
+ const id = String(d.id ?? d.pipelineId ?? e.id).trim();
132
+ const name = typeof d.name === "string" ? d.name : id;
133
+ return {
134
+ schema: "memorix-catalog/v1",
135
+ packageTypeId: pt,
136
+ publisher: null,
137
+ kind: "pipeline",
138
+ id,
139
+ name,
140
+ };
141
+ });
142
+ }
143
+ function listRuntimeServiceComponents() {
144
+ const pt = packageTypeId();
145
+ return resolveConfiguredAiServiceOrigins().map((o) => {
146
+ const url = o.url;
147
+ return {
148
+ schema: "memorix-catalog/v1",
149
+ packageTypeId: pt,
150
+ publisher: null,
151
+ kind: "runtime-service",
152
+ id: o.aiServiceType,
153
+ name: `${o.aiServiceType} origin`,
154
+ latestRelease: undefined,
155
+ };
156
+ });
157
+ }
158
+ async function deploymentsFor(component, orgId, agentIds) {
159
+ if (!orgId?.trim())
160
+ return undefined;
161
+ const org = orgId.trim();
162
+ if (component.kind === "agent") {
163
+ const ledger = deps.metadata.getLedger();
164
+ const latest = [...ledger]
165
+ .reverse()
166
+ .find((e) => e.agentId === component.id);
167
+ const raw = deps.metadata.getRaw(component.id);
168
+ const installed = Boolean(raw.pack);
169
+ if (!installed && !latest) {
170
+ return [{ orgId: org, status: "missing" }];
171
+ }
172
+ return [
173
+ {
174
+ orgId: org,
175
+ status: "installed",
176
+ installedVersion: latest?.magitCommit ??
177
+ latest?.magitRelease ??
178
+ component.latestRelease?.version,
179
+ lastSeen: latest?.installedAt,
180
+ notes: latest
181
+ ? `source=${latest.source ?? "install"}`
182
+ : "installed without ledger row",
183
+ },
184
+ ];
185
+ }
186
+ if (component.kind === "service") {
187
+ const effective = deps.metadata.resolveEffective(agentIds.length ? agentIds : [component.id]);
188
+ const found = (effective.effective ?? []).some((e) => e.kind === "services" &&
189
+ (e.id === component.id ||
190
+ String(e.definition.id ?? "") === component.id));
191
+ return [
192
+ {
193
+ orgId: org,
194
+ status: found ? "installed" : "missing",
195
+ },
196
+ ];
197
+ }
198
+ if (component.kind === "connector") {
199
+ const unified = await listUnifiedConnectors({
200
+ connectorRegistry: deps.connectorRegistry,
201
+ genericConnectors: deps.genericConnectors ?? loadGenericConnectorsConfig(),
202
+ });
203
+ const hit = unified.find((c) => c.id === component.id);
204
+ if (!hit)
205
+ return [{ orgId: org, status: "missing" }];
206
+ return [
207
+ {
208
+ orgId: org,
209
+ status: "configured",
210
+ endpoint: hit.hostBaseUrl,
211
+ health: hit.unavailableReason ? "down" : "up",
212
+ notes: hit.unavailableReason ?? undefined,
213
+ },
214
+ ];
215
+ }
216
+ if (component.kind === "pipeline") {
217
+ const effective = deps.metadata.resolveEffective(agentIds);
218
+ const found = (effective.effective ?? []).some((e) => e.kind === "pipelines" &&
219
+ (e.id === component.id ||
220
+ String(e.definition.id ?? e.definition.pipelineId ?? "") ===
221
+ component.id));
222
+ return [{ orgId: org, status: found ? "installed" : "missing" }];
223
+ }
224
+ if (component.kind === "runtime-service") {
225
+ const url = resolveAiServiceOriginUrl(component.id);
226
+ if (!url) {
227
+ return [{ orgId: org, status: "missing", health: "unknown" }];
228
+ }
229
+ return [
230
+ {
231
+ orgId: org,
232
+ status: "reachable",
233
+ endpoint: url,
234
+ health: "unknown",
235
+ notes: "URL configured (not probed)",
236
+ },
237
+ ];
238
+ }
239
+ return undefined;
240
+ }
241
+ async function attachExtras(components, opts) {
242
+ let out = components;
243
+ if (opts.includeReleases) {
244
+ const max = opts.maxReleasesPerComponent ?? 20;
245
+ out = await mapPool(out, 4, async (c) => {
246
+ if (!isMagitCatalogKind(c.kind))
247
+ return c;
248
+ try {
249
+ const versions = await deps.magit.listPackages({
250
+ kind: c.kind,
251
+ id: c.id,
252
+ maxCount: max,
253
+ publisher: opts.publisher,
254
+ });
255
+ const sorted = [...versions].sort((a, b) => (b.createdAt || "").localeCompare(a.createdAt || ""));
256
+ const latest = sorted[0];
257
+ return {
258
+ ...c,
259
+ latestRelease: latest ? releaseSummary(latest) : c.latestRelease,
260
+ };
261
+ }
262
+ catch {
263
+ return c;
264
+ }
265
+ });
266
+ }
267
+ if (opts.includeDeployments && opts.orgId?.trim()) {
268
+ const agentIds = opts.agentIds ?? [];
269
+ out = await mapPool(out, 6, async (c) => {
270
+ try {
271
+ const deployments = await deploymentsFor(c, opts.orgId, agentIds);
272
+ return deployments ? { ...c, deployments } : c;
273
+ }
274
+ catch {
275
+ return c;
276
+ }
277
+ });
278
+ }
279
+ return out;
280
+ }
281
+ async function listComponents(opts = {}) {
282
+ const kind = opts.kind ?? "all";
283
+ const store = storeConfigSafe();
284
+ const components = [];
285
+ if (kind === "all" || isMagitCatalogKind(kind)) {
286
+ const kinds = kind === "all" ? [...MAGIT_CATALOG_KINDS] : [kind];
287
+ // Store path requires kind per list call (already one kind at a time).
288
+ components.push(...(await listMagitComponents(kinds, {
289
+ publisher: opts.publisher,
290
+ })));
291
+ }
292
+ if (kind === "all" || kind === "pipeline") {
293
+ components.push(...listPipelineComponents(opts.agentIds ?? []));
294
+ }
295
+ if (kind === "all" || kind === "runtime-service") {
296
+ components.push(...listRuntimeServiceComponents());
297
+ }
298
+ let filtered = components.filter((c) => matchQ(c, opts.q));
299
+ if (opts.publisher?.trim()) {
300
+ const pub = opts.publisher.trim();
301
+ filtered = filtered.filter((c) => c.kind === "pipeline" ||
302
+ c.kind === "runtime-service" ||
303
+ c.publisher?.id === pub);
304
+ }
305
+ const withExtras = await attachExtras(filtered, opts);
306
+ return {
307
+ packageTypeId: packageTypeId(),
308
+ typedStoreConfigured: Boolean(store),
309
+ components: withExtras,
310
+ note: store
311
+ ? "Existence from Magit typed store opened by service config; deployments from this environment when requested."
312
+ : "Existence from Magit flat catalog; set MAGIT_PACKAGE_STORE_SELECTOR + MAGIT_PACKAGE_TYPE_ID for typed store. Deployments from this environment when requested.",
313
+ };
314
+ }
315
+ async function getComponent(kind, id, opts = {}) {
316
+ if (!isCatalogComponentKind(kind)) {
317
+ throw new ServiceError("VALIDATION", `unsupported catalog kind: ${kind}`, 400);
318
+ }
319
+ const idTrim = id.trim();
320
+ if (!idTrim)
321
+ throw new ServiceError("VALIDATION", "id required", 400);
322
+ if (isMagitCatalogKind(kind)) {
323
+ const rows = await listMagitKind(kind, {
324
+ id: idTrim,
325
+ publisher: opts.publisher,
326
+ });
327
+ if (rows.length === 0) {
328
+ throw new ServiceError("NOT_FOUND", `catalog component ${kind}/${idTrim} not found`, 404);
329
+ }
330
+ let [component] = groupMagitRows(rows, packageTypeId());
331
+ if (!component) {
332
+ throw new ServiceError("NOT_FOUND", `catalog component ${kind}/${idTrim} not found`, 404);
333
+ }
334
+ [component] = await attachExtras([component], {
335
+ ...opts,
336
+ includeReleases: opts.includeReleases ?? true,
337
+ });
338
+ return component;
339
+ }
340
+ const listed = await listComponents({
341
+ ...opts,
342
+ kind,
343
+ });
344
+ const hit = listed.components.find((c) => c.id === idTrim);
345
+ if (!hit) {
346
+ throw new ServiceError("NOT_FOUND", `catalog component ${kind}/${idTrim} not found`, 404);
347
+ }
348
+ return hit;
349
+ }
350
+ async function listReleases(kind, id, opts) {
351
+ if (!isMagitCatalogKind(kind)) {
352
+ throw new ServiceError("VALIDATION", `releases only available for Magit package kinds (got ${kind})`, 400);
353
+ }
354
+ const idTrim = id.trim();
355
+ if (!idTrim)
356
+ throw new ServiceError("VALIDATION", "id required", 400);
357
+ const pt = packageTypeId();
358
+ const items = await deps.magit.listPackages({
359
+ kind,
360
+ id: idTrim,
361
+ publisher: opts?.publisher,
362
+ maxCount: opts?.maxCount ?? 100,
363
+ });
364
+ const releases = [...items]
365
+ .sort((a, b) => (b.createdAt || "").localeCompare(a.createdAt || ""))
366
+ .map((row) => ({
367
+ ...releaseSummary(row),
368
+ packageTypeId: pt,
369
+ publisher: toPublisher(row.publisher),
370
+ kind: kind,
371
+ id: idTrim,
372
+ associations: undefined,
373
+ }));
374
+ return {
375
+ packageTypeId: pt,
376
+ kind: kind,
377
+ id: idTrim,
378
+ releases,
379
+ };
380
+ }
381
+ /** Flatten Magit versions to catalog-style rows for packages source=catalog. */
382
+ async function listMagitVersionRows(opts) {
383
+ const kinds = opts?.kind ? [opts.kind] : [...MAGIT_CATALOG_KINDS];
384
+ const all = [];
385
+ for (const kind of kinds) {
386
+ all.push(...(await listMagitKind(kind, { publisher: opts?.publisher })));
387
+ }
388
+ return all;
389
+ }
390
+ return {
391
+ listComponents,
392
+ getComponent,
393
+ listReleases,
394
+ listMagitVersionRows,
395
+ };
396
+ }
397
+ //# sourceMappingURL=catalog-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog-service.js","sourceRoot":"","sources":["../../src/catalog/catalog-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Pure helpers for GET /api/metadata/packages ?source= selection.
3
+ * Mirrors packages-list-shape.test.ts contracts.
4
+ */
5
+ export type PackageListKind = "agent" | "connector" | "service";
6
+ export type CatalogVersionRow = {
7
+ kind: PackageListKind;
8
+ id: string;
9
+ version: string;
10
+ createdAt: string;
11
+ checksum: string | null;
12
+ };
13
+ export type PackableEntry = {
14
+ kind: PackageListKind;
15
+ id: string;
16
+ agentId: string;
17
+ label?: string;
18
+ };
19
+ export type CollapsedCatalogRow = {
20
+ kind: PackageListKind;
21
+ id: string;
22
+ agentId: string;
23
+ version: string;
24
+ };
25
+ export declare function collapseCatalogVersions(items: CatalogVersionRow[]): CollapsedCatalogRow[];
26
+ export declare function selectPackagesBySource(opts: {
27
+ source: "catalog" | "packable" | "all";
28
+ packages: CollapsedCatalogRow[];
29
+ packable: PackableEntry[];
30
+ }): {
31
+ packages: unknown[];
32
+ packable: PackableEntry[];
33
+ };
34
+ export declare function parsePackagesSource(raw: string | undefined): "catalog" | "packable" | "all";
35
+ //# sourceMappingURL=package-list-source.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-list-source.d.ts","sourceRoot":"","sources":["../../src/catalog/package-list-source.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,WAAW,GAAG,SAAS,CAAC;AAEhE,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,eAAe,CAAC;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,eAAe,CAAC;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,eAAe,CAAC;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,iBAAiB,EAAE,GACzB,mBAAmB,EAAE,CAuBvB;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE;IAC3C,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,KAAK,CAAC;IACvC,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAChC,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC3B,GAAG;IAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;IAAC,QAAQ,EAAE,aAAa,EAAE,CAAA;CAAE,CAcrD;AAED,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,MAAM,GAAG,SAAS,GACtB,SAAS,GAAG,UAAU,GAAG,KAAK,CAIhC"}