@exellix/catalox-graphs 1.2.1 → 1.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +13 -0
- package/README.md +8 -6
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/stores/graph-document-loader.d.ts +23 -0
- package/dist/stores/graph-document-loader.d.ts.map +1 -0
- package/dist/stores/graph-document-loader.js +29 -0
- package/dist/stores/graph-document-loader.js.map +1 -0
- package/docs/STUDIO_INTEGRATION.md +61 -0
- package/package.json +4 -2
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## 1.2.2 — 2026-06-23
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
|
|
7
|
+
- **`createCataloxGraphDocumentLoader`** — Catalox-first `loadGraph` for execute/compile paths (same catalog Graph Studio saves to).
|
|
8
|
+
- **`createExecuteGraphLoader`** — alias for factory and matrix workers.
|
|
9
|
+
- Tests for loader precedence (Catalox wins over Mongo fallback).
|
|
10
|
+
|
|
11
|
+
### Changed
|
|
12
|
+
|
|
13
|
+
- README and `docs/STUDIO_INTEGRATION.md`: Catalox `graphs` catalog is the single authoritative store for executable documents; Mongo `exellix.graphs` is matrix id-registry only.
|
package/README.md
CHANGED
|
@@ -1,15 +1,17 @@
|
|
|
1
|
-
# @
|
|
1
|
+
# @exellix/catalox-graphs
|
|
2
2
|
|
|
3
|
-
Shared Catalox data tier for **graphs-studio** and **jobs-ui**: graph catalog CRUD, version checkpoints, templates,
|
|
3
|
+
Shared Catalox data tier for **graphs-studio**, **jobs-api**, and **jobs-ui**: graph catalog CRUD, version checkpoints, templates, execute-time loading, HTTP proxy routes, browser client, and `CataloxGraphPicker`.
|
|
4
|
+
|
|
5
|
+
**Authoritative store:** Catalox catalog `graphs` (full `AuthoringGraphDocument`). Mongo `exellix.graphs` is matrix id-registry only.
|
|
4
6
|
|
|
5
7
|
## Exports
|
|
6
8
|
|
|
7
9
|
| Import | Use |
|
|
8
10
|
|--------|-----|
|
|
9
|
-
| `@
|
|
10
|
-
| `@
|
|
11
|
-
| `@
|
|
12
|
-
| `@
|
|
11
|
+
| `@exellix/catalox-graphs` | Server stores, `createCataloxGraphDocumentLoader` / `createExecuteGraphLoader`, readiness |
|
|
12
|
+
| `@exellix/catalox-graphs/http` | Fastify route registrar (`/api/catalox/*`) |
|
|
13
|
+
| `@exellix/catalox-graphs/browser` | Browser fetch client |
|
|
14
|
+
| `@exellix/catalox-graphs/react` | `CataloxGraphPicker`, `useCataloxGraphs` |
|
|
13
15
|
|
|
14
16
|
## Env
|
|
15
17
|
|
package/dist/index.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ export { getCataloxBound, resetCataloxRuntimeCache } from './client/catalox-runt
|
|
|
4
4
|
export { listCatalogItems, getCatalogItem, upsertCatalogItem, deleteCatalogItem, type CatalogListResponse, type CatalogGetResponse, type CatalogWriteResponse, } from './client/catalox-api.js';
|
|
5
5
|
export { probeCataloxReady, invalidateCataloxReadyCache, type CataloxReadyStatus } from './readiness.js';
|
|
6
6
|
export { listGraphsFromCatalox, loadGraphFromCatalox, saveGraphToCatalox, deleteGraphFromCatalox, listCompatibleGraphsFromCatalox, graphProjectSummaryFromItem, buildGraphProjectDocument, graphToCatalogPayload, type CompatibleGraphFromCatalox, } from './stores/graph-store.js';
|
|
7
|
+
export { createCataloxGraphDocumentLoader, createExecuteGraphLoader, type CreateCataloxGraphDocumentLoaderOptions, type GraphDocumentLoaderLike, } from './stores/graph-document-loader.js';
|
|
7
8
|
export { saveGraphVersionToCatalox, loadGraphVersionFromCatalox, listGraphVersionsFromCatalox, deleteGraphVersionFromCatalox, pruneGraphVersionsBeyondLimit, graphVersionItemId, parseGraphVersionItemId, } from './stores/graph-version-store.js';
|
|
8
9
|
export { listGraphTemplatesFromCatalox, getGraphTemplateFromCatalox, saveGraphTemplateToCatalox, deleteGraphTemplateFromCatalox, type GraphTemplateSummary, } from './stores/graph-template-store.js';
|
|
9
10
|
export { loadConceptFromCatalox, saveConceptToCatalox, deleteConceptFromCatalox, } from './stores/concept-store.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACrG,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,gBAAgB,EAChB,kBAAkB,EAClB,KAAK,qBAAqB,GAC3B,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AACxF,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,GAC1B,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,KAAK,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEzG,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,EACtB,+BAA+B,EAC/B,2BAA2B,EAC3B,yBAAyB,EACzB,qBAAqB,EACrB,KAAK,0BAA0B,GAChC,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,yBAAyB,EACzB,2BAA2B,EAC3B,4BAA4B,EAC5B,6BAA6B,EAC7B,6BAA6B,EAC7B,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EACL,6BAA6B,EAC7B,2BAA2B,EAC3B,0BAA0B,EAC1B,8BAA8B,EAC9B,KAAK,oBAAoB,GAC1B,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,wBAAwB,GACzB,MAAM,2BAA2B,CAAC;AAEnC,YAAY,EACV,mBAAmB,EACnB,oBAAoB,EACpB,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,0BAA0B,EAAE,KAAK,iCAAiC,EAAE,MAAM,2BAA2B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACrG,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,gBAAgB,EAChB,kBAAkB,EAClB,KAAK,qBAAqB,GAC3B,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AACxF,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,GAC1B,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,KAAK,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEzG,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,EACtB,+BAA+B,EAC/B,2BAA2B,EAC3B,yBAAyB,EACzB,qBAAqB,EACrB,KAAK,0BAA0B,GAChC,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,gCAAgC,EAChC,wBAAwB,EACxB,KAAK,uCAAuC,EAC5C,KAAK,uBAAuB,GAC7B,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EACL,yBAAyB,EACzB,2BAA2B,EAC3B,4BAA4B,EAC5B,6BAA6B,EAC7B,6BAA6B,EAC7B,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EACL,6BAA6B,EAC7B,2BAA2B,EAC3B,0BAA0B,EAC1B,8BAA8B,EAC9B,KAAK,oBAAoB,GAC1B,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,wBAAwB,GACzB,MAAM,2BAA2B,CAAC;AAEnC,YAAY,EACV,mBAAmB,EACnB,oBAAoB,EACpB,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,0BAA0B,EAAE,KAAK,iCAAiC,EAAE,MAAM,2BAA2B,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -4,6 +4,7 @@ export { getCataloxBound, resetCataloxRuntimeCache } from './client/catalox-runt
|
|
|
4
4
|
export { listCatalogItems, getCatalogItem, upsertCatalogItem, deleteCatalogItem, } from './client/catalox-api.js';
|
|
5
5
|
export { probeCataloxReady, invalidateCataloxReadyCache } from './readiness.js';
|
|
6
6
|
export { listGraphsFromCatalox, loadGraphFromCatalox, saveGraphToCatalox, deleteGraphFromCatalox, listCompatibleGraphsFromCatalox, graphProjectSummaryFromItem, buildGraphProjectDocument, graphToCatalogPayload, } from './stores/graph-store.js';
|
|
7
|
+
export { createCataloxGraphDocumentLoader, createExecuteGraphLoader, } from './stores/graph-document-loader.js';
|
|
7
8
|
export { saveGraphVersionToCatalox, loadGraphVersionFromCatalox, listGraphVersionsFromCatalox, deleteGraphVersionFromCatalox, pruneGraphVersionsBeyondLimit, graphVersionItemId, parseGraphVersionItemId, } from './stores/graph-version-store.js';
|
|
8
9
|
export { listGraphTemplatesFromCatalox, getGraphTemplateFromCatalox, saveGraphTemplateToCatalox, deleteGraphTemplateFromCatalox, } from './stores/graph-template-store.js';
|
|
9
10
|
export { loadConceptFromCatalox, saveConceptToCatalox, deleteConceptFromCatalox, } from './stores/concept-store.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACrG,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,gBAAgB,EAChB,kBAAkB,GAEnB,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AACxF,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,iBAAiB,GAIlB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,iBAAiB,EAAE,2BAA2B,EAA2B,MAAM,gBAAgB,CAAC;AAEzG,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,EACtB,+BAA+B,EAC/B,2BAA2B,EAC3B,yBAAyB,EACzB,qBAAqB,GAEtB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,yBAAyB,EACzB,2BAA2B,EAC3B,4BAA4B,EAC5B,6BAA6B,EAC7B,6BAA6B,EAC7B,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EACL,6BAA6B,EAC7B,2BAA2B,EAC3B,0BAA0B,EAC1B,8BAA8B,GAE/B,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,wBAAwB,GACzB,MAAM,2BAA2B,CAAC;AAWnC,OAAO,EAAE,0BAA0B,EAA0C,MAAM,2BAA2B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACrG,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,gBAAgB,EAChB,kBAAkB,GAEnB,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AACxF,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,iBAAiB,GAIlB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,iBAAiB,EAAE,2BAA2B,EAA2B,MAAM,gBAAgB,CAAC;AAEzG,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,EACtB,+BAA+B,EAC/B,2BAA2B,EAC3B,yBAAyB,EACzB,qBAAqB,GAEtB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,gCAAgC,EAChC,wBAAwB,GAGzB,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EACL,yBAAyB,EACzB,2BAA2B,EAC3B,4BAA4B,EAC5B,6BAA6B,EAC7B,6BAA6B,EAC7B,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EACL,6BAA6B,EAC7B,2BAA2B,EAC3B,0BAA0B,EAC1B,8BAA8B,GAE/B,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,wBAAwB,GACzB,MAAM,2BAA2B,CAAC;AAWnC,OAAO,EAAE,0BAA0B,EAA0C,MAAM,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { CataloxBound } from '@x12i/catalox/embedder';
|
|
2
|
+
/** Minimal loader surface shared with jobs-db {@link GraphDocumentLoader}. */
|
|
3
|
+
export type GraphDocumentLoaderLike = {
|
|
4
|
+
loadGraph(graphId: string): Promise<unknown>;
|
|
5
|
+
};
|
|
6
|
+
export type CreateCataloxGraphDocumentLoaderOptions = {
|
|
7
|
+
bound?: CataloxBound;
|
|
8
|
+
/**
|
|
9
|
+
* Optional fallback when the graph id is absent from Catalox.
|
|
10
|
+
* Not used when Catalox returns a graph — authoritative source is always Catalox when present.
|
|
11
|
+
*/
|
|
12
|
+
fallback?: GraphDocumentLoaderLike;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Loads executable graph documents from the Catalox `graphs` catalog — same source Graph Studio saves to.
|
|
16
|
+
*
|
|
17
|
+
* Mongo `exellix.graphs` config rows (matrix metadata) are not AuthoringGraphDocuments and must not
|
|
18
|
+
* be used as the primary execution source.
|
|
19
|
+
*/
|
|
20
|
+
export declare function createCataloxGraphDocumentLoader(options?: CreateCataloxGraphDocumentLoaderOptions): GraphDocumentLoaderLike;
|
|
21
|
+
/** Alias for factory/matrix execute paths — same Catalox-first loader. */
|
|
22
|
+
export declare const createExecuteGraphLoader: typeof createCataloxGraphDocumentLoader;
|
|
23
|
+
//# sourceMappingURL=graph-document-loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph-document-loader.d.ts","sourceRoot":"","sources":["../../src/stores/graph-document-loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAI3D,8EAA8E;AAC9E,MAAM,MAAM,uBAAuB,GAAG;IACpC,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC9C,CAAC;AAEF,MAAM,MAAM,uCAAuC,GAAG;IACpD,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB;;;OAGG;IACH,QAAQ,CAAC,EAAE,uBAAuB,CAAC;CACpC,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,gCAAgC,CAC9C,OAAO,GAAE,uCAA4C,GACpD,uBAAuB,CAkBzB;AAED,0EAA0E;AAC1E,eAAO,MAAM,wBAAwB,yCAAmC,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { getCataloxBound } from '../client/catalox-runtime.js';
|
|
2
|
+
import { loadGraphFromCatalox } from './graph-store.js';
|
|
3
|
+
/**
|
|
4
|
+
* Loads executable graph documents from the Catalox `graphs` catalog — same source Graph Studio saves to.
|
|
5
|
+
*
|
|
6
|
+
* Mongo `exellix.graphs` config rows (matrix metadata) are not AuthoringGraphDocuments and must not
|
|
7
|
+
* be used as the primary execution source.
|
|
8
|
+
*/
|
|
9
|
+
export function createCataloxGraphDocumentLoader(options = {}) {
|
|
10
|
+
return {
|
|
11
|
+
async loadGraph(graphId) {
|
|
12
|
+
const bound = options.bound ?? (await getCataloxBound());
|
|
13
|
+
const fromCatalox = await loadGraphFromCatalox(graphId, { bound });
|
|
14
|
+
if (fromCatalox.ok && fromCatalox.graph != null) {
|
|
15
|
+
return fromCatalox.graph;
|
|
16
|
+
}
|
|
17
|
+
if (options.fallback) {
|
|
18
|
+
return options.fallback.loadGraph(graphId);
|
|
19
|
+
}
|
|
20
|
+
const message = !fromCatalox.ok && 'error' in fromCatalox && fromCatalox.error
|
|
21
|
+
? fromCatalox.error
|
|
22
|
+
: `Graph "${graphId}" not found in Catalox graphs catalog`;
|
|
23
|
+
throw new Error(message);
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
/** Alias for factory/matrix execute paths — same Catalox-first loader. */
|
|
28
|
+
export const createExecuteGraphLoader = createCataloxGraphDocumentLoader;
|
|
29
|
+
//# sourceMappingURL=graph-document-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph-document-loader.js","sourceRoot":"","sources":["../../src/stores/graph-document-loader.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAgBxD;;;;;GAKG;AACH,MAAM,UAAU,gCAAgC,CAC9C,UAAmD,EAAE;IAErD,OAAO;QACL,KAAK,CAAC,SAAS,CAAC,OAAe;YAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,CAAC,MAAM,eAAe,EAAE,CAAC,CAAC;YACzD,MAAM,WAAW,GAAG,MAAM,oBAAoB,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YACnE,IAAI,WAAW,CAAC,EAAE,IAAI,WAAW,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;gBAChD,OAAO,WAAW,CAAC,KAAK,CAAC;YAC3B,CAAC;YACD,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;gBACrB,OAAO,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YAC7C,CAAC;YACD,MAAM,OAAO,GACX,CAAC,WAAW,CAAC,EAAE,IAAI,OAAO,IAAI,WAAW,IAAI,WAAW,CAAC,KAAK;gBAC5D,CAAC,CAAC,WAAW,CAAC,KAAK;gBACnB,CAAC,CAAC,UAAU,OAAO,uCAAuC,CAAC;YAC/D,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC;KACF,CAAC;AACJ,CAAC;AAED,0EAA0E;AAC1E,MAAM,CAAC,MAAM,wBAAwB,GAAG,gCAAgC,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# graphs-studio — Catalox data tier integration
|
|
2
|
+
|
|
3
|
+
**Single source of truth:** executable graph documents live in the Catalox `graphs` catalog only.
|
|
4
|
+
Do not duplicate save/load logic or persist full graphs to Mongo `exellix.graphs` (matrix id-registry only).
|
|
5
|
+
|
|
6
|
+
## Package
|
|
7
|
+
|
|
8
|
+
`@exellix/catalox-graphs` — use this for **all** graph catalog CRUD, listing, and execute-time loading.
|
|
9
|
+
|
|
10
|
+
## Required studio integration
|
|
11
|
+
|
|
12
|
+
| Concern | Use from `@exellix/catalox-graphs` | Do not |
|
|
13
|
+
|---------|-----------------------------------|--------|
|
|
14
|
+
| Save / load graph | `saveGraphToCatalox`, `loadGraphFromCatalox` | Inline Catalox SDK calls, duplicate HTTP |
|
|
15
|
+
| List / picker | `listGraphsFromCatalox`, `CataloxGraphPicker`, `useCataloxGraphs` | Separate graph list API |
|
|
16
|
+
| Execute / compile load | `createCataloxGraphDocumentLoader` or `createExecuteGraphLoader` | Mongo `exellix.graphs` documents |
|
|
17
|
+
| Versions / templates | `saveGraphVersionToCatalox`, `listGraphTemplatesFromCatalox`, HTTP routes | Ad-hoc catalog writes |
|
|
18
|
+
| HTTP BFF | `registerCataloxGraphRoutes(app, { prefix: '/api/catalox' })` | Re-implement `/api/catalox/*` |
|
|
19
|
+
|
|
20
|
+
### Server (BFF)
|
|
21
|
+
|
|
22
|
+
```ts
|
|
23
|
+
import { registerCataloxGraphRoutes } from '@exellix/catalox-graphs/http';
|
|
24
|
+
|
|
25
|
+
await registerCataloxGraphRoutes(app, { prefix: '/api/catalox' });
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### Browser / React
|
|
29
|
+
|
|
30
|
+
```ts
|
|
31
|
+
import { cataloxApi } from '@exellix/catalox-graphs/browser';
|
|
32
|
+
import { CataloxGraphPicker, useCataloxGraphs } from '@exellix/catalox-graphs/react';
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### Save path
|
|
36
|
+
|
|
37
|
+
```ts
|
|
38
|
+
import { saveGraphToCatalox } from '@exellix/catalox-graphs';
|
|
39
|
+
|
|
40
|
+
await saveGraphToCatalox(authoringDocument, { title, concept });
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Studio-only metadata (examples, `graphsStudio` UI blobs) stays in the **graphs-studio DB** per `GraphStudioDocument` — not in Mongo config, not duplicated in Catalox unless explicitly modeled as `concept`.
|
|
44
|
+
|
|
45
|
+
## Job memory context (with Memorix)
|
|
46
|
+
|
|
47
|
+
| Concern | Package |
|
|
48
|
+
|---------|---------|
|
|
49
|
+
| Graph catalog, versions, templates | `@exellix/catalox-graphs` |
|
|
50
|
+
| Context query types, resolution, source reads | `@x12i/memorix-mongo` |
|
|
51
|
+
|
|
52
|
+
See [`@x12i/memorix-mongo` STUDIO_INTEGRATION.md](../../memorix-mongo/docs/STUDIO_INTEGRATION.md).
|
|
53
|
+
|
|
54
|
+
## Same package used by jobs
|
|
55
|
+
|
|
56
|
+
`@exellix/jobs-api` and `@exellix/jobs` load executable graphs via `createExecuteGraphLoader` → Catalox first.
|
|
57
|
+
Studio and factory runs therefore share one catalog document.
|
|
58
|
+
|
|
59
|
+
## Env
|
|
60
|
+
|
|
61
|
+
Same Firebase / Catalox vars as jobs-api — see [README.md](../README.md).
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@exellix/catalox-graphs",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.2",
|
|
4
4
|
"description": "Catalox graph catalog data tier: CRUD for graphs, versions, templates, and shared React picker.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"engines": {
|
|
@@ -32,7 +32,9 @@
|
|
|
32
32
|
},
|
|
33
33
|
"files": [
|
|
34
34
|
"dist",
|
|
35
|
-
"README.md"
|
|
35
|
+
"README.md",
|
|
36
|
+
"CHANGELOG.md",
|
|
37
|
+
"docs"
|
|
36
38
|
],
|
|
37
39
|
"scripts": {
|
|
38
40
|
"build": "tsc -p tsconfig.build.json && tsc -p tsconfig.react.json",
|