0pflow 0.1.0-dev.b4bf1ab → 0.1.0-dev.bdfaa95

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 (254) 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 +13 -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 +75 -10
  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/deploy.d.ts +27 -0
  22. package/dist/cli/deploy.d.ts.map +1 -0
  23. package/dist/cli/deploy.js +332 -0
  24. package/dist/cli/deploy.js.map +1 -0
  25. package/dist/cli/discovery.d.ts +10 -0
  26. package/dist/cli/discovery.d.ts.map +1 -1
  27. package/dist/cli/discovery.js +42 -0
  28. package/dist/cli/discovery.js.map +1 -1
  29. package/dist/cli/env.js +1 -1
  30. package/dist/cli/env.js.map +1 -1
  31. package/dist/cli/index.d.ts.map +1 -1
  32. package/dist/cli/index.js +142 -11
  33. package/dist/cli/index.js.map +1 -1
  34. package/dist/cli/install.d.ts +4 -0
  35. package/dist/cli/install.d.ts.map +1 -1
  36. package/dist/cli/install.js +63 -32
  37. package/dist/cli/install.js.map +1 -1
  38. package/dist/cli/mcp/config.d.ts +0 -1
  39. package/dist/cli/mcp/config.d.ts.map +1 -1
  40. package/dist/cli/mcp/config.js +2 -4
  41. package/dist/cli/mcp/config.js.map +1 -1
  42. package/dist/cli/mcp/lib/scaffolding.d.ts +33 -0
  43. package/dist/cli/mcp/lib/scaffolding.d.ts.map +1 -0
  44. package/dist/cli/mcp/lib/scaffolding.js +231 -0
  45. package/dist/cli/mcp/lib/scaffolding.js.map +1 -0
  46. package/dist/cli/mcp/lib/templates.d.ts +1 -0
  47. package/dist/cli/mcp/lib/templates.d.ts.map +1 -1
  48. package/dist/cli/mcp/lib/templates.js.map +1 -1
  49. package/dist/cli/mcp/tools/createApp.d.ts +1 -0
  50. package/dist/cli/mcp/tools/createApp.d.ts.map +1 -1
  51. package/dist/cli/mcp/tools/createApp.js +12 -55
  52. package/dist/cli/mcp/tools/createApp.js.map +1 -1
  53. package/dist/cli/mcp/tools/createDatabase.d.ts.map +1 -1
  54. package/dist/cli/mcp/tools/createDatabase.js +2 -41
  55. package/dist/cli/mcp/tools/createDatabase.js.map +1 -1
  56. package/dist/cli/mcp/tools/getConnectionInfo.d.ts +19 -0
  57. package/dist/cli/mcp/tools/getConnectionInfo.d.ts.map +1 -0
  58. package/dist/cli/mcp/tools/getConnectionInfo.js +111 -0
  59. package/dist/cli/mcp/tools/getConnectionInfo.js.map +1 -0
  60. package/dist/cli/mcp/tools/getRun.d.ts +22 -0
  61. package/dist/cli/mcp/tools/getRun.d.ts.map +1 -0
  62. package/dist/cli/mcp/tools/getRun.js +80 -0
  63. package/dist/cli/mcp/tools/getRun.js.map +1 -0
  64. package/dist/cli/mcp/tools/getTrace.d.ts +32 -0
  65. package/dist/cli/mcp/tools/getTrace.d.ts.map +1 -0
  66. package/dist/cli/mcp/tools/getTrace.js +104 -0
  67. package/dist/cli/mcp/tools/getTrace.js.map +1 -0
  68. package/dist/cli/mcp/tools/index.d.ts +94 -1
  69. package/dist/cli/mcp/tools/index.d.ts.map +1 -1
  70. package/dist/cli/mcp/tools/index.js +16 -0
  71. package/dist/cli/mcp/tools/index.js.map +1 -1
  72. package/dist/cli/mcp/tools/listIntegrations.d.ts +14 -0
  73. package/dist/cli/mcp/tools/listIntegrations.d.ts.map +1 -0
  74. package/dist/cli/mcp/tools/listIntegrations.js +53 -0
  75. package/dist/cli/mcp/tools/listIntegrations.js.map +1 -0
  76. package/dist/cli/mcp/tools/listRuns.d.ts +21 -0
  77. package/dist/cli/mcp/tools/listRuns.d.ts.map +1 -0
  78. package/dist/cli/mcp/tools/listRuns.js +72 -0
  79. package/dist/cli/mcp/tools/listRuns.js.map +1 -0
  80. package/dist/cli/mcp/tools/listWorkflows.d.ts +15 -0
  81. package/dist/cli/mcp/tools/listWorkflows.d.ts.map +1 -0
  82. package/dist/cli/mcp/tools/listWorkflows.js +45 -0
  83. package/dist/cli/mcp/tools/listWorkflows.js.map +1 -0
  84. package/dist/cli/mcp/tools/runNode.d.ts +17 -0
  85. package/dist/cli/mcp/tools/runNode.d.ts.map +1 -0
  86. package/dist/cli/mcp/tools/runNode.js +74 -0
  87. package/dist/cli/mcp/tools/runNode.js.map +1 -0
  88. package/dist/cli/mcp/tools/runWorkflow.d.ts +16 -0
  89. package/dist/cli/mcp/tools/runWorkflow.d.ts.map +1 -0
  90. package/dist/cli/mcp/tools/runWorkflow.js +66 -0
  91. package/dist/cli/mcp/tools/runWorkflow.js.map +1 -0
  92. package/dist/cli/mcp/tools/setupAppSchema.d.ts +1 -1
  93. package/dist/cli/mcp/tools/setupAppSchema.d.ts.map +1 -1
  94. package/dist/cli/mcp/tools/setupAppSchema.js +11 -129
  95. package/dist/cli/mcp/tools/setupAppSchema.js.map +1 -1
  96. package/dist/cli/mcp/tools/utils.d.ts +7 -0
  97. package/dist/cli/mcp/tools/utils.d.ts.map +1 -0
  98. package/dist/cli/mcp/tools/utils.js +28 -0
  99. package/dist/cli/mcp/tools/utils.js.map +1 -0
  100. package/dist/cli/run.d.ts +2 -0
  101. package/dist/cli/run.d.ts.map +1 -0
  102. package/dist/cli/run.js +560 -0
  103. package/dist/cli/run.js.map +1 -0
  104. package/dist/cli/trace.d.ts +5 -0
  105. package/dist/cli/trace.d.ts.map +1 -1
  106. package/dist/cli/trace.js +1 -1
  107. package/dist/cli/trace.js.map +1 -1
  108. package/dist/connections/cloud-auth.d.ts +46 -0
  109. package/dist/connections/cloud-auth.d.ts.map +1 -0
  110. package/dist/connections/cloud-auth.js +247 -0
  111. package/dist/connections/cloud-auth.js.map +1 -0
  112. package/dist/connections/cloud-client.d.ts +25 -0
  113. package/dist/connections/cloud-client.d.ts.map +1 -0
  114. package/dist/connections/cloud-client.js +59 -0
  115. package/dist/connections/cloud-client.js.map +1 -0
  116. package/dist/connections/cloud-integration-provider.d.ts +22 -0
  117. package/dist/connections/cloud-integration-provider.d.ts.map +1 -0
  118. package/dist/connections/cloud-integration-provider.js +41 -0
  119. package/dist/connections/cloud-integration-provider.js.map +1 -0
  120. package/dist/connections/connection-labels.d.ts +14 -0
  121. package/dist/connections/connection-labels.d.ts.map +1 -0
  122. package/dist/connections/connection-labels.js +46 -0
  123. package/dist/connections/connection-labels.js.map +1 -0
  124. package/dist/connections/index.d.ts +12 -0
  125. package/dist/connections/index.d.ts.map +1 -0
  126. package/dist/connections/index.js +10 -0
  127. package/dist/connections/index.js.map +1 -0
  128. package/dist/connections/integration-provider.d.ts +39 -0
  129. package/dist/connections/integration-provider.d.ts.map +1 -0
  130. package/dist/connections/integration-provider.js +20 -0
  131. package/dist/connections/integration-provider.js.map +1 -0
  132. package/dist/connections/local-integration-provider.d.ts +29 -0
  133. package/dist/connections/local-integration-provider.d.ts.map +1 -0
  134. package/dist/connections/local-integration-provider.js +70 -0
  135. package/dist/connections/local-integration-provider.js.map +1 -0
  136. package/dist/connections/nango-client.d.ts +14 -0
  137. package/dist/connections/nango-client.d.ts.map +1 -0
  138. package/dist/connections/nango-client.js +50 -0
  139. package/dist/connections/nango-client.js.map +1 -0
  140. package/dist/connections/resolver.d.ts +26 -0
  141. package/dist/connections/resolver.d.ts.map +1 -0
  142. package/dist/connections/resolver.js +48 -0
  143. package/dist/connections/resolver.js.map +1 -0
  144. package/dist/connections/schema.d.ts +8 -0
  145. package/dist/connections/schema.d.ts.map +1 -0
  146. package/dist/connections/schema.js +31 -0
  147. package/dist/connections/schema.js.map +1 -0
  148. package/dist/context.d.ts.map +1 -1
  149. package/dist/context.js +4 -0
  150. package/dist/context.js.map +1 -1
  151. package/dist/dev-ui/api.d.ts +18 -0
  152. package/dist/dev-ui/api.d.ts.map +1 -0
  153. package/dist/dev-ui/api.js +273 -0
  154. package/dist/dev-ui/api.js.map +1 -0
  155. package/dist/dev-ui/dag/extractor.d.ts +19 -0
  156. package/dist/dev-ui/dag/extractor.d.ts.map +1 -0
  157. package/dist/dev-ui/dag/extractor.js +716 -0
  158. package/dist/dev-ui/dag/extractor.js.map +1 -0
  159. package/dist/dev-ui/dag/types.d.ts +42 -0
  160. package/dist/dev-ui/dag/types.d.ts.map +1 -0
  161. package/dist/dev-ui/dag/types.js +2 -0
  162. package/dist/dev-ui/dag/types.js.map +1 -0
  163. package/dist/dev-ui/deploy-api.d.ts +14 -0
  164. package/dist/dev-ui/deploy-api.d.ts.map +1 -0
  165. package/dist/dev-ui/deploy-api.js +112 -0
  166. package/dist/dev-ui/deploy-api.js.map +1 -0
  167. package/dist/dev-ui/dev-server.d.ts +18 -0
  168. package/dist/dev-ui/dev-server.d.ts.map +1 -0
  169. package/dist/dev-ui/dev-server.js +273 -0
  170. package/dist/dev-ui/dev-server.js.map +1 -0
  171. package/dist/dev-ui/index.d.ts +3 -0
  172. package/dist/dev-ui/index.d.ts.map +1 -0
  173. package/dist/dev-ui/index.js +2 -0
  174. package/dist/dev-ui/index.js.map +1 -0
  175. package/dist/dev-ui/pty.d.ts +16 -0
  176. package/dist/dev-ui/pty.d.ts.map +1 -0
  177. package/dist/dev-ui/pty.js +87 -0
  178. package/dist/dev-ui/pty.js.map +1 -0
  179. package/dist/dev-ui/watcher.d.ts +12 -0
  180. package/dist/dev-ui/watcher.d.ts.map +1 -0
  181. package/dist/dev-ui/watcher.js +166 -0
  182. package/dist/dev-ui/watcher.js.map +1 -0
  183. package/dist/dev-ui/ws.d.ts +52 -0
  184. package/dist/dev-ui/ws.d.ts.map +1 -0
  185. package/dist/dev-ui/ws.js +32 -0
  186. package/dist/dev-ui/ws.js.map +1 -0
  187. package/dist/dev-ui-client/assets/index-CFhxfKAk.js +176 -0
  188. package/dist/dev-ui-client/assets/index-D9wFwfPp.css +32 -0
  189. package/dist/dev-ui-client/assets/index-DAKTQEvj.js +1 -0
  190. package/dist/dev-ui-client/index.html +13 -0
  191. package/dist/discover.d.ts +15 -0
  192. package/dist/discover.d.ts.map +1 -0
  193. package/dist/discover.js +32 -0
  194. package/dist/discover.js.map +1 -0
  195. package/dist/factory.d.ts.map +1 -1
  196. package/dist/factory.js +37 -13
  197. package/dist/factory.js.map +1 -1
  198. package/dist/index.d.ts +6 -1
  199. package/dist/index.d.ts.map +1 -1
  200. package/dist/index.js +6 -0
  201. package/dist/index.js.map +1 -1
  202. package/dist/node.d.ts +1 -0
  203. package/dist/node.d.ts.map +1 -1
  204. package/dist/node.js +1 -0
  205. package/dist/node.js.map +1 -1
  206. package/dist/nodes/agent/executor.d.ts +2 -0
  207. package/dist/nodes/agent/executor.d.ts.map +1 -1
  208. package/dist/nodes/agent/executor.js +11 -1
  209. package/dist/nodes/agent/executor.js.map +1 -1
  210. package/dist/registry-gen.d.ts +6 -0
  211. package/dist/registry-gen.d.ts.map +1 -0
  212. package/dist/registry-gen.js +146 -0
  213. package/dist/registry-gen.js.map +1 -0
  214. package/dist/types.d.ts +21 -3
  215. package/dist/types.d.ts.map +1 -1
  216. package/dist/workflow.d.ts +22 -0
  217. package/dist/workflow.d.ts.map +1 -1
  218. package/dist/workflow.js +113 -3
  219. package/dist/workflow.js.map +1 -1
  220. package/package.json +30 -6
  221. package/templates/app/.dockerignore +6 -0
  222. package/templates/app/.env.example +13 -0
  223. package/templates/app/Dockerfile +34 -0
  224. package/templates/app/README.md +29 -0
  225. package/templates/app/biome.jsonc +81 -0
  226. package/templates/app/dbos-config.yaml +6 -0
  227. package/templates/app/drizzle.config.ts +12 -0
  228. package/templates/app/generated/registry.ts +8 -0
  229. package/templates/app/next.config.js +13 -0
  230. package/templates/app/package.json +57 -0
  231. package/templates/app/postcss.config.js +5 -0
  232. package/templates/app/public/favicon.ico +0 -0
  233. package/templates/app/src/app/_components/.gitkeep +0 -0
  234. package/templates/app/src/app/api/trpc/[trpc]/route.ts +34 -0
  235. package/templates/app/src/app/api/workflow/[name]/route.ts +37 -0
  236. package/templates/app/src/app/layout.tsx +29 -0
  237. package/templates/app/src/app/page.tsx +18 -0
  238. package/templates/app/src/env.js +46 -0
  239. package/templates/app/src/instrumentation.ts +6 -0
  240. package/templates/app/src/lib/pflow.ts +28 -0
  241. package/templates/app/src/server/api/root.ts +21 -0
  242. package/templates/app/src/server/api/routers/.gitkeep +0 -0
  243. package/templates/app/src/server/api/trpc.ts +106 -0
  244. package/templates/app/src/server/db/index.ts +18 -0
  245. package/templates/app/src/server/db/schema.ts +14 -0
  246. package/templates/app/src/styles/globals.css +6 -0
  247. package/templates/app/src/styles/globals.css.orange +126 -0
  248. package/templates/app/src/trpc/query-client.ts +25 -0
  249. package/templates/app/src/trpc/react.tsx +78 -0
  250. package/templates/app/src/trpc/server.ts +30 -0
  251. package/templates/app/tsconfig.check.json +23 -0
  252. package/templates/app/tsconfig.json +42 -0
  253. package/templates/app/tsconfig.server.json +5 -0
  254. package/templates/app/tsconfig.test.json +21 -0
