coalesce-transform-mcp 0.3.0 → 0.4.2
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 +74 -3
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +6 -2
- package/dist/client.js.map +1 -1
- package/dist/coalesce/api/environments.d.ts +0 -12
- package/dist/coalesce/api/environments.d.ts.map +1 -1
- package/dist/coalesce/api/environments.js +0 -4
- package/dist/coalesce/api/environments.js.map +1 -1
- package/dist/coalesce/api/jobs.d.ts +3 -5
- package/dist/coalesce/api/jobs.d.ts.map +1 -1
- package/dist/coalesce/api/jobs.js +3 -6
- package/dist/coalesce/api/jobs.js.map +1 -1
- package/dist/coalesce/api/nodes.d.ts +3 -3
- package/dist/coalesce/api/nodes.d.ts.map +1 -1
- package/dist/coalesce/api/nodes.js +6 -4
- package/dist/coalesce/api/nodes.js.map +1 -1
- package/dist/coalesce/api/runs.d.ts.map +1 -1
- package/dist/coalesce/api/runs.js +11 -1
- package/dist/coalesce/api/runs.js.map +1 -1
- package/dist/coalesce/api/scan.d.ts +14 -0
- package/dist/coalesce/api/scan.d.ts.map +1 -0
- package/dist/coalesce/api/scan.js +64 -0
- package/dist/coalesce/api/scan.js.map +1 -0
- package/dist/coalesce/api/subgraphs.d.ts +3 -2
- package/dist/coalesce/api/subgraphs.d.ts.map +1 -1
- package/dist/coalesce/api/subgraphs.js +3 -2
- package/dist/coalesce/api/subgraphs.js.map +1 -1
- package/dist/coalesce/run-schemas.d.ts.map +1 -1
- package/dist/coalesce/run-schemas.js +26 -16
- package/dist/coalesce/run-schemas.js.map +1 -1
- package/dist/coalesce/tool-response.d.ts +1 -13
- package/dist/coalesce/tool-response.d.ts.map +1 -1
- package/dist/coalesce/tool-response.js +20 -6
- package/dist/coalesce/tool-response.js.map +1 -1
- package/dist/coalesce/tool-schemas.d.ts +1 -2
- package/dist/coalesce/tool-schemas.d.ts.map +1 -1
- package/dist/coalesce/tool-schemas.js +368 -5
- package/dist/coalesce/tool-schemas.js.map +1 -1
- package/dist/coalesce/types.d.ts +8 -0
- package/dist/coalesce/types.d.ts.map +1 -1
- package/dist/coalesce/types.js +3 -1
- package/dist/coalesce/types.js.map +1 -1
- package/dist/constants.d.ts +18 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +21 -0
- package/dist/constants.js.map +1 -0
- package/dist/mcp/cache.d.ts +2 -1
- package/dist/mcp/cache.d.ts.map +1 -1
- package/dist/mcp/cache.js +122 -138
- package/dist/mcp/cache.js.map +1 -1
- package/dist/mcp/environments.d.ts +2 -1
- package/dist/mcp/environments.d.ts.map +1 -1
- package/dist/mcp/environments.js +56 -112
- package/dist/mcp/environments.js.map +1 -1
- package/dist/mcp/git-accounts.d.ts +2 -1
- package/dist/mcp/git-accounts.d.ts.map +1 -1
- package/dist/mcp/git-accounts.js +74 -96
- package/dist/mcp/git-accounts.js.map +1 -1
- package/dist/mcp/jobs.d.ts +2 -1
- package/dist/mcp/jobs.d.ts.map +1 -1
- package/dist/mcp/jobs.js +68 -122
- package/dist/mcp/jobs.js.map +1 -1
- package/dist/mcp/lineage.d.ts +5 -0
- package/dist/mcp/lineage.d.ts.map +1 -0
- package/dist/mcp/lineage.js +410 -0
- package/dist/mcp/lineage.js.map +1 -0
- package/dist/mcp/node-type-corpus.d.ts +2 -1
- package/dist/mcp/node-type-corpus.d.ts.map +1 -1
- package/dist/mcp/node-type-corpus.js +148 -151
- package/dist/mcp/node-type-corpus.js.map +1 -1
- package/dist/mcp/nodes.d.ts +2 -1
- package/dist/mcp/nodes.d.ts.map +1 -1
- package/dist/mcp/nodes.js +358 -464
- package/dist/mcp/nodes.js.map +1 -1
- package/dist/mcp/pipelines.d.ts +2 -1
- package/dist/mcp/pipelines.d.ts.map +1 -1
- package/dist/mcp/pipelines.js +514 -314
- package/dist/mcp/pipelines.js.map +1 -1
- package/dist/mcp/projects.d.ts +2 -1
- package/dist/mcp/projects.d.ts.map +1 -1
- package/dist/mcp/projects.js +66 -100
- package/dist/mcp/projects.js.map +1 -1
- package/dist/mcp/repo-node-types.d.ts +2 -1
- package/dist/mcp/repo-node-types.d.ts.map +1 -1
- package/dist/mcp/repo-node-types.js +92 -121
- package/dist/mcp/repo-node-types.js.map +1 -1
- package/dist/mcp/runs.d.ts +3 -2
- package/dist/mcp/runs.d.ts.map +1 -1
- package/dist/mcp/runs.js +93 -148
- package/dist/mcp/runs.js.map +1 -1
- package/dist/mcp/skills.d.ts +13 -0
- package/dist/mcp/skills.d.ts.map +1 -0
- package/dist/mcp/skills.js +85 -0
- package/dist/mcp/skills.js.map +1 -0
- package/dist/mcp/subgraphs.d.ts +2 -1
- package/dist/mcp/subgraphs.d.ts.map +1 -1
- package/dist/mcp/subgraphs.js +61 -98
- package/dist/mcp/subgraphs.js.map +1 -1
- package/dist/mcp/tool-helpers.d.ts +37 -0
- package/dist/mcp/tool-helpers.d.ts.map +1 -0
- package/dist/mcp/tool-helpers.js +82 -0
- package/dist/mcp/tool-helpers.js.map +1 -0
- package/dist/mcp/users.d.ts +2 -1
- package/dist/mcp/users.d.ts.map +1 -1
- package/dist/mcp/users.js +92 -145
- package/dist/mcp/users.js.map +1 -1
- package/dist/mcp/workshop.d.ts +2 -1
- package/dist/mcp/workshop.d.ts.map +1 -1
- package/dist/mcp/workshop.js +66 -101
- package/dist/mcp/workshop.js.map +1 -1
- package/dist/mcp/workspaces.d.ts +2 -1
- package/dist/mcp/workspaces.d.ts.map +1 -1
- package/dist/mcp/workspaces.js +19 -34
- package/dist/mcp/workspaces.js.map +1 -1
- package/dist/prompts/index.d.ts.map +1 -1
- package/dist/prompts/index.js +85 -0
- package/dist/prompts/index.js.map +1 -1
- package/dist/resources/context/pipeline-workshop-guide.md +1 -1
- package/dist/resources/context/tool-usage.md +7 -0
- package/dist/resources/index.d.ts +13 -0
- package/dist/resources/index.d.ts.map +1 -1
- package/dist/resources/index.js +105 -5
- package/dist/resources/index.js.map +1 -1
- package/dist/schemas/node-payloads.d.ts +2 -2
- package/dist/server.d.ts +2 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +158 -41
- package/dist/server.js.map +1 -1
- package/dist/services/cache/snapshots.d.ts.map +1 -1
- package/dist/services/cache/snapshots.js +9 -5
- package/dist/services/cache/snapshots.js.map +1 -1
- package/dist/services/config/schema-resolver.d.ts.map +1 -1
- package/dist/services/config/schema-resolver.js +3 -6
- package/dist/services/config/schema-resolver.js.map +1 -1
- package/dist/services/lineage/lineage-cache.d.ts +53 -0
- package/dist/services/lineage/lineage-cache.d.ts.map +1 -0
- package/dist/services/lineage/lineage-cache.js +335 -0
- package/dist/services/lineage/lineage-cache.js.map +1 -0
- package/dist/services/lineage/lineage-documentation.d.ts +29 -0
- package/dist/services/lineage/lineage-documentation.d.ts.map +1 -0
- package/dist/services/lineage/lineage-documentation.js +80 -0
- package/dist/services/lineage/lineage-documentation.js.map +1 -0
- package/dist/services/lineage/lineage-propagation.d.ts +47 -0
- package/dist/services/lineage/lineage-propagation.d.ts.map +1 -0
- package/dist/services/lineage/lineage-propagation.js +176 -0
- package/dist/services/lineage/lineage-propagation.js.map +1 -0
- package/dist/services/lineage/lineage-search.d.ts +33 -0
- package/dist/services/lineage/lineage-search.d.ts.map +1 -0
- package/dist/services/lineage/lineage-search.js +133 -0
- package/dist/services/lineage/lineage-search.js.map +1 -0
- package/dist/services/lineage/lineage-traversal.d.ts +34 -0
- package/dist/services/lineage/lineage-traversal.d.ts.map +1 -0
- package/dist/services/lineage/lineage-traversal.js +283 -0
- package/dist/services/lineage/lineage-traversal.js.map +1 -0
- package/dist/services/pipelines/clause-extraction.d.ts +3 -0
- package/dist/services/pipelines/clause-extraction.d.ts.map +1 -0
- package/dist/services/pipelines/clause-extraction.js +27 -0
- package/dist/services/pipelines/clause-extraction.js.map +1 -0
- package/dist/services/pipelines/column-helpers.d.ts +8 -0
- package/dist/services/pipelines/column-helpers.d.ts.map +1 -0
- package/dist/services/pipelines/column-helpers.js +125 -0
- package/dist/services/pipelines/column-helpers.js.map +1 -0
- package/dist/services/pipelines/cte-parsing.d.ts +29 -0
- package/dist/services/pipelines/cte-parsing.d.ts.map +1 -0
- package/dist/services/pipelines/cte-parsing.js +160 -0
- package/dist/services/pipelines/cte-parsing.js.map +1 -0
- package/dist/services/pipelines/cte-planning.d.ts +22 -0
- package/dist/services/pipelines/cte-planning.d.ts.map +1 -0
- package/dist/services/pipelines/cte-planning.js +206 -0
- package/dist/services/pipelines/cte-planning.js.map +1 -0
- package/dist/services/pipelines/execution.d.ts.map +1 -1
- package/dist/services/pipelines/execution.js +0 -1
- package/dist/services/pipelines/execution.js.map +1 -1
- package/dist/services/pipelines/intent-parsing.d.ts +24 -0
- package/dist/services/pipelines/intent-parsing.d.ts.map +1 -0
- package/dist/services/pipelines/intent-parsing.js +245 -0
- package/dist/services/pipelines/intent-parsing.js.map +1 -0
- package/dist/services/pipelines/intent-resolution.d.ts +24 -0
- package/dist/services/pipelines/intent-resolution.d.ts.map +1 -0
- package/dist/services/pipelines/intent-resolution.js +141 -0
- package/dist/services/pipelines/intent-resolution.js.map +1 -0
- package/dist/services/pipelines/intent.d.ts +4 -45
- package/dist/services/pipelines/intent.d.ts.map +1 -1
- package/dist/services/pipelines/intent.js +14 -408
- package/dist/services/pipelines/intent.js.map +1 -1
- package/dist/services/pipelines/node-type-candidates.d.ts +6 -0
- package/dist/services/pipelines/node-type-candidates.d.ts.map +1 -0
- package/dist/services/pipelines/node-type-candidates.js +165 -0
- package/dist/services/pipelines/node-type-candidates.js.map +1 -0
- package/dist/services/pipelines/node-type-intent.d.ts +1 -5
- package/dist/services/pipelines/node-type-intent.d.ts.map +1 -1
- package/dist/services/pipelines/node-type-intent.js +1 -5
- package/dist/services/pipelines/node-type-intent.js.map +1 -1
- package/dist/services/pipelines/node-type-scoring.d.ts +13 -0
- package/dist/services/pipelines/node-type-scoring.d.ts.map +1 -0
- package/dist/services/pipelines/node-type-scoring.js +322 -0
- package/dist/services/pipelines/node-type-scoring.js.map +1 -0
- package/dist/services/pipelines/node-type-selection.d.ts +22 -2
- package/dist/services/pipelines/node-type-selection.d.ts.map +1 -1
- package/dist/services/pipelines/node-type-selection.js +16 -538
- package/dist/services/pipelines/node-type-selection.js.map +1 -1
- package/dist/services/pipelines/plan-builder.d.ts +33 -0
- package/dist/services/pipelines/plan-builder.d.ts.map +1 -0
- package/dist/services/pipelines/plan-builder.js +224 -0
- package/dist/services/pipelines/plan-builder.js.map +1 -0
- package/dist/services/pipelines/planning-types.d.ts +543 -0
- package/dist/services/pipelines/planning-types.d.ts.map +1 -0
- package/dist/services/pipelines/planning-types.js +85 -0
- package/dist/services/pipelines/planning-types.js.map +1 -0
- package/dist/services/pipelines/planning.d.ts +8 -537
- package/dist/services/pipelines/planning.d.ts.map +1 -1
- package/dist/services/pipelines/planning.js +10 -1956
- package/dist/services/pipelines/planning.js.map +1 -1
- package/dist/services/pipelines/review.d.ts.map +1 -1
- package/dist/services/pipelines/review.js +3 -8
- package/dist/services/pipelines/review.js.map +1 -1
- package/dist/services/pipelines/select-parsing.d.ts +7 -0
- package/dist/services/pipelines/select-parsing.d.ts.map +1 -0
- package/dist/services/pipelines/select-parsing.js +185 -0
- package/dist/services/pipelines/select-parsing.js.map +1 -0
- package/dist/services/pipelines/source-parsing.d.ts +8 -0
- package/dist/services/pipelines/source-parsing.d.ts.map +1 -0
- package/dist/services/pipelines/source-parsing.js +151 -0
- package/dist/services/pipelines/source-parsing.js.map +1 -0
- package/dist/services/pipelines/sql-parsing.d.ts +8 -0
- package/dist/services/pipelines/sql-parsing.d.ts.map +1 -0
- package/dist/services/pipelines/sql-parsing.js +9 -0
- package/dist/services/pipelines/sql-parsing.js.map +1 -0
- package/dist/services/pipelines/sql-tokenizer.d.ts +42 -0
- package/dist/services/pipelines/sql-tokenizer.d.ts.map +1 -0
- package/dist/services/pipelines/sql-tokenizer.js +493 -0
- package/dist/services/pipelines/sql-tokenizer.js.map +1 -0
- package/dist/services/pipelines/sql-utils.d.ts +30 -0
- package/dist/services/pipelines/sql-utils.d.ts.map +1 -0
- package/dist/services/pipelines/sql-utils.js +62 -0
- package/dist/services/pipelines/sql-utils.js.map +1 -0
- package/dist/services/pipelines/workshop.d.ts.map +1 -1
- package/dist/services/pipelines/workshop.js +53 -25
- package/dist/services/pipelines/workshop.js.map +1 -1
- package/dist/services/pipelines/workspace-resolution.d.ts +18 -0
- package/dist/services/pipelines/workspace-resolution.d.ts.map +1 -0
- package/dist/services/pipelines/workspace-resolution.js +279 -0
- package/dist/services/pipelines/workspace-resolution.js.map +1 -0
- package/dist/services/runs/diagnostics.d.ts.map +1 -1
- package/dist/services/runs/diagnostics.js +3 -8
- package/dist/services/runs/diagnostics.js.map +1 -1
- package/dist/services/shared/elicitation.d.ts +14 -0
- package/dist/services/shared/elicitation.d.ts.map +1 -0
- package/dist/services/shared/elicitation.js +56 -0
- package/dist/services/shared/elicitation.js.map +1 -0
- package/dist/services/workspace/node-creation.d.ts.map +1 -1
- package/dist/services/workspace/node-creation.js +5 -1
- package/dist/services/workspace/node-creation.js.map +1 -1
- package/dist/services/workspace/node-update-helpers.d.ts.map +1 -1
- package/dist/services/workspace/node-update-helpers.js +3 -8
- package/dist/services/workspace/node-update-helpers.js.map +1 -1
- package/dist/utils.d.ts +11 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +20 -1
- package/dist/utils.js.map +1 -1
- package/dist/workflows/get-environment-health.d.ts +49 -0
- package/dist/workflows/get-environment-health.d.ts.map +1 -0
- package/dist/workflows/get-environment-health.js +310 -0
- package/dist/workflows/get-environment-health.js.map +1 -0
- package/dist/workflows/get-environment-overview.d.ts +2 -1
- package/dist/workflows/get-environment-overview.d.ts.map +1 -1
- package/dist/workflows/get-environment-overview.js +13 -19
- package/dist/workflows/get-environment-overview.js.map +1 -1
- package/dist/workflows/get-run-details.d.ts +2 -2
- package/dist/workflows/get-run-details.d.ts.map +1 -1
- package/dist/workflows/get-run-details.js +14 -19
- package/dist/workflows/get-run-details.js.map +1 -1
- package/dist/workflows/retry-and-wait.d.ts.map +1 -1
- package/dist/workflows/retry-and-wait.js +3 -2
- package/dist/workflows/retry-and-wait.js.map +1 -1
- package/dist/workflows/run-and-wait.d.ts.map +1 -1
- package/dist/workflows/run-and-wait.js +3 -2
- package/dist/workflows/run-and-wait.js.map +1 -1
- package/package.json +2 -2
package/dist/mcp/cache.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/mcp/cache.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/mcp/cache.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAML,KAAK,cAAc,EACpB,MAAM,sBAAsB,CAAC;AA6B9B,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,cAAc,GACrB,cAAc,EAAE,CA2IlB"}
|
package/dist/mcp/cache.js
CHANGED
|
@@ -2,14 +2,16 @@ import { rmSync, existsSync, readdirSync, statSync } from "node:fs";
|
|
|
2
2
|
import { join } from "node:path";
|
|
3
3
|
import { z } from "zod";
|
|
4
4
|
import { DESTRUCTIVE_ANNOTATIONS, IDEMPOTENT_WRITE_ANNOTATIONS, buildJsonToolResponse, handleToolError, getToolOutputSchema, } from "../coalesce/types.js";
|
|
5
|
+
import { requireDestructiveConfirmation } from "../services/shared/elicitation.js";
|
|
5
6
|
import { getCacheDir, CACHE_DIR_NAME } from "../cache-dir.js";
|
|
6
7
|
import { cacheEnvironmentNodes, cacheOrgUsers, cacheRuns, cacheWorkspaceNodes, } from "../services/cache/snapshots.js";
|
|
8
|
+
import { defineSimpleTool } from "./tool-helpers.js";
|
|
7
9
|
const SnapshotPaginationShape = {
|
|
8
10
|
pageSize: z
|
|
9
11
|
.number()
|
|
10
12
|
.int()
|
|
11
13
|
.positive()
|
|
12
|
-
.max(
|
|
14
|
+
.max(500)
|
|
13
15
|
.optional()
|
|
14
16
|
.describe("Optional API page size used while collecting the full snapshot. Defaults to 250."),
|
|
15
17
|
orderBy: z
|
|
@@ -21,149 +23,131 @@ const SnapshotPaginationShape = {
|
|
|
21
23
|
.optional()
|
|
22
24
|
.describe("Optional sort direction used for paginated collection."),
|
|
23
25
|
};
|
|
24
|
-
export function
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
});
|
|
96
|
-
server.registerTool("cache_org_users", {
|
|
97
|
-
title: "Cache Org Users",
|
|
98
|
-
description: "Fetch and cache all organization users to disk for efficient repeated access.\n\nArgs:\n - pageSize (number, optional): API page size for collection. Defaults to 250, max 1000\n - orderBy (string, optional): Sort field for paginated collection. Defaults to id\n - orderByDirection ('asc'|'desc', optional): Sort direction\n\nReturns:\n Cache metadata with resourceUri (coalesce://cache/...) for accessing the cached data via MCP resource read.",
|
|
99
|
-
inputSchema: z.object({
|
|
100
|
-
...SnapshotPaginationShape,
|
|
101
|
-
}),
|
|
102
|
-
outputSchema: getToolOutputSchema("cache_org_users"),
|
|
103
|
-
annotations: IDEMPOTENT_WRITE_ANNOTATIONS,
|
|
104
|
-
}, async (params) => {
|
|
105
|
-
try {
|
|
106
|
-
const result = await cacheOrgUsers(client, params);
|
|
107
|
-
return buildJsonToolResponse("cache_org_users", result);
|
|
108
|
-
}
|
|
109
|
-
catch (error) {
|
|
110
|
-
return handleToolError(error);
|
|
111
|
-
}
|
|
112
|
-
});
|
|
113
|
-
server.registerTool("clear_data_cache", {
|
|
114
|
-
title: "Clear Data Cache",
|
|
115
|
-
description: "Clear the MCP server's local data cache. Removes all cached artifacts from disk.\n\nReturns:\n { deleted: boolean, fileCount: number, totalBytes: number, message: string }",
|
|
116
|
-
inputSchema: z.object({}),
|
|
117
|
-
outputSchema: getToolOutputSchema("clear_data_cache"),
|
|
118
|
-
annotations: DESTRUCTIVE_ANNOTATIONS,
|
|
119
|
-
}, async () => {
|
|
120
|
-
try {
|
|
121
|
-
const cacheDir = getCacheDir();
|
|
122
|
-
if (!existsSync(cacheDir)) {
|
|
123
|
-
return buildJsonToolResponse("clear_data_cache", {
|
|
124
|
-
deleted: false,
|
|
125
|
-
message: `No cache directory found at ${CACHE_DIR_NAME}/`,
|
|
126
|
-
});
|
|
127
|
-
}
|
|
128
|
-
// Count files and measure size before deleting
|
|
129
|
-
let fileCount = 0;
|
|
130
|
-
let totalBytes = 0;
|
|
131
|
-
function countFiles(dir) {
|
|
26
|
+
export function defineCacheTools(server, client) {
|
|
27
|
+
return [
|
|
28
|
+
defineSimpleTool(client, "cache_workspace_nodes", {
|
|
29
|
+
title: "Cache Workspace Nodes",
|
|
30
|
+
description: "Fetch and cache all workspace nodes to disk for efficient repeated access. Useful when working with large workspaces where inline responses exceed the auto-cache threshold.\n\nArgs:\n - workspaceID (string, required): The workspace ID\n - detail (boolean, optional): Fetch expanded node details. Defaults to true\n - pageSize (number, optional): API page size for collection. Defaults to 250, max 500\n - orderBy (string, optional): Sort field for paginated collection. Defaults to id\n - orderByDirection ('asc'|'desc', optional): Sort direction\n\nReturns:\n Cache metadata with resourceUri (coalesce://cache/...) for accessing the cached data via MCP resource read.",
|
|
31
|
+
inputSchema: z.object({
|
|
32
|
+
workspaceID: z.string().describe("The workspace ID"),
|
|
33
|
+
detail: z
|
|
34
|
+
.boolean()
|
|
35
|
+
.optional()
|
|
36
|
+
.describe("When true, fetches expanded node details. Defaults to true."),
|
|
37
|
+
...SnapshotPaginationShape,
|
|
38
|
+
}),
|
|
39
|
+
annotations: IDEMPOTENT_WRITE_ANNOTATIONS,
|
|
40
|
+
}, cacheWorkspaceNodes),
|
|
41
|
+
defineSimpleTool(client, "cache_environment_nodes", {
|
|
42
|
+
title: "Cache Environment Nodes",
|
|
43
|
+
description: "Fetch and cache all environment nodes to disk for efficient repeated access.\n\nArgs:\n - environmentID (string, required): The environment ID\n - detail (boolean, optional): Fetch expanded node details. Defaults to true\n - pageSize (number, optional): API page size for collection. Defaults to 250, max 500\n - orderBy (string, optional): Sort field for paginated collection. Defaults to id\n - orderByDirection ('asc'|'desc', optional): Sort direction\n\nReturns:\n Cache metadata with resourceUri (coalesce://cache/...) for accessing the cached data via MCP resource read.",
|
|
44
|
+
inputSchema: z.object({
|
|
45
|
+
environmentID: z.string().describe("The environment ID"),
|
|
46
|
+
detail: z
|
|
47
|
+
.boolean()
|
|
48
|
+
.optional()
|
|
49
|
+
.describe("When true, fetches expanded node details. Defaults to true."),
|
|
50
|
+
...SnapshotPaginationShape,
|
|
51
|
+
}),
|
|
52
|
+
annotations: IDEMPOTENT_WRITE_ANNOTATIONS,
|
|
53
|
+
}, cacheEnvironmentNodes),
|
|
54
|
+
defineSimpleTool(client, "cache_runs", {
|
|
55
|
+
title: "Cache Runs",
|
|
56
|
+
description: "Fetch and cache runs to disk with optional filters for efficient repeated access.\n\nArgs:\n - runType (enum, optional): Filter by 'deploy' or 'refresh'\n - runStatus (enum, optional): Filter by 'completed' | 'failed' | 'canceled' | 'running' | 'waitingToRun'\n - environmentID (string, optional): Filter by environment ID\n - detail (boolean, optional): Fetch expanded run details. Defaults to false\n - pageSize (number, optional): API page size for collection. Defaults to 250, max 500\n - orderBy (string, optional): Sort field for paginated collection. Defaults to id\n - orderByDirection ('asc'|'desc', optional): Sort direction\n\nReturns:\n Cache metadata with resourceUri (coalesce://cache/...) for accessing the cached data via MCP resource read.",
|
|
57
|
+
inputSchema: z.object({
|
|
58
|
+
runType: z.enum(["deploy", "refresh"]).optional().describe("Optional run type filter"),
|
|
59
|
+
runStatus: z
|
|
60
|
+
.enum(["completed", "failed", "canceled", "running", "waitingToRun"])
|
|
61
|
+
.optional()
|
|
62
|
+
.describe("Optional run status filter"),
|
|
63
|
+
environmentID: z.string().optional().describe("Optional environment ID filter"),
|
|
64
|
+
detail: z
|
|
65
|
+
.boolean()
|
|
66
|
+
.optional()
|
|
67
|
+
.describe("When true, fetches expanded run details. Defaults to false."),
|
|
68
|
+
...SnapshotPaginationShape,
|
|
69
|
+
}),
|
|
70
|
+
annotations: IDEMPOTENT_WRITE_ANNOTATIONS,
|
|
71
|
+
}, cacheRuns),
|
|
72
|
+
defineSimpleTool(client, "cache_org_users", {
|
|
73
|
+
title: "Cache Org Users",
|
|
74
|
+
description: "Fetch and cache all organization users to disk for efficient repeated access.\n\nArgs:\n - pageSize (number, optional): API page size for collection. Defaults to 250, max 500\n - orderBy (string, optional): Sort field for paginated collection. Defaults to id\n - orderByDirection ('asc'|'desc', optional): Sort direction\n\nReturns:\n Cache metadata with resourceUri (coalesce://cache/...) for accessing the cached data via MCP resource read.",
|
|
75
|
+
inputSchema: z.object({
|
|
76
|
+
...SnapshotPaginationShape,
|
|
77
|
+
}),
|
|
78
|
+
annotations: IDEMPOTENT_WRITE_ANNOTATIONS,
|
|
79
|
+
}, cacheOrgUsers),
|
|
80
|
+
// clear_data_cache has complex inline logic (file counting + rmSync)
|
|
81
|
+
// that doesn't fit the simple helper pattern.
|
|
82
|
+
// NOTE: The inline handler requires `server` for elicitation — do NOT rename to `_server`.
|
|
83
|
+
["clear_data_cache",
|
|
84
|
+
{
|
|
85
|
+
title: "Clear Data Cache",
|
|
86
|
+
description: "Clear the MCP server's local data cache. Removes all cached artifacts from disk.\n\nArgs:\n - confirmed (boolean, optional): Set to true after the user explicitly confirms cache clearing\n\nReturns:\n { deleted: boolean, fileCount: number, totalBytes: number, message: string }",
|
|
87
|
+
inputSchema: z.object({
|
|
88
|
+
confirmed: z
|
|
89
|
+
.boolean()
|
|
90
|
+
.optional()
|
|
91
|
+
.describe("Set to true after the user explicitly confirms the cache clearing."),
|
|
92
|
+
}),
|
|
93
|
+
outputSchema: getToolOutputSchema("clear_data_cache"),
|
|
94
|
+
annotations: DESTRUCTIVE_ANNOTATIONS,
|
|
95
|
+
},
|
|
96
|
+
async (params) => {
|
|
132
97
|
try {
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
98
|
+
const approvalResponse = await requireDestructiveConfirmation(server, "clear_data_cache", "This will delete all cached data from disk. Cached snapshots will need to be re-fetched.", params.confirmed);
|
|
99
|
+
if (approvalResponse)
|
|
100
|
+
return approvalResponse;
|
|
101
|
+
const cacheDir = getCacheDir();
|
|
102
|
+
if (!existsSync(cacheDir)) {
|
|
103
|
+
return buildJsonToolResponse("clear_data_cache", {
|
|
104
|
+
deleted: false,
|
|
105
|
+
message: `No cache directory found at ${CACHE_DIR_NAME}/`,
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
// Count files and measure size before deleting
|
|
109
|
+
let fileCount = 0;
|
|
110
|
+
let totalBytes = 0;
|
|
111
|
+
let countErrors = 0;
|
|
112
|
+
function countFiles(dir) {
|
|
113
|
+
try {
|
|
114
|
+
for (const entry of readdirSync(dir, { withFileTypes: true })) {
|
|
115
|
+
const entryPath = join(dir, entry.name);
|
|
116
|
+
if (entry.isDirectory()) {
|
|
117
|
+
countFiles(entryPath);
|
|
118
|
+
}
|
|
119
|
+
else if (entry.isFile()) {
|
|
120
|
+
fileCount++;
|
|
121
|
+
try {
|
|
122
|
+
totalBytes += statSync(entryPath).size;
|
|
123
|
+
}
|
|
124
|
+
catch {
|
|
125
|
+
countErrors++;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
145
128
|
}
|
|
146
129
|
}
|
|
130
|
+
catch {
|
|
131
|
+
countErrors++;
|
|
132
|
+
}
|
|
147
133
|
}
|
|
134
|
+
countFiles(cacheDir);
|
|
135
|
+
rmSync(cacheDir, { recursive: true, force: true });
|
|
136
|
+
const sizeMB = (totalBytes / (1024 * 1024)).toFixed(2);
|
|
137
|
+
return buildJsonToolResponse("clear_data_cache", {
|
|
138
|
+
deleted: true,
|
|
139
|
+
fileCount,
|
|
140
|
+
totalBytes,
|
|
141
|
+
sizeMB: `${sizeMB} MB`,
|
|
142
|
+
message: `Deleted ${fileCount} files (${sizeMB} MB) from ${CACHE_DIR_NAME}/`,
|
|
143
|
+
...(countErrors > 0 ? { countWarning: `${countErrors} file(s)/dir(s) could not be measured — reported totals may be approximate` } : {}),
|
|
144
|
+
});
|
|
148
145
|
}
|
|
149
|
-
catch {
|
|
150
|
-
|
|
146
|
+
catch (error) {
|
|
147
|
+
return handleToolError(error);
|
|
151
148
|
}
|
|
152
149
|
}
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
const sizeMB = (totalBytes / (1024 * 1024)).toFixed(2);
|
|
156
|
-
return buildJsonToolResponse("clear_data_cache", {
|
|
157
|
-
deleted: true,
|
|
158
|
-
fileCount,
|
|
159
|
-
totalBytes,
|
|
160
|
-
sizeMB: `${sizeMB} MB`,
|
|
161
|
-
message: `Deleted ${fileCount} files (${sizeMB} MB) from ${CACHE_DIR_NAME}/`,
|
|
162
|
-
});
|
|
163
|
-
}
|
|
164
|
-
catch (error) {
|
|
165
|
-
return handleToolError(error);
|
|
166
|
-
}
|
|
167
|
-
});
|
|
150
|
+
],
|
|
151
|
+
];
|
|
168
152
|
}
|
|
169
153
|
//# sourceMappingURL=cache.js.map
|
package/dist/mcp/cache.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/mcp/cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACpE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EACL,uBAAuB,EACvB,4BAA4B,EAC5B,qBAAqB,EACrB,eAAe,EACf,mBAAmB,
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/mcp/cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
2
|
import type { CoalesceClient } from "../client.js";
|
|
3
|
-
|
|
3
|
+
import { type ToolDefinition } from "../coalesce/types.js";
|
|
4
|
+
export declare function defineEnvironmentTools(server: McpServer, client: CoalesceClient): ToolDefinition[];
|
|
4
5
|
//# sourceMappingURL=environments.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"environments.d.ts","sourceRoot":"","sources":["../../src/mcp/environments.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"environments.d.ts","sourceRoot":"","sources":["../../src/mcp/environments.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAOnD,OAAO,EAKL,KAAK,cAAc,EACpB,MAAM,sBAAsB,CAAC;AAG9B,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,cAAc,GACrB,cAAc,EAAE,CA8DlB"}
|
package/dist/mcp/environments.js
CHANGED
|
@@ -1,117 +1,61 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { listEnvironments, getEnvironment, createEnvironment,
|
|
3
|
-
import { PaginationParams,
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
projectID: z.string().describe("The project ID to create the environment in"),
|
|
44
|
-
name: z.string().describe("Name for the new environment"),
|
|
45
|
-
oauthEnabled: z.boolean().optional().describe("Whether OAuth is enabled. Defaults to false."),
|
|
46
|
-
devEnv: z.boolean().optional().describe("Defaults to false."),
|
|
47
|
-
connectionAccount: z.string().optional().describe("Optional connection account identifier"),
|
|
48
|
-
runTimeParameters: z.record(z.unknown()).optional().describe("Optional runtime parameters"),
|
|
49
|
-
tagColors: z
|
|
50
|
-
.object({
|
|
51
|
-
backgroundColor: z.string().optional(),
|
|
52
|
-
textColor: z.string().optional(),
|
|
53
|
-
})
|
|
54
|
-
.optional()
|
|
55
|
-
.describe("Optional tag colors for the environment"),
|
|
56
|
-
}),
|
|
57
|
-
outputSchema: getToolOutputSchema("create_environment"),
|
|
58
|
-
annotations: WRITE_ANNOTATIONS,
|
|
59
|
-
}, async (params) => {
|
|
60
|
-
try {
|
|
61
|
-
// Coalesce API expects `project` in the body
|
|
2
|
+
import { listEnvironments, getEnvironment, createEnvironment, deleteEnvironment, } from "../coalesce/api/environments.js";
|
|
3
|
+
import { PaginationParams, READ_ONLY_ANNOTATIONS, WRITE_ANNOTATIONS, DESTRUCTIVE_ANNOTATIONS, } from "../coalesce/types.js";
|
|
4
|
+
import { defineSimpleTool, defineDestructiveTool } from "./tool-helpers.js";
|
|
5
|
+
export function defineEnvironmentTools(server, client) {
|
|
6
|
+
return [
|
|
7
|
+
defineSimpleTool(client, "list_environments", {
|
|
8
|
+
title: "List Environments",
|
|
9
|
+
description: "List all available Coalesce environments with optional pagination.\n\nReturns environment IDs, names, and configuration. Use this to discover environment IDs needed by run, node, and job tools.\n\nArgs:\n - limit (number, optional): Max results per page\n - startingFrom (string, optional): Pagination cursor from previous response\n - orderBy (string, optional): Sort field (requires startingFrom)\n - orderByDirection ('asc'|'desc', optional): Sort direction\n - detail (boolean, optional): Include expanded environment configuration\n\nReturns:\n { data: Environment[], next?: string, total?: number }\n\nUse get_environment for a single environment by ID.",
|
|
10
|
+
inputSchema: PaginationParams.extend({
|
|
11
|
+
detail: z.boolean().optional().describe("When true, returns expanded environment info"),
|
|
12
|
+
}),
|
|
13
|
+
annotations: READ_ONLY_ANNOTATIONS,
|
|
14
|
+
}, listEnvironments),
|
|
15
|
+
defineSimpleTool(client, "get_environment", {
|
|
16
|
+
title: "Get Environment",
|
|
17
|
+
description: "Get details of a specific Coalesce environment by ID.\n\nReturns full environment configuration including connection details, runtime parameters, and tag colors.\n\nArgs:\n - environmentID (string, required): The environment ID\n\nReturns:\n Full environment object with ID, name, project, connection settings, and configuration.",
|
|
18
|
+
inputSchema: z.object({
|
|
19
|
+
environmentID: z.string().describe("The environment ID"),
|
|
20
|
+
}),
|
|
21
|
+
annotations: READ_ONLY_ANNOTATIONS,
|
|
22
|
+
}, getEnvironment),
|
|
23
|
+
defineSimpleTool(client, "create_environment", {
|
|
24
|
+
title: "Create Environment",
|
|
25
|
+
description: "Create a new Coalesce environment within a project.\n\nArgs:\n - projectID (string, required): The project to create the environment in\n - name (string, required): Name for the new environment\n - oauthEnabled (boolean, optional): Enable OAuth (default: false)\n - devEnv (boolean, optional): Mark as development environment (default: false)\n - connectionAccount (string, optional): Connection account identifier\n - runTimeParameters (object, optional): Runtime parameters for the environment\n - tagColors (object, optional): UI tag colors { backgroundColor, textColor }\n\nReturns:\n Created environment object with assigned ID.",
|
|
26
|
+
inputSchema: z.object({
|
|
27
|
+
projectID: z.string().describe("The project ID to create the environment in"),
|
|
28
|
+
name: z.string().describe("Name for the new environment"),
|
|
29
|
+
oauthEnabled: z.boolean().optional().describe("Whether OAuth is enabled. Defaults to false."),
|
|
30
|
+
devEnv: z.boolean().optional().describe("Defaults to false."),
|
|
31
|
+
connectionAccount: z.string().optional().describe("Optional connection account identifier"),
|
|
32
|
+
runTimeParameters: z.record(z.unknown()).optional().describe("Optional runtime parameters"),
|
|
33
|
+
tagColors: z
|
|
34
|
+
.object({
|
|
35
|
+
backgroundColor: z.string().optional(),
|
|
36
|
+
textColor: z.string().optional(),
|
|
37
|
+
})
|
|
38
|
+
.optional()
|
|
39
|
+
.describe("Optional tag colors for the environment"),
|
|
40
|
+
}),
|
|
41
|
+
annotations: WRITE_ANNOTATIONS,
|
|
42
|
+
}, (client, params) => {
|
|
62
43
|
const { projectID, ...rest } = params;
|
|
63
|
-
|
|
64
|
-
return buildJsonToolResponse("create_environment", result);
|
|
65
|
-
}
|
|
66
|
-
catch (error) {
|
|
67
|
-
return handleToolError(error);
|
|
68
|
-
}
|
|
69
|
-
});
|
|
70
|
-
server.registerTool("update_environment", {
|
|
71
|
-
title: "Update Environment",
|
|
72
|
-
description: "Update an existing Coalesce environment. Partial update — only provided fields are changed.\n\nArgs:\n - environmentID (string, required): The environment ID to update\n - name (string, optional): Updated environment name\n - oauthEnabled (boolean, optional): Toggle OAuth\n - connectionAccount (string, optional): Updated connection account\n - runTimeParameters (object, optional): Updated runtime parameters\n - tagColors (object, optional): Updated UI tag colors\n\nReturns:\n Updated environment object.",
|
|
73
|
-
inputSchema: z.object({
|
|
74
|
-
environmentID: z.string().describe("The environment ID to update"),
|
|
75
|
-
name: z.string().optional().describe("Updated name for the environment"),
|
|
76
|
-
oauthEnabled: z.boolean().optional().describe("Whether OAuth is enabled"),
|
|
77
|
-
devEnv: z.boolean().optional().describe("Whether this is a dev environment"),
|
|
78
|
-
connectionAccount: z.string().optional().describe("Connection account identifier"),
|
|
79
|
-
runTimeParameters: z.record(z.unknown()).optional().describe("Runtime parameters"),
|
|
80
|
-
tagColors: z
|
|
81
|
-
.object({
|
|
82
|
-
backgroundColor: z.string().optional(),
|
|
83
|
-
textColor: z.string().optional(),
|
|
84
|
-
})
|
|
85
|
-
.optional()
|
|
86
|
-
.describe("Tag colors for the environment"),
|
|
87
|
-
}),
|
|
88
|
-
outputSchema: getToolOutputSchema("update_environment"),
|
|
89
|
-
annotations: IDEMPOTENT_WRITE_ANNOTATIONS,
|
|
90
|
-
}, async (params) => {
|
|
91
|
-
try {
|
|
92
|
-
const result = await updateEnvironment(client, params);
|
|
93
|
-
return buildJsonToolResponse("update_environment", result);
|
|
94
|
-
}
|
|
95
|
-
catch (error) {
|
|
96
|
-
return handleToolError(error);
|
|
97
|
-
}
|
|
98
|
-
});
|
|
99
|
-
server.registerTool("delete_environment", {
|
|
100
|
-
title: "Delete Environment",
|
|
101
|
-
description: "Permanently delete a Coalesce environment. This is destructive and cannot be undone.\n\nArgs:\n - environmentID (string, required): The environment ID to delete\n\nReturns:\n Confirmation message.",
|
|
102
|
-
inputSchema: z.object({
|
|
103
|
-
environmentID: z.string().describe("The environment ID to delete"),
|
|
44
|
+
return createEnvironment(client, { project: projectID, oauthEnabled: false, ...rest });
|
|
104
45
|
}),
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
46
|
+
defineDestructiveTool(server, client, "delete_environment", {
|
|
47
|
+
title: "Delete Environment",
|
|
48
|
+
description: "Permanently delete a Coalesce environment. This is destructive and cannot be undone.\n\nArgs:\n - environmentID (string, required): The environment ID to delete\n - confirmed (boolean, optional): Set to true after the user explicitly confirms deletion\n\nReturns:\n Confirmation message.",
|
|
49
|
+
inputSchema: z.object({
|
|
50
|
+
environmentID: z.string().describe("The environment ID to delete"),
|
|
51
|
+
confirmed: z
|
|
52
|
+
.boolean()
|
|
53
|
+
.optional()
|
|
54
|
+
.describe("Set to true after the user explicitly confirms the deletion."),
|
|
55
|
+
}),
|
|
56
|
+
annotations: DESTRUCTIVE_ANNOTATIONS,
|
|
57
|
+
confirmMessage: (params) => `This will permanently delete environment "${params.environmentID}". This cannot be undone.`,
|
|
58
|
+
}, deleteEnvironment),
|
|
59
|
+
];
|
|
116
60
|
}
|
|
117
61
|
//# sourceMappingURL=environments.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"environments.js","sourceRoot":"","sources":["../../src/mcp/environments.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,iBAAiB,
|
|
1
|
+
{"version":3,"file":"environments.js","sourceRoot":"","sources":["../../src/mcp/environments.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
2
|
import type { CoalesceClient } from "../client.js";
|
|
3
|
-
|
|
3
|
+
import { type ToolDefinition } from "../coalesce/types.js";
|
|
4
|
+
export declare function defineGitAccountTools(server: McpServer, client: CoalesceClient): ToolDefinition[];
|
|
4
5
|
//# sourceMappingURL=git-accounts.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-accounts.d.ts","sourceRoot":"","sources":["../../src/mcp/git-accounts.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"git-accounts.d.ts","sourceRoot":"","sources":["../../src/mcp/git-accounts.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAQnD,OAAO,EAKL,KAAK,cAAc,EACpB,MAAM,sBAAsB,CAAC;AAG9B,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,cAAc,GACrB,cAAc,EAAE,CAqFlB"}
|