@x12i/memorix-descriptors 0.1.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 (96) hide show
  1. package/README.md +96 -0
  2. package/dist/admin/create-admin.d.ts +74 -0
  3. package/dist/admin/create-admin.d.ts.map +1 -0
  4. package/dist/admin/create-admin.js +102 -0
  5. package/dist/admin/create-admin.js.map +1 -0
  6. package/dist/catalog/ids.d.ts +12 -0
  7. package/dist/catalog/ids.d.ts.map +1 -0
  8. package/dist/catalog/ids.js +32 -0
  9. package/dist/catalog/ids.js.map +1 -0
  10. package/dist/catalox/client.d.ts +19 -0
  11. package/dist/catalox/client.d.ts.map +1 -0
  12. package/dist/catalox/client.js +51 -0
  13. package/dist/catalox/client.js.map +1 -0
  14. package/dist/cli/index.d.ts +3 -0
  15. package/dist/cli/index.d.ts.map +1 -0
  16. package/dist/cli/index.js +191 -0
  17. package/dist/cli/index.js.map +1 -0
  18. package/dist/collections/env-bridge.d.ts +3 -0
  19. package/dist/collections/env-bridge.d.ts.map +1 -0
  20. package/dist/collections/env-bridge.js +8 -0
  21. package/dist/collections/env-bridge.js.map +1 -0
  22. package/dist/collections/resolve.d.ts +20 -0
  23. package/dist/collections/resolve.d.ts.map +1 -0
  24. package/dist/collections/resolve.js +49 -0
  25. package/dist/collections/resolve.js.map +1 -0
  26. package/dist/index.d.ts +11 -0
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +9 -0
  29. package/dist/index.js.map +1 -0
  30. package/dist/integrity/graph.d.ts +19 -0
  31. package/dist/integrity/graph.d.ts.map +1 -0
  32. package/dist/integrity/graph.js +65 -0
  33. package/dist/integrity/graph.js.map +1 -0
  34. package/dist/integrity/validate.d.ts +4 -0
  35. package/dist/integrity/validate.d.ts.map +1 -0
  36. package/dist/integrity/validate.js +278 -0
  37. package/dist/integrity/validate.js.map +1 -0
  38. package/dist/mutations/common.d.ts +9 -0
  39. package/dist/mutations/common.d.ts.map +1 -0
  40. package/dist/mutations/common.js +108 -0
  41. package/dist/mutations/common.js.map +1 -0
  42. package/dist/mutations/content-type.d.ts +21 -0
  43. package/dist/mutations/content-type.d.ts.map +1 -0
  44. package/dist/mutations/content-type.js +278 -0
  45. package/dist/mutations/content-type.js.map +1 -0
  46. package/dist/mutations/entity.d.ts +21 -0
  47. package/dist/mutations/entity.d.ts.map +1 -0
  48. package/dist/mutations/entity.js +276 -0
  49. package/dist/mutations/entity.js.map +1 -0
  50. package/dist/mutations/item.d.ts +16 -0
  51. package/dist/mutations/item.d.ts.map +1 -0
  52. package/dist/mutations/item.js +131 -0
  53. package/dist/mutations/item.js.map +1 -0
  54. package/dist/mutations/list.d.ts +16 -0
  55. package/dist/mutations/list.d.ts.map +1 -0
  56. package/dist/mutations/list.js +143 -0
  57. package/dist/mutations/list.js.map +1 -0
  58. package/dist/mutations/mapping.d.ts +12 -0
  59. package/dist/mutations/mapping.d.ts.map +1 -0
  60. package/dist/mutations/mapping.js +104 -0
  61. package/dist/mutations/mapping.js.map +1 -0
  62. package/dist/mutations/property.d.ts +18 -0
  63. package/dist/mutations/property.d.ts.map +1 -0
  64. package/dist/mutations/property.js +256 -0
  65. package/dist/mutations/property.js.map +1 -0
  66. package/dist/mutations/relation.d.ts +31 -0
  67. package/dist/mutations/relation.d.ts.map +1 -0
  68. package/dist/mutations/relation.js +195 -0
  69. package/dist/mutations/relation.js.map +1 -0
  70. package/dist/reconcile/index.d.ts +29 -0
  71. package/dist/reconcile/index.d.ts.map +1 -0
  72. package/dist/reconcile/index.js +58 -0
  73. package/dist/reconcile/index.js.map +1 -0
  74. package/dist/seeds/index.d.ts +33 -0
  75. package/dist/seeds/index.d.ts.map +1 -0
  76. package/dist/seeds/index.js +186 -0
  77. package/dist/seeds/index.js.map +1 -0
  78. package/dist/store/snapshot.d.ts +6 -0
  79. package/dist/store/snapshot.d.ts.map +1 -0
  80. package/dist/store/snapshot.js +49 -0
  81. package/dist/store/snapshot.js.map +1 -0
  82. package/dist/tests/validation.test.d.ts +2 -0
  83. package/dist/tests/validation.test.d.ts.map +1 -0
  84. package/dist/tests/validation.test.js +114 -0
  85. package/dist/tests/validation.test.js.map +1 -0
  86. package/dist/types/index.d.ts +151 -0
  87. package/dist/types/index.d.ts.map +1 -0
  88. package/dist/types/index.js +2 -0
  89. package/dist/types/index.js.map +1 -0
  90. package/dist/validation/descriptor-validation.d.ts +20 -0
  91. package/dist/validation/descriptor-validation.d.ts.map +1 -0
  92. package/dist/validation/descriptor-validation.js +148 -0
  93. package/dist/validation/descriptor-validation.js.map +1 -0
  94. package/docs/MEMORIX-CATALOX-CONTRACTS.md +591 -0
  95. package/docs/MEMORIX-DATABASE-CONVENTIONS.md +338 -0
  96. package/package.json +43 -0
