0pflow 0.1.0-dev.4fd2ac2 → 0.1.0-dev.582d64d

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 (204) hide show
  1. package/dist/__tests__/discover.integration.test.d.ts +2 -0
  2. package/dist/__tests__/discover.integration.test.d.ts.map +1 -0
  3. package/dist/__tests__/discover.integration.test.js +137 -0
  4. package/dist/__tests__/discover.integration.test.js.map +1 -0
  5. package/dist/__tests__/factory.test.js +7 -0
  6. package/dist/__tests__/factory.test.js.map +1 -1
  7. package/dist/__tests__/integration.e2e.test.js +2 -1
  8. package/dist/__tests__/integration.e2e.test.js.map +1 -1
  9. package/dist/__tests__/integration.test.js +87 -82
  10. package/dist/__tests__/integration.test.js.map +1 -1
  11. package/dist/agent.d.ts +7 -0
  12. package/dist/agent.d.ts.map +1 -1
  13. package/dist/agent.js +59 -9
  14. package/dist/agent.js.map +1 -1
  15. package/dist/cli/__tests__/discovery.test.js +1 -1
  16. package/dist/cli/__tests__/discovery.test.js.map +1 -1
  17. package/dist/cli/app.d.ts +6 -0
  18. package/dist/cli/app.d.ts.map +1 -1
  19. package/dist/cli/app.js +27 -0
  20. package/dist/cli/app.js.map +1 -1
  21. package/dist/cli/discovery.d.ts +10 -0
  22. package/dist/cli/discovery.d.ts.map +1 -1
  23. package/dist/cli/discovery.js +42 -0
  24. package/dist/cli/discovery.js.map +1 -1
  25. package/dist/cli/env.js +1 -1
  26. package/dist/cli/env.js.map +1 -1
  27. package/dist/cli/index.d.ts.map +1 -1
  28. package/dist/cli/index.js +124 -11
  29. package/dist/cli/index.js.map +1 -1
  30. package/dist/cli/install.d.ts.map +1 -1
  31. package/dist/cli/install.js +39 -9
  32. package/dist/cli/install.js.map +1 -1
  33. package/dist/cli/mcp/lib/scaffolding.d.ts +33 -0
  34. package/dist/cli/mcp/lib/scaffolding.d.ts.map +1 -0
  35. package/dist/cli/mcp/lib/scaffolding.js +219 -0
  36. package/dist/cli/mcp/lib/scaffolding.js.map +1 -0
  37. package/dist/cli/mcp/lib/templates.d.ts +1 -0
  38. package/dist/cli/mcp/lib/templates.d.ts.map +1 -1
  39. package/dist/cli/mcp/lib/templates.js.map +1 -1
  40. package/dist/cli/mcp/tools/createApp.d.ts +1 -0
  41. package/dist/cli/mcp/tools/createApp.d.ts.map +1 -1
  42. package/dist/cli/mcp/tools/createApp.js +12 -55
  43. package/dist/cli/mcp/tools/createApp.js.map +1 -1
  44. package/dist/cli/mcp/tools/createDatabase.d.ts.map +1 -1
  45. package/dist/cli/mcp/tools/createDatabase.js +2 -41
  46. package/dist/cli/mcp/tools/createDatabase.js.map +1 -1
  47. package/dist/cli/mcp/tools/getConnectionInfo.d.ts +19 -0
  48. package/dist/cli/mcp/tools/getConnectionInfo.d.ts.map +1 -0
  49. package/dist/cli/mcp/tools/getConnectionInfo.js +111 -0
  50. package/dist/cli/mcp/tools/getConnectionInfo.js.map +1 -0
  51. package/dist/cli/mcp/tools/getRun.d.ts +22 -0
  52. package/dist/cli/mcp/tools/getRun.d.ts.map +1 -0
  53. package/dist/cli/mcp/tools/getRun.js +80 -0
  54. package/dist/cli/mcp/tools/getRun.js.map +1 -0
  55. package/dist/cli/mcp/tools/getTrace.d.ts +32 -0
  56. package/dist/cli/mcp/tools/getTrace.d.ts.map +1 -0
  57. package/dist/cli/mcp/tools/getTrace.js +104 -0
  58. package/dist/cli/mcp/tools/getTrace.js.map +1 -0
  59. package/dist/cli/mcp/tools/index.d.ts +94 -1
  60. package/dist/cli/mcp/tools/index.d.ts.map +1 -1
  61. package/dist/cli/mcp/tools/index.js +16 -0
  62. package/dist/cli/mcp/tools/index.js.map +1 -1
  63. package/dist/cli/mcp/tools/listIntegrations.d.ts +14 -0
  64. package/dist/cli/mcp/tools/listIntegrations.d.ts.map +1 -0
  65. package/dist/cli/mcp/tools/listIntegrations.js +53 -0
  66. package/dist/cli/mcp/tools/listIntegrations.js.map +1 -0
  67. package/dist/cli/mcp/tools/listRuns.d.ts +21 -0
  68. package/dist/cli/mcp/tools/listRuns.d.ts.map +1 -0
  69. package/dist/cli/mcp/tools/listRuns.js +72 -0
  70. package/dist/cli/mcp/tools/listRuns.js.map +1 -0
  71. package/dist/cli/mcp/tools/listWorkflows.d.ts +15 -0
  72. package/dist/cli/mcp/tools/listWorkflows.d.ts.map +1 -0
  73. package/dist/cli/mcp/tools/listWorkflows.js +45 -0
  74. package/dist/cli/mcp/tools/listWorkflows.js.map +1 -0
  75. package/dist/cli/mcp/tools/runNode.d.ts +17 -0
  76. package/dist/cli/mcp/tools/runNode.d.ts.map +1 -0
  77. package/dist/cli/mcp/tools/runNode.js +74 -0
  78. package/dist/cli/mcp/tools/runNode.js.map +1 -0
  79. package/dist/cli/mcp/tools/runWorkflow.d.ts +16 -0
  80. package/dist/cli/mcp/tools/runWorkflow.d.ts.map +1 -0
  81. package/dist/cli/mcp/tools/runWorkflow.js +66 -0
  82. package/dist/cli/mcp/tools/runWorkflow.js.map +1 -0
  83. package/dist/cli/mcp/tools/setupAppSchema.d.ts +1 -1
  84. package/dist/cli/mcp/tools/setupAppSchema.d.ts.map +1 -1
  85. package/dist/cli/mcp/tools/setupAppSchema.js +11 -132
  86. package/dist/cli/mcp/tools/setupAppSchema.js.map +1 -1
  87. package/dist/cli/mcp/tools/utils.d.ts +7 -0
  88. package/dist/cli/mcp/tools/utils.d.ts.map +1 -0
  89. package/dist/cli/mcp/tools/utils.js +28 -0
  90. package/dist/cli/mcp/tools/utils.js.map +1 -0
  91. package/dist/cli/run.d.ts +2 -0
  92. package/dist/cli/run.d.ts.map +1 -0
  93. package/dist/cli/run.js +391 -0
  94. package/dist/cli/run.js.map +1 -0
  95. package/dist/cli/trace.d.ts +5 -0
  96. package/dist/cli/trace.d.ts.map +1 -1
  97. package/dist/cli/trace.js +1 -1
  98. package/dist/cli/trace.js.map +1 -1
  99. package/dist/connections/cloud-auth.d.ts +46 -0
  100. package/dist/connections/cloud-auth.d.ts.map +1 -0
  101. package/dist/connections/cloud-auth.js +243 -0
  102. package/dist/connections/cloud-auth.js.map +1 -0
  103. package/dist/connections/cloud-client.d.ts +25 -0
  104. package/dist/connections/cloud-client.d.ts.map +1 -0
  105. package/dist/connections/cloud-client.js +59 -0
  106. package/dist/connections/cloud-client.js.map +1 -0
  107. package/dist/connections/cloud-integration-provider.d.ts +21 -0
  108. package/dist/connections/cloud-integration-provider.d.ts.map +1 -0
  109. package/dist/connections/cloud-integration-provider.js +26 -0
  110. package/dist/connections/cloud-integration-provider.js.map +1 -0
  111. package/dist/connections/index.d.ts +11 -0
  112. package/dist/connections/index.d.ts.map +1 -0
  113. package/dist/connections/index.js +9 -0
  114. package/dist/connections/index.js.map +1 -0
  115. package/dist/connections/integration-provider.d.ts +38 -0
  116. package/dist/connections/integration-provider.d.ts.map +1 -0
  117. package/dist/connections/integration-provider.js +20 -0
  118. package/dist/connections/integration-provider.js.map +1 -0
  119. package/dist/connections/local-integration-provider.d.ts +28 -0
  120. package/dist/connections/local-integration-provider.d.ts.map +1 -0
  121. package/dist/connections/local-integration-provider.js +54 -0
  122. package/dist/connections/local-integration-provider.js.map +1 -0
  123. package/dist/connections/nango-client.d.ts +14 -0
  124. package/dist/connections/nango-client.d.ts.map +1 -0
  125. package/dist/connections/nango-client.js +50 -0
  126. package/dist/connections/nango-client.js.map +1 -0
  127. package/dist/connections/resolver.d.ts +26 -0
  128. package/dist/connections/resolver.d.ts.map +1 -0
  129. package/dist/connections/resolver.js +48 -0
  130. package/dist/connections/resolver.js.map +1 -0
  131. package/dist/connections/schema.d.ts +8 -0
  132. package/dist/connections/schema.d.ts.map +1 -0
  133. package/dist/connections/schema.js +31 -0
  134. package/dist/connections/schema.js.map +1 -0
  135. package/dist/context.d.ts.map +1 -1
  136. package/dist/context.js +4 -0
  137. package/dist/context.js.map +1 -1
  138. package/dist/dev-ui/api.d.ts +16 -0
  139. package/dist/dev-ui/api.d.ts.map +1 -0
  140. package/dist/dev-ui/api.js +237 -0
  141. package/dist/dev-ui/api.js.map +1 -0
  142. package/dist/dev-ui/dag/extractor.d.ts +19 -0
  143. package/dist/dev-ui/dag/extractor.d.ts.map +1 -0
  144. package/dist/dev-ui/dag/extractor.js +716 -0
  145. package/dist/dev-ui/dag/extractor.js.map +1 -0
  146. package/dist/dev-ui/dag/types.d.ts +42 -0
  147. package/dist/dev-ui/dag/types.d.ts.map +1 -0
  148. package/dist/dev-ui/dag/types.js +2 -0
  149. package/dist/dev-ui/dag/types.js.map +1 -0
  150. package/dist/dev-ui/dev-server.d.ts +18 -0
  151. package/dist/dev-ui/dev-server.d.ts.map +1 -0
  152. package/dist/dev-ui/dev-server.js +222 -0
  153. package/dist/dev-ui/dev-server.js.map +1 -0
  154. package/dist/dev-ui/index.d.ts +3 -0
  155. package/dist/dev-ui/index.d.ts.map +1 -0
  156. package/dist/dev-ui/index.js +2 -0
  157. package/dist/dev-ui/index.js.map +1 -0
  158. package/dist/dev-ui/pty.d.ts +16 -0
  159. package/dist/dev-ui/pty.d.ts.map +1 -0
  160. package/dist/dev-ui/pty.js +87 -0
  161. package/dist/dev-ui/pty.js.map +1 -0
  162. package/dist/dev-ui/watcher.d.ts +12 -0
  163. package/dist/dev-ui/watcher.d.ts.map +1 -0
  164. package/dist/dev-ui/watcher.js +162 -0
  165. package/dist/dev-ui/watcher.js.map +1 -0
  166. package/dist/dev-ui/ws.d.ts +52 -0
  167. package/dist/dev-ui/ws.d.ts.map +1 -0
  168. package/dist/dev-ui/ws.js +32 -0
  169. package/dist/dev-ui/ws.js.map +1 -0
  170. package/dist/dev-ui-client/assets/index-C-LxzUII.css +32 -0
  171. package/dist/dev-ui-client/assets/index-DAKTQEvj.js +1 -0
  172. package/dist/dev-ui-client/assets/index-aAIwXl4O.js +127 -0
  173. package/dist/dev-ui-client/index.html +13 -0
  174. package/dist/discover.d.ts +15 -0
  175. package/dist/discover.d.ts.map +1 -0
  176. package/dist/discover.js +29 -0
  177. package/dist/discover.js.map +1 -0
  178. package/dist/factory.d.ts.map +1 -1
  179. package/dist/factory.js +25 -12
  180. package/dist/factory.js.map +1 -1
  181. package/dist/index.d.ts +5 -1
  182. package/dist/index.d.ts.map +1 -1
  183. package/dist/index.js +4 -0
  184. package/dist/index.js.map +1 -1
  185. package/dist/node.d.ts +1 -0
  186. package/dist/node.d.ts.map +1 -1
  187. package/dist/node.js +1 -0
  188. package/dist/node.js.map +1 -1
  189. package/dist/nodes/agent/executor.d.ts +2 -0
  190. package/dist/nodes/agent/executor.d.ts.map +1 -1
  191. package/dist/nodes/agent/executor.js +11 -1
  192. package/dist/nodes/agent/executor.js.map +1 -1
  193. package/dist/types.d.ts +21 -3
  194. package/dist/types.d.ts.map +1 -1
  195. package/dist/workflow.d.ts +22 -0
  196. package/dist/workflow.d.ts.map +1 -1
  197. package/dist/workflow.js +97 -2
  198. package/dist/workflow.js.map +1 -1
  199. package/package.json +26 -5
  200. package/templates/app/dbos-config.yaml +6 -0
  201. package/templates/app/package.json +4 -1
  202. package/templates/app/src/app/api/workflow/[name]/route.ts +37 -0
  203. package/templates/app/src/instrumentation.ts +6 -0
  204. package/templates/app/src/lib/pflow.ts +29 -0
