@synergenius/flow-weaver 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (466) hide show
  1. package/LICENSE +122 -0
  2. package/README.md +315 -0
  3. package/dist/annotation-generator.d.ts +45 -0
  4. package/dist/annotation-generator.js +557 -0
  5. package/dist/api/builder.d.ts +223 -0
  6. package/dist/api/builder.js +345 -0
  7. package/dist/api/compile.d.ts +92 -0
  8. package/dist/api/compile.js +149 -0
  9. package/dist/api/extract-types.d.ts +29 -0
  10. package/dist/api/extract-types.js +57 -0
  11. package/dist/api/generate-in-place.d.ts +73 -0
  12. package/dist/api/generate-in-place.js +1353 -0
  13. package/dist/api/generate.d.ts +83 -0
  14. package/dist/api/generate.js +510 -0
  15. package/dist/api/helpers.d.ts +248 -0
  16. package/dist/api/helpers.js +285 -0
  17. package/dist/api/index.d.ts +46 -0
  18. package/dist/api/index.js +45 -0
  19. package/dist/api/inline-runtime.d.ts +27 -0
  20. package/dist/api/inline-runtime.js +551 -0
  21. package/dist/api/manipulation/connections.d.ts +79 -0
  22. package/dist/api/manipulation/connections.js +151 -0
  23. package/dist/api/manipulation/index.d.ts +34 -0
  24. package/dist/api/manipulation/index.js +41 -0
  25. package/dist/api/manipulation/node-types.d.ts +123 -0
  26. package/dist/api/manipulation/node-types.js +200 -0
  27. package/dist/api/manipulation/nodes.d.ts +144 -0
  28. package/dist/api/manipulation/nodes.js +333 -0
  29. package/dist/api/manipulation/ports.d.ts +59 -0
  30. package/dist/api/manipulation/ports.js +228 -0
  31. package/dist/api/manipulation/scopes.d.ts +52 -0
  32. package/dist/api/manipulation/scopes.js +156 -0
  33. package/dist/api/manipulation/validation.d.ts +6 -0
  34. package/dist/api/manipulation/validation.js +6 -0
  35. package/dist/api/manipulation/workflow.d.ts +81 -0
  36. package/dist/api/manipulation/workflow.js +116 -0
  37. package/dist/api/manipulation.d.ts +8 -0
  38. package/dist/api/manipulation.js +8 -0
  39. package/dist/api/parse.d.ts +48 -0
  40. package/dist/api/parse.js +110 -0
  41. package/dist/api/patterns.d.ts +112 -0
  42. package/dist/api/patterns.js +306 -0
  43. package/dist/api/query.d.ts +429 -0
  44. package/dist/api/query.js +816 -0
  45. package/dist/api/templates.d.ts +98 -0
  46. package/dist/api/templates.js +117 -0
  47. package/dist/api/transform.d.ts +31 -0
  48. package/dist/api/transform.js +40 -0
  49. package/dist/api/validate.d.ts +25 -0
  50. package/dist/api/validate.js +39 -0
  51. package/dist/api/workflow-file-operations.d.ts +29 -0
  52. package/dist/api/workflow-file-operations.js +180 -0
  53. package/dist/ast/builder.d.ts +210 -0
  54. package/dist/ast/builder.js +395 -0
  55. package/dist/ast/index.d.ts +5 -0
  56. package/dist/ast/index.js +5 -0
  57. package/dist/ast/serialization-node.d.ts +6 -0
  58. package/dist/ast/serialization-node.js +30 -0
  59. package/dist/ast/serialization.d.ts +43 -0
  60. package/dist/ast/serialization.js +134 -0
  61. package/dist/ast/types.d.ts +852 -0
  62. package/dist/ast/types.js +2 -0
  63. package/dist/ast/workflow-utils.d.ts +54 -0
  64. package/dist/ast/workflow-utils.js +114 -0
  65. package/dist/body-generator.d.ts +31 -0
  66. package/dist/body-generator.js +35 -0
  67. package/dist/built-in-nodes/delay.d.ts +11 -0
  68. package/dist/built-in-nodes/delay.js +29 -0
  69. package/dist/built-in-nodes/index.d.ts +5 -0
  70. package/dist/built-in-nodes/index.js +4 -0
  71. package/dist/built-in-nodes/invoke-workflow.d.ts +13 -0
  72. package/dist/built-in-nodes/invoke-workflow.js +25 -0
  73. package/dist/built-in-nodes/mock-types.d.ts +18 -0
  74. package/dist/built-in-nodes/mock-types.js +12 -0
  75. package/dist/built-in-nodes/wait-for-event.d.ts +13 -0
  76. package/dist/built-in-nodes/wait-for-event.js +25 -0
  77. package/dist/chevrotain-parser/connect-parser.d.ts +24 -0
  78. package/dist/chevrotain-parser/connect-parser.js +98 -0
  79. package/dist/chevrotain-parser/grammar-diagrams.d.ts +29 -0
  80. package/dist/chevrotain-parser/grammar-diagrams.js +264 -0
  81. package/dist/chevrotain-parser/index.d.ts +25 -0
  82. package/dist/chevrotain-parser/index.js +27 -0
  83. package/dist/chevrotain-parser/map-parser.d.ts +33 -0
  84. package/dist/chevrotain-parser/map-parser.js +130 -0
  85. package/dist/chevrotain-parser/node-parser.d.ts +36 -0
  86. package/dist/chevrotain-parser/node-parser.js +466 -0
  87. package/dist/chevrotain-parser/path-parser.d.ts +28 -0
  88. package/dist/chevrotain-parser/path-parser.js +118 -0
  89. package/dist/chevrotain-parser/port-parser.d.ts +36 -0
  90. package/dist/chevrotain-parser/port-parser.js +442 -0
  91. package/dist/chevrotain-parser/position-parser.d.ts +20 -0
  92. package/dist/chevrotain-parser/position-parser.js +83 -0
  93. package/dist/chevrotain-parser/scope-parser.d.ts +19 -0
  94. package/dist/chevrotain-parser/scope-parser.js +104 -0
  95. package/dist/chevrotain-parser/tokens.d.ts +78 -0
  96. package/dist/chevrotain-parser/tokens.js +384 -0
  97. package/dist/chevrotain-parser/trigger-cancel-parser.d.ts +50 -0
  98. package/dist/chevrotain-parser/trigger-cancel-parser.js +282 -0
  99. package/dist/cli/commands/changelog.d.ts +13 -0
  100. package/dist/cli/commands/changelog.js +135 -0
  101. package/dist/cli/commands/compile.d.ts +64 -0
  102. package/dist/cli/commands/compile.js +278 -0
  103. package/dist/cli/commands/create.d.ts +33 -0
  104. package/dist/cli/commands/create.js +147 -0
  105. package/dist/cli/commands/describe.d.ts +68 -0
  106. package/dist/cli/commands/describe.js +377 -0
  107. package/dist/cli/commands/dev.d.ts +32 -0
  108. package/dist/cli/commands/dev.js +384 -0
  109. package/dist/cli/commands/diagram.d.ts +13 -0
  110. package/dist/cli/commands/diagram.js +33 -0
  111. package/dist/cli/commands/diff.d.ts +11 -0
  112. package/dist/cli/commands/diff.js +59 -0
  113. package/dist/cli/commands/doctor.d.ts +57 -0
  114. package/dist/cli/commands/doctor.js +719 -0
  115. package/dist/cli/commands/export.d.ts +57 -0
  116. package/dist/cli/commands/export.js +163 -0
  117. package/dist/cli/commands/grammar.d.ts +9 -0
  118. package/dist/cli/commands/grammar.js +39 -0
  119. package/dist/cli/commands/init.d.ts +59 -0
  120. package/dist/cli/commands/init.js +435 -0
  121. package/dist/cli/commands/listen.d.ts +16 -0
  122. package/dist/cli/commands/listen.js +39 -0
  123. package/dist/cli/commands/market.d.ts +52 -0
  124. package/dist/cli/commands/market.js +436 -0
  125. package/dist/cli/commands/migrate.d.ts +13 -0
  126. package/dist/cli/commands/migrate.js +89 -0
  127. package/dist/cli/commands/openapi.d.ts +37 -0
  128. package/dist/cli/commands/openapi.js +67 -0
  129. package/dist/cli/commands/pattern.d.ts +34 -0
  130. package/dist/cli/commands/pattern.js +185 -0
  131. package/dist/cli/commands/plugin.d.ts +16 -0
  132. package/dist/cli/commands/plugin.js +176 -0
  133. package/dist/cli/commands/run.d.ts +49 -0
  134. package/dist/cli/commands/run.js +191 -0
  135. package/dist/cli/commands/serve.d.ts +45 -0
  136. package/dist/cli/commands/serve.js +81 -0
  137. package/dist/cli/commands/templates.d.ts +8 -0
  138. package/dist/cli/commands/templates.js +54 -0
  139. package/dist/cli/commands/ui.d.ts +16 -0
  140. package/dist/cli/commands/ui.js +130 -0
  141. package/dist/cli/commands/validate.d.ts +12 -0
  142. package/dist/cli/commands/validate.js +247 -0
  143. package/dist/cli/commands/watch.d.ts +9 -0
  144. package/dist/cli/commands/watch.js +70 -0
  145. package/dist/cli/flow-weaver.mjs +92924 -0
  146. package/dist/cli/index.d.ts +9 -0
  147. package/dist/cli/index.js +742 -0
  148. package/dist/cli/templates/ai/mock-provider.d.ts +7 -0
  149. package/dist/cli/templates/ai/mock-provider.js +64 -0
  150. package/dist/cli/templates/ai/types.d.ts +47 -0
  151. package/dist/cli/templates/ai/types.js +5 -0
  152. package/dist/cli/templates/approvals/index.d.ts +15 -0
  153. package/dist/cli/templates/approvals/index.js +241 -0
  154. package/dist/cli/templates/index.d.ts +102 -0
  155. package/dist/cli/templates/index.js +101 -0
  156. package/dist/cli/templates/nodes/agent-router.d.ts +3 -0
  157. package/dist/cli/templates/nodes/agent-router.js +114 -0
  158. package/dist/cli/templates/nodes/aggregator.d.ts +7 -0
  159. package/dist/cli/templates/nodes/aggregator.js +63 -0
  160. package/dist/cli/templates/nodes/conversation-memory.d.ts +3 -0
  161. package/dist/cli/templates/nodes/conversation-memory.js +85 -0
  162. package/dist/cli/templates/nodes/http.d.ts +7 -0
  163. package/dist/cli/templates/nodes/http.js +80 -0
  164. package/dist/cli/templates/nodes/human-approval.d.ts +3 -0
  165. package/dist/cli/templates/nodes/human-approval.js +110 -0
  166. package/dist/cli/templates/nodes/json-extractor.d.ts +3 -0
  167. package/dist/cli/templates/nodes/json-extractor.js +119 -0
  168. package/dist/cli/templates/nodes/llm-call.d.ts +3 -0
  169. package/dist/cli/templates/nodes/llm-call.js +106 -0
  170. package/dist/cli/templates/nodes/prompt-template.d.ts +3 -0
  171. package/dist/cli/templates/nodes/prompt-template.js +52 -0
  172. package/dist/cli/templates/nodes/rag-retriever.d.ts +3 -0
  173. package/dist/cli/templates/nodes/rag-retriever.js +128 -0
  174. package/dist/cli/templates/nodes/tool-executor.d.ts +3 -0
  175. package/dist/cli/templates/nodes/tool-executor.js +108 -0
  176. package/dist/cli/templates/nodes/transformer.d.ts +7 -0
  177. package/dist/cli/templates/nodes/transformer.js +68 -0
  178. package/dist/cli/templates/nodes/validator.d.ts +7 -0
  179. package/dist/cli/templates/nodes/validator.js +62 -0
  180. package/dist/cli/templates/providers/index.d.ts +14 -0
  181. package/dist/cli/templates/providers/index.js +239 -0
  182. package/dist/cli/templates/shared/approval-types.d.ts +9 -0
  183. package/dist/cli/templates/shared/approval-types.js +31 -0
  184. package/dist/cli/templates/shared/llm-types.d.ts +15 -0
  185. package/dist/cli/templates/shared/llm-types.js +104 -0
  186. package/dist/cli/templates/workflows/aggregator.d.ts +7 -0
  187. package/dist/cli/templates/workflows/aggregator.js +104 -0
  188. package/dist/cli/templates/workflows/ai-agent-durable.d.ts +8 -0
  189. package/dist/cli/templates/workflows/ai-agent-durable.js +338 -0
  190. package/dist/cli/templates/workflows/ai-agent.d.ts +31 -0
  191. package/dist/cli/templates/workflows/ai-agent.js +326 -0
  192. package/dist/cli/templates/workflows/ai-chat.d.ts +7 -0
  193. package/dist/cli/templates/workflows/ai-chat.js +169 -0
  194. package/dist/cli/templates/workflows/ai-pipeline-durable.d.ts +8 -0
  195. package/dist/cli/templates/workflows/ai-pipeline-durable.js +330 -0
  196. package/dist/cli/templates/workflows/ai-rag.d.ts +7 -0
  197. package/dist/cli/templates/workflows/ai-rag.js +186 -0
  198. package/dist/cli/templates/workflows/ai-react.d.ts +7 -0
  199. package/dist/cli/templates/workflows/ai-react.js +294 -0
  200. package/dist/cli/templates/workflows/conditional.d.ts +12 -0
  201. package/dist/cli/templates/workflows/conditional.js +142 -0
  202. package/dist/cli/templates/workflows/error-handler.d.ts +7 -0
  203. package/dist/cli/templates/workflows/error-handler.js +147 -0
  204. package/dist/cli/templates/workflows/foreach.d.ts +7 -0
  205. package/dist/cli/templates/workflows/foreach.js +143 -0
  206. package/dist/cli/templates/workflows/sequential.d.ts +7 -0
  207. package/dist/cli/templates/workflows/sequential.js +198 -0
  208. package/dist/cli/templates/workflows/webhook.d.ts +7 -0
  209. package/dist/cli/templates/workflows/webhook.js +161 -0
  210. package/dist/cli/utils/logger.d.ts +15 -0
  211. package/dist/cli/utils/logger.js +46 -0
  212. package/dist/constants.d.ts +100 -0
  213. package/dist/constants.js +125 -0
  214. package/dist/defaults.d.ts +3 -0
  215. package/dist/defaults.js +3 -0
  216. package/dist/deployment/config/defaults.d.ts +29 -0
  217. package/dist/deployment/config/defaults.js +98 -0
  218. package/dist/deployment/config/loader.d.ts +24 -0
  219. package/dist/deployment/config/loader.js +236 -0
  220. package/dist/deployment/config/types.d.ts +117 -0
  221. package/dist/deployment/config/types.js +5 -0
  222. package/dist/deployment/core/adapters.d.ts +90 -0
  223. package/dist/deployment/core/adapters.js +251 -0
  224. package/dist/deployment/core/executor.d.ts +62 -0
  225. package/dist/deployment/core/executor.js +197 -0
  226. package/dist/deployment/core/formatters.d.ts +57 -0
  227. package/dist/deployment/core/formatters.js +170 -0
  228. package/dist/deployment/index.d.ts +31 -0
  229. package/dist/deployment/index.js +48 -0
  230. package/dist/deployment/openapi/generator.d.ts +146 -0
  231. package/dist/deployment/openapi/generator.js +347 -0
  232. package/dist/deployment/openapi/schema-converter.d.ts +49 -0
  233. package/dist/deployment/openapi/schema-converter.js +192 -0
  234. package/dist/deployment/targets/base.d.ts +316 -0
  235. package/dist/deployment/targets/base.js +823 -0
  236. package/dist/deployment/targets/cloudflare.d.ts +23 -0
  237. package/dist/deployment/targets/cloudflare.js +1125 -0
  238. package/dist/deployment/targets/inngest.d.ts +38 -0
  239. package/dist/deployment/targets/inngest.js +926 -0
  240. package/dist/deployment/targets/lambda.d.ts +23 -0
  241. package/dist/deployment/targets/lambda.js +1289 -0
  242. package/dist/deployment/targets/vercel.d.ts +23 -0
  243. package/dist/deployment/targets/vercel.js +886 -0
  244. package/dist/deployment/types.d.ts +183 -0
  245. package/dist/deployment/types.js +8 -0
  246. package/dist/diagram/geometry.d.ts +26 -0
  247. package/dist/diagram/geometry.js +850 -0
  248. package/dist/diagram/index.d.ts +16 -0
  249. package/dist/diagram/index.js +42 -0
  250. package/dist/diagram/layout.d.ts +11 -0
  251. package/dist/diagram/layout.js +143 -0
  252. package/dist/diagram/orthogonal-router.d.ts +79 -0
  253. package/dist/diagram/orthogonal-router.js +568 -0
  254. package/dist/diagram/renderer.d.ts +3 -0
  255. package/dist/diagram/renderer.js +207 -0
  256. package/dist/diagram/theme.d.ts +20 -0
  257. package/dist/diagram/theme.js +189 -0
  258. package/dist/diagram/types.d.ts +70 -0
  259. package/dist/diagram/types.js +2 -0
  260. package/dist/diff/WorkflowDiffer.d.ts +13 -0
  261. package/dist/diff/WorkflowDiffer.js +429 -0
  262. package/dist/diff/formatDiff.d.ts +10 -0
  263. package/dist/diff/formatDiff.js +220 -0
  264. package/dist/diff/impact.d.ts +29 -0
  265. package/dist/diff/impact.js +119 -0
  266. package/dist/diff/index.d.ts +10 -0
  267. package/dist/diff/index.js +9 -0
  268. package/dist/diff/types.d.ts +138 -0
  269. package/dist/diff/types.js +35 -0
  270. package/dist/doc-metadata/extractors/annotations.d.ts +56 -0
  271. package/dist/doc-metadata/extractors/annotations.js +337 -0
  272. package/dist/doc-metadata/extractors/cli-commands.d.ts +17 -0
  273. package/dist/doc-metadata/extractors/cli-commands.js +355 -0
  274. package/dist/doc-metadata/extractors/mcp-tools.d.ts +16 -0
  275. package/dist/doc-metadata/extractors/mcp-tools.js +689 -0
  276. package/dist/doc-metadata/extractors/plugin-api.d.ts +19 -0
  277. package/dist/doc-metadata/extractors/plugin-api.js +279 -0
  278. package/dist/doc-metadata/index.d.ts +5 -0
  279. package/dist/doc-metadata/index.js +4 -0
  280. package/dist/doc-metadata/types.d.ts +120 -0
  281. package/dist/doc-metadata/types.js +5 -0
  282. package/dist/editor-completions/annotationValues.d.ts +12 -0
  283. package/dist/editor-completions/annotationValues.js +138 -0
  284. package/dist/editor-completions/contextParser.d.ts +40 -0
  285. package/dist/editor-completions/contextParser.js +410 -0
  286. package/dist/editor-completions/dataTypes.d.ts +16 -0
  287. package/dist/editor-completions/dataTypes.js +95 -0
  288. package/dist/editor-completions/goToDefinition.d.ts +27 -0
  289. package/dist/editor-completions/goToDefinition.js +112 -0
  290. package/dist/editor-completions/index.d.ts +39 -0
  291. package/dist/editor-completions/index.js +181 -0
  292. package/dist/editor-completions/jsDocAnnotations.d.ts +29 -0
  293. package/dist/editor-completions/jsDocAnnotations.js +357 -0
  294. package/dist/editor-completions/modifierCompletions.d.ts +17 -0
  295. package/dist/editor-completions/modifierCompletions.js +197 -0
  296. package/dist/editor-completions/types.d.ts +119 -0
  297. package/dist/editor-completions/types.js +8 -0
  298. package/dist/export/index.d.ts +68 -0
  299. package/dist/export/index.js +1074 -0
  300. package/dist/export/templates.d.ts +24 -0
  301. package/dist/export/templates.js +186 -0
  302. package/dist/friendly-errors.d.ts +35 -0
  303. package/dist/friendly-errors.js +375 -0
  304. package/dist/function-like.d.ts +38 -0
  305. package/dist/function-like.js +83 -0
  306. package/dist/generated-branding.d.ts +16 -0
  307. package/dist/generated-branding.js +22 -0
  308. package/dist/generator/async-detection.d.ts +27 -0
  309. package/dist/generator/async-detection.js +56 -0
  310. package/dist/generator/code-utils.d.ts +76 -0
  311. package/dist/generator/code-utils.js +410 -0
  312. package/dist/generator/control-flow.d.ts +54 -0
  313. package/dist/generator/control-flow.js +284 -0
  314. package/dist/generator/inngest.d.ts +53 -0
  315. package/dist/generator/inngest.js +1126 -0
  316. package/dist/generator/scope-function-generator.d.ts +78 -0
  317. package/dist/generator/scope-function-generator.js +360 -0
  318. package/dist/generator/unified.d.ts +42 -0
  319. package/dist/generator/unified.js +1504 -0
  320. package/dist/generator.d.ts +54 -0
  321. package/dist/generator.js +100 -0
  322. package/dist/index.d.ts +85 -0
  323. package/dist/index.js +89 -0
  324. package/dist/jsdoc-parser.d.ts +308 -0
  325. package/dist/jsdoc-parser.js +923 -0
  326. package/dist/jsdoc-port-sync/constants.d.ts +41 -0
  327. package/dist/jsdoc-port-sync/constants.js +103 -0
  328. package/dist/jsdoc-port-sync/diff.d.ts +76 -0
  329. package/dist/jsdoc-port-sync/diff.js +319 -0
  330. package/dist/jsdoc-port-sync/index.d.ts +42 -0
  331. package/dist/jsdoc-port-sync/index.js +45 -0
  332. package/dist/jsdoc-port-sync/port-parser.d.ts +68 -0
  333. package/dist/jsdoc-port-sync/port-parser.js +579 -0
  334. package/dist/jsdoc-port-sync/rename.d.ts +21 -0
  335. package/dist/jsdoc-port-sync/rename.js +256 -0
  336. package/dist/jsdoc-port-sync/signature-parser.d.ts +104 -0
  337. package/dist/jsdoc-port-sync/signature-parser.js +559 -0
  338. package/dist/jsdoc-port-sync/sync.d.ts +36 -0
  339. package/dist/jsdoc-port-sync/sync.js +644 -0
  340. package/dist/jsdoc-port-sync.d.ts +10 -0
  341. package/dist/jsdoc-port-sync.js +10 -0
  342. package/dist/marketplace/index.d.ts +11 -0
  343. package/dist/marketplace/index.js +10 -0
  344. package/dist/marketplace/manifest.d.ts +32 -0
  345. package/dist/marketplace/manifest.js +176 -0
  346. package/dist/marketplace/registry.d.ts +30 -0
  347. package/dist/marketplace/registry.js +100 -0
  348. package/dist/marketplace/types.d.ts +154 -0
  349. package/dist/marketplace/types.js +9 -0
  350. package/dist/marketplace/validator.d.ts +13 -0
  351. package/dist/marketplace/validator.js +131 -0
  352. package/dist/mcp/auto-registration.d.ts +3 -0
  353. package/dist/mcp/auto-registration.js +62 -0
  354. package/dist/mcp/editor-connection.d.ts +50 -0
  355. package/dist/mcp/editor-connection.js +125 -0
  356. package/dist/mcp/event-buffer.d.ts +62 -0
  357. package/dist/mcp/event-buffer.js +150 -0
  358. package/dist/mcp/index.d.ts +12 -0
  359. package/dist/mcp/index.js +11 -0
  360. package/dist/mcp/resources.d.ts +14 -0
  361. package/dist/mcp/resources.js +55 -0
  362. package/dist/mcp/response-utils.d.ts +63 -0
  363. package/dist/mcp/response-utils.js +89 -0
  364. package/dist/mcp/server.d.ts +4 -0
  365. package/dist/mcp/server.js +99 -0
  366. package/dist/mcp/tools-diagram.d.ts +8 -0
  367. package/dist/mcp/tools-diagram.js +53 -0
  368. package/dist/mcp/tools-editor.d.ts +5 -0
  369. package/dist/mcp/tools-editor.js +190 -0
  370. package/dist/mcp/tools-export.d.ts +9 -0
  371. package/dist/mcp/tools-export.js +180 -0
  372. package/dist/mcp/tools-marketplace.d.ts +9 -0
  373. package/dist/mcp/tools-marketplace.js +132 -0
  374. package/dist/mcp/tools-pattern.d.ts +3 -0
  375. package/dist/mcp/tools-pattern.js +783 -0
  376. package/dist/mcp/tools-query.d.ts +3 -0
  377. package/dist/mcp/tools-query.js +364 -0
  378. package/dist/mcp/tools-template.d.ts +10 -0
  379. package/dist/mcp/tools-template.js +119 -0
  380. package/dist/mcp/types.d.ts +70 -0
  381. package/dist/mcp/types.js +8 -0
  382. package/dist/mcp/workflow-executor.d.ts +47 -0
  383. package/dist/mcp/workflow-executor.js +133 -0
  384. package/dist/migration/registry.d.ts +30 -0
  385. package/dist/migration/registry.js +29 -0
  386. package/dist/node-types-generator.d.ts +49 -0
  387. package/dist/node-types-generator.js +139 -0
  388. package/dist/npm-packages.d.ts +56 -0
  389. package/dist/npm-packages.js +255 -0
  390. package/dist/parser.d.ts +204 -0
  391. package/dist/parser.js +2100 -0
  392. package/dist/plugin/PluginPanel.d.ts +12 -0
  393. package/dist/plugin/PluginPanel.js +5 -0
  394. package/dist/plugin/index.d.ts +13 -0
  395. package/dist/plugin/index.js +14 -0
  396. package/dist/plugin/types.d.ts +75 -0
  397. package/dist/plugin/types.js +8 -0
  398. package/dist/resolve-package-types.d.ts +17 -0
  399. package/dist/resolve-package-types.js +123 -0
  400. package/dist/runtime/CancellationError.d.ts +11 -0
  401. package/dist/runtime/CancellationError.js +20 -0
  402. package/dist/runtime/ExecutionContext.d.ts +146 -0
  403. package/dist/runtime/ExecutionContext.js +235 -0
  404. package/dist/runtime/builtin-functions.d.ts +8 -0
  405. package/dist/runtime/builtin-functions.js +549 -0
  406. package/dist/runtime/events.d.ts +50 -0
  407. package/dist/runtime/events.js +2 -0
  408. package/dist/runtime/function-registry.d.ts +59 -0
  409. package/dist/runtime/function-registry.js +66 -0
  410. package/dist/runtime/index.d.ts +7 -0
  411. package/dist/runtime/index.js +7 -0
  412. package/dist/runtime/parameter-resolver.d.ts +62 -0
  413. package/dist/runtime/parameter-resolver.js +113 -0
  414. package/dist/server/index.d.ts +7 -0
  415. package/dist/server/index.js +6 -0
  416. package/dist/server/types.d.ts +93 -0
  417. package/dist/server/types.js +5 -0
  418. package/dist/server/webhook-server.d.ts +50 -0
  419. package/dist/server/webhook-server.js +269 -0
  420. package/dist/server/workflow-registry.d.ts +61 -0
  421. package/dist/server/workflow-registry.js +202 -0
  422. package/dist/shared-project.d.ts +9 -0
  423. package/dist/shared-project.js +28 -0
  424. package/dist/sugar-optimizer.d.ts +40 -0
  425. package/dist/sugar-optimizer.js +387 -0
  426. package/dist/testing/assertions.d.ts +51 -0
  427. package/dist/testing/assertions.js +127 -0
  428. package/dist/testing/index.d.ts +30 -0
  429. package/dist/testing/index.js +24 -0
  430. package/dist/testing/mock-approval.d.ts +81 -0
  431. package/dist/testing/mock-approval.js +98 -0
  432. package/dist/testing/mock-llm.d.ts +124 -0
  433. package/dist/testing/mock-llm.js +119 -0
  434. package/dist/testing/recorder.d.ts +72 -0
  435. package/dist/testing/recorder.js +70 -0
  436. package/dist/testing/replayer.d.ts +56 -0
  437. package/dist/testing/replayer.js +143 -0
  438. package/dist/testing/token-tracker.d.ts +71 -0
  439. package/dist/testing/token-tracker.js +94 -0
  440. package/dist/type-checker.d.ts +42 -0
  441. package/dist/type-checker.js +190 -0
  442. package/dist/type-mappings.d.ts +29 -0
  443. package/dist/type-mappings.js +125 -0
  444. package/dist/types/branded-ports.d.ts +151 -0
  445. package/dist/types/branded-ports.js +121 -0
  446. package/dist/types/index.d.ts +5 -0
  447. package/dist/types/index.js +5 -0
  448. package/dist/types.d.ts +139 -0
  449. package/dist/types.js +15 -0
  450. package/dist/utils/error-utils.d.ts +15 -0
  451. package/dist/utils/error-utils.js +27 -0
  452. package/dist/utils/lru-cache.d.ts +15 -0
  453. package/dist/utils/lru-cache.js +40 -0
  454. package/dist/utils/port-ordering.d.ts +26 -0
  455. package/dist/utils/port-ordering.js +88 -0
  456. package/dist/utils/port-tag-utils.d.ts +23 -0
  457. package/dist/utils/port-tag-utils.js +41 -0
  458. package/dist/utils/string-distance.d.ts +14 -0
  459. package/dist/utils/string-distance.js +56 -0
  460. package/dist/validation/agent-detection.d.ts +33 -0
  461. package/dist/validation/agent-detection.js +115 -0
  462. package/dist/validation/agent-rules.d.ts +48 -0
  463. package/dist/validation/agent-rules.js +262 -0
  464. package/dist/validator.d.ts +92 -0
  465. package/dist/validator.js +970 -0
  466. package/package.json +109 -0
