0pflow 0.1.0-dev.3e345d8 → 0.1.0-dev.3e8826e

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 (228) 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/app.d.ts +6 -0
  16. package/dist/cli/app.d.ts.map +1 -1
  17. package/dist/cli/app.js +31 -0
  18. package/dist/cli/app.js.map +1 -1
  19. package/dist/cli/cloud-dev.d.ts +7 -0
  20. package/dist/cli/cloud-dev.d.ts.map +1 -0
  21. package/dist/cli/cloud-dev.js +570 -0
  22. package/dist/cli/cloud-dev.js.map +1 -0
  23. package/dist/cli/deploy.d.ts +27 -0
  24. package/dist/cli/deploy.d.ts.map +1 -0
  25. package/dist/cli/deploy.js +332 -0
  26. package/dist/cli/deploy.js.map +1 -0
  27. package/dist/cli/discovery.d.ts +10 -0
  28. package/dist/cli/discovery.d.ts.map +1 -1
  29. package/dist/cli/discovery.js +42 -0
  30. package/dist/cli/discovery.js.map +1 -1
  31. package/dist/cli/env.d.ts +3 -1
  32. package/dist/cli/env.d.ts.map +1 -1
  33. package/dist/cli/env.js +9 -4
  34. package/dist/cli/env.js.map +1 -1
  35. package/dist/cli/index.d.ts.map +1 -1
  36. package/dist/cli/index.js +208 -11
  37. package/dist/cli/index.js.map +1 -1
  38. package/dist/cli/install.d.ts +4 -0
  39. package/dist/cli/install.d.ts.map +1 -1
  40. package/dist/cli/install.js +63 -32
  41. package/dist/cli/install.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 +234 -0
  45. package/dist/cli/mcp/lib/scaffolding.js.map +1 -0
  46. package/dist/cli/mcp/tools/createApp.d.ts +1 -0
  47. package/dist/cli/mcp/tools/createApp.d.ts.map +1 -1
  48. package/dist/cli/mcp/tools/createApp.js +12 -56
  49. package/dist/cli/mcp/tools/createApp.js.map +1 -1
  50. package/dist/cli/mcp/tools/createDatabase.d.ts.map +1 -1
  51. package/dist/cli/mcp/tools/createDatabase.js +2 -41
  52. package/dist/cli/mcp/tools/createDatabase.js.map +1 -1
  53. package/dist/cli/mcp/tools/getConnectionInfo.d.ts +19 -0
  54. package/dist/cli/mcp/tools/getConnectionInfo.d.ts.map +1 -0
  55. package/dist/cli/mcp/tools/getConnectionInfo.js +111 -0
  56. package/dist/cli/mcp/tools/getConnectionInfo.js.map +1 -0
  57. package/dist/cli/mcp/tools/getRun.d.ts +22 -0
  58. package/dist/cli/mcp/tools/getRun.d.ts.map +1 -0
  59. package/dist/cli/mcp/tools/getRun.js +80 -0
  60. package/dist/cli/mcp/tools/getRun.js.map +1 -0
  61. package/dist/cli/mcp/tools/getTrace.d.ts +32 -0
  62. package/dist/cli/mcp/tools/getTrace.d.ts.map +1 -0
  63. package/dist/cli/mcp/tools/getTrace.js +104 -0
  64. package/dist/cli/mcp/tools/getTrace.js.map +1 -0
  65. package/dist/cli/mcp/tools/index.d.ts +94 -1
  66. package/dist/cli/mcp/tools/index.d.ts.map +1 -1
  67. package/dist/cli/mcp/tools/index.js +16 -0
  68. package/dist/cli/mcp/tools/index.js.map +1 -1
  69. package/dist/cli/mcp/tools/listIntegrations.d.ts +14 -0
  70. package/dist/cli/mcp/tools/listIntegrations.d.ts.map +1 -0
  71. package/dist/cli/mcp/tools/listIntegrations.js +53 -0
  72. package/dist/cli/mcp/tools/listIntegrations.js.map +1 -0
  73. package/dist/cli/mcp/tools/listRuns.d.ts +21 -0
  74. package/dist/cli/mcp/tools/listRuns.d.ts.map +1 -0
  75. package/dist/cli/mcp/tools/listRuns.js +72 -0
  76. package/dist/cli/mcp/tools/listRuns.js.map +1 -0
  77. package/dist/cli/mcp/tools/listWorkflows.d.ts +15 -0
  78. package/dist/cli/mcp/tools/listWorkflows.d.ts.map +1 -0
  79. package/dist/cli/mcp/tools/listWorkflows.js +45 -0
  80. package/dist/cli/mcp/tools/listWorkflows.js.map +1 -0
  81. package/dist/cli/mcp/tools/runNode.d.ts +17 -0
  82. package/dist/cli/mcp/tools/runNode.d.ts.map +1 -0
  83. package/dist/cli/mcp/tools/runNode.js +74 -0
  84. package/dist/cli/mcp/tools/runNode.js.map +1 -0
  85. package/dist/cli/mcp/tools/runWorkflow.d.ts +16 -0
  86. package/dist/cli/mcp/tools/runWorkflow.d.ts.map +1 -0
  87. package/dist/cli/mcp/tools/runWorkflow.js +66 -0
  88. package/dist/cli/mcp/tools/runWorkflow.js.map +1 -0
  89. package/dist/cli/mcp/tools/setupAppSchema.d.ts +1 -1
  90. package/dist/cli/mcp/tools/setupAppSchema.d.ts.map +1 -1
  91. package/dist/cli/mcp/tools/setupAppSchema.js +11 -132
  92. package/dist/cli/mcp/tools/setupAppSchema.js.map +1 -1
  93. package/dist/cli/mcp/tools/utils.d.ts +7 -0
  94. package/dist/cli/mcp/tools/utils.d.ts.map +1 -0
  95. package/dist/cli/mcp/tools/utils.js +28 -0
  96. package/dist/cli/mcp/tools/utils.js.map +1 -0
  97. package/dist/cli/run.d.ts +2 -0
  98. package/dist/cli/run.d.ts.map +1 -0
  99. package/dist/cli/run.js +560 -0
  100. package/dist/cli/run.js.map +1 -0
  101. package/dist/cli/trace.d.ts +5 -0
  102. package/dist/cli/trace.d.ts.map +1 -1
  103. package/dist/cli/trace.js +1 -1
  104. package/dist/cli/trace.js.map +1 -1
  105. package/dist/connections/cloud-auth.d.ts +46 -0
  106. package/dist/connections/cloud-auth.d.ts.map +1 -0
  107. package/dist/connections/cloud-auth.js +247 -0
  108. package/dist/connections/cloud-auth.js.map +1 -0
  109. package/dist/connections/cloud-client.d.ts +25 -0
  110. package/dist/connections/cloud-client.d.ts.map +1 -0
  111. package/dist/connections/cloud-client.js +66 -0
  112. package/dist/connections/cloud-client.js.map +1 -0
  113. package/dist/connections/cloud-integration-provider.d.ts +22 -0
  114. package/dist/connections/cloud-integration-provider.d.ts.map +1 -0
  115. package/dist/connections/cloud-integration-provider.js +42 -0
  116. package/dist/connections/cloud-integration-provider.js.map +1 -0
  117. package/dist/connections/connection-labels.d.ts +14 -0
  118. package/dist/connections/connection-labels.d.ts.map +1 -0
  119. package/dist/connections/connection-labels.js +46 -0
  120. package/dist/connections/connection-labels.js.map +1 -0
  121. package/dist/connections/index.d.ts +12 -0
  122. package/dist/connections/index.d.ts.map +1 -0
  123. package/dist/connections/index.js +10 -0
  124. package/dist/connections/index.js.map +1 -0
  125. package/dist/connections/integration-provider.d.ts +39 -0
  126. package/dist/connections/integration-provider.d.ts.map +1 -0
  127. package/dist/connections/integration-provider.js +20 -0
  128. package/dist/connections/integration-provider.js.map +1 -0
  129. package/dist/connections/local-integration-provider.d.ts +29 -0
  130. package/dist/connections/local-integration-provider.d.ts.map +1 -0
  131. package/dist/connections/local-integration-provider.js +71 -0
  132. package/dist/connections/local-integration-provider.js.map +1 -0
  133. package/dist/connections/nango-client.d.ts +14 -0
  134. package/dist/connections/nango-client.d.ts.map +1 -0
  135. package/dist/connections/nango-client.js +51 -0
  136. package/dist/connections/nango-client.js.map +1 -0
  137. package/dist/connections/resolver.d.ts +26 -0
  138. package/dist/connections/resolver.d.ts.map +1 -0
  139. package/dist/connections/resolver.js +48 -0
  140. package/dist/connections/resolver.js.map +1 -0
  141. package/dist/connections/schema.d.ts +8 -0
  142. package/dist/connections/schema.d.ts.map +1 -0
  143. package/dist/connections/schema.js +31 -0
  144. package/dist/connections/schema.js.map +1 -0
  145. package/dist/context.d.ts.map +1 -1
  146. package/dist/context.js +4 -0
  147. package/dist/context.js.map +1 -1
  148. package/dist/dev-ui/api.d.ts +18 -0
  149. package/dist/dev-ui/api.d.ts.map +1 -0
  150. package/dist/dev-ui/api.js +273 -0
  151. package/dist/dev-ui/api.js.map +1 -0
  152. package/dist/dev-ui/dag/extractor.d.ts +19 -0
  153. package/dist/dev-ui/dag/extractor.d.ts.map +1 -0
  154. package/dist/dev-ui/dag/extractor.js +716 -0
  155. package/dist/dev-ui/dag/extractor.js.map +1 -0
  156. package/dist/dev-ui/dag/types.d.ts +42 -0
  157. package/dist/dev-ui/dag/types.d.ts.map +1 -0
  158. package/dist/dev-ui/dag/types.js +2 -0
  159. package/dist/dev-ui/dag/types.js.map +1 -0
  160. package/dist/dev-ui/deploy-api.d.ts +14 -0
  161. package/dist/dev-ui/deploy-api.d.ts.map +1 -0
  162. package/dist/dev-ui/deploy-api.js +112 -0
  163. package/dist/dev-ui/deploy-api.js.map +1 -0
  164. package/dist/dev-ui/dev-server.d.ts +18 -0
  165. package/dist/dev-ui/dev-server.d.ts.map +1 -0
  166. package/dist/dev-ui/dev-server.js +275 -0
  167. package/dist/dev-ui/dev-server.js.map +1 -0
  168. package/dist/dev-ui/index.d.ts +3 -0
  169. package/dist/dev-ui/index.d.ts.map +1 -0
  170. package/dist/dev-ui/index.js +2 -0
  171. package/dist/dev-ui/index.js.map +1 -0
  172. package/dist/dev-ui/pty.d.ts +16 -0
  173. package/dist/dev-ui/pty.d.ts.map +1 -0
  174. package/dist/dev-ui/pty.js +87 -0
  175. package/dist/dev-ui/pty.js.map +1 -0
  176. package/dist/dev-ui/watcher.d.ts +12 -0
  177. package/dist/dev-ui/watcher.d.ts.map +1 -0
  178. package/dist/dev-ui/watcher.js +166 -0
  179. package/dist/dev-ui/watcher.js.map +1 -0
  180. package/dist/dev-ui/ws.d.ts +52 -0
  181. package/dist/dev-ui/ws.d.ts.map +1 -0
  182. package/dist/dev-ui/ws.js +32 -0
  183. package/dist/dev-ui/ws.js.map +1 -0
  184. package/dist/dev-ui-client/assets/index-Cc0tmhKa.css +32 -0
  185. package/dist/dev-ui-client/assets/index-Cqhzxumy.js +172 -0
  186. package/dist/dev-ui-client/assets/index-DAKTQEvj.js +1 -0
  187. package/dist/dev-ui-client/index.html +13 -0
  188. package/dist/discover.d.ts +15 -0
  189. package/dist/discover.d.ts.map +1 -0
  190. package/dist/discover.js +32 -0
  191. package/dist/discover.js.map +1 -0
  192. package/dist/factory.d.ts.map +1 -1
  193. package/dist/factory.js +37 -13
  194. package/dist/factory.js.map +1 -1
  195. package/dist/index.d.ts +6 -0
  196. package/dist/index.d.ts.map +1 -1
  197. package/dist/index.js +7 -0
  198. package/dist/index.js.map +1 -1
  199. package/dist/node.d.ts +1 -0
  200. package/dist/node.d.ts.map +1 -1
  201. package/dist/node.js +1 -0
  202. package/dist/node.js.map +1 -1
  203. package/dist/nodes/agent/executor.d.ts +2 -0
  204. package/dist/nodes/agent/executor.d.ts.map +1 -1
  205. package/dist/nodes/agent/executor.js +11 -1
  206. package/dist/nodes/agent/executor.js.map +1 -1
  207. package/dist/registry-gen.d.ts +6 -0
  208. package/dist/registry-gen.d.ts.map +1 -0
  209. package/dist/registry-gen.js +146 -0
  210. package/dist/registry-gen.js.map +1 -0
  211. package/dist/types.d.ts +28 -3
  212. package/dist/types.d.ts.map +1 -1
  213. package/dist/types.js +18 -1
  214. package/dist/types.js.map +1 -1
  215. package/dist/workflow.d.ts +22 -0
  216. package/dist/workflow.d.ts.map +1 -1
  217. package/dist/workflow.js +113 -3
  218. package/dist/workflow.js.map +1 -1
  219. package/package.json +26 -3
  220. package/templates/app/.dockerignore +6 -0
  221. package/templates/app/Dockerfile +34 -0
  222. package/templates/app/dbos-config.yaml +6 -0
  223. package/templates/app/generated/registry.ts +8 -0
  224. package/templates/app/next.config.js +4 -1
  225. package/templates/app/package.json +5 -0
  226. package/templates/app/src/app/api/workflow/[name]/route.ts +37 -0
  227. package/templates/app/src/instrumentation.ts +6 -0
  228. package/templates/app/src/lib/pflow.ts +28 -0
