@raytio/mcp-server 10.3.0 → 10.4.1
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 +2 -0
- package/dist/authorization.d.ts.map +1 -1
- package/dist/authorization.js +2 -0
- package/dist/authorization.js.map +1 -1
- package/dist/contracts/tool-binding-manifest.d.ts +986 -0
- package/dist/contracts/tool-binding-manifest.d.ts.map +1 -0
- package/dist/contracts/tool-binding-manifest.js +242 -0
- package/dist/contracts/tool-binding-manifest.js.map +1 -0
- package/dist/tools/_shared/date-range.d.ts +16 -0
- package/dist/tools/_shared/date-range.d.ts.map +1 -0
- package/dist/tools/_shared/date-range.js +28 -0
- package/dist/tools/_shared/date-range.js.map +1 -0
- package/dist/tools/_shared/side-effect.d.ts.map +1 -1
- package/dist/tools/_shared/side-effect.js +3 -1
- package/dist/tools/_shared/side-effect.js.map +1 -1
- package/dist/tools/domains.d.ts.map +1 -1
- package/dist/tools/domains.js +21 -1
- package/dist/tools/domains.js.map +1 -1
- package/dist/tools/gpm/generated-reads.d.ts +5 -0
- package/dist/tools/gpm/generated-reads.d.ts.map +1 -0
- package/dist/tools/gpm/generated-reads.js +28 -0
- package/dist/tools/gpm/generated-reads.js.map +1 -0
- package/dist/tools/gpm/gpm-item-deactivate.d.ts +11 -0
- package/dist/tools/gpm/gpm-item-deactivate.d.ts.map +1 -0
- package/dist/tools/gpm/gpm-item-deactivate.js +45 -0
- package/dist/tools/gpm/gpm-item-deactivate.js.map +1 -0
- package/dist/tools/gpm/gpm-item-register.d.ts +21 -0
- package/dist/tools/gpm/gpm-item-register.d.ts.map +1 -0
- package/dist/tools/gpm/gpm-item-register.js +149 -0
- package/dist/tools/gpm/gpm-item-register.js.map +1 -0
- package/dist/tools/gpm/index.d.ts +5 -0
- package/dist/tools/gpm/index.d.ts.map +1 -0
- package/dist/tools/gpm/index.js +10 -0
- package/dist/tools/gpm/index.js.map +1 -0
- package/dist/tools/imports/index.d.ts +10 -87
- package/dist/tools/imports/index.d.ts.map +1 -1
- package/dist/tools/imports/index.js +11 -3
- package/dist/tools/imports/index.js.map +1 -1
- package/dist/tools/pcm/generated-reads.d.ts +5 -0
- package/dist/tools/pcm/generated-reads.d.ts.map +1 -0
- package/dist/tools/pcm/generated-reads.js +26 -0
- package/dist/tools/pcm/generated-reads.js.map +1 -0
- package/dist/tools/pcm/index.d.ts +5 -0
- package/dist/tools/pcm/index.d.ts.map +1 -0
- package/dist/tools/pcm/index.js +16 -0
- package/dist/tools/pcm/index.js.map +1 -0
- package/dist/tools/pcm/pcm-price-list-deactivate.d.ts +11 -0
- package/dist/tools/pcm/pcm-price-list-deactivate.d.ts.map +1 -0
- package/dist/tools/pcm/pcm-price-list-deactivate.js +46 -0
- package/dist/tools/pcm/pcm-price-list-deactivate.js.map +1 -0
- package/dist/tools/pcm/pcm-price-list-register.d.ts +21 -0
- package/dist/tools/pcm/pcm-price-list-register.d.ts.map +1 -0
- package/dist/tools/pcm/pcm-price-list-register.js +96 -0
- package/dist/tools/pcm/pcm-price-list-register.js.map +1 -0
- package/dist/tools/pcm/pcm-price-list-version-create.d.ts +19 -0
- package/dist/tools/pcm/pcm-price-list-version-create.d.ts.map +1 -0
- package/dist/tools/pcm/pcm-price-list-version-create.js +85 -0
- package/dist/tools/pcm/pcm-price-list-version-create.js.map +1 -0
- package/dist/tools/ppm/template-slot-create.d.ts.map +1 -1
- package/dist/tools/ppm/template-slot-create.js +4 -2
- package/dist/tools/ppm/template-slot-create.js.map +1 -1
- package/dist/tools/ppm/work-item-create.d.ts.map +1 -1
- package/dist/tools/ppm/work-item-create.js +4 -2
- package/dist/tools/ppm/work-item-create.js.map +1 -1
- package/dist/tools/role-mapping.d.ts.map +1 -1
- package/dist/tools/role-mapping.js +7 -1
- package/dist/tools/role-mapping.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-binding-manifest.d.ts","sourceRoot":"","sources":["../../src/contracts/tool-binding-manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAEL,KAAK,uBAAuB,EAC7B,MAAM,gCAAgC,CAAC;AAExC,QAAA,MAAM,eAAe,+DAA6D,CAAC;AAmDnF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAI5B,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGpC,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAC5E,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D;;;;GAIG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsEQ,CAAC;AAEzC,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;IAC3C,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC5B,cAAc,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACrC;AAED,gFAAgF;AAChF,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,uBAAuB,EACjC,YAAY,EAAE,SAAS,gBAAgB,EAAE,GACxC,mBAAmB,CAwFrB;AAID;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,uBAAuB,GACjC,OAAO,CAmBT"}
|
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { loadPersistResourceContract, } from './persist-resource-contract.js';
|
|
3
|
+
const operationSchema = z.enum(['create', 'update', 'filter', 'read', 'response']);
|
|
4
|
+
const nonEmptyReason = z.string().trim().min(1, 'Every semantic override requires a reason');
|
|
5
|
+
const mappedFieldSchema = z.object({
|
|
6
|
+
toolField: z.string().min(1),
|
|
7
|
+
upstreamField: z.string().min(1),
|
|
8
|
+
mapping: z.enum(['direct', 'alias']),
|
|
9
|
+
requirement: z.enum(['upstream', 'optional']),
|
|
10
|
+
});
|
|
11
|
+
const overrideSchema = z.discriminatedUnion('kind', [
|
|
12
|
+
z.object({ kind: z.literal('database_default'), reason: nonEmptyReason }),
|
|
13
|
+
z.object({ kind: z.literal('trigger'), reason: nonEmptyReason }),
|
|
14
|
+
z.object({ kind: z.literal('generated'), reason: nonEmptyReason }),
|
|
15
|
+
z.object({ kind: z.literal('auth_context'), reason: nonEmptyReason }),
|
|
16
|
+
z.object({ kind: z.literal('composite_logic'), reason: nonEmptyReason }),
|
|
17
|
+
z.object({ kind: z.literal('hidden'), reason: nonEmptyReason }),
|
|
18
|
+
z.object({ kind: z.literal('nullable'), reason: nonEmptyReason }),
|
|
19
|
+
z.object({
|
|
20
|
+
kind: z.literal('conditional'),
|
|
21
|
+
reason: nonEmptyReason,
|
|
22
|
+
condition: z.string().trim().min(1),
|
|
23
|
+
}),
|
|
24
|
+
]);
|
|
25
|
+
const overriddenFieldSchema = z.object({
|
|
26
|
+
toolField: z.string().min(1).optional(),
|
|
27
|
+
upstreamField: z.string().min(1),
|
|
28
|
+
override: overrideSchema,
|
|
29
|
+
});
|
|
30
|
+
const surfaceSchema = z.object({
|
|
31
|
+
operation: operationSchema,
|
|
32
|
+
fields: z.array(mappedFieldSchema),
|
|
33
|
+
overrides: z.array(overriddenFieldSchema),
|
|
34
|
+
});
|
|
35
|
+
const authoritySchema = z.discriminatedUnion('kind', [
|
|
36
|
+
z.object({ kind: z.literal('relation'), resourceId: z.string().min(1) }),
|
|
37
|
+
z.object({
|
|
38
|
+
kind: z.literal('endpoint'),
|
|
39
|
+
endpoint: z.string().min(1),
|
|
40
|
+
fields: z.array(z.string().min(1)),
|
|
41
|
+
}),
|
|
42
|
+
z.object({
|
|
43
|
+
kind: z.literal('composite'),
|
|
44
|
+
sources: z.array(z.string().min(1)).min(2),
|
|
45
|
+
reason: nonEmptyReason,
|
|
46
|
+
}),
|
|
47
|
+
]);
|
|
48
|
+
export const toolBindingSchema = z.object({
|
|
49
|
+
toolName: z.string().min(1),
|
|
50
|
+
authority: authoritySchema,
|
|
51
|
+
surfaces: z.array(surfaceSchema).min(1),
|
|
52
|
+
});
|
|
53
|
+
export const toolBindingManifestSchema = z.object({
|
|
54
|
+
version: z.literal(1),
|
|
55
|
+
tools: z.array(toolBindingSchema),
|
|
56
|
+
});
|
|
57
|
+
/**
|
|
58
|
+
* Initial manifest for direct PPM bindings. Each operation has its own field
|
|
59
|
+
* surface: sharing a relation never implies identical create, update, filter,
|
|
60
|
+
* and response semantics.
|
|
61
|
+
*/
|
|
62
|
+
export const toolBindingManifest = {
|
|
63
|
+
version: 1,
|
|
64
|
+
tools: [
|
|
65
|
+
{
|
|
66
|
+
toolName: 'ppm_work_item_create',
|
|
67
|
+
authority: { kind: 'relation', resourceId: 'ppm_work_items' },
|
|
68
|
+
surfaces: [
|
|
69
|
+
{
|
|
70
|
+
operation: 'create',
|
|
71
|
+
fields: [{ toolField: 'role_id', upstreamField: 'role_id', mapping: 'direct', requirement: 'upstream' }],
|
|
72
|
+
overrides: [
|
|
73
|
+
{
|
|
74
|
+
upstreamField: 'tenant_id',
|
|
75
|
+
override: {
|
|
76
|
+
kind: 'auth_context',
|
|
77
|
+
reason: 'Tenant identity is derived from the authenticated JWT and is never caller-controlled.',
|
|
78
|
+
},
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
upstreamField: 'created_date',
|
|
82
|
+
override: {
|
|
83
|
+
kind: 'trigger',
|
|
84
|
+
reason: 'Audit timestamps are populated by Persist rather than accepted from MCP callers.',
|
|
85
|
+
},
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
upstreamField: 'updated_date',
|
|
89
|
+
override: {
|
|
90
|
+
kind: 'trigger',
|
|
91
|
+
reason: 'Audit timestamps are populated by Persist rather than accepted from MCP callers.',
|
|
92
|
+
},
|
|
93
|
+
},
|
|
94
|
+
],
|
|
95
|
+
},
|
|
96
|
+
],
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
toolName: 'ppm_template_slot_create',
|
|
100
|
+
authority: { kind: 'relation', resourceId: 'ppm_epic_template_slots' },
|
|
101
|
+
surfaces: [
|
|
102
|
+
{
|
|
103
|
+
operation: 'create',
|
|
104
|
+
fields: [
|
|
105
|
+
{ toolField: 'template_id', upstreamField: 'template_id', mapping: 'direct', requirement: 'upstream' },
|
|
106
|
+
{ toolField: 'slot_code', upstreamField: 'slot_code', mapping: 'direct', requirement: 'upstream' },
|
|
107
|
+
{ toolField: 'slot_name', upstreamField: 'slot_name', mapping: 'direct', requirement: 'upstream' },
|
|
108
|
+
{ toolField: 'slot_order', upstreamField: 'slot_order', mapping: 'direct', requirement: 'optional' },
|
|
109
|
+
{ toolField: 'role_id', upstreamField: 'role_id', mapping: 'direct', requirement: 'upstream' },
|
|
110
|
+
],
|
|
111
|
+
overrides: [
|
|
112
|
+
{
|
|
113
|
+
upstreamField: 'tenant_id',
|
|
114
|
+
override: {
|
|
115
|
+
kind: 'auth_context',
|
|
116
|
+
reason: 'Tenant identity is derived from the authenticated JWT and is never caller-controlled.',
|
|
117
|
+
},
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
upstreamField: 'slot_order',
|
|
121
|
+
toolField: 'slot_order',
|
|
122
|
+
override: {
|
|
123
|
+
kind: 'database_default',
|
|
124
|
+
reason: 'Persist supplies the default ordering value when the caller omits slot_order.',
|
|
125
|
+
},
|
|
126
|
+
},
|
|
127
|
+
],
|
|
128
|
+
},
|
|
129
|
+
],
|
|
130
|
+
},
|
|
131
|
+
],
|
|
132
|
+
};
|
|
133
|
+
/** Validate references against the pinned upstream contract and MCP schemas. */
|
|
134
|
+
export function validateToolBindingManifest(input, contract, toolSurfaces) {
|
|
135
|
+
const manifest = toolBindingManifestSchema.parse(input);
|
|
136
|
+
const resources = new Map(contract.resources.map((resource) => [resource.resource_id, resource]));
|
|
137
|
+
const schemas = new Map(toolSurfaces.map((surface) => [
|
|
138
|
+
`${surface.toolName}:${surface.operation}`,
|
|
139
|
+
surface.fields,
|
|
140
|
+
]));
|
|
141
|
+
const toolNames = new Set();
|
|
142
|
+
for (const tool of manifest.tools) {
|
|
143
|
+
if (toolNames.has(tool.toolName))
|
|
144
|
+
throw new Error(`Duplicate binding for tool ${tool.toolName}`);
|
|
145
|
+
toolNames.add(tool.toolName);
|
|
146
|
+
let upstreamFields;
|
|
147
|
+
if (tool.authority.kind === 'relation') {
|
|
148
|
+
const resource = resources.get(tool.authority.resourceId);
|
|
149
|
+
if (!resource) {
|
|
150
|
+
throw new Error(`${tool.toolName}: unknown Persist resource ${tool.authority.resourceId}`);
|
|
151
|
+
}
|
|
152
|
+
upstreamFields = new Set(resource.fields.map((field) => field.name));
|
|
153
|
+
}
|
|
154
|
+
else if (tool.authority.kind === 'endpoint') {
|
|
155
|
+
upstreamFields = new Set(tool.authority.fields);
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
upstreamFields = new Set(tool.authority.sources);
|
|
159
|
+
}
|
|
160
|
+
const operations = new Set();
|
|
161
|
+
for (const surface of tool.surfaces) {
|
|
162
|
+
if (operations.has(surface.operation)) {
|
|
163
|
+
throw new Error(`${tool.toolName}: duplicate ${surface.operation} surface`);
|
|
164
|
+
}
|
|
165
|
+
operations.add(surface.operation);
|
|
166
|
+
if (tool.authority.kind === 'relation') {
|
|
167
|
+
const resource = resources.get(tool.authority.resourceId);
|
|
168
|
+
const expected = surface.operation === 'filter' || surface.operation === 'response'
|
|
169
|
+
? 'read'
|
|
170
|
+
: surface.operation;
|
|
171
|
+
if (!resource.operations.includes(expected)) {
|
|
172
|
+
throw new Error(`${tool.toolName}: resource ${tool.authority.resourceId} does not support ${expected}`);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
const schemaFields = schemas.get(`${tool.toolName}:${surface.operation}`);
|
|
176
|
+
if (!schemaFields)
|
|
177
|
+
throw new Error(`${tool.toolName}: missing MCP ${surface.operation} schema`);
|
|
178
|
+
const seenUpstream = new Set();
|
|
179
|
+
for (const field of [...surface.fields, ...surface.overrides]) {
|
|
180
|
+
if (!upstreamFields.has(field.upstreamField)) {
|
|
181
|
+
throw new Error(`${tool.toolName}.${surface.operation}: upstream field ${field.upstreamField} does not exist`);
|
|
182
|
+
}
|
|
183
|
+
if (seenUpstream.has(field.upstreamField) && !('override' in field)) {
|
|
184
|
+
throw new Error(`${tool.toolName}.${surface.operation}: duplicate mapping for ${field.upstreamField}`);
|
|
185
|
+
}
|
|
186
|
+
seenUpstream.add(field.upstreamField);
|
|
187
|
+
if (field.toolField && !schemaFields.has(field.toolField)) {
|
|
188
|
+
throw new Error(`${tool.toolName}.${surface.operation}: MCP field ${field.toolField} does not exist (obsolete alias or stale override)`);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
for (const field of surface.fields) {
|
|
192
|
+
if (field.mapping === 'direct' && field.toolField !== field.upstreamField) {
|
|
193
|
+
throw new Error(`${tool.toolName}.${surface.operation}: ${field.toolField} must be declared as an alias`);
|
|
194
|
+
}
|
|
195
|
+
if (field.mapping === 'alias' && field.toolField === field.upstreamField) {
|
|
196
|
+
throw new Error(`${tool.toolName}.${surface.operation}: alias ${field.toolField} is obsolete`);
|
|
197
|
+
}
|
|
198
|
+
if (tool.authority.kind === 'relation' && field.requirement === 'upstream') {
|
|
199
|
+
const resource = resources.get(tool.authority.resourceId);
|
|
200
|
+
const upstreamRequired = resource.fields.find((candidate) => candidate.name === field.upstreamField).required;
|
|
201
|
+
const toolRequired = schemaFields.has(field.toolField) &&
|
|
202
|
+
toolSurfaces.find((candidate) => candidate.toolName === tool.toolName && candidate.operation === surface.operation).requiredFields.has(field.toolField);
|
|
203
|
+
if (toolRequired !== upstreamRequired) {
|
|
204
|
+
throw new Error(`${tool.toolName}.${field.toolField} required=${toolRequired}, but Persist ` +
|
|
205
|
+
`${field.upstreamField} required=${upstreamRequired}`);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
return manifest;
|
|
212
|
+
}
|
|
213
|
+
let pinnedContract;
|
|
214
|
+
/**
|
|
215
|
+
* Whether a tool's create field is required, for tool schemas while the
|
|
216
|
+
* contract rollout remains incremental.
|
|
217
|
+
*
|
|
218
|
+
* `requirement: 'upstream'` follows Persist: for a relation binding the
|
|
219
|
+
* answer is the pinned resource contract's `required` flag for the mapped
|
|
220
|
+
* column, so a column that becomes nullable upstream makes the MCP field
|
|
221
|
+
* optional on the next contract sync. Endpoint and composite bindings have
|
|
222
|
+
* no column metadata, so `upstream` there means required.
|
|
223
|
+
* `requirement: 'optional'` is always optional.
|
|
224
|
+
*/
|
|
225
|
+
export function isCreateFieldRequired(toolName, toolField, contract) {
|
|
226
|
+
const tool = toolBindingManifest.tools.find((entry) => entry.toolName === toolName);
|
|
227
|
+
const create = tool?.surfaces.find((surface) => surface.operation === 'create');
|
|
228
|
+
const field = create?.fields.find((candidate) => candidate.toolField === toolField);
|
|
229
|
+
if (!tool || !field || field.requirement !== 'upstream')
|
|
230
|
+
return false;
|
|
231
|
+
if (tool.authority.kind !== 'relation')
|
|
232
|
+
return true;
|
|
233
|
+
const source = contract ?? (pinnedContract ??= loadPersistResourceContract());
|
|
234
|
+
const resourceId = tool.authority.resourceId;
|
|
235
|
+
const resource = source.resources.find((candidate) => candidate.resource_id === resourceId);
|
|
236
|
+
const column = resource?.fields.find((candidate) => candidate.name === field.upstreamField);
|
|
237
|
+
if (!column) {
|
|
238
|
+
throw new Error(`${toolName}.${toolField}: Persist field ${resourceId}.${field.upstreamField} is not in the pinned contract`);
|
|
239
|
+
}
|
|
240
|
+
return column.required;
|
|
241
|
+
}
|
|
242
|
+
//# sourceMappingURL=tool-binding-manifest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-binding-manifest.js","sourceRoot":"","sources":["../../src/contracts/tool-binding-manifest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* ISO 8601 date or date-time for a Persist `TIMESTAMP WITH TIME ZONE`
|
|
4
|
+
* column, e.g. `2027-01-01` or `2027-01-01T09:00:00+13:00`. Anything
|
|
5
|
+
* `Date.parse` cannot read is rejected here instead of by Postgres.
|
|
6
|
+
*/
|
|
7
|
+
export declare function isoDateTimeSchema(description: string): z.ZodEffects<z.ZodString, string, string>;
|
|
8
|
+
/**
|
|
9
|
+
* True unless both dates are given and `end` is not after `start`.
|
|
10
|
+
* Compares instants, so offsets and mixed precision are handled; Persist's
|
|
11
|
+
* `end_date > start_date` CHECK is strict, so equal instants fail.
|
|
12
|
+
* A date without a time is read as UTC midnight.
|
|
13
|
+
*/
|
|
14
|
+
export declare function endsAfterStart(start?: string, end?: string): boolean;
|
|
15
|
+
export declare const END_AFTER_START_MESSAGE = "end_date must be after start_date";
|
|
16
|
+
//# sourceMappingURL=date-range.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date-range.d.ts","sourceRoot":"","sources":["../../../src/tools/_shared/date-range.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,6CAQpD;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAGpE;AAED,eAAO,MAAM,uBAAuB,sCAAsC,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* ISO 8601 date or date-time for a Persist `TIMESTAMP WITH TIME ZONE`
|
|
4
|
+
* column, e.g. `2027-01-01` or `2027-01-01T09:00:00+13:00`. Anything
|
|
5
|
+
* `Date.parse` cannot read is rejected here instead of by Postgres.
|
|
6
|
+
*/
|
|
7
|
+
export function isoDateTimeSchema(description) {
|
|
8
|
+
return z
|
|
9
|
+
.string()
|
|
10
|
+
.min(1)
|
|
11
|
+
.refine((v) => !Number.isNaN(Date.parse(v)), {
|
|
12
|
+
message: 'must be an ISO 8601 date or date-time',
|
|
13
|
+
})
|
|
14
|
+
.describe(description);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* True unless both dates are given and `end` is not after `start`.
|
|
18
|
+
* Compares instants, so offsets and mixed precision are handled; Persist's
|
|
19
|
+
* `end_date > start_date` CHECK is strict, so equal instants fail.
|
|
20
|
+
* A date without a time is read as UTC midnight.
|
|
21
|
+
*/
|
|
22
|
+
export function endsAfterStart(start, end) {
|
|
23
|
+
if (start === undefined || end === undefined)
|
|
24
|
+
return true;
|
|
25
|
+
return Date.parse(end) > Date.parse(start);
|
|
26
|
+
}
|
|
27
|
+
export const END_AFTER_START_MESSAGE = 'end_date must be after start_date';
|
|
28
|
+
//# sourceMappingURL=date-range.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date-range.js","sourceRoot":"","sources":["../../../src/tools/_shared/date-range.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,WAAmB;IACnD,OAAO,CAAC;SACL,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;QAC3C,OAAO,EAAE,uCAAuC;KACjD,CAAC;SACD,QAAQ,CAAC,WAAW,CAAC,CAAC;AAC3B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,KAAc,EAAE,GAAY;IACzD,IAAI,KAAK,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAC1D,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAG,mCAAmC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"side-effect.d.ts","sourceRoot":"","sources":["../../../src/tools/_shared/side-effect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,4BAa9B,CAAC;AAEJ;;;;GAIG;AACH,eAAO,MAAM,8BAA8B,4BAG1C,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACzC,cAAc,EAAE,MAAM,GAAG,SAAS,GACjC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAQxB;AAED;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,
|
|
1
|
+
{"version":3,"file":"side-effect.d.ts","sourceRoot":"","sources":["../../../src/tools/_shared/side-effect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,4BAa9B,CAAC;AAEJ;;;;GAIG;AACH,eAAO,MAAM,8BAA8B,4BAG1C,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACzC,cAAc,EAAE,MAAM,GAAG,SAAS,GACjC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAQxB;AAED;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,oBAe3B,CAAC;AAEJ;;;;GAIG;AACH,eAAO,MAAM,YAAY,aAG2B,CAAC"}
|
|
@@ -73,7 +73,9 @@ export const confirmFlagSchema = z
|
|
|
73
73
|
.describe('Must be `true` to execute. Present so a model cannot accidentally grant a ' +
|
|
74
74
|
'permission, revoke a role, register a payment instrument, transition a security ' +
|
|
75
75
|
'session, send a message, dispatch a command, register a device, provision a ' +
|
|
76
|
-
'merchant,
|
|
76
|
+
'merchant, trigger an external sync, register a catalogue item or price list, or ' +
|
|
77
|
+
'create a price list version without an explicit ' +
|
|
78
|
+
'confirmation step.');
|
|
77
79
|
/**
|
|
78
80
|
* Zod schema for a caller-supplied reason string. Used on lifecycle
|
|
79
81
|
* transitions and side-effect invocations so the audit log carries a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"side-effect.js","sourceRoot":"","sources":["../../../src/tools/_shared/side-effect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC;KAClC,MAAM,EAAE;KACR,GAAG,CAAC,CAAC,CAAC;KACN,GAAG,CAAC,GAAG,CAAC;KACR,KAAK,CACJ,qBAAqB,EACrB,qFAAqF,CACtF;KACA,QAAQ,EAAE;KACV,QAAQ,CACP,iFAAiF;IAC/E,4EAA4E;IAC5E,+CAA+C,CAClD,CAAC;AAEJ;;;;GAIG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,oBAAoB,CAAC,QAAQ,CACzE,yFAAyF;IACvF,mCAAmC,CACtC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,2BAA2B,CACzC,cAAkC;IAElC,MAAM,OAAO,GAA2B;QACtC,MAAM,EAAE,uBAAuB;KAChC,CAAC;IACF,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,CAAC,iBAAiB,CAAC,GAAG,cAAc,CAAC;IAC9C,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC;KAC/B,OAAO,CAAC,IAAI,EAAE;IACb,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;QACf,OAAO,EACL,oFAAoF;YAClF,6BAA6B;KAClC,CAAC;CACH,CAAC;KACD,QAAQ,CACP,4EAA4E;IAC1E,kFAAkF;IAClF,8EAA8E;IAC9E,
|
|
1
|
+
{"version":3,"file":"side-effect.js","sourceRoot":"","sources":["../../../src/tools/_shared/side-effect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC;KAClC,MAAM,EAAE;KACR,GAAG,CAAC,CAAC,CAAC;KACN,GAAG,CAAC,GAAG,CAAC;KACR,KAAK,CACJ,qBAAqB,EACrB,qFAAqF,CACtF;KACA,QAAQ,EAAE;KACV,QAAQ,CACP,iFAAiF;IAC/E,4EAA4E;IAC5E,+CAA+C,CAClD,CAAC;AAEJ;;;;GAIG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,oBAAoB,CAAC,QAAQ,CACzE,yFAAyF;IACvF,mCAAmC,CACtC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,2BAA2B,CACzC,cAAkC;IAElC,MAAM,OAAO,GAA2B;QACtC,MAAM,EAAE,uBAAuB;KAChC,CAAC;IACF,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,CAAC,iBAAiB,CAAC,GAAG,cAAc,CAAC;IAC9C,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC;KAC/B,OAAO,CAAC,IAAI,EAAE;IACb,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;QACf,OAAO,EACL,oFAAoF;YAClF,6BAA6B;KAClC,CAAC;CACH,CAAC;KACD,QAAQ,CACP,4EAA4E;IAC1E,kFAAkF;IAClF,8EAA8E;IAC9E,kFAAkF;IAClF,kDAAkD;IAClD,oBAAoB,CACvB,CAAC;AAEJ;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC;KAC1B,MAAM,EAAE;KACR,GAAG,CAAC,CAAC,EAAE,sCAAsC,CAAC;KAC9C,GAAG,CAAC,GAAG,EAAE,uCAAuC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domains.d.ts","sourceRoot":"","sources":["../../src/tools/domains.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"domains.d.ts","sourceRoot":"","sources":["../../src/tools/domains.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAuBrC;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,IAAI,EAAE,CAAC;CACf;AAED,eAAO,MAAM,cAAc,EAAE,aAAa,EA0JzC,CAAC;AAwDF;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,CA0C9C,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,CAepD"}
|
package/dist/tools/domains.js
CHANGED
|
@@ -17,6 +17,8 @@ import { dcmReadOnlyTools, dcmTools } from './dcm/index.js';
|
|
|
17
17
|
import { bkmReadOnlyTools, bkmTools } from './bkm/index.js';
|
|
18
18
|
import { xrmReadOnlyTools, xrmTools } from './xrm/index.js';
|
|
19
19
|
import { ixnReadOnlyTools, ixnTools } from './ixn/index.js';
|
|
20
|
+
import { gpmTools, gpmReadOnlyTools } from './gpm/index.js';
|
|
21
|
+
import { pcmTools, pcmReadOnlyTools } from './pcm/index.js';
|
|
20
22
|
export const primaryDomains = [
|
|
21
23
|
{
|
|
22
24
|
id: 'dsm',
|
|
@@ -63,7 +65,7 @@ export const primaryDomains = [
|
|
|
63
65
|
{
|
|
64
66
|
id: 'fnd',
|
|
65
67
|
title: 'FND — Foundation',
|
|
66
|
-
summary: 'Shared import lifecycle tools for COA, leads
|
|
68
|
+
summary: 'Shared import lifecycle tools for COA, leads, daily rates, GPM items and PCM price list lines, plus bounded reads for approved Foundation reference and configuration data — labels, entity labels, domains, locales, RUC enforcement, menus, notification topics, tenants, integration links, ETL templates, report templates, and documents (plus versions and attachments). Administrative, credentialed, and internal-permission FND tables remain excluded.',
|
|
67
69
|
tools: fndTools,
|
|
68
70
|
},
|
|
69
71
|
{
|
|
@@ -136,6 +138,20 @@ export const primaryDomains = [
|
|
|
136
138
|
summary: 'Bounded reads plus explicit-schema mutations for interaction conversations and messages. Queue internals and sensitive channel-endpoint configuration are excluded by the queue and sensitivity guardrails. Outbound message dispatch requires caller confirmation and an explicit idempotency key so retries never duplicate customer-visible sends.',
|
|
137
139
|
tools: ixnTools,
|
|
138
140
|
},
|
|
141
|
+
{
|
|
142
|
+
id: 'gpm',
|
|
143
|
+
title: 'GPM — Global Product Model',
|
|
144
|
+
summary: 'Bounded reads over catalogue items, the category tree, relationships, and resource settings; ' +
|
|
145
|
+
'dedicated tools for registering / deactivating items.',
|
|
146
|
+
tools: gpmTools,
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
id: 'pcm',
|
|
150
|
+
title: 'PCM — Price / Cost Management',
|
|
151
|
+
summary: 'Bounded reads over price lists, versions, lines, rules, tiers, and prices; dedicated tools for ' +
|
|
152
|
+
'registering / deactivating price lists and creating versions.',
|
|
153
|
+
tools: pcmTools,
|
|
154
|
+
},
|
|
139
155
|
];
|
|
140
156
|
const PPM_READ_TOOL_NAMES = new Set([
|
|
141
157
|
'ppm_work_item_get',
|
|
@@ -228,6 +244,10 @@ export const domainIndex = {
|
|
|
228
244
|
'xrm-readonly': xrmReadOnlyTools,
|
|
229
245
|
ixn: ixnTools,
|
|
230
246
|
'ixn-readonly': ixnReadOnlyTools,
|
|
247
|
+
gpm: gpmTools,
|
|
248
|
+
'gpm-readonly': gpmReadOnlyTools,
|
|
249
|
+
pcm: pcmTools,
|
|
250
|
+
'pcm-readonly': pcmReadOnlyTools,
|
|
231
251
|
};
|
|
232
252
|
/**
|
|
233
253
|
* Resolve a comma-separated list of domain IDs to the corresponding set
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domains.js","sourceRoot":"","sources":["../../src/tools/domains.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAa5D,MAAM,CAAC,MAAM,cAAc,GAAoB;IAC7C;QACE,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,+BAA+B;QACtC,OAAO,EACL,+FAA+F;QACjG,KAAK,EAAE,QAAQ;KAChB;IACD;QACE,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,oCAAoC;QAC3C,OAAO,EACL,oFAAoF;QACtF,KAAK,EAAE,QAAQ;KAChB;IACD;QACE,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,qCAAqC;QAC5C,OAAO,EACL,6FAA6F;QAC/F,KAAK,EAAE,QAAQ;KAChB;IACD;QACE,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,8BAA8B;QACrC,OAAO,EACL,2IAA2I;QAC7I,KAAK,EAAE,QAAQ;KAChB;IACD;QACE,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,sCAAsC;QAC7C,OAAO,EACL,yHAAyH;QAC3H,KAAK,EAAE,QAAQ;KAChB;IACD;QACE,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,qCAAqC;QAC5C,OAAO,EACL,0SAA0S;QAC5S,KAAK,EAAE,QAAQ;KAChB;IACD;QACE,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,kCAAkC;QACzC,OAAO,EACL,qPAAqP;QACvP,KAAK,EAAE,QAAQ;KAChB;IACD;QACE,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,kBAAkB;QACzB,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"domains.js","sourceRoot":"","sources":["../../src/tools/domains.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAa5D,MAAM,CAAC,MAAM,cAAc,GAAoB;IAC7C;QACE,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,+BAA+B;QACtC,OAAO,EACL,+FAA+F;QACjG,KAAK,EAAE,QAAQ;KAChB;IACD;QACE,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,oCAAoC;QAC3C,OAAO,EACL,oFAAoF;QACtF,KAAK,EAAE,QAAQ;KAChB;IACD;QACE,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,qCAAqC;QAC5C,OAAO,EACL,6FAA6F;QAC/F,KAAK,EAAE,QAAQ;KAChB;IACD;QACE,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,8BAA8B;QACrC,OAAO,EACL,2IAA2I;QAC7I,KAAK,EAAE,QAAQ;KAChB;IACD;QACE,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,sCAAsC;QAC7C,OAAO,EACL,yHAAyH;QAC3H,KAAK,EAAE,QAAQ;KAChB;IACD;QACE,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,qCAAqC;QAC5C,OAAO,EACL,0SAA0S;QAC5S,KAAK,EAAE,QAAQ;KAChB;IACD;QACE,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,kCAAkC;QACzC,OAAO,EACL,qPAAqP;QACvP,KAAK,EAAE,QAAQ;KAChB;IACD;QACE,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,kBAAkB;QACzB,OAAO,EACL,kcAAkc;QACpc,KAAK,EAAE,QAAQ;KAChB;IACD;QACE,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,kCAAkC;QACzC,OAAO,EACL,sTAAsT;QACxT,KAAK,EAAE,QAAQ;KAChB;IACD;QACE,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,gBAAgB;QACvB,OAAO,EACL,6NAA6N;QAC/N,KAAK,EAAE,QAAQ;KAChB;IACD;QACE,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,gCAAgC;QACvC,OAAO,EACL,2KAA2K;QAC7K,KAAK,EAAE,QAAQ;KAChB;IACD;QACE,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,oCAAoC;QAC3C,OAAO,EACL,uMAAuM;QACzM,KAAK,EAAE,QAAQ;KAChB;IACD;QACE,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,iCAAiC;QACxC,OAAO,EACL,qGAAqG;YACrG,wGAAwG;YACxG,2FAA2F;YAC3F,8DAA8D;QAChE,KAAK,EAAE,QAAQ;KAChB;IACD;QACE,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,8BAA8B;QACrC,OAAO,EACL,wGAAwG;YACxG,wGAAwG;QAC1G,KAAK,EAAE,QAAQ;KAChB;IACD;QACE,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,gCAAgC;QACvC,OAAO,EACL,yLAAyL;QAC3L,KAAK,EAAE,QAAQ;KAChB;IACD;QACE,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,mCAAmC;QAC1C,OAAO,EACL,iSAAiS;QACnS,KAAK,EAAE,QAAQ;KAChB;IACD;QACE,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,0BAA0B;QACjC,OAAO,EACL,sSAAsS;QACxS,KAAK,EAAE,QAAQ;KAChB;IACD;QACE,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,0CAA0C;QACjD,OAAO,EACL,sUAAsU;QACxU,KAAK,EAAE,QAAQ;KAChB;IACD;QACE,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,oBAAoB;QAC3B,OAAO,EACL,uVAAuV;QACzV,KAAK,EAAE,QAAQ;KAChB;IACD;QACE,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,4BAA4B;QACnC,OAAO,EACL,+FAA+F;YAC/F,uDAAuD;QACzD,KAAK,EAAE,QAAQ;KAChB;IACD;QACE,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,+BAA+B;QACtC,OAAO,EACL,iGAAiG;YACjG,+DAA+D;QACjE,KAAK,EAAE,QAAQ;KAChB;CACF,CAAC;AAEF,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC;IAClC,mBAAmB;IACnB,oBAAoB;IACpB,qBAAqB;IACrB,oBAAoB;IACpB,0BAA0B;IAC1B,yBAAyB;IACzB,+BAA+B;IAC/B,0BAA0B;IAC1B,mBAAmB;IACnB,kBAAkB;IAClB,wBAAwB;CACzB,CAAC,CAAC;AAEH,yEAAyE;AACzE,uEAAuE;AACvE,uEAAuE;AACvE,sEAAsE;AACtE,MAAM,uBAAuB,GAAG,CAAC,IAAY,EAAW,EAAE,CACxD,IAAI,KAAK,gBAAgB;IACzB,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;IAC1B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;IACtB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAExB,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC;IAClC,eAAe;IACf,cAAc;IACd,uBAAuB;IACvB,sBAAsB;IACtB,eAAe;IACf,cAAc;IACd,oBAAoB;IACpB,mBAAmB;IACnB,mBAAmB;IACnB,sBAAsB;CACvB,CAAC,CAAC;AAEH,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC;IAClC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACjG,0BAA0B;IAC1B,2BAA2B;IAC3B,2BAA2B;IAC3B,yBAAyB;IACzB,2BAA2B;IAC3B,uBAAuB;IACvB,4BAA4B;IAC5B,4BAA4B;IAC5B,iCAAiC;IACjC,wBAAwB;IACxB,mBAAmB;IACnB,4BAA4B;IAC5B,gCAAgC;CACjC,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAA2B;IACjD,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,QAAQ;IACb,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACvE,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACvE,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACvE,GAAG,EAAE,QAAQ;IACb,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACvE,GAAG,EAAE,QAAQ;IACb,cAAc,EAAE,gBAAgB;IAChC,GAAG,EAAE,QAAQ;IACb,cAAc,EAAE,gBAAgB;IAChC,GAAG,EAAE,QAAQ;IACb,cAAc,EAAE,gBAAgB;IAChC,GAAG,EAAE,QAAQ;IACb,cAAc,EAAE,gBAAgB;IAChC,GAAG,EAAE,QAAQ;IACb,cAAc,EAAE,gBAAgB;IAChC,GAAG,EAAE,QAAQ;IACb,cAAc,EAAE,gBAAgB;IAChC,GAAG,EAAE,QAAQ;IACb,cAAc,EAAE,gBAAgB;IAChC,GAAG,EAAE,QAAQ;IACb,cAAc,EAAE,gBAAgB;IAChC,GAAG,EAAE,QAAQ;IACb,cAAc,EAAE,gBAAgB;IAChC,GAAG,EAAE,QAAQ;IACb,cAAc,EAAE,gBAAgB;IAChC,GAAG,EAAE,QAAQ;IACb,cAAc,EAAE,gBAAgB;IAChC,GAAG,EAAE,QAAQ;IACb,cAAc,EAAE,gBAAgB;IAChC,GAAG,EAAE,QAAQ;IACb,cAAc,EAAE,gBAAgB;IAChC,GAAG,EAAE,QAAQ;IACb,cAAc,EAAE,gBAAgB;IAChC,GAAG,EAAE,QAAQ;IACb,cAAc,EAAE,gBAAgB;IAChC,GAAG,EAAE,QAAQ;IACb,cAAc,EAAE,gBAAgB;CACjC,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,IAAa;IAC1C,MAAM,GAAG,GAAG,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5E,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAClE,MAAM,GAAG,GAAG,IAAI,GAAG,EAAgB,CAAC;IACpC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtD,MAAM,IAAI,KAAK,CACb,sCAAsC,IAAI,iBAAiB,SAAS,GAAG,CACxE,CAAC;QACJ,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,KAAK;YAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;AAC3B,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Tool } from '../registry.js';
|
|
2
|
+
import { CatalogueReport } from '../../generated-reads/index.js';
|
|
3
|
+
export declare const gpmGeneratedReadReport: CatalogueReport;
|
|
4
|
+
export declare const gpmGeneratedReadTools: Tool[];
|
|
5
|
+
//# sourceMappingURL=generated-reads.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generated-reads.d.ts","sourceRoot":"","sources":["../../../src/tools/gpm/generated-reads.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAGL,eAAe,EAChB,MAAM,gCAAgC,CAAC;AA0BxC,eAAO,MAAM,sBAAsB,EAAE,eAGjC,CAAC;AAEL,eAAO,MAAM,qBAAqB,EAAE,IAAI,EAGvC,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { buildGeneratedReadCatalogue, buildGeneratedReadCatalogueReport, } from '../../generated-reads/index.js';
|
|
2
|
+
import { loadPersistResourceContract } from '../../contracts/persist-resource-contract.js';
|
|
3
|
+
/**
|
|
4
|
+
* Bounded read tools for the GPM (Global Product Model) module
|
|
5
|
+
* (WI-0003506).
|
|
6
|
+
*
|
|
7
|
+
* The schema-driven catalogue (WI-0003500) emits describe/list/get for
|
|
8
|
+
* every GPM resource declaring a read operation. Every GPM resource is
|
|
9
|
+
* classified `normal` (no PII / no credentials) so the field-redaction
|
|
10
|
+
* guardrail is a no-op, but the framework still refuses to emit generic
|
|
11
|
+
* `create` / `update` / `delete` tools — every write goes through a
|
|
12
|
+
* dedicated tool with confirmation + idempotency semantics.
|
|
13
|
+
*
|
|
14
|
+
* Resources surfaced (all `list`+`read`):
|
|
15
|
+
* - gpm_items, gpm_items_interface, gpm_items_interface_batch
|
|
16
|
+
* - gpm_category_tree
|
|
17
|
+
* - gpm_item_actions, gpm_item_relationships
|
|
18
|
+
* - gpm_item_resource_settings
|
|
19
|
+
*
|
|
20
|
+
* Item categories and attributes were retired from GPM in favour of FND
|
|
21
|
+
* EFF (Persist WI-0002057), so they are no longer surfaced here.
|
|
22
|
+
*/
|
|
23
|
+
const contract = loadPersistResourceContract();
|
|
24
|
+
export const gpmGeneratedReadReport = buildGeneratedReadCatalogueReport(contract, {
|
|
25
|
+
modules: ['gpm'],
|
|
26
|
+
});
|
|
27
|
+
export const gpmGeneratedReadTools = buildGeneratedReadCatalogue(contract, { modules: ['gpm'] });
|
|
28
|
+
//# sourceMappingURL=generated-reads.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generated-reads.js","sourceRoot":"","sources":["../../../src/tools/gpm/generated-reads.ts"],"names":[],"mappings":"AACA,OAAO,EACL,2BAA2B,EAC3B,iCAAiC,GAElC,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,2BAA2B,EAAE,MAAM,8CAA8C,CAAC;AAE3F;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,MAAM,QAAQ,GAAG,2BAA2B,EAAE,CAAC;AAE/C,MAAM,CAAC,MAAM,sBAAsB,GACjC,iCAAiC,CAAC,QAAQ,EAAE;IAC1C,OAAO,EAAE,CAAC,KAAK,CAAC;CACjB,CAAC,CAAC;AAEL,MAAM,CAAC,MAAM,qBAAqB,GAAW,2BAA2B,CACtE,QAAQ,EACR,EAAE,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,CACrB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Tool } from '../registry.js';
|
|
2
|
+
/**
|
|
3
|
+
* Deactivate a catalogue item (`gpm_items`) by setting `active=false`,
|
|
4
|
+
* as Persist's own item deactivation does. The row is kept, so existing
|
|
5
|
+
* price lines, relationships and orders still resolve it by id.
|
|
6
|
+
*
|
|
7
|
+
* The tool reads the item first: the reason is merged into `metadata`,
|
|
8
|
+
* and an item already inactive is returned unchanged.
|
|
9
|
+
*/
|
|
10
|
+
export declare const gpmItemDeactivateTool: Tool;
|
|
11
|
+
//# sourceMappingURL=gpm-item-deactivate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gpm-item-deactivate.d.ts","sourceRoot":"","sources":["../../../src/tools/gpm/gpm-item-deactivate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAStC;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,EAAE,IAqCnC,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { cap } from '../../capabilities/tool-capability.js';
|
|
3
|
+
import { confirmFlagSchema, reasonSchema, unenforcedIdempotencyKeySchema, } from '../_shared/side-effect.js';
|
|
4
|
+
import { softDeactivate, softDeactivateEndDateSchema } from '../_shared/soft-deactivate.js';
|
|
5
|
+
/**
|
|
6
|
+
* Deactivate a catalogue item (`gpm_items`) by setting `active=false`,
|
|
7
|
+
* as Persist's own item deactivation does. The row is kept, so existing
|
|
8
|
+
* price lines, relationships and orders still resolve it by id.
|
|
9
|
+
*
|
|
10
|
+
* The tool reads the item first: the reason is merged into `metadata`,
|
|
11
|
+
* and an item already inactive is returned unchanged.
|
|
12
|
+
*/
|
|
13
|
+
export const gpmItemDeactivateTool = {
|
|
14
|
+
name: 'gpm_item_deactivate',
|
|
15
|
+
description: 'Deactivate a catalogue item (gpm_items) by setting active=false and merging the reason ' +
|
|
16
|
+
'into metadata. Requires confirm=true and a reason. An item already inactive is returned ' +
|
|
17
|
+
'unchanged, so retries are safe. end_date is left alone unless supplied.',
|
|
18
|
+
inputSchema: z.object({
|
|
19
|
+
id: z.string().uuid().describe('UUID of the gpm_items row to deactivate'),
|
|
20
|
+
reason: reasonSchema.describe('Human-readable reason, merged into metadata'),
|
|
21
|
+
end_date: softDeactivateEndDateSchema,
|
|
22
|
+
confirm: confirmFlagSchema,
|
|
23
|
+
idempotency_key: unenforcedIdempotencyKeySchema,
|
|
24
|
+
}),
|
|
25
|
+
capabilities: [cap('gpm_items', 'UPDATE'), cap('gpm_items', 'SELECT')],
|
|
26
|
+
sideEffect: 'state_change',
|
|
27
|
+
confirmation: 'caller_confirms',
|
|
28
|
+
idempotency: 'natural_key',
|
|
29
|
+
handler: async (args, ctx) => {
|
|
30
|
+
const input = args;
|
|
31
|
+
return softDeactivate(ctx, {
|
|
32
|
+
table: 'gpm_items',
|
|
33
|
+
id: input.id,
|
|
34
|
+
label: 'GPM item',
|
|
35
|
+
verb: 'deactivate',
|
|
36
|
+
isDone: (row) => row.active === false,
|
|
37
|
+
changes: () => ({ active: false }),
|
|
38
|
+
reasonKey: 'deactivation_reason',
|
|
39
|
+
reason: input.reason,
|
|
40
|
+
endDate: input.end_date,
|
|
41
|
+
idempotencyKey: input.idempotency_key,
|
|
42
|
+
});
|
|
43
|
+
},
|
|
44
|
+
};
|
|
45
|
+
//# sourceMappingURL=gpm-item-deactivate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gpm-item-deactivate.js","sourceRoot":"","sources":["../../../src/tools/gpm/gpm-item-deactivate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,GAAG,EAAE,MAAM,uCAAuC,CAAC;AAC5D,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,8BAA8B,GAC/B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAE5F;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAS;IACzC,IAAI,EAAE,qBAAqB;IAC3B,WAAW,EACT,yFAAyF;QACzF,0FAA0F;QAC1F,yEAAyE;IAC3E,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;QACzE,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,6CAA6C,CAAC;QAC5E,QAAQ,EAAE,2BAA2B;QACrC,OAAO,EAAE,iBAAiB;QAC1B,eAAe,EAAE,8BAA8B;KAChD,CAAC;IACF,YAAY,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IACtE,UAAU,EAAE,cAAc;IAC1B,YAAY,EAAE,iBAAiB;IAC/B,WAAW,EAAE,aAAa;IAC1B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;QAC3B,MAAM,KAAK,GAAG,IAKb,CAAC;QACF,OAAO,cAAc,CAAC,GAAG,EAAE;YACzB,KAAK,EAAE,WAAW;YAClB,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,KAAK,EAAE,UAAU;YACjB,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,KAAK;YACrC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;YAClC,SAAS,EAAE,qBAAqB;YAChC,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,OAAO,EAAE,KAAK,CAAC,QAAQ;YACvB,cAAc,EAAE,KAAK,CAAC,eAAe;SACtC,CAAC,CAAC;IACL,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Tool } from '../registry.js';
|
|
2
|
+
/** Values of the Persist GPM_ITEM_TYPES lookup, checked by `validate_item_type_trigger`. */
|
|
3
|
+
export declare const GPM_ITEM_TYPES: readonly ["CATEGORY", "SERVICE", "INSURANCE_PRODUCT", "MERCHANT_CATEGORY", "VERIFICATION", "PRODUCT"];
|
|
4
|
+
/**
|
|
5
|
+
* Register a catalogue item (`gpm_items`).
|
|
6
|
+
*
|
|
7
|
+
* Persist identifies an item by (org_id, item_key, item_key_01..03),
|
|
8
|
+
* compared NULL-safe. Its unique constraint
|
|
9
|
+
* `t_gpm_items_item_code_org_id_uq` treats NULL alternate keys as
|
|
10
|
+
* distinct, so it only stops duplicates when every alternate key is set.
|
|
11
|
+
* PRODUCT items are also unique on (org_id, item_key) alone
|
|
12
|
+
* (`t_gpm_items_product_key_org_tenant_uq`). The tool therefore reads the
|
|
13
|
+
* organisation's items with the same item_key first and refuses one that
|
|
14
|
+
* matches either rule. That check is not atomic and only sees rows the
|
|
15
|
+
* caller can read (WI-0009456 asks Persist to enforce it).
|
|
16
|
+
*
|
|
17
|
+
* `org_id` is required so the check is scoped to the organisation the
|
|
18
|
+
* item is created in; Persist routes `gpm_items` by the body `org_id`.
|
|
19
|
+
*/
|
|
20
|
+
export declare const gpmItemRegisterTool: Tool;
|
|
21
|
+
//# sourceMappingURL=gpm-item-register.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gpm-item-register.d.ts","sourceRoot":"","sources":["../../../src/tools/gpm/gpm-item-register.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AActC,4FAA4F;AAC5F,eAAO,MAAM,cAAc,uGAOjB,CAAC;AAYX;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,mBAAmB,EAAE,IAyHjC,CAAC"}
|