@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
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
// telora_product_delivery (list | create | update | operationalize | delete | reorder)
|
|
4
4
|
// ---------------------------------------------------------------------------
|
|
5
5
|
import { z } from "zod";
|
|
6
|
+
import { EXECUTION_STATUSES } from "@telora/daemon-core";
|
|
6
7
|
import { callProductApi, successResult, validationError, buildFields, wrapHandler, compactEntity, LIST_INDEX_NOTE, } from "../shared.js";
|
|
7
8
|
// Focus stages past the planning phase. When a delivery is created on a
|
|
8
9
|
// focus already in one of these stages, the daemon's poll loop expects new
|
|
@@ -99,10 +100,12 @@ export async function handleDeliveryCreate(params, callApi) {
|
|
|
99
100
|
body.injectionNodeId = params.injectionNodeId;
|
|
100
101
|
const result = await callApi(body);
|
|
101
102
|
const compact = compactEntity(result.delivery, Object.keys(fields), params.returnFull);
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
103
|
+
const out = { ...compact };
|
|
104
|
+
if (result.warnings && result.warnings.length > 0)
|
|
105
|
+
out.warnings = result.warnings;
|
|
106
|
+
if (result.next_steps !== undefined)
|
|
107
|
+
out.next_steps = result.next_steps;
|
|
108
|
+
return successResult(out);
|
|
106
109
|
}
|
|
107
110
|
export function registerDeliveryTools(server, getCreds, profile = 'full') {
|
|
108
111
|
// Agents cannot delete deliveries — CASCADE deletes all child issues (planning data).
|
|
@@ -130,7 +133,7 @@ export function registerDeliveryTools(server, getCreds, profile = 'full') {
|
|
|
130
133
|
techContext: z.string().max(4000).optional().describe("Technical context: stack, repos, key files, architecture notes"),
|
|
131
134
|
focusId: z.string().uuid().nullable().optional().describe("Focus UUID to link (create/update), null to unlink (update)"),
|
|
132
135
|
injectionNodeId: z.string().uuid().nullable().optional().describe("UUID of an injection node in the focus's reality tree that this delivery materializes. Sets product_deliveries.injection_id atomically. Accepted on create and update; pass null on update to unlink. When omitted on create and the focus has an active reality tree, the response includes a structured warning."),
|
|
133
|
-
executionStatus: z.enum([
|
|
136
|
+
executionStatus: z.enum([...EXECUTION_STATUSES]).optional().describe("Execution status. On create: overrides the focus-stage-aware default ('queued' when the parent focus is past planning, otherwise 'planning'). On update: new status. On list: filter."),
|
|
134
137
|
parentNodeId: z.string().uuid().optional().describe("Target org unit or stream UUID (operationalize only)"),
|
|
135
138
|
deliveryIds: z.array(z.string().uuid()).optional().describe("Ordered array of delivery UUIDs for reorder (first = rank 0 = highest priority)"),
|
|
136
139
|
includeIssueCounts: z.boolean().optional().describe("Include done/total issue counts per delivery (list only)"),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deliveryHandlers.js","sourceRoot":"","sources":["../../src/handlers/deliveryHandlers.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,wCAAwC;AACxC,yFAAyF;AACzF,8EAA8E;AAE9E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,cAAc,EACd,aAAa,EACb,eAAe,EACf,WAAW,EACX,WAAW,EACX,aAAa,EACb,eAAe,GAGhB,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"deliveryHandlers.js","sourceRoot":"","sources":["../../src/handlers/deliveryHandlers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,52 @@
|
|
|
1
1
|
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
2
|
import { type GetCreds, type ToolProfile } from "../shared.js";
|
|
3
|
+
type FocusToolParams = {
|
|
4
|
+
action: "list" | "create" | "update" | "reorder" | "merges" | "retrospective_trigger" | "retrospective_run" | "retrospective_list" | "retrospective_get" | "review_complete";
|
|
5
|
+
productId?: string;
|
|
6
|
+
focusId?: string;
|
|
7
|
+
name?: string;
|
|
8
|
+
description?: string;
|
|
9
|
+
targetDate?: string;
|
|
10
|
+
status?: "proposed" | "active" | "complete" | "cancelled";
|
|
11
|
+
readOnly?: boolean;
|
|
12
|
+
assignedAgentRoleId?: string | null;
|
|
13
|
+
pipelineConfig?: {
|
|
14
|
+
ci: {
|
|
15
|
+
enabled: boolean;
|
|
16
|
+
mergeStrategy: "fast-forward" | "rebase" | "merge-commit";
|
|
17
|
+
};
|
|
18
|
+
cd: {
|
|
19
|
+
enabled: boolean;
|
|
20
|
+
};
|
|
21
|
+
teams: {
|
|
22
|
+
enabled: boolean;
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
retrospectiveId?: string;
|
|
26
|
+
focusIds?: string[];
|
|
27
|
+
outcome?: "approved" | "gaps_found";
|
|
28
|
+
summary?: string;
|
|
29
|
+
createdIssueIds?: string[];
|
|
30
|
+
createdDeliveryIds?: string[];
|
|
31
|
+
agentSessionId?: string;
|
|
32
|
+
startedAt?: string;
|
|
33
|
+
clearReviewRequest?: boolean;
|
|
34
|
+
limit?: number;
|
|
35
|
+
offset?: number;
|
|
36
|
+
detail?: "titles" | "summary" | "full";
|
|
37
|
+
returnFull?: boolean;
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Default API caller -- closes over real credentials. Tests inject a stub
|
|
41
|
+
* via `buildFocusHandler(getCreds, profile, callApi)` so they can assert
|
|
42
|
+
* the action + fields sent to the edge function without a live server.
|
|
43
|
+
*/
|
|
44
|
+
type CallApi = (body: Record<string, unknown>) => Promise<unknown>;
|
|
45
|
+
export declare function buildFocusHandler(getCreds: GetCreds, profile: ToolProfile, callApi?: CallApi): (params: FocusToolParams) => Promise<{
|
|
46
|
+
content: {
|
|
47
|
+
type: "text";
|
|
48
|
+
text: string;
|
|
49
|
+
}[];
|
|
50
|
+
}>;
|
|
3
51
|
export declare function registerFocusTools(server: McpServer, getCreds: GetCreds, profile?: ToolProfile): void;
|
|
52
|
+
export {};
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
// implementation. The alias will be removed in a future release.
|
|
7
7
|
// ---------------------------------------------------------------------------
|
|
8
8
|
import { z } from "zod";
|
|
9
|
+
import { FOCUS_STATUSES } from "@telora/daemon-core";
|
|
9
10
|
import { callProductApi, successResult, validationError, buildFields, wrapHandler, compactEntity, LIST_INDEX_NOTE, } from "../shared.js";
|
|
10
11
|
const FOCUS_TOOL_DESCRIPTION = "Execution roadmap: group deliveries into themed work scopes. Focuses define what the AI daemon works on -- " +
|
|
11
12
|
"assigning an agent role queues the focus for autonomous execution. " +
|
|
@@ -16,7 +17,8 @@ const FOCUS_TOOL_DESCRIPTION = "Execution roadmap: group deliveries into themed
|
|
|
16
17
|
"retrospective_run (execute a pending retrospective via LLM), " +
|
|
17
18
|
"retrospective_list (list retrospectives for a focus), " +
|
|
18
19
|
"retrospective_get (get a single retrospective by ID), " +
|
|
19
|
-
"review_complete (terminal action for a review agent: writes a focus_reviews row with outcome + summary + references, and updates focus.last_reviewed_at and focus.last_review_outcome)." +
|
|
20
|
+
"review_complete (terminal action for a review agent: writes a focus_reviews row with outcome + summary + references, and updates focus.last_reviewed_at and focus.last_review_outcome). " +
|
|
21
|
+
"On update, pass `clearReviewRequest: true` to clear `product_focuses.review_requested_at` -- the non-SQL recovery path for a focus stuck with a stale review request." +
|
|
20
22
|
LIST_INDEX_NOTE;
|
|
21
23
|
const focusToolSchema = {
|
|
22
24
|
action: z.enum(["list", "create", "update", "reorder", "merges", "retrospective_trigger", "retrospective_run", "retrospective_list", "retrospective_get", "review_complete"]).describe("Action to perform"),
|
|
@@ -25,7 +27,7 @@ const focusToolSchema = {
|
|
|
25
27
|
name: z.string().max(200).optional().describe("Focus name (required for create)"),
|
|
26
28
|
description: z.string().max(2000).optional().describe("What this focus aims to achieve"),
|
|
27
29
|
targetDate: z.string().optional().describe("Target date (ISO 8601)"),
|
|
28
|
-
status: z.enum(
|
|
30
|
+
status: z.enum(FOCUS_STATUSES).optional().describe("Focus status (update only)"),
|
|
29
31
|
readOnly: z.boolean().optional().describe("Whether this focus runs in read-only audit mode (update only)"),
|
|
30
32
|
assignedAgentRoleId: z.string().uuid().nullable().optional().describe("Agent role UUID to assign, or null to unassign (update only)"),
|
|
31
33
|
pipelineConfig: z.object({
|
|
@@ -44,12 +46,13 @@ const focusToolSchema = {
|
|
|
44
46
|
createdDeliveryIds: z.array(z.string().uuid()).optional().describe("Delivery UUIDs created during the review (review_complete only)"),
|
|
45
47
|
agentSessionId: z.string().uuid().optional().describe("Review agent session UUID (required for review_complete: must be the active review session for the focus)"),
|
|
46
48
|
startedAt: z.string().optional().describe("ISO 8601 timestamp when the review session started (review_complete only)"),
|
|
49
|
+
clearReviewRequest: z.boolean().optional().describe("If true, clears product_focuses.review_requested_at (update only). Use to unstick a focus whose review_requested_at is set but no review will run."),
|
|
47
50
|
limit: z.number().int().min(1).max(500).optional().describe("Max results (1-500, default 50)"),
|
|
48
51
|
offset: z.number().int().min(0).optional().describe("Number of results to skip (default 0)"),
|
|
49
52
|
detail: z.enum(["titles", "summary", "full"]).optional().describe("Response detail level"),
|
|
50
53
|
returnFull: z.boolean().optional().describe("Return full entity (default: compact)"),
|
|
51
54
|
};
|
|
52
|
-
function buildFocusHandler(getCreds, profile) {
|
|
55
|
+
export function buildFocusHandler(getCreds, profile, callApi = (body) => callProductApi(getCreds(), body)) {
|
|
53
56
|
return async (params) => {
|
|
54
57
|
switch (params.action) {
|
|
55
58
|
case "list": {
|
|
@@ -67,7 +70,7 @@ function buildFocusHandler(getCreds, profile) {
|
|
|
67
70
|
body.offset = params.offset;
|
|
68
71
|
if (params.detail !== undefined)
|
|
69
72
|
body.detail = params.detail;
|
|
70
|
-
const result = await
|
|
73
|
+
const result = await callApi(body);
|
|
71
74
|
const listResponse = { items: result.focuses, totalCount: result.totalCount };
|
|
72
75
|
if (profile === 'human') {
|
|
73
76
|
listResponse.context_available = true;
|
|
@@ -88,8 +91,12 @@ function buildFocusHandler(getCreds, profile) {
|
|
|
88
91
|
productId: params.productId,
|
|
89
92
|
fields,
|
|
90
93
|
};
|
|
91
|
-
const result = await
|
|
92
|
-
|
|
94
|
+
const result = await callApi(body);
|
|
95
|
+
const compact = compactEntity(result.focus, Object.keys(fields), params.returnFull);
|
|
96
|
+
if (result.next_steps !== undefined) {
|
|
97
|
+
return successResult({ ...compact, next_steps: result.next_steps });
|
|
98
|
+
}
|
|
99
|
+
return successResult(compact);
|
|
93
100
|
}
|
|
94
101
|
case "update": {
|
|
95
102
|
if (profile !== 'full' && profile !== 'human')
|
|
@@ -97,10 +104,16 @@ function buildFocusHandler(getCreds, profile) {
|
|
|
97
104
|
if (!params.focusId)
|
|
98
105
|
return validationError("focusId required for update");
|
|
99
106
|
const fields = buildFields(params, ['name', 'description', 'targetDate', 'status', 'readOnly', 'assignedAgentRoleId', 'pipelineConfig']);
|
|
107
|
+
// clearReviewRequest is a write-only escape hatch: translate it to
|
|
108
|
+
// reviewRequestedAt=null on the wire. Idempotent -- calling against
|
|
109
|
+
// a focus where review_requested_at is already NULL is a no-op write.
|
|
110
|
+
if (params.clearReviewRequest === true) {
|
|
111
|
+
fields.reviewRequestedAt = null;
|
|
112
|
+
}
|
|
100
113
|
if (Object.keys(fields).length === 0) {
|
|
101
114
|
return validationError("Provide at least one field to update");
|
|
102
115
|
}
|
|
103
|
-
const result = await
|
|
116
|
+
const result = await callApi({
|
|
104
117
|
action: "focus_update",
|
|
105
118
|
focusId: params.focusId,
|
|
106
119
|
fields,
|
|
@@ -114,7 +127,7 @@ function buildFocusHandler(getCreds, profile) {
|
|
|
114
127
|
return validationError("productId required for reorder");
|
|
115
128
|
if (!params.focusIds)
|
|
116
129
|
return validationError("focusIds required for reorder");
|
|
117
|
-
const result = await
|
|
130
|
+
const result = await callApi({
|
|
118
131
|
action: "focus_reorder",
|
|
119
132
|
productId: params.productId,
|
|
120
133
|
focusIds: params.focusIds,
|
|
@@ -132,13 +145,13 @@ function buildFocusHandler(getCreds, profile) {
|
|
|
132
145
|
body.limit = params.limit;
|
|
133
146
|
if (params.offset !== undefined)
|
|
134
147
|
body.offset = params.offset;
|
|
135
|
-
const result = await
|
|
148
|
+
const result = await callApi(body);
|
|
136
149
|
return successResult({ items: result.merges, totalCount: result.totalCount });
|
|
137
150
|
}
|
|
138
151
|
case "retrospective_trigger": {
|
|
139
152
|
if (!params.focusId)
|
|
140
153
|
return validationError("focusId required for retrospective_trigger");
|
|
141
|
-
const result = await
|
|
154
|
+
const result = await callApi({
|
|
142
155
|
action: "focus_retrospective_trigger",
|
|
143
156
|
focusId: params.focusId,
|
|
144
157
|
});
|
|
@@ -147,7 +160,7 @@ function buildFocusHandler(getCreds, profile) {
|
|
|
147
160
|
case "retrospective_run": {
|
|
148
161
|
if (!params.retrospectiveId)
|
|
149
162
|
return validationError("retrospectiveId required for retrospective_run");
|
|
150
|
-
const result = await
|
|
163
|
+
const result = await callApi({
|
|
151
164
|
action: "focus_retrospective_run",
|
|
152
165
|
fields: { entityId: params.retrospectiveId },
|
|
153
166
|
});
|
|
@@ -164,13 +177,13 @@ function buildFocusHandler(getCreds, profile) {
|
|
|
164
177
|
body.limit = params.limit;
|
|
165
178
|
if (params.offset !== undefined)
|
|
166
179
|
body.offset = params.offset;
|
|
167
|
-
const result = await
|
|
180
|
+
const result = await callApi(body);
|
|
168
181
|
return successResult({ items: result.retrospectives, totalCount: result.totalCount });
|
|
169
182
|
}
|
|
170
183
|
case "retrospective_get": {
|
|
171
184
|
if (!params.retrospectiveId)
|
|
172
185
|
return validationError("retrospectiveId required for retrospective_get");
|
|
173
|
-
const result = await
|
|
186
|
+
const result = await callApi({
|
|
174
187
|
action: "focus_retrospective_get",
|
|
175
188
|
fields: { entityId: params.retrospectiveId },
|
|
176
189
|
});
|
|
@@ -185,7 +198,7 @@ function buildFocusHandler(getCreds, profile) {
|
|
|
185
198
|
return validationError("summary required for review_complete");
|
|
186
199
|
if (!params.agentSessionId)
|
|
187
200
|
return validationError("agentSessionId required for review_complete (must be the active review session for the focus)");
|
|
188
|
-
const result = await
|
|
201
|
+
const result = await callApi({
|
|
189
202
|
action: "focus_review_complete",
|
|
190
203
|
focusId: params.focusId,
|
|
191
204
|
fields: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"focusHandlers.js","sourceRoot":"","sources":["../../src/handlers/focusHandlers.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,qCAAqC;AACrC,4DAA4D;AAC5D,yEAAyE;AACzE,yEAAyE;AACzE,iEAAiE;AACjE,8EAA8E;AAE9E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,cAAc,EACd,aAAa,EACb,eAAe,EACf,WAAW,EACX,WAAW,EACX,aAAa,EACb,eAAe,GAGhB,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"focusHandlers.js","sourceRoot":"","sources":["../../src/handlers/focusHandlers.ts"],"names":[],"mappings":"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"}
|
package/dist/handlers/index.d.ts
CHANGED
|
@@ -19,4 +19,3 @@ export { registerRealityTools } from "./realityHandlers.js";
|
|
|
19
19
|
export { registerRealityTreeTools } from "./realityTreeHandlers.js";
|
|
20
20
|
export { registerRealityTreeInjectionVerifyTool, handleRealityTreeInjectionVerify, } from "./realityTreeInjectionVerifyHandler.js";
|
|
21
21
|
export { registerContractTools } from "./contractHandlers.js";
|
|
22
|
-
export { registerPrerequisiteTreeTools } from "./prerequisiteTreeHandlers.js";
|
package/dist/handlers/index.js
CHANGED
|
@@ -22,5 +22,4 @@ export { registerRealityTools } from "./realityHandlers.js";
|
|
|
22
22
|
export { registerRealityTreeTools } from "./realityTreeHandlers.js";
|
|
23
23
|
export { registerRealityTreeInjectionVerifyTool, handleRealityTreeInjectionVerify, } from "./realityTreeInjectionVerifyHandler.js";
|
|
24
24
|
export { registerContractTools } from "./contractHandlers.js";
|
|
25
|
-
export { registerPrerequisiteTreeTools } from "./prerequisiteTreeHandlers.js";
|
|
26
25
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/handlers/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,uDAAuD;AACvD,8EAA8E;AAE9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,8BAA8B,EAAE,MAAM,gCAAgC,CAAC;AAChF,OAAO,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,8BAA8B,EAAE,MAAM,mBAAmB,CAAC;AACnH,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EACL,sCAAsC,EACtC,gCAAgC,GACjC,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/handlers/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,uDAAuD;AACvD,8EAA8E;AAE9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,8BAA8B,EAAE,MAAM,gCAAgC,CAAC;AAChF,OAAO,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,8BAA8B,EAAE,MAAM,mBAAmB,CAAC;AACnH,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EACL,sCAAsC,EACtC,gCAAgC,GACjC,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
// telora_product (list | create | get | update | overview)
|
|
4
4
|
// ---------------------------------------------------------------------------
|
|
5
5
|
import { z } from "zod";
|
|
6
|
+
import { PRODUCT_STATUSES } from "@telora/daemon-core";
|
|
6
7
|
import { callProductApi, successResult, validationError, buildFields, wrapHandler, compactEntity, LIST_INDEX_NOTE, } from "../shared.js";
|
|
7
8
|
import { addProductToDaemonConfig } from "./daemonConfig.js";
|
|
8
9
|
export function registerProductTools(server, getCreds, profile = 'full') {
|
|
@@ -18,7 +19,7 @@ export function registerProductTools(server, getCreds, profile = 'full') {
|
|
|
18
19
|
vision: z.string().max(2000).optional().describe("Product vision statement"),
|
|
19
20
|
targetAudience: z.string().max(500).optional().describe("Target audience"),
|
|
20
21
|
unitId: z.string().uuid().nullable().optional().describe("Organizational unit UUID (null to unassign)"),
|
|
21
|
-
status: z.enum(
|
|
22
|
+
status: z.enum(PRODUCT_STATUSES).optional().describe("Product status (list: filter; create/update: set)"),
|
|
22
23
|
qaServices: z.array(z.object({
|
|
23
24
|
label: z.string().describe("Display label (e.g. 'Supabase Studio')"),
|
|
24
25
|
port: z.number().int().describe("Port number on the QA host"),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"productHandlers.js","sourceRoot":"","sources":["../../src/handlers/productHandlers.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,uCAAuC;AACvC,6DAA6D;AAC7D,8EAA8E;AAE9E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,cAAc,EACd,aAAa,EACb,eAAe,EACf,WAAW,EACX,WAAW,EACX,aAAa,EACb,eAAe,GAGhB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAE7D,MAAM,UAAU,oBAAoB,CAClC,MAAiB,EACjB,QAAkB,EAClB,UAAuB,MAAM;IAE7B,MAAM,CAAC,IAAI,CACT,gBAAgB,EAChB,uIAAuI;QACvI,qGAAqG;QACrG,uHAAuH;QACvH,eAAe,EACf;QACE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QAC7F,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sDAAsD,CAAC;QACjG,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;QACxF,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gFAAgF,CAAC;QAC/H,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;QACtF,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;QAC5E,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAC1E,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;QACvG,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"productHandlers.js","sourceRoot":"","sources":["../../src/handlers/productHandlers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,21 @@
|
|
|
1
1
|
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
2
|
import { type GetCreds } from "../shared.js";
|
|
3
|
+
type CallApi = (body: Record<string, unknown>) => Promise<unknown>;
|
|
4
|
+
/**
|
|
5
|
+
* Extracted pure handler for reality_tree create. Tests inject a stub via
|
|
6
|
+
* the `callApi` parameter so they can assert next_steps pass-through without
|
|
7
|
+
* a live server.
|
|
8
|
+
*/
|
|
9
|
+
export declare function handleRealityTreeCreate(params: {
|
|
10
|
+
name?: string;
|
|
11
|
+
focusId?: string;
|
|
12
|
+
description?: string;
|
|
13
|
+
returnFull?: boolean;
|
|
14
|
+
}, callApi: CallApi): Promise<{
|
|
15
|
+
content: {
|
|
16
|
+
type: "text";
|
|
17
|
+
text: string;
|
|
18
|
+
}[];
|
|
19
|
+
}>;
|
|
3
20
|
export declare function registerRealityTreeTools(server: McpServer, getCreds: GetCreds): void;
|
|
21
|
+
export {};
|
|
@@ -7,7 +7,6 @@
|
|
|
7
7
|
// telora_reality_tree_traverse (upstream | downstream | negative_branches | injection_plan | root_causes)
|
|
8
8
|
// telora_reality_tree_injection_context (gather context for injections to synthesize focuses)
|
|
9
9
|
// telora_reality_tree_injection_history (chronological injection promotion history for a node)
|
|
10
|
-
// telora_reality_tree_group (list | create | update | delete)
|
|
11
10
|
// telora_reality_drift (list | propose | ratify | dismiss | mark_applied)
|
|
12
11
|
// ---------------------------------------------------------------------------
|
|
13
12
|
import { z } from "zod";
|
|
@@ -15,6 +14,32 @@ import { callProductApi, successResult, validationError, wrapHandler, compactEnt
|
|
|
15
14
|
const nodeTypeEnum = z.enum(["entity", "undesired_effect", "desired_effect", "injection"]);
|
|
16
15
|
const edgeTypeEnum = z.enum(["sufficient", "and", "derived_from", "targets"]);
|
|
17
16
|
const linkEntityTypeEnum = z.enum(["focus", "delivery", "issue"]);
|
|
17
|
+
/**
|
|
18
|
+
* Extracted pure handler for reality_tree create. Tests inject a stub via
|
|
19
|
+
* the `callApi` parameter so they can assert next_steps pass-through without
|
|
20
|
+
* a live server.
|
|
21
|
+
*/
|
|
22
|
+
export async function handleRealityTreeCreate(params, callApi) {
|
|
23
|
+
if (!params.name)
|
|
24
|
+
return validationError("name required for create");
|
|
25
|
+
if (!params.focusId)
|
|
26
|
+
return validationError("focusId required for create");
|
|
27
|
+
const body = {
|
|
28
|
+
action: "reality_tree_create",
|
|
29
|
+
name: params.name,
|
|
30
|
+
focusId: params.focusId,
|
|
31
|
+
};
|
|
32
|
+
if (params.description !== undefined)
|
|
33
|
+
body.description = params.description;
|
|
34
|
+
const result = await callApi(body);
|
|
35
|
+
const tree = result.tree;
|
|
36
|
+
const treeResponse = {
|
|
37
|
+
tree: params.returnFull ? tree : compactEntity(tree, ["name", "status", "focusId"]),
|
|
38
|
+
};
|
|
39
|
+
if (result.next_steps !== undefined)
|
|
40
|
+
treeResponse.next_steps = result.next_steps;
|
|
41
|
+
return successResult(treeResponse);
|
|
42
|
+
}
|
|
18
43
|
export function registerRealityTreeTools(server, getCreds) {
|
|
19
44
|
// -- telora_reality_tree ---------------------------------------------------
|
|
20
45
|
server.tool("telora_reality_tree", "Reality trees: CRT/FRT planning structures based on Goldratt's Thinking Processes. " +
|
|
@@ -54,23 +79,7 @@ export function registerRealityTreeTools(server, getCreds) {
|
|
|
54
79
|
return successResult(result);
|
|
55
80
|
}
|
|
56
81
|
case "create": {
|
|
57
|
-
|
|
58
|
-
return validationError("name required for create");
|
|
59
|
-
if (!params.focusId) {
|
|
60
|
-
return validationError("focusId required for create");
|
|
61
|
-
}
|
|
62
|
-
const body = {
|
|
63
|
-
action: "reality_tree_create",
|
|
64
|
-
name: params.name,
|
|
65
|
-
focusId: params.focusId,
|
|
66
|
-
};
|
|
67
|
-
if (params.description !== undefined)
|
|
68
|
-
body.description = params.description;
|
|
69
|
-
const result = await callProductApi(getCreds(), body);
|
|
70
|
-
const tree = result.tree;
|
|
71
|
-
return successResult({
|
|
72
|
-
tree: params.returnFull ? tree : compactEntity(tree, ["name", "status", "focusId"]),
|
|
73
|
-
});
|
|
82
|
+
return handleRealityTreeCreate(params, (body) => callProductApi(getCreds(), body));
|
|
74
83
|
}
|
|
75
84
|
case "get": {
|
|
76
85
|
if (!params.treeId)
|
|
@@ -156,7 +165,6 @@ export function registerRealityTreeTools(server, getCreds) {
|
|
|
156
165
|
.describe("Optional PRT-reasoning ref on injections: another node (typically another injection or FRT statement) this is a prerequisite for."),
|
|
157
166
|
targetNodeIds: z.array(z.string().uuid()).min(1).max(50).optional()
|
|
158
167
|
.describe("Target node UUIDs (target only: entities the injection addresses)"),
|
|
159
|
-
groupId: z.string().uuid().nullable().optional().describe("Group UUID (update only: assign node to group, null to remove)"),
|
|
160
168
|
positionX: z.number().optional().describe("X coordinate for graph layout"),
|
|
161
169
|
positionY: z.number().optional().describe("Y coordinate for graph layout"),
|
|
162
170
|
rewrites: z.array(z.object({
|
|
@@ -208,8 +216,6 @@ export function registerRealityTreeTools(server, getCreds) {
|
|
|
208
216
|
};
|
|
209
217
|
if (params.evidence !== undefined)
|
|
210
218
|
body.evidence = params.evidence;
|
|
211
|
-
if (params.groupId !== undefined)
|
|
212
|
-
body.groupId = params.groupId;
|
|
213
219
|
if (params.positionX !== undefined)
|
|
214
220
|
body.positionX = params.positionX;
|
|
215
221
|
if (params.positionY !== undefined)
|
|
@@ -253,8 +259,6 @@ export function registerRealityTreeTools(server, getCreds) {
|
|
|
253
259
|
body.dissolvesObstacle = params.dissolvesObstacle;
|
|
254
260
|
if (params.enablesNodeId !== undefined)
|
|
255
261
|
body.enablesNodeId = params.enablesNodeId;
|
|
256
|
-
if (params.groupId !== undefined)
|
|
257
|
-
body.groupId = params.groupId;
|
|
258
262
|
if (params.positionX !== undefined)
|
|
259
263
|
body.positionX = params.positionX;
|
|
260
264
|
if (params.positionY !== undefined)
|
|
@@ -567,71 +571,6 @@ export function registerRealityTreeTools(server, getCreds) {
|
|
|
567
571
|
const { history, ...rest } = result;
|
|
568
572
|
return successResult({ ...rest, items: Array.isArray(history) ? history : [] });
|
|
569
573
|
}));
|
|
570
|
-
// -- telora_reality_tree_group -----------------------------------------------
|
|
571
|
-
server.tool("telora_reality_tree_group", "Reality tree groups: named containers for organizing nodes. " +
|
|
572
|
-
"Nodes belong to zero or one group. " +
|
|
573
|
-
"Actions: list (treeId), create (treeId + name + optional color), " +
|
|
574
|
-
"update (groupId + name/color), delete (groupId -- only if group is empty)." +
|
|
575
|
-
LIST_INDEX_NOTE, {
|
|
576
|
-
action: z.enum(["list", "create", "update", "delete"]).describe("Action to perform"),
|
|
577
|
-
treeId: z.string().uuid().optional().describe("Reality tree UUID (required for list, create)"),
|
|
578
|
-
groupId: z.string().uuid().optional().describe("Group UUID (required for update, delete)"),
|
|
579
|
-
name: z.string().max(200).optional().describe("Group name (required for create)"),
|
|
580
|
-
color: z.string().max(20).optional().describe("Hex color for visual display"),
|
|
581
|
-
returnFull: z.boolean().optional().describe("Return full entity (default: compact)"),
|
|
582
|
-
}, wrapHandler(async (params) => {
|
|
583
|
-
switch (params.action) {
|
|
584
|
-
case "list": {
|
|
585
|
-
if (!params.treeId)
|
|
586
|
-
return validationError("treeId required for list");
|
|
587
|
-
const result = await callProductApi(getCreds(), {
|
|
588
|
-
action: "reality_tree_group_list",
|
|
589
|
-
treeId: params.treeId,
|
|
590
|
-
});
|
|
591
|
-
return successResult(result);
|
|
592
|
-
}
|
|
593
|
-
case "create": {
|
|
594
|
-
if (!params.treeId || !params.name)
|
|
595
|
-
return validationError("treeId and name required for create");
|
|
596
|
-
const body = {
|
|
597
|
-
action: "reality_tree_group_create",
|
|
598
|
-
treeId: params.treeId,
|
|
599
|
-
name: params.name,
|
|
600
|
-
};
|
|
601
|
-
if (params.color !== undefined)
|
|
602
|
-
body.color = params.color;
|
|
603
|
-
const result = await callProductApi(getCreds(), body);
|
|
604
|
-
const group = result.group;
|
|
605
|
-
return successResult({ group: params.returnFull ? group : compactEntity(group, ["name", "color"]) });
|
|
606
|
-
}
|
|
607
|
-
case "update": {
|
|
608
|
-
if (!params.groupId)
|
|
609
|
-
return validationError("groupId required for update");
|
|
610
|
-
const body = {
|
|
611
|
-
action: "reality_tree_group_update",
|
|
612
|
-
groupId: params.groupId,
|
|
613
|
-
};
|
|
614
|
-
if (params.name !== undefined)
|
|
615
|
-
body.name = params.name;
|
|
616
|
-
if (params.color !== undefined)
|
|
617
|
-
body.color = params.color;
|
|
618
|
-
const result = await callProductApi(getCreds(), body);
|
|
619
|
-
const group = result.group;
|
|
620
|
-
return successResult({ group: params.returnFull ? group : compactEntity(group, ["name", "color"]) });
|
|
621
|
-
}
|
|
622
|
-
case "delete": {
|
|
623
|
-
if (!params.groupId)
|
|
624
|
-
return validationError("groupId required for delete");
|
|
625
|
-
const result = await callProductApi(getCreds(), {
|
|
626
|
-
action: "reality_tree_group_delete",
|
|
627
|
-
groupId: params.groupId,
|
|
628
|
-
});
|
|
629
|
-
return successResult(result);
|
|
630
|
-
}
|
|
631
|
-
default:
|
|
632
|
-
return validationError(`Unknown action: ${params.action}`);
|
|
633
|
-
}
|
|
634
|
-
}));
|
|
635
574
|
// -- telora_reality_drift --------------------------------------------------
|
|
636
575
|
const proposalKindEnum = z.enum([
|
|
637
576
|
"update_statement",
|