@@ -1,5 +1,4 @@
1
1
  export declare const packageRoot: string;
2
- export declare const monorepoRoot: string;
3
2
  export declare const templatesDir: string;
4
3
  export declare const version: string;
5
4
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/cli/mcp/config.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,WAAW,QAAoC,CAAC;AAG7D,eAAO,MAAM,YAAY,QAAgC,CAAC;AAG1D,eAAO,MAAM,YAAY,QAAkC,CAAC;AAM5D,eAAO,MAAM,OAAO,EAAE,MAAoB,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/cli/mcp/config.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,WAAW,QAAoC,CAAC;AAG7D,eAAO,MAAM,YAAY,QAAiC,CAAC;AAM3D,eAAO,MAAM,OAAO,EAAE,MAAoB,CAAC"}
@@ -4,10 +4,8 @@ import { fileURLToPath } from "node:url";
4
4
  const __dirname = dirname(fileURLToPath(import.meta.url));
5
5
  // Package root directory (relative to dist/cli/mcp/)
6
6
  export const packageRoot = join(__dirname, "..", "..", "..");
7
- // Monorepo root (up from packages/core)
8
- export const monorepoRoot = join(packageRoot, "..", "..");
9
- // Templates directory at monorepo root level
10
- export const templatesDir = join(monorepoRoot, "templates");
7
+ // Templates directory (bundled with the package)
8
+ export const templatesDir = join(packageRoot, "templates");
11
9
  // Read version from package.json