@@ -0,0 +1 @@
1
+ var f=Object.defineProperty;var g=(a,e,t)=>e in a?f(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t;var o=(a,e,t)=>g(a,typeof e!="symbol"?e+"":e,t);const l="[nango]";function b({expectedWidth:a,expectedHeight:e}){const t=window.screen.width,s=window.screen.height,i=t/2-a/2,n=s/2-e/2,r=Math.min(a,t),h=Math.min(e,s);return{left:Math.max(i,0),top:Math.max(n,0),width:r,height:h}}function k(a){const e={...a,scrollbars:"yes",resizable:"yes",status:"no",toolbar:"no",location:"no",copyhistory:"no",menubar:"no",directories:"no"},t=[];for(const s in e)t.push(`${s}=${e[s]}`);return t.join(",")}class U{constructor({baseUrl:e,debug:t,webSocketUrl:s,successHandler:i,errorHandler:n}){o(this,"baseURL");o(this,"debug");o(this,"swClient");o(this,"errorHandler");o(this,"modal");o(this,"isProcessingMessage",!1);this.baseURL=e,this.debug=t,this.swClient=new WebSocket(s),this.errorHandler=n,this.swClient.onmessage=r=>{this.isProcessingMessage=!0,this.handleMessage(r,i),this.isProcessingMessage=!1}}setModal(e){this.modal=e}handleMessage(e,t){const s=JSON.parse(e.data);switch(s.message_type){case"connection_ack":{this.debug&&console.log(l,"Connection ack received. Opening modal..."),this.baseURL.searchParams.set("ws_client_id",s.ws_client_id),this.open();break}case"error":this.debug&&console.log(l,"Error received. Rejecting authorization..."),this.errorHandler(s.error_type,s.error_desc),this.swClient.close();break;case"success":this.debug&&console.log(l,"Success received. Resolving authorization..."),t({providerConfigKey:s.provider_config_key,connectionId:s.connection_id,isPending:s.is_pending}),this.swClient.close();break;default:this.debug&&console.log(l,"Unknown message type received from Nango server. Ignoring...");return}}open(){if(this.modal&&(this.debug&&console.log(l,"opening",this.baseURL.href),this.modal.location=this.baseURL.href,!this.modal||this.modal.closed||typeof this.modal.closed>"u")){this.errorHandler("blocked_by_browser","Modal blocked by browser");return}}close(){this.modal&&!this.modal.closed&&(this.modal.close(),delete this.modal),this.swClient.close(),delete this.swClient}}class v{constructor({sessionToken:e,baseURL:t="https://connect.nango.dev",apiURL:s="https://api.nango.dev",detectClosedAuthWindow:i,onEvent:n,lang:r,themeOverride:h}){o(this,"iframe",null);o(this,"isReady",!1);o(this,"listener",null);o(this,"sessionToken");o(this,"baseURL");o(this,"apiURL");o(this,"onEvent");o(this,"detectClosedAuthWindow");o(this,"lang");o(this,"themeOverride");this.sessionToken=e,this.baseURL=t,this.apiURL=s,this.onEvent=n,this.detectClosedAuthWindow=i,this.lang=r,this.themeOverride=h}open(){this.iframe=this.createIframe(),document.body.append(this.iframe),document.body.style.overflow="hidden",this.setupEventListeners()}createIframe(){const e=new URL(this.baseURL);this.apiURL&&e.searchParams.append("apiURL",this.apiURL),this.detectClosedAuthWindow&&e.searchParams.append("detectClosedAuthWindow",String(this.detectClosedAuthWindow)),this.lang&&e.searchParams.append("lang",this.lang),this.themeOverride&&e.searchParams.append("theme",this.themeOverride);const t=document.createElement("iframe");return t.src=e.href,t.id="connect-ui",t.style.position="fixed",t.style.zIndex="9999",t.style.top="0",t.style.left="0",t.style.right="0",t.style.bottom="0",t.style.width="100vw",t.style.height="100vh",t.style.backgroundColor="transparent",t}setupEventListeners(){this.listener=e=>{if(e.origin!==new URL(this.baseURL).origin||typeof e.data!="object"||!e.data||!e.data.type)return;const t=e.data;switch(t.type){case"ready":{this.isReady=!0,this.sendSessionToken();break}case"close":{this.close();break}}this.onEvent&&this.onEvent(t)},window.addEventListener("message",this.listener,!1)}setSessionToken(e){this.sessionToken=e,this.isReady&&this.sendSessionToken()}close(){this.listener&&window.removeEventListener("message",this.listener),this.iframe&&(document.body.removeChild(this.iframe),this.iframe=null,document.body.style.overflow="")}sendSessionToken(){var t,s;if(!this.sessionToken)return;const e={type:"session_token",sessionToken:this.sessionToken};(s=(t=this.iframe)==null?void 0:t.contentWindow)==null||s.postMessage(e,"*")}}const $="https://api.nango.dev",m="NANGO DEBUG LOG: ";class u extends Error{constructor(t,s){super(t);o(this,"type");this.type=s}}class R{constructor(e={}){o(this,"hostBaseUrl");o(this,"websocketsBaseUrl");o(this,"publicKey");o(this,"connectSessionToken");o(this,"debug",!1);o(this,"width",500);o(this,"height",600);o(this,"tm",null);o(this,"win",null);e.host=e.host||$,e.websocketsPath=e.websocketsPath||"/",this.debug=e.debug||!1,this.debug&&(console.log(m,"Debug mode is enabled."),console.log(m,`Using host: ${e.host}.`)),e.width&&(this.width=e.width),e.height&&(this.height=e.height),this.hostBaseUrl=e.host.replace(/\/+$/,""),this.publicKey=e.publicKey,this.connectSessionToken=e.connectSessionToken;try{const t=new URL(this.hostBaseUrl),s=new URL(e.websocketsPath,t);this.websocketsBaseUrl=s.toString().replace("https://","wss://").replace("http://","ws://")}catch{throw new u("Invalid URL provided for the Nango host.","invalid_host_url")}}async create(e,t,s){this.ensureCredentials();let i=null,n=s;typeof t=="string"?i=t:n=t;const r=this.hostBaseUrl+`/auth/unauthenticated/${e}${this.toQueryString(i,n)}`;return await this.triggerAuth({authUrl:r})}auth(e,t,s){this.ensureCredentials();let i=null,n=s;if(typeof t=="string"?i=t:n={...n,...t},n&&("installation"in n&&n.installation==="outbound"||"credentials"in n&&("token_id"in n.credentials&&"token_secret"in n.credentials||!("oauth_client_id_override"in n.credentials)||!("oauth_client_secret_override"in n.credentials))&&Object.keys(n.credentials).length>0)){const h=n.credentials;if(!h)throw new u("Credentials are required for custom auth","missing_credentials");const{credentials:d,...c}=n;return this.customAuth(e,i,this.convertCredentialsToConfig(h),c,n.installation)}const r=window.open("","_blank",k(b({expectedWidth:this.width,expectedHeight:this.height})));return new Promise((h,d)=>{const c=_=>{h(_)},p=(_,y)=>{d(new u(y,_))};if(this.win&&this.clear(),!r||r.closed||typeof r.closed>"u"){p("blocked_by_browser","Modal blocked by browser");return}let w;try{w=new URL(`${this.hostBaseUrl}/oauth/connect/${e}${this.toQueryString(i,n)}`)}catch{p("invalid_host_url","Invalid URL provided for the Nango host.");return}this.win=new U({baseUrl:w,debug:this.debug,webSocketUrl:this.websocketsBaseUrl,successHandler:c,errorHandler:p}),this.win.setModal(r),this.tm=setInterval(()=>{!this.win||!this.win.modal||this.win.modal.closed&&(this.win.isProcessingMessage||n!=null&&n.detectClosedAuthWindow&&(clearInterval(this.tm),this.win.close(),this.win=null,d(new u("The authorization window was closed before the authorization flow was completed","window_closed"))))},500)}).finally(()=>{this.clear()})}reconnect(e,t){if(!this.connectSessionToken)throw new u("Reconnect requires a session token","missing_connect_session_token");return this.auth(e,t)}clear(){if(this.tm&&clearInterval(this.tm),this.win){try{this.win.close()}catch(e){console.log("err",e)}this.win=null}}openConnectUI(e){const t=new v({sessionToken:this.connectSessionToken,...e});return t.open(),t}convertCredentialsToConfig(e){const t={};if("type"in e&&"username"in e&&"password"in e&&e.type==="SIGNATURE")return{params:{type:e.type,username:e.username,password:e.password}};if("username"in e&&(t.username=e.username||""),"password"in e&&(t.password=e.password||""),"apiKey"in e&&(t.apiKey=e.apiKey||""),"privateKey"in e||"type"in e&&e.type==="JWT"){const{privateKey:s,...i}=e;return{...i},{params:e}}if("privateKeyId"in e&&"issuerId"in e&&"privateKey"in e){const s={params:{privateKeyId:e.privateKeyId,issuerId:e.issuerId,privateKey:e.privateKey}};return"scope"in e&&(typeof e.scope=="string"||Array.isArray(e.scope))&&(s.params.scope=e.scope),s}if("client_id"in e&&"client_secret"in e)return{params:{client_id:e.client_id,client_secret:e.client_secret,client_certificate:e.client_certificate,client_private_key:e.client_private_key}};if("token_id"in e&&"token_secret"in e){const s={token_id:e.token_id,token_secret:e.token_secret};return"oauth_client_id_override"in e&&(s.oauth_client_id_override=e.oauth_client_id_override),"oauth_client_secret_override"in e&&(s.oauth_client_secret_override=e.oauth_client_secret_override),{params:s}}return"username"in e&&"password"in e&&"organization_id"in e&&"dev_key"in e?{params:{username:e.username,password:e.password,organization_id:e.organization_id,dev_key:e.dev_key}}:"type"in e&&e.type==="TWO_STEP"?{params:{...e}}:{params:t}}async triggerAuth({authUrl:e,credentials:t,assertionOption:s}){const i={};t&&Object.assign(i,t),s&&Object.keys(s).length>0&&(i.assertionOption=s);const n=await fetch(e,{method:"POST",headers:{"Content-Type":"application/json"},...Object.keys(i).length>0?{body:JSON.stringify(i)}:{}});if(!n.ok){const r=await n.json();throw new u(r.error.message,r.error.code)}return n.json()}async customAuth(e,t,s,i,n){const{params:r}=s;if(!r)throw new u("You must specify credentials.","missing_credentials");if("type"in r&&r.type==="TWO_STEP"){const h=i==null?void 0:i.assertionOption;return await this.triggerAuth({authUrl:this.hostBaseUrl+`/auth/two-step/${e}${this.toQueryString(t,i)}`,credentials:r,...h?{assertionOption:h}:{}})}return"type"in r&&r.type==="SIGNATURE"&&"username"in r&&"password"in r?await this.triggerAuth({authUrl:this.hostBaseUrl+`/auth/signature/${e}${this.toQueryString(t,i)}`,credentials:r}):"username"in r&&"password"in r&&"organization_id"in r&&"dev_key"in r?await this.triggerAuth({authUrl:this.hostBaseUrl+`/auth/bill/${e}${this.toQueryString(t,i)}`,credentials:r}):"apiKey"in r?await this.triggerAuth({authUrl:this.hostBaseUrl+`/api-auth/api-key/${e}${this.toQueryString(t,i)}`,credentials:r}):"username"in r||"password"in r?await this.triggerAuth({authUrl:this.hostBaseUrl+`/api-auth/basic/${e}${this.toQueryString(t,i)}`,credentials:r}):"privateKey"in r||"type"in r&&r.type==="JWT"?await this.triggerAuth({authUrl:this.hostBaseUrl+`/auth/jwt/${e}${this.toQueryString(t,i)}`,credentials:r}):"privateKeyId"in r&&"issuerId"in r&&"privateKey"in r?await this.triggerAuth({authUrl:this.hostBaseUrl+`/app-store-auth/${e}${this.toQueryString(t,i)}`,credentials:r}):"token_id"in r&&"token_secret"in r?await this.triggerAuth({authUrl:this.hostBaseUrl+`/auth/tba/${e}${this.toQueryString(t,i)}`,credentials:r}):"client_id"in r&&"client_secret"in r?await this.triggerAuth({authUrl:this.hostBaseUrl+`/oauth2/auth/${e}${this.toQueryString(t,i)}`,credentials:r}):n==="outbound"?await this.triggerAuth({authUrl:this.hostBaseUrl+`/auth/oauth-outbound/${e}${this.toQueryString(t,i)}`}):Promise.reject(new Error("Something went wrong with the authorization"))}toQueryString(e,t){const s=[];if(e&&s.push(`connection_id=${e}`),this.publicKey&&s.push(`public_key=${this.publicKey}`),this.connectSessionToken&&s.push(`connect_session_token=${this.connectSessionToken}`),t){for(const i in t.params){const n=t.params[i];typeof n=="string"&&s.push(`params[${encodeURIComponent(i)}]=${encodeURIComponent(n)}`)}if(t.hmac&&s.push(`hmac=${t.hmac}`),t.user_scope&&s.push(`user_scope=${t.user_scope.join(",")}`),t.credentials){const i=t.credentials;"oauth_client_id_override"in i&&s.push(`credentials[oauth_client_id_override]=${encodeURIComponent(i.oauth_client_id_override)}`),"oauth_client_secret_override"in i&&s.push(`credentials[oauth_client_secret_override]=${encodeURIComponent(i.oauth_client_secret_override)}`),"oauth_refresh_token_override"in i&&s.push(`credentials[oauth_refresh_token_override]=${encodeURIComponent(i.oauth_refresh_token_override)}`),"token_id"in i&&s.push(`token_id=${encodeURIComponent(i.token_id)}`),"token_secret"in i&&s.push(`token_secret=${encodeURIComponent(i.token_secret)}`)}for(const i in t.authorization_params){const n=t.authorization_params[i];typeof n=="string"?s.push(`authorization_params[${i}]=${n}`):n===void 0&&s.push(`authorization_params[${i}]=undefined`)}}return s.length===0?"":"?"+s.join("&")}ensureCredentials(){if(!this.publicKey&&!this.connectSessionToken)throw new u("You must specify a public key OR a connect session token (cf. documentation).","missing_auth_token")}}export{u as AuthError,v as ConnectUI,R as default};
@@ -0,0 +1,13 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>0pflow Dev UI</title>
7
+ <script type="module" crossorigin src="/assets/index-Cqhzxumy.js"></script>
8
+ <link rel="stylesheet" crossorigin href="/assets/index-Cc0tmhKa.css">
9
+ </head>
10
+ <body>
11
+ <div id="root"></div>
12
+ </body>
13
+ </html>
@@ -0,0 +1,15 @@
1
+ import type { Executable } from "./types.js";
2
+ type AnyExecutable = Executable<any, any>;
3
+ export interface DiscoverResult {
4
+ workflows: Record<string, AnyExecutable>;
5
+ agents: Record<string, AnyExecutable>;
6
+ nodes: Record<string, AnyExecutable>;
7
+ warnings: string[];
8
+ }
9
+ /**
10
+ * Discover all workflows, agents, and nodes in a project directory.
11
+ * Returns the exact shape that create0pflow() expects.
12
+ */
13
+ export declare function discover(projectDir: string): Promise<DiscoverResult>;
14
+ export {};
15
+ //# sourceMappingURL=discover.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../src/discover.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAQ7C,KAAK,aAAa,GAAG,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAE1C,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACzC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACtC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACrC,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAsB,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CA6B1E"}
@@ -0,0 +1,32 @@
1
+ import { discoverWorkflows, discoverNodes, discoverAgents, } from "./cli/discovery.js";
2
+ /**
3
+ * Discover all workflows, agents, and nodes in a project directory.
4
+ * Returns the exact shape that create0pflow() expects.
5
+ */
6
+ export async function discover(projectDir) {
7
+ // Discover agents and nodes first so they're in jiti's module cache.
8
+ // Workflows import agents/nodes, and if loaded in parallel, the same
9
+ // agent file gets evaluated twice causing duplicate DBOS registration.
10
+ const [nodeResult, agentResult] = await Promise.all([
11
+ discoverNodes(projectDir),
12
+ discoverAgents(projectDir),
13
+ ]);
14
+ const wfResult = await discoverWorkflows(projectDir);
15
+ // Convert workflows array to Record keyed by name
16
+ const workflows = {};
17
+ for (const wf of wfResult.workflows) {
18
+ workflows[wf.name] = wf;
19
+ }
20
+ const warnings = [
21
+ ...wfResult.warnings,
22
+ ...nodeResult.warnings,
23
+ ...agentResult.warnings,
24
+ ];
25
+ return {
26
+ workflows,
27
+ agents: agentResult.agents,
28
+ nodes: nodeResult.nodes,
29
+ warnings,
30
+ };
31
+ }
32
+ //# sourceMappingURL=discover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discover.js","sourceRoot":"","sources":["../src/discover.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,cAAc,GACf,MAAM,oBAAoB,CAAC;AAY5B;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,UAAkB;IAC/C,qEAAqE;IACrE,qEAAqE;IACrE,uEAAuE;IACvE,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAClD,aAAa,CAAC,UAAU,CAAC;QACzB,cAAc,CAAC,UAAU,CAAC;KAC3B,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAErD,kDAAkD;IAClD,MAAM,SAAS,GAAkC,EAAE,CAAC;IACpD,KAAK,MAAM,EAAE,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;QACpC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;IAC1B,CAAC;IAED,MAAM,QAAQ,GAAG;QACf,GAAG,QAAQ,CAAC,QAAQ;QACpB,GAAG,UAAU,CAAC,QAAQ;QACtB,GAAG,WAAW,CAAC,QAAQ;KACxB,CAAC;IAEF,OAAO;QACL,SAAS;QACT,MAAM,EAAE,WAAW,CAAC,MAAM;QAC1B,KAAK,EAAE,UAAU,CAAC,KAAK;QACvB,QAAQ;KACT,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAmB,MAAM,YAAY,CAAC;AAOtE;;GAEG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,CAwFtE"}
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAmB,MAAM,YAAY,CAAC;AAatE;;GAEG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,CAmHtE"}
package/dist/factory.js CHANGED
@@ -2,11 +2,21 @@ import { Registry } from "./registry.js";
2
2
  import { initializeDBOS, shutdownDBOS } from "./dbos.js";
3
3
  import { NodeRegistry } from "./nodes/registry.js";
4
4
  import { configureAgentRuntime } from "./agent.js";
5
- import { Workflow } from "./workflow.js";
5
+ import { Workflow, configureWorkflowRuntime } from "./workflow.js";
6
+ import { createIntegrationProvider } from "./connections/integration-provider.js";
7
+ import pg from "pg";
8
+ // Global singleton to survive across Turbopack chunk duplication.
9
+ // Module-level `let` in user's pflow.ts breaks across chunks, but globalThis is shared.
10
+ const PFLOW_INSTANCE_KEY = Symbol.for("opflow.pflowInstance");
6
11
  /**
7
12
  * Create a 0pflow instance
8
13
  */
9
14
  export async function create0pflow(config) {
15
+ // Return cached instance if already initialized
16
+ // (handles Turbopack chunk duplication where pflow.ts module-level singleton breaks)
17
+ const cached = globalThis[PFLOW_INSTANCE_KEY];
18
+ if (cached)
19
+ return cached;
10
20
  // Build registry from provided executables (before DBOS init)
11
21
  const registry = new Registry({
12
22
  workflows: config.workflows,
@@ -19,19 +29,20 @@ export async function create0pflow(config) {
19
29
  for (const nodeName of registry.listNodes()) {
20
30
  const node = registry.getNode(nodeName);
21
31
  if (node) {
22
- const wrapper = Workflow.create({
23
- name: `_node_${nodeName}`,
24
- description: `Wrapper workflow for node ${nodeName}`,
25
- version: 1,
26
- inputSchema: node.inputSchema,
27
- outputSchema: node.outputSchema,
28
- run: async (ctx, nodeInputs) => ctx.run(node, nodeInputs),
29
- });
30
- nodeWrapperCache.set(nodeName, wrapper);
32
+ nodeWrapperCache.set(nodeName, Workflow.createNodeWrapper(nodeName, node));
31
33
  }
32
34
  }
33
35
  // Initialize DBOS for durability (after all workflows are registered)
34
36
  await initializeDBOS({ databaseUrl: config.databaseUrl, appName: config.appName });
37
+ // Initialize integration provider:
38
+ // NANGO_SECRET_KEY set → local/self-hosted (direct Nango)
39
+ // Otherwise → cloud mode (proxies through auth server)
40
+ const integrationProvider = await createIntegrationProvider(config.nangoSecretKey);
41
+ // Create shared pg pool for connection management (needed for local connection mapping)
42
+ const pool = new pg.Pool({ connectionString: config.databaseUrl });
43
+ const appSchema = config.appName;
44
+ // Configure workflow runtime with pool + integration provider
45
+ configureWorkflowRuntime(pool, integrationProvider, appSchema);
35
46
  // Build node registry (includes built-in nodes + user nodes)
36
47
  // Nodes can be used both via ctx.run() and as agent tools
37
48
  const nodeRegistry = new NodeRegistry({
@@ -41,8 +52,11 @@ export async function create0pflow(config) {
41
52
  configureAgentRuntime({
42
53
  nodeRegistry,
43
54
  modelConfig: config.modelConfig,
55
+ pool,
56
+ integrationProvider,
57
+ appSchema,
44
58
  });
45
- return {
59
+ const pflow = {
46
60
  listWorkflows: () => registry.listWorkflows(),
47
61
  getWorkflow: (name) => registry.getWorkflow(name),
48
62
  triggerWorkflow: async (name, inputs) => {
@@ -56,7 +70,7 @@ export async function create0pflow(config) {
56
70
  },
57
71
  listNodes: () => registry.listNodes(),
58
72
  getNode: (name) => registry.getNode(name),
59
- triggerNode: async (name, inputs) => {
73
+ triggerNode: async (name, inputs, options) => {
60
74
  const node = registry.getNode(name);
61
75
  if (!node) {
62
76
  throw new Error(`Node "${name}" not found`);
@@ -66,13 +80,23 @@ export async function create0pflow(config) {
66
80
  if (!wrapper) {
67
81
  throw new Error(`No wrapper workflow found for node "${name}"`);
68
82
  }
83
+ // Set parent workflow name for connection resolution (same pattern as Agent)
84
+ if (options?.workflowName) {
85
+ wrapper.setParentWorkflowName(options.workflowName);
86
+ }
69
87
  // Validate inputs and execute via wrapper workflow
70
88
  const validated = node.inputSchema.parse(inputs);
71
- return wrapper.execute(null, validated);
89
+ return wrapper.executable.execute(null, validated);
72
90
  },
73
91
  shutdown: async () => {
92
+ if (pool) {
93
+ await pool.end();
94
+ }
74
95
  await shutdownDBOS();
75
96
  },
76
97
  };
98
+ // Cache on globalThis so duplicate module copies return the same instance
99
+ globalThis[PFLOW_INSTANCE_KEY] = pflow;
100
+ return pflow;
77
101
  }
78
102
  //# sourceMappingURL=factory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"factory.js","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAAmB;IACpD,8DAA8D;IAC9D,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC;QAC5B,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,KAAK,EAAE,MAAM,CAAC,KAAK;KACpB,CAAC,CAAC;IAEH,kEAAkE;IAClE,iFAAiF;IACjF,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAA8C,CAAC;IAC/E,KAAK,MAAM,QAAQ,IAAI,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC;QAC5C,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC;gBAC9B,IAAI,EAAE,SAAS,QAAQ,EAAE;gBACzB,WAAW,EAAE,6BAA6B,QAAQ,EAAE;gBACpD,OAAO,EAAE,CAAC;gBACV,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC;aAC1D,CAAC,CAAC;YACH,gBAAgB,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,sEAAsE;IACtE,MAAM,cAAc,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IAEnF,6DAA6D;IAC7D,0DAA0D;IAC1D,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC;QACpC,SAAS,EAAE,MAAM,CAAC,KAAK;KACxB,CAAC,CAAC;IAEH,8DAA8D;IAC9D,qBAAqB,CAAC;QACpB,YAAY;QACZ,WAAW,EAAE,MAAM,CAAC,WAAW;KAChC,CAAC,CAAC;IAEH,OAAO;QACL,aAAa,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,aAAa,EAAE;QAE7C,WAAW,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC;QAEzD,eAAe,EAAE,KAAK,EACpB,IAAY,EACZ,MAAe,EACH,EAAE;YACd,MAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAC5C,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,IAAI,KAAK,CAAC,aAAa,IAAI,aAAa,CAAC,CAAC;YAClD,CAAC;YAED,yEAAyE;YACzE,MAAM,SAAS,GAAG,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACrD,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAkC,EAAE,SAAS,CAAe,CAAC;QACvF,CAAC;QAED,SAAS,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE;QAErC,OAAO,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;QAEjD,WAAW,EAAE,KAAK,EAChB,IAAY,EACZ,MAAe,EACH,EAAE;YACd,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACpC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,MAAM,IAAI,KAAK,CAAC,SAAS,IAAI,aAAa,CAAC,CAAC;YAC9C,CAAC;YAED,iDAAiD;YACjD,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC3C,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,IAAI,KAAK,CAAC,uCAAuC,IAAI,GAAG,CAAC,CAAC;YAClE,CAAC;YAED,mDAAmD;YACnD,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACjD,OAAO,OAAO,CAAC,OAAO,CAAC,IAAkC,EAAE,SAAS,CAAe,CAAC;QACtF,CAAC;QAED,QAAQ,EAAE,KAAK,IAAI,EAAE;YACnB,MAAM,YAAY,EAAE,CAAC;QACvB,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,6 +1,9 @@
1
1
  export declare const VERSION = "0.1.0";
2
2
  export { create0pflow } from "./factory.js";
3
3
  export { getSchemaName } from "./dbos.js";
4
+ export { discover } from "./discover.js";
5
+ export type { DiscoverResult } from "./discover.js";
6
+ export { generateRegistry } from "./registry-gen.js";
4
7
  export { Node } from "./node.js";
5
8
  export type { NodeDefinition } from "./node.js";
6
9
  export { Workflow } from "./workflow.js";
@@ -16,5 +19,8 @@ export { getDefaultModelConfig, createModelAndProvider, parseModelString, } from
16
19
  export type { ModelConfig, ModelProvider, ModelAndProvider, Provider, } from "./nodes/agent/model-config.js";
17
20
  export { executeAgent } from "./nodes/agent/executor.js";
18
21
  export type { AgentExecutionResult, ExecuteAgentOptions, AgentTool, AgentTools, } from "./nodes/agent/executor.js";
22
+ export { resolveConnectionId, upsertConnection, listConnections, deleteConnection, initNango, getNango, fetchCredentials, createIntegrationProvider, } from "./connections/index.js";
23
+ export type { ConnectionMapping, IntegrationProvider } from "./connections/index.js";
19
24
  export type { Executable, WorkflowContext, LogLevel, PflowConfig, Pflow, } from "./types.js";
25
+ export { ConnectionCredentials } from "./types.js";
20
26
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,OAAO,UAAU,CAAC;AAG/B,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAG1C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,YAAY,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEhD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAE5E,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAGnE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAGjE,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChF,YAAY,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,+BAA+B,CAAC;AACvC,YAAY,EACV,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,QAAQ,GACT,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,YAAY,EACV,oBAAoB,EACpB,mBAAmB,EACnB,SAAS,EACT,UAAU,GACX,MAAM,2BAA2B,CAAC;AAGnC,YAAY,EACV,UAAU,EACV,eAAe,EACf,QAAQ,EACR,WAAW,EACX,KAAK,GACN,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,OAAO,UAAU,CAAC;AAG/B,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAG1C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,YAAY,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAGpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAGrD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,YAAY,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEhD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAE5E,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAGnE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAGjE,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChF,YAAY,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,+BAA+B,CAAC;AACvC,YAAY,EACV,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,QAAQ,GACT,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,YAAY,EACV,oBAAoB,EACpB,mBAAmB,EACnB,SAAS,EACT,UAAU,GACX,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,SAAS,EACT,QAAQ,EACR,gBAAgB,EAChB,yBAAyB,GAC1B,MAAM,wBAAwB,CAAC;AAChC,YAAY,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAGrF,YAAY,EACV,UAAU,EACV,eAAe,EACf,QAAQ,EACR,WAAW,EACX,KAAK,GACN,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -4,6 +4,10 @@ export const VERSION = "0.1.0";
4
4
  // Factory
5
5
  export { create0pflow } from "./factory.js";
6
6
  export { getSchemaName } from "./dbos.js";
7
+ // Discovery (CLI / non-bundled environments)
8
+ export { discover } from "./discover.js";
9
+ // Registry generation (for bundled builds - Next.js, etc.)
10
+ export { generateRegistry } from "./registry-gen.js";
7
11
  // Executable factories
8
12
  export { Node } from "./node.js";
9
13
  export { Workflow } from "./workflow.js";
@@ -15,4 +19,7 @@ export { webRead, builtinNodes } from "./nodes/builtin/index.js";
15
19
  export { parseAgentSpec, parseAgentSpecContent } from "./nodes/agent/parser.js";
16
20
  export { getDefaultModelConfig, createModelAndProvider, parseModelString, } from "./nodes/agent/model-config.js";
17
21
  export { executeAgent } from "./nodes/agent/executor.js";
22
+ // Connection management
23
+ export { resolveConnectionId, upsertConnection, listConnections, deleteConnection, initNango, getNango, fetchCredentials, createIntegrationProvider, } from "./connections/index.js";
24
+ export { ConnectionCredentials } from "./types.js";
18
25
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,qCAAqC;AACrC,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC;AAE/B,UAAU;AACV,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,uBAAuB;AACvB,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGnC,4CAA4C;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAEjE,2CAA2C;AAC3C,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,+BAA+B,CAAC;AAOvC,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,qCAAqC;AACrC,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC;AAE/B,UAAU;AACV,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,6CAA6C;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzC,2DAA2D;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,uBAAuB;AACvB,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGnC,4CAA4C;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAEjE,2CAA2C;AAC3C,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,+BAA+B,CAAC;AAOvC,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAQzD,wBAAwB;AACxB,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,SAAS,EACT,QAAQ,EACR,gBAAgB,EAChB,yBAAyB,GAC1B,MAAM,wBAAwB,CAAC;AAWhC,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC"}
package/dist/node.d.ts CHANGED
@@ -6,6 +6,7 @@ import type { Executable, WorkflowContext } from "./types.js";
6
6
  export interface NodeDefinition<TInput, TOutput> {
7
7
  name: string;
8
8
  description: string;
9
+ integrations?: string[];
9
10
  inputSchema: z.ZodType<TInput>;
10
11
  outputSchema?: z.ZodType<TOutput>;
11
12
  execute: (ctx: WorkflowContext, inputs: TInput) => Promise<TOutput>;
@@ -1 +1 @@
1
- {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE9D;;GAEG;AACH,MAAM,WAAW,cAAc,CAAC,MAAM,EAAE,OAAO;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/B,YAAY,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAClC,OAAO,EAAE,CAAC,GAAG,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACrE;AAED;;GAEG;AACH,eAAO,MAAM,IAAI;WACR,MAAM,EAAE,OAAO,cACR,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,GAC1C,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC;CAU/B,CAAC"}
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE9D;;GAEG;AACH,MAAM,WAAW,cAAc,CAAC,MAAM,EAAE,OAAO;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/B,YAAY,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAClC,OAAO,EAAE,CAAC,GAAG,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACrE;AAED;;GAEG;AACH,eAAO,MAAM,IAAI;WACR,MAAM,EAAE,OAAO,cACR,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,GAC1C,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC;CAW/B,CAAC"}
package/dist/node.js CHANGED
@@ -7,6 +7,7 @@ export const Node = {
7
7
  name: definition.name,
8
8
  type: "node",
9
9
  description: definition.description,
10
+ integrations: definition.integrations,
10
11
  inputSchema: definition.inputSchema,
11
12
  outputSchema: definition.outputSchema,
12
13
  execute: definition.execute,
package/dist/node.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"node.js","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAcA;;GAEG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG;IAClB,MAAM,CACJ,UAA2C;QAE3C,OAAO;YACL,IAAI,EAAE,UAAU,CAAC,IAAI;YACrB,IAAI,EAAE,MAAM;YACZ,WAAW,EAAE,UAAU,CAAC,WAAW;YACnC,WAAW,EAAE,UAAU,CAAC,WAAW;YACnC,YAAY,EAAE,UAAU,CAAC,YAAY;YACrC,OAAO,EAAE,UAAU,CAAC,OAAO;SAC5B,CAAC;IACJ,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"node.js","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAeA;;GAEG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG;IAClB,MAAM,CACJ,UAA2C;QAE3C,OAAO;YACL,IAAI,EAAE,UAAU,CAAC,IAAI;YACrB,IAAI,EAAE,MAAM;YACZ,WAAW,EAAE,UAAU,CAAC,WAAW;YACnC,YAAY,EAAE,UAAU,CAAC,YAAY;YACrC,WAAW,EAAE,UAAU,CAAC,WAAW;YACnC,YAAY,EAAE,UAAU,CAAC,YAAY;YACrC,OAAO,EAAE,UAAU,CAAC,OAAO;SAC5B,CAAC;IACJ,CAAC;CACF,CAAC"}
@@ -58,6 +58,8 @@ export interface ExecuteAgentOptions<TOutput = unknown> {
58
58
  maxSteps?: number;
59
59
  /** Optional output schema for structured outputs */
60
60
  outputSchema?: z.ZodType<TOutput>;
61
+ /** Integrations declared by the agent (e.g. ["openai"] to fetch API key from Nango) */
62
+ integrations?: string[];
61
63
  }
62
64
  /**
63
65
  * Execute an agent with the given inputs
@@ -1 +1 @@
1
- {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../src/nodes/agent/executor.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAElE;;GAEG;AACH,MAAM,WAAW,oBAAoB,CAAC,OAAO,GAAG,OAAO;IACrD,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,0DAA0D;IAC1D,MAAM,EAAE,OAAO,CAAC;IAChB,gDAAgD;IAChD,KAAK,EAAE,MAAM,CAAC;IACd,qCAAqC;IACrC,SAAS,EAAE,KAAK,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,OAAO,CAAC;QACd,MAAM,EAAE,OAAO,CAAC;KACjB,CAAC,CAAC;CACJ;AAGD,KAAK,aAAa,GAAG,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAE1C;;;GAGG;AAEH,KAAK,YAAY,GAAG;IAAE,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC;AAElF;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,YAAY,CAAC;AAErD;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAEnD;;GAEG;AACH,MAAM,WAAW,mBAAmB,CAAC,OAAO,GAAG,OAAO;IACpD,0CAA0C;IAC1C,GAAG,EAAE,eAAe,CAAC;IACrB,+DAA+D;IAC/D,IAAI,EAAE,SAAS,CAAC;IAChB,wCAAwC;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,kDAAkD;IAClD,KAAK,EAAE,UAAU,CAAC;IAClB,8DAA8D;IAC9D,YAAY,EAAE,YAAY,CAAC;IAC3B,4CAA4C;IAC5C,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,oEAAoE;IACpE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,YAAY,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;CACnC;AAgDD;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,OAAO,GAAG,OAAO,EAClD,OAAO,EAAE,mBAAmB,CAAC,OAAO,CAAC,GACpC,OAAO,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CA2MxC"}
1
+ {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../src/nodes/agent/executor.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAElE;;GAEG;AACH,MAAM,WAAW,oBAAoB,CAAC,OAAO,GAAG,OAAO;IACrD,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,0DAA0D;IAC1D,MAAM,EAAE,OAAO,CAAC;IAChB,gDAAgD;IAChD,KAAK,EAAE,MAAM,CAAC;IACd,qCAAqC;IACrC,SAAS,EAAE,KAAK,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,OAAO,CAAC;QACd,MAAM,EAAE,OAAO,CAAC;KACjB,CAAC,CAAC;CACJ;AAGD,KAAK,aAAa,GAAG,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAE1C;;;GAGG;AAEH,KAAK,YAAY,GAAG;IAAE,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC;AAElF;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,YAAY,CAAC;AAErD;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAEnD;;GAEG;AACH,MAAM,WAAW,mBAAmB,CAAC,OAAO,GAAG,OAAO;IACpD,0CAA0C;IAC1C,GAAG,EAAE,eAAe,CAAC;IACrB,+DAA+D;IAC/D,IAAI,EAAE,SAAS,CAAC;IAChB,wCAAwC;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,kDAAkD;IAClD,KAAK,EAAE,UAAU,CAAC;IAClB,8DAA8D;IAC9D,YAAY,EAAE,YAAY,CAAC;IAC3B,4CAA4C;IAC5C,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,oEAAoE;IACpE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,YAAY,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAClC,uFAAuF;IACvF,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAgDD;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,OAAO,GAAG,OAAO,EAClD,OAAO,EAAE,mBAAmB,CAAC,OAAO,CAAC,GACpC,OAAO,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAsNxC"}
@@ -49,7 +49,7 @@ function wrapToolInStep(aiTool, toolName) {
49
49
  * Supports structured outputs when outputSchema is provided.
50
50
  */
51
51
  export async function executeAgent(options) {
52
- const { ctx, spec, userMessage, tools: inputTools, modelConfig: providedModelConfig, maxSteps: providedMaxSteps, outputSchema, } = options;
52
+ const { ctx, spec, userMessage, tools: inputTools, modelConfig: providedModelConfig, maxSteps: providedMaxSteps, outputSchema, integrations, } = options;
53
53
  // Resolve model configuration
54
54
  // Priority: spec.model > providedModelConfig > default
55
55
  let modelConfig = providedModelConfig ?? getDefaultModelConfig();
@@ -60,6 +60,16 @@ export async function executeAgent(options) {
60
60
  ...parsed,
61
61
  };
62
62
  }
63
+ // If the agent declares its model provider as an integration, fetch the API key from Nango
64
+ if (integrations?.includes(modelConfig.provider) && !modelConfig.apiKey) {
65
+ try {
66
+ const credentials = await ctx.getConnection(modelConfig.provider);
67
+ modelConfig = { ...modelConfig, apiKey: credentials.token };
68
+ }
69
+ catch {
70
+ // Fall back to env var silently — keeps backward compatibility
71
+ }
72
+ }
63
73
  // Create the model instance
64
74
  const { model } = createModelAndProvider(modelConfig);
65
75
  // Convert tools to AI SDK tools
@@ -1 +1 @@
1
- {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../src/nodes/agent/executor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../src/nodes/agent/executor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Generate generated/registry.ts with static imports for all executables.
3
+ * Call this during build (e.g., `0pflow build` or as a prebuild script).
4
+ */
5
+ export declare function generateRegistry(projectDir: string): string;
6
+ //# sourceMappingURL=registry-gen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry-gen.d.ts","sourceRoot":"","sources":["../src/registry-gen.ts"],"names":[],"mappings":"AAyGA;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CA0C3D"}
@@ -0,0 +1,146 @@
1
+ // packages/core/src/registry-gen.ts
2
+ // Generates generated/registry.ts with static imports for all workflows, agents, and nodes.
3
+ // This replaces runtime discover() for bundled environments (Next.js, etc.).
4
+ import fs from "node:fs";
5
+ import path from "node:path";
6
+ /**
7
+ * Scan a directory for .ts/.js files and extract exported executable info.
8
+ * Looks for patterns like: export const foo = Workflow.create({ name: "foo-bar", ... })
9
+ */
10
+ function scanDirectory(dir) {
11
+ if (!fs.existsSync(dir))
12
+ return [];
13
+ const files = fs
14
+ .readdirSync(dir)
15
+ .filter((f) => (f.endsWith(".ts") || f.endsWith(".js")) && f !== "index.ts" && f !== "index.js");
16
+ const entries = [];
17
+ for (const file of files) {
18
+ const filePath = path.join(dir, file);
19
+ const content = fs.readFileSync(filePath, "utf-8");
20
+ // Match: export const <name> = (Workflow|Agent|Node).create({
21
+ const exportMatch = content.match(/export\s+const\s+(\w+)\s*=\s*(?:Workflow|Agent|Node)\.create\s*\(/);
22
+ if (!exportMatch)
23
+ continue;
24
+ const importName = exportMatch[1];
25
+ // Match: name: "some-name" or name: 'some-name'
26
+ const nameMatch = content.match(/name:\s*["']([^"']+)["']/);
27
+ if (!nameMatch)
28
+ continue;
29
+ entries.push({
30
+ importName,
31
+ executableName: nameMatch[1],
32
+ importPath: "", // filled in by caller
33
+ });
34
+ }
35
+ return entries;
36
+ }
37
+ /**
38
+ * Generate the registry.ts file content
39
+ */
40
+ function buildRegistrySource(workflows, agents, nodes) {
41
+ const lines = [
42
+ "// generated/registry.ts",
43
+ "// Auto-generated by 0pflow build - do not edit directly",
44
+ "",
45
+ ];
46
+ // Import statements
47
+ for (const entry of [...workflows, ...agents, ...nodes]) {
48
+ lines.push(`import { ${entry.importName} } from "${entry.importPath}";`);
49
+ }
50
+ lines.push("");
51
+ // Workflow record
52
+ lines.push("export const workflows = {");
53
+ for (const entry of workflows) {
54
+ lines.push(` "${entry.executableName}": ${entry.importName},`);
55
+ }
56
+ lines.push("};");
57
+ lines.push("");
58
+ // Agent record
59
+ lines.push("export const agents = {");
60
+ for (const entry of agents) {
61
+ lines.push(` "${entry.executableName}": ${entry.importName},`);
62
+ }
63
+ lines.push("};");
64
+ lines.push("");
65
+ // Node record
66
+ lines.push("export const nodes = {");
67
+ for (const entry of nodes) {
68
+ lines.push(` "${entry.executableName}": ${entry.importName},`);
69
+ }
70
+ lines.push("};");
71
+ lines.push("");
72
+ return lines.join("\n");
73
+ }
74
+ /**
75
+ * Generate generated/registry.ts with static imports for all executables.
76
+ * Call this during build (e.g., `0pflow build` or as a prebuild script).
77
+ */
78
+ export function generateRegistry(projectDir) {
79
+ const workflowDir = path.join(projectDir, "generated", "workflows");
80
+ const agentsDir = path.join(projectDir, "agents");
81
+ // Support both src/nodes/ and nodes/ layouts
82
+ const srcNodesDir = path.join(projectDir, "src", "nodes");
83
+ const rootNodesDir = path.join(projectDir, "nodes");
84
+ const nodesDir = fs.existsSync(srcNodesDir) ? srcNodesDir : rootNodesDir;
85
+ const nodesRelative = fs.existsSync(srcNodesDir) ? "../src/nodes" : "../nodes";
86
+ // Scan each directory
87
+ const workflows = scanDirectory(workflowDir);
88
+ const agents = scanDirectory(agentsDir);
89
+ const nodes = scanDirectory(nodesDir);
90
+ // Set import paths relative to generated/registry.ts
91
+ // Use actual file extensions (not .js) for bundler compatibility (Turbopack, etc.)
92
+ for (const entry of workflows) {
93
+ entry.importPath = `./workflows/${toSourceFilename(workflowDir, entry)}`;
94
+ }
95
+ for (const entry of agents) {
96
+ entry.importPath = `../agents/${toSourceFilename(agentsDir, entry)}`;
97
+ }
98
+ for (const entry of nodes) {
99
+ entry.importPath = `${nodesRelative}/${toSourceFilename(nodesDir, entry)}`;
100
+ }
101
+ const source = buildRegistrySource(workflows, agents, nodes);
102
+ // Strip .js extensions from imports in generated workflow files
103
+ // (Turbopack can't resolve .js → .ts in production builds)
104
+ stripJsExtensionsInDir(workflowDir);
105
+ // Write the file
106
+ const outDir = path.join(projectDir, "generated");
107
+ if (!fs.existsSync(outDir)) {
108
+ fs.mkdirSync(outDir, { recursive: true });
109
+ }
110
+ const outPath = path.join(outDir, "registry.ts");
111
+ fs.writeFileSync(outPath, source);
112
+ return outPath;
113
+ }
114
+ /**
115
+ * Strip .js extensions from relative imports in all .ts files in a directory.
116
+ * Turbopack can't resolve .js → .ts in production builds.
117
+ */
118
+ function stripJsExtensionsInDir(dir) {
119
+ if (!fs.existsSync(dir))
120
+ return;
121
+ for (const file of fs.readdirSync(dir).filter((f) => f.endsWith(".ts"))) {
122
+ const filePath = path.join(dir, file);
123
+ const content = fs.readFileSync(filePath, "utf-8");
124
+ // Replace .js extension in relative imports: from "../../foo.js" → from "../../foo"
125
+ const updated = content.replace(/(from\s+["']\.\.?\/[^"']*?)\.js(["'])/g, "$1$2");
126
+ if (updated !== content) {
127
+ fs.writeFileSync(filePath, updated);
128
+ }
129
+ }
130
+ }
131
+ /**
132
+ * Find the source filename (without extension) for a registry entry
133
+ */
134
+ function toSourceFilename(dir, entry) {
135
+ // Find the actual file that contains this export (returns basename without extension)
136
+ const files = fs.readdirSync(dir).filter((f) => f.endsWith(".ts") || f.endsWith(".js"));
137
+ for (const file of files) {
138
+ const content = fs.readFileSync(path.join(dir, file), "utf-8");
139
+ if (content.includes(`export const ${entry.importName}`)) {
140
+ return file.replace(/\.(ts|js)$/, "");
141
+ }
142
+ }
143
+ // Fallback: derive from executable name
144
+ return entry.executableName;
145
+ }
146
+ //# sourceMappingURL=registry-gen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry-gen.js","sourceRoot":"","sources":["../src/registry-gen.ts"],"names":[],"mappings":"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"}