@rubytech/create-maxy-code 0.1.51 → 0.1.57

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 (304) hide show
  1. package/dist/__tests__/platform-port-stamp.test.js +24 -0
  2. package/dist/index.js +5 -2
  3. package/dist/port-resolution.js +2 -0
  4. package/package.json +1 -1
  5. package/payload/platform/lib/require-port-env/dist/index.d.ts +31 -0
  6. package/payload/platform/lib/require-port-env/dist/index.d.ts.map +1 -0
  7. package/payload/platform/lib/require-port-env/dist/index.js +52 -0
  8. package/payload/platform/lib/require-port-env/dist/index.js.map +1 -0
  9. package/payload/platform/lib/require-port-env/src/index.ts +56 -0
  10. package/payload/platform/lib/require-port-env/tsconfig.json +8 -0
  11. package/payload/platform/package-lock.json +0 -1
  12. package/payload/platform/package.json +2 -3
  13. package/payload/platform/plugins/admin/PLUGIN.md +16 -3
  14. package/payload/platform/plugins/admin/hooks/__tests__/turn-completed-graph-write.test.sh +183 -144
  15. package/payload/platform/plugins/admin/hooks/turn-completed-graph-write.sh +180 -99
  16. package/payload/platform/plugins/admin/mcp/dist/index.js +20 -12
  17. package/payload/platform/plugins/admin/mcp/dist/index.js.map +1 -1
  18. package/payload/platform/plugins/brochures/PLUGIN.md +2 -0
  19. package/payload/platform/plugins/brochures/skills/property-market-report/SKILL.md +100 -0
  20. package/payload/platform/plugins/brochures/skills/property-market-report/references/render.py +267 -0
  21. package/payload/platform/plugins/brochures/skills/property-market-report/references/template.html +266 -0
  22. package/payload/platform/plugins/brochures/skills/property-socials/SKILL.md +141 -0
  23. package/payload/platform/plugins/cloudflare/mcp/dist/lib/setup-orchestrator.d.ts.map +1 -1
  24. package/payload/platform/plugins/cloudflare/mcp/dist/lib/setup-orchestrator.js +2 -1
  25. package/payload/platform/plugins/cloudflare/mcp/dist/lib/setup-orchestrator.js.map +1 -1
  26. package/payload/platform/plugins/docs/references/admin-session.md +33 -3
  27. package/payload/platform/plugins/docs/references/deployment.md +25 -0
  28. package/payload/platform/plugins/docs/references/internals.md +26 -0
  29. package/payload/platform/plugins/docs/references/platform.md +3 -1
  30. package/payload/platform/plugins/docs/references/plugins-guide.md +1 -1
  31. package/payload/platform/plugins/docs/references/troubleshooting.md +1 -1
  32. package/payload/platform/plugins/email/mcp/dist/lib/claude-bridge.d.ts.map +1 -1
  33. package/payload/platform/plugins/email/mcp/dist/lib/claude-bridge.js +2 -1
  34. package/payload/platform/plugins/email/mcp/dist/lib/claude-bridge.js.map +1 -1
  35. package/payload/platform/plugins/memory/.claude-plugin/plugin.json +1 -1
  36. package/payload/platform/plugins/memory/PLUGIN.md +1 -1
  37. package/payload/platform/plugins/memory/mcp/dist/index.js +6 -1
  38. package/payload/platform/plugins/memory/mcp/dist/index.js.map +1 -1
  39. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-search-fields.test.d.ts +2 -0
  40. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-search-fields.test.d.ts.map +1 -0
  41. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-search-fields.test.js +107 -0
  42. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-search-fields.test.js.map +1 -0
  43. package/payload/platform/plugins/memory/mcp/dist/tools/memory-search.d.ts +4 -2
  44. package/payload/platform/plugins/memory/mcp/dist/tools/memory-search.d.ts.map +1 -1
  45. package/payload/platform/plugins/memory/mcp/dist/tools/memory-search.js +22 -13
  46. package/payload/platform/plugins/memory/mcp/dist/tools/memory-search.js.map +1 -1
  47. package/payload/platform/plugins/memory/references/graph-primitives.md +42 -0
  48. package/payload/platform/plugins/memory/skills/concept-synthesis/SKILL.md +1 -1
  49. package/payload/platform/plugins/memory/skills/conversation-archive-enrich/SKILL.md +2 -2
  50. package/payload/platform/plugins/memory/skills/document-ingest/SKILL.md +1 -1
  51. package/payload/platform/plugins/property-data/.claude-plugin/plugin.json +17 -0
  52. package/payload/platform/plugins/property-data/PLUGIN.md +100 -0
  53. package/payload/platform/plugins/property-data/mcp/dist/index.d.ts +2 -0
  54. package/payload/platform/plugins/property-data/mcp/dist/index.d.ts.map +1 -0
  55. package/payload/platform/plugins/property-data/mcp/dist/index.js +153 -0
  56. package/payload/platform/plugins/property-data/mcp/dist/index.js.map +1 -0
  57. package/payload/platform/plugins/property-data/mcp/dist/lib/crypto.d.ts +3 -0
  58. package/payload/platform/plugins/property-data/mcp/dist/lib/crypto.d.ts.map +1 -0
  59. package/payload/platform/plugins/property-data/mcp/dist/lib/crypto.js +72 -0
  60. package/payload/platform/plugins/property-data/mcp/dist/lib/crypto.js.map +1 -0
  61. package/payload/platform/plugins/property-data/mcp/dist/lib/neo4j.d.ts +5 -0
  62. package/payload/platform/plugins/property-data/mcp/dist/lib/neo4j.d.ts.map +1 -0
  63. package/payload/platform/plugins/property-data/mcp/dist/lib/neo4j.js +38 -0
  64. package/payload/platform/plugins/property-data/mcp/dist/lib/neo4j.js.map +1 -0
  65. package/payload/platform/plugins/property-data/mcp/dist/lib/propertydata-api.d.ts +29 -0
  66. package/payload/platform/plugins/property-data/mcp/dist/lib/propertydata-api.d.ts.map +1 -0
  67. package/payload/platform/plugins/property-data/mcp/dist/lib/propertydata-api.js +112 -0
  68. package/payload/platform/plugins/property-data/mcp/dist/lib/propertydata-api.js.map +1 -0
  69. package/payload/platform/plugins/property-data/mcp/dist/tools/endpoints.d.ts +14 -0
  70. package/payload/platform/plugins/property-data/mcp/dist/tools/endpoints.d.ts.map +1 -0
  71. package/payload/platform/plugins/property-data/mcp/dist/tools/endpoints.js +20 -0
  72. package/payload/platform/plugins/property-data/mcp/dist/tools/endpoints.js.map +1 -0
  73. package/payload/platform/plugins/property-data/mcp/dist/tools/key-deregister.d.ts +4 -0
  74. package/payload/platform/plugins/property-data/mcp/dist/tools/key-deregister.d.ts.map +1 -0
  75. package/payload/platform/plugins/property-data/mcp/dist/tools/key-deregister.js +19 -0
  76. package/payload/platform/plugins/property-data/mcp/dist/tools/key-deregister.js.map +1 -0
  77. package/payload/platform/plugins/property-data/mcp/dist/tools/key-list.d.ts +4 -0
  78. package/payload/platform/plugins/property-data/mcp/dist/tools/key-list.d.ts.map +1 -0
  79. package/payload/platform/plugins/property-data/mcp/dist/tools/key-list.js +10 -0
  80. package/payload/platform/plugins/property-data/mcp/dist/tools/key-list.js.map +1 -0
  81. package/payload/platform/plugins/property-data/mcp/dist/tools/key-register.d.ts +5 -0
  82. package/payload/platform/plugins/property-data/mcp/dist/tools/key-register.d.ts.map +1 -0
  83. package/payload/platform/plugins/property-data/mcp/dist/tools/key-register.js +43 -0
  84. package/payload/platform/plugins/property-data/mcp/dist/tools/key-register.js.map +1 -0
  85. package/payload/platform/plugins/property-data/mcp/package-lock.json +2566 -0
  86. package/payload/platform/plugins/property-data/mcp/package.json +21 -0
  87. package/payload/platform/plugins/property-data/mcp/src/__tests__/key-roundtrip.test.ts +107 -0
  88. package/payload/platform/plugins/property-data/mcp/src/__tests__/propertydata-api.test.ts +184 -0
  89. package/payload/platform/plugins/property-data/mcp/src/__tests__/schema-parity.test.ts +48 -0
  90. package/payload/platform/plugins/property-data/mcp/src/index.ts +249 -0
  91. package/payload/platform/plugins/property-data/mcp/src/lib/crypto.ts +79 -0
  92. package/payload/platform/plugins/property-data/mcp/src/lib/neo4j.ts +47 -0
  93. package/payload/platform/plugins/property-data/mcp/src/lib/propertydata-api.ts +135 -0
  94. package/payload/platform/plugins/property-data/mcp/src/tools/endpoints.ts +27 -0
  95. package/payload/platform/plugins/property-data/mcp/src/tools/key-deregister.ts +21 -0
  96. package/payload/platform/plugins/property-data/mcp/src/tools/key-list.ts +10 -0
  97. package/payload/platform/plugins/property-data/mcp/src/tools/key-register.ts +58 -0
  98. package/payload/platform/plugins/property-data/mcp/tsconfig.json +20 -0
  99. package/payload/platform/plugins/property-data/mcp/vitest.config.ts +8 -0
  100. package/payload/platform/plugins/property-data/skills/property-data/SKILL.md +58 -0
  101. package/payload/platform/plugins/waitlist/PLUGIN.md +6 -8
  102. package/payload/platform/plugins/waitlist/mcp/dist/index.js +33 -0
  103. package/payload/platform/plugins/waitlist/mcp/dist/index.js.map +1 -1
  104. package/payload/platform/plugins/waitlist/mcp/dist/lib/admin-model.d.ts +16 -0
  105. package/payload/platform/plugins/waitlist/mcp/dist/lib/admin-model.d.ts.map +1 -0
  106. package/payload/platform/plugins/waitlist/mcp/dist/lib/admin-model.js +58 -0
  107. package/payload/platform/plugins/waitlist/mcp/dist/lib/admin-model.js.map +1 -0
  108. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-extract.d.ts +34 -0
  109. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-extract.d.ts.map +1 -0
  110. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-extract.js +129 -0
  111. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-extract.js.map +1 -0
  112. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-heal.d.ts +12 -18
  113. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-heal.d.ts.map +1 -1
  114. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-heal.js +89 -86
  115. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-heal.js.map +1 -1
  116. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-setup.d.ts.map +1 -1
  117. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-setup.js +15 -53
  118. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-setup.js.map +1 -1
  119. package/payload/platform/plugins/whatsapp/PLUGIN.md +1 -0
  120. package/payload/platform/plugins/whatsapp/mcp/dist/index.js +5 -5
  121. package/payload/platform/plugins/whatsapp/mcp/dist/index.js.map +1 -1
  122. package/payload/platform/plugins/workflows/PLUGIN.md +10 -176
  123. package/payload/platform/plugins/workflows/mcp/dist/index.js +14 -142
  124. package/payload/platform/plugins/workflows/mcp/dist/index.js.map +1 -1
  125. package/payload/platform/plugins/workflows/mcp/dist/lib/step-resolver.d.ts +1 -88
  126. package/payload/platform/plugins/workflows/mcp/dist/lib/step-resolver.d.ts.map +1 -1
  127. package/payload/platform/plugins/workflows/mcp/dist/lib/step-resolver.js +0 -86
  128. package/payload/platform/plugins/workflows/mcp/dist/lib/step-resolver.js.map +1 -1
  129. package/payload/platform/plugins/workflows/mcp/dist/lib/validate-capabilities.d.ts +5 -12
  130. package/payload/platform/plugins/workflows/mcp/dist/lib/validate-capabilities.d.ts.map +1 -1
  131. package/payload/platform/plugins/workflows/mcp/dist/lib/validate-capabilities.js +5 -46
  132. package/payload/platform/plugins/workflows/mcp/dist/lib/validate-capabilities.js.map +1 -1
  133. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-create.d.ts +1 -16
  134. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-create.d.ts.map +1 -1
  135. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-create.js +39 -75
  136. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-create.js.map +1 -1
  137. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-execute.d.ts +8 -21
  138. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-execute.d.ts.map +1 -1
  139. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-execute.js +39 -266
  140. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-execute.js.map +1 -1
  141. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-get.d.ts +3 -8
  142. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-get.d.ts.map +1 -1
  143. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-get.js +3 -10
  144. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-get.js.map +1 -1
  145. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-update.d.ts.map +1 -1
  146. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-update.js +38 -86
  147. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-update.js.map +1 -1
  148. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-validate.d.ts.map +1 -1
  149. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-validate.js +8 -26
  150. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-validate.js.map +1 -1
  151. package/payload/platform/services/claude-session-manager/dist/fs-watcher.d.ts.map +1 -1
  152. package/payload/platform/services/claude-session-manager/dist/fs-watcher.js +1 -2
  153. package/payload/platform/services/claude-session-manager/dist/fs-watcher.js.map +1 -1
  154. package/payload/platform/services/claude-session-manager/dist/http-server.d.ts.map +1 -1
  155. package/payload/platform/services/claude-session-manager/dist/http-server.js +204 -23
  156. package/payload/platform/services/claude-session-manager/dist/http-server.js.map +1 -1
  157. package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts +39 -1
  158. package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts.map +1 -1
  159. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js +109 -10
  160. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js.map +1 -1
  161. package/payload/platform/services/claude-session-manager/dist/reaper.d.ts.map +1 -1
  162. package/payload/platform/services/claude-session-manager/dist/reaper.js +11 -0
  163. package/payload/platform/services/claude-session-manager/dist/reaper.js.map +1 -1
  164. package/payload/platform/services/claude-session-manager/dist/session-store.d.ts +21 -0
  165. package/payload/platform/services/claude-session-manager/dist/session-store.d.ts.map +1 -1
  166. package/payload/platform/services/claude-session-manager/dist/session-store.js.map +1 -1
  167. package/payload/platform/services/claude-session-manager/vitest.config.ts +14 -0
  168. package/payload/platform/templates/agents/admin/IDENTITY.md +2 -0
  169. package/payload/platform/templates/agents/admin/SOUL.md +3 -1
  170. package/payload/premium-plugins/real-agent/BUNDLE.md +5 -3
  171. package/payload/premium-plugins/real-agent/agents/negotiator.md +1 -1
  172. package/payload/premium-plugins/real-agent/agents/valuer.md +1 -1
  173. package/payload/premium-plugins/real-agent/plugins/.claude-plugin/marketplace.json +5 -0
  174. package/payload/premium-plugins/real-agent/plugins/brochures/PLUGIN.md +2 -0
  175. package/payload/premium-plugins/real-agent/plugins/brochures/skills/property-market-report/SKILL.md +100 -0
  176. package/payload/premium-plugins/real-agent/plugins/brochures/skills/property-market-report/references/render.py +267 -0
  177. package/payload/premium-plugins/real-agent/plugins/brochures/skills/property-market-report/references/template.html +266 -0
  178. package/payload/premium-plugins/real-agent/plugins/brochures/skills/property-socials/SKILL.md +141 -0
  179. package/payload/premium-plugins/real-agent/plugins/property-data/.claude-plugin/plugin.json +17 -0
  180. package/payload/premium-plugins/real-agent/plugins/property-data/PLUGIN.md +100 -0
  181. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/index.d.ts +2 -0
  182. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/index.d.ts.map +1 -0
  183. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/index.js +153 -0
  184. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/index.js.map +1 -0
  185. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/lib/crypto.d.ts +3 -0
  186. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/lib/crypto.d.ts.map +1 -0
  187. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/lib/crypto.js +72 -0
  188. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/lib/crypto.js.map +1 -0
  189. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/lib/neo4j.d.ts +5 -0
  190. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/lib/neo4j.d.ts.map +1 -0
  191. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/lib/neo4j.js +38 -0
  192. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/lib/neo4j.js.map +1 -0
  193. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/lib/propertydata-api.d.ts +29 -0
  194. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/lib/propertydata-api.d.ts.map +1 -0
  195. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/lib/propertydata-api.js +112 -0
  196. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/lib/propertydata-api.js.map +1 -0
  197. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/tools/endpoints.d.ts +14 -0
  198. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/tools/endpoints.d.ts.map +1 -0
  199. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/tools/endpoints.js +20 -0
  200. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/tools/endpoints.js.map +1 -0
  201. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/tools/key-deregister.d.ts +4 -0
  202. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/tools/key-deregister.d.ts.map +1 -0
  203. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/tools/key-deregister.js +19 -0
  204. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/tools/key-deregister.js.map +1 -0
  205. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/tools/key-list.d.ts +4 -0
  206. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/tools/key-list.d.ts.map +1 -0
  207. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/tools/key-list.js +10 -0
  208. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/tools/key-list.js.map +1 -0
  209. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/tools/key-register.d.ts +5 -0
  210. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/tools/key-register.d.ts.map +1 -0
  211. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/tools/key-register.js +43 -0
  212. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/tools/key-register.js.map +1 -0
  213. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/package-lock.json +2566 -0
  214. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/package.json +21 -0
  215. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/src/__tests__/key-roundtrip.test.ts +107 -0
  216. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/src/__tests__/propertydata-api.test.ts +184 -0
  217. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/src/__tests__/schema-parity.test.ts +48 -0
  218. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/src/index.ts +249 -0
  219. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/src/lib/crypto.ts +79 -0
  220. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/src/lib/neo4j.ts +47 -0
  221. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/src/lib/propertydata-api.ts +135 -0
  222. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/src/tools/endpoints.ts +27 -0
  223. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/src/tools/key-deregister.ts +21 -0
  224. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/src/tools/key-list.ts +10 -0
  225. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/src/tools/key-register.ts +58 -0
  226. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/tsconfig.json +20 -0
  227. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/vitest.config.ts +8 -0
  228. package/payload/premium-plugins/real-agent/plugins/property-data/skills/property-data/SKILL.md +58 -0
  229. package/payload/server/{chunk-CWI7NOWK.js → chunk-2IKQERHN.js} +32 -4
  230. package/payload/server/maxy-edge.js +53 -25
  231. package/payload/server/public/assets/admin-2ZJmzJ_g.js +216 -0
  232. package/payload/server/public/assets/{architectureDiagram-Q4EWVU46-DGHlapUl.js → architectureDiagram-Q4EWVU46-DgfgldJT.js} +1 -1
  233. package/payload/server/public/assets/{blockDiagram-DXYQGD6D-Dgnf9J14.js → blockDiagram-DXYQGD6D-agu8GDzA.js} +1 -1
  234. package/payload/server/public/assets/{brand-CtilcX3W.css → brand-BDASZqMG.css} +1 -1
  235. package/payload/server/public/assets/{c4Diagram-AHTNJAMY-GBVmghhJ.js → c4Diagram-AHTNJAMY-CmNsUmAe.js} +1 -1
  236. package/payload/server/public/assets/channel-DXGOX55q.js +1 -0
  237. package/payload/server/public/assets/{chunk-336JU56O-CSVC_J3A.js → chunk-336JU56O-D9Uts7k9.js} +2 -2
  238. package/payload/server/public/assets/{chunk-426QAEUC-CK1Z0942.js → chunk-426QAEUC-D4ABqXMn.js} +1 -1
  239. package/payload/server/public/assets/{chunk-4TB4RGXK-CaqJYLxL.js → chunk-4TB4RGXK-D1KE4OAX.js} +1 -1
  240. package/payload/server/public/assets/{chunk-5FUZZQ4R-57BmPy_B.js → chunk-5FUZZQ4R-CAh0GXe2.js} +1 -1
  241. package/payload/server/public/assets/{chunk-5PVQY5BW-Ud03uYx_.js → chunk-5PVQY5BW-DBHa6HOv.js} +1 -1
  242. package/payload/server/public/assets/{chunk-EDXVE4YY-p5KO0PoG.js → chunk-EDXVE4YY-BDC-6mL3.js} +1 -1
  243. package/payload/server/public/assets/{chunk-ENJZ2VHE-CkxgLujt.js → chunk-ENJZ2VHE-CH3uROkW.js} +1 -1
  244. package/payload/server/public/assets/{chunk-ICPOFSXX-DwMkY8p7.js → chunk-ICPOFSXX-BzZf0nAw.js} +1 -1
  245. package/payload/server/public/assets/{chunk-OYMX7WX6-CyYOUKBw.js → chunk-OYMX7WX6-BrLHrI6O.js} +1 -1
  246. package/payload/server/public/assets/{chunk-U2HBQHQK-Dk5rfJM6.js → chunk-U2HBQHQK-Bw4UkLe_.js} +1 -1
  247. package/payload/server/public/assets/{chunk-X2U36JSP-D0qCg9Nq.js → chunk-X2U36JSP-23xgdk05.js} +1 -1
  248. package/payload/server/public/assets/{chunk-YZCP3GAM-C0uFHrdT.js → chunk-YZCP3GAM-BA8iGgRa.js} +1 -1
  249. package/payload/server/public/assets/{chunk-ZZ45TVLE-C7lSyGRs.js → chunk-ZZ45TVLE-B-ol4EgR.js} +1 -1
  250. package/payload/server/public/assets/classDiagram-6PBFFD2Q-DTuuDxpK.js +1 -0
  251. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-CIw8RU0q.js +1 -0
  252. package/payload/server/public/assets/clone-O4ZyuvYl.js +1 -0
  253. package/payload/server/public/assets/{dagre-BWZ4wr8y.js → dagre--kXszEIb.js} +1 -1
  254. package/payload/server/public/assets/{dagre-KV5264BT-C7mpqRpw.js → dagre-KV5264BT-amN1uU2d.js} +1 -1
  255. package/payload/server/public/assets/data-DlmoKxmN.js +1 -0
  256. package/payload/server/public/assets/{device-url-actions-347cMDY4.js → device-url-actions-CPoz5fqz.js} +1 -1
  257. package/payload/server/public/assets/{diagram-5BDNPKRD-BcQRB7_3.js → diagram-5BDNPKRD-Cwizs9tP.js} +1 -1
  258. package/payload/server/public/assets/{diagram-G4DWMVQ6-BLSGUKbc.js → diagram-G4DWMVQ6-BpSu5Uao.js} +1 -1
  259. package/payload/server/public/assets/{diagram-MMDJMWI5-Ra1VvGJh.js → diagram-MMDJMWI5-DiArtkto.js} +1 -1
  260. package/payload/server/public/assets/{diagram-TYMM5635-Bx_r1USn.js → diagram-TYMM5635-_tygK58Y.js} +1 -1
  261. package/payload/server/public/assets/{erDiagram-SMLLAGMA-CJhoN8dG.js → erDiagram-SMLLAGMA-CBV6LWYA.js} +1 -1
  262. package/payload/server/public/assets/{flowDiagram-DWJPFMVM-Bd5CZIoq.js → flowDiagram-DWJPFMVM-CHZFrtOU.js} +1 -1
  263. package/payload/server/public/assets/{ganttDiagram-T4ZO3ILL-BNQJqJFh.js → ganttDiagram-T4ZO3ILL-B3vKq5ov.js} +1 -1
  264. package/payload/server/public/assets/{gitGraphDiagram-UUTBAWPF-DoE1AFmA.js → gitGraphDiagram-UUTBAWPF-dnJPjbtj.js} +1 -1
  265. package/payload/server/public/assets/graph-BVvcFSEQ.js +1 -0
  266. package/payload/server/public/assets/graph-labels-cCvgu38Y.js +1 -0
  267. package/payload/server/public/assets/{graphlib-D7JFfLSw.js → graphlib-CNXtnega.js} +1 -1
  268. package/payload/server/public/assets/{infoDiagram-42DDH7IO-BtsKRO-J.js → infoDiagram-42DDH7IO-D8DYwVAF.js} +1 -1
  269. package/payload/server/public/assets/{ishikawaDiagram-UXIWVN3A-DapnDR0V.js → ishikawaDiagram-UXIWVN3A-CfEVY2Ud.js} +1 -1
  270. package/payload/server/public/assets/{journeyDiagram-VCZTEJTY-BLqfwMMu.js → journeyDiagram-VCZTEJTY-FmoBq7Kh.js} +1 -1
  271. package/payload/server/public/assets/{kanban-definition-6JOO6SKY-DqiSbvUW.js → kanban-definition-6JOO6SKY-B-Q9qk99.js} +1 -1
  272. package/payload/server/public/assets/{line-DcwBbbhp.js → line-DZwbJENP.js} +1 -1
  273. package/payload/server/public/assets/{mermaid-parser.core-BZwNRInp.js → mermaid-parser.core-C3ahKykw.js} +1 -1
  274. package/payload/server/public/assets/{mermaid.core-DnsyVInc.js → mermaid.core-B8OFZIE8.js} +3 -3
  275. package/payload/server/public/assets/{mindmap-definition-QFDTVHPH-MPPO8aDx.js → mindmap-definition-QFDTVHPH-CqhkfbWa.js} +1 -1
  276. package/payload/server/public/assets/{page-Cz_pVOv_.js → page-BnAxPkmg.js} +1 -1
  277. package/payload/server/public/assets/{page-pXt2BdOS.js → page-BnaN3u86.js} +1 -1
  278. package/payload/server/public/assets/{pieDiagram-DEJITSTG-BKzbjD_5.js → pieDiagram-DEJITSTG-CJqQ6u3-.js} +1 -1
  279. package/payload/server/public/assets/{public-C-0V5aC8.js → public-rWe9ADCS.js} +3 -3
  280. package/payload/server/public/assets/{quadrantDiagram-34T5L4WZ-CvvvRvae.js → quadrantDiagram-34T5L4WZ-BtEqOXQM.js} +1 -1
  281. package/payload/server/public/assets/{requirementDiagram-MS252O5E-BxXZA7z2.js → requirementDiagram-MS252O5E-DPHWUtE6.js} +1 -1
  282. package/payload/server/public/assets/{sankeyDiagram-XADWPNL6-BRRFjjao.js → sankeyDiagram-XADWPNL6-FBmc3wHT.js} +1 -1
  283. package/payload/server/public/assets/{sequenceDiagram-FGHM5R23-DOy_E8xe.js → sequenceDiagram-FGHM5R23-BMSd2-1M.js} +1 -1
  284. package/payload/server/public/assets/{stateDiagram-FHFEXIEX-CDqat01p.js → stateDiagram-FHFEXIEX-DqFbU-LT.js} +1 -1
  285. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-CXTnsHGq.js +1 -0
  286. package/payload/server/public/assets/{timeline-definition-GMOUNBTQ-AK1yuR8Z.js → timeline-definition-GMOUNBTQ-DsfvHVK8.js} +1 -1
  287. package/payload/server/public/assets/{vennDiagram-DHZGUBPP-CCKJ7H16.js → vennDiagram-DHZGUBPP-kHU05mqC.js} +1 -1
  288. package/payload/server/public/assets/{wardleyDiagram-NUSXRM2D-CKHKJnG_.js → wardleyDiagram-NUSXRM2D-C696Mez_.js} +1 -1
  289. package/payload/server/public/assets/{xychartDiagram-5P7HB3ND-BBD35k9e.js → xychartDiagram-5P7HB3ND-yht-JyXJ.js} +1 -1
  290. package/payload/server/public/data.html +5 -5
  291. package/payload/server/public/graph.html +5 -5
  292. package/payload/server/public/index.html +7 -7
  293. package/payload/server/public/public.html +4 -4
  294. package/payload/server/server.js +209 -178
  295. package/payload/server/public/assets/admin-BbcN8otj.js +0 -216
  296. package/payload/server/public/assets/channel-p5ZCfK_I.js +0 -1
  297. package/payload/server/public/assets/classDiagram-6PBFFD2Q-DqDM1D4-.js +0 -1
  298. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-DeYvPD8H.js +0 -1
  299. package/payload/server/public/assets/clone-60k82qeh.js +0 -1
  300. package/payload/server/public/assets/data-oXs84UW6.js +0 -1
  301. package/payload/server/public/assets/graph-DcpqWbSs.js +0 -1
  302. package/payload/server/public/assets/graph-labels-DJvuUODB.js +0 -1
  303. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-DHckg-aj.js +0 -1
  304. /package/payload/server/public/assets/{brand-B6pMzF6h.js → brand-BWCtpG7_.js} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-create.js","sourceRoot":"","sources":["../../src/tools/workflow-create.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workflow-create.js","sourceRoot":"","sources":["../../src/tools/workflow-create.ts"],"names":[],"mappings":"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"}