12
10
  const pkg = JSON.parse(readFileSync(join(packageRoot, "package.json"), "utf-8"));
13
11
  export const version = pkg.version;
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/cli/mcp/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE1D,qDAAqD;AACrD,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAE7D,wCAAwC;AACxC,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAE1D,6CAA6C;AAC7C,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;AAE5D,iCAAiC;AACjC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CACpB,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CACzD,CAAC;AACF,MAAM,CAAC,MAAM,OAAO,GAAW,GAAG,CAAC,OAAO,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/cli/mcp/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE1D,qDAAqD;AACrD,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAE7D,iDAAiD;AACjD,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;AAE3D,iCAAiC;AACjC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CACpB,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CACzD,CAAC;AACF,MAAM,CAAC,MAAM,OAAO,GAAW,GAAG,CAAC,OAAO,CAAC"}
@@ -0,0 +1,33 @@
1
+ export interface ScaffoldAppOpts {
2
+ appName: string;
3
+ directory: string;
4
+ installDeps?: boolean;
5
+ }
6
+ export interface ScaffoldAppResult {
7
+ success: boolean;
8
+ message: string;
9
+ path?: string;
10
+ }
11
+ export declare function scaffoldApp({ appName, directory, installDeps, }: ScaffoldAppOpts): Promise<ScaffoldAppResult>;
12
+ export interface CreateDatabaseOpts {
13
+ name?: string;
14
+ }
15
+ export interface CreateDatabaseResult {
16
+ success: boolean;
17
+ service_id?: string;
18
+ error?: string;
19
+ }
20
+ export declare function createDatabase({ name, }?: CreateDatabaseOpts): Promise<CreateDatabaseResult>;
21
+ export interface SetupAppSchemaOpts {
22
+ directory: string;
23
+ serviceId: string;
24
+ appName: string;
25
+ }
26
+ export interface SetupAppSchemaResult {
27
+ success: boolean;
28
+ message: string;
29
+ schema_name?: string;
30
+ user_name?: string;
31
+ }
32
+ export declare function setupAppSchema({ directory, serviceId, appName, }: SetupAppSchemaOpts): Promise<SetupAppSchemaResult>;
33
+ //# sourceMappingURL=scaffolding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scaffolding.d.ts","sourceRoot":"","sources":["../../../../src/cli/mcp/lib/scaffolding.ts"],"names":[],"mappings":"AAqDA,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAsB,WAAW,CAAC,EAChC,OAAO,EACP,SAAS,EACT,WAAkB,GACnB,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAkD9C;AAID,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,cAAc,CAAC,EACnC,IAAI,GACL,GAAE,kBAAuB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CA0CzD;AAID,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,cAAc,CAAC,EACnC,SAAS,EACT,SAAS,EACT,OAAO,GACR,EAAE,kBAAkB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CA2JpD"}
@@ -0,0 +1,231 @@
1
+ import { exec } from "node:child_process";
2
+ import { existsSync, mkdirSync } from "node:fs";
3
+ import { readFile, writeFile } from "node:fs/promises";
4
+ import { join, resolve } from "node:path";
5
+ import * as dotenv from "dotenv";
6
+ import pg from "pg";
7
+ import { packageRoot, version } from "../config.js";
8
+ import { writeAppTemplates, create0pflowDirectories } from "../lib/templates.js";
9
+ import { ensureConnectionsTable } from "../../../connections/schema.js";
10
+ const execAsync = (cmd, cwd) => new Promise((resolve, reject) => {
11
+ exec(cmd, { cwd }, (error, stdout, stderr) => {
12
+ if (error)
13
+ reject(Object.assign(error, { stderr }));
14
+ else
15
+ resolve({ stdout, stderr });
16
+ });
17
+ });
18
+ // Monorepo root (only valid in dev mode when running from packages/core)
19
+ const monorepoRoot = join(packageRoot, "..", "..");
20
+ function isDevMode() {
21
+ const corePath = join(monorepoRoot, "packages", "core");
22
+ return existsSync(corePath);
23
+ }
24
+ function generatePassword(length = 24) {
25
+ const chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
26
+ let password = "";
27
+ for (let i = 0; i < length; i++) {
28
+ password += chars.charAt(Math.floor(Math.random() * chars.length));
29
+ }
30
+ return password;
31
+ }
32
+ function buildConnectionString(originalUrl, user, password) {
33
+ const parsed = new URL(originalUrl);
34
+ parsed.username = user;
35
+ parsed.password = encodeURIComponent(password);
36
+ if (!parsed.searchParams.has("uselibpqcompat")) {
37
+ parsed.searchParams.set("uselibpqcompat", "true");
38
+ }
39
+ return parsed.toString();
40
+ }
41
+ export async function scaffoldApp({ appName, directory, installDeps = true, }) {
42
+ const appPath = resolve(process.cwd(), directory);
43
+ if (!existsSync(appPath)) {
44
+ mkdirSync(appPath, { recursive: true });
45
+ }
46
+ try {
47
+ await writeAppTemplates(appPath, {
48
+ app_name: appName,
49
+ // - Dev mode (monorepo via npm link): "dev" dist-tag
50
+ // - Installed from 0pflow@dev (e.g. 0.1.0-dev.c6251ba): "dev" dist-tag
51
+ // - Installed from 0pflow@latest (e.g. 0.1.0): exact version
52
+ opflow_version: isDevMode() || version.includes("-dev.") ? "dev" : version,
53
+ });
54
+ await create0pflowDirectories(appPath);
55
+ // In dev mode, link local 0pflow packages
56
+ if (isDevMode()) {
57
+ const corePath = join(monorepoRoot, "packages", "core");
58
+ await execAsync("npm link", corePath);
59
+ await execAsync("npm link 0pflow", appPath);
60
+ }
61
+ if (installDeps) {
62
+ await execAsync("npm install", appPath);
63
+ }
64
+ // Initialize git repo with initial commit
65
+ try {
66
+ await execAsync("git init", appPath);
67
+ await execAsync("git add -A", appPath);
68
+ await execAsync('git commit -m "Initial commit"', appPath);
69
+ }
70
+ catch {
71
+ // git not available — continue without repo
72
+ }
73
+ return {
74
+ success: true,
75
+ message: `Created 0pflow app '${appName}' in ${appPath}`,
76
+ path: appPath,
77
+ };
78
+ }
79
+ catch (err) {
80
+ const error = err;
81
+ return {
82
+ success: false,
83
+ message: `Failed to create app: ${error.message}\n${error.stderr || ""}`,
84
+ };
85
+ }
86
+ }
87
+ export async function createDatabase({ name, } = {}) {
88
+ const dbName = name || "app-db";
89
+ const cmdArgs = [
90
+ "tiger",
91
+ "service",
92
+ "create",
93
+ "--name",
94
+ dbName,
95
+ "--cpu",
96
+ "shared",
97
+ "--memory",
98
+ "shared",
99
+ "--addons",
100
+ "time-series,ai",
101
+ "--no-wait",
102
+ "-o",
103
+ "json",
104
+ ];
105
+ try {
106
+ const { stdout, stderr } = await execAsync(cmdArgs.join(" "));
107
+ const result = JSON.parse(stdout);
108
+ if (!result.service_id) {
109
+ return {
110
+ success: false,
111
+ error: `No service_id in response: ${stdout}${stderr}`,
112
+ };
113
+ }
114
+ return {
115
+ success: true,
116
+ service_id: result.service_id,
117
+ };
118
+ }
119
+ catch (err) {
120
+ const error = err;
121
+ return {
122
+ success: false,
123
+ error: `Failed to create database: ${error.message}\n${error.stdout || ""}${error.stderr || ""}`,
124
+ };
125
+ }
126
+ }
127
+ export async function setupAppSchema({ directory, serviceId, appName, }) {
128
+ const appDir = resolve(process.cwd(), directory);
129
+ const envPath = join(appDir, ".env");
130
+ // Check if already run
131
+ if (existsSync(envPath)) {
132
+ const envContent = await readFile(envPath, "utf-8");
133
+ const env = dotenv.parse(envContent);
134
+ if (env.DATABASE_SCHEMA) {
135
+ return {
136
+ success: true,
137
+ message: "DATABASE_SCHEMA already set in .env. Delete it and re-run if you need to regenerate.",
138
+ schema_name: appName,
139
+ user_name: appName,
140
+ };
141
+ }
142
+ }
143
+ // Get database connection string from Tiger
144
+ let adminConnectionString;
145
+ try {
146
+ const { stdout: serviceJson } = await execAsync(`tiger service get ${serviceId} --with-password -o json`);
147
+ const serviceDetails = JSON.parse(serviceJson);
148
+ if (!serviceDetails.connection_string) {
149
+ return {
150
+ success: false,
151
+ message: "connection_string not found in service details",
152
+ };
153
+ }
154
+ const parsed = new URL(serviceDetails.connection_string);
155
+ if (!parsed.searchParams.has("uselibpqcompat")) {
156
+ parsed.searchParams.set("uselibpqcompat", "true");
157
+ }
158
+ adminConnectionString = parsed.toString();
159
+ }
160
+ catch (err) {
161
+ const error = err;
162
+ return {
163
+ success: false,
164
+ message: `Failed to get service details: ${error.message}`,
165
+ };
166
+ }
167
+ const pool = new pg.Pool({ connectionString: adminConnectionString, max: 1 });
168
+ try {
169
+ const existingUser = await pool.query(`SELECT 1 FROM pg_catalog.pg_roles WHERE rolname = $1`, [appName]);
170
+ if (existingUser.rows.length > 0) {
171
+ return {
172
+ success: false,
173
+ message: `User '${appName}' already exists. Choose a different app name or delete the existing user.`,
174
+ };
175
+ }
176
+ const appPassword = generatePassword();
177
+ await pool.query(`CREATE ROLE ${appName} WITH LOGIN PASSWORD '${appPassword}'`);
178
+ await pool.query(`GRANT ${appName} TO tsdbadmin WITH INHERIT TRUE`);
179
+ await pool.query(`CREATE SCHEMA IF NOT EXISTS ${appName} AUTHORIZATION ${appName}`);
180
+ await pool.query(`CREATE SCHEMA IF NOT EXISTS ${appName}_dbos AUTHORIZATION ${appName}`);
181
+ await pool.query(`GRANT CREATE ON DATABASE tsdb TO ${appName}`);
182
+ await pool.query(`REVOKE CREATE ON SCHEMA public FROM ${appName}`);
183
+ await pool.query(`GRANT USAGE ON SCHEMA public TO ${appName}`);
184
+ await pool.query(`ALTER ROLE ${appName} SET search_path TO ${appName}, ${appName}_dbos, public`);
185
+ const currentPath = await pool.query(`SELECT setting FROM pg_settings WHERE name = 'search_path'`);
186
+ const existingPath = currentPath.rows[0]?.setting ?? "public";
187
+ if (!existingPath.includes(appName)) {
188
+ await pool.query(`ALTER ROLE tsdbadmin SET search_path TO ${existingPath}, ${appName}, ${appName}_dbos`);
189
+ }
190
+ const existingAdmin = await pool.query(`SELECT 1 FROM pg_catalog.pg_roles WHERE rolname = 'dbosadmin'`);
191
+ let dbosAdminPassword;
192
+ if (existingAdmin.rows.length === 0) {
193
+ dbosAdminPassword = generatePassword();
194
+ await pool.query(`CREATE ROLE dbosadmin WITH LOGIN CREATEDB PASSWORD '${dbosAdminPassword}'`);
195
+ }
196
+ const appDatabaseUrl = buildConnectionString(adminConnectionString, appName, appPassword);
197
+ let envContent = "";
198
+ if (existsSync(envPath)) {
199
+ envContent = await readFile(envPath, "utf-8");
200
+ }
201
+ const env = dotenv.parse(envContent);
202
+ env.DATABASE_URL = appDatabaseUrl;
203
+ env.DATABASE_SCHEMA = appName;
204
+ if (dbosAdminPassword) {
205
+ env.DBOS_ADMIN_URL = buildConnectionString(adminConnectionString, "dbosadmin", dbosAdminPassword);
206
+ }
207
+ const newEnvContent = Object.entries(env)
208
+ .map(([key, value]) => `${key}="${value}"`)
209
+ .join("\n");
210
+ await writeFile(envPath, `${newEnvContent}\n`);
211
+ // Create the opflow_connections table so it's ready before the dev UI launches
212
+ await ensureConnectionsTable(appDatabaseUrl, appName);
213
+ }
214
+ catch (err) {
215
+ const error = err;
216
+ return {
217
+ success: false,
218
+ message: `Failed to set up app schema: ${error.message}`,
219
+ };
220
+ }
221
+ finally {
222
+ await pool.end();
223
+ }
224
+ return {
225
+ success: true,
226
+ message: `Created schema '${appName}' and user '${appName}'. DATABASE_URL and DATABASE_SCHEMA written to .env.`,
227
+ schema_name: appName,
228
+ user_name: appName,
229
+ };
230
+ }
231
+ //# sourceMappingURL=scaffolding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scaffolding.js","sourceRoot":"","sources":["../../../../src/cli/mcp/lib/scaffolding.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  export interface AppTemplateVars {
2
2
  app_name: string;
