coalesce-transform-mcp 0.1.0

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.
Files changed (134) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +304 -0
  3. package/dist/cache-dir.d.ts +26 -0
  4. package/dist/cache-dir.js +106 -0
  5. package/dist/client.d.ts +25 -0
  6. package/dist/client.js +212 -0
  7. package/dist/coalesce/api/environments.d.ts +20 -0
  8. package/dist/coalesce/api/environments.js +15 -0
  9. package/dist/coalesce/api/git-accounts.d.ts +21 -0
  10. package/dist/coalesce/api/git-accounts.js +21 -0
  11. package/dist/coalesce/api/jobs.d.ts +25 -0
  12. package/dist/coalesce/api/jobs.js +21 -0
  13. package/dist/coalesce/api/nodes.d.ts +29 -0
  14. package/dist/coalesce/api/nodes.js +33 -0
  15. package/dist/coalesce/api/projects.d.ts +22 -0
  16. package/dist/coalesce/api/projects.js +25 -0
  17. package/dist/coalesce/api/runs.d.ts +19 -0
  18. package/dist/coalesce/api/runs.js +34 -0
  19. package/dist/coalesce/api/subgraphs.d.ts +20 -0
  20. package/dist/coalesce/api/subgraphs.js +17 -0
  21. package/dist/coalesce/api/users.d.ts +30 -0
  22. package/dist/coalesce/api/users.js +31 -0
  23. package/dist/coalesce/types.d.ts +298 -0
  24. package/dist/coalesce/types.js +746 -0
  25. package/dist/generated/.gitkeep +0 -0
  26. package/dist/generated/node-type-corpus.json +42656 -0
  27. package/dist/index.d.ts +2 -0
  28. package/dist/index.js +10 -0
  29. package/dist/mcp/cache.d.ts +3 -0
  30. package/dist/mcp/cache.js +137 -0
  31. package/dist/mcp/environments.d.ts +3 -0
  32. package/dist/mcp/environments.js +61 -0
  33. package/dist/mcp/git-accounts.d.ts +3 -0
  34. package/dist/mcp/git-accounts.js +70 -0
  35. package/dist/mcp/jobs.d.ts +3 -0
  36. package/dist/mcp/jobs.js +77 -0
  37. package/dist/mcp/node-type-corpus.d.ts +3 -0
  38. package/dist/mcp/node-type-corpus.js +173 -0
  39. package/dist/mcp/nodes.d.ts +3 -0
  40. package/dist/mcp/nodes.js +341 -0
  41. package/dist/mcp/pipelines.d.ts +3 -0
  42. package/dist/mcp/pipelines.js +342 -0
  43. package/dist/mcp/projects.d.ts +3 -0
  44. package/dist/mcp/projects.js +70 -0
  45. package/dist/mcp/repo-node-types.d.ts +135 -0
  46. package/dist/mcp/repo-node-types.js +387 -0
  47. package/dist/mcp/runs.d.ts +3 -0
  48. package/dist/mcp/runs.js +92 -0
  49. package/dist/mcp/subgraphs.d.ts +3 -0
  50. package/dist/mcp/subgraphs.js +60 -0
  51. package/dist/mcp/users.d.ts +3 -0
  52. package/dist/mcp/users.js +107 -0
  53. package/dist/prompts/index.d.ts +2 -0
  54. package/dist/prompts/index.js +58 -0
  55. package/dist/resources/context/aggregation-patterns.md +145 -0
  56. package/dist/resources/context/data-engineering-principles.md +183 -0
  57. package/dist/resources/context/hydrated-metadata.md +92 -0
  58. package/dist/resources/context/id-discovery.md +64 -0
  59. package/dist/resources/context/intelligent-node-configuration.md +162 -0
  60. package/dist/resources/context/node-creation-decision-tree.md +156 -0
  61. package/dist/resources/context/node-operations.md +316 -0
  62. package/dist/resources/context/node-payloads.md +114 -0
  63. package/dist/resources/context/node-type-corpus.md +166 -0
  64. package/dist/resources/context/node-type-selection-guide.md +96 -0
  65. package/dist/resources/context/overview.md +135 -0
  66. package/dist/resources/context/pipeline-workflows.md +355 -0
  67. package/dist/resources/context/run-operations.md +55 -0
  68. package/dist/resources/context/sql-bigquery.md +41 -0
  69. package/dist/resources/context/sql-databricks.md +40 -0
  70. package/dist/resources/context/sql-platform-selection.md +70 -0
  71. package/dist/resources/context/sql-snowflake.md +43 -0
  72. package/dist/resources/context/storage-mappings.md +49 -0
  73. package/dist/resources/context/tool-usage.md +98 -0
  74. package/dist/resources/index.d.ts +5 -0
  75. package/dist/resources/index.js +254 -0
  76. package/dist/schemas/node-payloads.d.ts +5019 -0
  77. package/dist/schemas/node-payloads.js +147 -0
  78. package/dist/server.d.ts +7 -0
  79. package/dist/server.js +63 -0
  80. package/dist/services/cache/snapshots.d.ts +108 -0
  81. package/dist/services/cache/snapshots.js +275 -0
  82. package/dist/services/config/context-analyzer.d.ts +14 -0
  83. package/dist/services/config/context-analyzer.js +76 -0
  84. package/dist/services/config/field-classifier.d.ts +23 -0
  85. package/dist/services/config/field-classifier.js +47 -0
  86. package/dist/services/config/intelligent.d.ts +55 -0
  87. package/dist/services/config/intelligent.js +306 -0
  88. package/dist/services/config/rules.d.ts +6 -0
  89. package/dist/services/config/rules.js +44 -0
  90. package/dist/services/config/schema-resolver.d.ts +18 -0
  91. package/dist/services/config/schema-resolver.js +80 -0
  92. package/dist/services/corpus/loader.d.ts +56 -0
  93. package/dist/services/corpus/loader.js +25 -0
  94. package/dist/services/corpus/search.d.ts +49 -0
  95. package/dist/services/corpus/search.js +69 -0
  96. package/dist/services/corpus/templates.d.ts +4 -0
  97. package/dist/services/corpus/templates.js +11 -0
  98. package/dist/services/pipelines/execution.d.ts +20 -0
  99. package/dist/services/pipelines/execution.js +290 -0
  100. package/dist/services/pipelines/node-type-intent.d.ts +96 -0
  101. package/dist/services/pipelines/node-type-intent.js +356 -0
  102. package/dist/services/pipelines/node-type-selection.d.ts +66 -0
  103. package/dist/services/pipelines/node-type-selection.js +758 -0
  104. package/dist/services/pipelines/planning.d.ts +543 -0
  105. package/dist/services/pipelines/planning.js +1839 -0
  106. package/dist/services/policies/sql-override.d.ts +7 -0
  107. package/dist/services/policies/sql-override.js +109 -0
  108. package/dist/services/repo/operations.d.ts +6 -0
  109. package/dist/services/repo/operations.js +10 -0
  110. package/dist/services/repo/parser.d.ts +70 -0
  111. package/dist/services/repo/parser.js +365 -0
  112. package/dist/services/repo/path.d.ts +2 -0
  113. package/dist/services/repo/path.js +58 -0
  114. package/dist/services/templates/nodes.d.ts +50 -0
  115. package/dist/services/templates/nodes.js +336 -0
  116. package/dist/services/workspace/analysis.d.ts +56 -0
  117. package/dist/services/workspace/analysis.js +151 -0
  118. package/dist/services/workspace/mutations.d.ts +150 -0
  119. package/dist/services/workspace/mutations.js +1718 -0
  120. package/dist/utils.d.ts +5 -0
  121. package/dist/utils.js +7 -0
  122. package/dist/workflows/get-environment-overview.d.ts +9 -0
  123. package/dist/workflows/get-environment-overview.js +23 -0
  124. package/dist/workflows/get-run-details.d.ts +10 -0
  125. package/dist/workflows/get-run-details.js +28 -0
  126. package/dist/workflows/progress.d.ts +20 -0
  127. package/dist/workflows/progress.js +54 -0
  128. package/dist/workflows/retry-and-wait.d.ts +13 -0
  129. package/dist/workflows/retry-and-wait.js +139 -0
  130. package/dist/workflows/run-and-wait.d.ts +13 -0
  131. package/dist/workflows/run-and-wait.js +141 -0
  132. package/dist/workflows/run-status.d.ts +10 -0
  133. package/dist/workflows/run-status.js +27 -0
  134. package/package.json +34 -0