@@ -1 +1 @@
1
- {"version":3,"file":"createDatabase.d.ts","sourceRoot":"","sources":["../../../../src/cli/mcp/tools/createDatabase.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAIjD,QAAA,MAAM,WAAW;;CAEP,CAAC;AAEX,QAAA,MAAM,YAAY;;;;CAMR,CAAC;AAQX,eAAO,MAAM,qBAAqB,EAAE,UAAU,CAC5C,aAAa,EACb,OAAO,WAAW,EAClB,OAAO,YAAY,CAuDpB,CAAC"}
1
+ {"version":3,"file":"createDatabase.d.ts","sourceRoot":"","sources":["../../../../src/cli/mcp/tools/createDatabase.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,QAAA,MAAM,WAAW;;CAEP,CAAC;AAEX,QAAA,MAAM,YAAY;;;;CAMR,CAAC;AAQX,eAAO,MAAM,qBAAqB,EAAE,UAAU,CAC5C,aAAa,EACb,OAAO,WAAW,EAClB,OAAO,YAAY,CAepB,CAAC"}
@@ -1,7 +1,5 @@
1
- import { exec } from "node:child_process";
2
- import { promisify } from "node:util";
3
1
  import { z } from "zod";
4
- const execAsync = promisify(exec);
2
+ import { createDatabase } from "../lib/scaffolding.js";
5
3
  const inputSchema = {
6
4
  name: z.string().optional().describe("Database name (default: app-db)"),
7
5
  };
@@ -22,44 +20,7 @@ export const createDatabaseFactory = () => {
22
20
  outputSchema,
23
21
  },
24
22
  fn: async ({ name }) => {
25
- const dbName = name || "app-db";
26
- const cmdArgs = [
27
- "tiger",
28
- "service",
29
- "create",
30
- "--name",
31
- dbName,
32
- "--cpu",
33
- "shared",
34
- "--memory",
35
- "shared",
36
- "--addons",
37
- "time-series,ai",
38
- "--no-wait",
39
- "-o",
40
- "json",
41
- ];
42
- try {
43
- const { stdout, stderr } = await execAsync(cmdArgs.join(" "));
44
- const result = JSON.parse(stdout);
45
- if (!result.service_id) {
46
- return {
47
- success: false,
48
- error: `No service_id in response: ${stdout}${stderr}`,
49
- };
50
- }
51
- return {
52
- success: true,
53
- service_id: result.service_id,
54
- };
55
- }
56
- catch (err) {
57
- const error = err;
58
- return {
59
- success: false,
60
- error: `Failed to create database: ${error.message}\n${error.stdout || ""}${error.stderr || ""}`,
61
- };
62
- }
23
+ return createDatabase({ name });
63
24
  },
64
25
  };
65
26
  };