3
+ opflow_version: string;
3
4
  }
4
5
  /**
5
6
  * Write app templates with Handlebars templating
@@ -1 +1 @@
1
- {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../../../src/cli/mcp/lib/templates.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;CAClB;AA4DD;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC,IAAI,CAAC,CAKf;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAa5E"}
1
+ {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../../../src/cli/mcp/lib/templates.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;CACxB;AA4DD;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC,IAAI,CAAC,CAKf;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAa5E"}
@@ -1 +1 @@
1
- {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../../../src/cli/mcp/lib/templates.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../../../src/cli/mcp/lib/templates.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ import { z } from "zod";
3
3
  import type { ServerContext } from "../types.js";
4
4
  declare const inputSchema: {
5
5
  readonly app_name: z.ZodString;
6
+ readonly directory: z.ZodDefault<z.ZodOptional<z.ZodString>>;
6
7
  readonly install_deps: z.ZodDefault<z.ZodBoolean>;
7
8
  };
8
9
  declare const outputSchema: {
@@ -1 +1 @@
1
- {"version":3,"file":"createApp.d.ts","sourceRoot":"","sources":["../../../../src/cli/mcp/tools/createApp.ts"],"names":[],"mappings":"AAGA,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;AAgBjD,QAAA,MAAM,WAAW;;;CAMP,CAAC;AAEX,QAAA,MAAM,YAAY;;;;CAIR,CAAC;AAQX,eAAO,MAAM,gBAAgB,EAAE,UAAU,CACvC,aAAa,EACb,OAAO,WAAW,EAClB,OAAO,YAAY,CAyDpB,CAAC"}
1
+ {"version":3,"file":"createApp.d.ts","sourceRoot":"","sources":["../../../../src/cli/mcp/tools/createApp.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;;;;CAWP,CAAC;AAEX,QAAA,MAAM,YAAY;;;;CAIR,CAAC;AAQX,eAAO,MAAM,gBAAgB,EAAE,UAAU,CACvC,aAAa,EACb,OAAO,WAAW,EAClB,OAAO,YAAY,CAuBpB,CAAC"}
@@ -1,24 +1,12 @@
1
- import { exec } from "node:child_process";
2
- import { existsSync } from "node:fs";
3
- import { join } from "node:path";
4
1
  import { z } from "zod";
5
- import { monorepoRoot } from "../config.js";
6
- import { writeAppTemplates, create0pflowDirectories } from "../lib/templates.js";
7
- // Check if running in development mode (monorepo with packages/core exists)
8
- function isDevMode() {
9
- const corePath = join(monorepoRoot, "packages", "core");
10
- return existsSync(corePath);
11
- }
12
- const execAsync = (cmd, cwd) => new Promise((resolve, reject) => {
13
- exec(cmd, { cwd }, (error, stdout, stderr) => {
14
- if (error)
15
- reject(Object.assign(error, { stderr }));
16
- else
17
- resolve({ stdout, stderr });
18
- });
19
- });
2
+ import { scaffoldApp } from "../lib/scaffolding.js";
20
3
  const inputSchema = {
21
4
  app_name: z.string().describe("Application name (lowercase with hyphens, e.g., 'lead-scoring-app')"),
5
+ directory: z
6
+ .string()
7
+ .optional()
8
+ .default(".")
9
+ .describe("Directory to create the app in, relative to cwd (default: current directory). Created if it doesn't exist."),
22
10
  install_deps: z
23
11
  .boolean()
24
12
  .default(true)
@@ -38,43 +26,12 @@ export const createAppFactory = () => {
38
26
  inputSchema,
39
27
  outputSchema,
40
28
  },
41
- fn: async ({ app_name, install_deps, }) => {
42
- const appName = app_name;
43
- const appPath = process.cwd();
44
- try {
45
- // Copy app template with Handlebars substitution
46
- await writeAppTemplates(appPath, {
47
- app_name: appName,
48
- });
49
- // Create 0pflow-specific directories
50
- await create0pflowDirectories(appPath);
51
- // In dev mode, link local 0pflow packages (before npm install)
52
- if (isDevMode()) {
53
- const corePath = join(monorepoRoot, "packages", "core");
54
- const cliPath = join(monorepoRoot, "packages", "cli");
55
- // Register packages globally first
56
- await execAsync("npm link", corePath);
57
- await execAsync("npm link", cliPath);
58
- // Then link them in the app
59
- await execAsync("npm link 0pflow @0pflow/cli", appPath);
60
- }
61
- // Install dependencies if requested
62
- if (install_deps) {
63
- await execAsync("npm install", appPath);
64
- }
65
- return {
66
- success: true,
67
- message: `Created 0pflow app '${appName}' in ${appPath}`,
68
- path: appPath,
69
- };
70
- }
71
- catch (err) {
72
- const error = err;
73
- return {
74
- success: false,
75
- message: `Failed to create app: ${error.message}\n${error.stderr || ""}`,
76
- };
77
- }
29
+ fn: async ({ app_name, directory, install_deps, }) => {
30
+ return scaffoldApp({
31
+ appName: app_name,
32
+ directory,
33
+ installDeps: install_deps,
34
+ });
78
35
  },
79
36
  };
80
37
  };
@@ -1 +1 @@
1
- {"version":3,"file":"createApp.js","sourceRoot":"","sources":["../../../../src/cli/mcp/tools/createApp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"createApp.js","sourceRoot":"","sources":["../../../../src/cli/mcp/tools/createApp.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGpD,MAAM,WAAW,GAAG;IAClB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qEAAqE,CAAC;IACpG,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,OAAO,CAAC,GAAG,CAAC;SACZ,QAAQ,CAAC,4GAA4G,CAAC;IACzH,YAAY,EAAE,CAAC;SACZ,OAAO,EAAE;SACT,OAAO,CAAC,IAAI,CAAC;SACb,QAAQ,CAAC,wCAAwC,CAAC;CAC7C,CAAC;AAEX,MAAM,YAAY,GAAG;IACnB,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;IACzE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IAC9C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;CAC5D,CAAC;AAQX,MAAM,CAAC,MAAM,gBAAgB,GAIzB,GAAG,EAAE;IACP,OAAO;QACL,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE;YACN,KAAK,EAAE,mBAAmB;YAC1B,WAAW,EACT,uJAAuJ;YACzJ,WAAW;YACX,YAAY;SACb;QACD,EAAE,EAAE,KAAK,EAAE,EACT,QAAQ,EACR,SAAS,EACT,YAAY,GACb,EAAyB,EAAE;YAC1B,OAAO,WAAW,CAAC;gBACjB,OAAO,EAAE,QAAQ;gBACjB,SAAS;gBACT,WAAW,EAAE,YAAY;aAC1B,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC,CAAC"}
@@ -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"}