@lumibase/mcp-server 0.23.0 → 0.24.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.
- package/dist/index.cjs +529 -136
- package/dist/index.js +529 -136
- package/package.json +2 -2
package/dist/index.cjs
CHANGED
|
@@ -613,6 +613,14 @@ function registerAgentTools(server, client) {
|
|
|
613
613
|
{ description: "List recent runs of a flow.", inputSchema: { id: idPathSegmentSchema } },
|
|
614
614
|
async ({ id }) => run(() => client.get(`/flows/${encodePathSegment(id)}/runs`))
|
|
615
615
|
);
|
|
616
|
+
server.registerTool(
|
|
617
|
+
"get_flow_run",
|
|
618
|
+
{
|
|
619
|
+
description: "Get a single flow run by id (status, per-step results, error) for diagnosis.",
|
|
620
|
+
inputSchema: { id: idPathSegmentSchema, runId: idPathSegmentSchema }
|
|
621
|
+
},
|
|
622
|
+
async ({ id, runId }) => run(() => client.get(`/flows/${encodePathSegment(id)}/runs/${encodePathSegment(runId)}`))
|
|
623
|
+
);
|
|
616
624
|
}
|
|
617
625
|
|
|
618
626
|
// src/tools/api-keys.ts
|
|
@@ -998,6 +1006,22 @@ function registerContentConfigTools(server, client) {
|
|
|
998
1006
|
createSchema: presetSchema.shape,
|
|
999
1007
|
updateSchema: presetSchema.partial().shape
|
|
1000
1008
|
});
|
|
1009
|
+
server.registerTool(
|
|
1010
|
+
"get_effective_preset",
|
|
1011
|
+
{
|
|
1012
|
+
description: "Resolve the effective default view for a collection (user > role-chain > global precedence).",
|
|
1013
|
+
inputSchema: { collection: import_zod9.z.string().min(1) }
|
|
1014
|
+
},
|
|
1015
|
+
async ({ collection }) => run(() => client.get(`/presets/effective?collection=${encodeURIComponent(collection)}`))
|
|
1016
|
+
);
|
|
1017
|
+
server.registerTool(
|
|
1018
|
+
"list_preset_bookmarks",
|
|
1019
|
+
{
|
|
1020
|
+
description: "List the named preset bookmarks visible to the principal for a collection (with scope).",
|
|
1021
|
+
inputSchema: { collection: import_zod9.z.string().min(1) }
|
|
1022
|
+
},
|
|
1023
|
+
async ({ collection }) => run(() => client.get(`/presets/bookmarks?collection=${encodeURIComponent(collection)}`))
|
|
1024
|
+
);
|
|
1001
1025
|
registerCrud(server, client, {
|
|
1002
1026
|
basePath: "/translations",
|
|
1003
1027
|
resource: "translation",
|
|
@@ -1053,18 +1077,134 @@ function registerContentConfigTools(server, client) {
|
|
|
1053
1077
|
);
|
|
1054
1078
|
}
|
|
1055
1079
|
|
|
1056
|
-
// src/tools/
|
|
1080
|
+
// src/tools/deployments.ts
|
|
1057
1081
|
var import_zod10 = require("zod");
|
|
1082
|
+
function registerDeploymentTools(server, client) {
|
|
1083
|
+
server.registerTool(
|
|
1084
|
+
"list_deployment_targets",
|
|
1085
|
+
{
|
|
1086
|
+
description: "List configured deployment targets (Vercel/Netlify connections) for the site.",
|
|
1087
|
+
inputSchema: {}
|
|
1088
|
+
},
|
|
1089
|
+
async () => run(() => client.get("/deployments/targets"))
|
|
1090
|
+
);
|
|
1091
|
+
server.registerTool(
|
|
1092
|
+
"list_deployments",
|
|
1093
|
+
{
|
|
1094
|
+
description: "List recent deployments, optionally filtered by target or status.",
|
|
1095
|
+
inputSchema: {
|
|
1096
|
+
targetId: import_zod10.z.string().optional(),
|
|
1097
|
+
status: import_zod10.z.string().optional().describe("queued | building | ready | error | canceled."),
|
|
1098
|
+
limit: import_zod10.z.number().int().min(1).max(200).optional()
|
|
1099
|
+
}
|
|
1100
|
+
},
|
|
1101
|
+
async (args) => run(
|
|
1102
|
+
() => client.get(
|
|
1103
|
+
`/deployments${buildQs(args)}`
|
|
1104
|
+
)
|
|
1105
|
+
)
|
|
1106
|
+
);
|
|
1107
|
+
server.registerTool(
|
|
1108
|
+
"get_deployment",
|
|
1109
|
+
{
|
|
1110
|
+
description: "Get a single deployment\u2019s status and details by id.",
|
|
1111
|
+
inputSchema: { id: idPathSegmentSchema }
|
|
1112
|
+
},
|
|
1113
|
+
async ({ id }) => run(() => client.get(`/deployments/${encodePathSegment(id)}`))
|
|
1114
|
+
);
|
|
1115
|
+
server.registerTool(
|
|
1116
|
+
"get_deployment_logs",
|
|
1117
|
+
{
|
|
1118
|
+
description: "Fetch the build/deploy logs for a deployment (for diagnosing a failed build).",
|
|
1119
|
+
inputSchema: { id: idPathSegmentSchema }
|
|
1120
|
+
},
|
|
1121
|
+
async ({ id }) => run(() => client.get(`/deployments/${encodePathSegment(id)}/logs`))
|
|
1122
|
+
);
|
|
1123
|
+
}
|
|
1124
|
+
|
|
1125
|
+
// src/tools/editorial.ts
|
|
1126
|
+
var import_zod11 = require("zod");
|
|
1127
|
+
function registerEditorialTools(server, client) {
|
|
1128
|
+
server.registerTool(
|
|
1129
|
+
"list_reviews",
|
|
1130
|
+
{
|
|
1131
|
+
description: "List the editorial review queue, optionally filtered by status or assignee.",
|
|
1132
|
+
inputSchema: {
|
|
1133
|
+
status: import_zod11.z.enum(["pending", "approved", "rejected"]).optional(),
|
|
1134
|
+
assignedTo: import_zod11.z.string().max(128).optional()
|
|
1135
|
+
}
|
|
1136
|
+
},
|
|
1137
|
+
async (args) => run(
|
|
1138
|
+
() => client.get(
|
|
1139
|
+
`/editorial/reviews${buildQs(args)}`
|
|
1140
|
+
)
|
|
1141
|
+
)
|
|
1142
|
+
);
|
|
1143
|
+
server.registerTool(
|
|
1144
|
+
"submit_review",
|
|
1145
|
+
{
|
|
1146
|
+
description: "Submit an item for editorial review, optionally assigning a reviewer.",
|
|
1147
|
+
inputSchema: {
|
|
1148
|
+
collection: collectionNameSchema,
|
|
1149
|
+
id: idPathSegmentSchema,
|
|
1150
|
+
assignedTo: import_zod11.z.string().min(1).max(128).nullable().optional()
|
|
1151
|
+
}
|
|
1152
|
+
},
|
|
1153
|
+
async ({ collection, id, assignedTo }) => run(
|
|
1154
|
+
() => client.post(
|
|
1155
|
+
`/editorial/${encodePathSegment(collection)}/${encodePathSegment(id)}/submit-review`,
|
|
1156
|
+
{ assignedTo }
|
|
1157
|
+
)
|
|
1158
|
+
)
|
|
1159
|
+
);
|
|
1160
|
+
server.registerTool(
|
|
1161
|
+
"approve_content",
|
|
1162
|
+
{
|
|
1163
|
+
description: "Approve an item in editorial review (a publish-gate decision). Optional reason is audited.",
|
|
1164
|
+
inputSchema: {
|
|
1165
|
+
collection: collectionNameSchema,
|
|
1166
|
+
id: idPathSegmentSchema,
|
|
1167
|
+
reason: import_zod11.z.string().max(2e3).optional()
|
|
1168
|
+
}
|
|
1169
|
+
},
|
|
1170
|
+
async ({ collection, id, reason }) => run(
|
|
1171
|
+
() => client.post(
|
|
1172
|
+
`/editorial/${encodePathSegment(collection)}/${encodePathSegment(id)}/approve`,
|
|
1173
|
+
{ reason }
|
|
1174
|
+
)
|
|
1175
|
+
)
|
|
1176
|
+
);
|
|
1177
|
+
server.registerTool(
|
|
1178
|
+
"reject_content",
|
|
1179
|
+
{
|
|
1180
|
+
description: "Reject an item in editorial review. Optional reason is audited.",
|
|
1181
|
+
inputSchema: {
|
|
1182
|
+
collection: collectionNameSchema,
|
|
1183
|
+
id: idPathSegmentSchema,
|
|
1184
|
+
reason: import_zod11.z.string().max(2e3).optional()
|
|
1185
|
+
}
|
|
1186
|
+
},
|
|
1187
|
+
async ({ collection, id, reason }) => run(
|
|
1188
|
+
() => client.post(
|
|
1189
|
+
`/editorial/${encodePathSegment(collection)}/${encodePathSegment(id)}/reject`,
|
|
1190
|
+
{ reason }
|
|
1191
|
+
)
|
|
1192
|
+
)
|
|
1193
|
+
);
|
|
1194
|
+
}
|
|
1195
|
+
|
|
1196
|
+
// src/tools/extensions.ts
|
|
1197
|
+
var import_zod12 = require("zod");
|
|
1058
1198
|
var EXTENSION_TYPES = ["interface", "display", "layout", "panel", "module", "hook", "endpoint"];
|
|
1059
|
-
var extensionSchema =
|
|
1060
|
-
key:
|
|
1061
|
-
name:
|
|
1062
|
-
version:
|
|
1063
|
-
type:
|
|
1064
|
-
enabled:
|
|
1065
|
-
bundleUrl:
|
|
1066
|
-
manifest:
|
|
1067
|
-
capabilities:
|
|
1199
|
+
var extensionSchema = import_zod12.z.object({
|
|
1200
|
+
key: import_zod12.z.string().regex(/^[a-z0-9_:-]+$/).optional(),
|
|
1201
|
+
name: import_zod12.z.string().min(1),
|
|
1202
|
+
version: import_zod12.z.string().min(1),
|
|
1203
|
+
type: import_zod12.z.enum(EXTENSION_TYPES),
|
|
1204
|
+
enabled: import_zod12.z.boolean().optional(),
|
|
1205
|
+
bundleUrl: import_zod12.z.string().min(1).describe("https:, http:, or data:text/javascript bundle URL."),
|
|
1206
|
+
manifest: import_zod12.z.record(import_zod12.z.string()).optional(),
|
|
1207
|
+
capabilities: import_zod12.z.array(import_zod12.z.string()).optional()
|
|
1068
1208
|
});
|
|
1069
1209
|
function registerExtensionTools(server, client) {
|
|
1070
1210
|
server.registerTool(
|
|
@@ -1092,7 +1232,7 @@ function registerExtensionTools(server, client) {
|
|
|
1092
1232
|
"uninstall_extension",
|
|
1093
1233
|
{
|
|
1094
1234
|
description: "Uninstall an extension from the site. DESTRUCTIVE \u2014 pass confirm=true.",
|
|
1095
|
-
inputSchema: { id: idPathSegmentSchema, confirm:
|
|
1235
|
+
inputSchema: { id: idPathSegmentSchema, confirm: import_zod12.z.literal(true).describe(confirmDescription) }
|
|
1096
1236
|
},
|
|
1097
1237
|
async ({ id }) => run(async () => {
|
|
1098
1238
|
await client.delete(`/extensions/${encodePathSegment(id)}`);
|
|
@@ -1104,12 +1244,12 @@ function registerExtensionTools(server, client) {
|
|
|
1104
1244
|
{
|
|
1105
1245
|
description: "Browse the published extension marketplace.",
|
|
1106
1246
|
inputSchema: {
|
|
1107
|
-
q:
|
|
1108
|
-
category:
|
|
1109
|
-
tags:
|
|
1110
|
-
sort:
|
|
1111
|
-
page:
|
|
1112
|
-
perPage:
|
|
1247
|
+
q: import_zod12.z.string().optional(),
|
|
1248
|
+
category: import_zod12.z.string().optional(),
|
|
1249
|
+
tags: import_zod12.z.string().optional().describe("Comma-separated tags."),
|
|
1250
|
+
sort: import_zod12.z.string().optional(),
|
|
1251
|
+
page: import_zod12.z.number().int().min(1).optional(),
|
|
1252
|
+
perPage: import_zod12.z.number().int().min(1).optional()
|
|
1113
1253
|
}
|
|
1114
1254
|
},
|
|
1115
1255
|
async (args) => run(
|
|
@@ -1144,13 +1284,13 @@ function registerExtensionTools(server, client) {
|
|
|
1144
1284
|
{
|
|
1145
1285
|
description: "Publish an extension to the marketplace (signs + marks it published).",
|
|
1146
1286
|
inputSchema: {
|
|
1147
|
-
extensionId:
|
|
1148
|
-
marketplaceSlug:
|
|
1149
|
-
publisher:
|
|
1150
|
-
signature:
|
|
1151
|
-
signatureAlg:
|
|
1152
|
-
publisherKeyId:
|
|
1153
|
-
bundleSha256:
|
|
1287
|
+
extensionId: import_zod12.z.string().min(1),
|
|
1288
|
+
marketplaceSlug: import_zod12.z.string().min(1),
|
|
1289
|
+
publisher: import_zod12.z.record(import_zod12.z.unknown()).optional(),
|
|
1290
|
+
signature: import_zod12.z.string().optional(),
|
|
1291
|
+
signatureAlg: import_zod12.z.string().optional(),
|
|
1292
|
+
publisherKeyId: import_zod12.z.string().optional(),
|
|
1293
|
+
bundleSha256: import_zod12.z.string().optional()
|
|
1154
1294
|
}
|
|
1155
1295
|
},
|
|
1156
1296
|
async (input) => run(() => client.post("/marketplace/publish", input))
|
|
@@ -1158,39 +1298,39 @@ function registerExtensionTools(server, client) {
|
|
|
1158
1298
|
}
|
|
1159
1299
|
|
|
1160
1300
|
// src/tools/fields.ts
|
|
1161
|
-
var
|
|
1162
|
-
var fieldInputSchema2 =
|
|
1163
|
-
type:
|
|
1301
|
+
var import_zod13 = require("zod");
|
|
1302
|
+
var fieldInputSchema2 = import_zod13.z.object({
|
|
1303
|
+
type: import_zod13.z.string().min(1).describe(
|
|
1164
1304
|
"Storage type: string, text, integer, bigInteger, float, decimal, boolean, date, dateTime, time, json, uuid, csv, hash, alias"
|
|
1165
1305
|
),
|
|
1166
|
-
interface:
|
|
1306
|
+
interface: import_zod13.z.string().min(1).describe(
|
|
1167
1307
|
"UI widget: input, textarea, select, toggle, datetime, file, image, repeater, relation-m2o, relation-o2m, relation-m2m, code, markdown, wysiwyg, \u2026"
|
|
1168
1308
|
),
|
|
1169
|
-
display:
|
|
1170
|
-
label:
|
|
1171
|
-
note:
|
|
1172
|
-
defaultValue:
|
|
1173
|
-
nullable:
|
|
1174
|
-
unique:
|
|
1175
|
-
indexed:
|
|
1176
|
-
searchable:
|
|
1177
|
-
length:
|
|
1178
|
-
precision:
|
|
1179
|
-
scale:
|
|
1180
|
-
special:
|
|
1181
|
-
options:
|
|
1182
|
-
displayOptions:
|
|
1183
|
-
conditions:
|
|
1184
|
-
required:
|
|
1185
|
-
readonly:
|
|
1186
|
-
hidden:
|
|
1187
|
-
encrypted:
|
|
1188
|
-
versioned:
|
|
1189
|
-
width:
|
|
1190
|
-
group:
|
|
1191
|
-
sortOrder:
|
|
1309
|
+
display: import_zod13.z.string().optional(),
|
|
1310
|
+
label: import_zod13.z.string().optional(),
|
|
1311
|
+
note: import_zod13.z.string().optional(),
|
|
1312
|
+
defaultValue: import_zod13.z.unknown().optional(),
|
|
1313
|
+
nullable: import_zod13.z.boolean().optional().default(true),
|
|
1314
|
+
unique: import_zod13.z.boolean().optional().default(false),
|
|
1315
|
+
indexed: import_zod13.z.boolean().optional().default(false),
|
|
1316
|
+
searchable: import_zod13.z.boolean().optional().default(false),
|
|
1317
|
+
length: import_zod13.z.number().int().positive().optional(),
|
|
1318
|
+
precision: import_zod13.z.number().int().positive().optional(),
|
|
1319
|
+
scale: import_zod13.z.number().int().min(0).optional(),
|
|
1320
|
+
special: import_zod13.z.array(import_zod13.z.string()).optional(),
|
|
1321
|
+
options: import_zod13.z.record(import_zod13.z.unknown()).optional(),
|
|
1322
|
+
displayOptions: import_zod13.z.record(import_zod13.z.unknown()).optional(),
|
|
1323
|
+
conditions: import_zod13.z.array(import_zod13.z.unknown()).optional(),
|
|
1324
|
+
required: import_zod13.z.boolean().optional().default(false),
|
|
1325
|
+
readonly: import_zod13.z.boolean().optional().default(false),
|
|
1326
|
+
hidden: import_zod13.z.boolean().optional().default(false),
|
|
1327
|
+
encrypted: import_zod13.z.boolean().optional().default(false),
|
|
1328
|
+
versioned: import_zod13.z.boolean().optional().default(false),
|
|
1329
|
+
width: import_zod13.z.enum(["half", "full", "fill"]).optional().default("full"),
|
|
1330
|
+
group: import_zod13.z.string().optional(),
|
|
1331
|
+
sortOrder: import_zod13.z.number().int().optional(),
|
|
1192
1332
|
renameFrom: fieldNameSchema.optional().describe("Previous field name if this is a rename operation"),
|
|
1193
|
-
confirmRiskyChange:
|
|
1333
|
+
confirmRiskyChange: import_zod13.z.boolean().optional().describe("Set true to confirm type-change or destructive migration")
|
|
1194
1334
|
});
|
|
1195
1335
|
function formatError3(err) {
|
|
1196
1336
|
if (err instanceof LumiBaseApiError) {
|
|
@@ -1245,8 +1385,8 @@ function registerFieldTools(server, client) {
|
|
|
1245
1385
|
inputSchema: {
|
|
1246
1386
|
collection: collectionNameSchema,
|
|
1247
1387
|
field_name: fieldNameSchema,
|
|
1248
|
-
confirm:
|
|
1249
|
-
force:
|
|
1388
|
+
confirm: import_zod13.z.literal(true).describe("Must be true to confirm destructive operation"),
|
|
1389
|
+
force: import_zod13.z.boolean().optional().describe("Force deletion even if risky (foreign keys, etc.)")
|
|
1250
1390
|
}
|
|
1251
1391
|
},
|
|
1252
1392
|
async ({ collection, field_name, force }) => {
|
|
@@ -1265,8 +1405,91 @@ function registerFieldTools(server, client) {
|
|
|
1265
1405
|
);
|
|
1266
1406
|
}
|
|
1267
1407
|
|
|
1408
|
+
// src/tools/insights.ts
|
|
1409
|
+
var import_zod14 = require("zod");
|
|
1410
|
+
var AGGREGATES = ["count", "sum", "avg", "min", "max"];
|
|
1411
|
+
var dateRangeSchema = import_zod14.z.object({
|
|
1412
|
+
field: import_zod14.z.string().min(1),
|
|
1413
|
+
gte: import_zod14.z.string().optional(),
|
|
1414
|
+
lte: import_zod14.z.string().optional(),
|
|
1415
|
+
preset: import_zod14.z.string().optional()
|
|
1416
|
+
}).describe("Restrict the query to a date window on the given field.");
|
|
1417
|
+
var panelQueryShape = {
|
|
1418
|
+
collection: import_zod14.z.string().min(1),
|
|
1419
|
+
aggregate: import_zod14.z.enum(AGGREGATES).describe("Aggregate function. `field` is required for everything except `count`."),
|
|
1420
|
+
field: import_zod14.z.string().min(1).optional().describe("Field to aggregate (required unless aggregate=count)."),
|
|
1421
|
+
groupBy: import_zod14.z.string().min(1).optional().describe("Field to group rows by (produces a series)."),
|
|
1422
|
+
filter: import_zod14.z.record(import_zod14.z.unknown()).optional().describe('Directus-style condition rule, e.g. { status: { _eq: "published" } }.'),
|
|
1423
|
+
dateRange: dateRangeSchema.optional(),
|
|
1424
|
+
limit: import_zod14.z.number().int().min(1).max(1e3).optional().describe("Max grouped rows to return (default 50).")
|
|
1425
|
+
};
|
|
1426
|
+
function registerInsightsTools(server, client) {
|
|
1427
|
+
server.registerTool(
|
|
1428
|
+
"list_dashboards",
|
|
1429
|
+
{
|
|
1430
|
+
description: "List insight dashboards for the current site.",
|
|
1431
|
+
inputSchema: {}
|
|
1432
|
+
},
|
|
1433
|
+
async () => run(() => client.get("/dashboards"))
|
|
1434
|
+
);
|
|
1435
|
+
server.registerTool(
|
|
1436
|
+
"get_dashboard",
|
|
1437
|
+
{
|
|
1438
|
+
description: "Get a single dashboard by id.",
|
|
1439
|
+
inputSchema: { id: idPathSegmentSchema }
|
|
1440
|
+
},
|
|
1441
|
+
async ({ id }) => run(() => client.get(`/dashboards/${encodePathSegment(id)}`))
|
|
1442
|
+
);
|
|
1443
|
+
server.registerTool(
|
|
1444
|
+
"list_dashboard_panels",
|
|
1445
|
+
{
|
|
1446
|
+
description: "List the panels of a dashboard (their definitions, not the computed data).",
|
|
1447
|
+
inputSchema: { id: idPathSegmentSchema }
|
|
1448
|
+
},
|
|
1449
|
+
async ({ id }) => run(() => client.get(`/dashboards/${encodePathSegment(id)}/panels`))
|
|
1450
|
+
);
|
|
1451
|
+
server.registerTool(
|
|
1452
|
+
"run_panel",
|
|
1453
|
+
{
|
|
1454
|
+
description: "Run a saved panel and return its computed result. Optionally override the panel\u2019s filter or date range for this run only (does not modify the panel).",
|
|
1455
|
+
inputSchema: {
|
|
1456
|
+
dashboardId: idPathSegmentSchema,
|
|
1457
|
+
panelId: idPathSegmentSchema,
|
|
1458
|
+
filter: import_zod14.z.record(import_zod14.z.unknown()).optional().describe("Override the panel filter for this run (Directus-style condition rule)."),
|
|
1459
|
+
dateRange: dateRangeSchema.optional().describe("Override the panel date range for this run.")
|
|
1460
|
+
}
|
|
1461
|
+
},
|
|
1462
|
+
async ({ dashboardId, panelId, filter, dateRange }) => {
|
|
1463
|
+
const override = {};
|
|
1464
|
+
if (filter !== void 0) override["filter"] = filter;
|
|
1465
|
+
if (dateRange !== void 0) override["dateRange"] = dateRange;
|
|
1466
|
+
return run(
|
|
1467
|
+
() => client.post(
|
|
1468
|
+
`/dashboards/${encodePathSegment(dashboardId)}/panels/${encodePathSegment(panelId)}/data`,
|
|
1469
|
+
override
|
|
1470
|
+
)
|
|
1471
|
+
);
|
|
1472
|
+
}
|
|
1473
|
+
);
|
|
1474
|
+
server.registerTool(
|
|
1475
|
+
"query_insights",
|
|
1476
|
+
{
|
|
1477
|
+
description: "Ad-hoc aggregate query over a collection \u2014 no saved panel required. Answers operational questions (counts, sums, averages, breakdowns) directly. Read-only.",
|
|
1478
|
+
inputSchema: {
|
|
1479
|
+
dashboardId: idPathSegmentSchema.describe(
|
|
1480
|
+
"Any dashboard id you can access; the query runs ad-hoc and does not read that dashboard."
|
|
1481
|
+
),
|
|
1482
|
+
...panelQueryShape
|
|
1483
|
+
}
|
|
1484
|
+
},
|
|
1485
|
+
async ({ dashboardId, ...query }) => run(
|
|
1486
|
+
() => client.post(`/dashboards/${encodePathSegment(dashboardId)}/panels/preview`, query)
|
|
1487
|
+
)
|
|
1488
|
+
);
|
|
1489
|
+
}
|
|
1490
|
+
|
|
1268
1491
|
// src/tools/items.ts
|
|
1269
|
-
var
|
|
1492
|
+
var import_zod15 = require("zod");
|
|
1270
1493
|
function formatError4(err) {
|
|
1271
1494
|
if (err instanceof LumiBaseApiError) {
|
|
1272
1495
|
return err.errors.map((e) => `[${e.code}] ${e.message}`).join("; ");
|
|
@@ -1288,12 +1511,12 @@ function registerItemTools(server, client) {
|
|
|
1288
1511
|
description: "List items from a collection with optional filtering, sorting, and pagination.",
|
|
1289
1512
|
inputSchema: {
|
|
1290
1513
|
collection: collectionNameSchema,
|
|
1291
|
-
limit:
|
|
1292
|
-
offset:
|
|
1293
|
-
status:
|
|
1294
|
-
sort:
|
|
1295
|
-
fields:
|
|
1296
|
-
search:
|
|
1514
|
+
limit: import_zod15.z.number().int().min(1).max(200).optional().default(25),
|
|
1515
|
+
offset: import_zod15.z.number().int().min(0).optional().default(0),
|
|
1516
|
+
status: import_zod15.z.enum(["draft", "published", "archived"]).optional(),
|
|
1517
|
+
sort: import_zod15.z.string().optional().describe('Comma-separated field names; prefix with - for descending (e.g. "-created_at")'),
|
|
1518
|
+
fields: import_zod15.z.string().optional().describe('Comma-separated field names to return (e.g. "id,title,status")'),
|
|
1519
|
+
search: import_zod15.z.string().optional().describe("Full-text search across searchable fields")
|
|
1297
1520
|
}
|
|
1298
1521
|
},
|
|
1299
1522
|
async ({ collection, ...params }) => {
|
|
@@ -1313,7 +1536,7 @@ function registerItemTools(server, client) {
|
|
|
1313
1536
|
inputSchema: {
|
|
1314
1537
|
collection: collectionNameSchema,
|
|
1315
1538
|
id: idPathSegmentSchema,
|
|
1316
|
-
fields:
|
|
1539
|
+
fields: import_zod15.z.string().optional().describe("Comma-separated field names to return")
|
|
1317
1540
|
}
|
|
1318
1541
|
},
|
|
1319
1542
|
async ({ collection, id, fields }) => {
|
|
@@ -1334,8 +1557,8 @@ function registerItemTools(server, client) {
|
|
|
1334
1557
|
description: "Create a new item in a collection.",
|
|
1335
1558
|
inputSchema: {
|
|
1336
1559
|
collection: collectionNameSchema,
|
|
1337
|
-
data:
|
|
1338
|
-
status:
|
|
1560
|
+
data: import_zod15.z.record(import_zod15.z.unknown()).describe("Field values for the new item"),
|
|
1561
|
+
status: import_zod15.z.enum(["draft", "published"]).optional().default("draft")
|
|
1339
1562
|
}
|
|
1340
1563
|
},
|
|
1341
1564
|
async ({ collection, data: itemData, status }) => {
|
|
@@ -1357,7 +1580,7 @@ function registerItemTools(server, client) {
|
|
|
1357
1580
|
inputSchema: {
|
|
1358
1581
|
collection: collectionNameSchema,
|
|
1359
1582
|
id: idPathSegmentSchema,
|
|
1360
|
-
data:
|
|
1583
|
+
data: import_zod15.z.record(import_zod15.z.unknown()).describe("Fields to update")
|
|
1361
1584
|
}
|
|
1362
1585
|
},
|
|
1363
1586
|
async ({ collection, id, data: itemData }) => {
|
|
@@ -1379,7 +1602,7 @@ function registerItemTools(server, client) {
|
|
|
1379
1602
|
inputSchema: {
|
|
1380
1603
|
collection: collectionNameSchema,
|
|
1381
1604
|
id: idPathSegmentSchema,
|
|
1382
|
-
confirm:
|
|
1605
|
+
confirm: import_zod15.z.literal(true).describe("Must be true to confirm deletion")
|
|
1383
1606
|
}
|
|
1384
1607
|
},
|
|
1385
1608
|
async ({ collection, id }) => {
|
|
@@ -1393,16 +1616,137 @@ function registerItemTools(server, client) {
|
|
|
1393
1616
|
);
|
|
1394
1617
|
}
|
|
1395
1618
|
|
|
1619
|
+
// src/tools/releases.ts
|
|
1620
|
+
var import_zod16 = require("zod");
|
|
1621
|
+
var releaseItemSchema = import_zod16.z.object({
|
|
1622
|
+
collection: import_zod16.z.string().min(1),
|
|
1623
|
+
itemId: import_zod16.z.string().min(1),
|
|
1624
|
+
targetStatus: import_zod16.z.enum(["draft", "published", "archived"]).optional(),
|
|
1625
|
+
revisionId: import_zod16.z.string().nullable().optional()
|
|
1626
|
+
});
|
|
1627
|
+
function registerReleaseTools(server, client) {
|
|
1628
|
+
server.registerTool(
|
|
1629
|
+
"list_releases",
|
|
1630
|
+
{
|
|
1631
|
+
description: "List content releases for the site, optionally filtered by status.",
|
|
1632
|
+
inputSchema: {
|
|
1633
|
+
status: import_zod16.z.string().optional(),
|
|
1634
|
+
page: import_zod16.z.number().int().min(1).optional(),
|
|
1635
|
+
limit: import_zod16.z.number().int().min(1).max(200).optional()
|
|
1636
|
+
}
|
|
1637
|
+
},
|
|
1638
|
+
async (args) => run(
|
|
1639
|
+
() => client.get(
|
|
1640
|
+
`/releases${buildQs(args)}`
|
|
1641
|
+
)
|
|
1642
|
+
)
|
|
1643
|
+
);
|
|
1644
|
+
server.registerTool(
|
|
1645
|
+
"get_release",
|
|
1646
|
+
{
|
|
1647
|
+
description: "Get a single content release by id (with its staged items).",
|
|
1648
|
+
inputSchema: { id: idPathSegmentSchema }
|
|
1649
|
+
},
|
|
1650
|
+
async ({ id }) => run(() => client.get(`/releases/${encodePathSegment(id)}`))
|
|
1651
|
+
);
|
|
1652
|
+
server.registerTool(
|
|
1653
|
+
"create_release",
|
|
1654
|
+
{
|
|
1655
|
+
description: "Create a content release. Set publishAt for a scheduled release; omit for a manual one.",
|
|
1656
|
+
inputSchema: {
|
|
1657
|
+
name: import_zod16.z.string().min(1),
|
|
1658
|
+
description: import_zod16.z.string().nullable().optional(),
|
|
1659
|
+
atomicityMode: import_zod16.z.enum(["all_or_nothing", "best_effort"]).optional(),
|
|
1660
|
+
publishAt: import_zod16.z.string().nullable().optional().describe("ISO datetime to auto-publish, or null.")
|
|
1661
|
+
}
|
|
1662
|
+
},
|
|
1663
|
+
async (input) => run(() => client.post("/releases", input))
|
|
1664
|
+
);
|
|
1665
|
+
server.registerTool(
|
|
1666
|
+
"update_release",
|
|
1667
|
+
{
|
|
1668
|
+
description: "Update a release and/or stage/unstage items (partial PATCH).",
|
|
1669
|
+
inputSchema: {
|
|
1670
|
+
id: idPathSegmentSchema,
|
|
1671
|
+
name: import_zod16.z.string().min(1).optional(),
|
|
1672
|
+
description: import_zod16.z.string().nullable().optional(),
|
|
1673
|
+
atomicityMode: import_zod16.z.enum(["all_or_nothing", "best_effort"]).optional(),
|
|
1674
|
+
publishAt: import_zod16.z.string().nullable().optional(),
|
|
1675
|
+
addItems: import_zod16.z.array(releaseItemSchema).optional().describe("Items to stage into the release."),
|
|
1676
|
+
removeItems: import_zod16.z.array(import_zod16.z.object({ collection: import_zod16.z.string(), itemId: import_zod16.z.string() })).optional().describe("Items to unstage.")
|
|
1677
|
+
}
|
|
1678
|
+
},
|
|
1679
|
+
async ({ id, ...patch }) => run(() => client.patch(`/releases/${encodePathSegment(id)}`, patch))
|
|
1680
|
+
);
|
|
1681
|
+
server.registerTool(
|
|
1682
|
+
"publish_release",
|
|
1683
|
+
{
|
|
1684
|
+
description: "Publish a release now (applies every staged item\u2019s target status per the atomicity mode).",
|
|
1685
|
+
inputSchema: { id: idPathSegmentSchema }
|
|
1686
|
+
},
|
|
1687
|
+
async ({ id }) => run(() => client.post(`/releases/${encodePathSegment(id)}/publish`, {}))
|
|
1688
|
+
);
|
|
1689
|
+
server.registerTool(
|
|
1690
|
+
"delete_release",
|
|
1691
|
+
{
|
|
1692
|
+
description: "Delete a content release. DESTRUCTIVE \u2014 warn the user first and pass confirm=true.",
|
|
1693
|
+
inputSchema: {
|
|
1694
|
+
id: idPathSegmentSchema,
|
|
1695
|
+
confirm: import_zod16.z.literal(true).describe(confirmDescription)
|
|
1696
|
+
}
|
|
1697
|
+
},
|
|
1698
|
+
async ({ id }) => run(async () => {
|
|
1699
|
+
await client.delete(`/releases/${encodePathSegment(id)}`);
|
|
1700
|
+
return okText(`Release "${id}" deleted.`);
|
|
1701
|
+
})
|
|
1702
|
+
);
|
|
1703
|
+
}
|
|
1704
|
+
|
|
1705
|
+
// src/tools/shares.ts
|
|
1706
|
+
var import_zod17 = require("zod");
|
|
1707
|
+
function registerShareTools(server, client) {
|
|
1708
|
+
server.registerTool(
|
|
1709
|
+
"create_share",
|
|
1710
|
+
{
|
|
1711
|
+
description: "Create a scoped public share link for a single item, viewed through a given role.",
|
|
1712
|
+
inputSchema: {
|
|
1713
|
+
collection: import_zod17.z.string().min(1),
|
|
1714
|
+
itemId: import_zod17.z.string().min(1),
|
|
1715
|
+
roleId: import_zod17.z.string().min(1).describe("Role whose permissions the link is viewed through."),
|
|
1716
|
+
password: import_zod17.z.string().min(1).optional(),
|
|
1717
|
+
validFrom: import_zod17.z.string().datetime().nullable().optional(),
|
|
1718
|
+
validUntil: import_zod17.z.string().datetime().nullable().optional(),
|
|
1719
|
+
maxUses: import_zod17.z.number().int().min(1).nullable().optional()
|
|
1720
|
+
}
|
|
1721
|
+
},
|
|
1722
|
+
async (input) => run(() => client.post("/shares", input))
|
|
1723
|
+
);
|
|
1724
|
+
server.registerTool(
|
|
1725
|
+
"revoke_share",
|
|
1726
|
+
{
|
|
1727
|
+
description: "Revoke a share link by id. DESTRUCTIVE \u2014 warn the user first and pass confirm=true.",
|
|
1728
|
+
inputSchema: {
|
|
1729
|
+
id: idPathSegmentSchema,
|
|
1730
|
+
confirm: import_zod17.z.literal(true).describe(confirmDescription)
|
|
1731
|
+
}
|
|
1732
|
+
},
|
|
1733
|
+
async ({ id }) => run(async () => {
|
|
1734
|
+
await client.post(`/shares/${encodePathSegment(id)}/revoke`, {});
|
|
1735
|
+
return okText(`Share link "${id}" revoked.`);
|
|
1736
|
+
})
|
|
1737
|
+
);
|
|
1738
|
+
}
|
|
1739
|
+
|
|
1396
1740
|
// src/tools/ops.ts
|
|
1397
|
-
var
|
|
1741
|
+
var import_zod18 = require("zod");
|
|
1398
1742
|
function registerOpsTools(server, client) {
|
|
1399
1743
|
server.registerTool(
|
|
1400
1744
|
"list_activity",
|
|
1401
1745
|
{
|
|
1402
1746
|
description: "List the site activity / audit trail (most recent first).",
|
|
1403
1747
|
inputSchema: {
|
|
1404
|
-
limit:
|
|
1405
|
-
offset:
|
|
1748
|
+
limit: import_zod18.z.number().int().min(1).max(500).optional(),
|
|
1749
|
+
offset: import_zod18.z.number().int().min(0).optional()
|
|
1406
1750
|
}
|
|
1407
1751
|
},
|
|
1408
1752
|
async (args) => run(
|
|
@@ -1411,6 +1755,14 @@ function registerOpsTools(server, client) {
|
|
|
1411
1755
|
)
|
|
1412
1756
|
)
|
|
1413
1757
|
);
|
|
1758
|
+
server.registerTool(
|
|
1759
|
+
"get_site",
|
|
1760
|
+
{
|
|
1761
|
+
description: "Get the current site\u2019s configuration record (name, domain, settings).",
|
|
1762
|
+
inputSchema: {}
|
|
1763
|
+
},
|
|
1764
|
+
async () => run(() => client.get("/site"))
|
|
1765
|
+
);
|
|
1414
1766
|
server.registerTool(
|
|
1415
1767
|
"get_health",
|
|
1416
1768
|
{ description: "Check the CMS health endpoint.", inputSchema: {} },
|
|
@@ -1424,7 +1776,7 @@ function registerOpsTools(server, client) {
|
|
|
1424
1776
|
}
|
|
1425
1777
|
|
|
1426
1778
|
// src/tools/permissions.ts
|
|
1427
|
-
var
|
|
1779
|
+
var import_zod19 = require("zod");
|
|
1428
1780
|
function registerPermissionTools(server, client) {
|
|
1429
1781
|
server.registerTool(
|
|
1430
1782
|
"get_my_permissions",
|
|
@@ -1439,9 +1791,9 @@ function registerPermissionTools(server, client) {
|
|
|
1439
1791
|
{
|
|
1440
1792
|
description: "Evaluate whether the current principal may perform an action on a collection (optionally against a specific item), returning { allowed, reason, fields }.",
|
|
1441
1793
|
inputSchema: {
|
|
1442
|
-
collection:
|
|
1443
|
-
action:
|
|
1444
|
-
item:
|
|
1794
|
+
collection: import_zod19.z.string().min(1),
|
|
1795
|
+
action: import_zod19.z.enum(["create", "read", "update", "delete", "share"]),
|
|
1796
|
+
item: import_zod19.z.record(import_zod19.z.unknown()).optional().describe("Item payload to evaluate row-level rules against.")
|
|
1445
1797
|
}
|
|
1446
1798
|
},
|
|
1447
1799
|
async (input) => run(() => client.post("/permissions/check", input))
|
|
@@ -1449,21 +1801,21 @@ function registerPermissionTools(server, client) {
|
|
|
1449
1801
|
}
|
|
1450
1802
|
|
|
1451
1803
|
// src/tools/relations.ts
|
|
1452
|
-
var
|
|
1804
|
+
var import_zod20 = require("zod");
|
|
1453
1805
|
var relationInputSchema = {
|
|
1454
|
-
manyCollection:
|
|
1455
|
-
manyField:
|
|
1456
|
-
oneCollection:
|
|
1457
|
-
oneField:
|
|
1458
|
-
junctionCollection:
|
|
1459
|
-
type:
|
|
1460
|
-
aliasField:
|
|
1461
|
-
relatedDisplayTemplate:
|
|
1462
|
-
junctionManyField:
|
|
1463
|
-
junctionOneField:
|
|
1464
|
-
sortField:
|
|
1465
|
-
onDelete:
|
|
1466
|
-
meta:
|
|
1806
|
+
manyCollection: import_zod20.z.string().min(1).describe('Collection that holds the foreign key (the "many" side).'),
|
|
1807
|
+
manyField: import_zod20.z.string().min(1).describe("Field on manyCollection that stores the relation."),
|
|
1808
|
+
oneCollection: import_zod20.z.string().min(1).describe('Related collection (the "one" side).'),
|
|
1809
|
+
oneField: import_zod20.z.string().nullable().optional(),
|
|
1810
|
+
junctionCollection: import_zod20.z.string().nullable().optional().describe("Junction table for m2m relations."),
|
|
1811
|
+
type: import_zod20.z.enum(["m2o", "o2m", "m2m", "m2a"]).optional(),
|
|
1812
|
+
aliasField: import_zod20.z.string().nullable().optional(),
|
|
1813
|
+
relatedDisplayTemplate: import_zod20.z.string().nullable().optional(),
|
|
1814
|
+
junctionManyField: import_zod20.z.string().nullable().optional(),
|
|
1815
|
+
junctionOneField: import_zod20.z.string().nullable().optional(),
|
|
1816
|
+
sortField: import_zod20.z.string().nullable().optional(),
|
|
1817
|
+
onDelete: import_zod20.z.enum(["restrict", "cascade", "set null", "no action"]).optional(),
|
|
1818
|
+
meta: import_zod20.z.record(import_zod20.z.unknown()).optional()
|
|
1467
1819
|
};
|
|
1468
1820
|
function registerRelationTools(server, client) {
|
|
1469
1821
|
server.registerTool(
|
|
@@ -1485,7 +1837,7 @@ function registerRelationTools(server, client) {
|
|
|
1485
1837
|
description: "Delete a relation by id. DESTRUCTIVE \u2014 warn the user first and pass confirm=true.",
|
|
1486
1838
|
inputSchema: {
|
|
1487
1839
|
id: idPathSegmentSchema,
|
|
1488
|
-
confirm:
|
|
1840
|
+
confirm: import_zod20.z.literal(true).describe(confirmDescription)
|
|
1489
1841
|
}
|
|
1490
1842
|
},
|
|
1491
1843
|
async ({ id }) => run(async () => {
|
|
@@ -1496,19 +1848,19 @@ function registerRelationTools(server, client) {
|
|
|
1496
1848
|
}
|
|
1497
1849
|
|
|
1498
1850
|
// src/tools/search-media.ts
|
|
1499
|
-
var
|
|
1851
|
+
var import_zod21 = require("zod");
|
|
1500
1852
|
function registerSearchMediaTools(server, client) {
|
|
1501
1853
|
server.registerTool(
|
|
1502
1854
|
"search",
|
|
1503
1855
|
{
|
|
1504
1856
|
description: "Full-text search within a collection. Returns ranked hits from the search backend. The `collection` parameter is required.",
|
|
1505
1857
|
inputSchema: {
|
|
1506
|
-
q:
|
|
1507
|
-
collection:
|
|
1508
|
-
filter:
|
|
1509
|
-
sort:
|
|
1510
|
-
limit:
|
|
1511
|
-
offset:
|
|
1858
|
+
q: import_zod21.z.string().min(1).describe("Query string."),
|
|
1859
|
+
collection: import_zod21.z.string().min(1).describe("Collection to search."),
|
|
1860
|
+
filter: import_zod21.z.string().optional().describe("Backend filter expression."),
|
|
1861
|
+
sort: import_zod21.z.string().optional().describe("Comma-separated sort fields."),
|
|
1862
|
+
limit: import_zod21.z.number().int().min(1).max(200).optional(),
|
|
1863
|
+
offset: import_zod21.z.number().int().min(0).optional()
|
|
1512
1864
|
}
|
|
1513
1865
|
},
|
|
1514
1866
|
async (args) => run(
|
|
@@ -1521,7 +1873,7 @@ function registerSearchMediaTools(server, client) {
|
|
|
1521
1873
|
"list_media",
|
|
1522
1874
|
{
|
|
1523
1875
|
description: "List media asset keys, optionally filtered by key prefix.",
|
|
1524
|
-
inputSchema: { prefix:
|
|
1876
|
+
inputSchema: { prefix: import_zod21.z.string().optional() }
|
|
1525
1877
|
},
|
|
1526
1878
|
async ({ prefix }) => run(() => client.get(`/media${prefix ? `?prefix=${encodeURIComponent(prefix)}` : ""}`))
|
|
1527
1879
|
);
|
|
@@ -1531,7 +1883,7 @@ function registerSearchMediaTools(server, client) {
|
|
|
1531
1883
|
description: "Delete a media asset by key. DESTRUCTIVE \u2014 warn the user first and pass confirm=true.",
|
|
1532
1884
|
inputSchema: {
|
|
1533
1885
|
key: mediaKeySchema.describe("Full storage key of the asset."),
|
|
1534
|
-
confirm:
|
|
1886
|
+
confirm: import_zod21.z.literal(true).describe(confirmDescription)
|
|
1535
1887
|
}
|
|
1536
1888
|
},
|
|
1537
1889
|
async ({ key }) => run(async () => {
|
|
@@ -1539,18 +1891,26 @@ function registerSearchMediaTools(server, client) {
|
|
|
1539
1891
|
return okText(`Media asset "${key}" deleted.`);
|
|
1540
1892
|
})
|
|
1541
1893
|
);
|
|
1894
|
+
server.registerTool(
|
|
1895
|
+
"list_transform_presets",
|
|
1896
|
+
{
|
|
1897
|
+
description: "List named image-transform presets available for media delivery (key + DSL).",
|
|
1898
|
+
inputSchema: {}
|
|
1899
|
+
},
|
|
1900
|
+
async () => run(() => client.get("/transform-presets"))
|
|
1901
|
+
);
|
|
1542
1902
|
}
|
|
1543
1903
|
|
|
1544
1904
|
// src/tools/translation-memory.ts
|
|
1545
|
-
var
|
|
1905
|
+
var import_zod22 = require("zod");
|
|
1546
1906
|
function registerTranslationMemoryTools(server, client) {
|
|
1547
1907
|
server.registerTool(
|
|
1548
1908
|
"list_tm",
|
|
1549
1909
|
{
|
|
1550
1910
|
description: "List translation-memory entries, optionally filtered by source/target language.",
|
|
1551
1911
|
inputSchema: {
|
|
1552
|
-
source:
|
|
1553
|
-
target:
|
|
1912
|
+
source: import_zod22.z.string().optional().describe("Source language code."),
|
|
1913
|
+
target: import_zod22.z.string().optional().describe("Target language code.")
|
|
1554
1914
|
}
|
|
1555
1915
|
},
|
|
1556
1916
|
async (args) => run(
|
|
@@ -1562,14 +1922,14 @@ function registerTranslationMemoryTools(server, client) {
|
|
|
1562
1922
|
{
|
|
1563
1923
|
description: "Add or update a translation-memory entry.",
|
|
1564
1924
|
inputSchema: {
|
|
1565
|
-
sourceLang:
|
|
1566
|
-
targetLang:
|
|
1567
|
-
sourceText:
|
|
1568
|
-
targetText:
|
|
1569
|
-
context:
|
|
1570
|
-
quality:
|
|
1571
|
-
source:
|
|
1572
|
-
provider:
|
|
1925
|
+
sourceLang: import_zod22.z.string().min(2),
|
|
1926
|
+
targetLang: import_zod22.z.string().min(2),
|
|
1927
|
+
sourceText: import_zod22.z.string().min(1),
|
|
1928
|
+
targetText: import_zod22.z.string().min(1),
|
|
1929
|
+
context: import_zod22.z.string().optional(),
|
|
1930
|
+
quality: import_zod22.z.number().min(0).max(100).optional(),
|
|
1931
|
+
source: import_zod22.z.enum(["human", "mt", "imported"]).optional(),
|
|
1932
|
+
provider: import_zod22.z.string().optional()
|
|
1573
1933
|
}
|
|
1574
1934
|
},
|
|
1575
1935
|
async (input) => run(() => client.post("/tm", input))
|
|
@@ -1579,10 +1939,10 @@ function registerTranslationMemoryTools(server, client) {
|
|
|
1579
1939
|
{
|
|
1580
1940
|
description: "Fuzzy-match a query string against translation memory for a language pair.",
|
|
1581
1941
|
inputSchema: {
|
|
1582
|
-
query:
|
|
1583
|
-
sourceLang:
|
|
1584
|
-
targetLang:
|
|
1585
|
-
threshold:
|
|
1942
|
+
query: import_zod22.z.string().min(1),
|
|
1943
|
+
sourceLang: import_zod22.z.string().min(2),
|
|
1944
|
+
targetLang: import_zod22.z.string().min(2),
|
|
1945
|
+
threshold: import_zod22.z.number().min(0).max(100).optional().describe("Minimum match score (default 75).")
|
|
1586
1946
|
}
|
|
1587
1947
|
},
|
|
1588
1948
|
async (input) => run(() => client.post("/tm/lookup", input))
|
|
@@ -1592,18 +1952,46 @@ function registerTranslationMemoryTools(server, client) {
|
|
|
1592
1952
|
{
|
|
1593
1953
|
description: "Run the full translation pipeline (TM + glossary + MT provider) for a text.",
|
|
1594
1954
|
inputSchema: {
|
|
1595
|
-
text:
|
|
1596
|
-
from:
|
|
1597
|
-
to:
|
|
1598
|
-
provider:
|
|
1955
|
+
text: import_zod22.z.string().min(1),
|
|
1956
|
+
from: import_zod22.z.string().min(2),
|
|
1957
|
+
to: import_zod22.z.string().min(2),
|
|
1958
|
+
provider: import_zod22.z.string().optional()
|
|
1599
1959
|
}
|
|
1600
1960
|
},
|
|
1601
1961
|
async (input) => run(() => client.post("/tm/translate", input))
|
|
1602
1962
|
);
|
|
1963
|
+
server.registerTool(
|
|
1964
|
+
"update_tm",
|
|
1965
|
+
{
|
|
1966
|
+
description: "Edit an existing translation-memory entry (partial PATCH).",
|
|
1967
|
+
inputSchema: {
|
|
1968
|
+
id: idPathSegmentSchema,
|
|
1969
|
+
targetText: import_zod22.z.string().min(1).optional(),
|
|
1970
|
+
quality: import_zod22.z.number().min(0).max(100).optional(),
|
|
1971
|
+
context: import_zod22.z.string().nullable().optional(),
|
|
1972
|
+
source: import_zod22.z.enum(["human", "mt", "imported"]).optional()
|
|
1973
|
+
}
|
|
1974
|
+
},
|
|
1975
|
+
async ({ id, ...patch }) => run(() => client.patch(`/tm/${encodePathSegment(id)}`, patch))
|
|
1976
|
+
);
|
|
1977
|
+
server.registerTool(
|
|
1978
|
+
"delete_tm",
|
|
1979
|
+
{
|
|
1980
|
+
description: "Delete a translation-memory entry. DESTRUCTIVE \u2014 warn the user first and pass confirm=true.",
|
|
1981
|
+
inputSchema: {
|
|
1982
|
+
id: idPathSegmentSchema,
|
|
1983
|
+
confirm: import_zod22.z.literal(true).describe(confirmDescription)
|
|
1984
|
+
}
|
|
1985
|
+
},
|
|
1986
|
+
async ({ id }) => run(async () => {
|
|
1987
|
+
await client.delete(`/tm/${encodePathSegment(id)}`);
|
|
1988
|
+
return okText(`Translation-memory entry "${id}" deleted.`);
|
|
1989
|
+
})
|
|
1990
|
+
);
|
|
1603
1991
|
}
|
|
1604
1992
|
|
|
1605
1993
|
// src/tools/users-teams.ts
|
|
1606
|
-
var
|
|
1994
|
+
var import_zod23 = require("zod");
|
|
1607
1995
|
function registerUsersTeamsTools(server, client) {
|
|
1608
1996
|
server.registerTool(
|
|
1609
1997
|
"list_users",
|
|
@@ -1620,8 +2008,8 @@ function registerUsersTeamsTools(server, client) {
|
|
|
1620
2008
|
{
|
|
1621
2009
|
description: "Invite a user to the site by email, optionally assigning a role. Sends an invite email.",
|
|
1622
2010
|
inputSchema: {
|
|
1623
|
-
email:
|
|
1624
|
-
roleId:
|
|
2011
|
+
email: import_zod23.z.string().email(),
|
|
2012
|
+
roleId: import_zod23.z.string().optional()
|
|
1625
2013
|
}
|
|
1626
2014
|
},
|
|
1627
2015
|
async (input) => run(() => client.post("/users/invite", input))
|
|
@@ -1632,8 +2020,8 @@ function registerUsersTeamsTools(server, client) {
|
|
|
1632
2020
|
description: "Update a user's site membership (role and/or status).",
|
|
1633
2021
|
inputSchema: {
|
|
1634
2022
|
id: idPathSegmentSchema,
|
|
1635
|
-
roleId:
|
|
1636
|
-
status:
|
|
2023
|
+
roleId: import_zod23.z.string().nullable().optional(),
|
|
2024
|
+
status: import_zod23.z.string().optional().describe("e.g. active, suspended.")
|
|
1637
2025
|
}
|
|
1638
2026
|
},
|
|
1639
2027
|
async ({ id, ...patch }) => run(() => client.patch(`/users/${encodePathSegment(id)}`, patch))
|
|
@@ -1642,7 +2030,7 @@ function registerUsersTeamsTools(server, client) {
|
|
|
1642
2030
|
"remove_user",
|
|
1643
2031
|
{
|
|
1644
2032
|
description: "Remove a user from the site. DESTRUCTIVE \u2014 pass confirm=true.",
|
|
1645
|
-
inputSchema: { id: idPathSegmentSchema, confirm:
|
|
2033
|
+
inputSchema: { id: idPathSegmentSchema, confirm: import_zod23.z.literal(true).describe(confirmDescription) }
|
|
1646
2034
|
},
|
|
1647
2035
|
async ({ id }) => run(async () => {
|
|
1648
2036
|
await client.delete(`/users/${encodePathSegment(id)}`);
|
|
@@ -1663,7 +2051,7 @@ function registerUsersTeamsTools(server, client) {
|
|
|
1663
2051
|
"create_team",
|
|
1664
2052
|
{
|
|
1665
2053
|
description: "Create a team.",
|
|
1666
|
-
inputSchema: { name:
|
|
2054
|
+
inputSchema: { name: import_zod23.z.string().min(1).max(128), description: import_zod23.z.string().nullable().optional() }
|
|
1667
2055
|
},
|
|
1668
2056
|
async (input) => run(() => client.post("/teams", input))
|
|
1669
2057
|
);
|
|
@@ -1673,8 +2061,8 @@ function registerUsersTeamsTools(server, client) {
|
|
|
1673
2061
|
description: "Update a team (partial PATCH).",
|
|
1674
2062
|
inputSchema: {
|
|
1675
2063
|
id: idPathSegmentSchema,
|
|
1676
|
-
name:
|
|
1677
|
-
description:
|
|
2064
|
+
name: import_zod23.z.string().min(1).max(128).optional(),
|
|
2065
|
+
description: import_zod23.z.string().nullable().optional()
|
|
1678
2066
|
}
|
|
1679
2067
|
},
|
|
1680
2068
|
async ({ id, ...patch }) => run(() => client.patch(`/teams/${encodePathSegment(id)}`, patch))
|
|
@@ -1683,7 +2071,7 @@ function registerUsersTeamsTools(server, client) {
|
|
|
1683
2071
|
"delete_team",
|
|
1684
2072
|
{
|
|
1685
2073
|
description: "Delete a team. DESTRUCTIVE \u2014 pass confirm=true.",
|
|
1686
|
-
inputSchema: { id: idPathSegmentSchema, confirm:
|
|
2074
|
+
inputSchema: { id: idPathSegmentSchema, confirm: import_zod23.z.literal(true).describe(confirmDescription) }
|
|
1687
2075
|
},
|
|
1688
2076
|
async ({ id }) => run(async () => {
|
|
1689
2077
|
await client.delete(`/teams/${encodePathSegment(id)}`);
|
|
@@ -1710,7 +2098,7 @@ function registerUsersTeamsTools(server, client) {
|
|
|
1710
2098
|
inputSchema: {
|
|
1711
2099
|
id: idPathSegmentSchema.describe("Team id."),
|
|
1712
2100
|
userId: idPathSegmentSchema,
|
|
1713
|
-
confirm:
|
|
2101
|
+
confirm: import_zod23.z.literal(true).describe(confirmDescription)
|
|
1714
2102
|
}
|
|
1715
2103
|
},
|
|
1716
2104
|
async ({ id, userId }) => run(async () => {
|
|
@@ -1721,15 +2109,15 @@ function registerUsersTeamsTools(server, client) {
|
|
|
1721
2109
|
}
|
|
1722
2110
|
|
|
1723
2111
|
// src/tools/webhooks.ts
|
|
1724
|
-
var
|
|
1725
|
-
var webhookSchema =
|
|
1726
|
-
name:
|
|
1727
|
-
url:
|
|
1728
|
-
actions:
|
|
1729
|
-
collections:
|
|
1730
|
-
headers:
|
|
1731
|
-
status:
|
|
1732
|
-
secret:
|
|
2112
|
+
var import_zod24 = require("zod");
|
|
2113
|
+
var webhookSchema = import_zod24.z.object({
|
|
2114
|
+
name: import_zod24.z.string().min(1).max(255),
|
|
2115
|
+
url: import_zod24.z.string().url(),
|
|
2116
|
+
actions: import_zod24.z.array(import_zod24.z.string()).optional().describe("Item events that trigger the webhook (e.g. create, update, delete)."),
|
|
2117
|
+
collections: import_zod24.z.array(import_zod24.z.string()).optional().describe("Collections to filter on (empty = all)."),
|
|
2118
|
+
headers: import_zod24.z.record(import_zod24.z.string()).optional(),
|
|
2119
|
+
status: import_zod24.z.enum(["active", "inactive"]).optional(),
|
|
2120
|
+
secret: import_zod24.z.string().nullable().optional()
|
|
1733
2121
|
});
|
|
1734
2122
|
function registerWebhookTools(server, client) {
|
|
1735
2123
|
registerCrud(server, client, {
|
|
@@ -1752,6 +2140,10 @@ function registerAllTools(server, client) {
|
|
|
1752
2140
|
registerContentConfigTools(server, client);
|
|
1753
2141
|
registerSearchMediaTools(server, client);
|
|
1754
2142
|
registerTranslationMemoryTools(server, client);
|
|
2143
|
+
registerInsightsTools(server, client);
|
|
2144
|
+
registerEditorialTools(server, client);
|
|
2145
|
+
registerReleaseTools(server, client);
|
|
2146
|
+
registerShareTools(server, client);
|
|
1755
2147
|
registerPermissionTools(server, client);
|
|
1756
2148
|
registerAccessTools(server, client);
|
|
1757
2149
|
registerApiKeyTools(server, client);
|
|
@@ -1762,6 +2154,7 @@ function registerAllTools(server, client) {
|
|
|
1762
2154
|
registerOpsTools(server, client);
|
|
1763
2155
|
registerAdminTools(server, client);
|
|
1764
2156
|
registerExtensionTools(server, client);
|
|
2157
|
+
registerDeploymentTools(server, client);
|
|
1765
2158
|
}
|
|
1766
2159
|
|
|
1767
2160
|
// src/index.ts
|