coalesce-transform-mcp 0.2.3 → 0.4.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 +84 -2
- package/dist/client.d.ts +1 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +27 -3
- 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 +8 -3
- 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 +4 -1
- package/dist/mcp/runs.d.ts.map +1 -1
- package/dist/mcp/runs.js +94 -147
- 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 +173 -45
- 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/join-operations.d.ts +56 -0
- package/dist/services/workspace/join-operations.d.ts.map +1 -0
- package/dist/services/workspace/join-operations.js +303 -0
- package/dist/services/workspace/join-operations.js.map +1 -0
- package/dist/services/workspace/mutations.d.ts +3 -99
- package/dist/services/workspace/mutations.d.ts.map +1 -1
- package/dist/services/workspace/mutations.js +13 -1220
- package/dist/services/workspace/mutations.js.map +1 -1
- package/dist/services/workspace/node-creation.d.ts +48 -0
- package/dist/services/workspace/node-creation.d.ts.map +1 -0
- package/dist/services/workspace/node-creation.js +448 -0
- package/dist/services/workspace/node-creation.js.map +1 -0
- package/dist/services/workspace/node-update-helpers.d.ts +89 -0
- package/dist/services/workspace/node-update-helpers.d.ts.map +1 -0
- package/dist/services/workspace/node-update-helpers.js +492 -0
- package/dist/services/workspace/node-update-helpers.js.map +1 -0
- package/dist/tasks/index.d.ts +5 -0
- package/dist/tasks/index.d.ts.map +1 -0
- package/dist/tasks/index.js +10 -0
- package/dist/tasks/index.js.map +1 -0
- package/dist/tasks/retry-and-wait-task.d.ts +4 -0
- package/dist/tasks/retry-and-wait-task.d.ts.map +1 -0
- package/dist/tasks/retry-and-wait-task.js +61 -0
- package/dist/tasks/retry-and-wait-task.js.map +1 -0
- package/dist/tasks/run-and-wait-task.d.ts +4 -0
- package/dist/tasks/run-and-wait-task.d.ts.map +1 -0
- package/dist/tasks/run-and-wait-task.js +61 -0
- package/dist/tasks/run-and-wait-task.js.map +1 -0
- package/dist/tasks/start-run-task.d.ts +4 -0
- package/dist/tasks/start-run-task.d.ts.map +1 -0
- package/dist/tasks/start-run-task.js +47 -0
- package/dist/tasks/start-run-task.js.map +1 -0
- package/dist/tasks/store.d.ts +2 -0
- package/dist/tasks/store.d.ts.map +1 -0
- package/dist/tasks/store.js +2 -0
- package/dist/tasks/store.js.map +1 -0
- 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/poll-run.d.ts +14 -0
- package/dist/workflows/poll-run.d.ts.map +1 -0
- package/dist/workflows/poll-run.js +86 -0
- package/dist/workflows/poll-run.js.map +1 -0
- package/dist/workflows/progress.d.ts +1 -0
- package/dist/workflows/progress.d.ts.map +1 -1
- package/dist/workflows/progress.js +3 -0
- package/dist/workflows/progress.js.map +1 -1
- package/dist/workflows/retry-and-wait.d.ts +1 -1
- package/dist/workflows/retry-and-wait.d.ts.map +1 -1
- package/dist/workflows/retry-and-wait.js +18 -89
- package/dist/workflows/retry-and-wait.js.map +1 -1
- package/dist/workflows/run-and-wait.d.ts +1 -1
- package/dist/workflows/run-and-wait.d.ts.map +1 -1
- package/dist/workflows/run-and-wait.js +18 -89
- package/dist/workflows/run-and-wait.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import type { CoalesceClient } from "../client.js";
|
|
3
|
+
export { InMemoryTaskStore, InMemoryTaskMessageQueue } from "./store.js";
|
|
4
|
+
export declare function registerTaskTools(server: McpServer, client: CoalesceClient): void;
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tasks/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAKnD,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAEzE,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,cAAc,GACrB,IAAI,CAIN"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { registerRunAndWaitTask } from "./run-and-wait-task.js";
|
|
2
|
+
import { registerRetryAndWaitTask } from "./retry-and-wait-task.js";
|
|
3
|
+
import { registerStartRunTask } from "./start-run-task.js";
|
|
4
|
+
export { InMemoryTaskStore, InMemoryTaskMessageQueue } from "./store.js";
|
|
5
|
+
export function registerTaskTools(server, client) {
|
|
6
|
+
registerRunAndWaitTask(server, client);
|
|
7
|
+
registerRetryAndWaitTask(server, client);
|
|
8
|
+
registerStartRunTask(server, client);
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tasks/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAEzE,MAAM,UAAU,iBAAiB,CAC/B,MAAiB,EACjB,MAAsB;IAEtB,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,wBAAwB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACvC,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import type { CoalesceClient } from "../client.js";
|
|
3
|
+
export declare function registerRetryAndWaitTask(server: McpServer, client: CoalesceClient): void;
|
|
4
|
+
//# sourceMappingURL=retry-and-wait-task.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry-and-wait-task.d.ts","sourceRoot":"","sources":["../../src/tasks/retry-and-wait-task.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAuBnD,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,cAAc,GACrB,IAAI,CA2DN"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { RerunParams, buildJsonToolResponse, WRITE_ANNOTATIONS, sanitizeResponse, getToolOutputSchema, } from "../coalesce/types.js";
|
|
3
|
+
import { retryAndWait } from "../workflows/retry-and-wait.js";
|
|
4
|
+
const RetryAndWaitTaskInput = RerunParams.extend({
|
|
5
|
+
pollInterval: z
|
|
6
|
+
.number()
|
|
7
|
+
.optional()
|
|
8
|
+
.describe("Seconds between status checks (default: 10, min: 5, max: 300)"),
|
|
9
|
+
timeout: z
|
|
10
|
+
.number()
|
|
11
|
+
.optional()
|
|
12
|
+
.describe("Max seconds to wait (default: 1800, min: 30, max: 3600)"),
|
|
13
|
+
});
|
|
14
|
+
export function registerRetryAndWaitTask(server, client) {
|
|
15
|
+
server.experimental.tasks.registerToolTask("retry_and_wait", {
|
|
16
|
+
title: "Retry and Wait",
|
|
17
|
+
description: "Retry a failed Coalesce run and poll until completion or timeout. Returns a task that can be polled for status.\n\nRequires Snowflake Key Pair auth via environment variables.\n\nArgs:\n - runDetails.runID (string, required): The run ID to retry\n - runDetails.forceIgnoreWorkspaceStatus (boolean, optional): Force retry\n - parameters (object, optional): Runtime parameters\n - pollInterval (number, optional): Seconds between checks (default: 10)\n - timeout (number, optional): Max wait seconds (default: 1800)\n\nReturns:\n { status, results, resultsError?, incomplete?, timedOut? }\n\nInspect timedOut, incomplete, and resultsError fields before continuing.",
|
|
18
|
+
inputSchema: RetryAndWaitTaskInput,
|
|
19
|
+
outputSchema: getToolOutputSchema("retry_and_wait"),
|
|
20
|
+
annotations: WRITE_ANNOTATIONS,
|
|
21
|
+
execution: { taskSupport: "optional" },
|
|
22
|
+
}, {
|
|
23
|
+
async createTask(rawParams, extra) {
|
|
24
|
+
const params = rawParams;
|
|
25
|
+
const task = await extra.taskStore.createTask({
|
|
26
|
+
ttl: extra.taskRequestedTtl,
|
|
27
|
+
pollInterval: (params.pollInterval ?? 10) * 1000,
|
|
28
|
+
});
|
|
29
|
+
(async () => {
|
|
30
|
+
try {
|
|
31
|
+
const result = await retryAndWait(client, params, {
|
|
32
|
+
signal: extra.signal,
|
|
33
|
+
});
|
|
34
|
+
const sanitized = sanitizeResponse(result);
|
|
35
|
+
const response = buildJsonToolResponse("retry_and_wait", sanitized);
|
|
36
|
+
await extra.taskStore.storeTaskResult(task.taskId, "completed", response);
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
40
|
+
await extra.taskStore.storeTaskResult(task.taskId, "failed", {
|
|
41
|
+
content: [{ type: "text", text: `retry_and_wait failed: ${message}` }],
|
|
42
|
+
isError: true,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
})();
|
|
46
|
+
return { task };
|
|
47
|
+
},
|
|
48
|
+
async getTask(_params, extra) {
|
|
49
|
+
const task = await extra.taskStore.getTask(extra.taskId);
|
|
50
|
+
if (!task) {
|
|
51
|
+
throw new Error(`Task ${extra.taskId} not found`);
|
|
52
|
+
}
|
|
53
|
+
return task;
|
|
54
|
+
},
|
|
55
|
+
async getTaskResult(_params, extra) {
|
|
56
|
+
const result = await extra.taskStore.getTaskResult(extra.taskId);
|
|
57
|
+
return result;
|
|
58
|
+
},
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=retry-and-wait-task.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry-and-wait-task.js","sourceRoot":"","sources":["../../src/tasks/retry-and-wait-task.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EACL,WAAW,EACX,qBAAqB,EACrB,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAE9D,MAAM,qBAAqB,GAAG,WAAW,CAAC,MAAM,CAAC;IAC/C,YAAY,EAAE,CAAC;SACZ,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,+DAA+D,CAAC;IAC5E,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,yDAAyD,CAAC;CACvE,CAAC,CAAC;AAIH,MAAM,UAAU,wBAAwB,CACtC,MAAiB,EACjB,MAAsB;IAEtB,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,gBAAgB,CACxC,gBAAgB,EAChB;QACE,KAAK,EAAE,gBAAgB;QACvB,WAAW,EACT,6pBAA6pB;QAC/pB,WAAW,EAAE,qBAAqB;QAClC,YAAY,EAAE,mBAAmB,CAAC,gBAAgB,CAAC;QACnD,WAAW,EAAE,iBAAiB;QAC9B,SAAS,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE;KACvC,EACD;QACE,KAAK,CAAC,UAAU,CAAC,SAAS,EAAE,KAAK;YAC/B,MAAM,MAAM,GAAG,SAA+B,CAAC;YAC/C,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC;gBAC5C,GAAG,EAAE,KAAK,CAAC,gBAAgB;gBAC3B,YAAY,EAAE,CAAC,MAAM,CAAC,YAAY,IAAI,EAAE,CAAC,GAAG,IAAI;aACjD,CAAC,CAAC;YAEH,CAAC,KAAK,IAAI,EAAE;gBACV,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE;wBAChD,MAAM,EAAE,KAAK,CAAC,MAAM;qBACrB,CAAC,CAAC;oBACH,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;oBAC3C,MAAM,QAAQ,GAAG,qBAAqB,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;oBACpE,MAAM,KAAK,CAAC,SAAS,CAAC,eAAe,CACnC,IAAI,CAAC,MAAM,EACX,WAAW,EACX,QAAQ,CACT,CAAC;gBACJ,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,OAAO,GACX,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBACzD,MAAM,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE;wBAC3D,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,0BAA0B,OAAO,EAAE,EAAE,CAAC;wBACtE,OAAO,EAAE,IAAI;qBACd,CAAC,CAAC;gBACL,CAAC;YACH,CAAC,CAAC,EAAE,CAAC;YAEL,OAAO,EAAE,IAAI,EAAE,CAAC;QAClB,CAAC;QAED,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK;YAC1B,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACzD,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,MAAM,IAAI,KAAK,CAAC,QAAQ,KAAK,CAAC,MAAM,YAAY,CAAC,CAAC;YACpD,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE,KAAK;YAChC,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACjE,OAAO,MAAkD,CAAC;QAC5D,CAAC;KACF,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import type { CoalesceClient } from "../client.js";
|
|
3
|
+
export declare function registerRunAndWaitTask(server: McpServer, client: CoalesceClient): void;
|
|
4
|
+
//# sourceMappingURL=run-and-wait-task.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-and-wait-task.d.ts","sourceRoot":"","sources":["../../src/tasks/run-and-wait-task.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAuBnD,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,cAAc,GACrB,IAAI,CA2DN"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { StartRunParams, buildJsonToolResponse, WRITE_ANNOTATIONS, sanitizeResponse, getToolOutputSchema, } from "../coalesce/types.js";
|
|
3
|
+
import { runAndWait } from "../workflows/run-and-wait.js";
|
|
4
|
+
const RunAndWaitTaskInput = StartRunParams.extend({
|
|
5
|
+
pollInterval: z
|
|
6
|
+
.number()
|
|
7
|
+
.optional()
|
|
8
|
+
.describe("Seconds between status checks (default: 10, min: 5, max: 300)"),
|
|
9
|
+
timeout: z
|
|
10
|
+
.number()
|
|
11
|
+
.optional()
|
|
12
|
+
.describe("Max seconds to wait (default: 1800, min: 30, max: 3600)"),
|
|
13
|
+
});
|
|
14
|
+
export function registerRunAndWaitTask(server, client) {
|
|
15
|
+
server.experimental.tasks.registerToolTask("run_and_wait", {
|
|
16
|
+
title: "Run and Wait",
|
|
17
|
+
description: "Start a Coalesce refresh run and poll until completion or timeout. Returns a task that can be polled for status.\n\nRequires Snowflake Key Pair auth via environment variables. If the user provides a job name instead of an ID, look it up with list_environment_jobs first.\n\nArgs:\n - runDetails.environmentID (string, required): Target environment\n - runDetails.jobID (string, optional): Specific job to run\n - runDetails.includeNodesSelector (string, optional): Node filter\n - runDetails.excludeNodesSelector (string, optional): Node exclusion\n - runDetails.parallelism (number, optional): Max parallel nodes\n - runDetails.forceIgnoreWorkspaceStatus (boolean, optional): Force run\n - confirmRunAllNodes (boolean): Required when no job/node scope\n - parameters (object, optional): Runtime parameters\n - pollInterval (number, optional): Seconds between checks (default: 10, range: 5–300)\n - timeout (number, optional): Max wait seconds (default: 1800, range: 30–3600)\n\nReturns:\n { status, results, resultsError?, incomplete?, timedOut? }\n\nInspect timedOut, incomplete, and resultsError fields before continuing.",
|
|
18
|
+
inputSchema: RunAndWaitTaskInput,
|
|
19
|
+
outputSchema: getToolOutputSchema("run_and_wait"),
|
|
20
|
+
annotations: WRITE_ANNOTATIONS,
|
|
21
|
+
execution: { taskSupport: "optional" },
|
|
22
|
+
}, {
|
|
23
|
+
async createTask(rawParams, extra) {
|
|
24
|
+
const params = rawParams;
|
|
25
|
+
const task = await extra.taskStore.createTask({
|
|
26
|
+
ttl: extra.taskRequestedTtl,
|
|
27
|
+
pollInterval: (params.pollInterval ?? 10) * 1000,
|
|
28
|
+
});
|
|
29
|
+
(async () => {
|
|
30
|
+
try {
|
|
31
|
+
const result = await runAndWait(client, params, {
|
|
32
|
+
signal: extra.signal,
|
|
33
|
+
});
|
|
34
|
+
const sanitized = sanitizeResponse(result);
|
|
35
|
+
const response = buildJsonToolResponse("run_and_wait", sanitized);
|
|
36
|
+
await extra.taskStore.storeTaskResult(task.taskId, "completed", response);
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
40
|
+
await extra.taskStore.storeTaskResult(task.taskId, "failed", {
|
|
41
|
+
content: [{ type: "text", text: `run_and_wait failed: ${message}` }],
|
|
42
|
+
isError: true,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
})();
|
|
46
|
+
return { task };
|
|
47
|
+
},
|
|
48
|
+
async getTask(_params, extra) {
|
|
49
|
+
const task = await extra.taskStore.getTask(extra.taskId);
|
|
50
|
+
if (!task) {
|
|
51
|
+
throw new Error(`Task ${extra.taskId} not found`);
|
|
52
|
+
}
|
|
53
|
+
return task;
|
|
54
|
+
},
|
|
55
|
+
async getTaskResult(_params, extra) {
|
|
56
|
+
const result = await extra.taskStore.getTaskResult(extra.taskId);
|
|
57
|
+
return result;
|
|
58
|
+
},
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=run-and-wait-task.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-and-wait-task.js","sourceRoot":"","sources":["../../src/tasks/run-and-wait-task.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"start-run-task.d.ts","sourceRoot":"","sources":["../../src/tasks/start-run-task.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAWnD,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,cAAc,GACrB,IAAI,CAwDN"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { StartRunParams, buildJsonToolResponse, WRITE_ANNOTATIONS, sanitizeResponse, getToolOutputSchema, } from "../coalesce/types.js";
|
|
2
|
+
import { startRun } from "../coalesce/api/runs.js";
|
|
3
|
+
export function registerStartRunTask(server, client) {
|
|
4
|
+
server.experimental.tasks.registerToolTask("start_run", {
|
|
5
|
+
title: "Start Run",
|
|
6
|
+
description: "Start a new Coalesce refresh run. Returns a task that resolves once the run has been submitted.\n\nRequires Snowflake Key Pair auth — credentials are read from SNOWFLAKE_USERNAME, SNOWFLAKE_KEY_PAIR_KEY, SNOWFLAKE_WAREHOUSE, SNOWFLAKE_ROLE environment variables.\n\nRequires a numeric environmentID and optionally a jobID. If the user provides a job name, look up the ID with list_environment_jobs first.\n\nArgs:\n - runDetails.environmentID (string, required): Target environment\n - runDetails.jobID (string, optional): Specific job to run\n - runDetails.includeNodesSelector (string, optional): Node filter for ad-hoc runs\n - runDetails.excludeNodesSelector (string, optional): Node exclusion filter\n - runDetails.parallelism (number, optional): Max parallel nodes (default: 16)\n - runDetails.forceIgnoreWorkspaceStatus (boolean, optional): Allow run even if last deploy failed\n - confirmRunAllNodes (boolean): Required when no job/node scope is provided\n - parameters (object, optional): Key-value runtime parameters\n\nReturns:\n { runCounter: number, runStatus: string, message: string }\n\nPrefer run_and_wait when you need the final outcome in a single call.",
|
|
7
|
+
inputSchema: StartRunParams,
|
|
8
|
+
outputSchema: getToolOutputSchema("start_run"),
|
|
9
|
+
annotations: WRITE_ANNOTATIONS,
|
|
10
|
+
execution: { taskSupport: "optional" },
|
|
11
|
+
}, {
|
|
12
|
+
async createTask(rawParams, extra) {
|
|
13
|
+
const params = rawParams;
|
|
14
|
+
const task = await extra.taskStore.createTask({
|
|
15
|
+
ttl: extra.taskRequestedTtl,
|
|
16
|
+
});
|
|
17
|
+
(async () => {
|
|
18
|
+
try {
|
|
19
|
+
const result = await startRun(client, params);
|
|
20
|
+
const sanitized = sanitizeResponse(result);
|
|
21
|
+
const response = buildJsonToolResponse("start_run", sanitized);
|
|
22
|
+
await extra.taskStore.storeTaskResult(task.taskId, "completed", response);
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
26
|
+
await extra.taskStore.storeTaskResult(task.taskId, "failed", {
|
|
27
|
+
content: [{ type: "text", text: `start_run failed: ${message}` }],
|
|
28
|
+
isError: true,
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
})();
|
|
32
|
+
return { task };
|
|
33
|
+
},
|
|
34
|
+
async getTask(_params, extra) {
|
|
35
|
+
const task = await extra.taskStore.getTask(extra.taskId);
|
|
36
|
+
if (!task) {
|
|
37
|
+
throw new Error(`Task ${extra.taskId} not found`);
|
|
38
|
+
}
|
|
39
|
+
return task;
|
|
40
|
+
},
|
|
41
|
+
async getTaskResult(_params, extra) {
|
|
42
|
+
const result = await extra.taskStore.getTaskResult(extra.taskId);
|
|
43
|
+
return result;
|
|
44
|
+
},
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=start-run-task.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"start-run-task.js","sourceRoot":"","sources":["../../src/tasks/start-run-task.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,cAAc,EAEd,qBAAqB,EACrB,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAEnD,MAAM,UAAU,oBAAoB,CAClC,MAAiB,EACjB,MAAsB;IAEtB,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,gBAAgB,CACxC,WAAW,EACX;QACE,KAAK,EAAE,WAAW;QAClB,WAAW,EACT,+pCAA+pC;QACjqC,WAAW,EAAE,cAAc;QAC3B,YAAY,EAAE,mBAAmB,CAAC,WAAW,CAAC;QAC9C,WAAW,EAAE,iBAAiB;QAC9B,SAAS,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE;KACvC,EACD;QACE,KAAK,CAAC,UAAU,CAAC,SAAS,EAAE,KAAK;YAC/B,MAAM,MAAM,GAAG,SAA0B,CAAC;YAC1C,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC;gBAC5C,GAAG,EAAE,KAAK,CAAC,gBAAgB;aAC5B,CAAC,CAAC;YAEH,CAAC,KAAK,IAAI,EAAE;gBACV,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;oBAC9C,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;oBAC3C,MAAM,QAAQ,GAAG,qBAAqB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;oBAC/D,MAAM,KAAK,CAAC,SAAS,CAAC,eAAe,CACnC,IAAI,CAAC,MAAM,EACX,WAAW,EACX,QAAQ,CACT,CAAC;gBACJ,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,OAAO,GACX,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBACzD,MAAM,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE;wBAC3D,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,qBAAqB,OAAO,EAAE,EAAE,CAAC;wBACjE,OAAO,EAAE,IAAI;qBACd,CAAC,CAAC;gBACL,CAAC;YACH,CAAC,CAAC,EAAE,CAAC;YAEL,OAAO,EAAE,IAAI,EAAE,CAAC;QAClB,CAAC;QAED,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK;YAC1B,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACzD,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,MAAM,IAAI,KAAK,CAAC,QAAQ,KAAK,CAAC,MAAM,YAAY,CAAC,CAAC;YACpD,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE,KAAK;YAChC,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACjE,OAAO,MAAkD,CAAC;QAC5D,CAAC;KACF,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/tasks/store.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,8CAA8C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/tasks/store.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,8CAA8C,CAAC"}
|
package/dist/utils.d.ts
CHANGED
|
@@ -9,8 +9,19 @@ export declare function isPlainObject(value: unknown): value is Record<string, u
|
|
|
9
9
|
* propagate rather than being caught and silenced.
|
|
10
10
|
*/
|
|
11
11
|
export declare function rethrowNonRecoverableApiError(error: unknown): void;
|
|
12
|
+
/**
|
|
13
|
+
* Like {@link rethrowNonRecoverableApiError} but also rethrows on HTTP 500.
|
|
14
|
+
* Use in contexts where a server error indicates a broken session rather than
|
|
15
|
+
* a transient failure worth swallowing (e.g. node-type inventory fetches).
|
|
16
|
+
*/
|
|
17
|
+
export declare function rethrowNonRecoverableOrServerError(error: unknown): void;
|
|
12
18
|
/**
|
|
13
19
|
* Returns the first occurrence of each distinct item while preserving input order.
|
|
14
20
|
*/
|
|
15
21
|
export declare function uniqueInOrder<T>(values: T[]): T[];
|
|
22
|
+
/**
|
|
23
|
+
* Replaces characters unsafe for filenames with underscores.
|
|
24
|
+
* Used to sanitize workspace IDs and similar values for use in file paths.
|
|
25
|
+
*/
|
|
26
|
+
export declare function sanitizeForFilename(value: string): string;
|
|
16
27
|
//# sourceMappingURL=utils.d.ts.map
|
package/dist/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAElC;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAElC;AAKD;;;;GAIG;AACH,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAIlE;AAED;;;;GAIG;AACH,wBAAgB,kCAAkC,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAIvE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAajD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEzD"}
|
package/dist/utils.js
CHANGED
|
@@ -6,13 +6,25 @@ import { CoalesceApiError } from "./client.js";
|
|
|
6
6
|
export function isPlainObject(value) {
|
|
7
7
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
8
8
|
}
|
|
9
|
+
const NON_RECOVERABLE_STATUSES = [401, 403, 503];
|
|
10
|
+
const NON_RECOVERABLE_WITH_SERVER_ERROR_STATUSES = [401, 403, 500, 503];
|
|
9
11
|
/**
|
|
10
12
|
* Re-throws CoalesceApiError for non-recoverable HTTP statuses (401, 403, 503).
|
|
11
13
|
* These indicate auth failures or service unavailability that should
|
|
12
14
|
* propagate rather than being caught and silenced.
|
|
13
15
|
*/
|
|
14
16
|
export function rethrowNonRecoverableApiError(error) {
|
|
15
|
-
if (error instanceof CoalesceApiError &&
|
|
17
|
+
if (error instanceof CoalesceApiError && NON_RECOVERABLE_STATUSES.includes(error.status)) {
|
|
18
|
+
throw error;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Like {@link rethrowNonRecoverableApiError} but also rethrows on HTTP 500.
|
|
23
|
+
* Use in contexts where a server error indicates a broken session rather than
|
|
24
|
+
* a transient failure worth swallowing (e.g. node-type inventory fetches).
|
|
25
|
+
*/
|
|
26
|
+
export function rethrowNonRecoverableOrServerError(error) {
|
|
27
|
+
if (error instanceof CoalesceApiError && NON_RECOVERABLE_WITH_SERVER_ERROR_STATUSES.includes(error.status)) {
|
|
16
28
|
throw error;
|
|
17
29
|
}
|
|
18
30
|
}
|
|
@@ -31,4 +43,11 @@ export function uniqueInOrder(values) {
|
|
|
31
43
|
}
|
|
32
44
|
return unique;
|
|
33
45
|
}
|
|
46
|
+
/**
|
|
47
|
+
* Replaces characters unsafe for filenames with underscores.
|
|
48
|
+
* Used to sanitize workspace IDs and similar values for use in file paths.
|
|
49
|
+
*/
|
|
50
|
+
export function sanitizeForFilename(value) {
|
|
51
|
+
return value.replace(/[^a-zA-Z0-9_\-]/g, "_");
|
|
52
|
+
}
|
|
34
53
|
//# sourceMappingURL=utils.js.map
|
package/dist/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C;;;GAGG;AACH,MAAM,UAAU,aAAa,CAC3B,KAAc;IAEd,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,6BAA6B,CAAC,KAAc;IAC1D,IAAI,KAAK,YAAY,gBAAgB,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C;;;GAGG;AACH,MAAM,UAAU,aAAa,CAC3B,KAAc;IAEd,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,MAAM,wBAAwB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACjD,MAAM,0CAA0C,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAExE;;;;GAIG;AACH,MAAM,UAAU,6BAA6B,CAAC,KAAc;IAC1D,IAAI,KAAK,YAAY,gBAAgB,IAAI,wBAAwB,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;QACzF,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kCAAkC,CAAC,KAAc;IAC/D,IAAI,KAAK,YAAY,gBAAgB,IAAI,0CAA0C,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3G,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAI,MAAW;IAC1C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAK,CAAC;IAC1B,MAAM,MAAM,GAAQ,EAAE,CAAC;IAEvB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YACpB,SAAS;QACX,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAChB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAa;IAC/C,OAAO,KAAK,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;AAChD,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import type { CoalesceClient } from "../client.js";
|
|
3
|
+
import { type ToolDefinition } from "../coalesce/types.js";
|
|
4
|
+
type HealthStatus = "healthy" | "warning" | "critical";
|
|
5
|
+
type NodeRunStatus = {
|
|
6
|
+
nodeID: string;
|
|
7
|
+
nodeName: string;
|
|
8
|
+
lastRunStatus: "passed" | "failed" | "never_run";
|
|
9
|
+
lastRunTime?: string;
|
|
10
|
+
};
|
|
11
|
+
type FailedRunSummary = {
|
|
12
|
+
runID: string;
|
|
13
|
+
runStatus: string;
|
|
14
|
+
startTime: string;
|
|
15
|
+
endTime?: string;
|
|
16
|
+
};
|
|
17
|
+
type StaleNode = {
|
|
18
|
+
nodeID: string;
|
|
19
|
+
nodeName: string;
|
|
20
|
+
nodeType: string;
|
|
21
|
+
lastRunTime?: string;
|
|
22
|
+
daysSinceLastRun?: number;
|
|
23
|
+
};
|
|
24
|
+
type DependencyHealth = {
|
|
25
|
+
orphanNodes: Array<{
|
|
26
|
+
nodeID: string;
|
|
27
|
+
nodeName: string;
|
|
28
|
+
nodeType: string;
|
|
29
|
+
}>;
|
|
30
|
+
totalDependencyEdges: number;
|
|
31
|
+
};
|
|
32
|
+
export type EnvironmentHealthResult = {
|
|
33
|
+
environmentID: string;
|
|
34
|
+
assessedAt: string;
|
|
35
|
+
totalNodes: number;
|
|
36
|
+
nodesByType: Record<string, number>;
|
|
37
|
+
nodeRunStatus: NodeRunStatus[];
|
|
38
|
+
failedRunsLast24h: FailedRunSummary[];
|
|
39
|
+
staleNodes: StaleNode[];
|
|
40
|
+
dependencyHealth: DependencyHealth;
|
|
41
|
+
healthScore: HealthStatus;
|
|
42
|
+
healthReasons: string[];
|
|
43
|
+
};
|
|
44
|
+
export declare function getEnvironmentHealth(client: CoalesceClient, params: {
|
|
45
|
+
environmentID: string;
|
|
46
|
+
}): Promise<EnvironmentHealthResult>;
|
|
47
|
+
export declare function defineGetEnvironmentHealth(_server: McpServer, client: CoalesceClient): ToolDefinition[];
|
|
48
|
+
export {};
|
|
49
|
+
//# sourceMappingURL=get-environment-health.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-environment-health.d.ts","sourceRoot":"","sources":["../../src/workflows/get-environment-health.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAKnD,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,sBAAsB,CAAC;AAO9B,KAAK,YAAY,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,CAAC;AAWvD,KAAK,aAAa,GAAG;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,QAAQ,GAAG,QAAQ,GAAG,WAAW,CAAC;IACjD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,KAAK,gBAAgB,GAAG;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,KAAK,SAAS,GAAG;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,KAAK,gBAAgB,GAAG;IACtB,WAAW,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3E,oBAAoB,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,aAAa,EAAE,aAAa,EAAE,CAAC;IAC/B,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;IACtC,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,WAAW,EAAE,YAAY,CAAC;IAC1B,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB,CAAC;AAwUF,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE;IAAE,aAAa,EAAE,MAAM,CAAA;CAAE,GAChC,OAAO,CAAC,uBAAuB,CAAC,CA8ClC;AAED,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,SAAS,EAClB,MAAM,EAAE,cAAc,GACrB,cAAc,EAAE,CAelB"}
|