@@ -2,22 +2,16 @@
2
2
  * Workflow execution engine.
3
3
  *
4
4
  * Loads a workflow's structured steps, resolves their dependency order,
5
- * executes each step, passes outputs between steps via named template
6
- * variables, and records the entire run as WorkflowRun + StepResult nodes.
5
+ * executes each step by spawning the target plugin's MCP server, passes
6
+ * outputs between steps via named template variables, and records the run
7
+ * as WorkflowRun + StepResult nodes.
7
8
  *
8
- * Two step types are supported:
9
- * type: "tool" — spawns a plugin MCP server child process
10
- * type: "llm" — spawns Claude Code subprocess (handles its own OAuth)
9
+ * After task 127 the engine handles only `type:'tool'` steps. Plugins that
10
+ * want LLM reasoning own their own SDK call (see waitlist-extract).
11
11
  *
12
12
  * LOAD WORKFLOW + STEPS
13
13
  * │
14
14
  * v
15
- * PRE-FLIGHT LLM GATE (Task 74)
16
- * │ Only runs if the workflow has ≥1 llm step.
17
- * ├─ probeLlmHealth("pong") ok → llmAvailable = true
18
- * └─ probe fails → llmAvailable = false, probeError captured
19
- * │
20
- * v
21
15
  * CREATE WorkflowRun (status: running)