@@ -0,0 +1,276 @@
1
+ import { CATALOG_BY_KIND, upsertCatalogItem, } from "../catalox/client.js";
2
+ import { allowedIdFieldsForTarget, defaultIdFieldForTarget, } from "../catalog/ids.js";
3
+ import { ensureMongoCollection, resolveCollectionForEntity, resolveDatabaseForTarget, } from "../collections/resolve.js";
4
+ import { applyProjectedWrites, buildDataByWrite, mutationFailure, mutationSuccess, } from "../mutations/common.js";
5
+ import { defaultItemDescriptorId, defaultListDescriptorId, isKebabCase, validateMemorixEntityDescriptor, validateBootstrapEntityListDescriptor, validateMemorixItemDescriptor, } from "../validation/descriptor-validation.js";
6
+ import { MEMORIX_ENTITY_DESCRIPTORS_CATALOG, MEMORIX_ITEM_DESCRIPTORS_CATALOG, MEMORIX_LIST_DESCRIPTORS_CATALOG, } from "../catalog/ids.js";
7
+ function buildDefaultListDescriptor(input, listId, canonicalKey, initialFields) {
8
+ return {
9
+ id: listId,
10
+ entity: input.entityName,
11
+ title: input.label ?? input.entityName,
12
+ leadingContentType: canonicalKey,
13
+ pagination: { enabled: true, defaultLimit: 50, maxLimit: 200 },
14
+ filters: [],
15
+ fields: initialFields,
16
+ extensions: [],
17
+ includeRelations: [],
18
+ allowedSorts: initialFields,
19
+ allowSortDrivenLeadingOverride: false,
20
+ };
21
+ }
22
+ function buildDefaultItemDescriptor(input, itemId, canonicalKey, idField, initialFields) {
23
+ return {
24
+ id: itemId,
25
+ entity: input.entityName,
26
+ title: input.label ? `${input.label} Detail` : `${input.entityName} Detail`,
27
+ identity: { idField },
28
+ contentTypes: [
29
+ {
30
+ contentType: canonicalKey,
31
+ required: true,
32
+ multiMatch: {
33
+ strategy: "last",
34
+ effectiveDatePath: "capturedAt",
35
+ fallbackEffectiveDatePaths: [],
36
+ },
37
+ },
38
+ ],
39
+ sections: [
40
+ {
41
+ id: "summary",
42
+ title: "Summary",
43
+ fields: initialFields,
44
+ },
45
+ ],
46
+ includeRelations: [],
47
+ };
48
+ }
49
+ function buildEntityDescriptor(input, listId, itemId) {
50
+ const idField = input.identity?.idField ?? defaultIdFieldForTarget(input.target);
51
+ const canonical = input.canonicalContentType;
52
+ const properties = {};
53
+ for (const [key, prop] of Object.entries(input.initialProperties ?? {})) {
54
+ properties[key] = prop;
55
+ }
56
+ return {
57
+ id: input.entityName,
58
+ entityName: input.entityName,
59
+ target: input.target,
60
+ defaultListDescriptorId: listId,
61
+ defaultItemDescriptorId: itemId,
62
+ collectionPrefix: input.collectionPrefix,
63
+ identity: {
64
+ allowedIdFields: allowedIdFieldsForTarget(input.target),
65
+ requiredExactlyOne: true,
66
+ defaultIdField: idField,
67
+ },
68
+ defaults: {
69
+ canonicalContentType: canonical.key,
70
+ dataRoot: canonical.dataRoot ?? "data",
71
+ effectiveDatePath: "capturedAt",
72
+ fallbackEffectiveDatePaths: [],
73
+ },
74
+ contentTypes: {
75
+ [canonical.key]: {
76
+ postfix: canonical.postfix,
77
+ collection: canonical.collection,
78
+ dataRoot: canonical.dataRoot ?? "data",
79
+ isCanonical: true,
80
+ },
81
+ },
82
+ properties,
83
+ relations: {},
84
+ };
85
+ }
86
+ export async function registerEntityDescriptor(ctx, input, options = {}) {
87
+ if (!isKebabCase(input.entityName)) {
88
+ return mutationFailure([
89
+ {
90
+ code: "INVALID_ENTITY_NAME",
91
+ message: `entityName "${input.entityName}" must be kebab-case`,
92
+ },
93
+ ], options);
94
+ }
95
+ const snapshot = await ctx.loadSnapshot();
96
+ if (snapshot.entityDescriptors[input.entityName]) {
97
+ return mutationFailure([
98
+ {
99
+ code: "ENTITY_EXISTS",
100
+ message: `Entity descriptor "${input.entityName}" already exists`,
101
+ },
102
+ ], options);
103
+ }
104
+ const listId = input.defaultListDescriptorId ?? defaultListDescriptorId(input.entityName);
105
+ const itemId = input.defaultItemDescriptorId ?? defaultItemDescriptorId(input.entityName);
106
+ const initialFields = Object.keys(input.initialProperties ?? {}).filter((key) => {
107
+ const prop = input.initialProperties?.[key];
108
+ return prop?.humanReadable === true;
109
+ });
110
+ const entityData = buildEntityDescriptor(input, listId, itemId);
111
+ const listData = buildDefaultListDescriptor(input, listId, input.canonicalContentType.key, initialFields);
112
+ const itemData = buildDefaultItemDescriptor(input, itemId, input.canonicalContentType.key, input.identity?.idField ?? defaultIdFieldForTarget(input.target), initialFields);
113
+ try {
114
+ validateMemorixEntityDescriptor(entityData);
115
+ validateBootstrapEntityListDescriptor(listData);
116
+ validateMemorixItemDescriptor(itemData);
117
+ }
118
+ catch (err) {
119
+ return mutationFailure([
120
+ {
121
+ code: "VALIDATION_FAILED",
122
+ message: err instanceof Error ? err.message : String(err),
123
+ },
124
+ ], options);
125
+ }
126
+ const writes = [
127
+ {
128
+ catalogId: MEMORIX_ENTITY_DESCRIPTORS_CATALOG,
129
+ itemId: input.entityName,
130
+ action: "create",
131
+ },
132
+ {
133
+ catalogId: MEMORIX_LIST_DESCRIPTORS_CATALOG,
134
+ itemId: listId,
135
+ action: "create",
136
+ },
137
+ {
138
+ catalogId: MEMORIX_ITEM_DESCRIPTORS_CATALOG,
139
+ itemId: itemId,
140
+ action: "create",
141
+ },
142
+ ];
143
+ const scope = options.scope ?? input.scope;
144
+ const projected = applyProjectedWrites(snapshot, writes, buildDataByWrite(writes, (write) => {
145
+ if (write.catalogId === MEMORIX_ENTITY_DESCRIPTORS_CATALOG)
146
+ return entityData;
147
+ if (write.catalogId === MEMORIX_LIST_DESCRIPTORS_CATALOG)
148
+ return listData;
149
+ return itemData;
150
+ }));
151
+ const mongoActions = [];
152
+ if (!options.skipMongo && ctx.xronox) {
153
+ const entity = validateMemorixEntityDescriptor(entityData);
154
+ const collection = resolveCollectionForEntity(entity, input.canonicalContentType.key, ctx.env);
155
+ const database = resolveDatabaseForTarget(input.target, ctx.env);
156
+ const mongo = await ensureMongoCollection(ctx.xronox, database, collection, Boolean(options.allowCreateCollection));
157
+ if (mongo)
158
+ mongoActions.push(mongo);
159
+ }
160
+ if (options.dryRun) {
161
+ return mutationSuccess({ entityName: input.entityName }, options, writes, projected, [], mongoActions);
162
+ }
163
+ await upsertCatalogItem(ctx.catalox, CATALOG_BY_KIND.entity, entityData, scope);
164
+ await upsertCatalogItem(ctx.catalox, CATALOG_BY_KIND.list, listData, scope);
165
+ await upsertCatalogItem(ctx.catalox, CATALOG_BY_KIND.item, itemData, scope);
166
+ return mutationSuccess({ entityName: input.entityName }, options, writes, projected, [], mongoActions);
167
+ }
168
+ export async function updateEntityDescriptor(ctx, entityName, patch, options = {}) {
169
+ const snapshot = await ctx.loadSnapshot();
170
+ const current = snapshot.entityDescriptors[entityName];
171
+ if (!current) {
172
+ return mutationFailure([
173
+ { code: "ENTITY_NOT_FOUND", message: `Entity "${entityName}" not found` },
174
+ ], options);
175
+ }
176
+ const forbidden = ["id", "entityName"];
177
+ for (const key of forbidden) {
178
+ if (key in patch) {
179
+ return mutationFailure([
180
+ {
181
+ code: "FORBIDDEN_PATCH",
182
+ message: `Cannot patch ${key} in place — use renameEntityDescriptor`,
183
+ },
184
+ ], options);
185
+ }
186
+ }
187
+ const nextData = { ...current, ...patch };
188
+ try {
189
+ validateMemorixEntityDescriptor(nextData);
190
+ }
191
+ catch (err) {
192
+ return mutationFailure([
193
+ {
194
+ code: "VALIDATION_FAILED",
195
+ message: err instanceof Error ? err.message : String(err),
196
+ },
197
+ ], options);
198
+ }
199
+ const writes = [
200
+ {
201
+ catalogId: MEMORIX_ENTITY_DESCRIPTORS_CATALOG,
202
+ itemId: entityName,
203
+ action: "update",
204
+ },
205
+ ];
206
+ const projected = applyProjectedWrites(snapshot, writes, buildDataByWrite(writes, () => nextData));
207
+ if (options.dryRun) {
208
+ return mutationSuccess({ entityName }, options, writes, projected);
209
+ }
210
+ await upsertCatalogItem(ctx.catalox, CATALOG_BY_KIND.entity, nextData, options.scope);
211
+ return mutationSuccess({ entityName }, options, writes, projected);
212
+ }
213
+ export async function removeEntityDescriptor(ctx, entityName, options = {}) {
214
+ const snapshot = await ctx.loadSnapshot();
215
+ const current = snapshot.entityDescriptors[entityName];
216
+ if (!current) {
217
+ return mutationFailure([
218
+ { code: "ENTITY_NOT_FOUND", message: `Entity "${entityName}" not found` },
219
+ ], options);
220
+ }
221
+ const mode = options.mode ?? "soft";
222
+ if (mode === "soft") {
223
+ const softResult = await updateEntityDescriptor(ctx, entityName, { deprecated: true, hiddenFromDiscovery: true }, options);
224
+ return {
225
+ ...softResult,
226
+ data: softResult.ok ? { entityName, mode } : undefined,
227
+ };
228
+ }
229
+ const inboundRelations = Object.entries(snapshot.entityDescriptors).flatMap(([sourceId, entity]) => Object.entries(entity.relations ?? {})
230
+ .filter(([, rel]) => rel.targetEntity === entityName)
231
+ .map(([relationKey]) => ({ sourceId, relationKey })));
232
+ if (inboundRelations.length > 0 && !options.force) {
233
+ return mutationFailure([
234
+ {
235
+ code: "INBOUND_RELATIONS",
236
+ message: `Entity "${entityName}" has inbound relations — use force or remove relations first`,
237
+ },
238
+ ], options);
239
+ }
240
+ const writes = [
241
+ {
242
+ catalogId: MEMORIX_ENTITY_DESCRIPTORS_CATALOG,
243
+ itemId: entityName,
244
+ action: "delete",
245
+ },
246
+ ];
247
+ const entity = current;
248
+ if (entity.defaultListDescriptorId) {
249
+ writes.push({
250
+ catalogId: MEMORIX_LIST_DESCRIPTORS_CATALOG,
251
+ itemId: entity.defaultListDescriptorId,
252
+ action: "delete",
253
+ });
254
+ }
255
+ if (entity.defaultItemDescriptorId) {
256
+ writes.push({
257
+ catalogId: MEMORIX_ITEM_DESCRIPTORS_CATALOG,
258
+ itemId: entity.defaultItemDescriptorId,
259
+ action: "delete",
260
+ });
261
+ }
262
+ const projected = applyProjectedWrites(snapshot, writes, new Map());
263
+ if (options.dryRun) {
264
+ return mutationSuccess({ entityName, mode }, options, writes, projected);
265
+ }
266
+ for (const write of writes) {
267
+ const catalog = write.catalogId === MEMORIX_LIST_DESCRIPTORS_CATALOG
268
+ ? CATALOG_BY_KIND.list
269
+ : write.catalogId === MEMORIX_ITEM_DESCRIPTORS_CATALOG
270
+ ? CATALOG_BY_KIND.item
271
+ : CATALOG_BY_KIND.entity;
272
+ await ctx.catalox.deleteNativeCatalogItem(catalog, write.itemId);
273
+ }
274
+ return mutationSuccess({ entityName, mode }, options, writes, projected);
275
+ }
276
+ //# sourceMappingURL=entity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity.js","sourceRoot":"","sources":["../../src/mutations/entity.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { EntityMutationContext } from "./entity.js";
2
+ import type { DescriptorMutationOptions, DescriptorMutationResult } from "../types/index.js";
3
+ export declare function createItemDescriptor(ctx: EntityMutationContext, input: Record<string, unknown>, options?: DescriptorMutationOptions): Promise<DescriptorMutationResult<{
4
+ id: string;
5
+ }>>;
6
+ export declare function updateItemDescriptor(ctx: EntityMutationContext, id: string, patch: Record<string, unknown>, options?: DescriptorMutationOptions): Promise<DescriptorMutationResult<{
7
+ id: string;
8
+ }>>;
9
+ export declare function removeItemDescriptor(ctx: EntityMutationContext, id: string, options?: DescriptorMutationOptions): Promise<DescriptorMutationResult<{
10
+ id: string;
11
+ }>>;
12
+ export declare function setEntityDefaultItem(ctx: EntityMutationContext, entityName: string, itemDescriptorId: string, options?: DescriptorMutationOptions): Promise<DescriptorMutationResult<{
13
+ entityName: string;
14
+ itemDescriptorId: string;
15
+ }>>;
16
+ //# sourceMappingURL=item.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"item.d.ts","sourceRoot":"","sources":["../../src/mutations/item.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,KAAK,EAEV,yBAAyB,EACzB,wBAAwB,EACzB,MAAM,mBAAmB,CAAC;AAM3B,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,qBAAqB,EAC1B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,wBAAwB,CAAC;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAkDnD;AAED,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,qBAAqB,EAC1B,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,wBAAwB,CAAC;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAoCnD;AAED,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,qBAAqB,EAC1B,EAAE,EAAE,MAAM,EACV,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,wBAAwB,CAAC;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CA+BnD;AAED,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,qBAAqB,EAC1B,UAAU,EAAE,MAAM,EAClB,gBAAgB,EAAE,MAAM,EACxB,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,wBAAwB,CAAC;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAiCrF"}
@@ -0,0 +1,131 @@
1
+ import { CATALOG_BY_KIND, upsertCatalogItem, } from "../catalox/client.js";
2
+ import { MEMORIX_ITEM_DESCRIPTORS_CATALOG } from "../catalog/ids.js";
3
+ import { applyProjectedWrites, buildDataByWrite, mutationFailure, mutationSuccess, } from "./common.js";
4
+ import { validateMemorixEntityDescriptor, validateMemorixItemDescriptor, } from "../validation/descriptor-validation.js";
5
+ export async function createItemDescriptor(ctx, input, options = {}) {
6
+ let item;
7
+ try {
8
+ item = validateMemorixItemDescriptor(input);
9
+ }
10
+ catch (err) {
11
+ return mutationFailure([
12
+ {
13
+ code: "VALIDATION_FAILED",
14
+ message: err instanceof Error ? err.message : String(err),
15
+ },
16
+ ], options);
17
+ }
18
+ const snapshot = await ctx.loadSnapshot();
19
+ if (snapshot.itemDescriptors[item.id]) {
20
+ return mutationFailure([
21
+ { code: "ITEM_EXISTS", message: `Item descriptor "${item.id}" already exists` },
22
+ ], options);
23
+ }
24
+ const entityRaw = snapshot.entityDescriptors[item.entity];
25
+ if (!entityRaw) {
26
+ return mutationFailure([
27
+ {
28
+ code: "UNKNOWN_ENTITY",
29
+ message: `Item references unknown entity "${item.entity}"`,
30
+ },
31
+ ], options);
32
+ }
33
+ validateMemorixEntityDescriptor(entityRaw);
34
+ const writes = [
35
+ {
36
+ catalogId: MEMORIX_ITEM_DESCRIPTORS_CATALOG,
37
+ itemId: item.id,
38
+ action: "create",
39
+ },
40
+ ];
41
+ const projected = applyProjectedWrites(snapshot, writes, buildDataByWrite(writes, () => input));
42
+ if (options.dryRun) {
43
+ return mutationSuccess({ id: item.id }, options, writes, projected);
44
+ }
45
+ await upsertCatalogItem(ctx.catalox, CATALOG_BY_KIND.item, input, options.scope);
46
+ return mutationSuccess({ id: item.id }, options, writes, projected);
47
+ }
48
+ export async function updateItemDescriptor(ctx, id, patch, options = {}) {
49
+ const snapshot = await ctx.loadSnapshot();
50
+ const current = snapshot.itemDescriptors[id];
51
+ if (!current) {
52
+ return mutationFailure([
53
+ { code: "ITEM_NOT_FOUND", message: `Item descriptor "${id}" not found` },
54
+ ], options);
55
+ }
56
+ const nextData = { ...current, ...patch, id };
57
+ try {
58
+ validateMemorixItemDescriptor(nextData);
59
+ }
60
+ catch (err) {
61
+ return mutationFailure([
62
+ {
63
+ code: "VALIDATION_FAILED",
64
+ message: err instanceof Error ? err.message : String(err),
65
+ },
66
+ ], options);
67
+ }
68
+ const writes = [
69
+ { catalogId: MEMORIX_ITEM_DESCRIPTORS_CATALOG, itemId: id, action: "update" },
70
+ ];
71
+ const projected = applyProjectedWrites(snapshot, writes, buildDataByWrite(writes, () => nextData));
72
+ if (options.dryRun) {
73
+ return mutationSuccess({ id }, options, writes, projected);
74
+ }
75
+ await upsertCatalogItem(ctx.catalox, CATALOG_BY_KIND.item, nextData, options.scope);
76
+ return mutationSuccess({ id }, options, writes, projected);
77
+ }
78
+ export async function removeItemDescriptor(ctx, id, options = {}) {
79
+ const snapshot = await ctx.loadSnapshot();
80
+ if (!snapshot.itemDescriptors[id]) {
81
+ return mutationFailure([
82
+ { code: "ITEM_NOT_FOUND", message: `Item descriptor "${id}" not found` },
83
+ ], options);
84
+ }
85
+ const defaultFor = Object.entries(snapshot.entityDescriptors).find(([, entity]) => entity.defaultItemDescriptorId === id);
86
+ if (defaultFor && !options.force) {
87
+ return mutationFailure([
88
+ {
89
+ code: "DEFAULT_ITEM",
90
+ message: `Item "${id}" is default for entity "${defaultFor[0]}"`,
91
+ },
92
+ ], options);
93
+ }
94
+ const writes = [
95
+ { catalogId: MEMORIX_ITEM_DESCRIPTORS_CATALOG, itemId: id, action: "delete" },
96
+ ];
97
+ const projected = applyProjectedWrites(snapshot, writes, new Map());
98
+ if (options.dryRun) {
99
+ return mutationSuccess({ id }, options, writes, projected);
100
+ }
101
+ await ctx.catalox.deleteNativeCatalogItem(CATALOG_BY_KIND.item, id);
102
+ return mutationSuccess({ id }, options, writes, projected);
103
+ }
104
+ export async function setEntityDefaultItem(ctx, entityName, itemDescriptorId, options = {}) {
105
+ const snapshot = await ctx.loadSnapshot();
106
+ const itemRaw = snapshot.itemDescriptors[itemDescriptorId];
107
+ if (!itemRaw) {
108
+ return mutationFailure([
109
+ {
110
+ code: "ITEM_NOT_FOUND",
111
+ message: `Item descriptor "${itemDescriptorId}" not found`,
112
+ },
113
+ ], options);
114
+ }
115
+ const item = validateMemorixItemDescriptor(itemRaw);
116
+ if (item.entity !== entityName) {
117
+ return mutationFailure([
118
+ {
119
+ code: "ENTITY_MISMATCH",
120
+ message: `Item entity "${item.entity}" does not match "${entityName}"`,
121
+ },
122
+ ], options);
123
+ }
124
+ const { updateEntityDescriptor } = await import("./entity.js");
125
+ const res = await updateEntityDescriptor(ctx, entityName, { defaultItemDescriptorId: itemDescriptorId }, options);
126
+ return {
127
+ ...res,
128
+ data: res.ok ? { entityName, itemDescriptorId } : undefined,
129
+ };
130
+ }
131
+ //# sourceMappingURL=item.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"item.js","sourceRoot":"","sources":["../../src/mutations/item.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { EntityMutationContext } from "./entity.js";
2
+ import type { DescriptorMutationOptions, DescriptorMutationResult } from "../types/index.js";
3
+ export declare function createListDescriptor(ctx: EntityMutationContext, input: Record<string, unknown>, options?: DescriptorMutationOptions): Promise<DescriptorMutationResult<{
4
+ id: string;
5
+ }>>;
6
+ export declare function updateListDescriptor(ctx: EntityMutationContext, id: string, patch: Record<string, unknown>, options?: DescriptorMutationOptions): Promise<DescriptorMutationResult<{
7
+ id: string;
8
+ }>>;
9
+ export declare function removeListDescriptor(ctx: EntityMutationContext, id: string, options?: DescriptorMutationOptions): Promise<DescriptorMutationResult<{
10
+ id: string;
11
+ }>>;
12
+ export declare function setEntityDefaultList(ctx: EntityMutationContext, entityName: string, listDescriptorId: string, options?: DescriptorMutationOptions): Promise<DescriptorMutationResult<{
13
+ entityName: string;
14
+ listDescriptorId: string;
15
+ }>>;
16
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/mutations/list.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,KAAK,EAEV,yBAAyB,EACzB,wBAAwB,EACzB,MAAM,mBAAmB,CAAC;AAM3B,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,qBAAqB,EAC1B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,wBAAwB,CAAC;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAoDnD;AAED,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,qBAAqB,EAC1B,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,wBAAwB,CAAC;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAoCnD;AAED,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,qBAAqB,EAC1B,EAAE,EAAE,MAAM,EACV,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,wBAAwB,CAAC;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CA+BnD;AAED,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,qBAAqB,EAC1B,UAAU,EAAE,MAAM,EAClB,gBAAgB,EAAE,MAAM,EACxB,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,wBAAwB,CAAC;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAiCrF"}
@@ -0,0 +1,143 @@
1
+ import { CATALOG_BY_KIND, upsertCatalogItem, } from "../catalox/client.js";
2
+ import { MEMORIX_LIST_DESCRIPTORS_CATALOG } from "../catalog/ids.js";
3
+ import { applyProjectedWrites, buildDataByWrite, mutationFailure, mutationSuccess, } from "./common.js";
4
+ import { validateMemorixEntityDescriptor, validateMemorixListDescriptor, } from "../validation/descriptor-validation.js";
5
+ export async function createListDescriptor(ctx, input, options = {}) {
6
+ let list;
7
+ try {
8
+ list = validateMemorixListDescriptor(input);
9
+ }
10
+ catch (err) {
11
+ return mutationFailure([
12
+ {
13
+ code: "VALIDATION_FAILED",
14
+ message: err instanceof Error ? err.message : String(err),
15
+ },
16
+ ], options);
17
+ }
18
+ const snapshot = await ctx.loadSnapshot();
19
+ if (snapshot.listDescriptors[list.id]) {
20
+ return mutationFailure([
21
+ { code: "LIST_EXISTS", message: `List descriptor "${list.id}" already exists` },
22
+ ], options);
23
+ }
24
+ if (list.kind !== "workspace") {
25
+ const entityRaw = snapshot.entityDescriptors[list.entity];
26
+ if (!entityRaw) {
27
+ return mutationFailure([
28
+ {
29
+ code: "UNKNOWN_ENTITY",
30
+ message: `List references unknown entity "${list.entity}"`,
31
+ },
32
+ ], options);
33
+ }
34
+ validateMemorixEntityDescriptor(entityRaw);
35
+ }
36
+ const writes = [
37
+ {
38
+ catalogId: MEMORIX_LIST_DESCRIPTORS_CATALOG,
39
+ itemId: list.id,
40
+ action: "create",
41
+ },
42
+ ];
43
+ const projected = applyProjectedWrites(snapshot, writes, buildDataByWrite(writes, () => input));
44
+ if (options.dryRun) {
45
+ return mutationSuccess({ id: list.id }, options, writes, projected);
46
+ }
47
+ await upsertCatalogItem(ctx.catalox, CATALOG_BY_KIND.list, input, options.scope);
48
+ return mutationSuccess({ id: list.id }, options, writes, projected);
49
+ }
50
+ export async function updateListDescriptor(ctx, id, patch, options = {}) {
51
+ const snapshot = await ctx.loadSnapshot();
52
+ const current = snapshot.listDescriptors[id];
53
+ if (!current) {
54
+ return mutationFailure([
55
+ { code: "LIST_NOT_FOUND", message: `List descriptor "${id}" not found` },
56
+ ], options);
57
+ }
58
+ const nextData = { ...current, ...patch, id };
59
+ try {
60
+ validateMemorixListDescriptor(nextData);
61
+ }
62
+ catch (err) {
63
+ return mutationFailure([
64
+ {
65
+ code: "VALIDATION_FAILED",
66
+ message: err instanceof Error ? err.message : String(err),
67
+ },
68
+ ], options);
69
+ }
70
+ const writes = [
71
+ { catalogId: MEMORIX_LIST_DESCRIPTORS_CATALOG, itemId: id, action: "update" },
72
+ ];
73
+ const projected = applyProjectedWrites(snapshot, writes, buildDataByWrite(writes, () => nextData));
74
+ if (options.dryRun) {
75
+ return mutationSuccess({ id }, options, writes, projected);
76
+ }
77
+ await upsertCatalogItem(ctx.catalox, CATALOG_BY_KIND.list, nextData, options.scope);
78
+ return mutationSuccess({ id }, options, writes, projected);
79
+ }
80
+ export async function removeListDescriptor(ctx, id, options = {}) {
81
+ const snapshot = await ctx.loadSnapshot();
82
+ if (!snapshot.listDescriptors[id]) {
83
+ return mutationFailure([
84
+ { code: "LIST_NOT_FOUND", message: `List descriptor "${id}" not found` },
85
+ ], options);
86
+ }
87
+ const defaultFor = Object.entries(snapshot.entityDescriptors).find(([, entity]) => entity.defaultListDescriptorId === id);
88
+ if (defaultFor && !options.force) {
89
+ return mutationFailure([
90
+ {
91
+ code: "DEFAULT_LIST",
92
+ message: `List "${id}" is default for entity "${defaultFor[0]}"`,
93
+ },
94
+ ], options);
95
+ }
96
+ const writes = [
97
+ { catalogId: MEMORIX_LIST_DESCRIPTORS_CATALOG, itemId: id, action: "delete" },
98
+ ];
99
+ const projected = applyProjectedWrites(snapshot, writes, new Map());
100
+ if (options.dryRun) {
101
+ return mutationSuccess({ id }, options, writes, projected);
102
+ }
103
+ await ctx.catalox.deleteNativeCatalogItem(CATALOG_BY_KIND.list, id);
104
+ return mutationSuccess({ id }, options, writes, projected);
105
+ }
106
+ export async function setEntityDefaultList(ctx, entityName, listDescriptorId, options = {}) {
107
+ const snapshot = await ctx.loadSnapshot();
108
+ const listRaw = snapshot.listDescriptors[listDescriptorId];
109
+ if (!listRaw) {
110
+ return mutationFailure([
111
+ {
112
+ code: "LIST_NOT_FOUND",
113
+ message: `List descriptor "${listDescriptorId}" not found`,
114
+ },
115
+ ], options);
116
+ }
117
+ const list = validateMemorixListDescriptor(listRaw);
118
+ if (list.kind === "workspace") {
119
+ return mutationFailure([
120
+ {
121
+ code: "WORKSPACE_LIST",
122
+ message: "Workspace lists cannot be entity defaults",
123
+ },
124
+ ], options);
125
+ }
126
+ if (list.entity !== entityName) {
127
+ return mutationFailure([
128
+ {
129
+ code: "ENTITY_MISMATCH",
130
+ message: `List entity "${list.entity}" does not match "${entityName}"`,
131
+ },
132
+ ], options);
133
+ }
134
+ return updateEntityDescriptorPatch(ctx, entityName, {
135
+ defaultListDescriptorId: listDescriptorId,
136
+ }, options, { entityName, listDescriptorId });
137
+ }
138
+ async function updateEntityDescriptorPatch(ctx, entityName, patch, options, result) {
139
+ const { updateEntityDescriptor } = await import("./entity.js");
140
+ const res = await updateEntityDescriptor(ctx, entityName, patch, options);
141
+ return { ...res, data: res.ok ? result : undefined };
142
+ }
143
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/mutations/list.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { EntityMutationContext } from "./entity.js";
2
+ import type { DescriptorMutationOptions, DescriptorMutationResult, MemorixCompletionMapping } from "../types/index.js";
3
+ export declare function registerMapping(ctx: EntityMutationContext, input: MemorixCompletionMapping, options?: DescriptorMutationOptions): Promise<DescriptorMutationResult<{
4
+ id: string;
5
+ }>>;
6
+ export declare function updateMapping(ctx: EntityMutationContext, id: string, patch: Partial<MemorixCompletionMapping>, options?: DescriptorMutationOptions): Promise<DescriptorMutationResult<{
7
+ id: string;
8
+ }>>;
9
+ export declare function removeMapping(ctx: EntityMutationContext, id: string, options?: DescriptorMutationOptions): Promise<DescriptorMutationResult<{
10
+ id: string;
11
+ }>>;
12
+ //# sourceMappingURL=mapping.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapping.d.ts","sourceRoot":"","sources":["../../src/mutations/mapping.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,KAAK,EAEV,yBAAyB,EACzB,wBAAwB,EACxB,wBAAwB,EACzB,MAAM,mBAAmB,CAAC;AAG3B,wBAAsB,eAAe,CACnC,GAAG,EAAE,qBAAqB,EAC1B,KAAK,EAAE,wBAAwB,EAC/B,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,wBAAwB,CAAC;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAqCnD;AAED,wBAAsB,aAAa,CACjC,GAAG,EAAE,qBAAqB,EAC1B,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,OAAO,CAAC,wBAAwB,CAAC,EACxC,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,wBAAwB,CAAC;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAuCnD;AAED,wBAAsB,aAAa,CACjC,GAAG,EAAE,qBAAqB,EAC1B,EAAE,EAAE,MAAM,EACV,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,wBAAwB,CAAC;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAuBnD"}