@@ -0,0 +1,543 @@
1
+ import { z } from "zod";
2
+ import type { CoalesceClient } from "../../client.js";
3
+ import { type PipelineNodeTypeFamily, type PipelineNodeTypeSelection, type PipelineTemplateDefaults } from "./node-type-selection.js";
4
+ type PipelineIntent = "sql" | "goal";
5
+ type PipelineStatus = "ready" | "needs_clarification";
6
+ type PipelineNodeType = string;
7
+ type PlannedSelectItemKind = "column" | "expression";
8
+ type PlannedSelectItem = {
9
+ expression: string;
10
+ outputName: string | null;
11
+ sourceNodeAlias: string | null;
12
+ sourceNodeName: string | null;
13
+ sourceNodeID: string | null;
14
+ sourceColumnName: string | null;
15
+ kind: PlannedSelectItemKind;
16
+ supported: boolean;
17
+ reason?: string;
18
+ };
19
+ type PlannedSourceRef = {
20
+ locationName: string;
21
+ nodeName: string;
22
+ alias: string | null;
23
+ nodeID: string | null;
24
+ };
25
+ export type PlannedPipelineNode = {
26
+ planNodeID: string;
27
+ name: string;
28
+ nodeType: PipelineNodeType;
29
+ nodeTypeFamily?: PipelineNodeTypeFamily | null;
30
+ predecessorNodeIDs: string[];
31
+ predecessorPlanNodeIDs: string[];
32
+ predecessorNodeNames: string[];
33
+ description: string | null;
34
+ sql: string | null;
35
+ selectItems: PlannedSelectItem[];
36
+ outputColumnNames: string[];
37
+ configOverrides: Record<string, unknown>;
38
+ sourceRefs: PlannedSourceRef[];
39
+ joinCondition: string | null;
40
+ location: {
41
+ locationName?: string;
42
+ database?: string;
43
+ schema?: string;
44
+ };
45
+ requiresFullSetNode: boolean;
46
+ templateDefaults?: PipelineTemplateDefaults;
47
+ };
48
+ type PipelinePlan = {
49
+ version: 1;
50
+ intent: PipelineIntent;
51
+ status: PipelineStatus;
52
+ workspaceID: string;
53
+ platform: string | null;
54
+ goal: string | null;
55
+ sql: string | null;
56
+ nodes: PlannedPipelineNode[];
57
+ assumptions: string[];
58
+ openQuestions: string[];
59
+ warnings: string[];
60
+ supportedNodeTypes: PipelineNodeType[];
61
+ nodeTypeSelection?: PipelineNodeTypeSelection;
62
+ cteNodeSummary?: CteNodeSummary[];
63
+ STOP_AND_CONFIRM?: string;
64
+ };
65
+ type CteNodeSummary = {
66
+ name: string;
67
+ nodeType: string;
68
+ pattern: "staging" | "multiSource" | "aggregation";
69
+ sourceTable: string | null;
70
+ columnCount: number;
71
+ transforms: Array<{
72
+ column: string;
73
+ expression: string;
74
+ }>;
75
+ passthroughColumns: string[];
76
+ whereFilter: string | null;
77
+ hasGroupBy: boolean;
78
+ hasJoin: boolean;
79
+ dependsOn: string[];
80
+ /** Structured columns for single-call creation (non-GROUP-BY CTEs) */
81
+ columnsParam?: Array<{
82
+ name: string;
83
+ transform?: string;
84
+ }>;
85
+ /** GROUP BY column expressions for single-call aggregation */
86
+ groupByColumnsParam?: string[];
87
+ /** Aggregate columns for single-call aggregation */
88
+ aggregatesParam?: Array<{
89
+ name: string;
90
+ function: string;
91
+ expression: string;
92
+ }>;
93
+ };
94
+ export declare const PipelinePlanSchema: z.ZodObject<{
95
+ version: z.ZodLiteral<1>;
96
+ intent: z.ZodEnum<["sql", "goal"]>;
97
+ status: z.ZodEnum<["ready", "needs_clarification"]>;
98
+ workspaceID: z.ZodString;
99
+ platform: z.ZodNullable<z.ZodString>;
100
+ goal: z.ZodNullable<z.ZodString>;
101
+ sql: z.ZodNullable<z.ZodString>;
102
+ nodes: z.ZodArray<z.ZodObject<{
103
+ planNodeID: z.ZodString;
104
+ name: z.ZodString;
105
+ nodeType: z.ZodString;
106
+ nodeTypeFamily: z.ZodOptional<z.ZodNullable<z.ZodEnum<["stage", "persistent-stage", "view", "work", "dimension", "fact", "hub", "satellite", "link", "unknown"]>>>;
107
+ predecessorNodeIDs: z.ZodArray<z.ZodString, "many">;
108
+ predecessorPlanNodeIDs: z.ZodArray<z.ZodString, "many">;
109
+ predecessorNodeNames: z.ZodArray<z.ZodString, "many">;
110
+ description: z.ZodNullable<z.ZodString>;
111
+ sql: z.ZodNullable<z.ZodString>;
112
+ selectItems: z.ZodArray<z.ZodObject<{
113
+ expression: z.ZodString;
114
+ outputName: z.ZodNullable<z.ZodString>;
115
+ sourceNodeAlias: z.ZodNullable<z.ZodString>;
116
+ sourceNodeName: z.ZodNullable<z.ZodString>;
117
+ sourceNodeID: z.ZodNullable<z.ZodString>;
118
+ sourceColumnName: z.ZodNullable<z.ZodString>;
119
+ kind: z.ZodEnum<["column", "expression"]>;
120
+ supported: z.ZodBoolean;
121
+ reason: z.ZodOptional<z.ZodString>;
122
+ }, "strict", z.ZodTypeAny, {
123
+ supported: boolean;
124
+ expression: string;
125
+ outputName: string | null;
126
+ sourceNodeAlias: string | null;
127
+ sourceNodeName: string | null;
128
+ sourceNodeID: string | null;
129
+ sourceColumnName: string | null;
130
+ kind: "expression" | "column";
131
+ reason?: string | undefined;
132
+ }, {
133
+ supported: boolean;
134
+ expression: string;
135
+ outputName: string | null;
136
+ sourceNodeAlias: string | null;
137
+ sourceNodeName: string | null;
138
+ sourceNodeID: string | null;
139
+ sourceColumnName: string | null;
140
+ kind: "expression" | "column";
141
+ reason?: string | undefined;
142
+ }>, "many">;
143
+ outputColumnNames: z.ZodArray<z.ZodString, "many">;
144
+ configOverrides: z.ZodObject<{
145
+ preSQL: z.ZodOptional<z.ZodString>;
146
+ postSQL: z.ZodOptional<z.ZodString>;
147
+ testsEnabled: z.ZodOptional<z.ZodBoolean>;
148
+ materializationType: z.ZodOptional<z.ZodString>;
149
+ insertStrategy: z.ZodOptional<z.ZodString>;
150
+ truncateBefore: z.ZodOptional<z.ZodBoolean>;
151
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
152
+ preSQL: z.ZodOptional<z.ZodString>;
153
+ postSQL: z.ZodOptional<z.ZodString>;
154
+ testsEnabled: z.ZodOptional<z.ZodBoolean>;
155
+ materializationType: z.ZodOptional<z.ZodString>;
156
+ insertStrategy: z.ZodOptional<z.ZodString>;
157
+ truncateBefore: z.ZodOptional<z.ZodBoolean>;
158
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
159
+ preSQL: z.ZodOptional<z.ZodString>;
160
+ postSQL: z.ZodOptional<z.ZodString>;
161
+ testsEnabled: z.ZodOptional<z.ZodBoolean>;
162
+ materializationType: z.ZodOptional<z.ZodString>;
163
+ insertStrategy: z.ZodOptional<z.ZodString>;
164
+ truncateBefore: z.ZodOptional<z.ZodBoolean>;
165
+ }, z.ZodTypeAny, "passthrough">>;
166
+ sourceRefs: z.ZodArray<z.ZodObject<{
167
+ locationName: z.ZodString;
168
+ nodeName: z.ZodString;
169
+ alias: z.ZodNullable<z.ZodString>;
170
+ nodeID: z.ZodNullable<z.ZodString>;
171
+ }, "strict", z.ZodTypeAny, {
172
+ locationName: string;
173
+ nodeID: string | null;
174
+ alias: string | null;
175
+ nodeName: string;
176
+ }, {
177
+ locationName: string;
178
+ nodeID: string | null;
179
+ alias: string | null;
180
+ nodeName: string;
181
+ }>, "many">;
182
+ joinCondition: z.ZodNullable<z.ZodString>;
183
+ location: z.ZodObject<{
184
+ locationName: z.ZodOptional<z.ZodString>;
185
+ database: z.ZodOptional<z.ZodString>;
186
+ schema: z.ZodOptional<z.ZodString>;
187
+ }, "strict", z.ZodTypeAny, {
188
+ database?: string | undefined;
189
+ schema?: string | undefined;
190
+ locationName?: string | undefined;
191
+ }, {
192
+ database?: string | undefined;
193
+ schema?: string | undefined;
194
+ locationName?: string | undefined;
195
+ }>;
196
+ requiresFullSetNode: z.ZodBoolean;
197
+ templateDefaults: z.ZodOptional<z.ZodObject<{
198
+ inferredTopLevelFields: z.ZodRecord<z.ZodString, z.ZodUnknown>;
199
+ inferredConfig: z.ZodObject<{
200
+ preSQL: z.ZodOptional<z.ZodString>;
201
+ postSQL: z.ZodOptional<z.ZodString>;
202
+ testsEnabled: z.ZodOptional<z.ZodBoolean>;
203
+ materializationType: z.ZodOptional<z.ZodString>;
204
+ insertStrategy: z.ZodOptional<z.ZodString>;
205
+ truncateBefore: z.ZodOptional<z.ZodBoolean>;
206
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
207
+ preSQL: z.ZodOptional<z.ZodString>;
208
+ postSQL: z.ZodOptional<z.ZodString>;
209
+ testsEnabled: z.ZodOptional<z.ZodBoolean>;
210
+ materializationType: z.ZodOptional<z.ZodString>;
211
+ insertStrategy: z.ZodOptional<z.ZodString>;
212
+ truncateBefore: z.ZodOptional<z.ZodBoolean>;
213
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
214
+ preSQL: z.ZodOptional<z.ZodString>;
215
+ postSQL: z.ZodOptional<z.ZodString>;
216
+ testsEnabled: z.ZodOptional<z.ZodBoolean>;
217
+ materializationType: z.ZodOptional<z.ZodString>;
218
+ insertStrategy: z.ZodOptional<z.ZodString>;
219
+ truncateBefore: z.ZodOptional<z.ZodBoolean>;
220
+ }, z.ZodTypeAny, "passthrough">>;
221
+ }, "strict", z.ZodTypeAny, {
222
+ inferredTopLevelFields: Record<string, unknown>;
223
+ inferredConfig: {
224
+ materializationType?: string | undefined;
225
+ insertStrategy?: string | undefined;
226
+ truncateBefore?: boolean | undefined;
227
+ preSQL?: string | undefined;
228
+ postSQL?: string | undefined;
229
+ testsEnabled?: boolean | undefined;
230
+ } & {
231
+ [k: string]: unknown;
232
+ };
233
+ }, {
234
+ inferredTopLevelFields: Record<string, unknown>;
235
+ inferredConfig: {
236
+ materializationType?: string | undefined;
237
+ insertStrategy?: string | undefined;
238
+ truncateBefore?: boolean | undefined;
239
+ preSQL?: string | undefined;
240
+ postSQL?: string | undefined;
241
+ testsEnabled?: boolean | undefined;
242
+ } & {
243
+ [k: string]: unknown;
244
+ };
245
+ }>>;
246
+ }, "strict", z.ZodTypeAny, {
247
+ description: string | null;
248
+ name: string;
249
+ nodeType: string;
250
+ sql: string | null;
251
+ predecessorNodeIDs: string[];
252
+ joinCondition: string | null;
253
+ planNodeID: string;
254
+ predecessorPlanNodeIDs: string[];
255
+ predecessorNodeNames: string[];
256
+ selectItems: {
257
+ supported: boolean;
258
+ expression: string;
259
+ outputName: string | null;
260
+ sourceNodeAlias: string | null;
261
+ sourceNodeName: string | null;
262
+ sourceNodeID: string | null;
263
+ sourceColumnName: string | null;
264
+ kind: "expression" | "column";
265
+ reason?: string | undefined;
266
+ }[];
267
+ outputColumnNames: string[];
268
+ configOverrides: {
269
+ materializationType?: string | undefined;
270
+ insertStrategy?: string | undefined;
271
+ truncateBefore?: boolean | undefined;
272
+ preSQL?: string | undefined;
273
+ postSQL?: string | undefined;
274
+ testsEnabled?: boolean | undefined;
275
+ } & {
276
+ [k: string]: unknown;
277
+ };
278
+ sourceRefs: {
279
+ locationName: string;
280
+ nodeID: string | null;
281
+ alias: string | null;
282
+ nodeName: string;
283
+ }[];
284
+ location: {
285
+ database?: string | undefined;
286
+ schema?: string | undefined;
287
+ locationName?: string | undefined;
288
+ };
289
+ requiresFullSetNode: boolean;
290
+ templateDefaults?: {
291
+ inferredTopLevelFields: Record<string, unknown>;
292
+ inferredConfig: {
293
+ materializationType?: string | undefined;
294
+ insertStrategy?: string | undefined;
295
+ truncateBefore?: boolean | undefined;
296
+ preSQL?: string | undefined;
297
+ postSQL?: string | undefined;
298
+ testsEnabled?: boolean | undefined;
299
+ } & {
300
+ [k: string]: unknown;
301
+ };
302
+ } | undefined;
303
+ nodeTypeFamily?: "unknown" | "link" | "view" | "stage" | "persistent-stage" | "work" | "dimension" | "fact" | "hub" | "satellite" | null | undefined;
304
+ }, {
305
+ description: string | null;
306
+ name: string;
307
+ nodeType: string;
308
+ sql: string | null;
309
+ predecessorNodeIDs: string[];
310
+ joinCondition: string | null;
311
+ planNodeID: string;
312
+ predecessorPlanNodeIDs: string[];
313
+ predecessorNodeNames: string[];
314
+ selectItems: {
315
+ supported: boolean;
316
+ expression: string;
317
+ outputName: string | null;
318
+ sourceNodeAlias: string | null;
319
+ sourceNodeName: string | null;
320
+ sourceNodeID: string | null;
321
+ sourceColumnName: string | null;
322
+ kind: "expression" | "column";
323
+ reason?: string | undefined;
324
+ }[];
325
+ outputColumnNames: string[];
326
+ configOverrides: {
327
+ materializationType?: string | undefined;
328
+ insertStrategy?: string | undefined;
329
+ truncateBefore?: boolean | undefined;
330
+ preSQL?: string | undefined;
331
+ postSQL?: string | undefined;
332
+ testsEnabled?: boolean | undefined;
333
+ } & {
334
+ [k: string]: unknown;
335
+ };
336
+ sourceRefs: {
337
+ locationName: string;
338
+ nodeID: string | null;
339
+ alias: string | null;
340
+ nodeName: string;
341
+ }[];
342
+ location: {
343
+ database?: string | undefined;
344
+ schema?: string | undefined;
345
+ locationName?: string | undefined;
346
+ };
347
+ requiresFullSetNode: boolean;
348
+ templateDefaults?: {
349
+ inferredTopLevelFields: Record<string, unknown>;
350
+ inferredConfig: {
351
+ materializationType?: string | undefined;
352
+ insertStrategy?: string | undefined;
353
+ truncateBefore?: boolean | undefined;
354
+ preSQL?: string | undefined;
355
+ postSQL?: string | undefined;
356
+ testsEnabled?: boolean | undefined;
357
+ } & {
358
+ [k: string]: unknown;
359
+ };
360
+ } | undefined;
361
+ nodeTypeFamily?: "unknown" | "link" | "view" | "stage" | "persistent-stage" | "work" | "dimension" | "fact" | "hub" | "satellite" | null | undefined;
362
+ }>, "many">;
363
+ assumptions: z.ZodArray<z.ZodString, "many">;
364
+ openQuestions: z.ZodArray<z.ZodString, "many">;
365
+ warnings: z.ZodArray<z.ZodString, "many">;
366
+ supportedNodeTypes: z.ZodArray<z.ZodString, "many">;
367
+ nodeTypeSelection: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
368
+ cteNodeSummary: z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>, "many">>;
369
+ STOP_AND_CONFIRM: z.ZodOptional<z.ZodString>;
370
+ }, "strict", z.ZodTypeAny, {
371
+ status: "ready" | "needs_clarification";
372
+ workspaceID: string;
373
+ nodes: {
374
+ description: string | null;
375
+ name: string;
376
+ nodeType: string;
377
+ sql: string | null;
378
+ predecessorNodeIDs: string[];
379
+ joinCondition: string | null;
380
+ planNodeID: string;
381
+ predecessorPlanNodeIDs: string[];
382
+ predecessorNodeNames: string[];
383
+ selectItems: {
384
+ supported: boolean;
385
+ expression: string;
386
+ outputName: string | null;
387
+ sourceNodeAlias: string | null;
388
+ sourceNodeName: string | null;
389
+ sourceNodeID: string | null;
390
+ sourceColumnName: string | null;
391
+ kind: "expression" | "column";
392
+ reason?: string | undefined;
393
+ }[];
394
+ outputColumnNames: string[];
395
+ configOverrides: {
396
+ materializationType?: string | undefined;
397
+ insertStrategy?: string | undefined;
398
+ truncateBefore?: boolean | undefined;
399
+ preSQL?: string | undefined;
400
+ postSQL?: string | undefined;
401
+ testsEnabled?: boolean | undefined;
402
+ } & {
403
+ [k: string]: unknown;
404
+ };
405
+ sourceRefs: {
406
+ locationName: string;
407
+ nodeID: string | null;
408
+ alias: string | null;
409
+ nodeName: string;
410
+ }[];
411
+ location: {
412
+ database?: string | undefined;
413
+ schema?: string | undefined;
414
+ locationName?: string | undefined;
415
+ };
416
+ requiresFullSetNode: boolean;
417
+ templateDefaults?: {
418
+ inferredTopLevelFields: Record<string, unknown>;
419
+ inferredConfig: {
420
+ materializationType?: string | undefined;
421
+ insertStrategy?: string | undefined;
422
+ truncateBefore?: boolean | undefined;
423
+ preSQL?: string | undefined;
424
+ postSQL?: string | undefined;
425
+ testsEnabled?: boolean | undefined;
426
+ } & {
427
+ [k: string]: unknown;
428
+ };
429
+ } | undefined;
430
+ nodeTypeFamily?: "unknown" | "link" | "view" | "stage" | "persistent-stage" | "work" | "dimension" | "fact" | "hub" | "satellite" | null | undefined;
431
+ }[];
432
+ warnings: string[];
433
+ version: 1;
434
+ intent: "goal" | "sql";
435
+ platform: string | null;
436
+ goal: string | null;
437
+ sql: string | null;
438
+ assumptions: string[];
439
+ openQuestions: string[];
440
+ supportedNodeTypes: string[];
441
+ cteNodeSummary?: Record<string, unknown>[] | undefined;
442
+ nodeTypeSelection?: Record<string, unknown> | undefined;
443
+ STOP_AND_CONFIRM?: string | undefined;
444
+ }, {
445
+ status: "ready" | "needs_clarification";
446
+ workspaceID: string;
447
+ nodes: {
448
+ description: string | null;
449
+ name: string;
450
+ nodeType: string;
451
+ sql: string | null;
452
+ predecessorNodeIDs: string[];
453
+ joinCondition: string | null;
454
+ planNodeID: string;
455
+ predecessorPlanNodeIDs: string[];
456
+ predecessorNodeNames: string[];
457
+ selectItems: {
458
+ supported: boolean;
459
+ expression: string;
460
+ outputName: string | null;
461
+ sourceNodeAlias: string | null;
462
+ sourceNodeName: string | null;
463
+ sourceNodeID: string | null;
464
+ sourceColumnName: string | null;
465
+ kind: "expression" | "column";
466
+ reason?: string | undefined;
467
+ }[];
468
+ outputColumnNames: string[];
469
+ configOverrides: {
470
+ materializationType?: string | undefined;
471
+ insertStrategy?: string | undefined;
472
+ truncateBefore?: boolean | undefined;
473
+ preSQL?: string | undefined;
474
+ postSQL?: string | undefined;
475
+ testsEnabled?: boolean | undefined;
476
+ } & {
477
+ [k: string]: unknown;
478
+ };
479
+ sourceRefs: {
480
+ locationName: string;
481
+ nodeID: string | null;
482
+ alias: string | null;
483
+ nodeName: string;
484
+ }[];
485
+ location: {
486
+ database?: string | undefined;
487
+ schema?: string | undefined;
488
+ locationName?: string | undefined;
489
+ };
490
+ requiresFullSetNode: boolean;
491
+ templateDefaults?: {
492
+ inferredTopLevelFields: Record<string, unknown>;
493
+ inferredConfig: {
494
+ materializationType?: string | undefined;
495
+ insertStrategy?: string | undefined;
496
+ truncateBefore?: boolean | undefined;
497
+ preSQL?: string | undefined;
498
+ postSQL?: string | undefined;
499
+ testsEnabled?: boolean | undefined;
500
+ } & {
501
+ [k: string]: unknown;
502
+ };
503
+ } | undefined;
504
+ nodeTypeFamily?: "unknown" | "link" | "view" | "stage" | "persistent-stage" | "work" | "dimension" | "fact" | "hub" | "satellite" | null | undefined;
505
+ }[];
506
+ warnings: string[];
507
+ version: 1;
508
+ intent: "goal" | "sql";
509
+ platform: string | null;
510
+ goal: string | null;
511
+ sql: string | null;
512
+ assumptions: string[];
513
+ openQuestions: string[];
514
+ supportedNodeTypes: string[];
515
+ cteNodeSummary?: Record<string, unknown>[] | undefined;
516
+ nodeTypeSelection?: Record<string, unknown> | undefined;
517
+ STOP_AND_CONFIRM?: string | undefined;
518
+ }>;
519
+ export declare const DEFAULT_STAGE_CONFIG: Record<string, unknown>;
520
+ export declare function normalizeSqlIdentifier(identifier: string): string;
521
+ export declare function deepClone<T>(value: T): T;
522
+ export declare function normalizeWhitespace(value: string): string;
523
+ export declare function getColumnNamesFromNode(node: Record<string, unknown>): string[];
524
+ export declare function planPipeline(client: CoalesceClient, params: {
525
+ workspaceID: string;
526
+ goal?: string;
527
+ sql?: string;
528
+ targetName?: string;
529
+ targetNodeType?: string;
530
+ description?: string;
531
+ configOverrides?: Record<string, unknown>;
532
+ locationName?: string;
533
+ database?: string;
534
+ schema?: string;
535
+ sourceNodeIDs?: string[];
536
+ repoPath?: string;
537
+ }): Promise<PipelinePlan>;
538
+ export declare function getNodeColumnArray(node: Record<string, unknown>): Record<string, unknown>[];
539
+ export declare function getColumnSourceNodeIDs(column: Record<string, unknown>): string[];
540
+ export declare function findMatchingBaseColumn(node: Record<string, unknown>, selectItem: PlannedSelectItem): Record<string, unknown> | null;
541
+ export declare function renameSourceMappingEntries(node: Record<string, unknown>, newName: string): Record<string, unknown>;
542
+ export declare function buildStageSourceMappingFromPlan(currentNode: Record<string, unknown>, nodePlan: PlannedPipelineNode): Record<string, unknown>[];
543
+ export {};