22
16
  * │
23
17
  * v
@@ -25,23 +19,16 @@
25
19
  * │
26
20
  * v
27
21
  * FOR EACH STEP:
28
- * ├─ type: "tool"
29
- * │ resolve {{templates}} in params → spawn MCP server → call tool
30
- * ├─ type: "llm" + llm available
31
- * │ resolve {{templates}} in prompt → spawn Claude Code → capture text
32
- * │ └─ spawn fails + fallbackMode "raw" → render fallback (degraded)
33
- * ├─ type: "llm" + llm NOT available
34
- * │ ├─ fallbackMode "raw" → render fallback (degraded), continue
35
- * │ └─ fallbackMode "fail" → onFailure policy, retry short-circuited
22
+ * ├─ resolve {{templates}} in params → spawn MCP server → call tool
36
23
  * ├─ parse output (JSON or _raw fallback, strips markdown fences)
37
24
  * ├─ store output under step's outputKey
38
- * ├─ create StepResult node (status: completed | degraded | skipped | failed)
25
+ * ├─ create StepResult node (status: completed | skipped | failed)
39
26
  * └─ on failure: abort | skip | retry (per step config)
40
27
  * │
41
28
  * v
42
29
  * UPDATE WorkflowRun status:
43
30
  * any failed → "failed"
