@exellix/catalox-graphs 1.2.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 (70) hide show
  1. package/README.md +76 -0
  2. package/dist/browser/catalox-api-client.d.ts +119 -0
  3. package/dist/browser/catalox-api-client.d.ts.map +1 -0
  4. package/dist/browser/catalox-api-client.js +53 -0
  5. package/dist/browser/catalox-api-client.js.map +1 -0
  6. package/dist/client/catalox-api.d.ts +29 -0
  7. package/dist/client/catalox-api.d.ts.map +1 -0
  8. package/dist/client/catalox-api.js +97 -0
  9. package/dist/client/catalox-api.js.map +1 -0
  10. package/dist/client/catalox-runtime.d.ts +4 -0
  11. package/dist/client/catalox-runtime.d.ts.map +1 -0
  12. package/dist/client/catalox-runtime.js +32 -0
  13. package/dist/client/catalox-runtime.js.map +1 -0
  14. package/dist/config/catalog-ids.d.ts +12 -0
  15. package/dist/config/catalog-ids.d.ts.map +1 -0
  16. package/dist/config/catalog-ids.js +11 -0
  17. package/dist/config/catalog-ids.js.map +1 -0
  18. package/dist/config/catalox-context-from-env.d.ts +13 -0
  19. package/dist/config/catalox-context-from-env.d.ts.map +1 -0
  20. package/dist/config/catalox-context-from-env.js +25 -0
  21. package/dist/config/catalox-context-from-env.js.map +1 -0
  22. package/dist/http/register-routes.d.ts +6 -0
  23. package/dist/http/register-routes.d.ts.map +1 -0
  24. package/dist/http/register-routes.js +288 -0
  25. package/dist/http/register-routes.js.map +1 -0
  26. package/dist/index.d.ts +12 -0
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +11 -0
  29. package/dist/index.js.map +1 -0
  30. package/dist/react/CataloxGraphPicker.d.ts +21 -0
  31. package/dist/react/CataloxGraphPicker.d.ts.map +1 -0
  32. package/dist/react/CataloxGraphPicker.js +97 -0
  33. package/dist/react/CataloxGraphPicker.js.map +1 -0
  34. package/dist/react/index.d.ts +4 -0
  35. package/dist/react/index.d.ts.map +1 -0
  36. package/dist/react/index.js +4 -0
  37. package/dist/react/index.js.map +1 -0
  38. package/dist/react/useCataloxGraphs.d.ts +17 -0
  39. package/dist/react/useCataloxGraphs.d.ts.map +1 -0
  40. package/dist/react/useCataloxGraphs.js +56 -0
  41. package/dist/react/useCataloxGraphs.js.map +1 -0
  42. package/dist/readiness.d.ts +8 -0
  43. package/dist/readiness.d.ts.map +1 -0
  44. package/dist/readiness.js +38 -0
  45. package/dist/readiness.js.map +1 -0
  46. package/dist/stores/concept-store.d.ts +16 -0
  47. package/dist/stores/concept-store.d.ts.map +1 -0
  48. package/dist/stores/concept-store.js +28 -0
  49. package/dist/stores/concept-store.js.map +1 -0
  50. package/dist/stores/graph-project-build.d.ts +15 -0
  51. package/dist/stores/graph-project-build.d.ts.map +1 -0
  52. package/dist/stores/graph-project-build.js +71 -0
  53. package/dist/stores/graph-project-build.js.map +1 -0
  54. package/dist/stores/graph-store.d.ts +43 -0
  55. package/dist/stores/graph-store.d.ts.map +1 -0
  56. package/dist/stores/graph-store.js +92 -0
  57. package/dist/stores/graph-store.js.map +1 -0
  58. package/dist/stores/graph-template-store.d.ts +28 -0
  59. package/dist/stores/graph-template-store.d.ts.map +1 -0
  60. package/dist/stores/graph-template-store.js +63 -0
  61. package/dist/stores/graph-template-store.js.map +1 -0
  62. package/dist/stores/graph-version-store.d.ts +31 -0
  63. package/dist/stores/graph-version-store.d.ts.map +1 -0
  64. package/dist/stores/graph-version-store.js +108 -0
  65. package/dist/stores/graph-version-store.js.map +1 -0
  66. package/dist/types/graph-project.d.ts +52 -0
  67. package/dist/types/graph-project.d.ts.map +1 -0
  68. package/dist/types/graph-project.js +2 -0
  69. package/dist/types/graph-project.js.map +1 -0
  70. package/package.json +68 -0
