@telora/mcp-products 0.22.21 → 0.22.27
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/handlers/deliveryHandlers.js +8 -5
- package/dist/handlers/deliveryHandlers.js.map +1 -1
- package/dist/handlers/focusHandlers.d.ts +49 -0
- package/dist/handlers/focusHandlers.js +27 -14
- package/dist/handlers/focusHandlers.js.map +1 -1
- package/dist/handlers/index.d.ts +0 -1
- package/dist/handlers/index.js +0 -1
- package/dist/handlers/index.js.map +1 -1
- package/dist/handlers/productHandlers.js +2 -1
- package/dist/handlers/productHandlers.js.map +1 -1
- package/dist/handlers/realityTreeHandlers.d.ts +18 -0
- package/dist/handlers/realityTreeHandlers.js +27 -88
- package/dist/handlers/realityTreeHandlers.js.map +1 -1
- package/dist/index.js +1 -29
- package/dist/index.js.map +1 -1
- package/dist/types/nextSteps.d.ts +14 -0
- package/dist/types/nextSteps.js +9 -0
- package/dist/types/nextSteps.js.map +1 -0
- package/package.json +2 -1
- package/dist/handlers/prerequisiteTreeHandlers.d.ts +0 -3
- package/dist/handlers/prerequisiteTreeHandlers.js +0 -421
- package/dist/handlers/prerequisiteTreeHandlers.js.map +0 -1
|
@@ -1,421 +0,0 @@
|
|
|
1
|
-
// ---------------------------------------------------------------------------
|
|
2
|
-
// Prerequisite tree tool handlers:
|
|
3
|
-
// telora_prerequisite_tree (list | create | get | update | dump)
|
|
4
|
-
// telora_prerequisite_tree_node (list | get | create | update | retire)
|
|
5
|
-
// telora_prerequisite_tree_edge (list | create | delete)
|
|
6
|
-
// telora_prerequisite_tree_link (list | create | delete)
|
|
7
|
-
// telora_prerequisite_tree_group (list | create | update | delete)
|
|
8
|
-
// telora_prerequisite_tree_traverse (objective | io | dependency_order)
|
|
9
|
-
// ---------------------------------------------------------------------------
|
|
10
|
-
import { z } from "zod";
|
|
11
|
-
import { callProductApi, successResult, validationError, wrapHandler, compactEntity, LIST_INDEX_NOTE, } from "../shared.js";
|
|
12
|
-
const nodeTypeEnum = z.enum(["objective", "obstacle", "intermediate_objective"]);
|
|
13
|
-
const edgeTypeEnum = z.enum(["blocks", "overcomes", "depends_on"]);
|
|
14
|
-
const linkEntityTypeEnum = z.enum(["focus", "delivery", "issue"]);
|
|
15
|
-
const ioStatusEnum = z.enum(["proposed", "in_progress", "done"]);
|
|
16
|
-
export function registerPrerequisiteTreeTools(server, getCreds) {
|
|
17
|
-
// -- telora_prerequisite_tree ------------------------------------------------
|
|
18
|
-
server.tool("telora_prerequisite_tree", "Prerequisite trees: Goldratt's Prerequisite Tree for contract planning. " +
|
|
19
|
-
"Models objectives, obstacles blocking them, and intermediate objectives (IOs) that overcome obstacles. " +
|
|
20
|
-
"Each PRT can optionally link to a contract via contractId. " +
|
|
21
|
-
"Actions: list (productId, optional contractId filter), create (productId + name, optional contractId), " +
|
|
22
|
-
"get (treeId -- returns full graph with nodes and edges), " +
|
|
23
|
-
"update (treeId + fields), dump (treeId -- structured text view of graph)." +
|
|
24
|
-
LIST_INDEX_NOTE, {
|
|
25
|
-
action: z.enum(["list", "create", "get", "update", "dump"]).describe("Action to perform"),
|
|
26
|
-
productId: z.string().uuid().optional().describe("Product UUID (required for list, create)"),
|
|
27
|
-
treeId: z.string().uuid().optional().describe("Prerequisite tree UUID (required for get, update, dump)"),
|
|
28
|
-
contractId: z.string().uuid().nullable().optional().describe("Contract UUID (optional for create/update, filter for list)"),
|
|
29
|
-
name: z.string().max(200).optional().describe("Tree name (required for create)"),
|
|
30
|
-
description: z.string().max(2000).optional().describe("Tree description"),
|
|
31
|
-
status: z.enum(["active", "archived"]).optional().describe("Tree status (update only)"),
|
|
32
|
-
returnFull: z.boolean().optional().describe("Return full entity (default: compact)"),
|
|
33
|
-
}, wrapHandler(async (params) => {
|
|
34
|
-
switch (params.action) {
|
|
35
|
-
case "list": {
|
|
36
|
-
if (!params.productId)
|
|
37
|
-
return validationError("productId required for list");
|
|
38
|
-
const body = {
|
|
39
|
-
action: "prerequisite_tree_list",
|
|
40
|
-
productId: params.productId,
|
|
41
|
-
};
|
|
42
|
-
if (params.contractId !== undefined)
|
|
43
|
-
body.contractId = params.contractId;
|
|
44
|
-
const result = await callProductApi(getCreds(), body);
|
|
45
|
-
return successResult(result);
|
|
46
|
-
}
|
|
47
|
-
case "create": {
|
|
48
|
-
if (!params.productId || !params.name)
|
|
49
|
-
return validationError("productId and name required for create");
|
|
50
|
-
const body = {
|
|
51
|
-
action: "prerequisite_tree_create",
|
|
52
|
-
productId: params.productId,
|
|
53
|
-
name: params.name,
|
|
54
|
-
};
|
|
55
|
-
if (params.description !== undefined)
|
|
56
|
-
body.description = params.description;
|
|
57
|
-
if (params.contractId !== undefined)
|
|
58
|
-
body.contractId = params.contractId;
|
|
59
|
-
const result = await callProductApi(getCreds(), body);
|
|
60
|
-
const tree = result.tree;
|
|
61
|
-
return successResult({ tree: params.returnFull ? tree : compactEntity(tree, ["name", "status"]) });
|
|
62
|
-
}
|
|
63
|
-
case "get": {
|
|
64
|
-
if (!params.treeId)
|
|
65
|
-
return validationError("treeId required for get");
|
|
66
|
-
const result = await callProductApi(getCreds(), {
|
|
67
|
-
action: "prerequisite_tree_get",
|
|
68
|
-
treeId: params.treeId,
|
|
69
|
-
});
|
|
70
|
-
return successResult(result);
|
|
71
|
-
}
|
|
72
|
-
case "update": {
|
|
73
|
-
if (!params.treeId)
|
|
74
|
-
return validationError("treeId required for update");
|
|
75
|
-
const body = {
|
|
76
|
-
action: "prerequisite_tree_update",
|
|
77
|
-
treeId: params.treeId,
|
|
78
|
-
};
|
|
79
|
-
if (params.name !== undefined)
|
|
80
|
-
body.name = params.name;
|
|
81
|
-
if (params.description !== undefined)
|
|
82
|
-
body.description = params.description;
|
|
83
|
-
if (params.status !== undefined)
|
|
84
|
-
body.status = params.status;
|
|
85
|
-
if (params.contractId !== undefined)
|
|
86
|
-
body.contractId = params.contractId;
|
|
87
|
-
const result = await callProductApi(getCreds(), body);
|
|
88
|
-
const tree = result.tree;
|
|
89
|
-
return successResult({ tree: params.returnFull ? tree : compactEntity(tree, ["name", "status"]) });
|
|
90
|
-
}
|
|
91
|
-
case "dump": {
|
|
92
|
-
if (!params.treeId)
|
|
93
|
-
return validationError("treeId required for dump");
|
|
94
|
-
const result = await callProductApi(getCreds(), {
|
|
95
|
-
action: "prerequisite_tree_dump",
|
|
96
|
-
treeId: params.treeId,
|
|
97
|
-
});
|
|
98
|
-
return successResult(result);
|
|
99
|
-
}
|
|
100
|
-
default:
|
|
101
|
-
return validationError(`Unknown action: ${params.action}`);
|
|
102
|
-
}
|
|
103
|
-
}));
|
|
104
|
-
// -- telora_prerequisite_tree_node -------------------------------------------
|
|
105
|
-
server.tool("telora_prerequisite_tree_node", "Prerequisite tree nodes: three types. " +
|
|
106
|
-
"Objective: what must be achieved (contract term/goal). " +
|
|
107
|
-
"Obstacle: what blocks an objective. " +
|
|
108
|
-
"Intermediate Objective (IO): action that overcomes an obstacle, with status (proposed/in_progress/done). " +
|
|
109
|
-
"IO status tracks implementation progress. Obstacle cleared and objective satisfied are derived queries. " +
|
|
110
|
-
"Actions: list (treeId, optional nodeType/status filter), " +
|
|
111
|
-
"get (treeId + seq -- lookup by display number, returns node + connected edges), " +
|
|
112
|
-
"create (treeId + statement + nodeType), " +
|
|
113
|
-
"update (nodeId + fields -- ioStatus only settable on IO nodes), " +
|
|
114
|
-
"retire (nodeId -- sets status to retired)." +
|
|
115
|
-
LIST_INDEX_NOTE, {
|
|
116
|
-
action: z.enum(["list", "get", "create", "update", "retire"]).describe("Action to perform"),
|
|
117
|
-
treeId: z.string().uuid().optional().describe("Prerequisite tree UUID (required for list, get, create)"),
|
|
118
|
-
nodeId: z.string().uuid().optional().describe("Node UUID (required for update, retire)"),
|
|
119
|
-
seq: z.number().int().optional().describe("Node sequence number for get (the #N displayed on canvas)"),
|
|
120
|
-
statement: z.string().max(2000).optional().describe("The assertion (required for create)"),
|
|
121
|
-
nodeType: nodeTypeEnum.optional().describe("Node type (required for create; optional filter for list)"),
|
|
122
|
-
status: z.enum(["active", "retired"]).optional().describe("Node status filter (list only, default: active)"),
|
|
123
|
-
ioStatus: ioStatusEnum.optional().describe("IO status (intermediate_objective nodes only)"),
|
|
124
|
-
evidence: z.string().max(5000).optional().describe("Rationale or supporting observation"),
|
|
125
|
-
groupId: z.string().uuid().nullable().optional().describe("Group UUID (update only)"),
|
|
126
|
-
positionX: z.number().optional().describe("X coordinate"),
|
|
127
|
-
positionY: z.number().optional().describe("Y coordinate"),
|
|
128
|
-
returnFull: z.boolean().optional().describe("Return full entity (default: compact)"),
|
|
129
|
-
}, wrapHandler(async (params) => {
|
|
130
|
-
switch (params.action) {
|
|
131
|
-
case "list": {
|
|
132
|
-
if (!params.treeId)
|
|
133
|
-
return validationError("treeId required for list");
|
|
134
|
-
const body = {
|
|
135
|
-
action: "prerequisite_tree_node_list",
|
|
136
|
-
treeId: params.treeId,
|
|
137
|
-
};
|
|
138
|
-
if (params.nodeType !== undefined)
|
|
139
|
-
body.nodeType = params.nodeType;
|
|
140
|
-
if (params.status !== undefined)
|
|
141
|
-
body.status = params.status;
|
|
142
|
-
const result = await callProductApi(getCreds(), body);
|
|
143
|
-
return successResult(result);
|
|
144
|
-
}
|
|
145
|
-
case "get": {
|
|
146
|
-
if (!params.treeId || params.seq === undefined) {
|
|
147
|
-
return validationError("treeId and seq required for get");
|
|
148
|
-
}
|
|
149
|
-
const result = await callProductApi(getCreds(), {
|
|
150
|
-
action: "prerequisite_tree_node_get_by_seq",
|
|
151
|
-
treeId: params.treeId,
|
|
152
|
-
seq: params.seq,
|
|
153
|
-
});
|
|
154
|
-
return successResult(result);
|
|
155
|
-
}
|
|
156
|
-
case "create": {
|
|
157
|
-
if (!params.treeId || !params.statement || !params.nodeType) {
|
|
158
|
-
return validationError("treeId, statement, and nodeType required for create");
|
|
159
|
-
}
|
|
160
|
-
const body = {
|
|
161
|
-
action: "prerequisite_tree_node_create",
|
|
162
|
-
treeId: params.treeId,
|
|
163
|
-
statement: params.statement,
|
|
164
|
-
nodeType: params.nodeType,
|
|
165
|
-
};
|
|
166
|
-
if (params.evidence !== undefined)
|
|
167
|
-
body.evidence = params.evidence;
|
|
168
|
-
if (params.groupId !== undefined)
|
|
169
|
-
body.groupId = params.groupId;
|
|
170
|
-
if (params.positionX !== undefined)
|
|
171
|
-
body.positionX = params.positionX;
|
|
172
|
-
if (params.positionY !== undefined)
|
|
173
|
-
body.positionY = params.positionY;
|
|
174
|
-
if (params.ioStatus !== undefined)
|
|
175
|
-
body.ioStatus = params.ioStatus;
|
|
176
|
-
const result = await callProductApi(getCreds(), body);
|
|
177
|
-
const node = result.node;
|
|
178
|
-
return successResult({ node: params.returnFull ? node : compactEntity(node, ["statement", "nodeType", "status", "ioStatus"]) });
|
|
179
|
-
}
|
|
180
|
-
case "update": {
|
|
181
|
-
if (!params.nodeId)
|
|
182
|
-
return validationError("nodeId required for update");
|
|
183
|
-
const body = {
|
|
184
|
-
action: "prerequisite_tree_node_update",
|
|
185
|
-
nodeId: params.nodeId,
|
|
186
|
-
};
|
|
187
|
-
if (params.statement !== undefined)
|
|
188
|
-
body.statement = params.statement;
|
|
189
|
-
if (params.evidence !== undefined)
|
|
190
|
-
body.evidence = params.evidence;
|
|
191
|
-
if (params.ioStatus !== undefined)
|
|
192
|
-
body.ioStatus = params.ioStatus;
|
|
193
|
-
if (params.groupId !== undefined)
|
|
194
|
-
body.groupId = params.groupId;
|
|
195
|
-
if (params.positionX !== undefined)
|
|
196
|
-
body.positionX = params.positionX;
|
|
197
|
-
if (params.positionY !== undefined)
|
|
198
|
-
body.positionY = params.positionY;
|
|
199
|
-
const result = await callProductApi(getCreds(), body);
|
|
200
|
-
const node = result.node;
|
|
201
|
-
return successResult({ node: params.returnFull ? node : compactEntity(node, ["statement", "nodeType", "status", "ioStatus"]) });
|
|
202
|
-
}
|
|
203
|
-
case "retire": {
|
|
204
|
-
if (!params.nodeId)
|
|
205
|
-
return validationError("nodeId required for retire");
|
|
206
|
-
const result = await callProductApi(getCreds(), {
|
|
207
|
-
action: "prerequisite_tree_node_retire",
|
|
208
|
-
nodeId: params.nodeId,
|
|
209
|
-
});
|
|
210
|
-
const node = result.node;
|
|
211
|
-
return successResult({ node: params.returnFull ? node : compactEntity(node, ["statement", "nodeType", "status"]) });
|
|
212
|
-
}
|
|
213
|
-
default:
|
|
214
|
-
return validationError(`Unknown action: ${params.action}`);
|
|
215
|
-
}
|
|
216
|
-
}));
|
|
217
|
-
// -- telora_prerequisite_tree_edge -------------------------------------------
|
|
218
|
-
server.tool("telora_prerequisite_tree_edge", "Prerequisite tree edges: typed connections between nodes. " +
|
|
219
|
-
"Types: blocks (obstacle -> objective), overcomes (IO -> obstacle), depends_on (IO -> IO). " +
|
|
220
|
-
"Edge type is validated against source/target node types -- invalid combinations return clear errors. " +
|
|
221
|
-
"Actions: list (treeId), create (treeId + fromNodeId + toNodeId + edgeType), delete (edgeId)." +
|
|
222
|
-
LIST_INDEX_NOTE, {
|
|
223
|
-
action: z.enum(["list", "create", "delete"]).describe("Action to perform"),
|
|
224
|
-
treeId: z.string().uuid().optional().describe("Prerequisite tree UUID (required for list, create)"),
|
|
225
|
-
edgeId: z.string().uuid().optional().describe("Edge UUID (required for delete)"),
|
|
226
|
-
fromNodeId: z.string().uuid().optional().describe("Source node UUID (required for create)"),
|
|
227
|
-
toNodeId: z.string().uuid().optional().describe("Target node UUID (required for create)"),
|
|
228
|
-
edgeType: edgeTypeEnum.optional().describe("Edge type (required for create)"),
|
|
229
|
-
}, wrapHandler(async (params) => {
|
|
230
|
-
switch (params.action) {
|
|
231
|
-
case "list": {
|
|
232
|
-
if (!params.treeId)
|
|
233
|
-
return validationError("treeId required for list");
|
|
234
|
-
const result = await callProductApi(getCreds(), {
|
|
235
|
-
action: "prerequisite_tree_edge_list",
|
|
236
|
-
treeId: params.treeId,
|
|
237
|
-
});
|
|
238
|
-
return successResult(result);
|
|
239
|
-
}
|
|
240
|
-
case "create": {
|
|
241
|
-
if (!params.treeId || !params.fromNodeId || !params.toNodeId || !params.edgeType) {
|
|
242
|
-
return validationError("treeId, fromNodeId, toNodeId, and edgeType required for create");
|
|
243
|
-
}
|
|
244
|
-
const result = await callProductApi(getCreds(), {
|
|
245
|
-
action: "prerequisite_tree_edge_create",
|
|
246
|
-
treeId: params.treeId,
|
|
247
|
-
fromNodeId: params.fromNodeId,
|
|
248
|
-
toNodeId: params.toNodeId,
|
|
249
|
-
edgeType: params.edgeType,
|
|
250
|
-
});
|
|
251
|
-
return successResult(result);
|
|
252
|
-
}
|
|
253
|
-
case "delete": {
|
|
254
|
-
if (!params.edgeId)
|
|
255
|
-
return validationError("edgeId required for delete");
|
|
256
|
-
const result = await callProductApi(getCreds(), {
|
|
257
|
-
action: "prerequisite_tree_edge_delete",
|
|
258
|
-
edgeId: params.edgeId,
|
|
259
|
-
});
|
|
260
|
-
return successResult(result);
|
|
261
|
-
}
|
|
262
|
-
default:
|
|
263
|
-
return validationError(`Unknown action: ${params.action}`);
|
|
264
|
-
}
|
|
265
|
-
}));
|
|
266
|
-
// -- telora_prerequisite_tree_link -------------------------------------------
|
|
267
|
-
server.tool("telora_prerequisite_tree_link", "Reference links between prerequisite tree nodes and execution entities. " +
|
|
268
|
-
"IO nodes link to deliveries/focuses that implement them. " +
|
|
269
|
-
"Actions: list (nodeId or entityType+entityId), create (nodeId + entityType + entityId), delete (linkId)." +
|
|
270
|
-
LIST_INDEX_NOTE, {
|
|
271
|
-
action: z.enum(["list", "create", "delete"]).describe("Action to perform"),
|
|
272
|
-
nodeId: z.string().uuid().optional().describe("Node UUID (required for create; optional filter for list)"),
|
|
273
|
-
entityType: linkEntityTypeEnum.optional().describe("Entity type (required for create; optional filter for list)"),
|
|
274
|
-
entityId: z.string().uuid().optional().describe("Entity UUID (required for create; optional filter for list)"),
|
|
275
|
-
linkId: z.string().uuid().optional().describe("Link UUID (required for delete)"),
|
|
276
|
-
}, wrapHandler(async (params) => {
|
|
277
|
-
switch (params.action) {
|
|
278
|
-
case "list": {
|
|
279
|
-
const body = { action: "prerequisite_tree_link_list" };
|
|
280
|
-
if (params.nodeId)
|
|
281
|
-
body.nodeId = params.nodeId;
|
|
282
|
-
if (params.entityType)
|
|
283
|
-
body.entityType = params.entityType;
|
|
284
|
-
if (params.entityId)
|
|
285
|
-
body.entityId = params.entityId;
|
|
286
|
-
const result = await callProductApi(getCreds(), body);
|
|
287
|
-
return successResult(result);
|
|
288
|
-
}
|
|
289
|
-
case "create": {
|
|
290
|
-
if (!params.nodeId || !params.entityType || !params.entityId) {
|
|
291
|
-
return validationError("nodeId, entityType, and entityId required for create");
|
|
292
|
-
}
|
|
293
|
-
const result = await callProductApi(getCreds(), {
|
|
294
|
-
action: "prerequisite_tree_link_create",
|
|
295
|
-
nodeId: params.nodeId,
|
|
296
|
-
entityType: params.entityType,
|
|
297
|
-
entityId: params.entityId,
|
|
298
|
-
});
|
|
299
|
-
return successResult(result);
|
|
300
|
-
}
|
|
301
|
-
case "delete": {
|
|
302
|
-
if (!params.linkId)
|
|
303
|
-
return validationError("linkId required for delete");
|
|
304
|
-
const result = await callProductApi(getCreds(), {
|
|
305
|
-
action: "prerequisite_tree_link_delete",
|
|
306
|
-
linkId: params.linkId,
|
|
307
|
-
});
|
|
308
|
-
return successResult(result);
|
|
309
|
-
}
|
|
310
|
-
default:
|
|
311
|
-
return validationError(`Unknown action: ${params.action}`);
|
|
312
|
-
}
|
|
313
|
-
}));
|
|
314
|
-
// -- telora_prerequisite_tree_group ------------------------------------------
|
|
315
|
-
server.tool("telora_prerequisite_tree_group", "Prerequisite tree groups: named containers for organizing nodes. " +
|
|
316
|
-
"Actions: list (treeId), create (treeId + name + optional color), " +
|
|
317
|
-
"update (groupId + name/color), delete (groupId)." +
|
|
318
|
-
LIST_INDEX_NOTE, {
|
|
319
|
-
action: z.enum(["list", "create", "update", "delete"]).describe("Action to perform"),
|
|
320
|
-
treeId: z.string().uuid().optional().describe("Prerequisite tree UUID (required for list, create)"),
|
|
321
|
-
groupId: z.string().uuid().optional().describe("Group UUID (required for update, delete)"),
|
|
322
|
-
name: z.string().max(200).optional().describe("Group name (required for create)"),
|
|
323
|
-
color: z.string().max(20).optional().describe("Hex color"),
|
|
324
|
-
returnFull: z.boolean().optional().describe("Return full entity (default: compact)"),
|
|
325
|
-
}, wrapHandler(async (params) => {
|
|
326
|
-
switch (params.action) {
|
|
327
|
-
case "list": {
|
|
328
|
-
if (!params.treeId)
|
|
329
|
-
return validationError("treeId required for list");
|
|
330
|
-
const result = await callProductApi(getCreds(), {
|
|
331
|
-
action: "prerequisite_tree_group_list",
|
|
332
|
-
treeId: params.treeId,
|
|
333
|
-
});
|
|
334
|
-
return successResult(result);
|
|
335
|
-
}
|
|
336
|
-
case "create": {
|
|
337
|
-
if (!params.treeId || !params.name)
|
|
338
|
-
return validationError("treeId and name required for create");
|
|
339
|
-
const body = {
|
|
340
|
-
action: "prerequisite_tree_group_create",
|
|
341
|
-
treeId: params.treeId,
|
|
342
|
-
name: params.name,
|
|
343
|
-
};
|
|
344
|
-
if (params.color !== undefined)
|
|
345
|
-
body.color = params.color;
|
|
346
|
-
const result = await callProductApi(getCreds(), body);
|
|
347
|
-
const group = result.group;
|
|
348
|
-
return successResult({ group: params.returnFull ? group : compactEntity(group, ["name", "color"]) });
|
|
349
|
-
}
|
|
350
|
-
case "update": {
|
|
351
|
-
if (!params.groupId)
|
|
352
|
-
return validationError("groupId required for update");
|
|
353
|
-
const body = {
|
|
354
|
-
action: "prerequisite_tree_group_update",
|
|
355
|
-
groupId: params.groupId,
|
|
356
|
-
};
|
|
357
|
-
if (params.name !== undefined)
|
|
358
|
-
body.name = params.name;
|
|
359
|
-
if (params.color !== undefined)
|
|
360
|
-
body.color = params.color;
|
|
361
|
-
const result = await callProductApi(getCreds(), body);
|
|
362
|
-
const group = result.group;
|
|
363
|
-
return successResult({ group: params.returnFull ? group : compactEntity(group, ["name", "color"]) });
|
|
364
|
-
}
|
|
365
|
-
case "delete": {
|
|
366
|
-
if (!params.groupId)
|
|
367
|
-
return validationError("groupId required for delete");
|
|
368
|
-
const result = await callProductApi(getCreds(), {
|
|
369
|
-
action: "prerequisite_tree_group_delete",
|
|
370
|
-
groupId: params.groupId,
|
|
371
|
-
});
|
|
372
|
-
return successResult(result);
|
|
373
|
-
}
|
|
374
|
-
default:
|
|
375
|
-
return validationError(`Unknown action: ${params.action}`);
|
|
376
|
-
}
|
|
377
|
-
}));
|
|
378
|
-
// -- telora_prerequisite_tree_traverse ---------------------------------------
|
|
379
|
-
server.tool("telora_prerequisite_tree_traverse", "Graph analysis for prerequisite trees. " +
|
|
380
|
-
"Actions: objective (nodeId -- given an objective, returns blocking obstacles and all IOs with dependency ordering), " +
|
|
381
|
-
"io (nodeId -- given an IO, returns what it overcomes, its dependents, and dependencies), " +
|
|
382
|
-
"dependency_order (treeId -- topological sort of ALL IOs in the tree, giving the full implementation sequence). " +
|
|
383
|
-
"This is the key query for 'what do I need to do, in what order, to satisfy this contract term?'", {
|
|
384
|
-
action: z.enum(["objective", "io", "dependency_order"]).describe("Traversal operation"),
|
|
385
|
-
treeId: z.string().uuid().optional().describe("Prerequisite tree UUID (required for dependency_order)"),
|
|
386
|
-
nodeId: z.string().uuid().optional().describe("Node UUID (required for objective, io)"),
|
|
387
|
-
}, wrapHandler(async (params) => {
|
|
388
|
-
switch (params.action) {
|
|
389
|
-
case "objective": {
|
|
390
|
-
if (!params.nodeId)
|
|
391
|
-
return validationError("nodeId required for objective");
|
|
392
|
-
const result = await callProductApi(getCreds(), {
|
|
393
|
-
action: "prerequisite_tree_traverse_objective",
|
|
394
|
-
nodeId: params.nodeId,
|
|
395
|
-
});
|
|
396
|
-
return successResult(result);
|
|
397
|
-
}
|
|
398
|
-
case "io": {
|
|
399
|
-
if (!params.nodeId)
|
|
400
|
-
return validationError("nodeId required for io");
|
|
401
|
-
const result = await callProductApi(getCreds(), {
|
|
402
|
-
action: "prerequisite_tree_traverse_io",
|
|
403
|
-
nodeId: params.nodeId,
|
|
404
|
-
});
|
|
405
|
-
return successResult(result);
|
|
406
|
-
}
|
|
407
|
-
case "dependency_order": {
|
|
408
|
-
if (!params.treeId)
|
|
409
|
-
return validationError("treeId required for dependency_order");
|
|
410
|
-
const result = await callProductApi(getCreds(), {
|
|
411
|
-
action: "prerequisite_tree_dependency_order",
|
|
412
|
-
treeId: params.treeId,
|
|
413
|
-
});
|
|
414
|
-
return successResult(result);
|
|
415
|
-
}
|
|
416
|
-
default:
|
|
417
|
-
return validationError(`Unknown action: ${params.action}`);
|
|
418
|
-
}
|
|
419
|
-
}));
|
|
420
|
-
}
|
|
421
|
-
//# sourceMappingURL=prerequisiteTreeHandlers.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"prerequisiteTreeHandlers.js","sourceRoot":"","sources":["../../src/handlers/prerequisiteTreeHandlers.ts"],"names":[],"mappings":"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"}
|