@telora/mcp-products 0.21.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +276 -0
- package/dist/cli/init.d.ts +2 -0
- package/dist/cli/init.js +94 -0
- package/dist/cli/init.js.map +1 -0
- package/dist/handlers/agentHandlers.d.ts +3 -0
- package/dist/handlers/agentHandlers.js +97 -0
- package/dist/handlers/agentHandlers.js.map +1 -0
- package/dist/handlers/connectorHandlers.d.ts +3 -0
- package/dist/handlers/connectorHandlers.js +401 -0
- package/dist/handlers/connectorHandlers.js.map +1 -0
- package/dist/handlers/contextHandlers.d.ts +8 -0
- package/dist/handlers/contextHandlers.js +169 -0
- package/dist/handlers/contextHandlers.js.map +1 -0
- package/dist/handlers/deliveryHandlers.d.ts +3 -0
- package/dist/handlers/deliveryHandlers.js +122 -0
- package/dist/handlers/deliveryHandlers.js.map +1 -0
- package/dist/handlers/deploymentProfileHandlers.d.ts +3 -0
- package/dist/handlers/deploymentProfileHandlers.js +104 -0
- package/dist/handlers/deploymentProfileHandlers.js.map +1 -0
- package/dist/handlers/discoverHandler.d.ts +23 -0
- package/dist/handlers/discoverHandler.js +83 -0
- package/dist/handlers/discoverHandler.js.map +1 -0
- package/dist/handlers/factoryHandlers.d.ts +3 -0
- package/dist/handlers/factoryHandlers.js +484 -0
- package/dist/handlers/factoryHandlers.js.map +1 -0
- package/dist/handlers/ideaHandlers.d.ts +3 -0
- package/dist/handlers/ideaHandlers.js +245 -0
- package/dist/handlers/ideaHandlers.js.map +1 -0
- package/dist/handlers/index.d.ts +15 -0
- package/dist/handlers/index.js +19 -0
- package/dist/handlers/index.js.map +1 -0
- package/dist/handlers/infrastructureHandlers.d.ts +3 -0
- package/dist/handlers/infrastructureHandlers.js +335 -0
- package/dist/handlers/infrastructureHandlers.js.map +1 -0
- package/dist/handlers/issueHandlers.d.ts +3 -0
- package/dist/handlers/issueHandlers.js +94 -0
- package/dist/handlers/issueHandlers.js.map +1 -0
- package/dist/handlers/okrHandlers.d.ts +3 -0
- package/dist/handlers/okrHandlers.js +194 -0
- package/dist/handlers/okrHandlers.js.map +1 -0
- package/dist/handlers/playbookHandlers.d.ts +3 -0
- package/dist/handlers/playbookHandlers.js +93 -0
- package/dist/handlers/playbookHandlers.js.map +1 -0
- package/dist/handlers/productHandlers.d.ts +3 -0
- package/dist/handlers/productHandlers.js +129 -0
- package/dist/handlers/productHandlers.js.map +1 -0
- package/dist/handlers/reportHandlers.d.ts +3 -0
- package/dist/handlers/reportHandlers.js +59 -0
- package/dist/handlers/reportHandlers.js.map +1 -0
- package/dist/handlers/strategyHandlers.d.ts +3 -0
- package/dist/handlers/strategyHandlers.js +116 -0
- package/dist/handlers/strategyHandlers.js.map +1 -0
- package/dist/handlers/workflowHandlers.d.ts +3 -0
- package/dist/handlers/workflowHandlers.js +93 -0
- package/dist/handlers/workflowHandlers.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +284 -0
- package/dist/index.js.map +1 -0
- package/dist/shared.d.ts +77 -0
- package/dist/shared.js +147 -0
- package/dist/shared.js.map +1 -0
- package/package.json +47 -0
- package/scripts/postinstall.js +96 -0
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// Delivery tool handler (consolidated):
|
|
3
|
+
// telora_product_delivery (list | create | update | operationalize | delete | reorder)
|
|
4
|
+
// ---------------------------------------------------------------------------
|
|
5
|
+
import { z } from "zod";
|
|
6
|
+
import { callProductApi, successResult, validationError, buildFields, wrapHandler, compactEntity, } from "../shared.js";
|
|
7
|
+
export function registerDeliveryTools(server, getCreds) {
|
|
8
|
+
server.tool("telora_product_delivery", "Work packages: individual shippable increments within a strategy. Each delivery has acceptance criteria, " +
|
|
9
|
+
"technical context, and tracks progress through issues. " +
|
|
10
|
+
"Actions: list deliveries (filter by status/strategy), create a delivery (name + productId), " +
|
|
11
|
+
"update delivery fields (description, criteria, status), operationalize (attach to org tree), delete, reorder priority.", {
|
|
12
|
+
action: z.enum(["list", "create", "update", "operationalize", "delete", "reorder"]).describe("Action to perform"),
|
|
13
|
+
productId: z.string().uuid().optional().describe("Product UUID (required for list, create, reorder)"),
|
|
14
|
+
deliveryId: z.string().uuid().optional().describe("Delivery UUID (required for update, operationalize, delete)"),
|
|
15
|
+
name: z.string().max(200).optional().describe("Delivery name (required for create)"),
|
|
16
|
+
description: z.string().max(2000).optional().describe("What this delivery achieves"),
|
|
17
|
+
targetDate: z.string().optional().describe("Target date (ISO 8601)"),
|
|
18
|
+
acceptanceCriteria: z.string().max(4000).optional().describe("Definition of done / success criteria"),
|
|
19
|
+
techContext: z.string().max(4000).optional().describe("Technical context: stack, repos, key files, architecture notes"),
|
|
20
|
+
strategyId: z.string().uuid().nullable().optional().describe("Strategy UUID to link (create/update), null to unlink (update)"),
|
|
21
|
+
executionStatus: z.enum(["draft", "planning", "iterating", "queued", "coding", "verify", "in_review", "done", "paused", "cancelled"]).optional().describe("Execution status (update: new status; list: filter)"),
|
|
22
|
+
parentNodeId: z.string().uuid().optional().describe("Target org unit or stream UUID (operationalize only)"),
|
|
23
|
+
deliveryIds: z.array(z.string().uuid()).optional().describe("Ordered array of delivery UUIDs for reorder (first = rank 0 = highest priority)"),
|
|
24
|
+
includeIssueCounts: z.boolean().optional().describe("Include done/total issue counts per delivery (list only)"),
|
|
25
|
+
limit: z.number().int().min(1).max(500).optional().describe("Max results (1-500, default 50)"),
|
|
26
|
+
offset: z.number().int().min(0).optional().describe("Number of results to skip (default 0)"),
|
|
27
|
+
detail: z.enum(["titles", "summary", "full"]).optional().describe("Response detail level"),
|
|
28
|
+
returnFull: z.boolean().optional().describe("Return full entity (default: compact)"),
|
|
29
|
+
}, wrapHandler(async (params) => {
|
|
30
|
+
switch (params.action) {
|
|
31
|
+
case "list": {
|
|
32
|
+
if (!params.productId)
|
|
33
|
+
return validationError("productId required for list");
|
|
34
|
+
const fields = buildFields({ status: params.executionStatus });
|
|
35
|
+
const body = {
|
|
36
|
+
action: "delivery_list",
|
|
37
|
+
productId: params.productId,
|
|
38
|
+
fields: Object.keys(fields).length > 0 ? fields : undefined,
|
|
39
|
+
};
|
|
40
|
+
if (params.strategyId !== undefined)
|
|
41
|
+
body.strategyId = params.strategyId;
|
|
42
|
+
if (params.includeIssueCounts !== undefined)
|
|
43
|
+
body.includeIssueCounts = params.includeIssueCounts;
|
|
44
|
+
if (params.limit !== undefined)
|
|
45
|
+
body.limit = params.limit;
|
|
46
|
+
if (params.offset !== undefined)
|
|
47
|
+
body.offset = params.offset;
|
|
48
|
+
if (params.detail !== undefined)
|
|
49
|
+
body.detail = params.detail;
|
|
50
|
+
const result = await callProductApi(getCreds(), body);
|
|
51
|
+
return successResult({ items: result.deliveries, totalCount: result.totalCount, context_available: true });
|
|
52
|
+
}
|
|
53
|
+
case "create": {
|
|
54
|
+
if (!params.productId)
|
|
55
|
+
return validationError("productId required for create");
|
|
56
|
+
if (!params.name)
|
|
57
|
+
return validationError("name required for create");
|
|
58
|
+
const fields = buildFields(params, ['name', 'description', 'targetDate', 'acceptanceCriteria', 'techContext']);
|
|
59
|
+
fields.executionStatus = 'planning';
|
|
60
|
+
const body = {
|
|
61
|
+
action: "delivery_create",
|
|
62
|
+
productId: params.productId,
|
|
63
|
+
fields,
|
|
64
|
+
};
|
|
65
|
+
if (params.strategyId !== undefined)
|
|
66
|
+
body.strategyId = params.strategyId;
|
|
67
|
+
const result = await callProductApi(getCreds(), body);
|
|
68
|
+
return successResult(compactEntity(result.delivery, Object.keys(fields), params.returnFull));
|
|
69
|
+
}
|
|
70
|
+
case "update": {
|
|
71
|
+
if (!params.deliveryId)
|
|
72
|
+
return validationError("deliveryId required for update");
|
|
73
|
+
const fields = buildFields(params, ['name', 'description', 'targetDate', 'acceptanceCriteria', 'techContext', 'strategyId', 'executionStatus']);
|
|
74
|
+
if (Object.keys(fields).length === 0) {
|
|
75
|
+
return validationError("Provide at least one field to update");
|
|
76
|
+
}
|
|
77
|
+
const result = await callProductApi(getCreds(), {
|
|
78
|
+
action: "delivery_update",
|
|
79
|
+
deliveryId: params.deliveryId,
|
|
80
|
+
fields,
|
|
81
|
+
});
|
|
82
|
+
return successResult(compactEntity(result.delivery, Object.keys(fields), params.returnFull));
|
|
83
|
+
}
|
|
84
|
+
case "operationalize": {
|
|
85
|
+
if (!params.deliveryId)
|
|
86
|
+
return validationError("deliveryId required for operationalize");
|
|
87
|
+
if (!params.parentNodeId)
|
|
88
|
+
return validationError("parentNodeId required for operationalize");
|
|
89
|
+
const result = await callProductApi(getCreds(), {
|
|
90
|
+
action: "delivery_operationalize",
|
|
91
|
+
deliveryId: params.deliveryId,
|
|
92
|
+
parentNodeId: params.parentNodeId,
|
|
93
|
+
});
|
|
94
|
+
return successResult(compactEntity(result.delivery, [], params.returnFull));
|
|
95
|
+
}
|
|
96
|
+
case "delete": {
|
|
97
|
+
if (!params.deliveryId)
|
|
98
|
+
return validationError("deliveryId required for delete");
|
|
99
|
+
const result = await callProductApi(getCreds(), {
|
|
100
|
+
action: "delivery_delete",
|
|
101
|
+
deliveryId: params.deliveryId,
|
|
102
|
+
});
|
|
103
|
+
return successResult(result);
|
|
104
|
+
}
|
|
105
|
+
case "reorder": {
|
|
106
|
+
if (!params.productId)
|
|
107
|
+
return validationError("productId required for reorder");
|
|
108
|
+
if (!params.deliveryIds)
|
|
109
|
+
return validationError("deliveryIds required for reorder");
|
|
110
|
+
const result = await callProductApi(getCreds(), {
|
|
111
|
+
action: "delivery_reorder",
|
|
112
|
+
productId: params.productId,
|
|
113
|
+
deliveryIds: params.deliveryIds,
|
|
114
|
+
});
|
|
115
|
+
return successResult(result.deliveries);
|
|
116
|
+
}
|
|
117
|
+
default:
|
|
118
|
+
return validationError(`Unknown action: ${params.action}`);
|
|
119
|
+
}
|
|
120
|
+
}));
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=deliveryHandlers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deliveryHandlers.js","sourceRoot":"","sources":["../../src/handlers/deliveryHandlers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// Deployment Profile tool handler (consolidated):
|
|
3
|
+
// telora_deployment_profile (create | list | get | update | link_to_product)
|
|
4
|
+
// ---------------------------------------------------------------------------
|
|
5
|
+
import { z } from "zod";
|
|
6
|
+
import { callProductApi, successResult, validationError, wrapHandler, } from "../shared.js";
|
|
7
|
+
export function registerDeploymentProfileTools(server, getCreds) {
|
|
8
|
+
server.tool("telora_deployment_profile", "CI/CD configuration: deployment profiles define target environments and deployment guidelines for factory builds. " +
|
|
9
|
+
"Profiles contain inception prompts (full deploy detail for first cycle) and terse guidelines (ongoing AI context). " +
|
|
10
|
+
"Actions: create a profile (name required), list, get details, update settings, " +
|
|
11
|
+
"link_to_product (attach profile to product, null to unlink).", {
|
|
12
|
+
action: z.enum(["create", "list", "get", "update", "link_to_product"]).describe("Action to perform"),
|
|
13
|
+
id: z.string().uuid().optional().describe("Deployment profile UUID (required for get, update)"),
|
|
14
|
+
productId: z.string().uuid().optional().describe("Product UUID (required for link_to_product)"),
|
|
15
|
+
profileId: z.string().uuid().nullable().optional().describe("Profile UUID to link (link_to_product only, null to unlink)"),
|
|
16
|
+
name: z.string().max(200).optional().describe("Profile name (required for create)"),
|
|
17
|
+
description: z.string().max(2000).optional().describe("Short description of this deployment target"),
|
|
18
|
+
inceptionPrompt: z.string().optional().describe("Full deployment detail for first factory cycle"),
|
|
19
|
+
guidelines: z.string().optional().describe("Terse constraint summary for ongoing AI context injection"),
|
|
20
|
+
isDeleted: z.boolean().optional().describe("Archive (true) or restore (false) the profile (update only)"),
|
|
21
|
+
includeArchived: z.boolean().optional().describe("Include archived profiles in list results (default: false)"),
|
|
22
|
+
limit: z.number().int().min(1).max(500).optional().describe("Max results (1-500, default 50)"),
|
|
23
|
+
offset: z.number().int().min(0).optional().describe("Number of results to skip (default 0)"),
|
|
24
|
+
returnFull: z.boolean().optional().describe("Return full entity (default: compact)"),
|
|
25
|
+
}, wrapHandler(async (params) => {
|
|
26
|
+
switch (params.action) {
|
|
27
|
+
case "create": {
|
|
28
|
+
if (!params.name)
|
|
29
|
+
return validationError("name required for create");
|
|
30
|
+
const result = await callProductApi(getCreds(), {
|
|
31
|
+
action: "deployment_profile_create",
|
|
32
|
+
fields: {
|
|
33
|
+
name: params.name,
|
|
34
|
+
...(params.description !== undefined && { description: params.description }),
|
|
35
|
+
...(params.inceptionPrompt !== undefined && { inceptionPrompt: params.inceptionPrompt }),
|
|
36
|
+
...(params.guidelines !== undefined && { guidelines: params.guidelines }),
|
|
37
|
+
returnFull: params.returnFull,
|
|
38
|
+
},
|
|
39
|
+
});
|
|
40
|
+
return successResult(result.deploymentProfile);
|
|
41
|
+
}
|
|
42
|
+
case "list": {
|
|
43
|
+
const body = { action: "deployment_profile_list" };
|
|
44
|
+
if (params.includeArchived !== undefined)
|
|
45
|
+
body.fields = { includeArchived: params.includeArchived };
|
|
46
|
+
if (params.limit !== undefined)
|
|
47
|
+
body.limit = params.limit;
|
|
48
|
+
if (params.offset !== undefined)
|
|
49
|
+
body.offset = params.offset;
|
|
50
|
+
const result = await callProductApi(getCreds(), body);
|
|
51
|
+
return successResult({ items: result.deploymentProfiles, totalCount: result.totalCount });
|
|
52
|
+
}
|
|
53
|
+
case "get": {
|
|
54
|
+
if (!params.id)
|
|
55
|
+
return validationError("id required for get");
|
|
56
|
+
const result = await callProductApi(getCreds(), {
|
|
57
|
+
action: "deployment_profile_get",
|
|
58
|
+
deploymentProfileId: params.id,
|
|
59
|
+
});
|
|
60
|
+
return successResult(result.deploymentProfile);
|
|
61
|
+
}
|
|
62
|
+
case "update": {
|
|
63
|
+
if (!params.id)
|
|
64
|
+
return validationError("id required for update");
|
|
65
|
+
const fields = {};
|
|
66
|
+
if (params.name !== undefined)
|
|
67
|
+
fields.name = params.name;
|
|
68
|
+
if (params.description !== undefined)
|
|
69
|
+
fields.description = params.description;
|
|
70
|
+
if (params.inceptionPrompt !== undefined)
|
|
71
|
+
fields.inceptionPrompt = params.inceptionPrompt;
|
|
72
|
+
if (params.guidelines !== undefined)
|
|
73
|
+
fields.guidelines = params.guidelines;
|
|
74
|
+
if (params.isDeleted !== undefined)
|
|
75
|
+
fields.isDeleted = params.isDeleted;
|
|
76
|
+
fields.returnFull = params.returnFull;
|
|
77
|
+
if (Object.keys(fields).length === 1 && "returnFull" in fields) {
|
|
78
|
+
return validationError("Provide at least one field to update");
|
|
79
|
+
}
|
|
80
|
+
const result = await callProductApi(getCreds(), {
|
|
81
|
+
action: "deployment_profile_update",
|
|
82
|
+
deploymentProfileId: params.id,
|
|
83
|
+
fields,
|
|
84
|
+
});
|
|
85
|
+
return successResult(result.deploymentProfile);
|
|
86
|
+
}
|
|
87
|
+
case "link_to_product": {
|
|
88
|
+
if (!params.productId)
|
|
89
|
+
return validationError("productId required for link_to_product");
|
|
90
|
+
const body = {
|
|
91
|
+
action: "deployment_profile_link_to_product",
|
|
92
|
+
productId: params.productId,
|
|
93
|
+
};
|
|
94
|
+
if (params.profileId !== undefined)
|
|
95
|
+
body.deploymentProfileId = params.profileId ?? undefined;
|
|
96
|
+
const result = await callProductApi(getCreds(), body);
|
|
97
|
+
return successResult(result);
|
|
98
|
+
}
|
|
99
|
+
default:
|
|
100
|
+
return validationError(`Unknown action: ${params.action}`);
|
|
101
|
+
}
|
|
102
|
+
}));
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=deploymentProfileHandlers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deploymentProfileHandlers.js","sourceRoot":"","sources":["../../src/handlers/deploymentProfileHandlers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
/** Per-tool metadata for the toolIndex */
|
|
3
|
+
export interface ToolIndexEntry {
|
|
4
|
+
name: string;
|
|
5
|
+
summary: string;
|
|
6
|
+
actions: string[];
|
|
7
|
+
keywords: string[];
|
|
8
|
+
}
|
|
9
|
+
/** Domain definitions: name -> description + registration thunk + tool index */
|
|
10
|
+
export interface DomainDef {
|
|
11
|
+
description: string;
|
|
12
|
+
keywords: string[];
|
|
13
|
+
toolIndex: ToolIndexEntry[];
|
|
14
|
+
register: () => void;
|
|
15
|
+
}
|
|
16
|
+
export type DomainRegistry = Record<string, DomainDef>;
|
|
17
|
+
/** Startup domains that are always loaded (shown in list for completeness) */
|
|
18
|
+
export interface StartupDomain {
|
|
19
|
+
description: string;
|
|
20
|
+
keywords: string[];
|
|
21
|
+
toolIndex: ToolIndexEntry[];
|
|
22
|
+
}
|
|
23
|
+
export declare function registerDiscoverTool(server: McpServer, domains: DomainRegistry, startupDomains?: Record<string, StartupDomain>): void;
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// telora_discover -- dynamic tool loading for the human profile
|
|
3
|
+
//
|
|
4
|
+
// In the human profile, only core tools (product, strategy, delivery, issue)
|
|
5
|
+
// are registered at startup. All other tool domains are deferred and loaded
|
|
6
|
+
// on demand via this meta-tool, which calls the relevant registerXxxTools()
|
|
7
|
+
// and then notifies the client via sendToolListChanged().
|
|
8
|
+
// ---------------------------------------------------------------------------
|
|
9
|
+
import { z } from "zod";
|
|
10
|
+
import { successResult, validationError, wrapHandler } from "../shared.js";
|
|
11
|
+
export function registerDiscoverTool(server, domains, startupDomains) {
|
|
12
|
+
const loaded = new Set();
|
|
13
|
+
const domainNames = Object.keys(domains);
|
|
14
|
+
const startupNames = Object.keys(startupDomains ?? {});
|
|
15
|
+
// Build domain catalog for the tool description
|
|
16
|
+
const domainCatalog = domainNames
|
|
17
|
+
.map((d) => ` ${d}: ${domains[d].description}`)
|
|
18
|
+
.join("\n");
|
|
19
|
+
// Collect all keywords for discover tool description (helps ToolSearch find this tool)
|
|
20
|
+
const allKeywords = new Set();
|
|
21
|
+
for (const d of domainNames) {
|
|
22
|
+
for (const kw of domains[d].keywords)
|
|
23
|
+
allKeywords.add(kw);
|
|
24
|
+
}
|
|
25
|
+
server.tool("telora_discover", "Load additional Telora tool domains on demand. At startup only core tools " +
|
|
26
|
+
"(product, strategy, delivery, issue) are available. Use this to load domains for: " +
|
|
27
|
+
[...allKeywords].join(", ") + ".\n\n" +
|
|
28
|
+
"Available domains:\n" + domainCatalog + "\n\n" +
|
|
29
|
+
"Use action 'list' to see all domains with their tool indexes (what tools and actions each domain provides). " +
|
|
30
|
+
"Use action 'load' with a domain name or 'all' to load tools.", {
|
|
31
|
+
action: z.enum(["list", "load"]).describe("'list' shows domain status with tool indexes; 'load' registers tools for a domain"),
|
|
32
|
+
domain: z.string().optional()
|
|
33
|
+
.describe("Domain to load (required for 'load' action). Use 'all' to load everything."),
|
|
34
|
+
}, wrapHandler(async (params) => {
|
|
35
|
+
if (params.action === "list") {
|
|
36
|
+
const alwaysLoaded = startupNames.map((d) => ({
|
|
37
|
+
domain: d,
|
|
38
|
+
loaded: true,
|
|
39
|
+
alwaysLoaded: true,
|
|
40
|
+
description: startupDomains[d].description,
|
|
41
|
+
keywords: startupDomains[d].keywords,
|
|
42
|
+
toolIndex: startupDomains[d].toolIndex,
|
|
43
|
+
}));
|
|
44
|
+
const onDemand = domainNames.map((d) => ({
|
|
45
|
+
domain: d,
|
|
46
|
+
loaded: loaded.has(d),
|
|
47
|
+
alwaysLoaded: false,
|
|
48
|
+
description: domains[d].description,
|
|
49
|
+
keywords: domains[d].keywords,
|
|
50
|
+
toolIndex: domains[d].toolIndex,
|
|
51
|
+
}));
|
|
52
|
+
return successResult({ domains: [...alwaysLoaded, ...onDemand] });
|
|
53
|
+
}
|
|
54
|
+
// action === "load"
|
|
55
|
+
if (!params.domain) {
|
|
56
|
+
return validationError("domain is required for load action");
|
|
57
|
+
}
|
|
58
|
+
if (params.domain !== "all" && !domainNames.includes(params.domain)) {
|
|
59
|
+
return validationError(`Unknown domain '${params.domain}'. Available: ${domainNames.join(", ")}, all`);
|
|
60
|
+
}
|
|
61
|
+
const toLoad = params.domain === "all"
|
|
62
|
+
? domainNames.filter((d) => !loaded.has(d))
|
|
63
|
+
: loaded.has(params.domain)
|
|
64
|
+
? []
|
|
65
|
+
: [params.domain];
|
|
66
|
+
if (toLoad.length === 0) {
|
|
67
|
+
const msg = params.domain === "all"
|
|
68
|
+
? "All domains already loaded."
|
|
69
|
+
: `Domain '${params.domain}' is already loaded.`;
|
|
70
|
+
return successResult({ message: msg, loaded: [...loaded] });
|
|
71
|
+
}
|
|
72
|
+
for (const d of toLoad) {
|
|
73
|
+
domains[d].register();
|
|
74
|
+
loaded.add(d);
|
|
75
|
+
}
|
|
76
|
+
server.sendToolListChanged();
|
|
77
|
+
return successResult({
|
|
78
|
+
message: `Loaded ${toLoad.length} domain(s): ${toLoad.join(", ")}`,
|
|
79
|
+
loaded: [...loaded],
|
|
80
|
+
});
|
|
81
|
+
}));
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=discoverHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discoverHandler.js","sourceRoot":"","sources":["../../src/handlers/discoverHandler.ts"],"names":[],"mappings":"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"}
|