@synergenius/flow-weaver-pack-weaver 0.8.1

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 (459) hide show
  1. package/LICENSE +204 -0
  2. package/README.md +167 -0
  3. package/dist/bot/agent-provider.d.ts +34 -0
  4. package/dist/bot/agent-provider.d.ts.map +1 -0
  5. package/dist/bot/agent-provider.js +218 -0
  6. package/dist/bot/agent-provider.js.map +1 -0
  7. package/dist/bot/ai-client.d.ts +15 -0
  8. package/dist/bot/ai-client.d.ts.map +1 -0
  9. package/dist/bot/ai-client.js +128 -0
  10. package/dist/bot/ai-client.js.map +1 -0
  11. package/dist/bot/approvals.d.ts +22 -0
  12. package/dist/bot/approvals.d.ts.map +1 -0
  13. package/dist/bot/approvals.js +187 -0
  14. package/dist/bot/approvals.js.map +1 -0
  15. package/dist/bot/audit-logger.d.ts +5 -0
  16. package/dist/bot/audit-logger.d.ts.map +1 -0
  17. package/dist/bot/audit-logger.js +42 -0
  18. package/dist/bot/audit-logger.js.map +1 -0
  19. package/dist/bot/audit-store.d.ts +13 -0
  20. package/dist/bot/audit-store.d.ts.map +1 -0
  21. package/dist/bot/audit-store.js +59 -0
  22. package/dist/bot/audit-store.js.map +1 -0
  23. package/dist/bot/bot-agent-channel.d.ts +46 -0
  24. package/dist/bot/bot-agent-channel.d.ts.map +1 -0
  25. package/dist/bot/bot-agent-channel.js +58 -0
  26. package/dist/bot/bot-agent-channel.js.map +1 -0
  27. package/dist/bot/cli-provider.d.ts +29 -0
  28. package/dist/bot/cli-provider.d.ts.map +1 -0
  29. package/dist/bot/cli-provider.js +132 -0
  30. package/dist/bot/cli-provider.js.map +1 -0
  31. package/dist/bot/cli-stream-parser.d.ts +11 -0
  32. package/dist/bot/cli-stream-parser.d.ts.map +1 -0
  33. package/dist/bot/cli-stream-parser.js +53 -0
  34. package/dist/bot/cli-stream-parser.js.map +1 -0
  35. package/dist/bot/cost-store.d.ts +18 -0
  36. package/dist/bot/cost-store.d.ts.map +1 -0
  37. package/dist/bot/cost-store.js +81 -0
  38. package/dist/bot/cost-store.js.map +1 -0
  39. package/dist/bot/cost-tracker.d.ts +18 -0
  40. package/dist/bot/cost-tracker.d.ts.map +1 -0
  41. package/dist/bot/cost-tracker.js +60 -0
  42. package/dist/bot/cost-tracker.js.map +1 -0
  43. package/dist/bot/cron-parser.d.ts +5 -0
  44. package/dist/bot/cron-parser.d.ts.map +1 -0
  45. package/dist/bot/cron-parser.js +141 -0
  46. package/dist/bot/cron-parser.js.map +1 -0
  47. package/dist/bot/cron-scheduler.d.ts +12 -0
  48. package/dist/bot/cron-scheduler.d.ts.map +1 -0
  49. package/dist/bot/cron-scheduler.js +43 -0
  50. package/dist/bot/cron-scheduler.js.map +1 -0
  51. package/dist/bot/dashboard.d.ts +34 -0
  52. package/dist/bot/dashboard.d.ts.map +1 -0
  53. package/dist/bot/dashboard.js +602 -0
  54. package/dist/bot/dashboard.js.map +1 -0
  55. package/dist/bot/design-checker.d.ts +24 -0
  56. package/dist/bot/design-checker.d.ts.map +1 -0
  57. package/dist/bot/design-checker.js +269 -0
  58. package/dist/bot/design-checker.js.map +1 -0
  59. package/dist/bot/file-lock.d.ts +7 -0
  60. package/dist/bot/file-lock.d.ts.map +1 -0
  61. package/dist/bot/file-lock.js +64 -0
  62. package/dist/bot/file-lock.js.map +1 -0
  63. package/dist/bot/file-validator.d.ts +10 -0
  64. package/dist/bot/file-validator.d.ts.map +1 -0
  65. package/dist/bot/file-validator.js +27 -0
  66. package/dist/bot/file-validator.js.map +1 -0
  67. package/dist/bot/file-watcher.d.ts +24 -0
  68. package/dist/bot/file-watcher.d.ts.map +1 -0
  69. package/dist/bot/file-watcher.js +98 -0
  70. package/dist/bot/file-watcher.js.map +1 -0
  71. package/dist/bot/fw-api.d.ts +8 -0
  72. package/dist/bot/fw-api.d.ts.map +1 -0
  73. package/dist/bot/fw-api.js +12 -0
  74. package/dist/bot/fw-api.js.map +1 -0
  75. package/dist/bot/genesis-prompt-context.d.ts +31 -0
  76. package/dist/bot/genesis-prompt-context.d.ts.map +1 -0
  77. package/dist/bot/genesis-prompt-context.js +121 -0
  78. package/dist/bot/genesis-prompt-context.js.map +1 -0
  79. package/dist/bot/genesis-store.d.ts +28 -0
  80. package/dist/bot/genesis-store.d.ts.map +1 -0
  81. package/dist/bot/genesis-store.js +154 -0
  82. package/dist/bot/genesis-store.js.map +1 -0
  83. package/dist/bot/index.d.ts +38 -0
  84. package/dist/bot/index.d.ts.map +1 -0
  85. package/dist/bot/index.js +37 -0
  86. package/dist/bot/index.js.map +1 -0
  87. package/dist/bot/notifications.d.ts +20 -0
  88. package/dist/bot/notifications.d.ts.map +1 -0
  89. package/dist/bot/notifications.js +215 -0
  90. package/dist/bot/notifications.js.map +1 -0
  91. package/dist/bot/pipeline-runner.d.ts +22 -0
  92. package/dist/bot/pipeline-runner.d.ts.map +1 -0
  93. package/dist/bot/pipeline-runner.js +263 -0
  94. package/dist/bot/pipeline-runner.js.map +1 -0
  95. package/dist/bot/provider-registry.d.ts +26 -0
  96. package/dist/bot/provider-registry.d.ts.map +1 -0
  97. package/dist/bot/provider-registry.js +175 -0
  98. package/dist/bot/provider-registry.js.map +1 -0
  99. package/dist/bot/run-store.d.ts +25 -0
  100. package/dist/bot/run-store.d.ts.map +1 -0
  101. package/dist/bot/run-store.js +156 -0
  102. package/dist/bot/run-store.js.map +1 -0
  103. package/dist/bot/runner.d.ts +13 -0
  104. package/dist/bot/runner.d.ts.map +1 -0
  105. package/dist/bot/runner.js +244 -0
  106. package/dist/bot/runner.js.map +1 -0
  107. package/dist/bot/session-state.d.ts +19 -0
  108. package/dist/bot/session-state.d.ts.map +1 -0
  109. package/dist/bot/session-state.js +65 -0
  110. package/dist/bot/session-state.js.map +1 -0
  111. package/dist/bot/steering.d.ts +13 -0
  112. package/dist/bot/steering.d.ts.map +1 -0
  113. package/dist/bot/steering.js +40 -0
  114. package/dist/bot/steering.js.map +1 -0
  115. package/dist/bot/step-executor.d.ts +10 -0
  116. package/dist/bot/step-executor.d.ts.map +1 -0
  117. package/dist/bot/step-executor.js +30 -0
  118. package/dist/bot/step-executor.js.map +1 -0
  119. package/dist/bot/system-prompt.d.ts +19 -0
  120. package/dist/bot/system-prompt.d.ts.map +1 -0
  121. package/dist/bot/system-prompt.js +222 -0
  122. package/dist/bot/system-prompt.js.map +1 -0
  123. package/dist/bot/task-queue.d.ts +26 -0
  124. package/dist/bot/task-queue.d.ts.map +1 -0
  125. package/dist/bot/task-queue.js +98 -0
  126. package/dist/bot/task-queue.js.map +1 -0
  127. package/dist/bot/types.d.ts +478 -0
  128. package/dist/bot/types.d.ts.map +1 -0
  129. package/dist/bot/types.js +2 -0
  130. package/dist/bot/types.js.map +1 -0
  131. package/dist/bot/utils.d.ts +2 -0
  132. package/dist/bot/utils.d.ts.map +1 -0
  133. package/dist/bot/utils.js +20 -0
  134. package/dist/bot/utils.js.map +1 -0
  135. package/dist/bot/watch-daemon.d.ts +19 -0
  136. package/dist/bot/watch-daemon.d.ts.map +1 -0
  137. package/dist/bot/watch-daemon.js +178 -0
  138. package/dist/bot/watch-daemon.js.map +1 -0
  139. package/dist/bot/web-approval.d.ts +19 -0
  140. package/dist/bot/web-approval.d.ts.map +1 -0
  141. package/dist/bot/web-approval.js +207 -0
  142. package/dist/bot/web-approval.js.map +1 -0
  143. package/dist/cli-bridge.d.ts +2 -0
  144. package/dist/cli-bridge.d.ts.map +1 -0
  145. package/dist/cli-bridge.js +30 -0
  146. package/dist/cli-bridge.js.map +1 -0
  147. package/dist/cli-handlers.d.ts +79 -0
  148. package/dist/cli-handlers.d.ts.map +1 -0
  149. package/dist/cli-handlers.js +1335 -0
  150. package/dist/cli-handlers.js.map +1 -0
  151. package/dist/cli.d.ts +3 -0
  152. package/dist/cli.d.ts.map +1 -0
  153. package/dist/cli.js +749 -0
  154. package/dist/cli.js.map +1 -0
  155. package/dist/docs/docs/weaver-config.md +135 -0
  156. package/dist/docs/weaver-config.md +141 -0
  157. package/dist/index.d.ts +30 -0
  158. package/dist/index.d.ts.map +1 -0
  159. package/dist/index.js +37 -0
  160. package/dist/index.js.map +1 -0
  161. package/dist/mcp-tools.d.ts +13 -0
  162. package/dist/mcp-tools.d.ts.map +1 -0
  163. package/dist/mcp-tools.js +197 -0
  164. package/dist/mcp-tools.js.map +1 -0
  165. package/dist/node-types/abort-task.d.ts +15 -0
  166. package/dist/node-types/abort-task.d.ts.map +1 -0
  167. package/dist/node-types/abort-task.js +28 -0
  168. package/dist/node-types/abort-task.js.map +1 -0
  169. package/dist/node-types/approval-gate.d.ts +18 -0
  170. package/dist/node-types/approval-gate.d.ts.map +1 -0
  171. package/dist/node-types/approval-gate.js +80 -0
  172. package/dist/node-types/approval-gate.js.map +1 -0
  173. package/dist/node-types/bot-report.d.ts +20 -0
  174. package/dist/node-types/bot-report.d.ts.map +1 -0
  175. package/dist/node-types/bot-report.js +67 -0
  176. package/dist/node-types/bot-report.js.map +1 -0
  177. package/dist/node-types/build-context.d.ts +16 -0
  178. package/dist/node-types/build-context.d.ts.map +1 -0
  179. package/dist/node-types/build-context.js +64 -0
  180. package/dist/node-types/build-context.js.map +1 -0
  181. package/dist/node-types/detect-provider.d.ts +17 -0
  182. package/dist/node-types/detect-provider.d.ts.map +1 -0
  183. package/dist/node-types/detect-provider.js +71 -0
  184. package/dist/node-types/detect-provider.js.map +1 -0
  185. package/dist/node-types/exec-validate-retry.d.ts +17 -0
  186. package/dist/node-types/exec-validate-retry.d.ts.map +1 -0
  187. package/dist/node-types/exec-validate-retry.js +147 -0
  188. package/dist/node-types/exec-validate-retry.js.map +1 -0
  189. package/dist/node-types/execute-plan.d.ts +26 -0
  190. package/dist/node-types/execute-plan.d.ts.map +1 -0
  191. package/dist/node-types/execute-plan.js +120 -0
  192. package/dist/node-types/execute-plan.js.map +1 -0
  193. package/dist/node-types/execute-target.d.ts +16 -0
  194. package/dist/node-types/execute-target.d.ts.map +1 -0
  195. package/dist/node-types/execute-target.js +238 -0
  196. package/dist/node-types/execute-target.js.map +1 -0
  197. package/dist/node-types/fix-errors.d.ts +24 -0
  198. package/dist/node-types/fix-errors.d.ts.map +1 -0
  199. package/dist/node-types/fix-errors.js +49 -0
  200. package/dist/node-types/fix-errors.js.map +1 -0
  201. package/dist/node-types/genesis-apply-retry.d.ts +27 -0
  202. package/dist/node-types/genesis-apply-retry.d.ts.map +1 -0
  203. package/dist/node-types/genesis-apply-retry.js +97 -0
  204. package/dist/node-types/genesis-apply-retry.js.map +1 -0
  205. package/dist/node-types/genesis-apply.d.ts +29 -0
  206. package/dist/node-types/genesis-apply.d.ts.map +1 -0
  207. package/dist/node-types/genesis-apply.js +76 -0
  208. package/dist/node-types/genesis-apply.js.map +1 -0
  209. package/dist/node-types/genesis-approve.d.ts +19 -0
  210. package/dist/node-types/genesis-approve.d.ts.map +1 -0
  211. package/dist/node-types/genesis-approve.js +59 -0
  212. package/dist/node-types/genesis-approve.js.map +1 -0
  213. package/dist/node-types/genesis-check-stabilize.d.ts +16 -0
  214. package/dist/node-types/genesis-check-stabilize.d.ts.map +1 -0
  215. package/dist/node-types/genesis-check-stabilize.js +32 -0
  216. package/dist/node-types/genesis-check-stabilize.js.map +1 -0
  217. package/dist/node-types/genesis-check-threshold.d.ts +15 -0
  218. package/dist/node-types/genesis-check-threshold.d.ts.map +1 -0
  219. package/dist/node-types/genesis-check-threshold.js +29 -0
  220. package/dist/node-types/genesis-check-threshold.js.map +1 -0
  221. package/dist/node-types/genesis-commit.d.ts +17 -0
  222. package/dist/node-types/genesis-commit.d.ts.map +1 -0
  223. package/dist/node-types/genesis-commit.js +59 -0
  224. package/dist/node-types/genesis-commit.js.map +1 -0
  225. package/dist/node-types/genesis-compile-validate.d.ts +26 -0
  226. package/dist/node-types/genesis-compile-validate.d.ts.map +1 -0
  227. package/dist/node-types/genesis-compile-validate.js +60 -0
  228. package/dist/node-types/genesis-compile-validate.js.map +1 -0
  229. package/dist/node-types/genesis-diff-fingerprint.d.ts +15 -0
  230. package/dist/node-types/genesis-diff-fingerprint.d.ts.map +1 -0
  231. package/dist/node-types/genesis-diff-fingerprint.js +59 -0
  232. package/dist/node-types/genesis-diff-fingerprint.js.map +1 -0
  233. package/dist/node-types/genesis-diff-workflow.d.ts +15 -0
  234. package/dist/node-types/genesis-diff-workflow.d.ts.map +1 -0
  235. package/dist/node-types/genesis-diff-workflow.js +67 -0
  236. package/dist/node-types/genesis-diff-workflow.js.map +1 -0
  237. package/dist/node-types/genesis-escrow-grace.d.ts +15 -0
  238. package/dist/node-types/genesis-escrow-grace.d.ts.map +1 -0
  239. package/dist/node-types/genesis-escrow-grace.js +52 -0
  240. package/dist/node-types/genesis-escrow-grace.js.map +1 -0
  241. package/dist/node-types/genesis-escrow-migrate.d.ts +21 -0
  242. package/dist/node-types/genesis-escrow-migrate.d.ts.map +1 -0
  243. package/dist/node-types/genesis-escrow-migrate.js +116 -0
  244. package/dist/node-types/genesis-escrow-migrate.js.map +1 -0
  245. package/dist/node-types/genesis-escrow-recover.d.ts +15 -0
  246. package/dist/node-types/genesis-escrow-recover.d.ts.map +1 -0
  247. package/dist/node-types/genesis-escrow-recover.js +90 -0
  248. package/dist/node-types/genesis-escrow-recover.js.map +1 -0
  249. package/dist/node-types/genesis-escrow-stage.d.ts +17 -0
  250. package/dist/node-types/genesis-escrow-stage.d.ts.map +1 -0
  251. package/dist/node-types/genesis-escrow-stage.js +86 -0
  252. package/dist/node-types/genesis-escrow-stage.js.map +1 -0
  253. package/dist/node-types/genesis-escrow-validate.d.ts +17 -0
  254. package/dist/node-types/genesis-escrow-validate.d.ts.map +1 -0
  255. package/dist/node-types/genesis-escrow-validate.js +110 -0
  256. package/dist/node-types/genesis-escrow-validate.js.map +1 -0
  257. package/dist/node-types/genesis-load-config.d.ts +17 -0
  258. package/dist/node-types/genesis-load-config.d.ts.map +1 -0
  259. package/dist/node-types/genesis-load-config.js +36 -0
  260. package/dist/node-types/genesis-load-config.js.map +1 -0
  261. package/dist/node-types/genesis-observe.d.ts +18 -0
  262. package/dist/node-types/genesis-observe.d.ts.map +1 -0
  263. package/dist/node-types/genesis-observe.js +103 -0
  264. package/dist/node-types/genesis-observe.js.map +1 -0
  265. package/dist/node-types/genesis-propose.d.ts +17 -0
  266. package/dist/node-types/genesis-propose.d.ts.map +1 -0
  267. package/dist/node-types/genesis-propose.js +69 -0
  268. package/dist/node-types/genesis-propose.js.map +1 -0
  269. package/dist/node-types/genesis-report.d.ts +20 -0
  270. package/dist/node-types/genesis-report.d.ts.map +1 -0
  271. package/dist/node-types/genesis-report.js +87 -0
  272. package/dist/node-types/genesis-report.js.map +1 -0
  273. package/dist/node-types/genesis-snapshot.d.ts +15 -0
  274. package/dist/node-types/genesis-snapshot.d.ts.map +1 -0
  275. package/dist/node-types/genesis-snapshot.js +26 -0
  276. package/dist/node-types/genesis-snapshot.js.map +1 -0
  277. package/dist/node-types/genesis-try-apply.d.ts +18 -0
  278. package/dist/node-types/genesis-try-apply.d.ts.map +1 -0
  279. package/dist/node-types/genesis-try-apply.js +142 -0
  280. package/dist/node-types/genesis-try-apply.js.map +1 -0
  281. package/dist/node-types/genesis-update-history.d.ts +15 -0
  282. package/dist/node-types/genesis-update-history.d.ts.map +1 -0
  283. package/dist/node-types/genesis-update-history.js +70 -0
  284. package/dist/node-types/genesis-update-history.js.map +1 -0
  285. package/dist/node-types/genesis-validate-proposal.d.ts +16 -0
  286. package/dist/node-types/genesis-validate-proposal.d.ts.map +1 -0
  287. package/dist/node-types/genesis-validate-proposal.js +109 -0
  288. package/dist/node-types/genesis-validate-proposal.js.map +1 -0
  289. package/dist/node-types/git-ops.d.ts +15 -0
  290. package/dist/node-types/git-ops.d.ts.map +1 -0
  291. package/dist/node-types/git-ops.js +69 -0
  292. package/dist/node-types/git-ops.js.map +1 -0
  293. package/dist/node-types/index.d.ts +37 -0
  294. package/dist/node-types/index.d.ts.map +1 -0
  295. package/dist/node-types/index.js +37 -0
  296. package/dist/node-types/index.js.map +1 -0
  297. package/dist/node-types/load-config.d.ts +17 -0
  298. package/dist/node-types/load-config.d.ts.map +1 -0
  299. package/dist/node-types/load-config.js +27 -0
  300. package/dist/node-types/load-config.js.map +1 -0
  301. package/dist/node-types/plan-task.d.ts +17 -0
  302. package/dist/node-types/plan-task.d.ts.map +1 -0
  303. package/dist/node-types/plan-task.js +55 -0
  304. package/dist/node-types/plan-task.js.map +1 -0
  305. package/dist/node-types/read-workflow.d.ts +15 -0
  306. package/dist/node-types/read-workflow.d.ts.map +1 -0
  307. package/dist/node-types/read-workflow.js +60 -0
  308. package/dist/node-types/read-workflow.js.map +1 -0
  309. package/dist/node-types/receive-task.d.ts +20 -0
  310. package/dist/node-types/receive-task.d.ts.map +1 -0
  311. package/dist/node-types/receive-task.js +69 -0
  312. package/dist/node-types/receive-task.js.map +1 -0
  313. package/dist/node-types/report.d.ts +14 -0
  314. package/dist/node-types/report.d.ts.map +1 -0
  315. package/dist/node-types/report.js +25 -0
  316. package/dist/node-types/report.js.map +1 -0
  317. package/dist/node-types/resolve-target.d.ts +16 -0
  318. package/dist/node-types/resolve-target.d.ts.map +1 -0
  319. package/dist/node-types/resolve-target.js +67 -0
  320. package/dist/node-types/resolve-target.js.map +1 -0
  321. package/dist/node-types/route-task.d.ts +14 -0
  322. package/dist/node-types/route-task.d.ts.map +1 -0
  323. package/dist/node-types/route-task.js +22 -0
  324. package/dist/node-types/route-task.js.map +1 -0
  325. package/dist/node-types/send-notify.d.ts +14 -0
  326. package/dist/node-types/send-notify.d.ts.map +1 -0
  327. package/dist/node-types/send-notify.js +71 -0
  328. package/dist/node-types/send-notify.js.map +1 -0
  329. package/dist/node-types/validate-result.d.ts +24 -0
  330. package/dist/node-types/validate-result.d.ts.map +1 -0
  331. package/dist/node-types/validate-result.js +38 -0
  332. package/dist/node-types/validate-result.js.map +1 -0
  333. package/dist/templates/index.d.ts +5 -0
  334. package/dist/templates/index.d.ts.map +1 -0
  335. package/dist/templates/index.js +4 -0
  336. package/dist/templates/index.js.map +1 -0
  337. package/dist/templates/weaver-bot-template.d.ts +11 -0
  338. package/dist/templates/weaver-bot-template.d.ts.map +1 -0
  339. package/dist/templates/weaver-bot-template.js +99 -0
  340. package/dist/templates/weaver-bot-template.js.map +1 -0
  341. package/dist/templates/weaver-template.d.ts +11 -0
  342. package/dist/templates/weaver-template.d.ts.map +1 -0
  343. package/dist/templates/weaver-template.js +53 -0
  344. package/dist/templates/weaver-template.js.map +1 -0
  345. package/dist/workflows/genesis-task.d.ts +62 -0
  346. package/dist/workflows/genesis-task.d.ts.map +1 -0
  347. package/dist/workflows/genesis-task.js +64 -0
  348. package/dist/workflows/genesis-task.js.map +1 -0
  349. package/dist/workflows/index.d.ts +4 -0
  350. package/dist/workflows/index.d.ts.map +1 -0
  351. package/dist/workflows/index.js +4 -0
  352. package/dist/workflows/index.js.map +1 -0
  353. package/dist/workflows/weaver-bot-batch.d.ts +49 -0
  354. package/dist/workflows/weaver-bot-batch.d.ts.map +1 -0
  355. package/dist/workflows/weaver-bot-batch.js +49 -0
  356. package/dist/workflows/weaver-bot-batch.js.map +1 -0
  357. package/dist/workflows/weaver-bot-session.d.ts +65 -0
  358. package/dist/workflows/weaver-bot-session.d.ts.map +1 -0
  359. package/dist/workflows/weaver-bot-session.js +68 -0
  360. package/dist/workflows/weaver-bot-session.js.map +1 -0
  361. package/dist/workflows/weaver-bot.d.ts +61 -0
  362. package/dist/workflows/weaver-bot.d.ts.map +1 -0
  363. package/dist/workflows/weaver-bot.js +61 -0
  364. package/dist/workflows/weaver-bot.js.map +1 -0
  365. package/dist/workflows/weaver.d.ts +24 -0
  366. package/dist/workflows/weaver.d.ts.map +1 -0
  367. package/dist/workflows/weaver.js +28 -0
  368. package/dist/workflows/weaver.js.map +1 -0
  369. package/flowweaver.manifest.json +1001 -0
  370. package/package.json +78 -0
  371. package/src/bot/agent-provider.ts +273 -0
  372. package/src/bot/ai-client.ts +153 -0
  373. package/src/bot/approvals.ts +273 -0
  374. package/src/bot/audit-logger.ts +45 -0
  375. package/src/bot/audit-store.ts +69 -0
  376. package/src/bot/bot-agent-channel.ts +99 -0
  377. package/src/bot/cli-provider.ts +169 -0
  378. package/src/bot/cli-stream-parser.ts +59 -0
  379. package/src/bot/cost-store.ts +92 -0
  380. package/src/bot/cost-tracker.ts +72 -0
  381. package/src/bot/cron-parser.ts +153 -0
  382. package/src/bot/cron-scheduler.ts +48 -0
  383. package/src/bot/dashboard.ts +658 -0
  384. package/src/bot/design-checker.ts +327 -0
  385. package/src/bot/file-lock.ts +73 -0
  386. package/src/bot/file-validator.ts +41 -0
  387. package/src/bot/file-watcher.ts +103 -0
  388. package/src/bot/fw-api.ts +18 -0
  389. package/src/bot/genesis-prompt-context.ts +135 -0
  390. package/src/bot/genesis-store.ts +180 -0
  391. package/src/bot/index.ts +127 -0
  392. package/src/bot/notifications.ts +263 -0
  393. package/src/bot/pipeline-runner.ts +324 -0
  394. package/src/bot/provider-registry.ts +236 -0
  395. package/src/bot/run-store.ts +169 -0
  396. package/src/bot/runner.ts +311 -0
  397. package/src/bot/session-state.ts +73 -0
  398. package/src/bot/steering.ts +44 -0
  399. package/src/bot/step-executor.ts +34 -0
  400. package/src/bot/system-prompt.ts +280 -0
  401. package/src/bot/task-queue.ts +111 -0
  402. package/src/bot/types.ts +571 -0
  403. package/src/bot/utils.ts +17 -0
  404. package/src/bot/watch-daemon.ts +203 -0
  405. package/src/bot/web-approval.ts +240 -0
  406. package/src/cli-bridge.ts +41 -0
  407. package/src/cli-handlers.ts +1445 -0
  408. package/src/docs/weaver-config.md +135 -0
  409. package/src/index.ts +177 -0
  410. package/src/mcp-tools.ts +274 -0
  411. package/src/node-types/abort-task.ts +31 -0
  412. package/src/node-types/approval-gate.ts +95 -0
  413. package/src/node-types/bot-report.ts +82 -0
  414. package/src/node-types/build-context.ts +65 -0
  415. package/src/node-types/detect-provider.ts +77 -0
  416. package/src/node-types/exec-validate-retry.ts +170 -0
  417. package/src/node-types/execute-plan.ts +130 -0
  418. package/src/node-types/execute-target.ts +256 -0
  419. package/src/node-types/fix-errors.ts +63 -0
  420. package/src/node-types/genesis-apply-retry.ts +133 -0
  421. package/src/node-types/genesis-apply.ts +96 -0
  422. package/src/node-types/genesis-approve.ts +73 -0
  423. package/src/node-types/genesis-check-stabilize.ts +37 -0
  424. package/src/node-types/genesis-check-threshold.ts +34 -0
  425. package/src/node-types/genesis-commit.ts +71 -0
  426. package/src/node-types/genesis-compile-validate.ts +77 -0
  427. package/src/node-types/genesis-diff-fingerprint.ts +67 -0
  428. package/src/node-types/genesis-diff-workflow.ts +71 -0
  429. package/src/node-types/genesis-escrow-grace.ts +62 -0
  430. package/src/node-types/genesis-escrow-migrate.ts +138 -0
  431. package/src/node-types/genesis-escrow-recover.ts +99 -0
  432. package/src/node-types/genesis-escrow-stage.ts +104 -0
  433. package/src/node-types/genesis-escrow-validate.ts +120 -0
  434. package/src/node-types/genesis-load-config.ts +44 -0
  435. package/src/node-types/genesis-observe.ts +119 -0
  436. package/src/node-types/genesis-propose.ts +86 -0
  437. package/src/node-types/genesis-report.ts +95 -0
  438. package/src/node-types/genesis-snapshot.ts +30 -0
  439. package/src/node-types/genesis-try-apply.ts +165 -0
  440. package/src/node-types/genesis-update-history.ts +72 -0
  441. package/src/node-types/genesis-validate-proposal.ts +124 -0
  442. package/src/node-types/git-ops.ts +72 -0
  443. package/src/node-types/index.ts +36 -0
  444. package/src/node-types/load-config.ts +27 -0
  445. package/src/node-types/plan-task.ts +66 -0
  446. package/src/node-types/read-workflow.ts +68 -0
  447. package/src/node-types/receive-task.ts +92 -0
  448. package/src/node-types/report.ts +25 -0
  449. package/src/node-types/resolve-target.ts +64 -0
  450. package/src/node-types/route-task.ts +25 -0
  451. package/src/node-types/send-notify.ts +75 -0
  452. package/src/node-types/validate-result.ts +49 -0
  453. package/src/templates/index.ts +5 -0
  454. package/src/templates/weaver-bot-template.ts +106 -0
  455. package/src/workflows/genesis-task.ts +91 -0
  456. package/src/workflows/index.ts +3 -0
  457. package/src/workflows/weaver-bot-batch.ts +65 -0
  458. package/src/workflows/weaver-bot.ts +79 -0
  459. package/templates.js +1 -0
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Formats a genesis cycle summary for console output. Receives context
3
+ * from either the success path or the fail path. Fires from any
4
+ * incoming path.
5
+ *
6
+ * @flowWeaver nodeType
7
+ * @expression
8
+ * @label Genesis Report
9
+ * @executeWhen DISJUNCTION
10
+ * @input [successCtx] [order:0] - Genesis context from success path (JSON)
11
+ * @input [failCtx] [order:1] - Genesis context from apply-retry fail path (JSON)
12
+ * @input [proposeFailCtx] [order:2] - Genesis context from propose failure (JSON)
13
+ * @input [commitFailCtx] [order:3] - Genesis context from commit failure (JSON)
14
+ * @output summary [order:1] - Formatted summary text
15
+ * @output onFailure [hidden]
16
+ */
17
+ export function genesisReport(successCtx, failCtx, proposeFailCtx, commitFailCtx) {
18
+ const ctx = successCtx ?? failCtx ?? proposeFailCtx ?? commitFailCtx;
19
+ if (!ctx) {
20
+ const summary = 'Genesis cycle completed with no record';
21
+ console.log(`\n\x1b[33m${summary}\x1b[0m\n`);
22
+ return { summary };
23
+ }
24
+ const context = JSON.parse(ctx);
25
+ const elapsed = formatElapsed(context.startTimeMs);
26
+ if (context.error) {
27
+ const reason = categorizeFailure(context);
28
+ let summary = `Genesis: ${reason}`;
29
+ if (context.applyResultJson) {
30
+ try {
31
+ const result = JSON.parse(context.applyResultJson);
32
+ summary += ` (applied: ${result.applied}, failed: ${result.failed})`;
33
+ }
34
+ catch { /* ignore */ }
35
+ }
36
+ summary += elapsed ? ` [${elapsed}]` : '';
37
+ console.log(`\n\x1b[31m${summary}\x1b[0m\n`);
38
+ return { summary };
39
+ }
40
+ if (!context.cycleRecordJson) {
41
+ const summary = `Genesis: no changes proposed${elapsed ? ` [${elapsed}]` : ''}`;
42
+ console.log(`\n\x1b[33m${summary}\x1b[0m\n`);
43
+ return { summary };
44
+ }
45
+ const record = JSON.parse(context.cycleRecordJson);
46
+ const parts = [`Cycle ${record.id}`];
47
+ if (record.proposal) {
48
+ parts.push(`${record.proposal.operations.length} ops`);
49
+ parts.push(`impact=${record.proposal.impactLevel}`);
50
+ }
51
+ parts.push(record.outcome);
52
+ if (record.approved !== null) {
53
+ parts.push(record.approved ? 'approved' : 'rejected');
54
+ }
55
+ if (elapsed)
56
+ parts.push(elapsed);
57
+ if (record.error) {
58
+ parts.push(record.error);
59
+ }
60
+ const summary = `Genesis: ${parts.join(' | ')}`;
61
+ const color = record.outcome === 'applied' ? '\x1b[32m' : record.outcome === 'error' ? '\x1b[31m' : '\x1b[33m';
62
+ console.log(`\n\x1b[1m${color}${summary}\x1b[0m\n`);
63
+ return { summary };
64
+ }
65
+ function formatElapsed(startTimeMs) {
66
+ if (!startTimeMs)
67
+ return '';
68
+ const seconds = (Date.now() - startTimeMs) / 1000;
69
+ if (seconds < 60)
70
+ return `${seconds.toFixed(1)}s`;
71
+ const minutes = Math.floor(seconds / 60);
72
+ const remaining = seconds % 60;
73
+ return `${minutes}m${remaining.toFixed(0)}s`;
74
+ }
75
+ function categorizeFailure(context) {
76
+ const err = context.error ?? '';
77
+ if (err.startsWith('Proposal failed'))
78
+ return 'proposal failed';
79
+ if (err.includes('not approved') || err.includes('rejected'))
80
+ return 'proposal rejected';
81
+ if (err.startsWith('Commit failed'))
82
+ return 'commit failed';
83
+ if (err.includes('Apply') || err.includes('compile'))
84
+ return 'apply/compile failed';
85
+ return err.slice(0, 120);
86
+ }
87
+ //# sourceMappingURL=genesis-report.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"genesis-report.js","sourceRoot":"","sources":["../../src/node-types/genesis-report.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Saves a snapshot of the target workflow file before any modifications
3
+ * are applied, enabling rollback if something goes wrong.
4
+ *
5
+ * @flowWeaver nodeType
6
+ * @expression
7
+ * @label Genesis Snapshot
8
+ * @input ctx [order:0] - Genesis context (JSON)
9
+ * @output ctx [order:0] - Genesis context with snapshotPath (JSON)
10
+ * @output onFailure [hidden]
11
+ */
12
+ export declare function genesisSnapshot(ctx: string): {
13
+ ctx: string;
14
+ };
15
+ //# sourceMappingURL=genesis-snapshot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"genesis-snapshot.d.ts","sourceRoot":"","sources":["../../src/node-types/genesis-snapshot.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,CAa5D"}
@@ -0,0 +1,26 @@
1
+ import * as fs from 'node:fs';
2
+ import * as path from 'node:path';
3
+ import { GenesisStore } from '../bot/genesis-store.js';
4
+ /**
5
+ * Saves a snapshot of the target workflow file before any modifications
6
+ * are applied, enabling rollback if something goes wrong.
7
+ *
8
+ * @flowWeaver nodeType
9
+ * @expression
10
+ * @label Genesis Snapshot
11
+ * @input ctx [order:0] - Genesis context (JSON)
12
+ * @output ctx [order:0] - Genesis context with snapshotPath (JSON)
13
+ * @output onFailure [hidden]
14
+ */
15
+ export function genesisSnapshot(ctx) {
16
+ const context = JSON.parse(ctx);
17
+ const config = JSON.parse(context.genesisConfigJson);
18
+ const targetPath = path.resolve(context.env.projectDir, config.targetWorkflow);
19
+ const content = fs.readFileSync(targetPath, 'utf-8');
20
+ const store = new GenesisStore(context.env.projectDir);
21
+ const snapshotPath = store.saveSnapshot(context.cycleId, content);
22
+ console.log(`\x1b[36m→ Snapshot saved: ${snapshotPath}\x1b[0m`);
23
+ context.snapshotPath = snapshotPath;
24
+ return { ctx: JSON.stringify(context) };
25
+ }
26
+ //# sourceMappingURL=genesis-snapshot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"genesis-snapshot.js","sourceRoot":"","sources":["../../src/node-types/genesis-snapshot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAmB,CAAC;IAClD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAkB,CAAC;IACtE,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;IAC/E,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAErD,MAAM,KAAK,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACvD,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAElE,OAAO,CAAC,GAAG,CAAC,6BAA6B,YAAY,SAAS,CAAC,CAAC;IAEhE,OAAO,CAAC,YAAY,GAAG,YAAY,CAAC;IACpC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;AAC1C,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Applies proposal operations then validates + compiles. On compile
3
+ * failure, restores the snapshot and returns the failure path with
4
+ * error details so the parent scope can retry with a revised proposal.
5
+ *
6
+ * @flowWeaver nodeType
7
+ * @label Genesis Try Apply
8
+ * @input ctx [order:0] - Genesis context (JSON)
9
+ * @output ctx [order:0] - Genesis context with apply results (JSON)
10
+ * @output onSuccess [order:-2] - On Success
11
+ * @output onFailure [order:-1] [hidden] - On Failure
12
+ */
13
+ export declare function genesisTryApply(execute: boolean, ctx: string): Promise<{
14
+ onSuccess: boolean;
15
+ onFailure: boolean;
16
+ ctx: string;
17
+ }>;
18
+ //# sourceMappingURL=genesis-try-apply.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"genesis-try-apply.d.ts","sourceRoot":"","sources":["../../src/node-types/genesis-try-apply.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;;GAWG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC;IACT,SAAS,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IACvC,GAAG,EAAE,MAAM,CAAC;CACb,CAAC,CA6FD"}
@@ -0,0 +1,142 @@
1
+ import * as path from 'node:path';
2
+ import * as fs from 'node:fs';
3
+ import { execFileSync } from 'node:child_process';
4
+ import { GenesisStore } from '../bot/genesis-store.js';
5
+ /**
6
+ * Applies proposal operations then validates + compiles. On compile
7
+ * failure, restores the snapshot and returns the failure path with
8
+ * error details so the parent scope can retry with a revised proposal.
9
+ *
10
+ * @flowWeaver nodeType
11
+ * @label Genesis Try Apply
12
+ * @input ctx [order:0] - Genesis context (JSON)
13
+ * @output ctx [order:0] - Genesis context with apply results (JSON)
14
+ * @output onSuccess [order:-2] - On Success
15
+ * @output onFailure [order:-1] [hidden] - On Failure
16
+ */
17
+ export async function genesisTryApply(execute, ctx) {
18
+ const context = JSON.parse(ctx);
19
+ if (!execute) {
20
+ const result = { applied: 0, failed: 0, errors: [] };
21
+ context.applyResultJson = JSON.stringify(result);
22
+ context.error = '';
23
+ return { onSuccess: true, onFailure: false, ctx: JSON.stringify(context) };
24
+ }
25
+ const { env } = context;
26
+ const config = JSON.parse(context.genesisConfigJson);
27
+ const proposal = JSON.parse(context.proposalJson);
28
+ const targetPath = path.resolve(env.projectDir, config.targetWorkflow);
29
+ // Apply operations
30
+ let applied = 0;
31
+ let failed = 0;
32
+ const errors = [];
33
+ for (const op of proposal.operations) {
34
+ const validationError = validateOperationArgs(op);
35
+ if (validationError) {
36
+ failed++;
37
+ errors.push(validationError);
38
+ console.error(`\x1b[31m x ${op.type} (pre-validation): ${validationError}\x1b[0m`);
39
+ continue;
40
+ }
41
+ try {
42
+ const cliArgs = buildModifyArgs(op, targetPath);
43
+ execFileSync('flow-weaver', cliArgs, {
44
+ cwd: env.projectDir,
45
+ encoding: 'utf-8',
46
+ stdio: ['pipe', 'pipe', 'pipe'],
47
+ timeout: 30_000,
48
+ });
49
+ applied++;
50
+ console.log(`\x1b[32m + ${op.type}: ${op.rationale}\x1b[0m`);
51
+ }
52
+ catch (err) {
53
+ failed++;
54
+ const msg = err instanceof Error ? err.message : String(err);
55
+ errors.push(`${op.type}: ${msg}`);
56
+ console.error(`\x1b[31m x ${op.type}: ${msg}\x1b[0m`);
57
+ }
58
+ }
59
+ const applyResult = { applied, failed, errors };
60
+ context.applyResultJson = JSON.stringify(applyResult);
61
+ console.log(`\x1b[36m→ Apply: ${applied} succeeded, ${failed} failed\x1b[0m`);
62
+ // If all operations failed, no point compiling
63
+ if (applied === 0) {
64
+ context.error = '';
65
+ return { onSuccess: false, onFailure: true, ctx: JSON.stringify(context) };
66
+ }
67
+ // Validate + compile
68
+ try {
69
+ execFileSync('flow-weaver', ['validate', targetPath], {
70
+ cwd: env.projectDir,
71
+ encoding: 'utf-8',
72
+ stdio: ['pipe', 'pipe', 'pipe'],
73
+ timeout: 30_000,
74
+ });
75
+ console.log('\x1b[32m→ Validation passed\x1b[0m');
76
+ execFileSync('flow-weaver', ['compile', targetPath], {
77
+ cwd: env.projectDir,
78
+ encoding: 'utf-8',
79
+ stdio: ['pipe', 'pipe', 'pipe'],
80
+ timeout: 60_000,
81
+ });
82
+ console.log('\x1b[32m→ Compilation passed\x1b[0m');
83
+ context.error = '';
84
+ return { onSuccess: true, onFailure: false, ctx: JSON.stringify(context) };
85
+ }
86
+ catch (err) {
87
+ const msg = err instanceof Error ? err.message : String(err);
88
+ console.error(`\x1b[31m→ Compile/validate failed: ${msg}\x1b[0m`);
89
+ // Restore from snapshot
90
+ const store = new GenesisStore(env.projectDir);
91
+ const snapshot = store.loadSnapshot(context.snapshotPath);
92
+ if (snapshot) {
93
+ fs.writeFileSync(targetPath, snapshot, 'utf-8');
94
+ console.log('\x1b[33m→ Restored from snapshot\x1b[0m');
95
+ }
96
+ context.error = msg;
97
+ return { onSuccess: false, onFailure: true, ctx: JSON.stringify(context) };
98
+ }
99
+ }
100
+ function validateOperationArgs(op) {
101
+ const { type, args } = op;
102
+ if (type === 'addConnection' || type === 'removeConnection') {
103
+ const from = args.from;
104
+ const to = args.to;
105
+ if (!from || !to)
106
+ return `${type}: missing 'from' or 'to' arg`;
107
+ if (!from.includes('.') || from.includes(':'))
108
+ return `${type}: 'from' must be "node.port" format (dot separator), got "${from}"`;
109
+ if (!to.includes('.') || to.includes(':'))
110
+ return `${type}: 'to' must be "node.port" format (dot separator), got "${to}"`;
111
+ }
112
+ if (type === 'addNode') {
113
+ if (!args.nodeId || !args.nodeType)
114
+ return `addNode: missing 'nodeId' or 'nodeType'`;
115
+ }
116
+ if (type === 'removeNode') {
117
+ if (!args.nodeId)
118
+ return `removeNode: missing 'nodeId'`;
119
+ }
120
+ if (type === 'implementNode') {
121
+ if (!args.nodeId || args.nodeId === 'undefined')
122
+ return `implementNode: missing or invalid 'nodeId'`;
123
+ }
124
+ return null;
125
+ }
126
+ function buildModifyArgs(op, targetPath) {
127
+ switch (op.type) {
128
+ case 'addNode':
129
+ return ['modify', 'addNode', '--file', targetPath, '--nodeId', String(op.args.nodeId), '--nodeType', String(op.args.nodeType)];
130
+ case 'removeNode':
131
+ return ['modify', 'removeNode', '--file', targetPath, '--nodeId', String(op.args.nodeId)];
132
+ case 'addConnection':
133
+ return ['modify', 'addConnection', '--file', targetPath, '--from', String(op.args.from), '--to', String(op.args.to)];
134
+ case 'removeConnection':
135
+ return ['modify', 'removeConnection', '--file', targetPath, '--from', String(op.args.from), '--to', String(op.args.to)];
136
+ case 'implementNode':
137
+ return ['implement', targetPath, '--nodeId', String(op.args.nodeId)];
138
+ default:
139
+ throw new Error(`Unknown genesis operation type: ${op.type}`);
140
+ }
141
+ }
142
+ //# sourceMappingURL=genesis-try-apply.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"genesis-try-apply.js","sourceRoot":"","sources":["../../src/node-types/genesis-try-apply.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Builds a cycle record from all available data, determines the outcome,
3
+ * appends it to the genesis history, and saves the current fingerprint.
4
+ *
5
+ * @flowWeaver nodeType
6
+ * @expression
7
+ * @label Genesis Update History
8
+ * @input ctx [order:0] - Genesis context (JSON)
9
+ * @output ctx [order:0] - Genesis context with cycleRecordJson (JSON)
10
+ * @output onFailure [hidden]
11
+ */
12
+ export declare function genesisUpdateHistory(ctx: string): {
13
+ ctx: string;
14
+ };
15
+ //# sourceMappingURL=genesis-update-history.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"genesis-update-history.d.ts","sourceRoot":"","sources":["../../src/node-types/genesis-update-history.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,CAyDjE"}
@@ -0,0 +1,70 @@
1
+ import { GenesisStore } from '../bot/genesis-store.js';
2
+ /**
3
+ * Builds a cycle record from all available data, determines the outcome,
4
+ * appends it to the genesis history, and saves the current fingerprint.
5
+ *
6
+ * @flowWeaver nodeType
7
+ * @expression
8
+ * @label Genesis Update History
9
+ * @input ctx [order:0] - Genesis context (JSON)
10
+ * @output ctx [order:0] - Genesis context with cycleRecordJson (JSON)
11
+ * @output onFailure [hidden]
12
+ */
13
+ export function genesisUpdateHistory(ctx) {
14
+ const context = JSON.parse(ctx);
15
+ const { env } = context;
16
+ const fingerprint = context.fingerprintJson
17
+ ? JSON.parse(context.fingerprintJson)
18
+ : null;
19
+ const proposal = context.proposalJson ? JSON.parse(context.proposalJson) : null;
20
+ const applyResult = context.applyResultJson ? JSON.parse(context.applyResultJson) : null;
21
+ const durationMs = context.startTimeMs ? Date.now() - context.startTimeMs : 0;
22
+ // Determine outcome
23
+ let outcome;
24
+ if (context.error) {
25
+ outcome = 'error';
26
+ }
27
+ else if (!proposal || proposal.operations.length === 0) {
28
+ outcome = 'no-change';
29
+ }
30
+ else if (context.approved === false) {
31
+ outcome = 'rejected';
32
+ }
33
+ else if (applyResult && applyResult.failed > 0) {
34
+ outcome = 'rolled-back';
35
+ }
36
+ else if (context.approved === true && applyResult && applyResult.failed === 0) {
37
+ outcome = 'applied';
38
+ }
39
+ else {
40
+ outcome = 'error';
41
+ }
42
+ const record = {
43
+ id: context.cycleId,
44
+ timestamp: new Date().toISOString(),
45
+ durationMs,
46
+ fingerprint: fingerprint,
47
+ proposal,
48
+ outcome,
49
+ diffSummary: proposal?.summary ?? null,
50
+ approvalRequired: context.approved !== undefined,
51
+ approved: context.approved ?? null,
52
+ error: context.error ?? (applyResult?.errors?.length ? applyResult.errors.join('; ') : null),
53
+ snapshotFile: context.snapshotPath ?? null,
54
+ };
55
+ try {
56
+ const store = new GenesisStore(env.projectDir);
57
+ store.appendCycle(record);
58
+ if (fingerprint) {
59
+ store.saveFingerprint(fingerprint);
60
+ }
61
+ }
62
+ catch (err) {
63
+ const msg = err instanceof Error ? err.message : String(err);
64
+ console.error(`\x1b[31m→ Failed to save history: ${msg}\x1b[0m`);
65
+ }
66
+ console.log(`\x1b[36m→ Cycle ${context.cycleId}: ${outcome} (${durationMs}ms)\x1b[0m`);
67
+ context.cycleRecordJson = JSON.stringify(record);
68
+ return { ctx: JSON.stringify(context) };
69
+ }
70
+ //# sourceMappingURL=genesis-update-history.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"genesis-update-history.js","sourceRoot":"","sources":["../../src/node-types/genesis-update-history.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Validates and trims a genesis proposal to fit within the budget.
3
+ * Recalculates costs (never trusts the AI), filters out disallowed
4
+ * operations in stabilize mode, and trims from the end if over budget.
5
+ *
6
+ * @flowWeaver nodeType
7
+ * @expression
8
+ * @label Genesis Validate Proposal
9
+ * @input ctx [order:0] - Genesis context (JSON)
10
+ * @output ctx [order:0] - Genesis context with validated proposalJson (JSON)
11
+ * @output onFailure [hidden]
12
+ */
13
+ export declare function genesisValidateProposal(ctx: string): {
14
+ ctx: string;
15
+ };
16
+ //# sourceMappingURL=genesis-validate-proposal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"genesis-validate-proposal.d.ts","sourceRoot":"","sources":["../../src/node-types/genesis-validate-proposal.ts"],"names":[],"mappings":"AAiBA;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,CA8FpE"}
@@ -0,0 +1,109 @@
1
+ import { execFileSync } from 'node:child_process';
2
+ import { checkDesignQuality } from '../bot/design-checker.js';
3
+ const COST_MAP = {
4
+ addNode: 1,
5
+ removeNode: 1,
6
+ addConnection: 1,
7
+ removeConnection: 1,
8
+ implementNode: 2,
9
+ selfModifyWorkflow: 3,
10
+ selfModifyNodeType: 2,
11
+ selfModifyModule: 2,
12
+ };
13
+ const SELF_MODIFY_TYPES = new Set(['selfModifyWorkflow', 'selfModifyNodeType', 'selfModifyModule']);
14
+ /**
15
+ * Validates and trims a genesis proposal to fit within the budget.
16
+ * Recalculates costs (never trusts the AI), filters out disallowed
17
+ * operations in stabilize mode, and trims from the end if over budget.
18
+ *
19
+ * @flowWeaver nodeType
20
+ * @expression
21
+ * @label Genesis Validate Proposal
22
+ * @input ctx [order:0] - Genesis context (JSON)
23
+ * @output ctx [order:0] - Genesis context with validated proposalJson (JSON)
24
+ * @output onFailure [hidden]
25
+ */
26
+ export function genesisValidateProposal(ctx) {
27
+ const context = JSON.parse(ctx);
28
+ const config = JSON.parse(context.genesisConfigJson);
29
+ const proposal = JSON.parse(context.proposalJson);
30
+ let ops = proposal.operations;
31
+ // In stabilize mode, hard-reject addNode and addConnection
32
+ if (context.stabilized) {
33
+ const before = ops.length;
34
+ ops = ops.filter(op => op.type !== 'addNode' && op.type !== 'addConnection');
35
+ if (ops.length < before) {
36
+ console.log(`\x1b[33m→ Stabilize: filtered ${before - ops.length} disallowed operations\x1b[0m`);
37
+ }
38
+ }
39
+ // Filter self-modify ops if selfEvolve is disabled
40
+ if (!config.selfEvolve) {
41
+ const before = ops.length;
42
+ ops = ops.filter(op => !SELF_MODIFY_TYPES.has(op.type));
43
+ if (ops.length < before) {
44
+ console.log(`\x1b[33m→ Self-evolve disabled: filtered ${before - ops.length} self-modify operations\x1b[0m`);
45
+ }
46
+ }
47
+ // Validate self-modify ops have required args
48
+ ops = ops.filter(op => {
49
+ if (SELF_MODIFY_TYPES.has(op.type)) {
50
+ if (!op.args.file || !op.args.content) {
51
+ console.log(`\x1b[33m→ Filtered ${op.type}: missing file or content\x1b[0m`);
52
+ return false;
53
+ }
54
+ }
55
+ return true;
56
+ });
57
+ // Recalculate costs (never trust the AI values)
58
+ for (const op of ops) {
59
+ op.costUnits = COST_MAP[op.type] ?? 1;
60
+ }
61
+ // Split into regular and self-modify ops for separate budget enforcement
62
+ const regularOps = ops.filter(op => !SELF_MODIFY_TYPES.has(op.type));
63
+ let selfOps = ops.filter(op => SELF_MODIFY_TYPES.has(op.type));
64
+ // Trim regular ops to regular budget
65
+ let regularCost = regularOps.reduce((sum, op) => sum + op.costUnits, 0);
66
+ while (regularCost > config.budgetPerCycle && regularOps.length > 0) {
67
+ regularOps.pop();
68
+ regularCost = regularOps.reduce((sum, op) => sum + op.costUnits, 0);
69
+ }
70
+ // Trim self-modify ops to self-evolve budget
71
+ const selfBudget = config.selfEvolveBudget ?? 2;
72
+ let selfCost = selfOps.reduce((sum, op) => sum + op.costUnits, 0);
73
+ while (selfCost > selfBudget && selfOps.length > 0) {
74
+ selfOps.pop();
75
+ selfCost = selfOps.reduce((sum, op) => sum + op.costUnits, 0);
76
+ }
77
+ ops = [...regularOps, ...selfOps];
78
+ let totalCost = regularCost + selfCost;
79
+ const validated = {
80
+ ...proposal,
81
+ operations: ops,
82
+ totalCost,
83
+ };
84
+ console.log(`\x1b[36m→ Validated proposal: ${ops.length} ops, cost=${totalCost}/${config.budgetPerCycle}\x1b[0m`);
85
+ // Design quality gate: parse current workflow and check design score.
86
+ // If the score is below the threshold, flag for review.
87
+ const designThreshold = 50;
88
+ try {
89
+ const targetPath = config.targetWorkflow;
90
+ if (targetPath) {
91
+ const { projectDir } = context.env;
92
+ const astJson = execFileSync('flow-weaver', ['parse', targetPath, '--format', 'json'], {
93
+ cwd: projectDir, encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'], timeout: 30_000,
94
+ });
95
+ const ast = JSON.parse(astJson);
96
+ const report = checkDesignQuality(ast);
97
+ if (report.score < designThreshold) {
98
+ console.log(`\x1b[33m→ Design score ${report.score} below threshold ${designThreshold}\x1b[0m`);
99
+ context.approvalRequired = true;
100
+ }
101
+ }
102
+ }
103
+ catch {
104
+ // Non-fatal: if we can't parse the workflow yet, skip the design check
105
+ }
106
+ context.proposalJson = JSON.stringify(validated);
107
+ return { ctx: JSON.stringify(context) };
108
+ }
109
+ //# sourceMappingURL=genesis-validate-proposal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"genesis-validate-proposal.js","sourceRoot":"","sources":["../../src/node-types/genesis-validate-proposal.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Git operations on created/modified files: stage, commit, branch.
3
+ * Runs in parallel with notifications after execution.
4
+ *
5
+ * @flowWeaver nodeType
6
+ * @expression
7
+ * @label Git Operations
8
+ * @input ctx [order:0] - Weaver context (JSON)
9
+ * @output ctx [order:0] - Weaver context with gitResultJson (JSON)
10
+ * @output onFailure [hidden]
11
+ */
12
+ export declare function weaverGitOps(ctx: string): {
13
+ ctx: string;
14
+ };
15
+ //# sourceMappingURL=git-ops.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-ops.d.ts","sourceRoot":"","sources":["../../src/node-types/git-ops.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,CAwDzD"}
@@ -0,0 +1,69 @@
1
+ import { execFileSync } from 'node:child_process';
2
+ import { auditEmit } from '../bot/audit-logger.js';
3
+ /**
4
+ * Git operations on created/modified files: stage, commit, branch.
5
+ * Runs in parallel with notifications after execution.
6
+ *
7
+ * @flowWeaver nodeType
8
+ * @expression
9
+ * @label Git Operations
10
+ * @input ctx [order:0] - Weaver context (JSON)
11
+ * @output ctx [order:0] - Weaver context with gitResultJson (JSON)
12
+ * @output onFailure [hidden]
13
+ */
14
+ export function weaverGitOps(ctx) {
15
+ const context = JSON.parse(ctx);
16
+ const { projectDir, config } = context.env;
17
+ const files = context.filesModified ? JSON.parse(context.filesModified) : [];
18
+ const gitConfig = config.git ?? {};
19
+ if (gitConfig.enabled === false || files.length === 0) {
20
+ context.gitResultJson = JSON.stringify({ skipped: true, reason: files.length === 0 ? 'no files' : 'git disabled' });
21
+ return { ctx: JSON.stringify(context) };
22
+ }
23
+ // Check if we're in a git repo
24
+ try {
25
+ execFileSync('git', ['rev-parse', '--is-inside-work-tree'], { cwd: projectDir, encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'] });
26
+ }
27
+ catch {
28
+ context.gitResultJson = JSON.stringify({ skipped: true, reason: 'not a git repo' });
29
+ return { ctx: JSON.stringify(context) };
30
+ }
31
+ const results = [];
32
+ // Create branch if specified
33
+ if (gitConfig.branch) {
34
+ try {
35
+ execFileSync('git', ['checkout', '-b', gitConfig.branch], { cwd: projectDir, encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'] });
36
+ results.push(`Created branch: ${gitConfig.branch}`);
37
+ }
38
+ catch {
39
+ // Branch may already exist
40
+ try {
41
+ execFileSync('git', ['checkout', gitConfig.branch], { cwd: projectDir, encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'] });
42
+ results.push(`Switched to branch: ${gitConfig.branch}`);
43
+ }
44
+ catch { /* ignore */ }
45
+ }
46
+ }
47
+ // Stage files
48
+ for (const file of files) {
49
+ try {
50
+ execFileSync('git', ['add', file], { cwd: projectDir, encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'] });
51
+ }
52
+ catch { /* ignore unstaged files */ }
53
+ }
54
+ // Commit
55
+ const prefix = gitConfig.commitPrefix ?? 'weaver:';
56
+ const commitMsg = `${prefix} bot task (${files.length} file${files.length === 1 ? '' : 's'})`;
57
+ try {
58
+ execFileSync('git', ['commit', '-m', commitMsg], { cwd: projectDir, encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'] });
59
+ results.push(`Committed: ${commitMsg}`);
60
+ console.log(`\x1b[36m→ Git: ${commitMsg}\x1b[0m`);
61
+ }
62
+ catch {
63
+ results.push('Nothing to commit');
64
+ }
65
+ auditEmit('git-operation', { branch: gitConfig.branch, filesCount: files.length, results });
66
+ context.gitResultJson = JSON.stringify({ skipped: false, results });
67
+ return { ctx: JSON.stringify(context) };
68
+ }
69
+ //# sourceMappingURL=git-ops.js.map