package/README.md ADDED
@@ -0,0 +1,76 @@
1
+ # @x12i/catalox-graphs
2
+
3
+ Shared Catalox data tier for **graphs-studio** and **jobs-ui**: graph catalog CRUD, version checkpoints, templates, legacy concepts, HTTP proxy routes, browser client, and `CataloxGraphPicker`.
4
+
5
+ ## Exports
6
+
7
+ | Import | Use |
8
+ |--------|-----|
9
+ | `@x12i/catalox-graphs` | Server stores, readiness probe, types |
10
+ | `@x12i/catalox-graphs/http` | Fastify route registrar (`/api/catalox/*`) |
11
+ | `@x12i/catalox-graphs/browser` | Browser fetch client |
12
+ | `@x12i/catalox-graphs/react` | `CataloxGraphPicker`, `useCataloxGraphs` |
13
+
14
+ ## Env
15
+
16
+ Same Firebase / Catalox vars as graphs-studio:
17
+
18
+ - `CATALOX_APP_ID` (e.g. `graphs-studio`)
19
+ - `CATALOX_STORE_ID` (optional)
20
+ - `GOOGLE_SERVICE_ACCOUNT_BASE64` or ADC
21
+ - `FIREBASE_PROJECT_ID`
22
+ - `CATALOX_GOD_MODE` (optional service superAdmin)
23
+
24
+ ## HTTP routes
25
+
26
+ Mount with:
27
+
28
+ ```ts
29
+ import { registerCataloxGraphRoutes } from '@x12i/catalox-graphs/http';
30
+ await registerCataloxGraphRoutes(app, { prefix: '/api/catalox' });
31
+ ```
32
+
33
+ Key endpoints:
34
+
35
+ - `GET /api/catalox/status`
36
+ - `GET /api/catalox/graphs?compatible=1&entityName=&contentType=`
37
+ - `GET|PUT|DELETE /api/catalox/graphs/:itemId`
38
+ - `GET|PUT|DELETE /api/catalox/graph-versions/:graphId/:versionId`
39
+ - `GET|PUT|DELETE /api/catalox/graph-templates/:templateKey`
40
+ - Generic catalog CRUD under `/api/catalox/catalogs/:catalogId/items/:itemId`
41
+
42
+ ## React picker
43
+
44
+ ```tsx
45
+ import { CataloxGraphPicker } from '@x12i/catalox-graphs/react';
46
+
47
+ <CataloxGraphPicker
48
+ value={graphId}
49
+ onChange={(id) => setGraphId(id)}
50
+ entityName="subnets"
51
+ contentType="snapshots"
52
+ filterCompatible
53
+ />
54
+ ```
55
+
56
+ Studio load mode:
57
+
58
+ ```tsx
59
+ <CataloxGraphPicker
60
+ onLoad={async (result) => {
61
+ if (!result.ok) return;
62
+ applyImportedGraph(result.graph, { versionSource: 'catalox', forceApply: true });
63
+ }}
64
+ />
65
+ ```
66
+
67
+ ## graphs-studio integration
68
+
69
+ See [docs/STUDIO_INTEGRATION.md](./docs/STUDIO_INTEGRATION.md). Pair with [`@x12i/memorix-mongo`](../memorix-mongo/docs/STUDIO_INTEGRATION.md) for job memory context.
70
+
71
+ ## Catalogs owned
72
+
73
+ - `graphs` — working graph projects
74
+ - `graph-versions` — version checkpoints
75
+ - `graph-templates` — saved/system templates
76
+ - `graph-concepts` — legacy concept rows (dual-write optional in studio)
@@ -0,0 +1,119 @@
1
+ export type CataloxReadyStatus = {
2
+ ok: boolean;
3
+ appId?: string;
4
+ reason?: string;
5
+ };
6
+ export type GraphProjectSummary = {
7
+ itemId: string;
8
+ graphId: string;
9
+ title: string;
10
+ updatedAt?: string;
11
+ status?: string;
12
+ };
13
+ export type CompatibleGraphSummary = {
14
+ graphId: string;
15
+ itemId: string;
16
+ title: string;
17
+ graphVersion?: string;
18
+ };
19
+ export type LoadGraphResponse = {
20
+ ok: true;
21
+ graph: Record<string, unknown>;
22
+ graphId: string;
23
+ concept?: Record<string, unknown>;
24
+ item: Record<string, unknown>;
25
+ } | {
26
+ ok: false;
27
+ error: string;
28
+ };
29
+ export declare function createCataloxApiClient(basePath?: string): {
30
+ probeCataloxReady: () => Promise<CataloxReadyStatus>;
31
+ listGraphsFromCatalox: (params?: {
32
+ limit?: number;
33
+ }) => Promise<{
34
+ ok: boolean;
35
+ graphs: GraphProjectSummary[];
36
+ }>;
37
+ listCompatibleGraphs: (params?: {
38
+ entityName?: string;
39
+ contentType?: string;
40
+ limit?: number;
41
+ }) => Promise<{
42
+ ok: boolean;
43
+ graphs: CompatibleGraphSummary[];
44
+ totalListed: number;
45
+ filtered: boolean;
46
+ }>;
47
+ loadGraphFromCatalox: (itemId: string) => Promise<LoadGraphResponse>;
48
+ saveGraphToCatalox: (itemId: string, body: {
49
+ graph: Record<string, unknown>;
50
+ concept?: Record<string, unknown>;
51
+ title?: string;
52
+ status?: string;
53
+ }) => Promise<{
54
+ ok: boolean;
55
+ itemId?: string;
56
+ }>;
57
+ deleteGraphFromCatalox: (itemId: string) => Promise<{
58
+ ok: boolean;
59
+ }>;
60
+ listCatalogItems: (catalogId: string, limit?: number) => Promise<{
61
+ ok: boolean;
62
+ items: unknown[];
63
+ }>;
64
+ getCatalogItem: (catalogId: string, itemId: string) => Promise<{
65
+ ok: boolean;
66
+ item?: unknown;
67
+ }>;
68
+ };
69
+ /** Default browser client hitting `/api/catalox/*`. */
70
+ export declare const cataloxApi: {
71
+ probeCataloxReady: () => Promise<CataloxReadyStatus>;
72
+ listGraphsFromCatalox: (params?: {
73
+ limit?: number;
74
+ }) => Promise<{
75
+ ok: boolean;
76
+ graphs: GraphProjectSummary[];
77
+ }>;
78
+ listCompatibleGraphs: (params?: {
79
+ entityName?: string;
80
+ contentType?: string;
81
+ limit?: number;
82
+ }) => Promise<{
83
+ ok: boolean;
84
+ graphs: CompatibleGraphSummary[];
85
+ totalListed: number;
86
+ filtered: boolean;
87
+ }>;
88
+ loadGraphFromCatalox: (itemId: string) => Promise<LoadGraphResponse>;
89
+ saveGraphToCatalox: (itemId: string, body: {
90
+ graph: Record<string, unknown>;
91
+ concept?: Record<string, unknown>;
92
+ title?: string;
93
+ status?: string;
94
+ }) => Promise<{
95
+ ok: boolean;
96
+ itemId?: string;
97
+ }>;
98
+ deleteGraphFromCatalox: (itemId: string) => Promise<{
99
+ ok: boolean;
100
+ }>;
101
+ listCatalogItems: (catalogId: string, limit?: number) => Promise<{
102
+ ok: boolean;
103
+ items: unknown[];
104
+ }>;
105
+ getCatalogItem: (catalogId: string, itemId: string) => Promise<{
106
+ ok: boolean;
107
+ item?: unknown;
108
+ }>;
109
+ };
110
+ /** @deprecated Use {@link cataloxApi.probeCataloxReady}. */
111
+ export declare const probeCataloxReady: () => Promise<CataloxReadyStatus>;
112
+ /** @deprecated Use {@link cataloxApi.listGraphsFromCatalox}. */
113
+ export declare const listGraphsFromCatalox: (limit?: number) => Promise<{
114
+ ok: boolean;
115
+ graphs: GraphProjectSummary[];
116
+ }>;
117
+ /** @deprecated Use {@link cataloxApi.loadGraphFromCatalox}. */
118
+ export declare const loadGraphFromCatalox: (itemId: string) => Promise<LoadGraphResponse>;
119
+ //# sourceMappingURL=catalox-api-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalox-api-client.d.ts","sourceRoot":"","sources":["../../src/browser/catalox-api-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ const DEFAULT_BASE = '/api/catalox';
2
+ async function request(path, init) {
3
+ const res = await fetch(`${DEFAULT_BASE}${path}`, init);
4
+ if (!res.ok) {
5
+ const err = (await res.json().catch(() => ({})));
6
+ throw new Error(String(err.error ?? `${res.status} ${res.statusText}`));
7
+ }
8
+ return res.json();
9
+ }
10
+ export function createCataloxApiClient(basePath = DEFAULT_BASE) {
11
+ const base = basePath.replace(/\/$/, '');
12
+ async function call(path, init) {
13
+ const res = await fetch(`${base}${path}`, init);
14
+ if (!res.ok) {
15
+ const err = (await res.json().catch(() => ({})));
16
+ throw new Error(String(err.error ?? `${res.status} ${res.statusText}`));
17
+ }
18
+ return res.json();
19
+ }
20
+ return {
21
+ probeCataloxReady: () => call('/status'),
22
+ listGraphsFromCatalox: (params) => call(`/graphs${params?.limit ? `?limit=${params.limit}` : ''}`),
23
+ listCompatibleGraphs: (params) => {
24
+ const q = new URLSearchParams();
25
+ q.set('compatible', '1');
26
+ if (params?.entityName)
27
+ q.set('entityName', params.entityName);
28
+ if (params?.contentType)
29
+ q.set('contentType', params.contentType);
30
+ if (params?.limit)
31
+ q.set('limit', String(params.limit));
32
+ return call(`/graphs?${q.toString()}`);
33
+ },
34
+ loadGraphFromCatalox: (itemId) => call(`/graphs/${encodeURIComponent(itemId)}`),
35
+ saveGraphToCatalox: (itemId, body) => call(`/graphs/${encodeURIComponent(itemId)}`, {
36
+ method: 'PUT',
37
+ headers: { 'Content-Type': 'application/json' },
38
+ body: JSON.stringify(body),
39
+ }),
40
+ deleteGraphFromCatalox: (itemId) => call(`/graphs/${encodeURIComponent(itemId)}`, { method: 'DELETE' }),
41
+ listCatalogItems: (catalogId, limit = 200) => call(`/catalogs/${encodeURIComponent(catalogId)}/items?limit=${limit}`),
42
+ getCatalogItem: (catalogId, itemId) => call(`/catalogs/${encodeURIComponent(catalogId)}/items/${encodeURIComponent(itemId)}`),
43
+ };
44
+ }
45
+ /** Default browser client hitting `/api/catalox/*`. */
46
+ export const cataloxApi = createCataloxApiClient();
47
+ /** @deprecated Use {@link cataloxApi.probeCataloxReady}. */
48
+ export const probeCataloxReady = () => request('/status');
49
+ /** @deprecated Use {@link cataloxApi.listGraphsFromCatalox}. */
50
+ export const listGraphsFromCatalox = (limit) => request(`/graphs${limit ? `?limit=${limit}` : ''}`);
51
+ /** @deprecated Use {@link cataloxApi.loadGraphFromCatalox}. */
52
+ export const loadGraphFromCatalox = (itemId) => request(`/graphs/${encodeURIComponent(itemId)}`);
53
+ //# sourceMappingURL=catalox-api-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalox-api-client.js","sourceRoot":"","sources":["../../src/browser/catalox-api-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import type { UnifiedCatalogItem } from '@x12i/catalox/embedder';
2
+ import type { CataloxBound } from '@x12i/catalox/embedder';
3
+ export type CatalogListResponse = {
4
+ ok: boolean;
5
+ items: UnifiedCatalogItem[];
6
+ error?: string;
7
+ };
8
+ export type CatalogGetResponse = {
9
+ ok: boolean;
10
+ item?: UnifiedCatalogItem;
11
+ error?: string;
12
+ };
13
+ export type CatalogWriteResponse = {
14
+ ok: boolean;
15
+ item?: UnifiedCatalogItem;
16
+ error?: string;
17
+ };
18
+ export declare function listCatalogItems(catalogId: string, options?: {
19
+ limit?: number;
20
+ bound?: CataloxBound;
21
+ }): Promise<CatalogListResponse>;
22
+ export declare function getCatalogItem(catalogId: string, itemId: string, bound?: CataloxBound): Promise<CatalogGetResponse>;
23
+ export declare function getCatalogItemByField(catalogId: string, fieldPath: string, value: unknown, bound?: CataloxBound): Promise<CatalogGetResponse>;
24
+ export declare function upsertCatalogItem(catalogId: string, input: Record<string, unknown>, bound?: CataloxBound): Promise<CatalogWriteResponse>;
25
+ export declare function deleteCatalogItem(catalogId: string, itemId: string, bound?: CataloxBound): Promise<{
26
+ ok: boolean;
27
+ error?: string;
28
+ }>;
29
+ //# sourceMappingURL=catalox-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalox-api.d.ts","sourceRoot":"","sources":["../../src/client/catalox-api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAG3D,MAAM,MAAM,mBAAmB,GAAG;IAChC,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,EAAE,EAAE,OAAO,CAAC;IACZ,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,EAAE,EAAE,OAAO,CAAC;IACZ,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAgBF,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,YAAY,CAAA;CAAO,GACrD,OAAO,CAAC,mBAAmB,CAAC,CAc9B;AAED,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,YAAY,GACnB,OAAO,CAAC,kBAAkB,CAAC,CAwB7B;AAED,wBAAsB,qBAAqB,CACzC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,OAAO,EACd,KAAK,CAAC,EAAE,YAAY,GACnB,OAAO,CAAC,kBAAkB,CAAC,CAoB7B;AAED,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,KAAK,CAAC,EAAE,YAAY,GACnB,OAAO,CAAC,oBAAoB,CAAC,CAQ/B;AAED,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,YAAY,GACnB,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAQ1C"}
@@ -0,0 +1,97 @@
1
+ import { getCataloxBound } from './catalox-runtime.js';
2
+ function formatCataloxError(error, errorDetail) {
3
+ if (!errorDetail)
4
+ return error;
5
+ const parts = [error];
6
+ for (const key of ['catalogId', 'itemId', 'appId', 'storeId']) {
7
+ const value = errorDetail[key];
8
+ if (typeof value === 'string' && value.trim())
9
+ parts.push(`${key}=${value}`);
10
+ }
11
+ return parts.join(' · ');
12
+ }
13
+ async function resolveBound(bound) {
14
+ return bound ?? getCataloxBound();
15
+ }
16
+ export async function listCatalogItems(catalogId, options = {}) {
17
+ try {
18
+ const catalox = await resolveBound(options.bound);
19
+ const list = await catalox.listCatalogItems(catalogId, {
20
+ limit: options.limit ?? 200,
21
+ });
22
+ if (list.listOutcome === 'mapping_blocked') {
23
+ const msg = (list.issues ?? []).map((i) => i.message ?? String(i)).join('; ');
24
+ return { ok: false, items: [], error: msg || 'mapping_blocked' };
25
+ }
26
+ return { ok: true, items: list.items };
27
+ }
28
+ catch (err) {
29
+ return { ok: false, items: [], error: String(err) };
30
+ }
31
+ }
32
+ export async function getCatalogItem(catalogId, itemId, bound) {
33
+ try {
34
+ const catalox = await resolveBound(bound);
35
+ if (typeof catalox.getCatalogItemResult === 'function') {
36
+ const result = await catalox.getCatalogItemResult(catalogId, itemId);
37
+ if (!result.ok) {
38
+ const detail = result.errorDetail;
39
+ return { ok: false, error: formatCataloxError(result.error, detail) };
40
+ }
41
+ return { ok: true, item: result.data };
42
+ }
43
+ const result = await catalox.getCatalogItem(catalogId, itemId);
44
+ if (result.outcome !== 'found') {
45
+ const error = result.outcome === 'mapping_blocked'
46
+ ? (result.issues ?? []).map((i) => i.message ?? String(i)).join('; ') || 'mapping_blocked'
47
+ : 'not found';
48
+ return { ok: false, error };
49
+ }
50
+ return { ok: true, item: result.item };
51
+ }
52
+ catch (err) {
53
+ return { ok: false, error: String(err) };
54
+ }
55
+ }
56
+ export async function getCatalogItemByField(catalogId, fieldPath, value, bound) {
57
+ try {
58
+ const catalox = await resolveBound(bound);
59
+ if (typeof catalox.getCatalogItemByFieldResult === 'function') {
60
+ const result = await catalox.getCatalogItemByFieldResult(catalogId, fieldPath, value);
61
+ if (!result.ok) {
62
+ const detail = result.errorDetail;
63
+ return { ok: false, error: formatCataloxError(result.error, detail) };
64
+ }
65
+ return { ok: true, item: result.data };
66
+ }
67
+ const result = await catalox.getCatalogItemByField(catalogId, fieldPath, value);
68
+ if (result.outcome !== 'found') {
69
+ return { ok: false, error: result.outcome === 'not_found' ? 'not found' : String(result.outcome) };
70
+ }
71
+ return { ok: true, item: result.item };
72
+ }
73
+ catch (err) {
74
+ return { ok: false, error: String(err) };
75
+ }
76
+ }
77
+ export async function upsertCatalogItem(catalogId, input, bound) {
78
+ try {
79
+ const catalox = await resolveBound(bound);
80
+ const item = await catalox.upsertNativeCatalogItem(catalogId, input);
81
+ return { ok: true, item };
82
+ }
83
+ catch (err) {
84
+ return { ok: false, error: String(err) };
85
+ }
86
+ }
87
+ export async function deleteCatalogItem(catalogId, itemId, bound) {
88
+ try {
89
+ const catalox = await resolveBound(bound);
90
+ await catalox.deleteNativeCatalogItem(catalogId, itemId);
91
+ return { ok: true };
92
+ }
93
+ catch (err) {
94
+ return { ok: false, error: String(err) };
95
+ }
96
+ }
97
+ //# sourceMappingURL=catalox-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalox-api.js","sourceRoot":"","sources":["../../src/client/catalox-api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { CataloxBound } from '@x12i/catalox/embedder';
2
+ export declare function resetCataloxRuntimeCache(): void;
3
+ export declare function getCataloxBound(): Promise<CataloxBound>;
4
+ //# sourceMappingURL=catalox-runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalox-runtime.d.ts","sourceRoot":"","sources":["../../src/client/catalox-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAY3D,wBAAgB,wBAAwB,IAAI,IAAI,CAG/C;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,YAAY,CAAC,CAoB7D"}
@@ -0,0 +1,32 @@
1
+ import { bindCataloxContext } from '@x12i/catalox/embedder';
2
+ import { createCataloxFromEnv } from '@x12i/catalox/firebase';
3
+ import { cataloxContextFromEnv, readCataloxAppId, readCataloxStoreId, } from '../config/catalox-context-from-env.js';
4
+ let bound = null;
5
+ let init = null;
6
+ export function resetCataloxRuntimeCache() {
7
+ bound = null;
8
+ init = null;
9
+ }
10
+ export async function getCataloxBound() {
11
+ if (bound)
12
+ return bound;
13
+ if (!init) {
14
+ init = (async () => {
15
+ const appId = readCataloxAppId();
16
+ if (!appId) {
17
+ throw new Error('CATALOX_APP_ID is required for Catalox graph catalog access.');
18
+ }
19
+ const { catalox } = createCataloxFromEnv();
20
+ const storeId = readCataloxStoreId();
21
+ const ctx = {
22
+ appId,
23
+ ...(storeId ? { storeId } : {}),
24
+ ...cataloxContextFromEnv(),
25
+ };
26
+ bound = bindCataloxContext(catalox, ctx);
27
+ return bound;
28
+ })();
29
+ }
30
+ return init;
31
+ }
32
+ //# sourceMappingURL=catalox-runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalox-runtime.js","sourceRoot":"","sources":["../../src/client/catalox-runtime.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,uCAAuC,CAAC;AAE/C,IAAI,KAAK,GAAwB,IAAI,CAAC;AACtC,IAAI,IAAI,GAAiC,IAAI,CAAC;AAE9C,MAAM,UAAU,wBAAwB;IACtC,KAAK,GAAG,IAAI,CAAC;IACb,IAAI,GAAG,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC;IACxB,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,IAAI,GAAG,CAAC,KAAK,IAAI,EAAE;YACjB,MAAM,KAAK,GAAG,gBAAgB,EAAE,CAAC;YACjC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;YAClF,CAAC;YACD,MAAM,EAAE,OAAO,EAAE,GAAG,oBAAoB,EAAE,CAAC;YAC3C,MAAM,OAAO,GAAG,kBAAkB,EAAE,CAAC;YACrC,MAAM,GAAG,GAAG;gBACV,KAAK;gBACL,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/B,GAAG,qBAAqB,EAAE;aAC3B,CAAC;YACF,KAAK,GAAG,kBAAkB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YACzC,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,EAAE,CAAC;IACP,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,12 @@
1
+ /** Owned Catalox catalog ids for graphs-studio graph persistence. */
2
+ export declare const CATALOG_IDS: {
3
+ readonly graphs: "graphs";
4
+ readonly graphVersions: "graph-versions";
5
+ readonly graphTemplates: "graph-templates";
6
+ /** Legacy concept rows; new saves embed concept inside graphs. */
7
+ readonly graphConcepts: "graph-concepts";
8
+ };
9
+ export type GraphCatalogId = (typeof CATALOG_IDS)[keyof typeof CATALOG_IDS];
10
+ export declare const DEFAULT_LIST_LIMIT = 200;
11
+ export declare const GRAPH_VERSION_HISTORY_MAX = 40;
12
+ //# sourceMappingURL=catalog-ids.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog-ids.d.ts","sourceRoot":"","sources":["../../src/config/catalog-ids.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,eAAO,MAAM,WAAW;;;;IAItB,kEAAkE;;CAE1D,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,OAAO,WAAW,CAAC,CAAC;AAE5E,eAAO,MAAM,kBAAkB,MAAM,CAAC;AACtC,eAAO,MAAM,yBAAyB,KAAK,CAAC"}
@@ -0,0 +1,11 @@
1
+ /** Owned Catalox catalog ids for graphs-studio graph persistence. */
2
+ export const CATALOG_IDS = {
3
+ graphs: 'graphs',
4
+ graphVersions: 'graph-versions',
5
+ graphTemplates: 'graph-templates',
6
+ /** Legacy concept rows; new saves embed concept inside graphs. */
7
+ graphConcepts: 'graph-concepts',
8
+ };
9
+ export const DEFAULT_LIST_LIMIT = 200;
10
+ export const GRAPH_VERSION_HISTORY_MAX = 40;
11
+ //# sourceMappingURL=catalog-ids.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog-ids.js","sourceRoot":"","sources":["../../src/config/catalog-ids.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,MAAM,EAAE,QAAQ;IAChB,aAAa,EAAE,gBAAgB;IAC/B,cAAc,EAAE,iBAAiB;IACjC,kEAAkE;IAClE,aAAa,EAAE,gBAAgB;CACvB,CAAC;AAIX,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CAAC;AACtC,MAAM,CAAC,MAAM,yBAAyB,GAAG,EAAE,CAAC"}
@@ -0,0 +1,13 @@
1
+ export type CataloxServiceContext = {
2
+ superAdmin?: boolean;
3
+ actor: {
4
+ type: 'service';
5
+ id: string;
6
+ };
7
+ };
8
+ /** Maps CATALOX_GOD_MODE → Catalox superAdmin for service catalog access. */
9
+ export declare function cataloxContextFromEnv(processEnv?: NodeJS.ProcessEnv, actorId?: string): CataloxServiceContext;
10
+ export declare function readCataloxAppId(processEnv?: NodeJS.ProcessEnv): string | undefined;
11
+ export declare function readCataloxStoreId(processEnv?: NodeJS.ProcessEnv): string | undefined;
12
+ export declare function hasFirebaseCredentials(processEnv?: NodeJS.ProcessEnv): boolean;
13
+ //# sourceMappingURL=catalox-context-from-env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalox-context-from-env.d.ts","sourceRoot":"","sources":["../../src/config/catalox-context-from-env.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,qBAAqB,GAAG;IAClC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,EAAE;QAAE,IAAI,EAAE,SAAS,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;CACxC,CAAC;AAQF,6EAA6E;AAC7E,wBAAgB,qBAAqB,CACnC,UAAU,GAAE,MAAM,CAAC,UAAwB,EAC3C,OAAO,SAAmB,GACzB,qBAAqB,CAKvB;AAED,wBAAgB,gBAAgB,CAAC,UAAU,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,GAAG,SAAS,CAEhG;AAED,wBAAgB,kBAAkB,CAAC,UAAU,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,GAAG,SAAS,CAElG;AAED,wBAAgB,sBAAsB,CAAC,UAAU,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAK3F"}
@@ -0,0 +1,25 @@
1
+ function isGodMode(processEnv = process.env) {
2
+ const raw = processEnv.CATALOX_GOD_MODE?.trim().toLowerCase();
3
+ if (!raw)
4
+ return false;
5
+ return raw !== '0' && raw !== 'false' && raw !== 'no' && raw !== 'off';
6
+ }
7
+ /** Maps CATALOX_GOD_MODE → Catalox superAdmin for service catalog access. */
8
+ export function cataloxContextFromEnv(processEnv = process.env, actorId = 'catalox-graphs') {
9
+ return {
10
+ ...(isGodMode(processEnv) ? { superAdmin: true } : {}),
11
+ actor: { type: 'service', id: actorId },
12
+ };
13
+ }
14
+ export function readCataloxAppId(processEnv = process.env) {
15
+ return processEnv.CATALOX_APP_ID?.trim() || undefined;
16
+ }
17
+ export function readCataloxStoreId(processEnv = process.env) {
18
+ return processEnv.CATALOX_STORE_ID?.trim() || undefined;
19
+ }
20
+ export function hasFirebaseCredentials(processEnv = process.env) {
21
+ const b64 = processEnv.GOOGLE_SERVICE_ACCOUNT_BASE64?.trim() ||
22
+ processEnv.FIREBASE_SERVICE_ACCOUNT_BASE64?.trim();
23
+ return Boolean(b64);
24
+ }
25
+ //# sourceMappingURL=catalox-context-from-env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalox-context-from-env.js","sourceRoot":"","sources":["../../src/config/catalox-context-from-env.ts"],"names":[],"mappings":"AAKA,SAAS,SAAS,CAAC,aAAgC,OAAO,CAAC,GAAG;IAC5D,MAAM,GAAG,GAAG,UAAU,CAAC,gBAAgB,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC9D,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IACvB,OAAO,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,KAAK,CAAC;AACzE,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,qBAAqB,CACnC,aAAgC,OAAO,CAAC,GAAG,EAC3C,OAAO,GAAG,gBAAgB;IAE1B,OAAO;QACL,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtD,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE;KACxC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,aAAgC,OAAO,CAAC,GAAG;IAC1E,OAAO,UAAU,CAAC,cAAc,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,aAAgC,OAAO,CAAC,GAAG;IAC5E,OAAO,UAAU,CAAC,gBAAgB,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,aAAgC,OAAO,CAAC,GAAG;IAChF,MAAM,GAAG,GACP,UAAU,CAAC,6BAA6B,EAAE,IAAI,EAAE;QAChD,UAAU,CAAC,+BAA+B,EAAE,IAAI,EAAE,CAAC;IACrD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC;AACtB,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { FastifyInstance } from 'fastify';
2
+ export type RegisterCataloxGraphRoutesOptions = {
3
+ prefix?: string;
4
+ };
5
+ export declare function registerCataloxGraphRoutes(app: FastifyInstance, options?: RegisterCataloxGraphRoutesOptions): Promise<void>;
6
+ //# sourceMappingURL=register-routes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-routes.d.ts","sourceRoot":"","sources":["../../src/http/register-routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAiC/C,MAAM,MAAM,iCAAiC,GAAG;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,wBAAsB,0BAA0B,CAC9C,GAAG,EAAE,eAAe,EACpB,OAAO,GAAE,iCAAsC,GAC9C,OAAO,CAAC,IAAI,CAAC,CAoRf"}