@@ -1 +1 @@
1
- {"version":3,"file":"createDatabase.js","sourceRoot":"","sources":["../../../../src/cli/mcp/tools/createDatabase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAElC,MAAM,WAAW,GAAG;IAClB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;CAC/D,CAAC;AAEX,MAAM,YAAY,GAAG;IACnB,OAAO,EAAE,CAAC;SACP,OAAO,EAAE;SACT,QAAQ,CAAC,+CAA+C,CAAC;IAC5D,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;IACxE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;CACjE,CAAC;AAQX,MAAM,CAAC,MAAM,qBAAqB,GAI9B,GAAG,EAAE;IACP,OAAO;QACL,IAAI,EAAE,iBAAiB;QACvB,MAAM,EAAE;YACN,KAAK,EAAE,iBAAiB;YACxB,WAAW,EACT,8GAA8G;YAChH,WAAW;YACX,YAAY;SACb;QACD,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAyB,EAAE;YAC5C,MAAM,MAAM,GAAG,IAAI,IAAI,QAAQ,CAAC;YAEhC,MAAM,OAAO,GAAG;gBACd,OAAO;gBACP,SAAS;gBACT,QAAQ;gBACR,QAAQ;gBACR,MAAM;gBACN,OAAO;gBACP,QAAQ;gBACR,UAAU;gBACV,QAAQ;gBACR,UAAU;gBACV,gBAAgB;gBAChB,WAAW;gBACX,IAAI;gBACJ,MAAM;aACP,CAAC;YAEF,IAAI,CAAC;gBACH,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC9D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAA4B,CAAC;gBAE7D,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;oBACvB,OAAO;wBACL,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE,8BAA8B,MAAM,GAAG,MAAM,EAAE;qBACvD,CAAC;gBACJ,CAAC;gBAED,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,UAAU,EAAE,MAAM,CAAC,UAAU;iBAC9B,CAAC;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,KAAK,GAAG,GAAmD,CAAC;gBAClE,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,8BAA8B,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,MAAM,IAAI,EAAE,GAAG,KAAK,CAAC,MAAM,IAAI,EAAE,EAAE;iBACjG,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"createDatabase.js","sourceRoot":"","sources":["../../../../src/cli/mcp/tools/createDatabase.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAGvD,MAAM,WAAW,GAAG;IAClB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;CAC/D,CAAC;AAEX,MAAM,YAAY,GAAG;IACnB,OAAO,EAAE,CAAC;SACP,OAAO,EAAE;SACT,QAAQ,CAAC,+CAA+C,CAAC;IAC5D,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;IACxE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;CACjE,CAAC;AAQX,MAAM,CAAC,MAAM,qBAAqB,GAI9B,GAAG,EAAE;IACP,OAAO;QACL,IAAI,EAAE,iBAAiB;QACvB,MAAM,EAAE;YACN,KAAK,EAAE,iBAAiB;YACxB,WAAW,EACT,8GAA8G;YAChH,WAAW;YACX,YAAY;SACb;QACD,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAyB,EAAE;YAC5C,OAAO,cAAc,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QAClC,CAAC;KACF,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,19 @@
1
+ import type { ApiFactory } from "@tigerdata/mcp-boilerplate";
2
+ import { z } from "zod";
3
+ import type { ServerContext } from "../types.js";
4
+ declare const inputSchema: {
5
+ readonly integration_id: z.ZodString;
6
+ readonly workflow_name: z.ZodString;
7
+ readonly node_name: z.ZodString;
8
+ };
9
+ declare const outputSchema: {
10
+ readonly connection_id: z.ZodOptional<z.ZodString>;
11
+ readonly provider: z.ZodOptional<z.ZodString>;
12
+ readonly connection_config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
13
+ readonly metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
14
+ readonly access_token: z.ZodOptional<z.ZodString>;
15
+ readonly error: z.ZodOptional<z.ZodString>;
16
+ };
17
+ export declare const getConnectionInfoFactory: ApiFactory<ServerContext, typeof inputSchema, typeof outputSchema>;
18
+ export {};
19
+ //# sourceMappingURL=getConnectionInfo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getConnectionInfo.d.ts","sourceRoot":"","sources":["../../../../src/cli/mcp/tools/getConnectionInfo.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAKjD,QAAA,MAAM,WAAW;;;;CAaP,CAAC;AAEX,QAAA,MAAM,YAAY;;;;;;;CAgBR,CAAC;AA8BX,eAAO,MAAM,wBAAwB,EAAE,UAAU,CAC/C,aAAa,EACb,OAAO,WAAW,EAClB,OAAO,YAAY,CA+DpB,CAAC"}
@@ -0,0 +1,111 @@
1
+ import { existsSync, readFileSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { z } from "zod";
4
+ import * as dotenv from "dotenv";
5
+ import pg from "pg";
6
+ import { createIntegrationProvider } from "../../../connections/integration-provider.js";
7
+ import { resolveConnectionId } from "../../../connections/resolver.js";
8
+ import { getAppSchema } from "../../app.js";
9
+ const inputSchema = {
10
+ integration_id: z
11
+ .string()
12
+ .describe("The integration ID to look up (e.g., 'salesforce', 'slack'). " +
13
+ "Must match an integration_id in the opflow_connections table."),
14
+ workflow_name: z
15
+ .string()
16
+ .describe("Workflow name for connection lookup. Used to resolve workflow/node-scoped connections, with fallback to global default."),
17
+ node_name: z
18
+ .string()
19
+ .describe("Node name for connection lookup. Used to resolve workflow/node-scoped connections, with fallback to global default."),
20
+ };
21
+ const outputSchema = {
22
+ connection_id: z.string().optional().describe("The Nango connection ID"),
23
+ provider: z.string().optional().describe("Provider name (e.g., salesforce)"),
24
+ connection_config: z
25
+ .record(z.string(), z.unknown())
26
+ .optional()
27
+ .describe("Provider-specific config (e.g., instance_url for Salesforce)"),
28
+ metadata: z
29
+ .record(z.string(), z.unknown())
30
+ .optional()
31
+ .describe("Custom metadata stored on the connection"),
32
+ access_token: z
33
+ .string()
34
+ .optional()
35
+ .describe("OAuth access token for the connection (for dev-time operations like schema fetching)"),
36
+ error: z.string().optional().describe("Error message if lookup failed"),
37
+ };
38
+ /**
39
+ * Load env vars from the project's .env file
40
+ */
41
+ function loadEnv() {
42
+ const envPath = join(process.cwd(), ".env");
43
+ if (!existsSync(envPath))
44
+ return {};
45
+ const content = readFileSync(envPath, "utf-8");
46
+ return dotenv.parse(content);
47
+ }
48
+ /**
49
+ * Create an IntegrationProvider based on available env vars.
50
+ * NANGO_SECRET_KEY → local, otherwise → cloud (auto-auth).
51
+ */
52
+ async function createProvider(env) {
53
+ const nangoSecretKey = env.NANGO_SECRET_KEY ?? undefined;
54
+ return createIntegrationProvider(nangoSecretKey);
55
+ }
56
+ export const getConnectionInfoFactory = () => {
57
+ return {
58
+ name: "get_connection_info",
59
+ config: {
60
+ title: "Get Connection Info",
61
+ description: "Get metadata for a configured integration connection. " +
62
+ "Resolves the connection ID from the opflow_connections table, " +
63
+ "then fetches connection details via IntegrationProvider (local Nango or cloud).",
64
+ inputSchema,
65
+ outputSchema,
66
+ },
67
+ fn: async ({ integration_id, workflow_name, node_name }) => {
68
+ const env = loadEnv();
69
+ const databaseUrl = env.DATABASE_URL ?? process.env.DATABASE_URL;
70
+ if (!databaseUrl) {
71
+ return {
72
+ error: "DATABASE_URL not found in .env file. " +
73
+ "Run setup_app_schema to configure the database.",
74
+ };
75
+ }
76
+ // Look up connection_id using the same resolution as runtime:
77
+ // exact (workflow_name, node_name) match first, then global (* / *) fallback
78
+ const appSchema = getAppSchema();
79
+ let connectionId = null;
80
+ const pool = new pg.Pool({ connectionString: databaseUrl, max: 1 });
81
+ try {
82
+ connectionId = await resolveConnectionId(pool, workflow_name, node_name, integration_id, appSchema);
83
+ }
84
+ finally {
85
+ await pool.end();
86
+ }
87
+ if (!connectionId) {
88
+ return {
89
+ error: `No connection configured for integration "${integration_id}". ` +
90
+ `Use the Dev UI to connect an account first.`,
91
+ };
92
+ }
93
+ try {
94
+ const provider = await createProvider(env);
95
+ const credentials = await provider.fetchCredentials(integration_id, connectionId);
96
+ return {
97
+ connection_id: connectionId,
98
+ provider: integration_id,
99
+ connection_config: credentials.connectionConfig ?? {},
100
+ access_token: credentials.token,
101
+ };
102
+ }
103
+ catch (err) {
104
+ return {
105
+ error: `Failed to fetch connection: ${err instanceof Error ? err.message : String(err)}`,
106
+ };
107
+ }
108
+ },
109
+ };
110
+ };
111
+ //# sourceMappingURL=getConnectionInfo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getConnectionInfo.js","sourceRoot":"","sources":["../../../../src/cli/mcp/tools/getConnectionInfo.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import type { ApiFactory } from "@tigerdata/mcp-boilerplate";
2
+ import { z } from "zod";
3
+ import type { ServerContext } from "../types.js";
4
+ declare const inputSchema: {
5
+ readonly run_id: z.ZodString;
6
+ };
7
+ declare const outputSchema: {
8
+ readonly run: z.ZodNullable<z.ZodObject<{
9
+ workflow_uuid: z.ZodString;
10
+ name: z.ZodString;
11
+ status: z.ZodString;
12
+ created_at: z.ZodString;
13
+ updated_at: z.ZodString;
14
+ output: z.ZodOptional<z.ZodUnknown>;
15
+ error: z.ZodOptional<z.ZodNullable<z.ZodString>>;
16
+ }, z.core.$strip>>;
17
+ readonly ambiguous: z.ZodOptional<z.ZodBoolean>;
18
+ readonly error: z.ZodOptional<z.ZodString>;
19
+ };
20
+ export declare const getRunFactory: ApiFactory<ServerContext, typeof inputSchema, typeof outputSchema>;
21
+ export {};
22
+ //# sourceMappingURL=getRun.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getRun.d.ts","sourceRoot":"","sources":["../../../../src/cli/mcp/tools/getRun.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAIjD,QAAA,MAAM,WAAW;;CAIP,CAAC;AAEX,QAAA,MAAM,YAAY;;;;;;;;;;;;CAkBR,CAAC;AAkBX,eAAO,MAAM,aAAa,EAAE,UAAU,CACpC,aAAa,EACb,OAAO,WAAW,EAClB,OAAO,YAAY,CAuDpB,CAAC"}
@@ -0,0 +1,80 @@
1
+ import { z } from "zod";
2
+ import { getRun } from "../../runs.js";
3
+ import { requireDatabaseUrl, parseOutput } from "./utils.js";
4
+ const inputSchema = {
5
+ run_id: z
6
+ .string()
7
+ .describe("Workflow run UUID or short prefix (like git short hashes)"),
8
+ };
9
+ const outputSchema = {
10
+ run: z
11
+ .object({
12
+ workflow_uuid: z.string(),
13
+ name: z.string(),
14
+ status: z.string(),
15
+ created_at: z.string(),
16
+ updated_at: z.string(),
17
+ output: z.unknown().optional(),
18
+ error: z.string().nullable().optional(),
19
+ })
20
+ .nullable()
21
+ .describe("Workflow run details, or null if not found"),
22
+ ambiguous: z
23
+ .boolean()
24
+ .optional()
25
+ .describe("True if the run ID prefix matched multiple runs"),
26
+ error: z.string().optional().describe("Error message if query failed"),
27
+ };
28
+ export const getRunFactory = () => {
29
+ return {
30
+ name: "get_run",
31
+ config: {
32
+ title: "Get Run",
33
+ description: "Get details of a specific workflow run by ID or short prefix. " +
34
+ "Supports git-style short hashes (e.g., first 8 characters). " +
35
+ "Use get_trace for full execution trace with operations.",
36
+ inputSchema,
37
+ outputSchema,
38
+ },
39
+ fn: async ({ run_id }) => {
40
+ let databaseUrl;
41
+ try {
42
+ databaseUrl = requireDatabaseUrl();
43
+ }
44
+ catch (err) {
45
+ return { run: null, error: err instanceof Error ? err.message : String(err) };
46
+ }
47
+ try {
48
+ const { run, ambiguous } = await getRun(databaseUrl, run_id);
49
+ if (ambiguous) {
50
+ return {
51
+ run: null,
52
+ ambiguous: true,
53
+ error: `Ambiguous prefix "${run_id}" — matches multiple runs. Use a longer prefix.`,
54
+ };
55
+ }
56
+ if (!run) {
57
+ return { run: null };
58
+ }
59
+ return {
60
+ run: {
61
+ workflow_uuid: run.workflow_uuid,
62
+ name: run.name,
63
+ status: run.status,
64
+ created_at: String(run.created_at),
65
+ updated_at: String(run.updated_at),
66
+ output: run.output ? parseOutput(run.output) : undefined,
67
+ error: run.error,
68
+ },
69
+ };
70
+ }
71
+ catch (err) {
72
+ return {
73
+ run: null,
74
+ error: err instanceof Error ? err.message : String(err),
75
+ };
76
+ }
77
+ },
78
+ };
79
+ };
80
+ //# sourceMappingURL=getRun.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getRun.js","sourceRoot":"","sources":["../../../../src/cli/mcp/tools/getRun.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE7D,MAAM,WAAW,GAAG;IAClB,MAAM,EAAE,CAAC;SACN,MAAM,EAAE;SACR,QAAQ,CAAC,2DAA2D,CAAC;CAChE,CAAC;AAEX,MAAM,YAAY,GAAG;IACnB,GAAG,EAAE,CAAC;SACH,MAAM,CAAC;QACN,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;QACzB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;QAClB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;QACtB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;QACtB,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;QAC9B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;KACxC,CAAC;SACD,QAAQ,EAAE;SACV,QAAQ,CAAC,4CAA4C,CAAC;IACzD,SAAS,EAAE,CAAC;SACT,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CAAC,iDAAiD,CAAC;IAC9D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;CAC9D,CAAC;AAkBX,MAAM,CAAC,MAAM,aAAa,GAItB,GAAG,EAAE;IACP,OAAO;QACL,IAAI,EAAE,SAAS;QACf,MAAM,EAAE;YACN,KAAK,EAAE,SAAS;YAChB,WAAW,EACT,gEAAgE;gBAChE,8DAA8D;gBAC9D,yDAAyD;YAC3D,WAAW;YACX,YAAY;SACb;QACD,EAAE,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAyB,EAAE;YAC9C,IAAI,WAAmB,CAAC;YACxB,IAAI,CAAC;gBACH,WAAW,GAAG,kBAAkB,EAAE,CAAC;YACrC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YAChF,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;gBAE7D,IAAI,SAAS,EAAE,CAAC;oBACd,OAAO;wBACL,GAAG,EAAE,IAAI;wBACT,SAAS,EAAE,IAAI;wBACf,KAAK,EAAE,qBAAqB,MAAM,iDAAiD;qBACpF,CAAC;gBACJ,CAAC;gBAED,IAAI,CAAC,GAAG,EAAE,CAAC;oBACT,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;gBACvB,CAAC;gBAED,OAAO;oBACL,GAAG,EAAE;wBACH,aAAa,EAAE,GAAG,CAAC,aAAa;wBAChC,IAAI,EAAE,GAAG,CAAC,IAAI;wBACd,MAAM,EAAE,GAAG,CAAC,MAAM;wBAClB,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC;wBAClC,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC;wBAClC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;wBACxD,KAAK,EAAE,GAAG,CAAC,KAAK;qBACjB;iBACF,CAAC;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO;oBACL,GAAG,EAAE,IAAI;oBACT,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;iBACxD,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,32 @@
1
+ import type { ApiFactory } from "@tigerdata/mcp-boilerplate";
2
+ import { z } from "zod";
3
+ import type { ServerContext } from "../types.js";
4
+ declare const inputSchema: {
5
+ readonly run_id: z.ZodString;
6
+ };
7
+ declare const outputSchema: {
8
+ readonly workflow: z.ZodNullable<z.ZodObject<{
9
+ workflow_uuid: z.ZodString;
10
+ name: z.ZodString;
11
+ status: z.ZodString;
12
+ created_at: z.ZodString;
13
+ duration_ms: z.ZodNullable<z.ZodNumber>;
14
+ output: z.ZodOptional<z.ZodUnknown>;
15
+ error: z.ZodOptional<z.ZodNullable<z.ZodString>>;
16
+ }, z.core.$strip>>;
17
+ readonly operations: z.ZodArray<z.ZodObject<{
18
+ workflow_uuid: z.ZodString;
19
+ depth: z.ZodNumber;
20
+ function_id: z.ZodNumber;
21
+ function_name: z.ZodString;
22
+ child_workflow_id: z.ZodNullable<z.ZodString>;
23
+ duration_ms: z.ZodNullable<z.ZodNumber>;
24
+ output_preview: z.ZodNullable<z.ZodString>;
25
+ error: z.ZodNullable<z.ZodString>;
26
+ }, z.core.$strip>>;
27
+ readonly ambiguous: z.ZodOptional<z.ZodBoolean>;
28
+ readonly error: z.ZodOptional<z.ZodString>;
29
+ };
30
+ export declare const getTraceFactory: ApiFactory<ServerContext, typeof inputSchema, typeof outputSchema>;
31
+ export {};
32
+ //# sourceMappingURL=getTrace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getTrace.d.ts","sourceRoot":"","sources":["../../../../src/cli/mcp/tools/getTrace.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAIjD,QAAA,MAAM,WAAW;;CAIP,CAAC;AAEX,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;CAgCR,CAAC;AA8BX,eAAO,MAAM,eAAe,EAAE,UAAU,CACtC,aAAa,EACb,OAAO,WAAW,EAClB,OAAO,YAAY,CAmEpB,CAAC"}
@@ -0,0 +1,104 @@
1
+ import { z } from "zod";
2
+ import { getTrace } from "../../trace.js";
3
+ import { requireDatabaseUrl, parseOutput } from "./utils.js";
4
+ const inputSchema = {
5
+ run_id: z
6
+ .string()
7
+ .describe("Workflow run UUID or short prefix (like git short hashes)"),
8
+ };
9
+ const outputSchema = {
10
+ workflow: z
11
+ .object({
12
+ workflow_uuid: z.string(),
13
+ name: z.string(),
14
+ status: z.string(),
15
+ created_at: z.string(),
16
+ duration_ms: z.number().nullable(),
17
+ output: z.unknown().optional(),
18
+ error: z.string().nullable().optional(),
19
+ })
20
+ .nullable()
21
+ .describe("Workflow metadata, or null if not found"),
22
+ operations: z
23
+ .array(z.object({
24
+ workflow_uuid: z.string(),
25
+ depth: z.number(),
26
+ function_id: z.number(),
27
+ function_name: z.string(),
28
+ child_workflow_id: z.string().nullable(),
29
+ duration_ms: z.number().nullable(),
30
+ output_preview: z.string().nullable(),
31
+ error: z.string().nullable(),
32
+ }))
33
+ .describe("Ordered list of operations in the execution tree"),
34
+ ambiguous: z
35
+ .boolean()
36
+ .optional()
37
+ .describe("True if the run ID prefix matched multiple runs"),
38
+ error: z.string().optional().describe("Error message if query failed"),
39
+ };
40
+ export const getTraceFactory = () => {
41
+ return {
42
+ name: "get_trace",
43
+ config: {
44
+ title: "Get Trace",
45
+ description: "Get the full execution trace for a workflow run, including all operations, " +
46
+ "child workflows, timings, and outputs. " +
47
+ "Supports git-style short hash prefixes for run IDs.",
48
+ inputSchema,
49
+ outputSchema,
50
+ },
51
+ fn: async ({ run_id }) => {
52
+ let databaseUrl;
53
+ try {
54
+ databaseUrl = requireDatabaseUrl();
55
+ }
56
+ catch (err) {
57
+ return { workflow: null, operations: [], error: err instanceof Error ? err.message : String(err) };
58
+ }
59
+ try {
60
+ const trace = await getTrace(databaseUrl, run_id);
61
+ if (trace.ambiguous) {
62
+ return {
63
+ workflow: null,
64
+ operations: [],
65
+ ambiguous: true,
66
+ error: `Ambiguous prefix "${run_id}" — matches multiple runs. Use a longer prefix.`,
67
+ };
68
+ }
69
+ if (!trace.workflow) {
70
+ return { workflow: null, operations: [] };
71
+ }
72
+ return {
73
+ workflow: {
74
+ workflow_uuid: trace.workflow.workflow_uuid,
75
+ name: trace.workflow.name,
76
+ status: trace.workflow.status,
77
+ created_at: String(trace.workflow.created_at),
78
+ duration_ms: trace.workflow.duration_ms != null ? Number(trace.workflow.duration_ms) : null,
79
+ output: trace.workflow.output ? parseOutput(trace.workflow.output) : undefined,
80
+ error: trace.workflow.error,
81
+ },
82
+ operations: trace.operations.map((op) => ({
83
+ workflow_uuid: op.workflow_uuid,
84
+ depth: Number(op.depth),
85
+ function_id: Number(op.function_id),
86
+ function_name: op.function_name,
87
+ child_workflow_id: op.child_workflow_id,
88
+ duration_ms: op.duration_ms != null ? Number(op.duration_ms) : null,
89
+ output_preview: op.output_preview,
90
+ error: op.error,
91
+ })),
92
+ };
93
+ }
94
+ catch (err) {
95
+ return {
96
+ workflow: null,
97
+ operations: [],
98
+ error: err instanceof Error ? err.message : String(err),
99
+ };
100
+ }
101
+ },
102
+ };
103
+ };
104
+ //# sourceMappingURL=getTrace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getTrace.js","sourceRoot":"","sources":["../../../../src/cli/mcp/tools/getTrace.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  export declare function getApiFactories(): Promise<readonly [import("@tigerdata/mcp-boilerplate").ApiFactory<import("../types.js").ServerContext, {
2
2
  readonly app_name: import("zod").ZodString;
3
+ readonly directory: import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodString>>;
3
4
  readonly install_deps: import("zod").ZodDefault<import("zod").ZodBoolean>;
4
5
  }, {
5
6
  readonly success: import("zod").ZodBoolean;
@@ -12,7 +13,7 @@ export declare function getApiFactories(): Promise<readonly [import("@tigerdata/
12
13
  readonly service_id: import("zod").ZodOptional<import("zod").ZodString>;
13
14
  readonly error: import("zod").ZodOptional<import("zod").ZodString>;
14
15
  }>, import("@tigerdata/mcp-boilerplate").ApiFactory<import("../types.js").ServerContext, {
15
- readonly application_directory: import("zod").ZodString;
16
+ readonly directory: import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodString>>;
16
17
  readonly service_id: import("zod").ZodString;
17
18
  readonly app_name: import("zod").ZodString;
18
19
  }, {
@@ -20,5 +21,97 @@ export declare function getApiFactories(): Promise<readonly [import("@tigerdata/
20
21
  readonly message: import("zod").ZodString;
21
22
  readonly schema_name: import("zod").ZodOptional<import("zod").ZodString>;
22
23
  readonly user_name: import("zod").ZodOptional<import("zod").ZodString>;
24
+ }>, import("@tigerdata/mcp-boilerplate").ApiFactory<import("../types.js").ServerContext, {}, {
25
+ readonly integrations: import("zod").ZodArray<import("zod").ZodObject<{
26
+ id: import("zod").ZodString;
27
+ provider: import("zod").ZodString;
28
+ }, import("zod/v4/core").$strip>>;
29
+ readonly error: import("zod").ZodOptional<import("zod").ZodString>;
30
+ }>, import("@tigerdata/mcp-boilerplate").ApiFactory<import("../types.js").ServerContext, {
31
+ readonly integration_id: import("zod").ZodString;
32
+ readonly workflow_name: import("zod").ZodString;
33
+ readonly node_name: import("zod").ZodString;
34
+ }, {
35
+ readonly connection_id: import("zod").ZodOptional<import("zod").ZodString>;
36
+ readonly provider: import("zod").ZodOptional<import("zod").ZodString>;
37
+ readonly connection_config: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
38
+ readonly metadata: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
39
+ readonly access_token: import("zod").ZodOptional<import("zod").ZodString>;
40
+ readonly error: import("zod").ZodOptional<import("zod").ZodString>;
41
+ }>, import("@tigerdata/mcp-boilerplate").ApiFactory<import("../types.js").ServerContext, {}, {
42
+ readonly workflows: import("zod").ZodArray<import("zod").ZodObject<{
43
+ name: import("zod").ZodString;
44
+ version: import("zod").ZodOptional<import("zod").ZodNumber>;
45
+ description: import("zod").ZodOptional<import("zod").ZodString>;
46
+ }, import("zod/v4/core").$strip>>;
47
+ readonly error: import("zod").ZodOptional<import("zod").ZodString>;
48
+ }>, import("@tigerdata/mcp-boilerplate").ApiFactory<import("../types.js").ServerContext, {
49
+ readonly workflow_name: import("zod").ZodString;
50
+ readonly input: import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>>;
51
+ }, {
52
+ readonly run_id: import("zod").ZodOptional<import("zod").ZodString>;
53
+ readonly status: import("zod").ZodString;
54
+ readonly result: import("zod").ZodOptional<import("zod").ZodUnknown>;
55
+ readonly error: import("zod").ZodOptional<import("zod").ZodString>;
56
+ }>, import("@tigerdata/mcp-boilerplate").ApiFactory<import("../types.js").ServerContext, {
57
+ readonly node_name: import("zod").ZodString;
58
+ readonly workflow_name: import("zod").ZodOptional<import("zod").ZodString>;
59
+ readonly input: import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>>;
60
+ }, {
61
+ readonly run_id: import("zod").ZodOptional<import("zod").ZodString>;
62
+ readonly status: import("zod").ZodString;
63
+ readonly result: import("zod").ZodOptional<import("zod").ZodUnknown>;
64
+ readonly error: import("zod").ZodOptional<import("zod").ZodString>;
65
+ }>, import("@tigerdata/mcp-boilerplate").ApiFactory<import("../types.js").ServerContext, {
66
+ readonly limit: import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodNumber>>;
67
+ readonly workflow_name: import("zod").ZodOptional<import("zod").ZodString>;
68
+ }, {
69
+ readonly runs: import("zod").ZodArray<import("zod").ZodObject<{
70
+ workflow_uuid: import("zod").ZodString;
71
+ name: import("zod").ZodString;
72
+ status: import("zod").ZodString;
73
+ created_at: import("zod").ZodString;
74
+ output: import("zod").ZodOptional<import("zod").ZodUnknown>;
75
+ error: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
76
+ }, import("zod/v4/core").$strip>>;
77
+ readonly error: import("zod").ZodOptional<import("zod").ZodString>;
78
+ }>, import("@tigerdata/mcp-boilerplate").ApiFactory<import("../types.js").ServerContext, {
79
+ readonly run_id: import("zod").ZodString;
80
+ }, {
81
+ readonly run: import("zod").ZodNullable<import("zod").ZodObject<{
82
+ workflow_uuid: import("zod").ZodString;
83
+ name: import("zod").ZodString;
84
+ status: import("zod").ZodString;
85
+ created_at: import("zod").ZodString;
86
+ updated_at: import("zod").ZodString;
87
+ output: import("zod").ZodOptional<import("zod").ZodUnknown>;
88
+ error: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
89
+ }, import("zod/v4/core").$strip>>;
90
+ readonly ambiguous: import("zod").ZodOptional<import("zod").ZodBoolean>;
91
+ readonly error: import("zod").ZodOptional<import("zod").ZodString>;
92
+ }>, import("@tigerdata/mcp-boilerplate").ApiFactory<import("../types.js").ServerContext, {
93
+ readonly run_id: import("zod").ZodString;
94
+ }, {
95
+ readonly workflow: import("zod").ZodNullable<import("zod").ZodObject<{
96
+ workflow_uuid: import("zod").ZodString;
97
+ name: import("zod").ZodString;
98
+ status: import("zod").ZodString;
99
+ created_at: import("zod").ZodString;
100
+ duration_ms: import("zod").ZodNullable<import("zod").ZodNumber>;
101
+ output: import("zod").ZodOptional<import("zod").ZodUnknown>;
102
+ error: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
103
+ }, import("zod/v4/core").$strip>>;
104
+ readonly operations: import("zod").ZodArray<import("zod").ZodObject<{
105
+ workflow_uuid: import("zod").ZodString;
106
+ depth: import("zod").ZodNumber;
107
+ function_id: import("zod").ZodNumber;
108
+ function_name: import("zod").ZodString;
109
+ child_workflow_id: import("zod").ZodNullable<import("zod").ZodString>;
110
+ duration_ms: import("zod").ZodNullable<import("zod").ZodNumber>;
111
+ output_preview: import("zod").ZodNullable<import("zod").ZodString>;
112
+ error: import("zod").ZodNullable<import("zod").ZodString>;
113
+ }, import("zod/v4/core").$strip>>;
114
+ readonly ambiguous: import("zod").ZodOptional<import("zod").ZodBoolean>;
115
+ readonly error: import("zod").ZodOptional<import("zod").ZodString>;
23
116
  }>]>;
24
117
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/cli/mcp/tools/index.ts"],"names":[],"mappings":"AAIA,wBAAsB,eAAe;;;;;;;;;;;;;;;;;;;;;;KAMpC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/cli/mcp/tools/index.ts"],"names":[],"mappings":"AAaA,wBAAsB,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAepC"}
@@ -1,11 +1,27 @@
1
1
  import { createAppFactory } from "./createApp.js";
2
2
  import { createDatabaseFactory } from "./createDatabase.js";
3
3
  import { setupAppSchemaFactory } from "./setupAppSchema.js";
4
+ import { listIntegrationsFactory } from "./listIntegrations.js";
5
+ import { getConnectionInfoFactory } from "./getConnectionInfo.js";
6
+ import { listWorkflowsFactory } from "./listWorkflows.js";
7
+ import { runWorkflowFactory } from "./runWorkflow.js";
8
+ import { runNodeFactory } from "./runNode.js";
9
+ import { listRunsFactory } from "./listRuns.js";
10
+ import { getRunFactory } from "./getRun.js";
11
+ import { getTraceFactory } from "./getTrace.js";
4
12
  export async function getApiFactories() {
5
13
  return [
6
14
  createAppFactory,
7
15
  createDatabaseFactory,
8
16
  setupAppSchemaFactory,
17
+ listIntegrationsFactory,
18
+ getConnectionInfoFactory,
19
+ listWorkflowsFactory,
20
+ runWorkflowFactory,
21
+ runNodeFactory,
22
+ listRunsFactory,
23
+ getRunFactory,
24
+ getTraceFactory,
9
25
  ];
10
26
  }
11
27
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/cli/mcp/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,OAAO;QACL,gBAAgB;QAChB,qBAAqB;QACrB,qBAAqB;KACb,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/cli/mcp/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAElE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,OAAO;QACL,gBAAgB;QAChB,qBAAqB;QACrB,qBAAqB;QACrB,uBAAuB;QACvB,wBAAwB;QAExB,oBAAoB;QACpB,kBAAkB;QAClB,cAAc;QACd,eAAe;QACf,aAAa;QACb,eAAe;KACP,CAAC;AACb,CAAC"}