@telora/mcp-products 0.22.2 → 0.22.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/handlers/focusHandlers.js +1 -9
- package/dist/handlers/focusHandlers.js.map +1 -1
- package/dist/handlers/index.d.ts +0 -5
- package/dist/handlers/index.js +0 -5
- package/dist/handlers/index.js.map +1 -1
- package/dist/index.js +2 -92
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/handlers/componentHandlers.d.ts +0 -3
- package/dist/handlers/componentHandlers.js +0 -128
- package/dist/handlers/componentHandlers.js.map +0 -1
- package/dist/handlers/ideaHandlers.d.ts +0 -3
- package/dist/handlers/ideaHandlers.js +0 -245
- package/dist/handlers/ideaHandlers.js.map +0 -1
- package/dist/handlers/okrHandlers.d.ts +0 -3
- package/dist/handlers/okrHandlers.js +0 -194
- package/dist/handlers/okrHandlers.js.map +0 -1
- package/dist/handlers/pmHandlers.d.ts +0 -3
- package/dist/handlers/pmHandlers.js +0 -441
- package/dist/handlers/pmHandlers.js.map +0 -1
- package/dist/handlers/savePointHandlers.d.ts +0 -3
- package/dist/handlers/savePointHandlers.js +0 -333
- package/dist/handlers/savePointHandlers.js.map +0 -1
- package/dist/scanner/ast-extraction.d.ts +0 -10
- package/dist/scanner/ast-extraction.js +0 -156
- package/dist/scanner/ast-extraction.js.map +0 -1
- package/dist/scanner/file-discovery.d.ts +0 -9
- package/dist/scanner/file-discovery.js +0 -134
- package/dist/scanner/file-discovery.js.map +0 -1
- package/dist/scanner/index.d.ts +0 -19
- package/dist/scanner/index.js +0 -193
- package/dist/scanner/index.js.map +0 -1
- package/dist/scanner/relationship-extraction.d.ts +0 -11
- package/dist/scanner/relationship-extraction.js +0 -187
- package/dist/scanner/relationship-extraction.js.map +0 -1
- package/dist/scanner/types.d.ts +0 -45
- package/dist/scanner/types.js +0 -3
- package/dist/scanner/types.js.map +0 -1
|
@@ -1,245 +0,0 @@
|
|
|
1
|
-
// ---------------------------------------------------------------------------
|
|
2
|
-
// Idea Cloud tool handlers: ideas, connections, clusters
|
|
3
|
-
// Consolidated: 3 tools with action-based dispatch
|
|
4
|
-
// ---------------------------------------------------------------------------
|
|
5
|
-
import { z } from "zod";
|
|
6
|
-
import { callProductApi, successResult, validationError, buildFields, wrapHandler, compactEntity, } from "../shared.js";
|
|
7
|
-
export function registerIdeaTools(server, getCreds) {
|
|
8
|
-
// ── telora_idea ──────────────────────────────────────────────────────
|
|
9
|
-
server.tool("telora_idea", "Idea cloud: continuous capture and brainstorming for a product. " +
|
|
10
|
-
"Ideas are lightweight thought fragments (observations, hypotheses, references, links) that can be connected and clustered. " +
|
|
11
|
-
"Actions: create an idea (productId + content), list ideas, update content or source, delete.", {
|
|
12
|
-
action: z.enum(["create", "list", "update", "delete"]).describe("Action to perform"),
|
|
13
|
-
productId: z.string().uuid().optional().describe("Product UUID (required for create, list)"),
|
|
14
|
-
ideaId: z.string().uuid().optional().describe("Idea UUID (required for update, delete)"),
|
|
15
|
-
content: z.string().optional().describe("Idea content text (required for create)"),
|
|
16
|
-
sourceUrl: z.string().max(2000).nullable().optional().describe("Source URL for reference ideas (null to clear on update)"),
|
|
17
|
-
sourceType: z.enum(["observation", "quote", "hypothesis", "reference", "link"]).optional().describe("Type of idea source"),
|
|
18
|
-
source: z.enum(["human", "ai"]).optional().describe("Provenance: 'human' (default) or 'ai' (create only)"),
|
|
19
|
-
limit: z.number().int().min(1).max(500).optional().describe("Max results (1-500, default 50; list only)"),
|
|
20
|
-
offset: z.number().int().min(0).optional().describe("Number of results to skip (default 0; list only)"),
|
|
21
|
-
detail: z.enum(["titles", "summary", "full"]).optional().describe("Response detail level (list only). 'titles' returns id+name only. 'summary' (default) returns compact navigation fields. 'full' returns all fields."),
|
|
22
|
-
returnFull: z.boolean().optional().describe("Return full entity (default: compact; create/update only)"),
|
|
23
|
-
}, wrapHandler(async (params) => {
|
|
24
|
-
switch (params.action) {
|
|
25
|
-
case "create": {
|
|
26
|
-
if (!params.productId)
|
|
27
|
-
return validationError("productId required for create");
|
|
28
|
-
if (!params.content)
|
|
29
|
-
return validationError("content required for create");
|
|
30
|
-
const fields = buildFields({ content: params.content, sourceUrl: params.sourceUrl, sourceType: params.sourceType, source: params.source }, ['content', 'sourceUrl', 'sourceType', 'source']);
|
|
31
|
-
const result = await callProductApi(getCreds(), {
|
|
32
|
-
action: "idea_create",
|
|
33
|
-
productId: params.productId,
|
|
34
|
-
fields,
|
|
35
|
-
});
|
|
36
|
-
return successResult(compactEntity(result.idea, Object.keys(fields), params.returnFull));
|
|
37
|
-
}
|
|
38
|
-
case "list": {
|
|
39
|
-
if (!params.productId)
|
|
40
|
-
return validationError("productId required for list");
|
|
41
|
-
const fields = buildFields({ sourceType: params.sourceType });
|
|
42
|
-
const body = {
|
|
43
|
-
action: "idea_list",
|
|
44
|
-
productId: params.productId,
|
|
45
|
-
fields: Object.keys(fields).length > 0 ? fields : undefined,
|
|
46
|
-
};
|
|
47
|
-
if (params.limit !== undefined)
|
|
48
|
-
body.limit = params.limit;
|
|
49
|
-
if (params.offset !== undefined)
|
|
50
|
-
body.offset = params.offset;
|
|
51
|
-
if (params.detail !== undefined)
|
|
52
|
-
body.detail = params.detail;
|
|
53
|
-
const result = await callProductApi(getCreds(), body);
|
|
54
|
-
return successResult({ items: result.ideas, totalCount: result.totalCount });
|
|
55
|
-
}
|
|
56
|
-
case "update": {
|
|
57
|
-
if (!params.ideaId)
|
|
58
|
-
return validationError("ideaId required for update");
|
|
59
|
-
const fields = buildFields({ content: params.content, sourceUrl: params.sourceUrl, sourceType: params.sourceType }, ['content', 'sourceUrl', 'sourceType']);
|
|
60
|
-
if (Object.keys(fields).length === 0) {
|
|
61
|
-
return validationError("Provide at least one field to update");
|
|
62
|
-
}
|
|
63
|
-
const result = await callProductApi(getCreds(), {
|
|
64
|
-
action: "idea_update",
|
|
65
|
-
ideaId: params.ideaId,
|
|
66
|
-
fields,
|
|
67
|
-
});
|
|
68
|
-
return successResult(compactEntity(result.idea, Object.keys(fields), params.returnFull));
|
|
69
|
-
}
|
|
70
|
-
case "delete": {
|
|
71
|
-
if (!params.ideaId)
|
|
72
|
-
return validationError("ideaId required for delete");
|
|
73
|
-
const result = await callProductApi(getCreds(), {
|
|
74
|
-
action: "idea_delete",
|
|
75
|
-
ideaId: params.ideaId,
|
|
76
|
-
});
|
|
77
|
-
return successResult(result);
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
}));
|
|
81
|
-
// ── telora_idea_connection ───────────────────────────────────────────
|
|
82
|
-
server.tool("telora_idea_connection", "Idea relationships: map connections between ideas in the cloud. " +
|
|
83
|
-
"Connections have types (supports, causes, extends, contradicts, relates) and optional confidence scores. " +
|
|
84
|
-
"Actions: create a connection (source + target + type), list connections, update properties, delete.", {
|
|
85
|
-
action: z.enum(["create", "list", "update", "delete"]).describe("Action to perform"),
|
|
86
|
-
connectionId: z.string().uuid().optional().describe("Connection UUID (required for update, delete)"),
|
|
87
|
-
sourceIdeaId: z.string().uuid().optional().describe("Source idea UUID (required for create)"),
|
|
88
|
-
targetIdeaId: z.string().uuid().optional().describe("Target idea UUID (required for create)"),
|
|
89
|
-
ideaId: z.string().uuid().optional().describe("Idea UUID - list connections involving this idea (list only)"),
|
|
90
|
-
productId: z.string().uuid().optional().describe("Product UUID - list all connections in this product (list only)"),
|
|
91
|
-
connectionType: z.enum(["supports", "causes", "extends", "contradicts", "relates"]).optional().describe("Type of connection (required for create)"),
|
|
92
|
-
bidirectional: z.boolean().optional().describe("Whether connection is bidirectional (default false)"),
|
|
93
|
-
confidence: z.number().min(0).max(1).nullable().optional().describe("Confidence score (0-1, null to clear)"),
|
|
94
|
-
confirmed: z.boolean().optional().describe("Whether connection is confirmed (default false)"),
|
|
95
|
-
source: z.enum(["human", "ai"]).optional().describe("Provenance: 'human' (default) or 'ai' (create only)"),
|
|
96
|
-
limit: z.number().int().min(1).max(500).optional().describe("Max results (1-500, default 50; list only)"),
|
|
97
|
-
offset: z.number().int().min(0).optional().describe("Number of results to skip (default 0; list only)"),
|
|
98
|
-
detail: z.enum(["titles", "summary", "full"]).optional().describe("Response detail level (list only). 'titles' returns id+name only. 'summary' (default) returns compact navigation fields. 'full' returns all fields."),
|
|
99
|
-
returnFull: z.boolean().optional().describe("Return full entity (default: compact; create/update only)"),
|
|
100
|
-
}, wrapHandler(async (params) => {
|
|
101
|
-
switch (params.action) {
|
|
102
|
-
case "create": {
|
|
103
|
-
if (!params.sourceIdeaId)
|
|
104
|
-
return validationError("sourceIdeaId required for create");
|
|
105
|
-
if (!params.targetIdeaId)
|
|
106
|
-
return validationError("targetIdeaId required for create");
|
|
107
|
-
if (!params.connectionType)
|
|
108
|
-
return validationError("connectionType required for create");
|
|
109
|
-
const fields = buildFields({
|
|
110
|
-
sourceIdeaId: params.sourceIdeaId, targetIdeaId: params.targetIdeaId,
|
|
111
|
-
connectionType: params.connectionType, bidirectional: params.bidirectional,
|
|
112
|
-
confidence: params.confidence, confirmed: params.confirmed, source: params.source,
|
|
113
|
-
}, ['sourceIdeaId', 'targetIdeaId', 'connectionType', 'bidirectional', 'confidence', 'confirmed', 'source']);
|
|
114
|
-
const result = await callProductApi(getCreds(), {
|
|
115
|
-
action: "idea_connection_create",
|
|
116
|
-
fields,
|
|
117
|
-
});
|
|
118
|
-
return successResult(compactEntity(result.connection, Object.keys(fields), params.returnFull));
|
|
119
|
-
}
|
|
120
|
-
case "list": {
|
|
121
|
-
if (!params.ideaId && !params.productId) {
|
|
122
|
-
return validationError("Provide either ideaId or productId");
|
|
123
|
-
}
|
|
124
|
-
const body = {
|
|
125
|
-
action: "idea_connection_list",
|
|
126
|
-
};
|
|
127
|
-
if (params.ideaId !== undefined)
|
|
128
|
-
body.ideaId = params.ideaId;
|
|
129
|
-
if (params.productId !== undefined)
|
|
130
|
-
body.productId = params.productId;
|
|
131
|
-
if (params.limit !== undefined)
|
|
132
|
-
body.limit = params.limit;
|
|
133
|
-
if (params.offset !== undefined)
|
|
134
|
-
body.offset = params.offset;
|
|
135
|
-
if (params.detail !== undefined)
|
|
136
|
-
body.detail = params.detail;
|
|
137
|
-
const result = await callProductApi(getCreds(), body);
|
|
138
|
-
return successResult({ items: result.connections, totalCount: result.totalCount });
|
|
139
|
-
}
|
|
140
|
-
case "update": {
|
|
141
|
-
if (!params.connectionId)
|
|
142
|
-
return validationError("connectionId required for update");
|
|
143
|
-
const fields = buildFields({
|
|
144
|
-
connectionType: params.connectionType, bidirectional: params.bidirectional,
|
|
145
|
-
confidence: params.confidence, confirmed: params.confirmed,
|
|
146
|
-
}, ['connectionType', 'bidirectional', 'confidence', 'confirmed']);
|
|
147
|
-
if (Object.keys(fields).length === 0) {
|
|
148
|
-
return validationError("Provide at least one field to update");
|
|
149
|
-
}
|
|
150
|
-
const result = await callProductApi(getCreds(), {
|
|
151
|
-
action: "idea_connection_update",
|
|
152
|
-
connectionId: params.connectionId,
|
|
153
|
-
fields,
|
|
154
|
-
});
|
|
155
|
-
return successResult(compactEntity(result.connection, Object.keys(fields), params.returnFull));
|
|
156
|
-
}
|
|
157
|
-
case "delete": {
|
|
158
|
-
if (!params.connectionId)
|
|
159
|
-
return validationError("connectionId required for delete");
|
|
160
|
-
const result = await callProductApi(getCreds(), {
|
|
161
|
-
action: "idea_connection_delete",
|
|
162
|
-
connectionId: params.connectionId,
|
|
163
|
-
});
|
|
164
|
-
return successResult(result);
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
}));
|
|
168
|
-
// ── telora_idea_cluster ──────────────────────────────────────────────
|
|
169
|
-
server.tool("telora_idea_cluster", "Idea grouping: organize related ideas into named clusters. " +
|
|
170
|
-
"Clusters can crystallize into focuses when ideas mature into actionable work. " +
|
|
171
|
-
"Actions: create a cluster (productId + name), list clusters, update properties (summary, center ideas, focus link), " +
|
|
172
|
-
"delete (ideas remain in cloud).", {
|
|
173
|
-
action: z.enum(["create", "list", "update", "delete"]).describe("Action to perform"),
|
|
174
|
-
productId: z.string().uuid().optional().describe("Product UUID (required for create, list)"),
|
|
175
|
-
clusterId: z.string().uuid().optional().describe("Cluster UUID (required for update, delete)"),
|
|
176
|
-
name: z.string().max(200).optional().describe("Cluster name (required for create)"),
|
|
177
|
-
summary: z.string().max(2000).nullable().optional().describe("Cluster summary (null to clear on update)"),
|
|
178
|
-
centerIdeaIds: z.array(z.string().uuid()).optional().describe("UUIDs of center/attractor ideas"),
|
|
179
|
-
focusId: z.string().uuid().nullable().optional().describe("Focus UUID (set during crystallization, null to unlink; update only)"),
|
|
180
|
-
crystallizationSnapshot: z.record(z.string(), z.unknown()).nullable().optional().describe("Frozen graph state at crystallization (null to clear; update only)"),
|
|
181
|
-
limit: z.number().int().min(1).max(500).optional().describe("Max results (1-500, default 50; list only)"),
|
|
182
|
-
offset: z.number().int().min(0).optional().describe("Number of results to skip (default 0; list only)"),
|
|
183
|
-
detail: z.enum(["titles", "summary", "full"]).optional().describe("Response detail level (list only). 'titles' returns id+name only. 'summary' (default) returns compact navigation fields. 'full' returns all fields."),
|
|
184
|
-
returnFull: z.boolean().optional().describe("Return full entity (default: compact; create/update only)"),
|
|
185
|
-
}, wrapHandler(async (params) => {
|
|
186
|
-
switch (params.action) {
|
|
187
|
-
case "create": {
|
|
188
|
-
if (!params.productId)
|
|
189
|
-
return validationError("productId required for create");
|
|
190
|
-
if (!params.name)
|
|
191
|
-
return validationError("name required for create");
|
|
192
|
-
const fields = buildFields({ name: params.name, summary: params.summary, centerIdeaIds: params.centerIdeaIds }, ['name', 'summary', 'centerIdeaIds']);
|
|
193
|
-
const result = await callProductApi(getCreds(), {
|
|
194
|
-
action: "idea_cluster_create",
|
|
195
|
-
productId: params.productId,
|
|
196
|
-
fields,
|
|
197
|
-
});
|
|
198
|
-
return successResult(compactEntity(result.cluster, Object.keys(fields), params.returnFull));
|
|
199
|
-
}
|
|
200
|
-
case "list": {
|
|
201
|
-
if (!params.productId)
|
|
202
|
-
return validationError("productId required for list");
|
|
203
|
-
const body = {
|
|
204
|
-
action: "idea_cluster_list",
|
|
205
|
-
productId: params.productId,
|
|
206
|
-
};
|
|
207
|
-
if (params.limit !== undefined)
|
|
208
|
-
body.limit = params.limit;
|
|
209
|
-
if (params.offset !== undefined)
|
|
210
|
-
body.offset = params.offset;
|
|
211
|
-
if (params.detail !== undefined)
|
|
212
|
-
body.detail = params.detail;
|
|
213
|
-
const result = await callProductApi(getCreds(), body);
|
|
214
|
-
return successResult({ items: result.clusters, totalCount: result.totalCount });
|
|
215
|
-
}
|
|
216
|
-
case "update": {
|
|
217
|
-
if (!params.clusterId)
|
|
218
|
-
return validationError("clusterId required for update");
|
|
219
|
-
const fields = buildFields({
|
|
220
|
-
name: params.name, summary: params.summary, centerIdeaIds: params.centerIdeaIds,
|
|
221
|
-
focusId: params.focusId, crystallizationSnapshot: params.crystallizationSnapshot,
|
|
222
|
-
}, ['name', 'summary', 'centerIdeaIds', 'focusId', 'crystallizationSnapshot']);
|
|
223
|
-
if (Object.keys(fields).length === 0) {
|
|
224
|
-
return validationError("Provide at least one field to update");
|
|
225
|
-
}
|
|
226
|
-
const result = await callProductApi(getCreds(), {
|
|
227
|
-
action: "idea_cluster_update",
|
|
228
|
-
clusterId: params.clusterId,
|
|
229
|
-
fields,
|
|
230
|
-
});
|
|
231
|
-
return successResult(compactEntity(result.cluster, Object.keys(fields), params.returnFull));
|
|
232
|
-
}
|
|
233
|
-
case "delete": {
|
|
234
|
-
if (!params.clusterId)
|
|
235
|
-
return validationError("clusterId required for delete");
|
|
236
|
-
const result = await callProductApi(getCreds(), {
|
|
237
|
-
action: "idea_cluster_delete",
|
|
238
|
-
clusterId: params.clusterId,
|
|
239
|
-
});
|
|
240
|
-
return successResult(result);
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
}));
|
|
244
|
-
}
|
|
245
|
-
//# sourceMappingURL=ideaHandlers.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ideaHandlers.js","sourceRoot":"","sources":["../../src/handlers/ideaHandlers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,194 +0,0 @@
|
|
|
1
|
-
// ---------------------------------------------------------------------------
|
|
2
|
-
// OKR tool handlers (consolidated): telora_objective, telora_key_result,
|
|
3
|
-
// telora_focus_key_result
|
|
4
|
-
// ---------------------------------------------------------------------------
|
|
5
|
-
import { z } from "zod";
|
|
6
|
-
import { callProductApi, successResult, validationError, buildFields, wrapHandler, compactEntity, } from "../shared.js";
|
|
7
|
-
export function registerOkrTools(server, getCreds) {
|
|
8
|
-
// -- telora_objective ---------------------------------------------------------
|
|
9
|
-
server.tool("telora_objective", "Goal setting (OKR): manage strategic objectives. Objectives define what you want to achieve and can cascade " +
|
|
10
|
-
"(parent-child alignment). Actions: create an objective (title required), get details, list (filter by status), " +
|
|
11
|
-
"update fields (description, dates, final grade, owner).", {
|
|
12
|
-
action: z.enum(["create", "get", "list", "update"]).describe("Action to perform"),
|
|
13
|
-
objectiveId: z.string().uuid().optional().describe("Objective UUID (required for get, update)"),
|
|
14
|
-
title: z.string().max(500).optional().describe("Objective title (required for create)"),
|
|
15
|
-
description: z.string().max(2000).optional().describe("Objective description"),
|
|
16
|
-
status: z.enum(["draft", "active", "completed", "cancelled"]).optional().describe("Objective status (list: filter; create: defaults to draft)"),
|
|
17
|
-
startDate: z.string().nullable().optional().describe("Start date (ISO 8601, e.g. 2025-01-01) or null to clear"),
|
|
18
|
-
targetDate: z.string().nullable().optional().describe("Target date (ISO 8601, e.g. 2025-03-31) or null to clear"),
|
|
19
|
-
finalGrade: z.number().min(0).max(1).nullable().optional().describe("Final grade on 0.0-1.0 scale (Google OKR standard) or null to clear (update only)"),
|
|
20
|
-
ownerId: z.string().uuid().nullable().optional().describe("Owner profile UUID or null to clear"),
|
|
21
|
-
parentObjectiveId: z.string().uuid().optional().describe("Parent objective UUID for cascading alignment (create only)"),
|
|
22
|
-
productId: z.string().uuid().nullable().optional().describe("Product UUID to associate or null to clear"),
|
|
23
|
-
limit: z.number().int().min(1).max(500).optional().describe("Max results (1-500, default 50; list only)"),
|
|
24
|
-
offset: z.number().int().min(0).optional().describe("Number of results to skip (default 0; list only)"),
|
|
25
|
-
detail: z.enum(["titles", "summary", "full"]).optional().describe("Response detail level: titles (id+name), summary (default, compact), full (all fields). List only."),
|
|
26
|
-
returnFull: z.boolean().optional().describe("Return full entity (default: compact; create/update only)"),
|
|
27
|
-
}, wrapHandler(async (params) => {
|
|
28
|
-
switch (params.action) {
|
|
29
|
-
case "list": {
|
|
30
|
-
const fields = buildFields({ status: params.status });
|
|
31
|
-
const body = {
|
|
32
|
-
action: "objective_list",
|
|
33
|
-
fields: Object.keys(fields).length > 0 ? fields : undefined,
|
|
34
|
-
};
|
|
35
|
-
if (params.limit !== undefined)
|
|
36
|
-
body.limit = params.limit;
|
|
37
|
-
if (params.offset !== undefined)
|
|
38
|
-
body.offset = params.offset;
|
|
39
|
-
if (params.detail !== undefined)
|
|
40
|
-
body.detail = params.detail;
|
|
41
|
-
const result = await callProductApi(getCreds(), body);
|
|
42
|
-
return successResult({ items: result.objectives, totalCount: result.totalCount });
|
|
43
|
-
}
|
|
44
|
-
case "create": {
|
|
45
|
-
if (!params.title)
|
|
46
|
-
return validationError("title required for create");
|
|
47
|
-
const { title, description, status, startDate, targetDate, ownerId, parentObjectiveId, productId } = params;
|
|
48
|
-
const createParams = { title, description, status, startDate, targetDate, ownerId, parentObjectiveId, productId };
|
|
49
|
-
const fields = buildFields(createParams, ['title', 'description', 'status', 'startDate', 'targetDate', 'ownerId', 'parentObjectiveId', 'productId']);
|
|
50
|
-
const result = await callProductApi(getCreds(), {
|
|
51
|
-
action: "objective_create",
|
|
52
|
-
fields,
|
|
53
|
-
});
|
|
54
|
-
return successResult(compactEntity(result.objective, Object.keys(fields), params.returnFull));
|
|
55
|
-
}
|
|
56
|
-
case "get": {
|
|
57
|
-
if (!params.objectiveId)
|
|
58
|
-
return validationError("objectiveId required for get");
|
|
59
|
-
const result = await callProductApi(getCreds(), {
|
|
60
|
-
action: "objective_get",
|
|
61
|
-
objectiveId: params.objectiveId,
|
|
62
|
-
});
|
|
63
|
-
return successResult(result.objective);
|
|
64
|
-
}
|
|
65
|
-
case "update": {
|
|
66
|
-
if (!params.objectiveId)
|
|
67
|
-
return validationError("objectiveId required for update");
|
|
68
|
-
const { title, description, status, startDate, targetDate, finalGrade, ownerId, productId } = params;
|
|
69
|
-
const updateParams = { title, description, status, startDate, targetDate, finalGrade, ownerId, productId };
|
|
70
|
-
const fields = buildFields(updateParams, ['title', 'description', 'status', 'startDate', 'targetDate', 'finalGrade', 'ownerId', 'productId']);
|
|
71
|
-
if (Object.keys(fields).length === 0) {
|
|
72
|
-
return validationError("Provide at least one field to update");
|
|
73
|
-
}
|
|
74
|
-
const result = await callProductApi(getCreds(), {
|
|
75
|
-
action: "objective_update",
|
|
76
|
-
objectiveId: params.objectiveId,
|
|
77
|
-
fields,
|
|
78
|
-
});
|
|
79
|
-
return successResult(compactEntity(result.objective, Object.keys(fields), params.returnFull));
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
}));
|
|
83
|
-
// -- telora_key_result --------------------------------------------------------
|
|
84
|
-
server.tool("telora_key_result", "Measurable targets (OKR): manage key results under objectives. Key results define how you measure progress " +
|
|
85
|
-
"with metric types (percentage, count, currency), target values, and confidence levels. " +
|
|
86
|
-
"Actions: create a key result (objectiveId + title), list for an objective, update progress/confidence, " +
|
|
87
|
-
"delete (also removes focus links).", {
|
|
88
|
-
action: z.enum(["create", "list", "update", "delete"]).describe("Action to perform"),
|
|
89
|
-
objectiveId: z.string().uuid().optional().describe("Objective UUID (required for create, list)"),
|
|
90
|
-
keyResultId: z.string().uuid().optional().describe("Key result UUID (required for update, delete)"),
|
|
91
|
-
title: z.string().max(500).optional().describe("Key result title (required for create)"),
|
|
92
|
-
description: z.string().max(2000).optional().describe("Key result description"),
|
|
93
|
-
metricType: z.enum(["percentage", "count", "currency", "custom"]).optional().describe("Metric type (defaults to percentage)"),
|
|
94
|
-
targetValue: z.number().optional().describe("Target value to achieve (defaults to 100)"),
|
|
95
|
-
currentValue: z.number().optional().describe("Current progress value (defaults to 0)"),
|
|
96
|
-
unit: z.string().max(50).nullable().optional().describe("Unit of measurement (e.g. '%', 'days', '$') or null to clear"),
|
|
97
|
-
confidenceLevel: z.enum(["low", "medium", "high"]).optional().describe("Confidence in achieving target (defaults to medium)"),
|
|
98
|
-
limit: z.number().int().min(1).max(500).optional().describe("Max results (1-500, default 50; list only)"),
|
|
99
|
-
offset: z.number().int().min(0).optional().describe("Number of results to skip (default 0; list only)"),
|
|
100
|
-
detail: z.enum(["titles", "summary", "full"]).optional().describe("Response detail level: titles (id+name), summary (default, compact), full (all fields). List only."),
|
|
101
|
-
returnFull: z.boolean().optional().describe("Return full entity (default: compact; create/update only)"),
|
|
102
|
-
}, wrapHandler(async (params) => {
|
|
103
|
-
switch (params.action) {
|
|
104
|
-
case "list": {
|
|
105
|
-
if (!params.objectiveId)
|
|
106
|
-
return validationError("objectiveId required for list");
|
|
107
|
-
const body = {
|
|
108
|
-
action: "key_result_list",
|
|
109
|
-
objectiveId: params.objectiveId,
|
|
110
|
-
};
|
|
111
|
-
if (params.limit !== undefined)
|
|
112
|
-
body.limit = params.limit;
|
|
113
|
-
if (params.offset !== undefined)
|
|
114
|
-
body.offset = params.offset;
|
|
115
|
-
if (params.detail !== undefined)
|
|
116
|
-
body.detail = params.detail;
|
|
117
|
-
const result = await callProductApi(getCreds(), body);
|
|
118
|
-
return successResult({ items: result.keyResults, totalCount: result.totalCount });
|
|
119
|
-
}
|
|
120
|
-
case "create": {
|
|
121
|
-
if (!params.objectiveId)
|
|
122
|
-
return validationError("objectiveId required for create");
|
|
123
|
-
if (!params.title)
|
|
124
|
-
return validationError("title required for create");
|
|
125
|
-
const { title, description, metricType, targetValue, currentValue, unit, confidenceLevel } = params;
|
|
126
|
-
const createParams = { title, description, metricType, targetValue, currentValue, unit, confidenceLevel };
|
|
127
|
-
const fields = buildFields(createParams, ['title', 'description', 'metricType', 'targetValue', 'currentValue', 'unit', 'confidenceLevel']);
|
|
128
|
-
const result = await callProductApi(getCreds(), {
|
|
129
|
-
action: "key_result_create",
|
|
130
|
-
objectiveId: params.objectiveId,
|
|
131
|
-
fields,
|
|
132
|
-
});
|
|
133
|
-
return successResult(compactEntity(result.keyResult, Object.keys(fields), params.returnFull));
|
|
134
|
-
}
|
|
135
|
-
case "update": {
|
|
136
|
-
if (!params.keyResultId)
|
|
137
|
-
return validationError("keyResultId required for update");
|
|
138
|
-
const { title, description, metricType, targetValue, currentValue, unit, confidenceLevel } = params;
|
|
139
|
-
const updateParams = { title, description, metricType, targetValue, currentValue, unit, confidenceLevel };
|
|
140
|
-
const fields = buildFields(updateParams, ['title', 'description', 'metricType', 'targetValue', 'currentValue', 'unit', 'confidenceLevel']);
|
|
141
|
-
if (Object.keys(fields).length === 0) {
|
|
142
|
-
return validationError("Provide at least one field to update");
|
|
143
|
-
}
|
|
144
|
-
const result = await callProductApi(getCreds(), {
|
|
145
|
-
action: "key_result_update",
|
|
146
|
-
keyResultId: params.keyResultId,
|
|
147
|
-
fields,
|
|
148
|
-
});
|
|
149
|
-
return successResult(compactEntity(result.keyResult, Object.keys(fields), params.returnFull));
|
|
150
|
-
}
|
|
151
|
-
case "delete": {
|
|
152
|
-
if (!params.keyResultId)
|
|
153
|
-
return validationError("keyResultId required for delete");
|
|
154
|
-
await callProductApi(getCreds(), {
|
|
155
|
-
action: "key_result_delete",
|
|
156
|
-
keyResultId: params.keyResultId,
|
|
157
|
-
});
|
|
158
|
-
return successResult({ deleted: true });
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
}));
|
|
162
|
-
// -- telora_focus_key_result -----------------------------------------------
|
|
163
|
-
server.tool("telora_focus_key_result", "OKR-focus alignment: connect focuses to key results for traceability. " +
|
|
164
|
-
"Links show which focuses contribute to which measurable outcomes. " +
|
|
165
|
-
"Actions: link a focus to a key result, unlink.", {
|
|
166
|
-
action: z.enum(["link", "unlink"]).describe("Action to perform"),
|
|
167
|
-
focusId: z.string().uuid().optional().describe("Focus UUID (required)"),
|
|
168
|
-
keyResultId: z.string().uuid().optional().describe("Key result UUID (required)"),
|
|
169
|
-
}, wrapHandler(async (params) => {
|
|
170
|
-
if (!params.focusId)
|
|
171
|
-
return validationError("focusId required");
|
|
172
|
-
if (!params.keyResultId)
|
|
173
|
-
return validationError("keyResultId required");
|
|
174
|
-
switch (params.action) {
|
|
175
|
-
case "link": {
|
|
176
|
-
const result = await callProductApi(getCreds(), {
|
|
177
|
-
action: "focus_key_result_link",
|
|
178
|
-
focusId: params.focusId,
|
|
179
|
-
keyResultId: params.keyResultId,
|
|
180
|
-
});
|
|
181
|
-
return successResult(result.link);
|
|
182
|
-
}
|
|
183
|
-
case "unlink": {
|
|
184
|
-
await callProductApi(getCreds(), {
|
|
185
|
-
action: "focus_key_result_unlink",
|
|
186
|
-
focusId: params.focusId,
|
|
187
|
-
keyResultId: params.keyResultId,
|
|
188
|
-
});
|
|
189
|
-
return successResult({ unlinked: true });
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
}));
|
|
193
|
-
}
|
|
194
|
-
//# sourceMappingURL=okrHandlers.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"okrHandlers.js","sourceRoot":"","sources":["../../src/handlers/okrHandlers.ts"],"names":[],"mappings":"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"}
|