@@ -0,0 +1,410 @@
1
+ /**
2
+ * Editor Completions - Context Parser
3
+ *
4
+ * Parses the current line to detect what type of completion is expected.
5
+ */
6
+ // =============================================================================
7
+ // Patterns for detecting completion context
8
+ // =============================================================================
9
+ // Match @ at start of word (for annotation completions)
10
+ const ANNOTATION_PATTERN = /@(\w*)$/;
11
+ // Match @input or @output followed by { and optional partial type
12
+ const DATA_TYPE_PATTERN = /@(?:input|output)\s+\{(\w*)$/;
13
+ // Match @node followed by nodeId and space (for nodeType completions)
14
+ const NODE_TYPE_PATTERN = /@node\s+(\w+)\s+(\w*)$/;
15
+ // Match @connect followed by nodeId (before the dot)
16
+ const CONNECT_NODE_PATTERN = /@connect\s+(\w*)$/;
17
+ // Match @connect nodeId. (after the dot, for source port)
18
+ const CONNECT_SOURCE_PORT_PATTERN = /@connect\s+(\w+)\.(\w*)$/;
19
+ // Match @connect nodeId.port -> (for target node)
20
+ const CONNECT_TARGET_NODE_PATTERN = /@connect\s+\w+\.\w+\s*->\s*(\w*)$/;
21
+ // Match @connect nodeId.port -> nodeId. (for target port)
22
+ const CONNECT_TARGET_PORT_PATTERN = /@connect\s+\w+\.\w+\s*->\s*(\w+)\.(\w*)$/;
23
+ // Annotation value patterns (checked before generic annotation pattern)
24
+ const EXECUTE_WHEN_VALUE_PATTERN = /@executeWhen\s+(\w*)$/;
25
+ const FLOW_WEAVER_VALUE_PATTERN = /@flowWeaver\s+(\w*)$/;
26
+ const COLOR_VALUE_PATTERN = /@color\s+(\w*)$/;
27
+ // Sugar annotation patterns — node ID completions
28
+ // @path ... -> | (after arrow in path chain)
29
+ const PATH_NODE_PATTERN = /@path\s+(?:\w+(?::\w+)?\s*->\s*)+(\w*)$/;
30
+ // @position |
31
+ const POSITION_NODE_PATTERN = /@position\s+(\w*)$/;
32
+ // @scope name [... , | (node IDs inside brackets)
33
+ const SCOPE_NODE_PATTERN = /@scope\s+\w+\s*\[(?:\w+\s*,\s*)*(\w*)$/;
34
+ // @map id type over node.| (output port on source)
35
+ const MAP_PORT_PATTERN = /@map\s+\w+\s+\w+\s+over\s+(\w+)\.(\w*)$/;
36
+ // @map id type over | (source node)
37
+ const MAP_OVER_NODE_PATTERN = /@map\s+\w+\s+\w+\s+over\s+(\w*)$/;
38
+ // @map id | (node type after instance id)
39
+ const MAP_TYPE_PATTERN = /@map\s+\w+\s+(\w*)$/;
40
+ // @map | (instance id = node id)
41
+ const MAP_NODE_PATTERN = /@map\s+(\w*)$/;
42
+ // Bracket modifier patterns
43
+ const MODIFIER_NAME_PATTERN = /\[(\w*)$/;
44
+ const MODIFIER_VALUE_PATTERN = /\[(\w+):\s*(\w*)$/;
45
+ // =============================================================================
46
+ // Block Type Detection
47
+ // =============================================================================
48
+ /**
49
+ * Detect whether we're inside a @flowWeaver workflow or nodeType block.
50
+ * Scans preceding lines in the JSDoc block for the @flowWeaver annotation.
51
+ */
52
+ export function detectBlockType(precedingBlockLines) {
53
+ for (const line of precedingBlockLines) {
54
+ const match = line.match(/@flowWeaver\s+(nodeType|workflow)\b/);
55
+ if (match) {
56
+ return match[1];
57
+ }
58
+ // Bare @flowWeaver (no qualifier) defaults to workflow
59
+ if (/@flowWeaver\s*$/.test(line.trim()) || /@flowWeaver\s+(?!nodeType|workflow)\w/.test(line)) {
60
+ return 'workflow';
61
+ }
62
+ }
63
+ return null;
64
+ }
65
+ /**
66
+ * Detect the annotation on the current line (for modifier context).
67
+ * Returns the annotation name if the line contains one (e.g., "@input", "@node").
68
+ */
69
+ function detectLineAnnotation(lineText) {
70
+ const match = lineText.match(/@(\w+)/);
71
+ return match ? '@' + match[1] : null;
72
+ }
73
+ // =============================================================================
74
+ // Main Parser
75
+ // =============================================================================
76
+ /**
77
+ * Parse the current line to detect completion context.
78
+ *
79
+ * @param lineText - The full text of the current line
80
+ * @param cursorOffset - Cursor position within the line (0-based)
81
+ * @param isInJSDoc - Whether the cursor is inside a JSDoc block
82
+ * @param precedingBlockLines - Optional lines from /** to cursor for block type detection
83
+ * @returns Completion context or null if no completion should be shown
84
+ */
85
+ export function parseCompletionContext(lineText, cursorOffset, isInJSDoc, precedingBlockLines) {
86
+ // Only provide completions inside JSDoc blocks
87
+ if (!isInJSDoc) {
88
+ return null;
89
+ }
90
+ // Get text from start of line to cursor
91
+ const textBeforeCursor = lineText.slice(0, cursorOffset);
92
+ // Detect block type from preceding lines
93
+ const blockType = precedingBlockLines ? detectBlockType(precedingBlockLines) : null;
94
+ // Try each pattern in priority order
95
+ let match;
96
+ // 0a. Check for @map port: @map id type over node.|
97
+ match = textBeforeCursor.match(MAP_PORT_PATTERN);
98
+ if (match) {
99
+ return {
100
+ type: 'port',
101
+ lineText,
102
+ cursorOffset,
103
+ prefix: match[2],
104
+ nodeId: match[1],
105
+ portDirection: 'output',
106
+ blockType,
107
+ };
108
+ }
109
+ // 0b. Check for @map over node: @map id type over |
110
+ match = textBeforeCursor.match(MAP_OVER_NODE_PATTERN);
111
+ if (match) {
112
+ return {
113
+ type: 'nodeId',
114
+ lineText,
115
+ cursorOffset,
116
+ prefix: match[1],
117
+ blockType,
118
+ };
119
+ }
120
+ // 0c. Check for @map type: @map id |
121
+ match = textBeforeCursor.match(MAP_TYPE_PATTERN);
122
+ if (match) {
123
+ return {
124
+ type: 'nodeType',
125
+ lineText,
126
+ cursorOffset,
127
+ prefix: match[1],
128
+ blockType,
129
+ };
130
+ }
131
+ // 0d. Check for @map node: @map |
132
+ match = textBeforeCursor.match(MAP_NODE_PATTERN);
133
+ if (match) {
134
+ return {
135
+ type: 'nodeId',
136
+ lineText,
137
+ cursorOffset,
138
+ prefix: match[1],
139
+ blockType,
140
+ };
141
+ }
142
+ // 0e. Check for @path node: @path ... -> |
143
+ match = textBeforeCursor.match(PATH_NODE_PATTERN);
144
+ if (match) {
145
+ return {
146
+ type: 'nodeId',
147
+ lineText,
148
+ cursorOffset,
149
+ prefix: match[1],
150
+ blockType,
151
+ };
152
+ }
153
+ // 0h. Check for @position node: @position |
154
+ match = textBeforeCursor.match(POSITION_NODE_PATTERN);
155
+ if (match) {
156
+ return {
157
+ type: 'nodeId',
158
+ lineText,
159
+ cursorOffset,
160
+ prefix: match[1],
161
+ blockType,
162
+ };
163
+ }
164
+ // 0i. Check for @scope node inside brackets: @scope name [a, |
165
+ match = textBeforeCursor.match(SCOPE_NODE_PATTERN);
166
+ if (match) {
167
+ return {
168
+ type: 'nodeId',
169
+ lineText,
170
+ cursorOffset,
171
+ prefix: match[1],
172
+ blockType,
173
+ };
174
+ }
175
+ // 1. Check for @connect target port: @connect a.out -> b.|
176
+ match = textBeforeCursor.match(CONNECT_TARGET_PORT_PATTERN);
177
+ if (match) {
178
+ return {
179
+ type: 'port',
180
+ lineText,
181
+ cursorOffset,
182
+ prefix: match[2],
183
+ nodeId: match[1],
184
+ portDirection: 'input', // Target receives, so needs input port
185
+ blockType,
186
+ };
187
+ }
188
+ // 2. Check for @connect target node: @connect a.out -> |
189
+ match = textBeforeCursor.match(CONNECT_TARGET_NODE_PATTERN);
190
+ if (match) {
191
+ return {
192
+ type: 'nodeId',
193
+ lineText,
194
+ cursorOffset,
195
+ prefix: match[1],
196
+ blockType,
197
+ };
198
+ }
199
+ // 3. Check for @connect source port: @connect a.|
200
+ match = textBeforeCursor.match(CONNECT_SOURCE_PORT_PATTERN);
201
+ if (match) {
202
+ return {
203
+ type: 'port',
204
+ lineText,
205
+ cursorOffset,
206
+ prefix: match[2],
207
+ nodeId: match[1],
208
+ portDirection: 'output', // Source sends, so needs output port
209
+ blockType,
210
+ };
211
+ }
212
+ // 4. Check for @connect node: @connect |
213
+ match = textBeforeCursor.match(CONNECT_NODE_PATTERN);
214
+ if (match) {
215
+ return {
216
+ type: 'nodeId',
217
+ lineText,
218
+ cursorOffset,
219
+ prefix: match[1],
220
+ blockType,
221
+ };
222
+ }
223
+ // 5. Check for @node nodeType: @node myNode |
224
+ match = textBeforeCursor.match(NODE_TYPE_PATTERN);
225
+ if (match) {
226
+ return {
227
+ type: 'nodeType',
228
+ lineText,
229
+ cursorOffset,
230
+ prefix: match[2],
231
+ blockType,
232
+ };
233
+ }
234
+ // 6. Check for data type in braces: @input {|
235
+ match = textBeforeCursor.match(DATA_TYPE_PATTERN);
236
+ if (match) {
237
+ return {
238
+ type: 'dataType',
239
+ lineText,
240
+ cursorOffset,
241
+ prefix: match[1],
242
+ blockType,
243
+ };
244
+ }
245
+ // 7. Check for bracket modifier value: [placement:|
246
+ match = textBeforeCursor.match(MODIFIER_VALUE_PATTERN);
247
+ if (match) {
248
+ return {
249
+ type: 'modifierValue',
250
+ lineText,
251
+ cursorOffset,
252
+ prefix: match[2],
253
+ modifier: match[1],
254
+ blockType,
255
+ };
256
+ }
257
+ // 8. Check for bracket modifier name: [|
258
+ match = textBeforeCursor.match(MODIFIER_NAME_PATTERN);
259
+ if (match) {
260
+ const lineAnnotation = detectLineAnnotation(lineText);
261
+ return {
262
+ type: 'modifier',
263
+ lineText,
264
+ cursorOffset,
265
+ prefix: match[1],
266
+ annotation: lineAnnotation ?? undefined,
267
+ blockType,
268
+ };
269
+ }
270
+ // 9. Check for annotation values (before generic annotation)
271
+ match = textBeforeCursor.match(EXECUTE_WHEN_VALUE_PATTERN);
272
+ if (match) {
273
+ return {
274
+ type: 'annotationValue',
275
+ lineText,
276
+ cursorOffset,
277
+ prefix: match[1],
278
+ annotation: '@executeWhen',
279
+ blockType,
280
+ };
281
+ }
282
+ match = textBeforeCursor.match(FLOW_WEAVER_VALUE_PATTERN);
283
+ if (match) {
284
+ return {
285
+ type: 'annotationValue',
286
+ lineText,
287
+ cursorOffset,
288
+ prefix: match[1],
289
+ annotation: '@flowWeaver',
290
+ blockType,
291
+ };
292
+ }
293
+ match = textBeforeCursor.match(COLOR_VALUE_PATTERN);
294
+ if (match) {
295
+ return {
296
+ type: 'annotationValue',
297
+ lineText,
298
+ cursorOffset,
299
+ prefix: match[1],
300
+ annotation: '@color',
301
+ blockType,
302
+ };
303
+ }
304
+ // 10. Check for annotation: @|
305
+ match = textBeforeCursor.match(ANNOTATION_PATTERN);
306
+ if (match) {
307
+ // Extract existing annotations from preceding block lines
308
+ let existingAnnotations;
309
+ if (precedingBlockLines) {
310
+ const annotations = [];
311
+ for (const line of precedingBlockLines) {
312
+ const annoMatch = line.match(/@(\w+)/);
313
+ if (annoMatch) {
314
+ annotations.push(annoMatch[1]);
315
+ }
316
+ }
317
+ if (annotations.length > 0) {
318
+ existingAnnotations = annotations;
319
+ }
320
+ }
321
+ return {
322
+ type: 'annotation',
323
+ lineText,
324
+ cursorOffset,
325
+ prefix: match[1],
326
+ blockType,
327
+ existingAnnotations,
328
+ };
329
+ }
330
+ return null;
331
+ }
332
+ /**
333
+ * Get the word at the given position in the line.
334
+ * Useful for go-to-definition to find what word was clicked.
335
+ */
336
+ export function getWordAtPosition(lineText, offset) {
337
+ // Check if cursor is on a word character
338
+ const charAtOffset = lineText[offset];
339
+ // If not on a word char, return null (cursor is on whitespace/punctuation)
340
+ if (!/\w/.test(charAtOffset || '')) {
341
+ return null;
342
+ }
343
+ // Find word boundaries
344
+ let start = offset;
345
+ let end = offset;
346
+ // Expand left to find start of word
347
+ while (start > 0 && /\w/.test(lineText[start - 1])) {
348
+ start--;
349
+ }
350
+ // Expand right to find end of word
351
+ while (end < lineText.length && /\w/.test(lineText[end])) {
352
+ end++;
353
+ }
354
+ if (start === end) {
355
+ return null;
356
+ }
357
+ return {
358
+ word: lineText.slice(start, end),
359
+ start,
360
+ end,
361
+ };
362
+ }
363
+ /**
364
+ * Detect what kind of symbol is at the given position.
365
+ * Used for go-to-definition to determine navigation target.
366
+ */
367
+ export function detectSymbolType(lineText, offset) {
368
+ const wordInfo = getWordAtPosition(lineText, offset);
369
+ if (!wordInfo) {
370
+ return null;
371
+ }
372
+ const { word, start } = wordInfo;
373
+ const textBefore = lineText.slice(0, start);
374
+ // Check if this is a nodeType in @node declaration
375
+ // Pattern: @node nodeId NodeType
376
+ const nodeTypeMatch = textBefore.match(/@node\s+\w+\s+$/);
377
+ if (nodeTypeMatch) {
378
+ return { type: 'nodeType', name: word };
379
+ }
380
+ // Check if this is a nodeId in @connect (before dot)
381
+ // Pattern: @connect nodeId.port
382
+ const connectNodeMatch = textBefore.match(/@connect\s+$/);
383
+ if (connectNodeMatch) {
384
+ return { type: 'nodeId', name: word };
385
+ }
386
+ // Check if this is a port after nodeId.
387
+ // Pattern: @connect nodeId.port or nodeId.port ->
388
+ const portMatch = textBefore.match(/@connect\s+(\w+)\.$/);
389
+ if (portMatch) {
390
+ return { type: 'port', name: word, nodeId: portMatch[1] };
391
+ }
392
+ // Check if target nodeId after ->
393
+ const targetNodeMatch = textBefore.match(/@connect\s+\w+\.\w+\s*->\s*$/);
394
+ if (targetNodeMatch) {
395
+ return { type: 'nodeId', name: word };
396
+ }
397
+ // Check if target port after -> nodeId.
398
+ const targetPortMatch = textBefore.match(/@connect\s+\w+\.\w+\s*->\s*(\w+)\.$/);
399
+ if (targetPortMatch) {
400
+ return { type: 'port', name: word, nodeId: targetPortMatch[1] };
401
+ }
402
+ // Check if this is a nodeId in sugar annotations (@path)
403
+ // Matches identifiers separated by arrows, with optional :ok/:fail suffixes
404
+ const sugarNodeMatch = textBefore.match(/@path\s+(?:(?:\w+(?::\w+)?\s*(?:->|,)\s*)*)$/);
405
+ if (sugarNodeMatch) {
406
+ return { type: 'nodeId', name: word };
407
+ }
408
+ return null;
409
+ }
410
+ //# sourceMappingURL=contextParser.js.map
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Editor Completions - Data Types
3
+ *
4
+ * Port data types for autocompletion inside {braces}.
5
+ */
6
+ import type { FlowWeaverCompletion } from "./types.js";
7
+ /**
8
+ * Common data types for port definitions.
9
+ * These appear when typing inside {braces} after @input or @output.
10
+ */
11
+ export declare const DATA_TYPES: FlowWeaverCompletion[];
12
+ /**
13
+ * Get data type completions filtered by prefix.
14
+ */
15
+ export declare function getDataTypeCompletions(prefix: string): FlowWeaverCompletion[];
16
+ //# sourceMappingURL=dataTypes.d.ts.map
@@ -0,0 +1,95 @@
1
+ /**
2
+ * Editor Completions - Data Types
3
+ *
4
+ * Port data types for autocompletion inside {braces}.
5
+ */
6
+ /**
7
+ * Common data types for port definitions.
8
+ * These appear when typing inside {braces} after @input or @output.
9
+ */
10
+ export const DATA_TYPES = [
11
+ // Control flow
12
+ {
13
+ label: "STEP",
14
+ detail: "Control flow port",
15
+ documentation: "A control flow port that triggers execution. Used for sequencing nodes.",
16
+ insertText: "STEP}",
17
+ insertTextFormat: "plain",
18
+ kind: "type",
19
+ sortOrder: 0,
20
+ },
21
+ // Primitive types
22
+ {
23
+ label: "String",
24
+ detail: "Text value",
25
+ documentation: "A string/text value.",
26
+ insertText: "String}",
27
+ insertTextFormat: "plain",
28
+ kind: "type",
29
+ sortOrder: 10,
30
+ },
31
+ {
32
+ label: "Number",
33
+ detail: "Numeric value",
34
+ documentation: "A numeric value (integer or floating point).",
35
+ insertText: "Number}",
36
+ insertTextFormat: "plain",
37
+ kind: "type",
38
+ sortOrder: 11,
39
+ },
40
+ {
41
+ label: "Boolean",
42
+ detail: "True/false value",
43
+ documentation: "A boolean true/false value.",
44
+ insertText: "Boolean}",
45
+ insertTextFormat: "plain",
46
+ kind: "type",
47
+ sortOrder: 12,
48
+ },
49
+ // Complex types
50
+ {
51
+ label: "Array",
52
+ detail: "List of values",
53
+ documentation: "An array/list of values.",
54
+ insertText: "Array}",
55
+ insertTextFormat: "plain",
56
+ kind: "type",
57
+ sortOrder: 20,
58
+ },
59
+ {
60
+ label: "Object",
61
+ detail: "Key-value object",
62
+ documentation: "A JavaScript object with key-value pairs.",
63
+ insertText: "Object}",
64
+ insertTextFormat: "plain",
65
+ kind: "type",
66
+ sortOrder: 21,
67
+ },
68
+ {
69
+ label: "Function",
70
+ detail: "Callable function",
71
+ documentation: "A function reference.",
72
+ insertText: "Function}",
73
+ insertTextFormat: "plain",
74
+ kind: "type",
75
+ sortOrder: 22,
76
+ },
77
+ // Generic
78
+ {
79
+ label: "Any",
80
+ detail: "Any type",
81
+ documentation: "Accepts any type of value.",
82
+ insertText: "Any}",
83
+ insertTextFormat: "plain",
84
+ kind: "type",
85
+ sortOrder: 30,
86
+ },
87
+ ];
88
+ /**
89
+ * Get data type completions filtered by prefix.
90
+ */
91
+ export function getDataTypeCompletions(prefix) {
92
+ const lowerPrefix = prefix.toLowerCase();
93
+ return DATA_TYPES.filter((c) => c.label.toLowerCase().startsWith(lowerPrefix));
94
+ }
95
+ //# sourceMappingURL=dataTypes.js.map
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Editor Completions - Go To Definition
3
+ *
4
+ * Find definition locations for Flow Weaver symbols.
5
+ */
6
+ import type { DefinitionLocation, WorkflowContext } from "./types.js";
7
+ /**
8
+ * Find the definition location for a symbol at the given position.
9
+ *
10
+ * @param lineText - The full text of the current line
11
+ * @param offset - Cursor position within the line (0-based)
12
+ * @param context - Workflow context with nodeTypes and instances
13
+ * @returns Definition location or null if not found
14
+ *
15
+ * @example
16
+ * ```typescript
17
+ * // User Cmd+clicks on "MyAdder" in "@node add1 MyAdder"
18
+ * const location = getDefinitionLocation(
19
+ * " * @node add1 MyAdder",
20
+ * 18, // position of 'M' in MyAdder
21
+ * { nodeTypes: { MyAdder: { filePath: "/src/nodes.ts", line: 42 } } }
22
+ * );
23
+ * // Returns: { type: "nodeType", name: "MyAdder", filePath: "/src/nodes.ts", line: 42 }
24
+ * ```
25
+ */
26
+ export declare function getDefinitionLocation(lineText: string, offset: number, context: WorkflowContext): DefinitionLocation | null;
27
+ //# sourceMappingURL=goToDefinition.d.ts.map
@@ -0,0 +1,112 @@
1
+ /**
2
+ * Editor Completions - Go To Definition
3
+ *
4
+ * Find definition locations for Flow Weaver symbols.
5
+ */
6
+ import { detectSymbolType } from "./contextParser.js";
7
+ /**
8
+ * Find the definition location for a symbol at the given position.
9
+ *
10
+ * @param lineText - The full text of the current line
11
+ * @param offset - Cursor position within the line (0-based)
12
+ * @param context - Workflow context with nodeTypes and instances
13
+ * @returns Definition location or null if not found
14
+ *
15
+ * @example
16
+ * ```typescript
17
+ * // User Cmd+clicks on "MyAdder" in "@node add1 MyAdder"
18
+ * const location = getDefinitionLocation(
19
+ * " * @node add1 MyAdder",
20
+ * 18, // position of 'M' in MyAdder
21
+ * { nodeTypes: { MyAdder: { filePath: "/src/nodes.ts", line: 42 } } }
22
+ * );
23
+ * // Returns: { type: "nodeType", name: "MyAdder", filePath: "/src/nodes.ts", line: 42 }
24
+ * ```
25
+ */
26
+ export function getDefinitionLocation(lineText, offset, context) {
27
+ // Detect what kind of symbol this is based on context
28
+ const symbolInfo = detectSymbolType(lineText, offset);
29
+ if (!symbolInfo) {
30
+ return null;
31
+ }
32
+ switch (symbolInfo.type) {
33
+ case "nodeType":
34
+ return findNodeTypeDefinition(symbolInfo.name, context);
35
+ case "nodeId":
36
+ return findNodeDefinition(symbolInfo.name, context);
37
+ case "port":
38
+ return findPortDefinition(symbolInfo.name, symbolInfo.nodeId, context);
39
+ default:
40
+ return null;
41
+ }
42
+ }
43
+ /**
44
+ * Find definition for a nodeType name.
45
+ */
46
+ function findNodeTypeDefinition(name, context) {
47
+ const nodeType = context.nodeTypes[name];
48
+ if (!nodeType) {
49
+ return null;
50
+ }
51
+ return {
52
+ type: "nodeType",
53
+ name,
54
+ filePath: nodeType.filePath,
55
+ line: nodeType.line,
56
+ };
57
+ }
58
+ /**
59
+ * Find definition for a node instance ID.
60
+ * This navigates to the @node declaration in the current file.
61
+ */
62
+ function findNodeDefinition(id, context) {
63
+ const instance = context.instances?.find((inst) => inst.id === id);
64
+ if (!instance) {
65
+ return null;
66
+ }
67
+ // For node instances, we return the node type location
68
+ // since instances are defined inline in JSDoc
69
+ const nodeType = context.nodeTypes[instance.nodeType];
70
+ if (nodeType) {
71
+ return {
72
+ type: "node",
73
+ name: id,
74
+ filePath: nodeType.filePath,
75
+ line: nodeType.line,
76
+ };
77
+ }
78
+ return {
79
+ type: "node",
80
+ name: id,
81
+ };
82
+ }
83
+ /**
84
+ * Find definition for a port on a node.
85
+ */
86
+ function findPortDefinition(portName, nodeId, context) {
87
+ if (!nodeId) {
88
+ return null;
89
+ }
90
+ // Find the node instance
91
+ const instance = context.instances?.find((inst) => inst.id === nodeId);
92
+ if (!instance) {
93
+ return null;
94
+ }
95
+ // Find the node type
96
+ const nodeType = context.nodeTypes[instance.nodeType];
97
+ if (!nodeType) {
98
+ return null;
99
+ }
100
+ // Find the port
101
+ const port = nodeType.ports.find((p) => p.name === portName);
102
+ if (!port) {
103
+ return null;
104
+ }
105
+ return {
106
+ type: "port",
107
+ name: portName,
108
+ filePath: nodeType.filePath,
109
+ line: nodeType.line, // Ideally we'd have per-port line numbers
110
+ };
111
+ }
112
+ //# sourceMappingURL=goToDefinition.js.map
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Editor Completions - Public API
3
+ *
4
+ * Editor-agnostic completion utilities for Flow Weaver.
5
+ * Use these with any editor (CodeMirror, VS Code, Monaco, etc.)
6
+ */
7
+ export * from './types.js';
8
+ export { parseCompletionContext, getWordAtPosition, detectSymbolType, detectBlockType, } from './contextParser.js';
9
+ export { getAnnotationCompletions, JSDOC_ANNOTATIONS } from './jsDocAnnotations.js';
10
+ export { getDataTypeCompletions, DATA_TYPES } from './dataTypes.js';
11
+ export { getDefinitionLocation } from './goToDefinition.js';
12
+ export { getAnnotationValueCompletions } from './annotationValues.js';
13
+ export { getModifierCompletions, getModifierValueCompletions } from './modifierCompletions.js';
14
+ import type { FlowWeaverCompletion, WorkflowContext } from './types.js';
15
+ /**
16
+ * Get Flow Weaver completions for the current cursor position.
17
+ *
18
+ * This is the main entry point for editor integrations.
19
+ *
20
+ * @param lineText - The full text of the current line
21
+ * @param cursorOffset - Cursor position within the line (0-based)
22
+ * @param isInJSDoc - Whether the cursor is inside a JSDoc block
23
+ * @param context - Optional workflow context for nodeType/port completions
24
+ * @param precedingBlockLines - Optional lines from start of JSDoc block to cursor line
25
+ * @returns Array of completion suggestions
26
+ *
27
+ * @example
28
+ * ```typescript
29
+ * // In a CodeMirror completion source:
30
+ * const completions = getFlowWeaverCompletions(
31
+ * " * @inp",
32
+ * 7,
33
+ * true
34
+ * );
35
+ * // Returns: [{ label: "@input", ... }]
36
+ * ```
37
+ */
38
+ export declare function getFlowWeaverCompletions(lineText: string, cursorOffset: number, isInJSDoc: boolean, context?: WorkflowContext, precedingBlockLines?: string[]): FlowWeaverCompletion[];
39
+ //# sourceMappingURL=index.d.ts.map