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 @@
|
|
|
1
|
+
{"version":3,"file":"node-creation.js","sourceRoot":"","sources":["../../../src/services/workspace/node-creation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { type CoalesceClient } from "../../client.js";
|
|
2
|
+
import { type ConfigCompletionResult } from "../config/intelligent.js";
|
|
3
|
+
export declare function tryCompleteNodeConfiguration(client: CoalesceClient, params: {
|
|
4
|
+
workspaceID: string;
|
|
5
|
+
nodeID: string;
|
|
6
|
+
repoPath?: string;
|
|
7
|
+
}): Promise<{
|
|
8
|
+
configCompletion?: ConfigCompletionResult;
|
|
9
|
+
configCompletionSkipped?: string;
|
|
10
|
+
}>;
|
|
11
|
+
export type NodeTypeValidation = {
|
|
12
|
+
requestedNodeType: string;
|
|
13
|
+
topRankedNodeType: string | null;
|
|
14
|
+
isTopRanked: boolean;
|
|
15
|
+
strategy: string;
|
|
16
|
+
consideredNodeTypes: Array<{
|
|
17
|
+
nodeType: string;
|
|
18
|
+
displayName: string | null;
|
|
19
|
+
score: number;
|
|
20
|
+
reasons: string[];
|
|
21
|
+
}>;
|
|
22
|
+
warning?: string;
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Validates the requested nodeType against all available types from repo + workspace.
|
|
26
|
+
* Returns ranking info so the agent (and user) can see all considered options.
|
|
27
|
+
* Throws if the requested type is excluded (e.g., inputMode: 'sql').
|
|
28
|
+
* Returns null on non-critical validation failures (creation proceeds).
|
|
29
|
+
*
|
|
30
|
+
* NOTE: This function imports listWorkspaceNodeTypes lazily to avoid circular
|
|
31
|
+
* dependencies (mutations.ts -> node-update-helpers.ts -> mutations.ts).
|
|
32
|
+
*/
|
|
33
|
+
export declare function validateNodeTypeChoice(client: CoalesceClient, params: {
|
|
34
|
+
workspaceID: string;
|
|
35
|
+
nodeType: string;
|
|
36
|
+
predecessorCount: number;
|
|
37
|
+
repoPath?: string;
|
|
38
|
+
goal?: string;
|
|
39
|
+
}): Promise<NodeTypeValidation | null>;
|
|
40
|
+
/**
|
|
41
|
+
* Blocks creation of "Source" node types — Source nodes are read-only data
|
|
42
|
+
* definitions created via the Coalesce UI, not downstream processing nodes.
|
|
43
|
+
* Agents often confuse "Source" with "Stage".
|
|
44
|
+
*/
|
|
45
|
+
export declare function assertNotSourceNodeType(nodeType: string): void;
|
|
46
|
+
export type WorkspaceNodeChanges = Record<string, unknown>;
|
|
47
|
+
export declare function mergeWorkspaceNodeChanges(current: unknown, changes: unknown): unknown;
|
|
48
|
+
export declare function syncNodeNameIntoMetadataSourceMapping(current: Record<string, unknown>, merged: Record<string, unknown>, changes: WorkspaceNodeChanges): Record<string, unknown>;
|
|
49
|
+
export declare function buildUpdatedWorkspaceNodeBody(current: unknown, changes: WorkspaceNodeChanges): Record<string, unknown>;
|
|
50
|
+
import type { ExternalColumnInput } from "../../schemas/node-payloads.js";
|
|
51
|
+
export type SchemaReconciliationColumn = {
|
|
52
|
+
name: string;
|
|
53
|
+
sourceDataType: string | null;
|
|
54
|
+
targetDataType: string;
|
|
55
|
+
typeChanged: boolean;
|
|
56
|
+
};
|
|
57
|
+
export type SchemaReconciliation = {
|
|
58
|
+
matched: SchemaReconciliationColumn[];
|
|
59
|
+
added: Array<{
|
|
60
|
+
name: string;
|
|
61
|
+
dataType: string;
|
|
62
|
+
needsTransform: boolean;
|
|
63
|
+
}>;
|
|
64
|
+
dropped: Array<{
|
|
65
|
+
name: string;
|
|
66
|
+
reason: string;
|
|
67
|
+
}>;
|
|
68
|
+
typeChanges: Array<{
|
|
69
|
+
name: string;
|
|
70
|
+
from: string;
|
|
71
|
+
to: string;
|
|
72
|
+
}>;
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* Reconcile external target columns against a node's auto-populated columns.
|
|
76
|
+
*
|
|
77
|
+
* For each target column:
|
|
78
|
+
* - If it matches an auto-populated predecessor column by name, the source
|
|
79
|
+
* linkage is preserved but the dataType is overridden to match the external schema.
|
|
80
|
+
* - If it has no match in the predecessor, it is added as a new column
|
|
81
|
+
* (flagged as needing a transform unless one was provided).
|
|
82
|
+
*
|
|
83
|
+
* Predecessor columns not present in the target list are dropped.
|
|
84
|
+
*/
|
|
85
|
+
export declare function reconcileExternalSchema(autoPopulatedColumns: Record<string, unknown>[], targetColumns: ExternalColumnInput[]): {
|
|
86
|
+
columns: Record<string, unknown>[];
|
|
87
|
+
reconciliation: SchemaReconciliation;
|
|
88
|
+
};
|
|
89
|
+
//# sourceMappingURL=node-update-helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-update-helpers.d.ts","sourceRoot":"","sources":["../../../src/services/workspace/node-update-helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,492 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { completeNodeConfiguration } from "../config/intelligent.js";
|
|
3
|
+
import { isPlainObject, rethrowNonRecoverableApiError } from "../../utils.js";
|
|
4
|
+
import { selectPipelineNodeType } from "../pipelines/node-type-selection.js";
|
|
5
|
+
import { detectSpecializedPatternPenalty } from "../pipelines/node-type-intent.js";
|
|
6
|
+
import { normalizeColumnName, normalizeDataType, } from "./node-inspection.js";
|
|
7
|
+
import { isPassthroughTransform } from "../shared/node-helpers.js";
|
|
8
|
+
const CONFIG_COMPLETION_SKIP_MSG = "call complete_node_configuration with repoPath after creation to apply node type config and column-level attributes.";
|
|
9
|
+
export async function tryCompleteNodeConfiguration(client, params) {
|
|
10
|
+
try {
|
|
11
|
+
const configCompletion = await completeNodeConfiguration(client, params);
|
|
12
|
+
return { configCompletion };
|
|
13
|
+
}
|
|
14
|
+
catch (error) {
|
|
15
|
+
rethrowNonRecoverableApiError(error);
|
|
16
|
+
const reason = error instanceof Error ? error.message : String(error);
|
|
17
|
+
return { configCompletionSkipped: `Config completion failed (${reason}) — ${CONFIG_COMPLETION_SKIP_MSG}` };
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Validates the requested nodeType against all available types from repo + workspace.
|
|
22
|
+
* Returns ranking info so the agent (and user) can see all considered options.
|
|
23
|
+
* Throws if the requested type is excluded (e.g., inputMode: 'sql').
|
|
24
|
+
* Returns null on non-critical validation failures (creation proceeds).
|
|
25
|
+
*
|
|
26
|
+
* NOTE: This function imports listWorkspaceNodeTypes lazily to avoid circular
|
|
27
|
+
* dependencies (mutations.ts -> node-update-helpers.ts -> mutations.ts).
|
|
28
|
+
*/
|
|
29
|
+
export async function validateNodeTypeChoice(client, params) {
|
|
30
|
+
try {
|
|
31
|
+
// Lazy import to break the cycle: mutations re-exports from this file,
|
|
32
|
+
// and this function needs listWorkspaceNodeTypes which lives in mutations.
|
|
33
|
+
const { listWorkspaceNodeTypes } = await import("./mutations.js");
|
|
34
|
+
const nodeTypesResult = await listWorkspaceNodeTypes(client, {
|
|
35
|
+
workspaceID: params.workspaceID,
|
|
36
|
+
});
|
|
37
|
+
const selectionResult = selectPipelineNodeType({
|
|
38
|
+
explicitNodeType: params.nodeType,
|
|
39
|
+
sourceCount: params.predecessorCount,
|
|
40
|
+
workspaceNodeTypes: nodeTypesResult.nodeTypes,
|
|
41
|
+
workspaceNodeTypeCounts: nodeTypesResult.counts,
|
|
42
|
+
repoPath: params.repoPath,
|
|
43
|
+
goal: params.goal,
|
|
44
|
+
});
|
|
45
|
+
// Hard block: if the requested type was excluded (e.g., inputMode: 'sql'), throw
|
|
46
|
+
const exclusionWarning = selectionResult.warnings.find((w) => w.includes("is excluded because it relies on raw SQL override"));
|
|
47
|
+
if (exclusionWarning) {
|
|
48
|
+
throw new Error(exclusionWarning);
|
|
49
|
+
}
|
|
50
|
+
const topRanked = selectionResult.selection.consideredNodeTypes[0] ?? null;
|
|
51
|
+
const isTopRanked = topRanked?.nodeType === params.nodeType;
|
|
52
|
+
const validation = {
|
|
53
|
+
requestedNodeType: params.nodeType,
|
|
54
|
+
topRankedNodeType: topRanked?.nodeType ?? null,
|
|
55
|
+
isTopRanked,
|
|
56
|
+
strategy: selectionResult.selection.strategy,
|
|
57
|
+
consideredNodeTypes: selectionResult.selection.consideredNodeTypes.slice(0, 5).map((c) => ({
|
|
58
|
+
nodeType: c.nodeType,
|
|
59
|
+
displayName: c.displayName,
|
|
60
|
+
score: c.score,
|
|
61
|
+
reasons: c.reasons,
|
|
62
|
+
})),
|
|
63
|
+
};
|
|
64
|
+
if (!isTopRanked && topRanked) {
|
|
65
|
+
validation.warning =
|
|
66
|
+
`Requested nodeType "${params.nodeType}" is not the top-ranked type. ` +
|
|
67
|
+
`Consider using "${topRanked.nodeType}" (score: ${topRanked.score}) instead. ` +
|
|
68
|
+
`Call plan_pipeline first to discover and rank all available node types.`;
|
|
69
|
+
}
|
|
70
|
+
// Hard block specialized materialization patterns (Dynamic Tables, Incremental, etc.)
|
|
71
|
+
// unless the goal explicitly requests them.
|
|
72
|
+
// Build candidate signals from the matched type's display name and short name,
|
|
73
|
+
// since the raw nodeType ID (e.g., "65") won't match pattern detection.
|
|
74
|
+
const matchedCandidate = selectionResult.selection.consideredNodeTypes.find((c) => c.nodeType === params.nodeType);
|
|
75
|
+
const candidateSignals = [
|
|
76
|
+
params.nodeType,
|
|
77
|
+
matchedCandidate?.displayName ?? "",
|
|
78
|
+
matchedCandidate?.shortName ?? "",
|
|
79
|
+
].join(" ");
|
|
80
|
+
const contextText = params.goal ?? "";
|
|
81
|
+
const specializedPenalty = detectSpecializedPatternPenalty(candidateSignals, contextText);
|
|
82
|
+
if (specializedPenalty) {
|
|
83
|
+
// Hard block — specialized types require explicit context
|
|
84
|
+
const patternName = specializedPenalty.reason.split(" pattern")[0] ?? "Specialized";
|
|
85
|
+
throw new Error(`Cannot create node with nodeType "${params.nodeType}" (${matchedCandidate?.displayName ?? "unknown"}): ` +
|
|
86
|
+
`${specializedPenalty.reason}. ` +
|
|
87
|
+
`${patternName} types require an explicit use case (e.g., "${patternName.toLowerCase()}" in the goal). ` +
|
|
88
|
+
`For standard batch ETL, staging, joins, and aggregations, use a general-purpose type ` +
|
|
89
|
+
`(Stage, Work, View, Dimension, Fact). ` +
|
|
90
|
+
`Call plan_pipeline to discover the correct nodeType for your use case.`);
|
|
91
|
+
}
|
|
92
|
+
return validation;
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
// Auth and network errors indicate a broken session — let them propagate
|
|
96
|
+
rethrowNonRecoverableApiError(error);
|
|
97
|
+
// Re-throw hard block errors — exclusion and specialized pattern blocks
|
|
98
|
+
if (error instanceof Error && (error.message.includes("is excluded") ||
|
|
99
|
+
error.message.startsWith("Cannot create node"))) {
|
|
100
|
+
throw error;
|
|
101
|
+
}
|
|
102
|
+
// Log unexpected errors so they are not completely invisible
|
|
103
|
+
const reason = error instanceof Error ? error.message : String(error);
|
|
104
|
+
process.stderr.write(`[validateNodeTypeChoice] Unexpected error for nodeType "${params.nodeType}": ${reason}. Validation skipped.\n`);
|
|
105
|
+
return null;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Blocks creation of "Source" node types — Source nodes are read-only data
|
|
110
|
+
* definitions created via the Coalesce UI, not downstream processing nodes.
|
|
111
|
+
* Agents often confuse "Source" with "Stage".
|
|
112
|
+
*/
|
|
113
|
+
export function assertNotSourceNodeType(nodeType) {
|
|
114
|
+
const normalized = nodeType.toLowerCase().replace(/.*:::/, "");
|
|
115
|
+
if (normalized === "source") {
|
|
116
|
+
throw new Error(`Cannot create a node with nodeType "Source". Source nodes are read-only data ` +
|
|
117
|
+
`definitions — they represent external tables and are created via the Coalesce UI, ` +
|
|
118
|
+
`not via the API. You probably want "Stage" for a staging/transform node. ` +
|
|
119
|
+
`Call plan_pipeline to discover the correct nodeType.`);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
export function mergeWorkspaceNodeChanges(current, changes) {
|
|
123
|
+
if (Array.isArray(changes)) {
|
|
124
|
+
return changes;
|
|
125
|
+
}
|
|
126
|
+
if (isPlainObject(current) && isPlainObject(changes)) {
|
|
127
|
+
const merged = { ...current };
|
|
128
|
+
for (const [key, value] of Object.entries(changes)) {
|
|
129
|
+
merged[key] = mergeWorkspaceNodeChanges(current[key], value);
|
|
130
|
+
}
|
|
131
|
+
return merged;
|
|
132
|
+
}
|
|
133
|
+
return changes;
|
|
134
|
+
}
|
|
135
|
+
export function syncNodeNameIntoMetadataSourceMapping(current, merged, changes) {
|
|
136
|
+
if (typeof changes.name !== "string") {
|
|
137
|
+
return merged;
|
|
138
|
+
}
|
|
139
|
+
const metadataChanges = isPlainObject(changes.metadata) ? changes.metadata : undefined;
|
|
140
|
+
if (metadataChanges && "sourceMapping" in metadataChanges) {
|
|
141
|
+
return merged;
|
|
142
|
+
}
|
|
143
|
+
const mergedMetadata = isPlainObject(merged.metadata) ? merged.metadata : undefined;
|
|
144
|
+
if (!mergedMetadata || !Array.isArray(mergedMetadata.sourceMapping)) {
|
|
145
|
+
return merged;
|
|
146
|
+
}
|
|
147
|
+
const previousName = typeof current.name === "string" && current.name.trim().length > 0
|
|
148
|
+
? current.name
|
|
149
|
+
: null;
|
|
150
|
+
const updateSingleUnnamedMapping = previousName === null && mergedMetadata.sourceMapping.length === 1;
|
|
151
|
+
return {
|
|
152
|
+
...merged,
|
|
153
|
+
metadata: {
|
|
154
|
+
...mergedMetadata,
|
|
155
|
+
sourceMapping: mergedMetadata.sourceMapping.map((entry) => {
|
|
156
|
+
if (!isPlainObject(entry)) {
|
|
157
|
+
return entry;
|
|
158
|
+
}
|
|
159
|
+
const shouldRename = (previousName !== null && entry.name === previousName) ||
|
|
160
|
+
updateSingleUnnamedMapping;
|
|
161
|
+
if (!shouldRename) {
|
|
162
|
+
return entry;
|
|
163
|
+
}
|
|
164
|
+
return {
|
|
165
|
+
...entry,
|
|
166
|
+
name: changes.name,
|
|
167
|
+
};
|
|
168
|
+
}),
|
|
169
|
+
},
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
export function buildUpdatedWorkspaceNodeBody(current, changes) {
|
|
173
|
+
if (!isPlainObject(current)) {
|
|
174
|
+
throw new Error("Workspace node response was not an object");
|
|
175
|
+
}
|
|
176
|
+
const merged = mergeWorkspaceNodeChanges(current, changes);
|
|
177
|
+
if (!isPlainObject(merged)) {
|
|
178
|
+
throw new Error("Merged workspace node update was not an object");
|
|
179
|
+
}
|
|
180
|
+
const synchronized = syncNodeNameIntoMetadataSourceMapping(current, merged, changes);
|
|
181
|
+
if (!isPlainObject(synchronized)) {
|
|
182
|
+
throw new Error("Synchronized workspace node update was not an object");
|
|
183
|
+
}
|
|
184
|
+
// Preserve the node name casing as provided by the user or existing node.
|
|
185
|
+
// Snowflake treats unquoted identifiers as uppercase, but users may choose
|
|
186
|
+
// lowercase names (e.g., for Databricks or personal preference) — respect that.
|
|
187
|
+
// Validate nodeType and materializationType compatibility
|
|
188
|
+
validateNodeTypeMaterializationCompatibility(synchronized.nodeType, synchronized.materializationType);
|
|
189
|
+
// Strip invalid fields from metadata before sending to Coalesce
|
|
190
|
+
if (isPlainObject(synchronized.metadata)) {
|
|
191
|
+
synchronized.metadata = cleanMetadata(synchronized.metadata);
|
|
192
|
+
}
|
|
193
|
+
// Ensure API-required fields (table, overrideSQL, columnIDs) are preserved
|
|
194
|
+
ensureRequiredApiFields(current, synchronized);
|
|
195
|
+
return synchronized;
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Reconcile external target columns against a node's auto-populated columns.
|
|
199
|
+
*
|
|
200
|
+
* For each target column:
|
|
201
|
+
* - If it matches an auto-populated predecessor column by name, the source
|
|
202
|
+
* linkage is preserved but the dataType is overridden to match the external schema.
|
|
203
|
+
* - If it has no match in the predecessor, it is added as a new column
|
|
204
|
+
* (flagged as needing a transform unless one was provided).
|
|
205
|
+
*
|
|
206
|
+
* Predecessor columns not present in the target list are dropped.
|
|
207
|
+
*/
|
|
208
|
+
export function reconcileExternalSchema(autoPopulatedColumns, targetColumns) {
|
|
209
|
+
// Index auto-populated columns by normalized name
|
|
210
|
+
const existingByName = new Map();
|
|
211
|
+
for (const col of autoPopulatedColumns) {
|
|
212
|
+
if (isPlainObject(col) && typeof col.name === "string") {
|
|
213
|
+
existingByName.set(normalizeColumnName(col.name), col);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
const targetNameSet = new Set(targetColumns.map((tc) => normalizeColumnName(tc.name)));
|
|
217
|
+
const reconciliation = {
|
|
218
|
+
matched: [],
|
|
219
|
+
added: [],
|
|
220
|
+
dropped: [],
|
|
221
|
+
typeChanges: [],
|
|
222
|
+
};
|
|
223
|
+
// Find dropped columns (in predecessor, not in target)
|
|
224
|
+
for (const col of autoPopulatedColumns) {
|
|
225
|
+
if (!isPlainObject(col) || typeof col.name !== "string")
|
|
226
|
+
continue;
|
|
227
|
+
if (!targetNameSet.has(normalizeColumnName(col.name))) {
|
|
228
|
+
reconciliation.dropped.push({
|
|
229
|
+
name: col.name,
|
|
230
|
+
reason: "not in target schema",
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
// Build reconciled column list in target column order
|
|
235
|
+
const reconciledColumns = [];
|
|
236
|
+
for (const target of targetColumns) {
|
|
237
|
+
const normalizedName = normalizeColumnName(target.name);
|
|
238
|
+
const existing = existingByName.get(normalizedName);
|
|
239
|
+
if (existing) {
|
|
240
|
+
// Matched — preserve source linkage, override dataType
|
|
241
|
+
const sourceDataType = typeof existing.dataType === "string" ? existing.dataType : null;
|
|
242
|
+
const typeChanged = sourceDataType !== null && normalizeDataType(sourceDataType) !== normalizeDataType(target.dataType);
|
|
243
|
+
const reconciledCol = {
|
|
244
|
+
...structuredClone(existing),
|
|
245
|
+
name: target.name,
|
|
246
|
+
dataType: target.dataType,
|
|
247
|
+
nullable: target.nullable ?? true,
|
|
248
|
+
description: target.description ?? (typeof existing.description === "string" ? existing.description : ""),
|
|
249
|
+
};
|
|
250
|
+
if (target.transform) {
|
|
251
|
+
reconciledCol.transform = target.transform;
|
|
252
|
+
}
|
|
253
|
+
reconciledColumns.push(reconciledCol);
|
|
254
|
+
reconciliation.matched.push({
|
|
255
|
+
name: target.name,
|
|
256
|
+
sourceDataType,
|
|
257
|
+
targetDataType: target.dataType,
|
|
258
|
+
typeChanged,
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
else {
|
|
262
|
+
// New column — no predecessor match
|
|
263
|
+
const needsTransform = !target.transform;
|
|
264
|
+
reconciledColumns.push({
|
|
265
|
+
name: target.name,
|
|
266
|
+
dataType: target.dataType,
|
|
267
|
+
nullable: target.nullable ?? true,
|
|
268
|
+
description: target.description ?? "",
|
|
269
|
+
...(target.transform ? { transform: target.transform } : {}),
|
|
270
|
+
});
|
|
271
|
+
reconciliation.added.push({
|
|
272
|
+
name: target.name,
|
|
273
|
+
dataType: target.dataType,
|
|
274
|
+
needsTransform,
|
|
275
|
+
});
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
// Derive typeChanges from matched entries to avoid dual-update maintenance
|
|
279
|
+
reconciliation.typeChanges = reconciliation.matched
|
|
280
|
+
.filter((m) => m.typeChanged && m.sourceDataType !== null)
|
|
281
|
+
.map((m) => ({ name: m.name, from: m.sourceDataType, to: m.targetDataType }));
|
|
282
|
+
return { columns: reconciledColumns, reconciliation };
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Valid metadata fields for the Coalesce PUT API.
|
|
286
|
+
* The GET response may include additional read-only fields (e.g., appliedNodeTests,
|
|
287
|
+
* cteString, materializationOption) that the PUT schema rejects as additional properties.
|
|
288
|
+
*/
|
|
289
|
+
const VALID_METADATA_FIELDS = new Set([
|
|
290
|
+
"columns",
|
|
291
|
+
"sourceMapping",
|
|
292
|
+
"enabledColumnTestIDs",
|
|
293
|
+
]);
|
|
294
|
+
function cleanMetadata(metadata) {
|
|
295
|
+
if (!isPlainObject(metadata)) {
|
|
296
|
+
return {};
|
|
297
|
+
}
|
|
298
|
+
const cleaned = {};
|
|
299
|
+
for (const key of Object.keys(metadata)) {
|
|
300
|
+
if (VALID_METADATA_FIELDS.has(key)) {
|
|
301
|
+
cleaned[key] = metadata[key];
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
return cleaned;
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* Preserves columnID, sources, columnReference, and placement from existing
|
|
308
|
+
* columns when new columns are provided by the agent.
|
|
309
|
+
*
|
|
310
|
+
* When agents provide columns in changes.metadata.columns, those columns
|
|
311
|
+
* typically lack the source linkage fields that Coalesce auto-populates
|
|
312
|
+
* from predecessors. This function restores them by matching column names.
|
|
313
|
+
*/
|
|
314
|
+
function preserveColumnLinkage(currentMetadata, mergedMetadata) {
|
|
315
|
+
if (!Array.isArray(currentMetadata.columns) || !Array.isArray(mergedMetadata.columns)) {
|
|
316
|
+
return;
|
|
317
|
+
}
|
|
318
|
+
const existingByName = new Map();
|
|
319
|
+
for (const col of currentMetadata.columns) {
|
|
320
|
+
if (isPlainObject(col) && typeof col.name === "string") {
|
|
321
|
+
existingByName.set(normalizeColumnName(col.name), col);
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
if (existingByName.size === 0) {
|
|
325
|
+
return;
|
|
326
|
+
}
|
|
327
|
+
for (const col of mergedMetadata.columns) {
|
|
328
|
+
if (!isPlainObject(col) || typeof col.name !== "string") {
|
|
329
|
+
continue;
|
|
330
|
+
}
|
|
331
|
+
const existing = existingByName.get(normalizeColumnName(col.name));
|
|
332
|
+
if (!existing) {
|
|
333
|
+
continue;
|
|
334
|
+
}
|
|
335
|
+
// Preserve columnID if not already set
|
|
336
|
+
if ((!col.columnID || (typeof col.columnID === "string" && col.columnID.length === 0))
|
|
337
|
+
&& typeof existing.columnID === "string") {
|
|
338
|
+
col.columnID = existing.columnID;
|
|
339
|
+
}
|
|
340
|
+
// Preserve source linkage fields — these connect the column back to its
|
|
341
|
+
// predecessor node. Agents almost never provide these, so inherit from
|
|
342
|
+
// the auto-populated column.
|
|
343
|
+
if (!Array.isArray(col.sources) && Array.isArray(existing.sources)) {
|
|
344
|
+
const clonedSources = structuredClone(existing.sources);
|
|
345
|
+
col.sources = clonedSources;
|
|
346
|
+
// If the agent provided a non-passthrough transform on the top-level column
|
|
347
|
+
// (e.g., UPPER("TABLE"."COL")), propagate it into sources[*].transform so
|
|
348
|
+
// the Coalesce UI displays it correctly.
|
|
349
|
+
// The UI reads transforms from sources[0].transform, not a top-level transform field.
|
|
350
|
+
if (typeof col.transform === "string" &&
|
|
351
|
+
col.transform.trim().length > 0 &&
|
|
352
|
+
typeof col.name === "string" &&
|
|
353
|
+
!isPassthroughTransform(col.transform, col.name)) {
|
|
354
|
+
for (const source of clonedSources) {
|
|
355
|
+
if (isPlainObject(source)) {
|
|
356
|
+
source.transform = col.transform;
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
if (!isPlainObject(col.columnReference) && isPlainObject(existing.columnReference)) {
|
|
362
|
+
col.columnReference = existing.columnReference;
|
|
363
|
+
}
|
|
364
|
+
// Preserve placement (column ordering metadata)
|
|
365
|
+
if (col.placement === undefined && existing.placement !== undefined) {
|
|
366
|
+
col.placement = existing.placement;
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
/**
|
|
371
|
+
* Ensures the Coalesce API required fields (table, overrideSQL) are present
|
|
372
|
+
* in the body being sent to the PUT endpoint. These are preserved from the
|
|
373
|
+
* current node — the agent is never allowed to set overrideSQL.
|
|
374
|
+
*/
|
|
375
|
+
function ensureRequiredApiFields(current, body) {
|
|
376
|
+
// Ensure 'table' is present — required by the Coalesce PUT API.
|
|
377
|
+
// Prefer current node's value, fall back to node name.
|
|
378
|
+
if (!body.table || (typeof body.table === "string" && body.table.trim().length === 0)) {
|
|
379
|
+
if (current.table && typeof current.table === "string" && current.table.trim().length > 0) {
|
|
380
|
+
body.table = current.table;
|
|
381
|
+
}
|
|
382
|
+
else {
|
|
383
|
+
const name = typeof body.name === "string" ? body.name : typeof current.name === "string" ? current.name : "";
|
|
384
|
+
if (name.length > 0) {
|
|
385
|
+
body.table = name;
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
// Preserve 'overrideSQL' from current node — agent must never set this
|
|
390
|
+
if ("overrideSQL" in current) {
|
|
391
|
+
body.overrideSQL = current.overrideSQL;
|
|
392
|
+
}
|
|
393
|
+
// Preserve columnIDs from current node's columns
|
|
394
|
+
const currentMetadata = isPlainObject(current.metadata) ? current.metadata : undefined;
|
|
395
|
+
const bodyMetadata = isPlainObject(body.metadata) ? body.metadata : undefined;
|
|
396
|
+
// Strip backslash-escaped quotes from transforms BEFORE preserveColumnLinkage,
|
|
397
|
+
// so cleaned transforms get propagated into sources[*].transform correctly.
|
|
398
|
+
if (bodyMetadata && Array.isArray(bodyMetadata.columns)) {
|
|
399
|
+
for (const col of bodyMetadata.columns) {
|
|
400
|
+
if (isPlainObject(col) && typeof col.transform === "string" && col.transform.includes("\\")) {
|
|
401
|
+
col.transform = col.transform.replace(/\\"/g, '"');
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
if (currentMetadata && bodyMetadata) {
|
|
406
|
+
preserveColumnLinkage(currentMetadata, bodyMetadata);
|
|
407
|
+
}
|
|
408
|
+
// Ensure all columns have required fields and strip invalid properties
|
|
409
|
+
if (bodyMetadata && Array.isArray(bodyMetadata.columns)) {
|
|
410
|
+
// Build lookup of current node's columns for dataType fallback
|
|
411
|
+
const currentColumns = currentMetadata && Array.isArray(currentMetadata.columns) ? currentMetadata.columns : [];
|
|
412
|
+
const currentDataTypes = new Map();
|
|
413
|
+
for (const col of currentColumns) {
|
|
414
|
+
if (isPlainObject(col) && typeof col.name === "string" && typeof col.dataType === "string") {
|
|
415
|
+
currentDataTypes.set(col.name.toUpperCase(), col.dataType);
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
for (const col of bodyMetadata.columns) {
|
|
419
|
+
if (!isPlainObject(col))
|
|
420
|
+
continue;
|
|
421
|
+
// Ensure 'dataType' — required by the Coalesce PUT API.
|
|
422
|
+
// Prefer the current node's dataType for the same column name, otherwise default to "VARCHAR".
|
|
423
|
+
if (!col.dataType || (typeof col.dataType === "string" && col.dataType.trim().length === 0)) {
|
|
424
|
+
const colName = typeof col.name === "string" ? col.name.toUpperCase() : "";
|
|
425
|
+
const existingType = currentDataTypes.get(colName);
|
|
426
|
+
col.dataType = existingType ?? "VARCHAR";
|
|
427
|
+
}
|
|
428
|
+
// Ensure 'nullable' — required by the Coalesce PUT API
|
|
429
|
+
if (!("nullable" in col)) {
|
|
430
|
+
col.nullable = true;
|
|
431
|
+
}
|
|
432
|
+
// Ensure 'description' — required by the Coalesce PUT API
|
|
433
|
+
if (!("description" in col)) {
|
|
434
|
+
col.description = "";
|
|
435
|
+
}
|
|
436
|
+
// Generate columnID for columns that don't have one —
|
|
437
|
+
// the PUT API requires columnID on every column
|
|
438
|
+
if (!col.columnID || (typeof col.columnID === "string" && col.columnID.length === 0)) {
|
|
439
|
+
col.columnID = randomUUID();
|
|
440
|
+
}
|
|
441
|
+
// Strip passthrough transforms — if the transform just references
|
|
442
|
+
// the column's own name (e.g., "ALIAS"."COL" or {{ ref(...) }}."COL"),
|
|
443
|
+
// remove it so Coalesce auto-populates the source mapping.
|
|
444
|
+
if (typeof col.transform === "string" && typeof col.name === "string") {
|
|
445
|
+
if (isPassthroughTransform(col.transform, col.name)) {
|
|
446
|
+
delete col.transform;
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
// Ensure computed columns (new columns with a transform but no sources) get a
|
|
450
|
+
// synthetic sources entry so the Coalesce UI displays the transform correctly.
|
|
451
|
+
// The UI reads transforms from sources[0].transform, not the top-level transform field.
|
|
452
|
+
if (typeof col.transform === "string" &&
|
|
453
|
+
col.transform.trim().length > 0 &&
|
|
454
|
+
!Array.isArray(col.sources)) {
|
|
455
|
+
col.sources = [{ transform: col.transform, columnReferences: [] }];
|
|
456
|
+
}
|
|
457
|
+
// Strip properties that are not valid Coalesce column fields.
|
|
458
|
+
// Valid: name, dataType, transform, nullable, description, columnID,
|
|
459
|
+
// sources, placement, plus columnSelector attributes (isBusinessKey, etc.)
|
|
460
|
+
delete col.primaryKey;
|
|
461
|
+
delete col.foreignKey;
|
|
462
|
+
delete col.unique;
|
|
463
|
+
delete col.index;
|
|
464
|
+
}
|
|
465
|
+
}
|
|
466
|
+
// Ensure 'enabledColumnTestIDs' is present on metadata — required by the Coalesce PUT API
|
|
467
|
+
if (bodyMetadata && !Array.isArray(bodyMetadata.enabledColumnTestIDs)) {
|
|
468
|
+
const currentEnabled = currentMetadata && Array.isArray(currentMetadata.enabledColumnTestIDs)
|
|
469
|
+
? currentMetadata.enabledColumnTestIDs
|
|
470
|
+
: [];
|
|
471
|
+
bodyMetadata.enabledColumnTestIDs = currentEnabled;
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
/**
|
|
475
|
+
* Validates that nodeType and materializationType are compatible
|
|
476
|
+
* Throws error with actionable message if incompatible
|
|
477
|
+
*/
|
|
478
|
+
function validateNodeTypeMaterializationCompatibility(nodeType, materializationType) {
|
|
479
|
+
if (typeof nodeType !== "string" || typeof materializationType !== "string") {
|
|
480
|
+
return; // Skip validation if either field is missing or invalid type
|
|
481
|
+
}
|
|
482
|
+
const normalizedNodeType = nodeType.trim().toLowerCase().replace(/.*:::/, "");
|
|
483
|
+
const normalizedMaterialization = materializationType.toLowerCase();
|
|
484
|
+
// View nodes can ONLY be materialized as views
|
|
485
|
+
if (normalizedNodeType === "view" && normalizedMaterialization === "table") {
|
|
486
|
+
throw new Error(`Invalid configuration: nodeType "View" cannot use materializationType "table". ` +
|
|
487
|
+
`Either keep materializationType as "view" OR change nodeType to a table-capable type like "Dimension", "Fact", "Stage", or "Work".`);
|
|
488
|
+
}
|
|
489
|
+
// Note: Other node types (Dimension, Fact, Stage, Work, etc.) can be either table or view
|
|
490
|
+
// So we only need to check the View + table combination
|
|
491
|
+
}
|
|
492
|
+
//# sourceMappingURL=node-update-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-update-helpers.js","sourceRoot":"","sources":["../../../src/services/workspace/node-update-helpers.ts"],"names":[],"mappings":"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"}
|