44
- * any degraded or skipped → "partial"
31
+ * any skipped → "partial"
45
32
  * else → "completed"
46
33
  */
47
34
  export interface WorkflowExecuteParams {
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-execute.d.ts","sourceRoot":"","sources":["../../src/tools/workflow-execute.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AAsBH,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,OAAO,CAAC,EAAE,gBAAgB,GAAG,UAAU,GAAG,QAAQ,CAAC;CACpD;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,WAAW,GAAG,SAAS,GAAG,QAAQ,CAAC;IAC3C,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAwGD,wBAAsB,eAAe,CACnC,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,qBAAqB,CAAC,CAsNhC"}
1
+ {"version":3,"file":"workflow-execute.d.ts","sourceRoot":"","sources":["../../src/tools/workflow-execute.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAmBH,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,OAAO,CAAC,EAAE,gBAAgB,GAAG,UAAU,GAAG,QAAQ,CAAC;CACpD;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,WAAW,GAAG,SAAS,GAAG,QAAQ,CAAC;IAC3C,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAiGD,wBAAsB,eAAe,CACnC,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,qBAAqB,CAAC,CA4IhC"}
@@ -2,22 +2,16 @@
2
2
  * Workflow execution engine.
3
3
  *
4
4
  * Loads a workflow's structured steps, resolves their dependency order,
5
- * executes each step, passes outputs between steps via named template
6
- * variables, and records the entire run as WorkflowRun + StepResult nodes.
5
+ * executes each step by spawning the target plugin's MCP server, passes
6
+ * outputs between steps via named template variables, and records the run
7
+ * as WorkflowRun + StepResult nodes.
7
8
  *
8
- * Two step types are supported:
9
- * type: "tool" — spawns a plugin MCP server child process
10
- * type: "llm" — spawns Claude Code subprocess (handles its own OAuth)
9
+ * After task 127 the engine handles only `type:'tool'` steps. Plugins that
10
+ * want LLM reasoning own their own SDK call (see waitlist-extract).
11
11
  *
12
12
  * LOAD WORKFLOW + STEPS
13
13
  * │
14
14
  * v
15
- * PRE-FLIGHT LLM GATE (Task 74)
16
- * │ Only runs if the workflow has ≥1 llm step.
17
- * ├─ probeLlmHealth("pong") ok → llmAvailable = true
18
- * └─ probe fails → llmAvailable = false, probeError captured
19
- * │
20
- * v
21
15
  * CREATE WorkflowRun (status: running)
22
16
  * │
23
17
  * v
@@ -25,41 +19,32 @@
25
19
  * │
26
20
  * v
27
21
  * FOR EACH STEP:
28
- * ├─ type: "tool"
29
- * │ resolve {{templates}} in params → spawn MCP server → call tool
30
- * ├─ type: "llm" + llm available
31
- * │ resolve {{templates}} in prompt → spawn Claude Code → capture text
32
- * │ └─ spawn fails + fallbackMode "raw" → render fallback (degraded)
33
- * ├─ type: "llm" + llm NOT available
34
- * │ ├─ fallbackMode "raw" → render fallback (degraded), continue
35
- * │ └─ fallbackMode "fail" → onFailure policy, retry short-circuited
22
+ * ├─ resolve {{templates}} in params → spawn MCP server → call tool
36
23
  * ├─ parse output (JSON or _raw fallback, strips markdown fences)
37
24
  * ├─ store output under step's outputKey
38
- * ├─ create StepResult node (status: completed | degraded | skipped | failed)
25
+ * ├─ create StepResult node (status: completed | skipped | failed)
39
26
  * └─ on failure: abort | skip | retry (per step config)
40
27
  * │
41
28
  * v
42
29
  * UPDATE WorkflowRun status:
43
30
  * any failed → "failed"
44
- * any degraded or skipped → "partial"
31
+ * any skipped → "partial"
45
32
  * else → "completed"
46
33
  */
47
34
  import { randomUUID } from "node:crypto";
48
35
  import { existsSync } from "node:fs";
49
36
  import { resolve } from "node:path";
50
37
  import { getSession } from "../lib/neo4j.js";
51
- import { resolveOrder, resolveTemplates, resolveStringTemplate, parseStepOutput, renderFallbackTemplate, } from "../lib/step-resolver.js";
52
- import { executeLlmCall, probeLlmHealth, readAdminModel } from "../lib/llm-call.js";
38
+ import { resolveOrder, resolveTemplates, parseStepOutput, } from "../lib/step-resolver.js";
53
39
  import { markRunActive, markRunComplete, terminalTransitionFailed } from "../lib/active-runs.js";
54
40
  import { notTrashed } from "../../../../../lib/graph-trash/dist/index.js";
55
41
  // ─────────────────────────────────────────────────────────────
56
42
  // Constants
57
43
  // ─────────────────────────────────────────────────────────────
58
44
  const DEFAULT_TOOL_TIMEOUT_S = 30;
59
- const DEFAULT_LLM_TIMEOUT_S = 60;
60
45
  const MAX_OUTPUT_SIZE = 10_240; // 10KB cap on stored step output
61
46
  // ─────────────────────────────────────────────────────────────
62
- // MCP tool dispatch (same pattern as check-due-events.ts)
47
+ // MCP tool dispatch
63
48
  // ─────────────────────────────────────────────────────────────
64
49
  async function dispatchStep(plugin, tool, args, stepAccountId, timeoutMs) {
65
50
  const platformRoot = process.env.PLATFORM_ROOT;
@@ -72,10 +57,8 @@ async function dispatchStep(plugin, tool, args, stepAccountId, timeoutMs) {
72
57
  if (!existsSync(serverPath)) {
73
58
  throw new Error(`MCP server not found: ${serverPath}`);
74
59
  }
75
- // Dynamic import — MCP SDK Client only needed at dispatch time
76
60
  const { Client } = await import("@modelcontextprotocol/sdk/client/index.js");
77
61
  const { StdioClientTransport } = await import("@modelcontextprotocol/sdk/client/stdio.js");
78
- // Inherit parent env + set ACCOUNT_ID for the child process
79
62
  const env = {};
80
63
  for (const [k, v] of Object.entries(process.env)) {
81
64
  if (v !== undefined)
@@ -89,7 +72,6 @@ async function dispatchStep(plugin, tool, args, stepAccountId, timeoutMs) {
89
72
  env,
90
73
  stderr: "pipe",
91
74
  });
92
- // Capture child stderr for diagnostics
93
75
  let childStderr = "";
94
76
  const stderrStream = transport.stderr;
95
77
  if (stderrStream) {
@@ -125,9 +107,6 @@ async function dispatchStep(plugin, tool, args, stepAccountId, timeoutMs) {
125
107
  }
126
108
  finally {
127
109
  clearTimeout(timeout);
128
- // Always attempt cleanup — including when timed out.
129
- // The timeout callback's client.close() is fire-and-forget;
130
- // this ensures we also try from the finally block.
131
110
  try {
132
111
  await client.close();
133
112
  }
@@ -135,7 +114,7 @@ async function dispatchStep(plugin, tool, args, stepAccountId, timeoutMs) {
135
114
  }
136
115
  }
137
116
  // ─────────────────────────────────────────────────────────────
138
- // Main execution function
117
+ // Main execution
139
118
  // ─────────────────────────────────────────────────────────────
140
119
  export async function workflowExecute(params) {
141
120
  const { workflowId, accountId, context: inputContext, trigger = "conversational" } = params;
@@ -168,7 +147,12 @@ export async function workflowExecute(params) {
168
147
  }
169
148
  steps = stepsRaw.map((s) => {
170
149
  const stepType = s.properties.type;
171
- const base = {
150
+ if (stepType !== "tool") {
151
+ throw new Error(`Workflow "${workflowName}" has a legacy step of type "${stepType}". ` +
152
+ `As of task 127 only type:"tool" steps are supported. ` +
153
+ `Run the plugin's heal tool to migrate (e.g. waitlist-heal).`);
154
+ }
155
+ return {
172
156
  stepId: s.properties.stepId,
173
157
  dependsOn: s.properties.dependsOn
174
158
  ? JSON.parse(s.properties.dependsOn)
@@ -179,24 +163,6 @@ export async function workflowExecute(params) {
179
163
  timeout: s.properties.timeout ?? undefined,
180
164
  position: s.properties.position ?? 0,
181
165
  label: s.properties.label,
182
- };
183
- if (stepType === "llm") {
184
- return {
185
- ...base,
186
- type: "llm",
187
- prompt: s.properties.prompt,
188
- model: s.properties.model ?? undefined,
189
- maxTokens: s.properties.maxTokens ?? undefined,
190
- mcpServers: s.properties.mcpServers
191
- ? JSON.parse(s.properties.mcpServers)
192
- : undefined,
193
- maxTurns: s.properties.maxTurns ?? undefined,
194
- fallbackMode: s.properties.fallbackMode ?? undefined,
195
- fallbackTemplate: s.properties.fallbackTemplate ?? undefined,
196
- };
197
- }
198
- return {
199
- ...base,
200
166
  type: "tool",
201
167
  plugin: s.properties.plugin,
202
168
  tool: s.properties.tool,
@@ -209,67 +175,12 @@ export async function workflowExecute(params) {
209
175
  finally {
210
176
  await session.close();
211
177
  }
212
- // ── Resolve execution order ──────────────────────────────
213
178
  const ordered = resolveOrder(steps);
214
- // ── Pre-flight LLM health gate (Task 74) ─────────────────
215
- // If the workflow contains at least one LLM step, probe once before
216
- // running any tool steps. A failed probe does NOT abort the workflow —
217
- // it flips the llmAvailable flag so LLM steps with fallbackMode="raw"
218
- // emit a degraded output instead of burning tool steps first.
219
- //
220
- // KNOWN LIMITATION: only the first LLM step's resolved model is probed.
221
- // Heterogeneous-model workflows where different LLM steps use different
222
- // explicit models still get correct per-step behaviour via the
223
- // spawn-failure convergence arm in the step loop — the only regression
224
- // is that tool-step work isn't saved upfront for non-first-model steps.
225
- let llmAvailable = true;
226
- let probeError;
227
- const llmStep = ordered.find((s) => s.type === "llm");
228
- if (llmStep) {
229
- let probeModel = llmStep.model;
230
- const probeModelSource = probeModel ? "step override" : "adminModel";
231
- let adminModelResolution;
232
- if (!probeModel) {
233
- adminModelResolution = readAdminModel(platformRoot, accountId);
234
- probeModel = adminModelResolution.model ?? undefined;
235
- }
236
- if (probeModel) {
237
- console.error(`[llm-call] model resolved: ${probeModel} (source: ${probeModelSource})`);
238
- }
239
- if (!probeModel) {
240
- // No resolvable model is itself a form of LLM unavailability —
241
- // treat as probe failure so fallbackMode="raw" engages and
242
- // fallbackMode="fail" short-circuits. Otherwise the "no model"
243
- // throw would escape the inner spawn-catch and bypass the
244
- // documented degradation guarantee.
245
- llmAvailable = false;
246
- // cite the exact reason from readAdminModel so the
247
- // persisted WorkflowRun.error and the stderr log agree, and the
248
- // admin agent knows whether the file, permissions, or content is
249
- // at fault.
250
- probeError = adminModelResolution
251
- ? `No model configured: step override absent and readAdminModel returned null (reason=${adminModelResolution.reason}, path=${adminModelResolution.path}) — see stderr for details`
252
- : "No model configured (step override absent and readAdminModel was not invoked)";
253
- console.error(`[llm-probe] FAILED: ${probeError}`);
254
- }
255
- else {
256
- const probe = await probeLlmHealth({ model: probeModel });
257
- llmAvailable = probe.ok;
258
- if (!probe.ok) {
259
- probeError = probe.error;
260
- }
261
- }
262
- }
263
179
  // ── Create WorkflowRun node ──────────────────────────────
264
180
  const runId = randomUUID();
265
181
  const startedAt = new Date().toISOString();
266
182
  const runSession = getSession();
267
183
  try {
268
- // Defensive: a race where the Workflow was trashed between the initial
269
- // load (line ~204) and this CREATE would otherwise silently produce an
270
- // orphaned WorkflowRun with no RUN_OF edge, because the trashed Workflow
271
- // has a null workflowId so the inner MATCH returns zero rows. Count the
272
- // matched workflow and abort if zero.
273
184
  const runCreate = await runSession.run(`CREATE (r:WorkflowRun $props)
274
185
  WITH r
275
186
  MATCH (w:Workflow {workflowId: $workflowId})
@@ -298,20 +209,14 @@ export async function workflowExecute(params) {
298
209
  finally {
299
210
  await runSession.close();
300
211
  }
301
- // Register the run as active so a SIGTERM handler (index.ts) or an
302
- // unhandled exception below can terminal-transition it instead of
303
- // leaving a zombie at status=running.
304
212
  markRunActive(runId);
305
213
  try {
306
214
  return await executeSteps({
307
215
  runId,
308
216
  startedAt,
309
- platformRoot,
310
217
  accountId,
311
218
  ordered,
312
219
  inputContext,
313
- llmAvailable,
314
- probeError,
315
220
  });
316
221
  }
317
222
  catch (err) {
@@ -331,18 +236,8 @@ export async function workflowExecute(params) {
331
236
  }
332
237
  }
333
238
  async function executeSteps(args) {
334
- const { runId, startedAt, platformRoot, accountId, ordered, inputContext, llmAvailable, probeError } = args;
335
- // ── Execute steps ────────────────────────────────────────
336
- // Context accumulates outputs from prior steps keyed by outputKey
239
+ const { runId, startedAt, accountId, ordered, inputContext } = args;
337
240
  const outputContext = {};
338
- // Track which keys in outputContext came from seeded inputContext vs.
339
- // from step outputs. The fallback renderer excludes seeded input keys
340
- // to avoid leaking potentially-sensitive workflow invocation context
341
- // (credentials, tokens, trigger metadata) into a delivered degraded
342
- // output. Only step outputs are dumped into the fallback template's
343
- // {{_priorOutputs}} substitution.
344
- const seededInputKeys = new Set();
345
- // Seed context with any input variables
346
241
  if (inputContext) {
347
242
  for (const [k, v] of Object.entries(inputContext)) {
348
243
  if (typeof v === "object" && v !== null && !Array.isArray(v)) {
@@ -351,13 +246,11 @@ async function executeSteps(args) {
351
246
  else {
352
247
  outputContext[k] = { _raw: String(v) };
353
248
  }
354
- seededInputKeys.add(k);
355
249
  }
356
250
  }
357
251
  let stepsCompleted = 0;
358
252
  let stepsSkipped = 0;
359
253
  let stepsFailed = 0;
360
- let stepsDegraded = 0;
361
254
  let lastError;
362
255
  let aborted = false;
363
256
  for (const step of ordered) {
@@ -365,160 +258,46 @@ async function executeSteps(args) {
365
258
  break;
366
259
  const stepStartedAt = new Date().toISOString();
367
260
  let attempt = 0;
368
- // retryLimit means "how many retries after the initial attempt"
369
- // retryLimit=2 → 1 initial + 2 retries = 3 total attempts
370
- let maxAttempts = step.onFailure === "retry" ? 1 + (step.retryLimit ?? 1) : 1;
261
+ const maxAttempts = step.onFailure === "retry" ? 1 + (step.retryLimit ?? 1) : 1;
371
262
  let stepSuccess = false;
372
263
  let stepOutput = "";
373
264
  let stepError = "";
374
- let stepDegraded = false;
375
- const stepLabel = step.type === "tool"
376
- ? `${step.label} → ${step.plugin}/${step.tool}`
377
- : `${step.label} → llm${step.model ? ` (${step.model})` : ""}${step.mcpServers ? ` [agentic: ${Object.keys(step.mcpServers).join(",")}]` : ""}`;
265
+ const stepLabel = `${step.label} → ${step.plugin}/${step.tool}`;
378
266
  console.error(`[workflow-execute] step ${step.position + 1}/${ordered.length}: ${stepLabel}`);
379
- // ── Pre-flight degradation shortcut (Task 74) ──────────
380
- // If the pre-flight probe failed and this is an LLM step with
381
- // fallbackMode="raw", skip the spawn entirely and render a
382
- // degraded output. For fallbackMode="fail" we short-circuit
383
- // retries since we already know the call will fail.
384
- if (step.type === "llm" && !llmAvailable) {
385
- if (step.fallbackMode === "raw") {
386
- stepOutput = renderFallbackTemplate({
387
- template: step.fallbackTemplate,
388
- outputContext,
389
- error: probeError ?? "LLM unavailable",
390
- excludeFromPriorOutputs: seededInputKeys,
391
- });
392
- stepDegraded = true;
393
- stepSuccess = true;
394
- // attempt = 1 reflects the implicit attempt made before short-
395
- // circuiting — keeps StepResult.attempt semantically meaningful
396
- // instead of the misleading 0 that "never tried" would imply.
397
- attempt = 1;
398
- if (step.outputKey) {
399
- outputContext[step.outputKey] = { _raw: stepOutput };
400
- }
401
- console.error(`[workflow-execute] step ${step.position + 1} DEGRADED: ${probeError} (fallbackMode=raw, pre-flight)`);
402
- }
403
- else {
404
- // fallbackMode "fail" (default) — short-circuit retries
405
- stepError = `LLM unavailable: ${probeError ?? "unknown"}`;
406
- maxAttempts = 0;
407
- attempt = 1;
408
- if (step.retryLimit !== undefined && step.onFailure === "retry") {
409
- console.error(`[workflow-execute] step ${step.position + 1} retry short-circuited — probe already confirmed LLM unavailable`);
410
- }
411
- }
412
- }
413
267
  while (attempt < maxAttempts && !stepSuccess) {
414
268
  attempt++;
415
269
  try {
416
- if (step.type === "tool") {
417
- // ── Tool step: resolve params, spawn MCP child process ──
418
- const resolvedParams = step.params
419
- ? resolveTemplates(step.params, outputContext)
420
- : {};
421
- const stepTimeoutMs = (step.timeout ?? DEFAULT_TOOL_TIMEOUT_S) * 1000;
422
- const result = await dispatchStep(step.plugin, step.tool, resolvedParams, accountId, stepTimeoutMs);
423
- if (result.isError) {
424
- throw new Error(`Tool returned error: ${result.text}`);
425
- }
426
- stepOutput = result.text;
427
- }
428
- else {
429
- // ── LLM step: resolve prompt, spawn Claude Code ──
430
- const resolvedPrompt = resolveStringTemplate(step.prompt, outputContext);
431
- if (typeof resolvedPrompt !== "string") {
432
- throw new Error("LLM prompt resolved to a non-string value — prompt templates must resolve to text");
433
- }
434
- // Resolve model: step-level override → account adminModel → throw
435
- let model = step.model;
436
- const modelSource = model ? "step override" : "adminModel";
437
- let stepAdminResolution;
438
- if (!model) {
439
- stepAdminResolution = readAdminModel(platformRoot, accountId);
440
- model = stepAdminResolution.model ?? undefined;
441
- }
442
- if (!model) {
443
- // cite reason + path so the persisted error matches
444
- // the stderr log instead of a pre-written assumption.
445
- throw new Error(stepAdminResolution
446
- ? `No model specified on LLM step and readAdminModel returned null (reason=${stepAdminResolution.reason}, path=${stepAdminResolution.path}) — see stderr for details`
447
- : "No model specified on LLM step and readAdminModel was not invoked");
448
- }
449
- console.error(`[llm-call] model resolved: ${model} (source: ${modelSource})`);
450
- const stepTimeoutMs = (step.timeout ?? DEFAULT_LLM_TIMEOUT_S) * 1000;
451
- try {
452
- stepOutput = await executeLlmCall({
453
- prompt: resolvedPrompt,
454
- model,
455
- maxTokens: step.maxTokens,
456
- timeoutMs: stepTimeoutMs,
457
- mcpServers: step.mcpServers,
458
- maxTurns: step.maxTurns,
459
- });
460
- }
461
- catch (spawnErr) {
462
- // Spawn-time failure convergence — probe passed but the
463
- // real call failed (rate limit, network partition,
464
- // mid-run token expiry). fallbackMode="raw" degrades.
465
- if (step.fallbackMode === "raw") {
466
- const errSummary = spawnErr instanceof Error ? spawnErr.message : String(spawnErr);
467
- const oneLine = errSummary.replace(/\s*\n\s*/g, " — ");
468
- stepOutput = renderFallbackTemplate({
469
- template: step.fallbackTemplate,
470
- outputContext,
471
- error: oneLine,
472
- excludeFromPriorOutputs: seededInputKeys,
473
- });
474
- stepDegraded = true;
475
- console.error(`[workflow-execute] step ${step.position + 1} DEGRADED: ${oneLine} (fallbackMode=raw, spawn)`);
476
- }
477
- else {
478
- throw spawnErr;
479
- }
480
- }
270
+ const resolvedParams = step.params
271
+ ? resolveTemplates(step.params, outputContext)
272
+ : {};
273
+ const stepTimeoutMs = (step.timeout ?? DEFAULT_TOOL_TIMEOUT_S) * 1000;
274
+ const result = await dispatchStep(step.plugin, step.tool, resolvedParams, accountId, stepTimeoutMs);
275
+ if (result.isError) {
276
+ throw new Error(`Tool returned error: ${result.text}`);
481
277
  }
278
+ stepOutput = result.text;
482
279
  stepSuccess = true;
483
- // Store output under outputKey for subsequent steps.
484
- // Degraded LLM steps bypass parseStepOutput and are stored
485
- // verbatim as {_raw: ...} so downstream {{step._raw}} refs
486
- // consume the fallback text directly.
487
280
  if (step.outputKey) {
488
- if (stepDegraded) {
489
- outputContext[step.outputKey] = { _raw: stepOutput };
490
- }
491
- else {
492
- outputContext[step.outputKey] = parseStepOutput(stepOutput);
493
- }
281
+ outputContext[step.outputKey] = parseStepOutput(stepOutput);
494
282
  }
495
- console.error(`[workflow-execute] step ${step.position + 1} ${stepDegraded ? "degraded" : "completed"} in attempt ${attempt}`);
283
+ console.error(`[workflow-execute] step ${step.position + 1} completed in attempt ${attempt}`);
496
284
  }
497
285
  catch (err) {
498
286
  stepError = err instanceof Error ? err.message : String(err);
499
287
  console.error(`[workflow-execute] step ${step.position + 1} FAILED (attempt ${attempt}/${maxAttempts}): ${stepError}`);
500
288
  }
501
289
  }
502
- // Record StepResult
503
290
  const stepCompletedAt = new Date().toISOString();
504
- const stepStatus = stepDegraded
505
- ? "degraded"
506
- : stepSuccess
507
- ? "completed"
508
- : step.onFailure === "skip"
509
- ? "skipped"
510
- : "failed";
511
- // Truncate output for storage
291
+ const stepStatus = stepSuccess
292
+ ? "completed"
293
+ : step.onFailure === "skip"
294
+ ? "skipped"
295
+ : "failed";
512
296
  const storedOutput = stepOutput.length > MAX_OUTPUT_SIZE
513
297
  ? stepOutput.slice(0, MAX_OUTPUT_SIZE) + "\n[truncated]"
514
298
  : stepOutput;
515
299
  const resultSession = getSession();
516
300
  try {
517
- // Write doctrine: the MATCH-then-CREATE pattern is already
518
- // atomic — if the WorkflowRun doesn't exist, 0 rows match and no
519
- // StepResult is created (no orphan). Before this change, that drop
520
- // was silent; now we inspect the counters and log loudly so operators
521
- // can see a run that lost its step history.
522
301
  const res = await resultSession.run(`MATCH (r:WorkflowRun {runId: $runId})
523
302
  CREATE (r)-[:HAS_RESULT]->(sr:StepResult $props)
524
303
  SET sr.createdBySource = 'workflow-execute',
@@ -542,11 +321,7 @@ async function executeSteps(args) {
542
321
  finally {
543
322
  await resultSession.close();
544
323
  }
545
- // Update counters and handle failure policy
546
- if (stepDegraded) {
547
- stepsDegraded++;
548
- }
549
- else if (stepSuccess) {
324
+ if (stepSuccess) {
550
325
  stepsCompleted++;
551
326
  }
552
327
  else if (step.onFailure === "skip") {
@@ -560,18 +335,16 @@ async function executeSteps(args) {
560
335
  console.error(`[workflow-execute] step ${step.position + 1} failed — aborting workflow`);
561
336
  }
562
337
  }
563
- // ── Determine final run status ───────────────────────────
564
338
  let runStatus;
565
339
  if (stepsFailed > 0) {
566
340
  runStatus = "failed";
567
341
  }
568
- else if (stepsDegraded > 0 || stepsSkipped > 0) {
342
+ else if (stepsSkipped > 0) {
569
343
  runStatus = "partial";
570
344
  }
571
345
  else {
572
346
  runStatus = "completed";
573
347
  }
574
- // ── Update WorkflowRun ──────────────────────────────────
575
348
  const completedAt = new Date().toISOString();
576
349
  const finalSession = getSession();
577
350
  try {
@@ -590,12 +363,12 @@ async function executeSteps(args) {
590
363
  }
591
364
  const duration = new Date(completedAt).getTime() - new Date(startedAt).getTime();
592
365
  console.error(`[workflow-execute] run complete: ${runStatus}, ${duration}ms, ` +
593
- `${stepsCompleted} completed, ${stepsDegraded} degraded, ${stepsSkipped} skipped, ${stepsFailed} failed`);
366
+ `${stepsCompleted} completed, ${stepsSkipped} skipped, ${stepsFailed} failed`);
594
367
  return {
595
368
  runId,
596
369
  status: runStatus,
597
370
  stepsCompleted,
598
- stepsDegraded,
371
+ stepsDegraded: 0,
599
372
  stepsSkipped,
600
373
  stepsFailed,
601
374
  stepsTotal: ordered.length,