@x12i/catalox 3.3.0 → 3.4.5
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/README.md +61 -0
- package/dist/src/catalox/ai-functions-loader.d.ts +6 -0
- package/dist/src/catalox/ai-functions-loader.d.ts.map +1 -0
- package/dist/src/catalox/ai-functions-loader.js +19 -0
- package/dist/src/catalox/ai-functions-loader.js.map +1 -0
- package/dist/src/catalox/authorization.d.ts +9 -0
- package/dist/src/catalox/authorization.d.ts.map +1 -1
- package/dist/src/catalox/authorization.js +18 -0
- package/dist/src/catalox/authorization.js.map +1 -1
- package/dist/src/catalox/catalog-discovery.d.ts +32 -0
- package/dist/src/catalox/catalog-discovery.d.ts.map +1 -0
- package/dist/src/catalox/catalog-discovery.js +150 -0
- package/dist/src/catalox/catalog-discovery.js.map +1 -0
- package/dist/src/catalox/catalox-bound.d.ts +12 -1
- package/dist/src/catalox/catalox-bound.d.ts.map +1 -1
- package/dist/src/catalox/catalox-bound.js +33 -0
- package/dist/src/catalox/catalox-bound.js.map +1 -1
- package/dist/src/catalox/catalox.d.ts +30 -2
- package/dist/src/catalox/catalox.d.ts.map +1 -1
- package/dist/src/catalox/catalox.js +387 -27
- package/dist/src/catalox/catalox.js.map +1 -1
- package/dist/src/catalox/create-catalox.d.ts.map +1 -1
- package/dist/src/catalox/create-catalox.js +3 -0
- package/dist/src/catalox/create-catalox.js.map +1 -1
- package/dist/src/catalox/native-catalog-merge.d.ts.map +1 -1
- package/dist/src/catalox/native-catalog-merge.js +21 -1
- package/dist/src/catalox/native-catalog-merge.js.map +1 -1
- package/dist/src/catalox/native-scope.d.ts +11 -10
- package/dist/src/catalox/native-scope.d.ts.map +1 -1
- package/dist/src/catalox/native-scope.js +154 -14
- package/dist/src/catalox/native-scope.js.map +1 -1
- package/dist/src/contracts/bindings.d.ts +26 -0
- package/dist/src/contracts/bindings.d.ts.map +1 -1
- package/dist/src/contracts/bootstrap.d.ts +26 -0
- package/dist/src/contracts/bootstrap.d.ts.map +1 -1
- package/dist/src/contracts/catalogs.d.ts +29 -5
- package/dist/src/contracts/catalogs.d.ts.map +1 -1
- package/dist/src/contracts/catalogs.js.map +1 -1
- package/dist/src/contracts/context.d.ts +17 -0
- package/dist/src/contracts/context.d.ts.map +1 -1
- package/dist/src/contracts/descriptor-rules.d.ts +76 -0
- package/dist/src/contracts/descriptor-rules.d.ts.map +1 -0
- package/dist/src/contracts/descriptor-rules.js +2 -0
- package/dist/src/contracts/descriptor-rules.js.map +1 -0
- package/dist/src/contracts/descriptors.d.ts +5 -0
- package/dist/src/contracts/descriptors.d.ts.map +1 -1
- package/dist/src/contracts/discovery.d.ts +105 -0
- package/dist/src/contracts/discovery.d.ts.map +1 -1
- package/dist/src/contracts/errors.d.ts +5 -0
- package/dist/src/contracts/errors.d.ts.map +1 -1
- package/dist/src/contracts/index.d.ts +8 -5
- package/dist/src/contracts/index.d.ts.map +1 -1
- package/dist/src/contracts/index.js.map +1 -1
- package/dist/src/contracts/items.d.ts +35 -2
- package/dist/src/contracts/items.d.ts.map +1 -1
- package/dist/src/contracts/search.d.ts +127 -0
- package/dist/src/contracts/search.d.ts.map +1 -0
- package/dist/src/contracts/search.js +2 -0
- package/dist/src/contracts/search.js.map +1 -0
- package/dist/src/firebase/identity-binding-store.d.ts +18 -0
- package/dist/src/firebase/identity-binding-store.d.ts.map +1 -0
- package/dist/src/firebase/identity-binding-store.js +34 -0
- package/dist/src/firebase/identity-binding-store.js.map +1 -0
- package/docs/catalox-ui-contract.md +127 -0
- package/package.json +3 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AppCatalogBootstrap, AppCatalogEntry, CatalogDescriptor, CatalogItemReference, CatalogItemValidationReport, CatalogGetItemResult, CatalogListResult, CatalogNativeItemOptions, CatalogQueryOptions, MoveNativeCatalogItemScopeInput, CatalogValidationReport, CreateCatalogInput, ExportInventoryData, ExportInventoryInput, InventoryReportData, InventoryReportInput, ItemId, StoreId, StoreAppBindingRecord, ListAppCatalogsInput, UnifiedCatalogItem, UpdateCatalogInput } from "../contracts/index.js";
|
|
1
|
+
import type { AppCatalogBootstrap, AppCatalogEntry, IdentityCatalogEntry, CatalogDescriptor, CatalogItemReference, CatalogItemValidationReport, CatalogGetItemResult, CatalogListResult, CatalogListResultWithOutcome, CatalogGetItemResultWithOutcome, CatalogNativeItemOptions, CatalogQueryOptions, MoveNativeCatalogItemScopeInput, CatalogValidationReport, CreateCatalogInput, ExportInventoryData, ExportInventoryInput, InventoryReportData, InventoryReportInput, ItemId, StoreId, StoreAppBindingRecord, ListAppCatalogsInput, ListCatalogsForIdentityInput, UnifiedCatalogItem, UpdateCatalogInput, StoreCatalogBootstrap, ListAllCatalogsInput, FindCatalogsInput, FindCatalogsByAiInput, CatalogSummary, AiCatalogMatchResult, SearchCatalogItemsInput, FindCatalogItemsByAiInput, AiCatalogItemMatchResult, CreateCatalogItemByAiInput, CreateCatalogItemByAiResult, ModifyCatalogItemByAiInput, ModifyCatalogItemByAiResult } from "../contracts/index.js";
|
|
2
2
|
import type { AppId, CatalogId } from "../contracts/ids.js";
|
|
3
3
|
import { ApiCatalogAdapter } from "../adapters/api/api-adapter.js";
|
|
4
4
|
import { MongoCatalogAdapter } from "../adapters/mongo/mongo-adapter.js";
|
|
@@ -19,6 +19,7 @@ import { ReferenceStore } from "../firebase/reference-store.js";
|
|
|
19
19
|
import { RendererSnippetStore } from "../firebase/renderer-snippet-store.js";
|
|
20
20
|
import { SnapshotStore } from "../firebase/snapshot-store.js";
|
|
21
21
|
import { StoreAppBindingStore } from "../firebase/store-app-binding-store.js";
|
|
22
|
+
import { IdentityBindingStore } from "../firebase/identity-binding-store.js";
|
|
22
23
|
import type { BackupDataInput, BackupDataResult } from "../contracts/backup.js";
|
|
23
24
|
import type { ExportAllFirestoreCollectionsToGcsInput, ExportAllFirestoreCollectionsToGcsResult, ExportFirestoreCollectionToGcsInput, ExportFirestoreCollectionToGcsResult, RestoreAllFirestoreCollectionsFromGcsInput, RestoreAllFirestoreCollectionsFromGcsResult, RestoreFirestoreCollectionFromGcsInput, RestoreFirestoreCollectionFromGcsResult } from "../contracts/gcs-firestore-transfer.js";
|
|
24
25
|
import type { CompareAllFirestoreCollectionsWithGcsManifestInput, CompareAllFirestoreCollectionsWithGcsResult, CompareFirestoreCollectionWithGcsInput, CompareFirestoreCollectionWithGcsResult } from "../contracts/gcs-firestore-compare.js";
|
|
@@ -36,6 +37,7 @@ export type CataloxDependencies = {
|
|
|
36
37
|
catalogs: CatalogStore;
|
|
37
38
|
bindings: BindingStore;
|
|
38
39
|
storeAppBindings?: StoreAppBindingStore;
|
|
40
|
+
identityBindings?: IdentityBindingStore;
|
|
39
41
|
definitions: DefinitionStore;
|
|
40
42
|
mappings: MappingStore;
|
|
41
43
|
descriptors: DescriptorStore;
|
|
@@ -81,14 +83,36 @@ export declare class Catalox {
|
|
|
81
83
|
private normalizeListFetchScope;
|
|
82
84
|
private buildAppliedScope;
|
|
83
85
|
private fetchGlobalPhysicalRows;
|
|
84
|
-
private
|
|
86
|
+
private fetchScopedPhysicalRows;
|
|
85
87
|
private decorateItem;
|
|
86
88
|
listAppCatalogs(context: CataloxContext, input?: ListAppCatalogsInput): Promise<AppCatalogEntry[]>;
|
|
89
|
+
private identityBindingMatches;
|
|
90
|
+
/**
|
|
91
|
+
* vNext: identity-first discovery, backed by `catalogIdentityBindings`.
|
|
92
|
+
* This does not replace app bindings; host policy may intersect/union them.
|
|
93
|
+
*/
|
|
94
|
+
listCatalogsForIdentity(context: CataloxContext, input: ListCatalogsForIdentityInput): Promise<IdentityCatalogEntry[]>;
|
|
95
|
+
/**
|
|
96
|
+
* App-agnostic discovery: list catalog metadata across all apps.
|
|
97
|
+
* Visibility default: hide hidden catalogs unless `context.superAdmin`.
|
|
98
|
+
*/
|
|
99
|
+
listAllCatalogs(context: CataloxContext, input?: ListAllCatalogsInput): Promise<CatalogSummary[]>;
|
|
100
|
+
findCatalogs(context: CataloxContext, input: FindCatalogsInput): Promise<CatalogSummary[]>;
|
|
101
|
+
findCatalogsByAi(context: CataloxContext, input: FindCatalogsByAiInput): Promise<AiCatalogMatchResult>;
|
|
87
102
|
getCatalogDescriptor(context: CataloxContext, catalogId: CatalogId): Promise<CatalogDescriptor | null>;
|
|
88
103
|
getCatalogRendererSnippet(context: CataloxContext, catalogId: CatalogId, role: "core" | "list" | "grid" | "item" | "report" | "dashboard", mode?: "readonly" | "editable"): Promise<import("../contracts/renderer-snippets.js").CatalogRendererSnippetRecord | null>;
|
|
89
104
|
getAppCatalogBootstrap(context: CataloxContext, appId?: AppId): Promise<AppCatalogBootstrap>;
|
|
105
|
+
/** vNext: store-first bootstrap (store -> apps -> catalog descriptors). */
|
|
106
|
+
getStoreCatalogBootstrap(context: CataloxContext, storeId: StoreId): Promise<StoreCatalogBootstrap>;
|
|
90
107
|
listCatalogItems(context: CataloxContext, catalogId: CatalogId, options?: CatalogQueryOptions): Promise<CatalogListResult>;
|
|
108
|
+
/**
|
|
109
|
+
* vNext: same as `listCatalogItems` but returns a semantic outcome wrapper instead of throwing for common cases.
|
|
110
|
+
* This is intended for embedders/BFFs that need to distinguish empty vs denied vs misconfigured.
|
|
111
|
+
*/
|
|
112
|
+
listCatalogItemsWithOutcome(context: CataloxContext, catalogId: CatalogId, options?: CatalogQueryOptions): Promise<CatalogListResultWithOutcome>;
|
|
91
113
|
getCatalogItem(context: CataloxContext, catalogId: CatalogId, itemId: ItemId, options?: CatalogNativeItemOptions): Promise<CatalogGetItemResult>;
|
|
114
|
+
/** vNext: `getCatalogItem` wrapper with `CataloxOutcome` semantics. */
|
|
115
|
+
getCatalogItemWithOutcome(context: CataloxContext, catalogId: CatalogId, itemId: ItemId, options?: CatalogNativeItemOptions): Promise<CatalogGetItemResultWithOutcome>;
|
|
92
116
|
validateCatalog(_context: CataloxContext, _catalogId: CatalogId): Promise<CatalogValidationReport>;
|
|
93
117
|
validateCatalogItem(_context: CataloxContext, _catalogId: CatalogId, _itemId: ItemId): Promise<CatalogItemValidationReport>;
|
|
94
118
|
getCatalogItemReferences(context: CataloxContext, catalogId: CatalogId, itemId: ItemId): Promise<CatalogItemReference[]>;
|
|
@@ -98,6 +122,10 @@ export declare class Catalox {
|
|
|
98
122
|
updateCatalog(_context: CataloxContext, _catalogId: CatalogId, _patch: UpdateCatalogInput): Promise<import("../contracts/catalogs.js").CatalogRecord>;
|
|
99
123
|
getCatalog(_context: CataloxContext, catalogId: CatalogId): Promise<import("../contracts/catalogs.js").CatalogRecord | null>;
|
|
100
124
|
listCatalogs(_context: CataloxContext, _options?: CatalogQueryOptions): Promise<import("../contracts/catalogs.js").CatalogRecord[]>;
|
|
125
|
+
searchCatalogItems(context: CataloxContext, catalogId: CatalogId, input: SearchCatalogItemsInput): Promise<CatalogListResult>;
|
|
126
|
+
findCatalogItemsByAi(context: CataloxContext, catalogId: CatalogId, input: FindCatalogItemsByAiInput): Promise<AiCatalogItemMatchResult>;
|
|
127
|
+
createCatalogItemByAi(context: CataloxContext, catalogId: CatalogId, input: CreateCatalogItemByAiInput): Promise<CreateCatalogItemByAiResult>;
|
|
128
|
+
modifyCatalogItemByAi(context: CataloxContext, catalogId: CatalogId, itemId: ItemId, input: ModifyCatalogItemByAiInput): Promise<ModifyCatalogItemByAiResult>;
|
|
101
129
|
bindCatalogToApp(_context: CataloxContext, _input: import("../contracts/bindings.js").BindCatalogInput): Promise<any>;
|
|
102
130
|
unbindCatalogFromApp(_context: CataloxContext, _appId: AppId, _catalogId: CatalogId): Promise<void>;
|
|
103
131
|
bindAppToStore(context: CataloxContext, input: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalox.d.ts","sourceRoot":"","sources":["../../../src/catalox/catalox.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"catalox.d.ts","sourceRoot":"","sources":["../../../src/catalox/catalox.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,7 +26,10 @@ import { ReferenceStore } from "../firebase/reference-store.js";
|
|
|
26
26
|
import { RendererSnippetStore } from "../firebase/renderer-snippet-store.js";
|
|
27
27
|
import { SnapshotStore } from "../firebase/snapshot-store.js";
|
|
28
28
|
import { StoreAppBindingStore } from "../firebase/store-app-binding-store.js";
|
|
29
|
+
import { IdentityBindingStore } from "../firebase/identity-binding-store.js";
|
|
29
30
|
import { nativeItemsCollectionId } from "../firebase/catalog-data-paths.js";
|
|
31
|
+
import { applyCatalogVisibilityFilter, filterCatalogsByText, findCatalogsByAi as findCatalogsByAiHelper, summarizeCatalog, } from "./catalog-discovery.js";
|
|
32
|
+
import { loadAiFunctions } from "./ai-functions-loader.js";
|
|
30
33
|
import { runBackupData, pruneGcsBackupRuns } from "./backup-data.js";
|
|
31
34
|
import { runUndoFirestoreRestore } from "./restore-firestore-backup.js";
|
|
32
35
|
import { runRestoreFirestoreBackupFromGcs, runDeleteCataloxGcsBackupRun } from "./restore-firestore-backup-from-gcs.js";
|
|
@@ -313,15 +316,26 @@ export class Catalox {
|
|
|
313
316
|
normalizeListFetchScope(scope) {
|
|
314
317
|
if (!scope)
|
|
315
318
|
return undefined;
|
|
316
|
-
|
|
319
|
+
const hasCoords = Boolean(scope.accountId) ||
|
|
320
|
+
Boolean(scope.groupId) ||
|
|
321
|
+
Boolean(scope.userId) ||
|
|
322
|
+
Boolean(scope.channelId) ||
|
|
323
|
+
Boolean(scope.visitorId) ||
|
|
324
|
+
Boolean(scope.domainId) ||
|
|
325
|
+
Boolean(scope.agentId);
|
|
326
|
+
if (!hasCoords && scope.superAdmin !== true)
|
|
317
327
|
return undefined;
|
|
318
328
|
return scope;
|
|
319
329
|
}
|
|
320
330
|
buildAppliedScope(scope, effectiveSuperList) {
|
|
321
331
|
return {
|
|
322
332
|
...(scope?.accountId != null ? { accountId: scope.accountId } : {}),
|
|
333
|
+
...(scope?.groupId != null ? { groupId: scope.groupId } : {}),
|
|
323
334
|
...(scope?.agentId != null ? { agentId: scope.agentId } : {}),
|
|
335
|
+
...(scope?.domainId != null ? { domainId: scope.domainId } : {}),
|
|
324
336
|
...(scope?.userId != null ? { userId: scope.userId } : {}),
|
|
337
|
+
...(scope?.channelId != null ? { channelId: scope.channelId } : {}),
|
|
338
|
+
...(scope?.visitorId != null ? { visitorId: scope.visitorId } : {}),
|
|
325
339
|
superAdmin: effectiveSuperList,
|
|
326
340
|
};
|
|
327
341
|
}
|
|
@@ -335,7 +349,7 @@ export class Catalox {
|
|
|
335
349
|
}
|
|
336
350
|
return recs;
|
|
337
351
|
}
|
|
338
|
-
async
|
|
352
|
+
async fetchScopedPhysicalRows(catalogId, fetch, listOpts) {
|
|
339
353
|
const userFe = { ...(listOpts.filterEq ?? {}) };
|
|
340
354
|
const cap = { ...listOpts, limit: 500, offset: 0 };
|
|
341
355
|
const seen = new Set();
|
|
@@ -350,34 +364,41 @@ export class Catalox {
|
|
|
350
364
|
}
|
|
351
365
|
};
|
|
352
366
|
take(await this.deps.nativeItems.list(catalogId, { ...cap, filterEq: { ...userFe, scopeLayer: "global" } }));
|
|
367
|
+
// Legacy v1 scopes (still queried for back-compat)
|
|
353
368
|
if (fetch.accountId) {
|
|
354
|
-
take(await this.deps.nativeItems.list(catalogId, {
|
|
355
|
-
...cap,
|
|
356
|
-
filterEq: { ...userFe, scopeLayer: "account", scopeAccountId: fetch.accountId },
|
|
357
|
-
}));
|
|
369
|
+
take(await this.deps.nativeItems.list(catalogId, { ...cap, filterEq: { ...userFe, scopeLayer: "account", scopeAccountId: fetch.accountId } }));
|
|
358
370
|
if (fetch.agentId) {
|
|
359
|
-
take(await this.deps.nativeItems.list(catalogId, {
|
|
360
|
-
...cap,
|
|
361
|
-
filterEq: {
|
|
362
|
-
...userFe,
|
|
363
|
-
scopeLayer: "agent",
|
|
364
|
-
scopeAccountId: fetch.accountId,
|
|
365
|
-
scopeAgentId: fetch.agentId,
|
|
366
|
-
},
|
|
367
|
-
}));
|
|
371
|
+
take(await this.deps.nativeItems.list(catalogId, { ...cap, filterEq: { ...userFe, scopeLayer: "agent", scopeAccountId: fetch.accountId, scopeAgentId: fetch.agentId } }));
|
|
368
372
|
}
|
|
369
373
|
if (fetch.userId) {
|
|
370
|
-
take(await this.deps.nativeItems.list(catalogId, {
|
|
371
|
-
...cap,
|
|
372
|
-
filterEq: {
|
|
373
|
-
...userFe,
|
|
374
|
-
scopeLayer: "user",
|
|
375
|
-
scopeAccountId: fetch.accountId,
|
|
376
|
-
scopeUserId: fetch.userId,
|
|
377
|
-
},
|
|
378
|
-
}));
|
|
374
|
+
take(await this.deps.nativeItems.list(catalogId, { ...cap, filterEq: { ...userFe, scopeLayer: "user", scopeAccountId: fetch.accountId, scopeUserId: fetch.userId } }));
|
|
379
375
|
}
|
|
380
376
|
}
|
|
377
|
+
// v2 scoped rows: best-effort prefilter by available indexed coordinates.
|
|
378
|
+
const scopedQueries = [];
|
|
379
|
+
if (fetch.accountId)
|
|
380
|
+
scopedQueries.push({ scopeLayer: "scoped", scopeAccountId: fetch.accountId });
|
|
381
|
+
if (fetch.userId)
|
|
382
|
+
scopedQueries.push({ scopeLayer: "scoped", scopeUserId: fetch.userId });
|
|
383
|
+
if (fetch.channelId)
|
|
384
|
+
scopedQueries.push({ scopeLayer: "scoped", scopeChannelId: fetch.channelId });
|
|
385
|
+
if (fetch.visitorId)
|
|
386
|
+
scopedQueries.push({ scopeLayer: "scoped", scopeVisitorId: fetch.visitorId });
|
|
387
|
+
if (fetch.domainId)
|
|
388
|
+
scopedQueries.push({ scopeLayer: "scoped", scopeDomainId: fetch.domainId });
|
|
389
|
+
if (fetch.agentId)
|
|
390
|
+
scopedQueries.push({ scopeLayer: "scoped", scopeAgentId: fetch.agentId });
|
|
391
|
+
if (fetch.groupId)
|
|
392
|
+
scopedQueries.push({ scopeLayer: "scoped", scopeGroupId: fetch.groupId });
|
|
393
|
+
if (scopedQueries.length) {
|
|
394
|
+
for (const q of scopedQueries) {
|
|
395
|
+
take(await this.deps.nativeItems.list(catalogId, { ...cap, filterEq: { ...userFe, ...q } }));
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
else {
|
|
399
|
+
// Fallback: if caller provided coordinates but none mapped to a queryable indexed field, list scoped broadly.
|
|
400
|
+
take(await this.deps.nativeItems.list(catalogId, { ...cap, filterEq: { ...userFe, scopeLayer: "scoped" } }));
|
|
401
|
+
}
|
|
381
402
|
return filterPhysicalForTenantFetch(out, fetch);
|
|
382
403
|
}
|
|
383
404
|
async decorateItem(catalogId, item) {
|
|
@@ -432,6 +453,99 @@ export class Catalox {
|
|
|
432
453
|
}
|
|
433
454
|
return out.filter((e) => (input?.includeHidden ? true : e.visibility !== "hidden"));
|
|
434
455
|
}
|
|
456
|
+
identityBindingMatches(bindingIdentity, query) {
|
|
457
|
+
const pairs = [
|
|
458
|
+
["accountId", "accountId"],
|
|
459
|
+
["groupId", "groupId"],
|
|
460
|
+
["userId", "userId"],
|
|
461
|
+
["channelId", "channelId"],
|
|
462
|
+
["visitorId", "visitorId"],
|
|
463
|
+
["domainId", "domainId"],
|
|
464
|
+
["agentId", "agentId"],
|
|
465
|
+
];
|
|
466
|
+
for (const [bk, qk] of pairs) {
|
|
467
|
+
const b = bindingIdentity[bk];
|
|
468
|
+
if (b == null)
|
|
469
|
+
continue;
|
|
470
|
+
const q = query[qk];
|
|
471
|
+
if (q == null)
|
|
472
|
+
return false;
|
|
473
|
+
if (String(q) !== String(b))
|
|
474
|
+
return false;
|
|
475
|
+
}
|
|
476
|
+
return true;
|
|
477
|
+
}
|
|
478
|
+
/**
|
|
479
|
+
* vNext: identity-first discovery, backed by `catalogIdentityBindings`.
|
|
480
|
+
* This does not replace app bindings; host policy may intersect/union them.
|
|
481
|
+
*/
|
|
482
|
+
async listCatalogsForIdentity(context, input) {
|
|
483
|
+
if (!this.deps.identityBindings) {
|
|
484
|
+
throw new Error("identityBindings dependency is not configured");
|
|
485
|
+
}
|
|
486
|
+
const bindings = await this.deps.identityBindings.listAll();
|
|
487
|
+
const catalogs = await this.deps.catalogs.listAll();
|
|
488
|
+
const byId = new Map(catalogs.map((c) => [c.catalogId, c]));
|
|
489
|
+
const out = [];
|
|
490
|
+
for (const b of bindings) {
|
|
491
|
+
if (b.status !== "active")
|
|
492
|
+
continue;
|
|
493
|
+
if (!this.identityBindingMatches(b.identity, input.identity))
|
|
494
|
+
continue;
|
|
495
|
+
const cat = byId.get(b.catalogId);
|
|
496
|
+
if (!cat)
|
|
497
|
+
continue;
|
|
498
|
+
if (!input.includeDisabled && cat.status !== "active")
|
|
499
|
+
continue;
|
|
500
|
+
const descriptor = await this.deps.descriptors.get(cat.catalogId);
|
|
501
|
+
const description = descriptor?.descriptor.description ?? cat.description;
|
|
502
|
+
const itemLabel = descriptor?.descriptor.itemLabel ?? cat.itemLabel;
|
|
503
|
+
const visibility = descriptor?.descriptor.visibility;
|
|
504
|
+
const descriptorVersion = descriptor?.descriptorVersion;
|
|
505
|
+
const metadata = descriptor?.descriptor.metadata ?? cat.metadata;
|
|
506
|
+
out.push({
|
|
507
|
+
catalogId: cat.catalogId,
|
|
508
|
+
label: descriptor?.descriptor.label ?? cat.name,
|
|
509
|
+
...(description != null ? { description } : {}),
|
|
510
|
+
...(itemLabel != null ? { itemLabel } : {}),
|
|
511
|
+
sourceMode: cat.sourceMode,
|
|
512
|
+
...(cat.mappedSourceType != null ? { mappedSourceType: cat.mappedSourceType } : {}),
|
|
513
|
+
status: cat.status,
|
|
514
|
+
...(visibility != null ? { visibility } : {}),
|
|
515
|
+
access: b.access,
|
|
516
|
+
...(descriptorVersion != null ? { descriptorVersion } : {}),
|
|
517
|
+
...(metadata != null ? { metadata } : {}),
|
|
518
|
+
});
|
|
519
|
+
}
|
|
520
|
+
return out.filter((e) => (input.includeHidden ? true : e.visibility !== "hidden"));
|
|
521
|
+
}
|
|
522
|
+
/**
|
|
523
|
+
* App-agnostic discovery: list catalog metadata across all apps.
|
|
524
|
+
* Visibility default: hide hidden catalogs unless `context.superAdmin`.
|
|
525
|
+
*/
|
|
526
|
+
async listAllCatalogs(context, input) {
|
|
527
|
+
const catalogs = await this.deps.catalogs.listAll();
|
|
528
|
+
const out = [];
|
|
529
|
+
for (const c of catalogs) {
|
|
530
|
+
const d = await this.deps.descriptors.get(c.catalogId);
|
|
531
|
+
out.push(summarizeCatalog(c, d));
|
|
532
|
+
}
|
|
533
|
+
return applyCatalogVisibilityFilter(out, context, input);
|
|
534
|
+
}
|
|
535
|
+
async findCatalogs(context, input) {
|
|
536
|
+
const all = await this.listAllCatalogs(context, {
|
|
537
|
+
...(input.includeDisabled != null ? { includeDisabled: input.includeDisabled } : {}),
|
|
538
|
+
...(input.includeHidden != null ? { includeHidden: input.includeHidden } : {}),
|
|
539
|
+
});
|
|
540
|
+
return filterCatalogsByText(all, input);
|
|
541
|
+
}
|
|
542
|
+
async findCatalogsByAi(context, input) {
|
|
543
|
+
const all = await this.listAllCatalogs(context, {
|
|
544
|
+
...(input.includeDisabled != null ? { includeDisabled: input.includeDisabled } : {}),
|
|
545
|
+
...(input.includeHidden != null ? { includeHidden: input.includeHidden } : {}),
|
|
546
|
+
});
|
|
547
|
+
return findCatalogsByAiHelper({ query: input.query, catalogs: all, input });
|
|
548
|
+
}
|
|
435
549
|
async getCatalogDescriptor(context, catalogId) {
|
|
436
550
|
await this.deps.authz.requireBindingAccess(context, context.appId, catalogId, "read");
|
|
437
551
|
const rec = await this.deps.descriptors.get(catalogId);
|
|
@@ -455,6 +569,18 @@ export class Catalox {
|
|
|
455
569
|
}
|
|
456
570
|
return { appId: resolved, catalogs: descriptors };
|
|
457
571
|
}
|
|
572
|
+
/** vNext: store-first bootstrap (store -> apps -> catalog descriptors). */
|
|
573
|
+
async getStoreCatalogBootstrap(context, storeId) {
|
|
574
|
+
const apps = await this.listAppsForStore(context, storeId);
|
|
575
|
+
const activeApps = apps.filter((a) => a.status === "active").map((a) => a.appId);
|
|
576
|
+
const out = { storeId: String(storeId), apps: [] };
|
|
577
|
+
for (const appId of activeApps) {
|
|
578
|
+
const appCtx = { ...context, appId };
|
|
579
|
+
const bootstrap = await this.getAppCatalogBootstrap(appCtx, appId);
|
|
580
|
+
out.apps.push({ appId, catalogs: bootstrap.catalogs });
|
|
581
|
+
}
|
|
582
|
+
return out;
|
|
583
|
+
}
|
|
458
584
|
async listCatalogItems(context, catalogId, options) {
|
|
459
585
|
await this.deps.authz.requireBindingAccess(context, context.appId, catalogId, "read");
|
|
460
586
|
const catalog = await this.deps.catalogs.get(catalogId);
|
|
@@ -487,11 +613,11 @@ export class Catalox {
|
|
|
487
613
|
if (wantsSuperList) {
|
|
488
614
|
physical = await this.deps.nativeItems.list(catalogId, baseListOpts);
|
|
489
615
|
}
|
|
490
|
-
else if (!rawScope
|
|
616
|
+
else if (!rawScope || (!rawScope.accountId && !rawScope.groupId && !rawScope.userId && !rawScope.channelId && !rawScope.visitorId && !rawScope.domainId && !rawScope.agentId)) {
|
|
491
617
|
physical = await this.fetchGlobalPhysicalRows(catalogId, baseListOpts);
|
|
492
618
|
}
|
|
493
619
|
else {
|
|
494
|
-
physical = await this.
|
|
620
|
+
physical = await this.fetchScopedPhysicalRows(catalogId, rawScope, baseListOpts);
|
|
495
621
|
}
|
|
496
622
|
const merged = mergeNativePhysicalRows(physical, descRec.descriptor.identity, String(context.appId), wantsSuperList);
|
|
497
623
|
const off = listQueryOptions?.offset ?? 0;
|
|
@@ -547,6 +673,29 @@ export class Catalox {
|
|
|
547
673
|
}
|
|
548
674
|
throw new CatalogAdapterError({ catalogId, reason: "unknown_adapter_type" });
|
|
549
675
|
}
|
|
676
|
+
/**
|
|
677
|
+
* vNext: same as `listCatalogItems` but returns a semantic outcome wrapper instead of throwing for common cases.
|
|
678
|
+
* This is intended for embedders/BFFs that need to distinguish empty vs denied vs misconfigured.
|
|
679
|
+
*/
|
|
680
|
+
async listCatalogItemsWithOutcome(context, catalogId, options) {
|
|
681
|
+
try {
|
|
682
|
+
const result = await this.listCatalogItems(context, catalogId, options);
|
|
683
|
+
if (result.listOutcome === "mapping_blocked")
|
|
684
|
+
return { outcome: "mapping_blocked", result };
|
|
685
|
+
if (!result.items.length)
|
|
686
|
+
return { outcome: "empty", result };
|
|
687
|
+
return { outcome: "ok", result };
|
|
688
|
+
}
|
|
689
|
+
catch (e) {
|
|
690
|
+
if (e instanceof CatalogAccessDeniedError)
|
|
691
|
+
return { outcome: "denied", error: e };
|
|
692
|
+
if (e instanceof CatalogNotFoundError)
|
|
693
|
+
return { outcome: "misconfigured", error: e };
|
|
694
|
+
if (e instanceof CatalogAdapterError)
|
|
695
|
+
return { outcome: "misconfigured", error: e };
|
|
696
|
+
throw e;
|
|
697
|
+
}
|
|
698
|
+
}
|
|
550
699
|
async getCatalogItem(context, catalogId, itemId, options) {
|
|
551
700
|
await this.deps.authz.requireBindingAccess(context, context.appId, catalogId, "read");
|
|
552
701
|
const catalog = await this.deps.catalogs.get(catalogId);
|
|
@@ -586,7 +735,7 @@ export class Catalox {
|
|
|
586
735
|
if (!rows.length)
|
|
587
736
|
return { outcome: "not_found" };
|
|
588
737
|
const scope = options?.scope;
|
|
589
|
-
const filtered = scope?.accountId || scope?.
|
|
738
|
+
const filtered = scope?.accountId || scope?.groupId || scope?.userId || scope?.channelId || scope?.visitorId || scope?.domainId || scope?.agentId
|
|
590
739
|
? filterPhysicalForTenantFetch(rows, scope)
|
|
591
740
|
: rows.filter((r) => isGlobalPhysicalRow(r));
|
|
592
741
|
const merged = mergeNativePhysicalRows(filtered, descRec.descriptor.identity, String(context.appId), false);
|
|
@@ -608,6 +757,26 @@ export class Catalox {
|
|
|
608
757
|
return { outcome: "not_found" };
|
|
609
758
|
return { outcome: "found", item: await this.decorateItem(catalogId, first) };
|
|
610
759
|
}
|
|
760
|
+
/** vNext: `getCatalogItem` wrapper with `CataloxOutcome` semantics. */
|
|
761
|
+
async getCatalogItemWithOutcome(context, catalogId, itemId, options) {
|
|
762
|
+
try {
|
|
763
|
+
const result = await this.getCatalogItem(context, catalogId, itemId, options);
|
|
764
|
+
if (result.outcome === "mapping_blocked")
|
|
765
|
+
return { outcome: "mapping_blocked", result };
|
|
766
|
+
if (result.outcome === "not_found")
|
|
767
|
+
return { outcome: "empty", result };
|
|
768
|
+
return { outcome: "ok", result };
|
|
769
|
+
}
|
|
770
|
+
catch (e) {
|
|
771
|
+
if (e instanceof CatalogAccessDeniedError)
|
|
772
|
+
return { outcome: "denied", error: e };
|
|
773
|
+
if (e instanceof CatalogNotFoundError)
|
|
774
|
+
return { outcome: "misconfigured", error: e };
|
|
775
|
+
if (e instanceof CatalogAdapterError)
|
|
776
|
+
return { outcome: "misconfigured", error: e };
|
|
777
|
+
throw e;
|
|
778
|
+
}
|
|
779
|
+
}
|
|
611
780
|
async validateCatalog(_context, _catalogId) {
|
|
612
781
|
return { isValid: true, issues: [] };
|
|
613
782
|
}
|
|
@@ -751,6 +920,197 @@ export class Catalox {
|
|
|
751
920
|
async listCatalogs(_context, _options) {
|
|
752
921
|
return this.deps.catalogs.listAll();
|
|
753
922
|
}
|
|
923
|
+
async searchCatalogItems(context, catalogId, input) {
|
|
924
|
+
const poolLimit = input.poolLimit ?? 200;
|
|
925
|
+
const limit = input.limit ?? 50;
|
|
926
|
+
const base = await this.listCatalogItems(context, catalogId, {
|
|
927
|
+
limit: poolLimit,
|
|
928
|
+
...(input.scope ? { scope: input.scope } : {}),
|
|
929
|
+
...(input.filter ? { filter: input.filter } : {}),
|
|
930
|
+
...(input.sort ? { sort: input.sort } : {}),
|
|
931
|
+
});
|
|
932
|
+
if (base.listOutcome !== "ok")
|
|
933
|
+
return base;
|
|
934
|
+
const q = String(input.text ?? "").toLowerCase().trim();
|
|
935
|
+
if (!q)
|
|
936
|
+
return { ...base, items: [] };
|
|
937
|
+
const textFields = input.textFields ?? [];
|
|
938
|
+
const filtered = base.items.filter((it) => {
|
|
939
|
+
const parts = [];
|
|
940
|
+
if (it.title)
|
|
941
|
+
parts.push(String(it.title));
|
|
942
|
+
if (it.subtitle)
|
|
943
|
+
parts.push(String(it.subtitle));
|
|
944
|
+
const data = it.data;
|
|
945
|
+
for (const p of textFields) {
|
|
946
|
+
const v = this.readPath(data, p);
|
|
947
|
+
if (v == null)
|
|
948
|
+
continue;
|
|
949
|
+
parts.push(typeof v === "string" || typeof v === "number" ? String(v) : JSON.stringify(v));
|
|
950
|
+
}
|
|
951
|
+
return parts.join(" ").toLowerCase().includes(q);
|
|
952
|
+
});
|
|
953
|
+
return { ...base, items: filtered.slice(0, limit) };
|
|
954
|
+
}
|
|
955
|
+
async findCatalogItemsByAi(context, catalogId, input) {
|
|
956
|
+
const poolLimit = input.poolLimit ?? 300;
|
|
957
|
+
const base = await this.listCatalogItems(context, catalogId, {
|
|
958
|
+
limit: poolLimit,
|
|
959
|
+
...(input.scope ? { scope: input.scope } : {}),
|
|
960
|
+
...(input.filter ? { filter: input.filter } : {}),
|
|
961
|
+
...(input.sort ? { sort: input.sort } : {}),
|
|
962
|
+
});
|
|
963
|
+
if (base.listOutcome !== "ok")
|
|
964
|
+
return { query: input.query, hits: [], noMatch: true };
|
|
965
|
+
const items = base.items;
|
|
966
|
+
const candidates = items.map((it) => {
|
|
967
|
+
const title = it.title ? String(it.title) : "";
|
|
968
|
+
const subtitle = it.subtitle ? String(it.subtitle) : "";
|
|
969
|
+
const label = [title, subtitle].filter(Boolean).join(" — ") || String(it.itemId);
|
|
970
|
+
return {
|
|
971
|
+
id: String(it.itemId),
|
|
972
|
+
label,
|
|
973
|
+
metadata: { catalogId: String(catalogId) },
|
|
974
|
+
};
|
|
975
|
+
});
|
|
976
|
+
const { match } = await loadAiFunctions();
|
|
977
|
+
const res = await match({
|
|
978
|
+
query: input.query,
|
|
979
|
+
candidates,
|
|
980
|
+
...(input.guidance ? { guidance: input.guidance } : {}),
|
|
981
|
+
...(input.maxResults != null ? { maxResults: input.maxResults } : {}),
|
|
982
|
+
...(input.minScore != null ? { minScore: input.minScore } : {}),
|
|
983
|
+
...(input.allowNoMatch != null ? { allowNoMatch: input.allowNoMatch } : {}),
|
|
984
|
+
...(input.returnReasons != null ? { returnReasons: input.returnReasons } : {}),
|
|
985
|
+
...(input.additionalInstructions ? { additionalInstructions: input.additionalInstructions } : {}),
|
|
986
|
+
...(input.maxCandidates != null ? { maxCandidates: input.maxCandidates } : {}),
|
|
987
|
+
...(input.mode ? { mode: input.mode } : {}),
|
|
988
|
+
...(input.client ? { client: input.client } : {}),
|
|
989
|
+
...(input.model ? { model: input.model } : {}),
|
|
990
|
+
...(input.temperature != null ? { temperature: input.temperature } : {}),
|
|
991
|
+
...(input.maxTokens != null ? { maxTokens: input.maxTokens } : {}),
|
|
992
|
+
...(input.timeoutMs != null ? { timeoutMs: input.timeoutMs } : {}),
|
|
993
|
+
...(input.vendor != null ? { vendor: input.vendor } : {}),
|
|
994
|
+
});
|
|
995
|
+
const byId = new Map(items.map((it) => [String(it.itemId), it]));
|
|
996
|
+
const hits = res.matches
|
|
997
|
+
.map((m) => {
|
|
998
|
+
const it = byId.get(String(m.id));
|
|
999
|
+
if (!it)
|
|
1000
|
+
return null;
|
|
1001
|
+
return { itemId: it.itemId, score: m.score, ...(m.reason ? { reason: m.reason } : {}), item: it };
|
|
1002
|
+
})
|
|
1003
|
+
.filter(Boolean);
|
|
1004
|
+
return { query: input.query, hits, noMatch: Boolean(res.noMatch) };
|
|
1005
|
+
}
|
|
1006
|
+
async createCatalogItemByAi(context, catalogId, input) {
|
|
1007
|
+
await this.deps.authz.requireBindingAccess(context, context.appId, catalogId, "write");
|
|
1008
|
+
const descRec = await this.deps.descriptors.get(catalogId);
|
|
1009
|
+
if (!descRec)
|
|
1010
|
+
throw new CatalogAdapterError({ catalogId, reason: "missing_descriptor" });
|
|
1011
|
+
const rules = descRec.descriptor.creationRules;
|
|
1012
|
+
if (!rules)
|
|
1013
|
+
throw new CatalogAdapterError({ catalogId, reason: "creation_rules_missing" });
|
|
1014
|
+
if (rules.enabled === false)
|
|
1015
|
+
throw new CatalogAdapterError({ catalogId, reason: "creation_rules_disabled" });
|
|
1016
|
+
const catalog = await this.deps.catalogs.get(catalogId);
|
|
1017
|
+
if (!catalog)
|
|
1018
|
+
throw new CatalogNotFoundError({ catalogId });
|
|
1019
|
+
const existingLimit = input.existingItemsSampleLimit ?? 0;
|
|
1020
|
+
const existingItemsSample = existingLimit > 0
|
|
1021
|
+
? (await this.listCatalogItems(context, catalogId, { limit: existingLimit })).items.map((i) => i.data)
|
|
1022
|
+
: undefined;
|
|
1023
|
+
const { createItem } = await loadAiFunctions();
|
|
1024
|
+
const result = await createItem({
|
|
1025
|
+
...(descRec.descriptor.itemLabel ? { itemLabel: descRec.descriptor.itemLabel } : {}),
|
|
1026
|
+
creationRules: rules,
|
|
1027
|
+
provided: input.provided,
|
|
1028
|
+
fieldSchema: (descRec.descriptor.queryableFields ?? []),
|
|
1029
|
+
...(existingItemsSample ? { existingItemsSample } : {}),
|
|
1030
|
+
...(input.additionalInstructions ? { additionalInstructions: input.additionalInstructions } : {}),
|
|
1031
|
+
...(input.mode ? { mode: input.mode } : {}),
|
|
1032
|
+
...(input.model ? { model: input.model } : {}),
|
|
1033
|
+
...(input.client ? { client: input.client } : {}),
|
|
1034
|
+
...(input.temperature != null ? { temperature: input.temperature } : {}),
|
|
1035
|
+
...(input.maxTokens != null ? { maxTokens: input.maxTokens } : {}),
|
|
1036
|
+
...(input.timeoutMs != null ? { timeoutMs: input.timeoutMs } : {}),
|
|
1037
|
+
...(input.vendor != null ? { vendor: input.vendor } : {}),
|
|
1038
|
+
}, undefined);
|
|
1039
|
+
const out = {
|
|
1040
|
+
catalogId,
|
|
1041
|
+
proposed: result.item ?? {},
|
|
1042
|
+
issues: (result.issues ?? []),
|
|
1043
|
+
...(result.missingInputs ? { missingInputs: result.missingInputs } : {}),
|
|
1044
|
+
noCreate: Boolean(result.noCreate),
|
|
1045
|
+
...(result.reason ? { reason: result.reason } : {}),
|
|
1046
|
+
};
|
|
1047
|
+
const autoPersist = input.autoPersist === true;
|
|
1048
|
+
const hasErrors = (result.issues ?? []).some((i) => i?.severity === "error");
|
|
1049
|
+
if (autoPersist && !out.noCreate && !hasErrors) {
|
|
1050
|
+
if (catalog.sourceMode !== "native") {
|
|
1051
|
+
throw new CatalogAdapterError({ catalogId, reason: "autopersist_mapped_unsupported" });
|
|
1052
|
+
}
|
|
1053
|
+
const writePayload = input.scope != null ? { ...out.proposed, scope: input.scope } : out.proposed;
|
|
1054
|
+
out.item = await this.upsertNativeCatalogItem(context, catalogId, writePayload);
|
|
1055
|
+
}
|
|
1056
|
+
return out;
|
|
1057
|
+
}
|
|
1058
|
+
async modifyCatalogItemByAi(context, catalogId, itemId, input) {
|
|
1059
|
+
await this.deps.authz.requireBindingAccess(context, context.appId, catalogId, "write");
|
|
1060
|
+
const descRec = await this.deps.descriptors.get(catalogId);
|
|
1061
|
+
if (!descRec)
|
|
1062
|
+
throw new CatalogAdapterError({ catalogId, reason: "missing_descriptor" });
|
|
1063
|
+
const rules = descRec.descriptor.modificationRules;
|
|
1064
|
+
if (!rules)
|
|
1065
|
+
throw new CatalogAdapterError({ catalogId, reason: "modification_rules_missing" });
|
|
1066
|
+
if (rules.enabled === false)
|
|
1067
|
+
throw new CatalogAdapterError({ catalogId, reason: "modification_rules_disabled" });
|
|
1068
|
+
const catalog = await this.deps.catalogs.get(catalogId);
|
|
1069
|
+
if (!catalog)
|
|
1070
|
+
throw new CatalogNotFoundError({ catalogId });
|
|
1071
|
+
const got = await this.getCatalogItem(context, catalogId, itemId, input.nativeItemOptions);
|
|
1072
|
+
if (got.outcome === "mapping_blocked") {
|
|
1073
|
+
throw new CatalogAdapterError({ catalogId, reason: "mapping_validation_failed", issues: got.issues });
|
|
1074
|
+
}
|
|
1075
|
+
if (got.outcome === "not_found")
|
|
1076
|
+
throw new CatalogNotFoundError({ catalogId, itemId });
|
|
1077
|
+
const currentItem = (got.item.data ?? {});
|
|
1078
|
+
const { modifyItem } = await loadAiFunctions();
|
|
1079
|
+
const result = await modifyItem({
|
|
1080
|
+
...(descRec.descriptor.itemLabel ? { itemLabel: descRec.descriptor.itemLabel } : {}),
|
|
1081
|
+
currentItem: currentItem,
|
|
1082
|
+
modificationRules: rules,
|
|
1083
|
+
patch: input.patch,
|
|
1084
|
+
fieldSchema: (descRec.descriptor.queryableFields ?? []),
|
|
1085
|
+
...(input.additionalInstructions ? { additionalInstructions: input.additionalInstructions } : {}),
|
|
1086
|
+
...(input.mode ? { mode: input.mode } : {}),
|
|
1087
|
+
...(input.model ? { model: input.model } : {}),
|
|
1088
|
+
...(input.client ? { client: input.client } : {}),
|
|
1089
|
+
...(input.temperature != null ? { temperature: input.temperature } : {}),
|
|
1090
|
+
...(input.maxTokens != null ? { maxTokens: input.maxTokens } : {}),
|
|
1091
|
+
...(input.timeoutMs != null ? { timeoutMs: input.timeoutMs } : {}),
|
|
1092
|
+
...(input.vendor != null ? { vendor: input.vendor } : {}),
|
|
1093
|
+
}, undefined);
|
|
1094
|
+
const out = {
|
|
1095
|
+
catalogId,
|
|
1096
|
+
itemId,
|
|
1097
|
+
proposed: result.item ?? {},
|
|
1098
|
+
diff: (result.diff ?? []),
|
|
1099
|
+
issues: (result.issues ?? []),
|
|
1100
|
+
...(result.violatedRules ? { violatedRules: result.violatedRules } : {}),
|
|
1101
|
+
noChange: Boolean(result.noChange),
|
|
1102
|
+
...(result.reason ? { reason: result.reason } : {}),
|
|
1103
|
+
};
|
|
1104
|
+
const autoPersist = input.autoPersist === true;
|
|
1105
|
+
const hasErrors = (result.issues ?? []).some((i) => i?.severity === "error");
|
|
1106
|
+
if (autoPersist && !out.noChange && !hasErrors) {
|
|
1107
|
+
if (catalog.sourceMode !== "native") {
|
|
1108
|
+
throw new CatalogAdapterError({ catalogId, reason: "autopersist_mapped_unsupported" });
|
|
1109
|
+
}
|
|
1110
|
+
out.item = await this.updateNativeCatalogItem(context, catalogId, itemId, out.proposed, input.nativeItemOptions);
|
|
1111
|
+
}
|
|
1112
|
+
return out;
|
|
1113
|
+
}
|
|
754
1114
|
async bindCatalogToApp(_context, _input) {
|
|
755
1115
|
const existing = await this.deps.bindings.findByAppCatalog(_input.appId, _input.catalogId);
|
|
756
1116
|
if (existing)
|